blob: fbd5d68dc6d49e9f81102e14ba73c66fc86437d1 [file] [log] [blame]
Andrew Bonventre78792e82016-03-04 17:48:22 -05001<!--
Dave Borowitz8cdc76b2018-03-26 10:04:27 -04002@license
Andrew Bonventre78792e82016-03-04 17:48:22 -05003Copyright (C) 2015 The Android Open Source Project
4
5Licensed under the Apache License, Version 2.0 (the "License");
6you may not use this file except in compliance with the License.
7You may obtain a copy of the License at
8
9http://www.apache.org/licenses/LICENSE-2.0
10
11Unless required by applicable law or agreed to in writing, software
12distributed under the License is distributed on an "AS IS" BASIS,
13WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14See the License for the specific language governing permissions and
15limitations under the License.
16-->
17
Ole Rehmsen31640742019-05-16 11:24:47 +020018<link rel="import" href="/bower_components/polymer/polymer.html">
19<link rel="import" href="/bower_components/iron-icon/iron-icon.html">
Paladox none44b3a7c2019-08-06 14:36:29 +000020<link rel="import" href="../../../behaviors/fire-behavior/fire-behavior.html">
Wyatt Allen740d8c32017-08-10 16:28:23 -070021<link rel="import" href="../../shared/gr-account-label/gr-account-label.html">
Dmitrii Filippov9b67ee12019-11-12 10:47:06 +010022<link rel="import" href="../../shared/gr-account-chip/gr-account-chip.html">
Andrew Bonventre78792e82016-03-04 17:48:22 -050023<link rel="import" href="../../shared/gr-button/gr-button.html">
24<link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html">
Wyatt Allen4f1b5c22016-11-08 15:49:05 -080025<link rel="import" href="../../shared/gr-formatted-text/gr-formatted-text.html">
Urs Wolferf98ec4a2016-03-09 22:48:16 +010026<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
Becky Siegelb159a7f2017-06-01 15:31:55 -070027<link rel="import" href="../../../styles/shared-styles.html">
Wyatt Allen5a969882018-02-28 16:56:18 -080028<link rel="import" href="../../../styles/gr-voting-styles.html">
Andrew Bonventre78792e82016-03-04 17:48:22 -050029
30<link rel="import" href="../gr-comment-list/gr-comment-list.html">
31
32<dom-module id="gr-message">
33 <template>
Dmitrii Filippovb4539292019-11-12 11:11:40 +010034 <style include="gr-voting-styles">
35 /* Workaround for empty style block - see https://github.com/Polymer/tools/issues/408 */
36 </style>
Becky Siegelb159a7f2017-06-01 15:31:55 -070037 <style include="shared-styles">
Andrew Bonventre78792e82016-03-04 17:48:22 -050038 :host {
Kasper Nilssonc8280982018-04-11 15:32:06 -070039 border-bottom: 1px solid var(--border-color);
Andrew Bonventre78792e82016-03-04 17:48:22 -050040 display: block;
41 position: relative;
Andrew Bonventre78792e82016-03-04 17:48:22 -050042 cursor: pointer;
Sam Saccone8c14ca32019-08-13 10:55:27 -070043 overflow-y: hidden;
Andrew Bonventre78792e82016-03-04 17:48:22 -050044 }
Becky Siegeleb471272017-03-20 21:30:36 -070045 :host(.expanded) {
46 cursor: auto;
47 }
Viktar Donichdae0e852017-05-30 13:03:50 -070048 :host > div {
Ben Rohlfs501f9d92019-10-20 19:26:48 +020049 padding: 0 var(--spacing-l);
Viktar Donichdae0e852017-05-30 13:03:50 -070050 }
Andrew Bonventre78792e82016-03-04 17:48:22 -050051 gr-avatar {
52 position: absolute;
Ben Rohlfs501f9d92019-10-20 19:26:48 +020053 left: var(--spacing-l);
Andrew Bonventre78792e82016-03-04 17:48:22 -050054 }
55 .collapsed .contentContainer {
Becky Siegele4789652016-11-18 09:42:25 -080056 align-items: baseline;
Kasper Nilssonb0d03d02018-04-16 17:04:22 +020057 color: var(--deemphasized-text-color);
Becky Siegele4789652016-11-18 09:42:25 -080058 display: flex;
59 white-space: nowrap;
Andrew Bonventre78792e82016-03-04 17:48:22 -050060 }
Becky Siegelb159a7f2017-06-01 15:31:55 -070061 .contentContainer {
Ben Rohlfs501f9d92019-10-20 19:26:48 +020062 margin-left: calc(var(--spacing-l) + 2.5em);
Ben Rohlfs4a809aa2019-10-25 14:08:04 +020063 padding: var(--spacing-m) 0;
Andrew Bonventre78792e82016-03-04 17:48:22 -050064 }
65 .showAvatar.collapsed .contentContainer {
Ben Rohlfs501f9d92019-10-20 19:26:48 +020066 margin-left: calc(var(--spacing-l) + 1.75em);
Andrew Bonventre78792e82016-03-04 17:48:22 -050067 }
68 .hideAvatar.collapsed .contentContainer,
69 .hideAvatar.expanded .contentContainer {
70 margin-left: 0;
Andrew Bonventrea4901302016-08-29 19:14:42 -040071 }
72 .showAvatar.collapsed .contentContainer,
73 .hideAvatar.collapsed .contentContainer,
74 .hideAvatar.expanded .contentContainer {
Ben Rohlfs501f9d92019-10-20 19:26:48 +020075 padding: var(--spacing-m) 0;
Andrew Bonventre78792e82016-03-04 17:48:22 -050076 }
77 .collapsed gr-avatar {
Ben Rohlfs501f9d92019-10-20 19:26:48 +020078 top: var(--spacing-m);
Ben Rohlfs4a809aa2019-10-25 14:08:04 +020079 height: var(--line-height-normal);
80 width: var(--line-height-normal);
Andrew Bonventre78792e82016-03-04 17:48:22 -050081 }
82 .expanded gr-avatar {
Ben Rohlfs4a809aa2019-10-25 14:08:04 +020083 top: var(--spacing-l);
84 height: var(--line-height-h1);
85 width: var(--line-height-h1);
Andrew Bonventre78792e82016-03-04 17:48:22 -050086 }
87 .name {
Thomas Shaferbc443852018-10-01 09:08:55 -070088 font-weight: var(--font-weight-bold);
Andrew Bonventre78792e82016-03-04 17:48:22 -050089 }
Wyatt Allena258d652016-10-14 16:09:03 -070090 .message {
Wyatt Allenfec50892017-04-13 16:59:24 -070091 --gr-formatted-text-prose-max-width: 80ch;
Wyatt Allena258d652016-10-14 16:09:03 -070092 }
Becky Siegelc5b280e2016-11-23 10:26:20 -080093 .collapsed .message {
Becky Siegel8824ce12016-12-14 08:53:22 -080094 max-width: none;
Becky Siegelc5b280e2016-11-23 10:26:20 -080095 overflow: hidden;
96 text-overflow: ellipsis;
97 }
Logan Hanks1682a072017-03-23 14:53:29 -070098 .collapsed .author,
Andrew Bonventre78792e82016-03-04 17:48:22 -050099 .collapsed .content,
Viktar Donichae365562016-07-27 16:17:17 -0700100 .collapsed .message,
Viktar Donich7b6c2992017-01-18 22:22:15 -0800101 .collapsed .updateCategory,
Viktar Donichae365562016-07-27 16:17:17 -0700102 gr-account-chip {
Andrew Bonventre78792e82016-03-04 17:48:22 -0500103 display: inline;
104 }
Becky Siegel1c6ccdc2017-11-15 09:49:15 -0800105 gr-button {
Kasper Nilsson9d968a82018-01-23 15:01:02 -0800106 margin: 0 -4px;
Becky Siegel1c6ccdc2017-11-15 09:49:15 -0800107 }
Andrew Bonventre78792e82016-03-04 17:48:22 -0500108 .collapsed gr-comment-list,
Becky Siegele4789652016-11-18 09:42:25 -0800109 .collapsed .replyContainer,
110 .collapsed .hideOnCollapsed,
111 .hideOnOpen {
Andrew Bonventre78792e82016-03-04 17:48:22 -0500112 display: none;
113 }
Becky Siegele4789652016-11-18 09:42:25 -0800114 .collapsed .hideOnOpen {
115 display: block;
116 }
117 .collapsed .content {
118 flex: 1;
Ben Rohlfs501f9d92019-10-20 19:26:48 +0200119 margin-right: var(--spacing-xs);
Becky Siegele4789652016-11-18 09:42:25 -0800120 min-width: 0;
121 overflow: hidden;
122 text-overflow: ellipsis;
123 }
Wyatt Allen72464cc2018-06-04 18:58:52 -0700124 .collapsed .dateContainer {
Becky Siegele4789652016-11-18 09:42:25 -0800125 position: static;
126 }
Logan Hanks1682a072017-03-23 14:53:29 -0700127 .collapsed .author {
Sam Sacconefb4d31d2019-05-09 01:43:47 -0700128 overflow: hidden;
Kasper Nilssone4efa8d2018-04-16 11:31:56 +0200129 color: var(--primary-text-color);
Ben Rohlfs501f9d92019-10-20 19:26:48 +0200130 margin-right: var(--spacing-s);
Andrew Bonventre78792e82016-03-04 17:48:22 -0500131 }
Logan Hanks1682a072017-03-23 14:53:29 -0700132 .expanded .author {
Andrew Bonventre78792e82016-03-04 17:48:22 -0500133 cursor: pointer;
Ben Rohlfs501f9d92019-10-20 19:26:48 +0200134 margin-bottom: var(--spacing-s);
Andrew Bonventre78792e82016-03-04 17:48:22 -0500135 }
Wyatt Allen72464cc2018-06-04 18:58:52 -0700136 .dateContainer {
Andrew Bonventre78792e82016-03-04 17:48:22 -0500137 position: absolute;
Ben Rohlfs501f9d92019-10-20 19:26:48 +0200138 right: var(--spacing-l);
Andrew Bonventre78792e82016-03-04 17:48:22 -0500139 top: 10px;
140 }
Kasper Nilsson9c1a3db2018-10-19 15:11:07 -0700141 span.date {
Wyatt Allen72464cc2018-06-04 18:58:52 -0700142 color: var(--deemphasized-text-color);
143 }
Kasper Nilsson9c1a3db2018-10-19 15:11:07 -0700144 span.date:hover {
145 text-decoration: underline;
146 }
Wyatt Allen72464cc2018-06-04 18:58:52 -0700147 .dateContainer iron-icon {
148 cursor: pointer;
Ben Rohlfs4a809aa2019-10-25 14:08:04 +0200149 vertical-align: top;
Wyatt Allen72464cc2018-06-04 18:58:52 -0700150 }
Andrew Bonventre78792e82016-03-04 17:48:22 -0500151 .replyContainer {
Ben Rohlfs501f9d92019-10-20 19:26:48 +0200152 padding: var(--spacing-m) 0 0 0;
Andrew Bonventre78792e82016-03-04 17:48:22 -0500153 }
Wyatt Allen5a969882018-02-28 16:56:18 -0800154 .score {
Kasper Nilsson71d32112018-04-20 11:29:42 +0200155 border: 1px solid rgba(0,0,0,.12);
Ben Rohlfs6792be42019-10-29 08:46:43 +0100156 border-radius: var(--border-radius);
Kasper Nilsson92ad99f2018-04-16 10:15:33 +0200157 color: var(--primary-text-color);
Wyatt Allen5a969882018-02-28 16:56:18 -0800158 display: inline-block;
Ben Rohlfs501f9d92019-10-20 19:26:48 +0200159 margin: -1px 0;
160 padding: 0 var(--spacing-xxs);
Viktar Donichdae0e852017-05-30 13:03:50 -0700161 }
Wyatt Allen5a969882018-02-28 16:56:18 -0800162 .score.negative {
Kasper Nilssonca464a92018-04-20 10:33:14 +0200163 background-color: var(--vote-color-disliked);
Wyatt Allen5a969882018-02-28 16:56:18 -0800164 }
165 .score.negative.min {
Kasper Nilssonca464a92018-04-20 10:33:14 +0200166 background-color: var(--vote-color-rejected);
Wyatt Allen5a969882018-02-28 16:56:18 -0800167 }
168 .score.positive {
Kasper Nilssonca464a92018-04-20 10:33:14 +0200169 background-color: var(--vote-color-recommended);
Wyatt Allen5a969882018-02-28 16:56:18 -0800170 }
171 .score.positive.max {
Kasper Nilssonca464a92018-04-20 10:33:14 +0200172 background-color: var(--vote-color-approved);
Viktar Donichdae0e852017-05-30 13:03:50 -0700173 }
Wyatt Allen740d8c32017-08-10 16:28:23 -0700174 gr-account-label {
175 --gr-account-label-text-style: {
Thomas Shaferbc443852018-10-01 09:08:55 -0700176 font-weight: var(--font-weight-bold);
Wyatt Allen740d8c32017-08-10 16:28:23 -0700177 };
178 }
Andrew Bonventre78792e82016-03-04 17:48:22 -0500179 </style>
Viktar Donichdae0e852017-05-30 13:03:50 -0700180 <div class$="[[_computeClass(_expanded, showAvatar, message)]]">
Viktar Donichae365562016-07-27 16:17:17 -0700181 <gr-avatar account="[[author]]" image-size="100"></gr-avatar>
Andrew Bonventre78792e82016-03-04 17:48:22 -0500182 <div class="contentContainer">
Milutin Kristofic54f8e3a2019-10-15 15:51:38 +0200183 <div class="author" on-click="_handleAuthorClick">
Logan Hanks1682a072017-03-23 14:53:29 -0700184 <span hidden$="[[!showOnBehalfOf]]">
185 <span class="name">[[message.real_author.name]]</span>
186 on behalf of
187 </span>
Wyatt Allen740d8c32017-08-10 16:28:23 -0700188 <gr-account-label
189 account="[[author]]"
Wyatt Allen740d8c32017-08-10 16:28:23 -0700190 hide-avatar></gr-account-label>
Kasper Nilsson4bfc9972018-09-07 16:43:33 +0000191 <template is="dom-repeat" items="[[_getScores(message)]]" as="score">
192 <span class$="score [[_computeScoreClass(score, labelExtremes)]]">
193 [[score.label]] [[score.value]]
194 </span>
Wyatt Allen5a969882018-02-28 16:56:18 -0800195 </template>
Logan Hanks1682a072017-03-23 14:53:29 -0700196 </div>
Viktar Donichae365562016-07-27 16:17:17 -0700197 <template is="dom-if" if="[[message.message]]">
198 <div class="content">
Kasper Nilsson4bfc9972018-09-07 16:43:33 +0000199 <div class="message hideOnOpen">[[message.message]]</div>
200 <gr-formatted-text
201 no-trailing-margin
202 class="message hideOnCollapsed"
203 content="[[message.message]]"
204 config="[[_projectConfig.commentlinks]]"></gr-formatted-text>
Wyatt Allen54d3b182017-10-30 16:32:44 -0700205 <div class="replyContainer" hidden$="[[!showReplyButton]]" hidden>
Milutin Kristofic63cf95d2019-09-27 15:41:53 +0200206 <gr-button link small on-click="_handleReplyTap">Reply</gr-button>
Wyatt Allen54d3b182017-10-30 16:32:44 -0700207 </div>
Viktar Donichae365562016-07-27 16:17:17 -0700208 <gr-comment-list
209 comments="[[comments]]"
210 change-num="[[changeNum]]"
beckysiegel2adcd762016-09-20 14:56:14 -0700211 patch-num="[[message._revision_number]]"
Wyatt Allen9468e2c2017-08-04 16:14:26 -0700212 project-name="[[projectName]]"
Wyatt Allenbd669e12017-11-15 15:08:02 -0800213 project-config="[[_projectConfig]]"></gr-comment-list>
Viktar Donichae365562016-07-27 16:17:17 -0700214 </div>
Viktar Donich7b6c2992017-01-18 22:22:15 -0800215 </template>
216 <template is="dom-if" if="[[_computeIsReviewerUpdate(message)]]">
217 <div class="content">
218 <template is="dom-repeat" items="[[message.updates]]" as="update">
219 <div class="updateCategory">
220 [[update.message]]
221 <template
222 is="dom-repeat" items="[[update.reviewers]]" as="reviewer">
223 <gr-account-chip account="[[reviewer]]">
224 </gr-account-chip>
225 </template>
226 </div>
227 </template>
228 </div>
229 </template>
Wyatt Allen72464cc2018-06-04 18:58:52 -0700230 <span class="dateContainer">
231 <template is="dom-if" if="[[!message.id]]">
232 <span class="date">
233 <gr-date-formatter
234 has-tooltip
235 show-date-and-time
236 date-str="[[message.date]]"></gr-date-formatter>
237 </span>
238 </template>
239 <template is="dom-if" if="[[message.id]]">
Milutin Kristofic54f8e3a2019-10-15 15:51:38 +0200240 <span class="date" on-click="_handleAnchorClick">
Wyatt Allen72464cc2018-06-04 18:58:52 -0700241 <gr-date-formatter
242 has-tooltip
243 show-date-and-time
244 date-str="[[message.date]]"></gr-date-formatter>
Kasper Nilsson9c1a3db2018-10-19 15:11:07 -0700245 </span>
Wyatt Allen72464cc2018-06-04 18:58:52 -0700246 </template>
247 <iron-icon
248 id="expandToggle"
Milutin Kristofic54f8e3a2019-10-15 15:51:38 +0200249 on-click="_toggleExpanded"
Wyatt Allen72464cc2018-06-04 18:58:52 -0700250 title="Toggle expanded state"
251 icon="[[_computeExpandToggleIcon(_expanded)]]">
252 </span>
Andrew Bonventre78792e82016-03-04 17:48:22 -0500253 </div>
Andrew Bonventre78792e82016-03-04 17:48:22 -0500254 </div>
Urs Wolferf98ec4a2016-03-09 22:48:16 +0100255 <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
Andrew Bonventre78792e82016-03-04 17:48:22 -0500256 </template>
257 <script src="gr-message.js"></script>
258</dom-module>