33</template >
44
55<script setup lang="ts">
6- import { DocSearch } from ' @vuepress/plugin-docsearch/client' ;
6+ import { DocSearch , DocSearchOptions } from ' @vuepress/plugin-docsearch/client' ;
77import { useDebounceFn , useEventListener } from ' @vueuse/core' ;
8- import { onMounted , onUnmounted , ref } from ' vue' ;
8+ import { onMounted , Ref , ref } from ' vue' ;
99import { useRouter , useRoute } from ' vue-router' ;
1010
1111const SEARCH_KEY = ' search' ;
12- const docsearchOptions = ref ({});
12+ const docsearchOptions: Ref < DocSearchOptions > = ref ({});
1313const router = useRouter ();
1414const route = useRoute ();
1515
@@ -18,20 +18,20 @@ onMounted(() => {
1818 const query = new URL (window .location .href ).searchParams .get (SEARCH_KEY );
1919 if (query ) {
2020 docsearchOptions .value .initialQuery = query ;
21- document .querySelector (' .DocSearch-Button' ).click ();
21+ ( document .querySelector (' .DocSearch-Button' ) as HTMLButtonElement ).click ();
2222 }
2323});
2424
2525// There's some debounce builtin to docsearch, this mimics that and should
2626// help prevent browser history from getting filled with partial queries.
2727const inputHandler = useDebounceFn (handleSearchInput , 500 );
28- useEventListener (' input' , inputHandler );
28+ useEventListener (' input' , ( event ) => inputHandler ( event as InputEvent ) );
2929
3030// Update the URL bar when the search input changes.
31- function handleSearchInput(event ) {
32- const searchQuery = event .target . value ;
33-
34- if (event . target .id !== ' docsearch-input' || ! searchQuery ) {
31+ function handleSearchInput(event : InputEvent ) {
32+ const target = event .target as HTMLInputElement | undefined ;
33+ const searchQuery = target ?. value ;
34+ if (target ? .id !== ' docsearch-input' || ! searchQuery ) {
3535 return ;
3636 }
3737
0 commit comments