diff options
author | Filipa Lacerda <filipa@gitlab.com> | 2017-04-21 17:02:07 +0000 |
---|---|---|
committer | Filipa Lacerda <filipa@gitlab.com> | 2017-04-21 17:02:07 +0000 |
commit | 9c35162f83fb62349b922baaf192038522b09793 (patch) | |
tree | 9b42992681911f991bfeaa80e947a1bde6bf475c | |
parent | d3a788da5b3871331b967e692d78a808a31f08fa (diff) | |
parent | f5f97359456bff5226f55f5338e01120ea90cbb8 (diff) | |
download | gitlab-ce-9c35162f83fb62349b922baaf192038522b09793.tar.gz |
Merge branch 'form-focus-previous-incorrect-form' into 'master'
Fixed the preview keyboard shortcut focusing wrong tab
Closes #31101
See merge request !10849
-rw-r--r-- | app/assets/javascripts/shortcuts.js | 7 | ||||
-rw-r--r-- | changelogs/unreleased/form-focus-previous-incorrect-form.yml | 4 | ||||
-rw-r--r-- | spec/javascripts/shortcuts_spec.js | 45 |
3 files changed, 54 insertions, 2 deletions
diff --git a/app/assets/javascripts/shortcuts.js b/app/assets/javascripts/shortcuts.js index 5b6bb2bf3f5..85659d7fa39 100644 --- a/app/assets/javascripts/shortcuts.js +++ b/app/assets/javascripts/shortcuts.js @@ -57,8 +57,11 @@ import findAndFollowLink from './shortcuts_dashboard_navigation'; Shortcuts.prototype.toggleMarkdownPreview = function(e) { // Check if short-cut was triggered while in Write Mode - if ($(e.target).hasClass('js-note-text')) { - $('.js-md-preview-button').focus(); + const $target = $(e.target); + const $form = $target.closest('form'); + + if ($target.hasClass('js-note-text')) { + $('.js-md-preview-button', $form).focus(); } return $(document).triggerHandler('markdown-preview:toggle', [e]); }; diff --git a/changelogs/unreleased/form-focus-previous-incorrect-form.yml b/changelogs/unreleased/form-focus-previous-incorrect-form.yml new file mode 100644 index 00000000000..efabb78de6b --- /dev/null +++ b/changelogs/unreleased/form-focus-previous-incorrect-form.yml @@ -0,0 +1,4 @@ +--- +title: Fixued preview shortcut focusing wrong preview tab +merge_request: +author: diff --git a/spec/javascripts/shortcuts_spec.js b/spec/javascripts/shortcuts_spec.js new file mode 100644 index 00000000000..9b8373df29e --- /dev/null +++ b/spec/javascripts/shortcuts_spec.js @@ -0,0 +1,45 @@ +/* global Shortcuts */ +describe('Shortcuts', () => { + const fixtureName = 'issues/issue_with_comment.html.raw'; + const createEvent = (type, target) => $.Event(type, { + target, + }); + + preloadFixtures(fixtureName); + + describe('toggleMarkdownPreview', () => { + let sc; + + beforeEach(() => { + loadFixtures(fixtureName); + + spyOnEvent('.js-new-note-form .js-md-preview-button', 'focus'); + spyOnEvent('.edit-note .js-md-preview-button', 'focus'); + + sc = new Shortcuts(); + }); + + it('focuses preview button in form', () => { + sc.toggleMarkdownPreview( + createEvent('KeyboardEvent', document.querySelector('.js-new-note-form .js-note-text'), + )); + + expect('focus').toHaveBeenTriggeredOn('.js-new-note-form .js-md-preview-button'); + }); + + it('focues preview button inside edit comment form', (done) => { + document.querySelector('.js-note-edit').click(); + + setTimeout(() => { + sc.toggleMarkdownPreview( + createEvent('KeyboardEvent', document.querySelector('.edit-note .js-note-text'), + )); + + expect('focus').not.toHaveBeenTriggeredOn('.js-new-note-form .js-md-preview-button'); + expect('focus').toHaveBeenTriggeredOn('.edit-note .js-md-preview-button'); + + done(); + }); + }); + }); +}); |