diff --git a/app/app.vue b/app/app.vue index 738d278529..61109846ec 100644 --- a/app/app.vue +++ b/app/app.vue @@ -48,6 +48,7 @@ if (import.meta.server) { } const keyboardShortcuts = useKeyboardShortcuts() +const focusSearchInput = provideSearchInputFocus().focus const { settings } = useSettings() initKeyShortcuts() @@ -64,14 +65,7 @@ onKeyDown( if (!keyboardShortcuts.value || isEditableElement(e.target)) return e.preventDefault() - const searchInput = document.querySelector( - 'input[type="search"], input[name="q"]', - ) - - if (searchInput) { - searchInput.focus() - return - } + if (focusSearchInput()) return router.push({ name: 'search' }) }, diff --git a/app/components/Header/SearchBox.vue b/app/components/Header/SearchBox.vue index e416735a58..6ae3a23b9d 100644 --- a/app/components/Header/SearchBox.vue +++ b/app/components/Header/SearchBox.vue @@ -39,11 +39,15 @@ function handleBlur() { emit('blur') } function focus() { - inputRef.value?.focus() + const input = inputRef.value + if (!input) return false + input.focus() + return true } function blur() { inputRef.value?.blur() } +useSearchInputFocusTarget(focus) defineExpose({ focus, blur })