22import { ref , watch } from ' vue'
33import { createClient } from ' @supabase/supabase-js'
44
5- const searchQuery = ref (' ' )
6- const emit = defineEmits ([' search' ])
5+ const props = defineProps ({
6+ modelValue: {
7+ type: String ,
8+ default: ' '
9+ }
10+ })
11+
12+ const searchQuery = ref (props .modelValue )
13+ const emit = defineEmits ([' search' , ' update:modelValue' ])
714
815// Initialize Supabase client
916const supabase = createClient (
@@ -25,17 +32,34 @@ function debounce(func, wait) {
2532 }
2633}
2734
28- // Watch for changes in search query with debounce
29- watch (searchQuery, debounce (async (newQuery ) => {
30- console .log (' Search query changed:' , newQuery)
35+ // Watch for external value changes
36+ watch (() => props .modelValue , (newValue ) => {
37+ if (newValue !== searchQuery .value ) {
38+ searchQuery .value = newValue
39+ }
40+ })
41+
42+ // Watch for internal value changes
43+ watch (searchQuery, (newValue ) => {
44+ emit (' update:modelValue' , newValue)
45+ })
46+
47+ // Watch for search query changes with debounce
48+ const debouncedSearch = debounce (async (query ) => {
49+ console .log (' Search query changed:' , query)
3150
32- if (newQuery .length >= 3 ) {
51+ if (query .length >= 3 ) {
3352 await handleSearch ()
53+ } else if (query .length === 0 ) {
54+ // Don't clear results if the query was cleared externally
55+ console .log (' Query cleared' )
3456 } else {
3557 console .log (' Query too short, clearing results' )
3658 emit (' search' , { matches: [], divisions: [], searchTerm: ' ' })
3759 }
38- }, 300 ))
60+ }, 300 )
61+
62+ watch (searchQuery, debouncedSearch)
3963
4064async function handleSearch () {
4165 if (searchQuery .value .length < 3 ) return
0 commit comments