<!--
@license
Copyright (C) 2018 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/rest-client-behavior/rest-client-behavior.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-icons/gr-icons.html">
<link rel="import" href="../../shared/gr-label/gr-label.html">
<link rel="import" href="../../shared/gr-label-info/gr-label-info.html">
<link rel="import" href="../../shared/gr-limited-text/gr-limited-text.html">

<dom-module id="gr-change-requirements">
  <template strip-whitespace>
    <style include="shared-styles">
      :host {
        display: table;
        width: 100%;
      }
      .status {
        color: #FFA62F;
        display: inline-block;
        font-family: var(--monospace-font-family);
        text-align: center;
      }
      .approved.status {
        color: var(--vote-text-color-recommended);
      }
      .rejected.status {
        color: var(--vote-text-color-disliked);
      }
      iron-icon {
        color: inherit;
      }
      .status iron-icon {
        vertical-align: top;
      }
      section {
        display: table-row;
      }
      .show-hide {
        float: right;
      }
      .title {
        min-width: 10em;
        padding: var(--spacing-s) var(--spacing-m) 0 var(--requirements-horizontal-padding);
      }
      .value {
        padding: var(--spacing-s) var(--spacing-m) 0 0;
      }
      .title,
      .value {
        display: table-cell;
        vertical-align: top;
      }
      .hidden {
        display: none;
      }
      .showHide {
        cursor: pointer;
      }
      .showHide .title {
        border-top: 1px solid var(--border-color);
        padding-bottom: var(--spacing-m);
        padding-top: var(--spacing-m);
      }
      .showHide .value {
        border-top: 1px solid var(--border-color);
        padding-top: 0;
        vertical-align: middle;
      }
      .showHide iron-icon {
        color: var(--deemphasized-text-color);
        float: right;
      }
      .spacer {
        height: var(--spacing-m);
      }
    </style>
    <template
        is="dom-repeat"
        items="[[_requirements]]">
      <section>
        <div class="title requirement">
          <span class$="status [[item.style]]">
            <iron-icon class="icon" icon="[[_computeRequirementIcon(item.satisfied)]]"></iron-icon>
          </span>
          <gr-limited-text class="name" limit="40" text="[[item.fallback_text]]"></gr-limited-text>
        </div>
      </section>
    </template>
    <template
        is="dom-repeat"
        items="[[_requiredLabels]]">
      <section>
        <div class="title">
          <span class$="status [[item.style]]">
            <iron-icon class="icon" icon="[[item.icon]]"></iron-icon>
          </span>
          <gr-limited-text class="name" limit="40" text="[[item.label]]"></gr-limited-text>
        </div>
        <div class="value">
          <gr-label-info
              change="{{change}}"
              account="[[account]]"
              mutable="[[mutable]]"
              label="[[item.label]]"
              label-info="[[item.labelInfo]]"></gr-label-info>
        </div>
      </section>
    </template>
    <section class="spacer"></section>
    <section class$="spacer [[_computeShowOptional(_optionalLabels.*)]]"></section>
    <section
        show-bottom-border$="[[_showOptionalLabels]]"
        on-tap="_handleShowHide"
        class$="showHide [[_computeShowOptional(_optionalLabels.*)]]">
      <div class="title">Other labels</div>
      <div class="value">
        <iron-icon
            id="showHide"
            icon="[[_computeShowHideIcon(_showOptionalLabels)]]">
        </iron-icon>
      </label>
      </div>
    </section>
    <template
        is="dom-repeat"
        items="[[_optionalLabels]]">
      <section class$="optional [[_computeSectionClass(_showOptionalLabels)]]">
        <div class="title">
          <span class$="status [[item.style]]">
            <template is="dom-if" if="[[item.icon]]">
              <iron-icon class="icon" icon="[[item.icon]]"></iron-icon>
            </template>
            <template is="dom-if" if="[[!item.icon]]">
              <span>[[_computeLabelValue(item.labelInfo.value)]]</span>
            </template>
          </span>
          <gr-limited-text class="name" limit="40" text="[[item.label]]"></gr-limited-text>
        </div>
        <div class="value">
          <gr-label-info
              change="{{change}}"
              account="[[account]]"
              mutable="[[mutable]]"
              label="[[item.label]]"
              label-info="[[item.labelInfo]]"></gr-label-info>
        </div>
      </section>
    </template>
    <section class$="spacer [[_computeShowOptional(_optionalLabels.*)]] [[_computeSectionClass(_showOptionalLabels)]]"></section>
  </template>
  <script src="gr-change-requirements.js"></script>
</dom-module>
