import type { MaybePromise } from '../MaybePromise'; import { AutocompleteScopeApi, BaseItem } from './AutocompleteApi'; import { AutocompleteEnvironment } from './AutocompleteEnvironment'; import { AutocompleteNavigator } from './AutocompleteNavigator'; import { AutocompletePlugin } from './AutocompletePlugin'; import { Reshape } from './AutocompleteReshape'; import { AutocompleteSource, InternalAutocompleteSource } from './AutocompleteSource'; import { AutocompleteState } from './AutocompleteState'; export declare type AutocompleteEnterKeyHint = 'enter' | 'done' | 'go' | 'next' | 'previous' | 'search' | 'send'; export interface OnSubmitParams extends AutocompleteScopeApi { state: AutocompleteState; event: any; } export declare type OnResetParams = OnSubmitParams; export interface OnInputParams extends AutocompleteScopeApi { query: string; state: AutocompleteState; } export declare type GetSourcesParams = OnInputParams; export declare type GetSources = (params: GetSourcesParams) => MaybePromise | boolean | undefined>>; export declare type InternalGetSources = (params: GetSourcesParams) => Promise>>; interface OnStateChangeProps extends AutocompleteScopeApi { /** * The current Autocomplete state. */ state: AutocompleteState; /** * The previous Autocomplete state. */ prevState: AutocompleteState; } export interface AutocompleteOptions { /** * A flag to activate the debug mode. * * This is useful while developing because it keeps the panel open even when the blur event occurs. **Make sure to disable it in production.** * * See [**Debugging**](https://www.algolia.com/doc/ui-libraries/autocomplete/guides/debugging/) for more information. * * @default false * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-debug */ debug?: boolean; /** * An ID for the autocomplete to create accessible attributes. * * It is incremented by default when creating a new Autocomplete instance. * * @default "autocomplete-0" * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-id */ id?: string; /** * The function called when the internal state changes. * * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-onstatechange */ onStateChange?(props: OnStateChangeProps): void; /** * The action label or icon to present for the enter key on virtual keyboards. * * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-enterkeyhint */ enterKeyHint?: AutocompleteEnterKeyHint; /** * Whether to update the search input value in the middle of a * composition session. * * @default false * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-ignorecompositionevents */ ignoreCompositionEvents?: boolean; /** * The placeholder text to show in the search input when there's no query. * * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-placeholder */ placeholder?: string; /** * Whether to focus the search input or not when the page is loaded. * * @default false * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-autofocus */ autoFocus?: boolean; /** * The default item index to pre-select. * * We recommend using `0` when the autocomplete is used to open links, instead of triggering a search in an application. * * @default null * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-defaultactiveitemid */ defaultActiveItemId?: number | null; /** * Whether to open the panel on focus when there's no query. * * @default false * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-openonfocus */ openOnFocus?: boolean; /** * How many milliseconds must elapse before considering the autocomplete experience [stalled](https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/state/#param-status). * * @default 300 * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-stallthreshold */ stallThreshold?: number; /** * The initial state to apply when autocomplete is created. * * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-initialstate */ initialState?: Partial>; /** * The [sources](https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/) to get the suggestions from. * * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-getsources */ getSources?: GetSources; /** * The environment in which your application is running. * * This is useful if you're using autocomplete in a different context than `window`. * * @default window * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-environment */ environment?: AutocompleteEnvironment; /** * An implementation of Autocomplete's Navigator API to redirect the user when opening a link. * * Learn more on the [**Navigator API**](https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/keyboard-navigation/) documentation. * * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-navigator */ navigator?: Partial>; /** * The function called to determine whether the panel should open or not. * * By default, the panel opens when there are items in the state. * * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-shouldpanelopen */ shouldPanelOpen?(params: { state: AutocompleteState; }): boolean; /** * The function called when submitting the Autocomplete form. * * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-onsubmit */ onSubmit?(params: OnSubmitParams): void; /** * The function called when resetting the Autocomplete form. * * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-onreset */ onReset?(params: OnResetParams): void; /** * The plugins that encapsulate and distribute custom Autocomplete behaviors. * * See [**Plugins**](https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/plugins/) for more information. * * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-plugins */ plugins?: Array>; /** * The function called to reshape the sources after they're resolved. * * This is useful to transform sources before rendering them. You can group sources by attribute, remove duplicates, create shared limits between sources, etc. * * See [**Reshaping sources**](https://www.algolia.com/doc/ui-libraries/autocomplete/guides/reshaping-sources/) for more information. * * @link https://www.algolia.com/doc/ui-libraries/autocomplete/api-reference/autocomplete-js/autocomplete/#param-reshape */ reshape?: Reshape; } export interface InternalAutocompleteOptions extends AutocompleteOptions { debug: boolean; id: string; onStateChange(props: OnStateChangeProps): void; enterKeyHint: AutocompleteEnterKeyHint | undefined; ignoreCompositionEvents: boolean; placeholder: string; autoFocus: boolean; defaultActiveItemId: number | null; openOnFocus: boolean; stallThreshold: number; initialState: AutocompleteState; getSources: InternalGetSources; environment: AutocompleteEnvironment; navigator: AutocompleteNavigator; plugins: Array>; shouldPanelOpen(params: { state: AutocompleteState; }): boolean; onSubmit(params: OnSubmitParams): void; onReset(params: OnResetParams): void; reshape: Reshape; } export {};