Merge "Handle diff comment timestamp taps with Nav API"
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.html b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.html
index 6ea0330..72c7285 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.html
@@ -91,10 +91,12 @@
text-align: right;
white-space: nowrap;
}
- a.date:link,
- a.date:visited {
+ span.date {
color: var(--deemphasized-text-color);
}
+ span.date:hover {
+ text-decoration: underline;
+ }
.actions {
display: flex;
justify-content: flex-end;
@@ -255,11 +257,11 @@
on-tap="_handleCommentDelete">
(Delete)
</gr-button>
- <a class="date" href$="[[_computeLinkToComment(comment)]]" on-tap="_handleLinkTap">
+ <span class="date" on-tap="_handleAnchorTap">
<gr-date-formatter
has-tooltip
date-str="[[comment.updated]]"></gr-date-formatter>
- </a>
+ </span>
<div class="show-hide">
<label class="show-hide">
<input type="checkbox" class="show-hide"
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js
index 90d465f..5165db0 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment.js
@@ -29,6 +29,8 @@
const REPORT_UPDATE_DRAFT = 'UpdateDraftComment';
const REPORT_DISCARD_DRAFT = 'DiscardDraftComment';
+ const FILE = 'FILE';
+
Polymer({
is: 'gr-diff-comment',
@@ -64,6 +66,12 @@
* @event comment-mouse-out
*/
+ /**
+ * Fired when the comment's timestamp is tapped.
+ *
+ * @event comment-anchor-tap
+ */
+
properties: {
changeNum: String,
/** @type {?} */
@@ -333,10 +341,6 @@
}
},
- _computeLinkToComment(comment) {
- return '#' + comment.line;
- },
-
_computeDeleteButtonClass(isAdmin, draft) {
return isAdmin && !draft ? 'showDeleteButtons' : '';
},
@@ -401,15 +405,16 @@
}, STORAGE_DEBOUNCE_INTERVAL);
},
- _handleLinkTap(e) {
+ _handleAnchorTap(e) {
e.preventDefault();
- const hash = this._computeLinkToComment(this.comment);
- // Don't add the hash to the window history if it's already there.
- // Otherwise you mess up expected back button behavior.
- if (window.location.hash == hash) { return; }
- // Change the URL but don’t trigger a nav event. Otherwise it will
- // reload the page.
- page.show(window.location.pathname + hash, null, false);
+ if (!this.comment.line) { return; }
+ this.dispatchEvent(new CustomEvent('comment-anchor-tap', {
+ bubbles: true,
+ detail: {
+ number: this.comment.line || FILE,
+ side: this.side,
+ },
+ }));
},
_handleEdit(e) {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment_test.html b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment_test.html
index ca85892..912e615 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-comment/gr-diff-comment_test.html
@@ -99,15 +99,17 @@
'header middle content is not visible');
});
- test('clicking on date link does not trigger nav', () => {
- const showStub = sinon.stub(page, 'show');
+ test('clicking on date link fires event', () => {
+ element.side = 'PARENT';
+ const stub = sinon.stub();
+ element.addEventListener('comment-anchor-tap', stub);
const dateEl = element.$$('.date');
assert.ok(dateEl);
MockInteractions.tap(dateEl);
- const dest = window.location.pathname + '#5';
- assert(showStub.lastCall.calledWithExactly(dest, null, false),
- 'Should navigate to ' + dest + ' without triggering nav');
- showStub.restore();
+
+ assert.isTrue(stub.called);
+ assert.deepEqual(stub.lastCall.args[0].detail,
+ {side: element.side, number: element.comment.line});
});
test('message is not retrieved from storage when other edits', done => {
@@ -733,17 +735,6 @@
assert.isTrue(saveStub.calledOnce);
});
- test('clicking on date link does not trigger nav', () => {
- const showStub = sinon.stub(page, 'show');
- const dateEl = element.$$('.date');
- assert.ok(dateEl);
- MockInteractions.tap(dateEl);
- const dest = window.location.pathname + '#5';
- assert(showStub.lastCall.calledWithExactly(dest, null, false),
- 'Should navigate to ' + dest + ' without triggering nav');
- showStub.restore();
- });
-
test('proper event fires on resolve, comment is not saved', done => {
const save = sandbox.stub(element, 'save');
element.addEventListener('comment-update', e => {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
index 0866849..bb3eff9 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
@@ -336,6 +336,7 @@
project-name="[[_change.project]]"
view-mode="[[_diffMode]]"
is-blame-loaded="{{_isBlameLoaded}}"
+ on-comment-anchor-tap="_onLineSelected"
on-line-selected="_onLineSelected">
</gr-diff-host>
<gr-diff-preferences