Skip to main content

Function: usePreprintSearchState()

usePreprintSearchState(options): object

Defined in: web/lib/hooks/use-preprint-search.ts:509

Combined hook for managing preprint search state.

Parameters

options

UsePreprintSearchStateOptions = {}

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<SearchPreprintsResponse, Error>> = search.refetch

Parameters

options?

RefetchOptions

Returns

Promise<QueryObserverResult<SearchPreprintsResponse, Error>>

searchError

searchError: null | Error = search.error

searchResults

searchResults: readonly ExternalPreprint[] = search.preprints

selectedSources

selectedSources: string[]

setAuthorFilter

setAuthorFilter: Dispatch<SetStateAction<string>>

setQuery

setQuery: Dispatch<SetStateAction<string>>

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,
} = usePreprintSearchState();

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