[READ-ONLY] a fast, modern browser for the npm registry

fix: missed input parts on quick search (#1394)

authored by

Alex Savelyev and committed by
GitHub
e43b8cc3 0d3ea09a

+20 -20
+1 -17
app/components/Header/SearchBox.vue
··· 28 28 return route.name !== 'index' 29 29 }) 30 30 31 - // Local input value (updates immediately as user types) 32 - const searchQuery = shallowRef(normalizeSearchParam(route.query.q)) 31 + const searchQuery = useGlobalSearchQuery() 33 32 34 33 // Pages that have their own local filter using ?q 35 34 const pagesWithLocalFilter = new Set(['~username', 'org']) ··· 74 73 watch(searchQuery, value => { 75 74 updateUrlQuery(value) 76 75 }) 77 - 78 - // Sync input with URL when navigating (e.g., back button) 79 - watch( 80 - () => route.query.q, 81 - urlQuery => { 82 - // Don't sync from pages that use ?q for local filtering 83 - if (pagesWithLocalFilter.has(route.name as string)) { 84 - return 85 - } 86 - const value = normalizeSearchParam(urlQuery) 87 - if (searchQuery.value !== value) { 88 - searchQuery.value = value 89 - } 90 - }, 91 - ) 92 76 93 77 function handleSubmit() { 94 78 if (pagesWithLocalFilter.has(route.name as string)) {
+16
app/composables/useGlobalSearchQuery.ts
··· 1 + import { normalizeSearchParam } from '#shared/utils/url' 2 + 3 + export function useGlobalSearchQuery() { 4 + const route = useRoute() 5 + const searchQuery = useState<string>('search-query', () => normalizeSearchParam(route.query.q)) 6 + 7 + // clean search input when navigating away from search page 8 + watch( 9 + () => route.query.q, 10 + urlQuery => { 11 + const value = normalizeSearchParam(urlQuery) 12 + if (!value) searchQuery.value = '' 13 + }, 14 + ) 15 + return searchQuery 16 + }
+1 -1
app/pages/index.vue
··· 4 4 5 5 const { searchProvider } = useSearchProvider() 6 6 7 - const searchQuery = shallowRef('') 7 + const searchQuery = useGlobalSearchQuery() 8 8 const isSearchFocused = shallowRef(false) 9 9 10 10 async function search() {
+2 -2
app/pages/search.vue
··· 38 38 }) 39 39 }, 500) 40 40 41 - // The actual search query (from URL, used for API calls) 42 - const query = computed(() => normalizeSearchParam(route.query.q)) 41 + const searchQuery = useGlobalSearchQuery() 42 + const query = computed(() => searchQuery.value) 43 43 44 44 // Track if page just loaded (for hiding "Searching..." during view transition) 45 45 const hasInteracted = shallowRef(false)