Files
gerrit/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.html
Becky Siegel eb4ea184f7 Keyboard shortcuts to expand and collapse all comments
This change adds keyboard shortcuts to the "gr-diff-comment-thread"
expand all comments when 'e' is pressed and collapse all comments when
'shift + e' is pressed. Note that the keyboard event is detected on the
thread instead of the comment to minimize the number of events getting
triggered.

Feature: Issue 4738
Change-Id: Iab77349bd1527d7af5e05a827919a78a86909835
2016-10-12 11:13:56 -07:00

209 lines
6.2 KiB
HTML

<!--
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="../../../bower_components/iron-autogrow-textarea/iron-autogrow-textarea.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-storage/gr-storage.html">
<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
<dom-module id="gr-diff-comment">
<template>
<style>
:host {
background-color: #ffd;
display: block;
--iron-autogrow-textarea: {
padding: 2px;
};
}
:host([disabled]) {
pointer-events: none;
}
:host([disabled]) .container {
opacity: .5;
}
.header,
.message,
.actions {
padding: .5em .7em;
}
.header {
cursor: pointer;
display: flex;
font-family: 'Open Sans', sans-serif;
padding-bottom: 0;
}
.headerMiddle {
color: #666;
flex: 1;
overflow: hidden;
}
.authorName,
.draftLabel {
display: block;
float: left;
font-weight: bold;
}
.draftLabel {
color: #999;
display: none;
}
.date {
justify-content: flex-end;
margin-left: 5px;
white-space: nowrap;
}
a.date:link,
a.date:visited {
color: #666;
}
.actions {
display: flex;
padding-top: 0;
}
.action {
margin-right: .5em;
}
.danger {
display: flex;
flex: 1;
justify-content: flex-end;
}
.editMessage {
display: none;
margin: .5em .7em;
width: calc(100% - 1.4em - 2px);
}
.danger .action {
margin-right: 0;
}
.container:not(.draft) .actions :not(.reply):not(.quote):not(.done) {
display: none;
}
.draft .reply,
.draft .quote,
.draft .done {
display: none;
}
.draft .draftLabel {
display: inline;
}
.draft:not(.editing) .save,
.draft:not(.editing) .cancel {
display: none;
}
.editing .message,
.editing .reply,
.editing .quote,
.editing .done,
.editing .edit {
display: none;
}
.editing .editMessage {
background-color: #fff;
display: block;
}
.show-hide {
margin-left: .4em;
}
input.show-hide {
display: none;
}
label.show-hide {
color: #000;
cursor: pointer;
display: block;
font-size: .8em;
height: 1.1em;
margin-top: .1em;
}
#container .collapsedContent {
display: none;
}
#container.collapsed {
padding-bottom: 3px;
}
#container.collapsed .collapsedContent {
display: block;
overflow: hidden;
padding-left: 5px;
text-overflow: ellipsis;
white-space: nowrap;
}
#container.collapsed .actions,
#container.collapsed gr-linked-text,
#container.collapsed iron-autogrow-textarea {
display: none;
}
</style>
<div id="container"
class="container"
on-mouseenter="_handleMouseEnter"
on-mouseleave="_handleMouseLeave">
<div class="header" id="header" on-click="_handleToggleCollapsed">
<div class="headerLeft">
<span class="authorName">[[comment.author.name]]</span>
<span class="draftLabel">DRAFT</span>
</div>
<div class="headerMiddle">
<span class="collapsedContent">[[comment.message]]</span>
</div>
<a class="date" href$="[[_computeLinkToComment(comment)]]" on-tap="_handleLinkTap">
<gr-date-formatter date-str="[[comment.updated]]"></gr-date-formatter>
</a>
<div class="show-hide">
<label class="show-hide">
<input type="checkbox" class="show-hide"
checked$="[[collapsed]]"
on-change="_handleToggleCollapsed">
[[_computeShowHideText(collapsed)]]
</label>
</div>
</div>
<iron-autogrow-textarea
id="editTextarea"
class="editMessage"
disabled="{{disabled}}"
rows="4"
bind-value="{{_messageText}}"
on-keydown="_handleTextareaKeydown"></iron-autogrow-textarea>
<gr-linked-text class="message"
pre
content="[[comment.message]]"
collapsed="[[collapsed]]"
config="[[projectConfig.commentlinks]]"></gr-linked-text>
<div class="actions" hidden$="[[!showActions]]">
<gr-button class="action reply" on-tap="_handleReply">Reply</gr-button>
<gr-button class="action quote" on-tap="_handleQuote">Quote</gr-button>
<gr-button class="action done" on-tap="_handleDone">Done</gr-button>
<gr-button class="action edit" on-tap="_handleEdit">Edit</gr-button>
<gr-button class="action save" on-tap="_handleSave"
disabled$="[[_computeSaveDisabled(_messageText)]]">Save</gr-button>
<gr-button class="action cancel" on-tap="_handleCancel" hidden>Cancel</gr-button>
<div class="danger">
<gr-button class="action discard" on-tap="_handleDiscard">Discard</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.js"></script>
</dom-module>