diff options
author | Xavier Priour <xavier.priour@bubblyware.com> | 2015-11-13 12:43:34 +0100 |
---|---|---|
committer | Xavier Priour <xavier.priour@bubblyware.com> | 2015-11-13 12:43:34 +0100 |
commit | a7427b9ae4e790989c49408ffe14aea4976db305 (patch) | |
tree | 3b56c753ce05ba9a5253078e2792b2c485d2912e /client/lib | |
parent | 3dc70b3ea4d49bccb10d4f2b3e317c794da91e37 (diff) | |
parent | cb3bd86396e4d19e1f05fcb94e3527f81e70412e (diff) | |
download | wekan-a7427b9ae4e790989c49408ffe14aea4976db305.tar.gz wekan-a7427b9ae4e790989c49408ffe14aea4976db305.tar.bz2 wekan-a7427b9ae4e790989c49408ffe14aea4976db305.zip |
merge with /devel
Diffstat (limited to 'client/lib')
-rw-r--r-- | client/lib/modal.js | 2 | ||||
-rw-r--r-- | client/lib/textComplete.js | 32 |
2 files changed, 29 insertions, 5 deletions
diff --git a/client/lib/modal.js b/client/lib/modal.js index 7b7516e0..e6301cb5 100644 --- a/client/lib/modal.js +++ b/client/lib/modal.js @@ -21,7 +21,7 @@ window.Modal = new class { } } - open(modalName, { onCloseGoTo = ''}) { + open(modalName, { onCloseGoTo = ''} = {}) { this._currentModal.set(modalName); this._onCloseGoTo = onCloseGoTo; } diff --git a/client/lib/textComplete.js b/client/lib/textComplete.js index e50d7cbc..3e69d07f 100644 --- a/client/lib/textComplete.js +++ b/client/lib/textComplete.js @@ -3,8 +3,23 @@ // of the vanilla `textcomplete`. let dropdownMenuIsOpened = false; -$.fn.escapeableTextComplete = function(...args) { - this.textcomplete(...args); +$.fn.escapeableTextComplete = function(strategies, options, ...otherArgs) { + // When the autocomplete menu is shown we want both a press of both `Tab` + // or `Enter` to validation the auto-completion. We also need to stop the + // event propagation to prevent EscapeActions side effect, for instance the + // minicard submission (on `Enter`) or going on the next column (on `Tab`). + options = { + onKeydown(evt, commands) { + if (evt.keyCode === 9 || evt.keyCode === 13) { + evt.stopPropagation(); + return commands.KEY_ENTER; + } + }, + ...options, + }; + + // Proxy to the vanilla jQuery component + this.textcomplete(strategies, options, ...otherArgs); // Since commit d474017 jquery-textComplete automatically closes a potential // opened dropdown menu when the user press Escape. This behavior conflicts @@ -18,7 +33,14 @@ $.fn.escapeableTextComplete = function(...args) { }, 'textComplete:hide'() { Tracker.afterFlush(() => { - dropdownMenuIsOpened = false; + // XXX Hack. We unfortunately need to set a setTimeout here to make the + // `noClickEscapeOn` work bellow, otherwise clicking on a autocomplete + // item will close both the autocomplete menu (as expected) but also the + // next item in the stack (for example the minicard editor) which we + // don't want. + setTimeout(() => { + dropdownMenuIsOpened = false; + }, 100); }); }, }); @@ -26,5 +48,7 @@ $.fn.escapeableTextComplete = function(...args) { EscapeActions.register('textcomplete', () => {}, - () => dropdownMenuIsOpened + () => dropdownMenuIsOpened, { + noClickEscapeOn: '.textcomplete-dropdown', + } ); |