| /** |
| * @license |
| * Copyright (C) 2020 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. |
| */ |
| import {html} from '@polymer/polymer/lib/utils/html-tag'; |
| |
| export const htmlTemplate = html` |
| <style include="shared-styles"> |
| #threads { |
| display: block; |
| padding: var(--spacing-l); |
| } |
| gr-comment-thread { |
| display: block; |
| margin-bottom: var(--spacing-m); |
| } |
| .header { |
| align-items: center; |
| background-color: var(--background-color-primary); |
| border-bottom: 1px solid var(--border-color); |
| border-top: 1px solid var(--border-color); |
| display: flex; |
| justify-content: left; |
| padding: var(--spacing-s) var(--spacing-l); |
| } |
| .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; |
| } |
| .thread-separator { |
| border-top: 1px solid var(--border-color); |
| margin-top: var(--spacing-xl); |
| } |
| .show-resolved-comments { |
| box-shadow: none; |
| padding-left: var(--spacing-m); |
| } |
| .partypopper{ |
| margin-right: var(--spacing-s); |
| } |
| gr-dropdown-list { |
| --trigger-style: { |
| color: var(--primary-text-color); |
| text-transform: none; |
| font-family: var(--font-family); |
| } |
| } |
| .filter-text, .sort-text, .author-text { |
| margin-right: var(--spacing-s); |
| color: var(--deemphasized-text-color); |
| } |
| .author-text { |
| margin-left: var(--spacing-m); |
| } |
| gr-account-label { |
| --account-max-length: 120px; |
| display: inline-block; |
| user-select: none; |
| --label-border-radius: 8px; |
| margin: 0 var(--spacing-xs); |
| padding: var(--spacing-xs) var(--spacing-m); |
| line-height: var(--line-height-normal); |
| cursor: pointer; |
| } |
| gr-account-label:focus { |
| outline: none; |
| } |
| gr-account-label:hover, |
| gr-account-label:hover { |
| box-shadow: var(--elevation-level-1); |
| cursor: pointer; |
| } |
| </style> |
| <template is="dom-if" if="[[!hideDropdown]]"> |
| <div class="header"> |
| <span class="sort-text">Sort By:</span> |
| <gr-dropdown-list |
| id="sortDropdown" |
| value="[[sortDropdownValue]]" |
| on-value-change="handleSortDropdownValueChange" |
| items="[[getSortDropdownEntires()]]" |
| > |
| </gr-dropdown-list> |
| <span class="separator"></span> |
| <span class="filter-text">Filter By:</span> |
| <gr-dropdown-list |
| id="filterDropdown" |
| value="[[commentsDropdownValue]]" |
| on-value-change="handleCommentsDropdownValueChange" |
| items="[[getCommentsDropdownEntires(threads, loggedIn)]]" |
| > |
| </gr-dropdown-list> |
| <template is="dom-if" if="[[threads.length]]"> |
| <span class="author-text">From:</span> |
| <template is="dom-repeat" items="[[getCommentAuthors(threads, account)]]"> |
| <gr-account-label |
| account="[[item]]" |
| on-click="handleAccountClicked" |
| selection-chip-style |
| selected="[[isSelected(item, selectedAuthors)]]" |
| > </gr-account-label> |
| </template> |
| </template> |
| </div> |
| </template> |
| <div id="threads"> |
| <template |
| is="dom-if" |
| if="[[_showEmptyThreadsMessage(threads, _displayedThreads, unresolvedOnly)]]" |
| > |
| <div> |
| <span> |
| <template is="dom-if" if="[[_showPartyPopper(threads)]]"> |
| <span class="partypopper">\🎉</span> |
| </template> |
| [[_computeEmptyThreadsMessage(threads, _displayedThreads, |
| unresolvedOnly)]] |
| <template is="dom-if" if="[[_showResolvedCommentsButton(threads, _displayedThreads, unresolvedOnly)]]"> |
| <gr-button |
| class="show-resolved-comments" |
| link |
| on-click="_handleResolvedCommentsMessageClick"> |
| [[_computeResolvedCommentsMessage(threads, _displayedThreads, |
| unresolvedOnly, onlyShowRobotCommentsWithHumanReply)]] |
| </gr-button> |
| </template> |
| </span> |
| </div> |
| </template> |
| <template |
| is="dom-repeat" |
| items="[[_displayedThreads]]" |
| as="thread" |
| initial-count="10" |
| target-framerate="60" |
| > |
| <template |
| is="dom-if" |
| if="[[_shouldRenderSeparator(_displayedThreads, thread, unresolvedOnly, _draftsOnly, onlyShowRobotCommentsWithHumanReply, selectedAuthors)]]" |
| > |
| <div class="thread-separator"></div> |
| </template> |
| <gr-comment-thread |
| show-file-path="" |
| show-ported-comment="[[thread.ported]]" |
| show-comment-context="[[showCommentContext]]" |
| change-num="[[changeNum]]" |
| comments="[[thread.comments]]" |
| diff-side="[[thread.diffSide]]" |
| show-file-name="[[_isFirstThreadWithFileName(_displayedThreads, thread, unresolvedOnly, _draftsOnly, onlyShowRobotCommentsWithHumanReply, selectedAuthors)]]" |
| 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}}" |
| should-scroll-into-view="[[computeShouldScrollIntoView(thread.comments, scrollCommentId)]]" |
| on-thread-discard="_handleThreadDiscard" |
| ></gr-comment-thread> |
| </template> |
| </div> |
| `; |