<!--
@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="/bower_components/paper-toggle-button/paper-toggle-button.html">
<link rel="import" href="../../../styles/shared-styles.html">
<link rel="import" href="../../shared/gr-comment-thread/gr-comment-thread.html">

<dom-module id="gr-thread-list">
  <template>
    <style include="shared-styles">
      #threads {
        display: block;
        min-height: 20rem;
        padding: 1rem;
      }
      gr-comment-thread {
        display: block;
        margin-bottom: .5rem;
        max-width: 80ch;
      }
      .header {
        align-items: center;
        background-color: var(--table-header-background-color);
        border-bottom: 1px solid var(--border-color);
        border-top: 1px solid var(--border-color);
        display: flex;
        justify-content: left;
        min-height: 3.2em;
        padding: .5em var(--default-horizontal-margin);
      }
      .toggleItem.draftToggle {
        display: none;
      }
      .toggleItem.draftToggle.show {
        display: flex;
      }
      .toggleItem {
        align-items: center;
        display: flex;
        margin-right: 1rem;
      }
      .draftsOnly:not(.unresolvedOnly) gr-comment-thread[has-draft],
      .unresolvedOnly:not(.draftsOnly) gr-comment-thread[unresolved],
      .draftsOnly.unresolvedOnly gr-comment-thread[has-draft][unresolved] {
        display: block
      }
    </style>
    <div class="header">
      <div class="toggleItem">
        <paper-toggle-button
            id="unresolvedToggle"
            checked="{{_unresolvedOnly}}"></paper-toggle-button>
          Only unresolved threads</div>
      <div class$="toggleItem draftToggle [[_computeShowDraftToggle(loggedIn)]]">
        <paper-toggle-button
            id="draftToggle"
            checked="{{_draftsOnly}}"></paper-toggle-button>
          Only threads with drafts</div>
    </div>
    <div id="threads">
      <template is="dom-if" if="[[!threads.length]]">
        There are no inline comment threads on any diff for this change.
      </template>
      <template
          is="dom-repeat"
          items="[[_filteredThreads]]"
          as="thread"
          initial-count="5"
          target-framerate="60">
        <gr-comment-thread
            show-file-path
            change-num="[[changeNum]]"
            comments="[[thread.comments]]"
            comment-side="[[thread.commentSide]]"
            project-name="[[change.project]]"
            is-on-parent="[[_isOnParent(thread.commentSide)]]"
            line-num="[[thread.line]]"
            patch-num="[[thread.patchNum]]"
            path="[[thread.path]]"
            root-id="{{thread.rootId}}"
            on-thread-changed="_handleCommentsChanged"
            on-thread-discard="_handleThreadDiscard"></gr-comment-thread>
      </template>
    </div>
  </template>
  <script src="gr-thread-list.js"></script>
</dom-module>
