mirror of
https://github.com/wekan/wekan.git
synced 2025-12-17 07:50:12 +01:00
31 lines
1 KiB
JavaScript
31 lines
1 KiB
JavaScript
|
|
// We “inherit” the jquery-textcomplete plugin to integrate with our
|
||
|
|
// EscapeActions system. You should always use `escapeableTextComplete` instead
|
||
|
|
// of the vanilla `textcomplete`.
|
||
|
|
let dropdownMenuIsOpened = false;
|
||
|
|
|
||
|
|
$.fn.escapeableTextComplete = function(...args) {
|
||
|
|
this.textcomplete(...args);
|
||
|
|
|
||
|
|
// Since commit d474017 jquery-textComplete automatically closes a potential
|
||
|
|
// opened dropdown menu when the user press Escape. This behavior conflicts
|
||
|
|
// with our EscapeActions system, but it's too complicated and hacky to
|
||
|
|
// monkey-pach textComplete to disable it -- I tried. Instead we listen to
|
||
|
|
// 'open' and 'hide' events, and create a ghost escapeAction when the dropdown
|
||
|
|
// is opened (and rely on textComplete to execute the actual action).
|
||
|
|
this.on({
|
||
|
|
'textComplete:show'() {
|
||
|
|
dropdownMenuIsOpened = true;
|
||
|
|
},
|
||
|
|
'textComplete:hide'() {
|
||
|
|
Tracker.afterFlush(() => {
|
||
|
|
dropdownMenuIsOpened = false;
|
||
|
|
});
|
||
|
|
},
|
||
|
|
});
|
||
|
|
};
|
||
|
|
|
||
|
|
EscapeActions.register('textcomplete',
|
||
|
|
() => {},
|
||
|
|
() => dropdownMenuIsOpened
|
||
|
|
);
|