<!--
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="../../../styles/gr-change-list-styles.html">
<link rel="import" href="../../../behaviors/rest-client-behavior.html">
<link rel="import" href="../../shared/gr-account-link/gr-account-link.html">
<link rel="import" href="../../shared/gr-change-star/gr-change-star.html">
<link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html">

<dom-module id="gr-change-list-item">
  <template>
    <style>
      :host {
        display: flex;
        border-bottom: 1px solid #eee;
      }
      :host([selected]) {
        background-color: #ebf5fb;
      }
      :host([needs-review]) {
        font-weight: bold;
      }
      .cell {
        flex-shrink: 0;
        padding: .3em .5em;
      }
      a {
        color: var(--default-text-color);
        text-decoration: none;
      }
      a:hover {
        text-decoration: underline;
      }
      .positionIndicator {
        visibility: hidden;
      }
      :host([selected]) .positionIndicator {
        visibility: visible;
      }
      .u-monospace {
        font-family: var(--monospace-font-family);
      }
      .u-green {
        color: #388E3C;
      }
      .u-red {
        color: #D32F2F;
      }
      .u-gray-background {
        background-color: #F5F5F5;
      }
    </style>
    <style include="gr-change-list-styles"></style>
    <span class="cell keyboard">
      <span class="positionIndicator">&#x25b6;</span>
    </span>
    <span class="cell star" hidden$="[[!showStar]]" hidden>
      <gr-change-star change="{{change}}"></gr-change-star>
    </span>
    <a class="cell number" href$="[[changeURL]]" hidden$="[[!showNumber]]" hidden>
      [[change._number]]
    </a>
    <a class="cell subject" href$="[[changeURL]]">[[change.subject]]</a>
    <span class="cell status">[[_computeChangeStatusString(change)]]</span>
    <span class="cell owner">
      <gr-account-link account="[[change.owner]]"></gr-account-link>
    </span>
    <a class="cell project" href$="[[_computeProjectURL(change.project)]]">[[change.project]]</a>
    <a class="cell branch" href$="[[_computeProjectBranchURL(change.project, change.branch)]]">[[change.branch]]</a>
    <gr-date-formatter class="cell updated" date-str="[[change.updated]]"></gr-date-formatter>
    <span class="cell size u-monospace">
      <span class="u-green"><span>+</span>[[change.insertions]]</span>,
      <span class="u-red"><span>-</span>[[change.deletions]]</span>
    </span>
    <template is="dom-repeat" items="[[labelNames]]" as="labelName">
      <span title$="[[_computeLabelTitle(change, labelName)]]"
          class$="[[_computeLabelClass(change, labelName)]]">[[_computeLabelValue(change, labelName)]]</span>
    </template>
  </template>
  <script src="gr-change-list-item.js"></script>
</dom-module>
