Skip to content

Commit e43b8cc

Browse files
authored
fix: missed input parts on quick search (#1394)
1 parent 0d3ea09 commit e43b8cc

File tree

4 files changed

+20
-20
lines changed

4 files changed

+20
-20
lines changed

app/components/Header/SearchBox.vue

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@ const showSearchBar = computed(() => {
2828
return route.name !== 'index'
2929
})
3030
31-
// Local input value (updates immediately as user types)
32-
const searchQuery = shallowRef(normalizeSearchParam(route.query.q))
31+
const searchQuery = useGlobalSearchQuery()
3332
3433
// Pages that have their own local filter using ?q
3534
const pagesWithLocalFilter = new Set(['~username', 'org'])
@@ -75,21 +74,6 @@ watch(searchQuery, value => {
7574
updateUrlQuery(value)
7675
})
7776
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-
9377
function handleSubmit() {
9478
if (pagesWithLocalFilter.has(route.name as string)) {
9579
router.push({
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+
}

app/pages/index.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { SHOWCASED_FRAMEWORKS } from '~/utils/frameworks'
44
55
const { searchProvider } = useSearchProvider()
66
7-
const searchQuery = shallowRef('')
7+
const searchQuery = useGlobalSearchQuery()
88
const isSearchFocused = shallowRef(false)
99
1010
async function search() {

app/pages/search.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ const updateUrlPage = debounce((page: number) => {
3838
})
3939
}, 500)
4040
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)
4343
4444
// Track if page just loaded (for hiding "Searching..." during view transition)
4545
const hasInteracted = shallowRef(false)

0 commit comments

Comments
 (0)