From 32ca8853bc8dcf4d4ff18699af1f02b9c078f624 Mon Sep 17 00:00:00 2001 From: kolaente Date: Sun, 22 Oct 2023 12:48:31 +0200 Subject: [PATCH] fix(editor): don't use global shortcut when anything is focused --- src/components/input/editor/TipTap.vue | 16 ++++++---------- src/stores/base.ts | 7 ------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/src/components/input/editor/TipTap.vue b/src/components/input/editor/TipTap.vue index afd23d312..40cb58f9d 100644 --- a/src/components/input/editor/TipTap.vue +++ b/src/components/input/editor/TipTap.vue @@ -177,7 +177,6 @@ import BaseButton from '@/components/base/BaseButton.vue' import XButton from '@/components/input/button.vue' import {Placeholder} from '@tiptap/extension-placeholder' import {eventToHotkeyString} from '@github/hotkey' -import {useBaseStore} from '@/stores/base' import {mergeAttributes} from '@tiptap/core' import {createRandomID} from '@/helpers/randomId' @@ -271,8 +270,6 @@ const { initialMode?: Mode, }>() -const baseStore = useBaseStore() - const emit = defineEmits(['update:modelValue', 'save']) const inputHTML = ref('') @@ -402,12 +399,6 @@ const editor = useEditor({ // JSON // this.$emit('update:modelValue', this.editor.getJSON()) }, - onFocus() { - baseStore.setEditorFocused(true) - }, - onBlur() { - baseStore.setEditorFocused(false) - }, }) watch( @@ -529,7 +520,12 @@ function handleImagePaste(event) { function setFocusToEditor(event) { const hotkeyString = eventToHotkeyString(event) if (!hotkeyString) return - if (hotkeyString !== editShortcut || baseStore.editorFocused) return + if (hotkeyString !== editShortcut || + event.target.tagName.toLowerCase() === 'input' || + event.target.tagName.toLowerCase() === 'textarea' || + event.target.contentEditable === 'true') { + return + } event.preventDefault() if (initialMode === 'preview' && isEditEnabled && !isEditing.value) { diff --git a/src/stores/base.ts b/src/stores/base.ts index 67f65f7d1..f861376cc 100644 --- a/src/stores/base.ts +++ b/src/stores/base.ts @@ -30,7 +30,6 @@ export const useBaseStore = defineStore('base', () => { const quickActionsActive = ref(false) const logoVisible = ref(true) const updateAvailable = ref(false) - const editorFocused = ref(false) // To allow tracking over multiple instances of the editor function setLoading(newLoading: boolean) { loading.value = newLoading @@ -93,10 +92,6 @@ export const useBaseStore = defineStore('base', () => { updateAvailable.value = value } - function setEditorFocused(value: boolean) { - editorFocused.value = value - } - async function handleSetCurrentProject( {project, forceUpdate = false}: {project: IProject | null, forceUpdate?: boolean}, ) { @@ -155,7 +150,6 @@ export const useBaseStore = defineStore('base', () => { quickActionsActive: readonly(quickActionsActive), logoVisible: readonly(logoVisible), updateAvailable: readonly(updateAvailable), - editorFocused: readonly(editorFocused), setLoading, setReady, @@ -167,7 +161,6 @@ export const useBaseStore = defineStore('base', () => { setBlurHash, setLogoVisible, setUpdateAvailable, - setEditorFocused, handleSetCurrentProject, loadApp,