<!--
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-rest-api-interface/gr-rest-api-interface.html">
<link rel="import" href="../../shared/gr-storage/gr-storage.html">
<link rel="import" href="../gr-diff-comment/gr-diff-comment.html">
<link rel="import" href="../../../styles/shared-styles.html">

<dom-module id="gr-diff-comment-thread">
  <template>
    <style include="shared-styles">
      :host {
        border: 1px solid #bbb;
        display: block;
        margin-bottom: 1px;
        white-space: normal;
      }
      gr-button {
        margin-left: .5em;
        --gr-button: {
          color: #212121;
        }
        --gr-button-hover-color: rgba(33, 33, 33, .75);
      }
      #actions {
        margin-left: auto;
        padding: .5em .7em;
      }
      #container {
        background-color: #fcfad6;
      }
      #container.unresolved {
        background-color: #fcfaa6;
      }
      #commentInfoContainer {
        border-top: 1px dotted #bbb;
        display: flex;
      }
      #unresolvedLabel {
        font-family: var(--font-family);
        margin: auto 0;
        padding: .5em .7em;
      }
    </style>
    <div id="container" class$="[[_computeHostClass(_unresolved)]]">
      <template id="commentList" is="dom-repeat" items="[[_orderedComments]]"
          as="comment">
        <gr-diff-comment
            comment="{{comment}}"
            robot-button-disabled="[[_hideActions(_showActions, _lastComment)]]"
            change-num="[[changeNum]]"
            patch-num="[[patchNum]]"
            draft="[[_isDraft(comment)]]"
            show-actions="[[_showActions]]"
            comment-side="[[comment.__commentSide]]"
            side="[[comment.side]]"
            project-config="[[_projectConfig]]"
            on-create-fix-comment="_handleCommentFix"
            on-comment-discard="_handleCommentDiscard"></gr-diff-comment>
      </template>
      <div id="commentInfoContainer"
          hidden$="[[_hideActions(_showActions, _lastComment)]]">
        <span id="unresolvedLabel" hidden$="[[!_unresolved]]">Unresolved</span>
        <div id="actions">
          <gr-button
              id="replyBtn"
              link
              class="action reply"
              on-tap="_handleCommentReply">Reply</gr-button>
          <gr-button
              id="quoteBtn"
              link
              class="action quote"
              on-tap="_handleCommentQuote">Quote</gr-button>
          <gr-button
              id="ackBtn"
              link
              class="action ack"
              on-tap="_handleCommentAck">Ack</gr-button>
          <gr-button
              id="doneBtn"
              link
              class="action done"
              on-tap="_handleCommentDone">Done</gr-button>
        </div>
      </div>
    </div>
    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
    <gr-storage id="storage"></gr-storage>
  </template>
  <script src="gr-diff-comment-thread.js"></script>
</dom-module>
