11<script setup lang="ts">
2- import { debounce } from ' perfect-debounce'
32import { isEditableElement } from ' ~/utils/input'
43
54withDefaults (
@@ -17,31 +16,30 @@ const showFullSearch = shallowRef(false)
1716const showMobileMenu = shallowRef (false )
1817
1918// On mobile, clicking logo+search button expands search
19+ const route = useRoute ()
2020const isMobile = useIsMobile ()
2121const isSearchExpandedManually = shallowRef (false )
2222const searchBoxRef = useTemplateRef (' searchBoxRef' )
2323
24- const route = useRoute ()
25- const searchQuery = shallowRef <string >(normalizeSearchParam (route .query .q ))
26-
24+ const searchQuery = shallowRef (' ' )
2725watch (
2826 () => route .query .q ,
2927 queryValue => {
30- if (queryValue !== searchQuery .value ) {
31- searchQuery .value = normalizeSearchParam (queryValue )
32- }
28+ searchQuery .value = normalizeSearchParam (queryValue )
3329 },
30+ { immediate: true },
3431)
3532
36- const router = useRouter ()
37- const onSearchQueryUpdate = debounce ((newSearchQuery : string ) => {
38- if (newSearchQuery !== searchQuery .value ) {
39- router .replace ({
40- name: ' search' ,
41- query: { q: newSearchQuery === ' ' ? undefined : newSearchQuery },
42- })
33+ async function handleSearchSubmit() {
34+ if (! searchQuery .value ) {
35+ return
4336 }
44- }, 500 )
37+
38+ await navigateTo ({
39+ name: ' search' ,
40+ query: { q: searchQuery .value },
41+ })
42+ }
4543
4644// On search page, always show search expanded on mobile
4745const isOnHomePage = computed (() => route .name === ' index' )
@@ -149,8 +147,8 @@ onKeyStroke(
149147 ref =" searchBoxRef"
150148 class =" max-w-sm"
151149 compact
152- :model-value =" searchQuery"
153- @update:model-value = " onSearchQueryUpdate "
150+ v-model =" searchQuery"
151+ @submit = " handleSearchSubmit "
154152 @focus =" handleSearchFocus"
155153 @blur =" handleSearchBlur"
156154 />
0 commit comments