<!--
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="../../shared/gr-button/gr-button.html">
<link rel="import" href="../gr-message/gr-message.html">

<dom-module id="gr-messages-list">
  <template>
    <style>
      :host {
        display: block;
      }
      .header {
        display: flex;
        justify-content: space-between;
        margin-bottom: .35em;
      }
      .header,
      gr-message {
        padding: 0 var(--default-horizontal-margin);
      }
      .highlighted {
        animation: 3s fadeOut;
      }
      @keyframes fadeOut {
        0% { background-color: #fff9c4; }
        100% { background-color: #fff; }
      }
    </style>
    <div class="header">
      <h3>Messages</h3>
      <div>
        <gr-button id="collapse-messages" link
            on-tap="_handleExpandCollapseTap">
          [[_computeExpandCollapseMessage(_expanded)]]
        </gr-button>
        <span
            id="automatedMessageToggleContainer"
            hidden$="[[!_hasAutomatedMessages(messages)]]">
          /
          <gr-button id="automatedMessageToggle" link
              on-tap="_handleAutomatedMessageToggleTap">
            [[_computeAutomatedToggleText(_hideAutomated)]]
          </gr-button>
        </span>
      </div>
    </div>
    <template
        is="dom-repeat"
        items="[[_computeItems(messages, reviewerUpdates)]]"
        as="message">
      <gr-message
          change-num="[[changeNum]]"
          message="[[message]]"
          comments="[[_computeCommentsForMessage(comments, message)]]"
          hide-automated="[[_hideAutomated]]"
          project-config="[[projectConfig]]"
          show-reply-button="[[showReplyButtons]]"
          on-scroll-to="_handleScrollTo"
          data-message-id$="[[message.id]]"></gr-message>
    </template>
  </template>
  <script src="gr-messages-list.js"></script>
</dom-module>
