123456789101112131415161718192021222324252627282930 |
- // 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
- );
|