<!--
@license
Copyright (C) 2015 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="../../../behaviors/fire-behavior/fire-behavior.html">
<link rel="import" href="../../shared/gr-account-chip/gr-account-chip.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-reviewer-list">
  <template>
    <style include="shared-styles">
      :host {
        display: block;
      }
      :host([disabled]) {
        opacity: .8;
        pointer-events: none;
      }
      .autocompleteContainer {
        position: relative;
      }
      .hiddenReviewers {
        margin-top: var(--spacing-s);
      }
      .inputContainer {
        display: flex;
        margin-top: var(--spacing-xs);
      }
      .inputContainer input {
        flex: 1;
      }
      gr-account-chip {
        margin-top: var(--spacing-s);
      }
      gr-button {
        --gr-button: {
          padding: 5px 0px;
        }
      }
      @media screen and (max-width: 50em), screen and (min-width: 75em) {
        gr-account-chip:first-of-type {
          margin-top: 0;
        }
      }
    </style>
    <template is="dom-repeat" items="[[_displayedReviewers]]" as="reviewer">
      <gr-account-chip class="reviewer" account="[[reviewer]]"
          on-remove="_handleRemove"
          additional-text="[[_computeReviewerTooltip(reviewer, change)]]"
          removable="[[_computeCanRemoveReviewer(reviewer, mutable)]]">
      </gr-account-chip>
    </template>
    <gr-button
        class="hiddenReviewers"
        link
        hidden$="[[!_hiddenReviewerCount]]"
        on-click="_handleViewAll">and [[_hiddenReviewerCount]] more</gr-button>
    <div class="controlsContainer" hidden$="[[!mutable]]">
      <gr-button
          link
          id="addReviewer"
          class="addReviewer"
          on-click="_handleAddTap">[[_addLabel]]</gr-button>
    </div>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
  </template>
  <script src="gr-reviewer-list.js"></script>
</dom-module>
