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>
);