diff --git a/src/lib/searchOnlyListOmnibox.ts b/src/lib/searchOnlyListOmnibox.ts index 23db977e..ef35f92b 100644 --- a/src/lib/searchOnlyListOmnibox.ts +++ b/src/lib/searchOnlyListOmnibox.ts @@ -2,7 +2,11 @@ * Degenerate omnibox for lists that only expose free-text search (B128: * organizações). Pure / client-safe. */ -import { type CampaignListOmniboxChip } from '@/lib/campaignListOmnibox' +import { + filterOmniboxSuggestionSeeds, + type CampaignListOmniboxChip, + type CampaignListOmniboxSuggestion, +} from '@/lib/campaignListOmnibox' export type SearchOnlyListState = { q?: string @@ -19,6 +23,9 @@ export const buildSearchOnlyOmniboxChips = ( state: SearchOnlyListState, ): CampaignListOmniboxChip[] => (state.q ? [{ id: 'q', label: chipLabel('Busca', state.q) }] : []) +export const buildSearchOnlyOmniboxSuggestions = (query: string): CampaignListOmniboxSuggestion[] => + filterOmniboxSuggestionSeeds([], query) + export const applySearchOnlyOmniboxSuggestion = ({ state, suggestionId, @@ -34,3 +41,28 @@ export const applySearchOnlyOmniboxSuggestion = ( } return { kind: 'url', state } } + +export const removeSearchOnlyOmniboxChip = ({ + state, + chipId, + withPageReset, +}: { + state: T + chipId: string + withPageReset: (next: T) => T +}): SearchOnlyOmniboxAction => { + if (chipId === 'q') { + return { kind: 'url', state: withPageReset({ ...state, q: undefined }) } + } + return { kind: 'url', state } +} + +export const clearSearchOnlyOmnibox = ({ + cleared, +}: { + state: T + cleared: T +}): SearchOnlyOmniboxAction => ({ + kind: 'clear', + state: cleared, +})