<!--
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="../../../bower_components/iron-input/iron-input.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">

<dom-module id="gr-reviewer-list">
  <template>
    <style>
      :host {
        display: block;
      }
      :host([disabled]) {
        opacity: .8;
        pointer-events: none;
      }
      .autocompleteContainer {
        position: relative;
      }
      .hiddenReviewers {
        margin-top: .3em;
      }
      .inputContainer {
        display: flex;
        margin-top: .25em;
      }
      .inputContainer input {
        flex: 1;
        font: inherit;
      }
      gr-account-chip {
        margin-top: .3em;
      }
      .remove {
        color: #999;
      }
      .remove {
        font-size: .9em;
      }
      @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"
          removable="[[_computeCanRemoveReviewer(reviewer, mutable)]]">
      </gr-account-chip>
    </template>
    <gr-button
        class="hiddenReviewers"
        link
        hidden$="[[!_hiddenReviewerCount]]"
        on-tap="_handleViewAll">and [[_hiddenReviewerCount]] more</gr-button>
    <div class="controlsContainer" hidden$="[[!mutable]]">
      <gr-button
          link
          id="addReviewer"
          class="addReviewer"
          on-tap="_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>
