Save comments on Ctrl+Enter and Meta+Enter
Feature: Issue 4997 Change-Id: Ia1887b3ee558b96182e3ea987370c9f555c90502
This commit is contained in:
@@ -378,7 +378,11 @@ limitations under the License.
|
|||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<span class="key modifier">Ctrl</span>
|
<span class="key modifier">Ctrl</span>
|
||||||
<span class="key">s</span>
|
<span class="key">s</span><br/>
|
||||||
|
<span class="key modifier">Ctrl</span>
|
||||||
|
<span class="key">Enter</span><br/>
|
||||||
|
<span class="key modifier">Meta</span>
|
||||||
|
<span class="key">Enter</span>
|
||||||
</td>
|
</td>
|
||||||
<td>Save comment</td>
|
<td>Save comment</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -243,13 +243,18 @@
|
|||||||
|
|
||||||
_handleTextareaKeydown: function(e) {
|
_handleTextareaKeydown: function(e) {
|
||||||
switch (e.keyCode) {
|
switch (e.keyCode) {
|
||||||
|
case 13: // 'enter'
|
||||||
|
if (this._messageText.length !== 0 && (e.metaKey || e.ctrlKey)) {
|
||||||
|
this._handleSave(e);
|
||||||
|
}
|
||||||
|
break;
|
||||||
case 27: // 'esc'
|
case 27: // 'esc'
|
||||||
if (this._messageText.length === 0) {
|
if (this._messageText.length === 0) {
|
||||||
this._handleCancel(e);
|
this._handleCancel(e);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 83: // 's'
|
case 83: // 's'
|
||||||
if (e.ctrlKey) {
|
if (this._messageText.length !== 0 && e.ctrlKey) {
|
||||||
this._handleSave(e);
|
this._handleSave(e);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -175,19 +175,67 @@ limitations under the License.
|
|||||||
'header middle content is is not visible');
|
'header middle content is is not visible');
|
||||||
});
|
});
|
||||||
|
|
||||||
test('esc does not close comment unless text is empty', function(done) {
|
suite('while editing', function() {
|
||||||
|
setup(function() {
|
||||||
element.editing = true;
|
element.editing = true;
|
||||||
element._messageText = 'test';
|
element._messageText = 'test';
|
||||||
var textarea = element.$.editTextarea;
|
sandbox.stub(element, '_handleCancel');
|
||||||
var closeSpy = sandbox.spy(element, '_handleCancel');
|
sandbox.stub(element, '_handleSave');
|
||||||
|
flushAsynchronousOperations();
|
||||||
|
});
|
||||||
|
|
||||||
flush(function() {
|
suite('when text is empty', function() {
|
||||||
MockInteractions.pressAndReleaseKeyOn(textarea, 27); // esc
|
setup(function() {
|
||||||
assert.isFalse(closeSpy.called);
|
|
||||||
element._messageText = '';
|
element._messageText = '';
|
||||||
MockInteractions.pressAndReleaseKeyOn(textarea, 27); // esc
|
});
|
||||||
assert.isTrue(closeSpy.called);
|
|
||||||
done();
|
test('esc closes comment when text is empty', function() {
|
||||||
|
MockInteractions.pressAndReleaseKeyOn(
|
||||||
|
element.$.editTextarea, 27); // esc
|
||||||
|
assert.isTrue(element._handleCancel.called);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('ctrl+enter does not save', function() {
|
||||||
|
MockInteractions.pressAndReleaseKeyOn(
|
||||||
|
element.$.editTextarea, 13, 'ctrl'); // ctrl + enter
|
||||||
|
assert.isFalse(element._handleSave.called);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('meta+enter does not save', function() {
|
||||||
|
MockInteractions.pressAndReleaseKeyOn(
|
||||||
|
element.$.editTextarea, 13, 'meta'); // meta + enter
|
||||||
|
assert.isFalse(element._handleSave.called);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('ctrl+s does not save', function() {
|
||||||
|
MockInteractions.pressAndReleaseKeyOn(
|
||||||
|
element.$.editTextarea, 83, 'ctrl'); // ctrl + s
|
||||||
|
assert.isFalse(element._handleSave.called);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
test('esc does not close comment that has content', function() {
|
||||||
|
MockInteractions.pressAndReleaseKeyOn(
|
||||||
|
element.$.editTextarea, 27); // esc
|
||||||
|
assert.isFalse(element._handleCancel.called);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('ctrl+enter saves', function() {
|
||||||
|
MockInteractions.pressAndReleaseKeyOn(
|
||||||
|
element.$.editTextarea, 13, 'ctrl'); // ctrl + enter
|
||||||
|
assert.isTrue(element._handleSave.called);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('meta+enter saves', function() {
|
||||||
|
MockInteractions.pressAndReleaseKeyOn(
|
||||||
|
element.$.editTextarea, 13, 'meta'); // meta + enter
|
||||||
|
assert.isTrue(element._handleSave.called);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('ctrl+s saves', function() {
|
||||||
|
MockInteractions.pressAndReleaseKeyOn(
|
||||||
|
element.$.editTextarea, 83, 'ctrl'); // ctrl + s
|
||||||
|
assert.isTrue(element._handleSave.called);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user