| <!-- |
| 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-account-link/gr-account-link.html"> |
| <link rel="import" href="../../shared/gr-button/gr-button.html"> |
| <link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html"> |
| <link rel="import" href="../../shared/gr-linked-text/gr-linked-text.html"> |
| <link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html"> |
| |
| <link rel="import" href="../gr-comment-list/gr-comment-list.html"> |
| |
| <dom-module id="gr-message"> |
| <template> |
| <style> |
| :host { |
| border-top: 1px solid #ddd; |
| display: block; |
| position: relative; |
| } |
| :host(:not([expanded])) { |
| cursor: pointer; |
| } |
| gr-avatar { |
| position: absolute; |
| left: var(--default-horizontal-margin); |
| } |
| .collapsed .contentContainer { |
| color: #777; |
| white-space: nowrap; |
| overflow-x: hidden; |
| text-overflow: ellipsis; |
| } |
| .showAvatar.expanded .contentContainer { |
| margin-left: calc(var(--default-horizontal-margin) + 2.5em); |
| padding: 10px 0; |
| } |
| .showAvatar.collapsed .contentContainer { |
| margin-left: calc(var(--default-horizontal-margin) + 1.75em); |
| padding: 10px 75px 10px 0; |
| } |
| .hideAvatar.collapsed .contentContainer, |
| .hideAvatar.expanded .contentContainer { |
| margin-left: 0; |
| padding: 10px 75px 10px 0; |
| } |
| .collapsed gr-avatar { |
| top: 8px; |
| height: 1.75em; |
| width: 1.75em; |
| } |
| .expanded gr-avatar { |
| top: 12px; |
| height: 2.5em; |
| width: 2.5em; |
| } |
| .name { |
| font-weight: bold; |
| } |
| .content { |
| font-family: var(--monospace-font-family); |
| } |
| .collapsed .name, |
| .collapsed .content, |
| .collapsed .message { |
| display: inline; |
| } |
| .collapsed gr-comment-list, |
| .collapsed .replyContainer { |
| display: none; |
| } |
| .collapsed .name { |
| color: var(--default-text-color); |
| } |
| .expanded .name { |
| cursor: pointer; |
| } |
| .date { |
| color: #666; |
| position: absolute; |
| right: var(--default-horizontal-margin); |
| top: 10px; |
| } |
| .replyContainer { |
| padding: .5em 0 1em; |
| } |
| </style> |
| <div class$="[[_computeClass(expanded, showAvatar)]]"> |
| <gr-avatar account="[[message.author]]" image-size="100"></gr-avatar> |
| <div class="contentContainer"> |
| <div class="name" on-tap="_handleNameTap">[[message.author.name]]</div> |
| <div class="content"> |
| <gr-linked-text class="message" |
| pre="[[expanded]]" |
| content="[[message.message]]" |
| disabled="[[!expanded]]" |
| config="[[projectConfig.commentlinks]]"></gr-linked-text> |
| <gr-comment-list |
| comments="[[comments]]" |
| change-num="[[changeNum]]" |
| patch-num="[[message._revision_number]]"></gr-comment-list> |
| </div> |
| <a class="date" href$="[[_computeMessageHash(message)]]" on-tap="_handleLinkTap"> |
| <gr-date-formatter date-str="[[message.date]]"></gr-date-formatter> |
| </a> |
| </div> |
| <div class="replyContainer" hidden$="[[!showReplyButton]]" hidden> |
| <gr-button small on-tap="_handleReplyTap">Reply</gr-button> |
| </div> |
| </div> |
| <gr-rest-api-interface id="restAPI"></gr-rest-api-interface> |
| </template> |
| <script src="gr-message.js"></script> |
| </dom-module> |