<!--
Copyright (C) 2016 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<link rel="import" href="../../../bower_components/polymer/polymer.html">
<link rel="import" href="../../shared/gr-account-chip/gr-account-chip.html">
<link rel="import" href="../gr-account-entry/gr-account-entry.html">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-account-list">
  <template>
    <style include="shared-styles">
      gr-account-chip {
        display: inline-block;
        margin: 0 .2em .2em 0;
      }
      gr-account-entry {
        display: flex;
        flex: 1;
        min-width: 10em;
      }
      .group {
        --account-label-suffix: ' (group)';
      }
      .pending-add {
        font-style: italic;
      }
      .list {
        @apply --account-list-style;
      }
    </style>
    <!--
      NOTE(Issue 6419): Nest the inner dom-repeat template in a div rather than
      as a direct child of the dom-module's template.
    -->
    <div class="list">
      <template id="chips" is="dom-repeat" items="[[accounts]]" as="account">
        <gr-account-chip
            account="[[account]]"
            class$="[[_computeChipClass(account)]]"
            data-account-id$="[[account._account_id]]"
            removable="[[_computeRemovable(account)]]"
            on-keydown="_handleChipKeydown"
            tabindex="-1">
        </gr-account-chip>
      </template>
    </div>
    <gr-account-entry
        borderless
        hidden$="[[_computeEntryHidden(maxCount, accounts.*, readonly)]]"
        id="entry"
        change="[[change]]"
        filter="[[filter]]"
        placeholder="[[placeholder]]"
        on-add="_handleAdd"
        on-input-keydown="_handleInputKeydown"
        allow-any-user="[[allowAnyUser]]">
    </gr-account-entry>
  </template>
  <script src="gr-account-list.js"></script>
</dom-module>
