diff options
author | Julius Härtl <jus@bitgrid.net> | 2020-08-25 21:54:24 +0300 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2020-08-25 21:54:24 +0300 |
commit | 52a20e28ba01add51e9b28c8a7128dc2af340162 (patch) | |
tree | ae6cad1c1486a9859c3c21cbc96f553cff5540f6 /src | |
parent | 52397462525f4bc4414acf7ca40a015c1304abb3 (diff) |
Move search handler for text to only trigger within the text input
Signed-off-by: Julius Härtl <jus@bitgrid.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/components/EditorWrapper.vue | 11 | ||||
-rw-r--r-- | src/extensions/Keymap.js | 21 |
2 files changed, 20 insertions, 12 deletions
diff --git a/src/components/EditorWrapper.vue b/src/components/EditorWrapper.vue index 802783ef8..54c6eeb2e 100644 --- a/src/components/EditorWrapper.vue +++ b/src/components/EditorWrapper.vue @@ -233,14 +233,12 @@ export default { this.saveStatusPolling = setInterval(() => { this.updateLastSavedStatus() }, 2000) - document.addEventListener('keydown', this._keyUpHandler, true) }, beforeDestroy() { this.close() }, methods: { async close() { - document.removeEventListener('keydown', this._keyUpHandler, true) clearInterval(this.saveStatusPolling) if (this.currentSession && this.syncService) { try { @@ -326,7 +324,7 @@ export default { }, }), new Keymap({ - 'Ctrl-s': () => { + 'Mod-s': () => { this.syncService.save() return true }, @@ -465,13 +463,6 @@ export default { } } }, - _keyUpHandler(event) { - const key = event.key || event.keyCode - if ((event.ctrlKey || event.metaKey) && !event.shiftKey && (key === 'f' || key === 70)) { - event.stopPropagation() - return true - } - }, }, } </script> diff --git a/src/extensions/Keymap.js b/src/extensions/Keymap.js index f5e74755e..7d98f889d 100644 --- a/src/extensions/Keymap.js +++ b/src/extensions/Keymap.js @@ -20,16 +20,33 @@ * */ -import { Extension } from 'tiptap' +import { Extension, Plugin } from 'tiptap' export default class Keymap extends Extension { get name() { - return 'save' + return 'customkeymap' } keys({ schema }) { return this.options } + get plugins() { + return [new Plugin({ + props: { + handleKeyDown(view, event) { + const key = event.key || event.keyCode + if ((event.ctrlKey || event.metaKey) && !event.shiftKey && (key === 'f' || key === 70)) { + // We need to stop propagation and dispatch the event on the window + // in order to force triggering the browser native search in the text editor + event.stopPropagation() + window.dispatchEvent(event) + return true + } + }, + }, + })] + } + } |