Skip to main content

Function: useEprintSearchState()

useEprintSearchState(options): object

Defined in: web/lib/hooks/use-eprint-search.ts:516

Combined hook for managing eprint search state.

Parameters​

options​

UseEprintSearchStateOptions = {}

Search state options

Returns​

object

Search state and handlers

authorFilter​

authorFilter: string

availableSources​

availableSources: object[]

facets​

facets: undefined | { sources: Record<string, number>; } = search.facets

handleClear()​

handleClear: () => void

Returns​

void

handleSelectSuggestion()​

handleSelectSuggestion: (suggestion) => void

Parameters​

suggestion​

AutocompleteSuggestion

Returns​

void

handleSubmit()​

handleSubmit: (e?) => void

Parameters​

e?​

FormEvent<Element>

Returns​

void

isAutocompleteFetching​

isAutocompleteFetching: boolean = autocomplete.isFetching

isAutocompleteLoading​

isAutocompleteLoading: boolean = autocomplete.isLoading

isSearchFetching​

isSearchFetching: boolean = search.isFetching

isSearchLoading​

isSearchLoading: boolean = search.isLoading

query​

query: string

refetchSearch()​

refetchSearch: (options?) => Promise<QueryObserverResult<SearchEprintsResponse, Error>> = search.refetch

Parameters​

options?​

RefetchOptions

Returns​

Promise<QueryObserverResult<SearchEprintsResponse, Error>>

searchError​

searchError: null | Error = search.error

searchResults​

searchResults: readonly ExternalEprint[] = search.eprints

selectedSources​

selectedSources: string[]

setAuthorFilter​

setAuthorFilter: Dispatch<SetStateAction<string>>

setQuery​

setQuery: Dispatch<SetStateAction<string>>

sourceErrors​

sourceErrors: undefined | readonly SearchSourceError[] = search.sourceErrors

submittedQuery​

submittedQuery: string

suggestions​

suggestions: readonly AutocompleteSuggestion[] = autocomplete.suggestions

toggleSource()​

toggleSource: (source) => void

Parameters​

source​

string

Returns​

void

Remarks​

Provides a complete search experience with:

  • Controlled input state
  • Debounced autocomplete suggestions
  • Full search on submit
  • Loading states for both autocomplete and search

Implements progressive disclosure pattern:

  • Start with autocomplete while typing
  • Execute full search on submit

Example​

const {
query,
setQuery,
suggestions,
searchResults,
handleSubmit,
isAutocompleteLoading,
isSearchLoading,
} = useEprintSearchState();

return (
<form onSubmit={handleSubmit}>
<SearchInput
value={query}
onChange={e => setQuery(e.target.value)}
suggestions={suggestions}
isLoading={isAutocompleteLoading}
/>
<SearchResults results={searchResults} isLoading={isSearchLoading} />
</form>
);