Merge "Add keyboard shortcuts for expanding and collapsing all messages"
This commit is contained in:
@@ -129,6 +129,8 @@
|
||||
'd': '_handleDKey',
|
||||
's': '_handleSKey',
|
||||
'u': '_handleUKey',
|
||||
'x': '_handleXKey',
|
||||
'z': '_handleZKey',
|
||||
},
|
||||
|
||||
attached: function() {
|
||||
@@ -652,6 +654,22 @@
|
||||
this._determinePageBack();
|
||||
},
|
||||
|
||||
_handleXKey: function(e) {
|
||||
if (this.shouldSuppressKeyboardShortcut(e) ||
|
||||
this.modifierPressed(e)) { return; }
|
||||
|
||||
e.preventDefault();
|
||||
this.$.messageList.handleExpandCollapse(true);
|
||||
},
|
||||
|
||||
_handleZKey: function(e) {
|
||||
if (this.shouldSuppressKeyboardShortcut(e) ||
|
||||
this.modifierPressed(e)) { return; }
|
||||
|
||||
e.preventDefault();
|
||||
this.$.messageList.handleExpandCollapse(false);
|
||||
},
|
||||
|
||||
_determinePageBack: function() {
|
||||
// Default backPage to '/' if user came to change view page
|
||||
// via an email link, etc.
|
||||
|
||||
@@ -85,6 +85,20 @@ limitations under the License.
|
||||
assert.isFalse(overlayEl.opened);
|
||||
});
|
||||
|
||||
test('X should expand all messages', function() {
|
||||
var handleExpand =
|
||||
sandbox.stub(element.$.messageList, 'handleExpandCollapse');
|
||||
MockInteractions.pressAndReleaseKeyOn(element, 88, null, 'x');
|
||||
assert(handleExpand.calledWith(true));
|
||||
});
|
||||
|
||||
test('Z should collapse all messages', function() {
|
||||
var handleExpand =
|
||||
sandbox.stub(element.$.messageList, 'handleExpandCollapse');
|
||||
MockInteractions.pressAndReleaseKeyOn(element, 90, null, 'z');
|
||||
assert(handleExpand.calledWith(false));
|
||||
});
|
||||
|
||||
test('shift + R should fetch and navigate to the latest patch set',
|
||||
function(done) {
|
||||
element._changeNum = '42';
|
||||
|
||||
@@ -106,15 +106,22 @@
|
||||
el.classList.add('highlighted');
|
||||
},
|
||||
|
||||
_handleExpandCollapseTap: function(e) {
|
||||
e.preventDefault();
|
||||
this._expanded = !this._expanded;
|
||||
/**
|
||||
* @param {boolean} expand
|
||||
*/
|
||||
handleExpandCollapse: function(expand) {
|
||||
this._expanded = expand;
|
||||
var messageEls = Polymer.dom(this.root).querySelectorAll('gr-message');
|
||||
for (var i = 0; i < messageEls.length; i++) {
|
||||
messageEls[i].expanded = this._expanded;
|
||||
messageEls[i].expanded = expand;
|
||||
}
|
||||
},
|
||||
|
||||
_handleExpandCollapseTap: function(e) {
|
||||
e.preventDefault();
|
||||
this.handleExpandCollapse(!this._expanded);
|
||||
},
|
||||
|
||||
_handleAutomatedMessageToggleTap: function(e) {
|
||||
e.preventDefault();
|
||||
this._hideAutomated = !this._hideAutomated;
|
||||
|
||||
@@ -86,6 +86,29 @@ limitations under the License.
|
||||
}
|
||||
});
|
||||
|
||||
test('expand/collapse from external keypress', function() {
|
||||
element.handleExpandCollapse(true);
|
||||
var allMessageEls =
|
||||
Polymer.dom(element.root).querySelectorAll('gr-message');
|
||||
for (var i = 0; i < allMessageEls.length; i++) {
|
||||
assert.isTrue(allMessageEls[i].expanded);
|
||||
}
|
||||
|
||||
// Expand/collapse all text also changes.
|
||||
assert.equal(element.$$('#collapse-messages').textContent.trim(),
|
||||
'Collapse all');
|
||||
|
||||
element.handleExpandCollapse(false);
|
||||
var allMessageEls =
|
||||
Polymer.dom(element.root).querySelectorAll('gr-message');
|
||||
for (var i = 0; i < allMessageEls.length; i++) {
|
||||
assert.isFalse(allMessageEls[i].expanded);
|
||||
}
|
||||
// Expand/collapse all text also changes.
|
||||
assert.equal(element.$$('#collapse-messages').textContent.trim(),
|
||||
'Expand all');
|
||||
});
|
||||
|
||||
test('hide messages does not appear when no automated messages',
|
||||
function() {
|
||||
assert.isOk(element.$$('#automatedMessageToggleContainer[hidden]'));
|
||||
|
||||
Reference in New Issue
Block a user