summaryrefslogtreecommitdiffstats
path: root/client/lib
diff options
context:
space:
mode:
authorXavier Priour <xavier.priour@bubblyware.com>2015-11-13 12:43:34 +0100
committerXavier Priour <xavier.priour@bubblyware.com>2015-11-13 12:43:34 +0100
commita7427b9ae4e790989c49408ffe14aea4976db305 (patch)
tree3b56c753ce05ba9a5253078e2792b2c485d2912e /client/lib
parent3dc70b3ea4d49bccb10d4f2b3e317c794da91e37 (diff)
parentcb3bd86396e4d19e1f05fcb94e3527f81e70412e (diff)
downloadwekan-a7427b9ae4e790989c49408ffe14aea4976db305.tar.gz
wekan-a7427b9ae4e790989c49408ffe14aea4976db305.tar.bz2
wekan-a7427b9ae4e790989c49408ffe14aea4976db305.zip
merge with /devel
Diffstat (limited to 'client/lib')
-rw-r--r--client/lib/modal.js2
-rw-r--r--client/lib/textComplete.js32
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',
+ }
);