///
import { SvelteComponentTyped } from "svelte";
import { SearchProps } from "svelte-search/types/Search";
export interface TypeaheadProps extends SearchProps {
/**
* @default "typeahead-" + Math.random().toString(36)
*/
id?: string;
/**
* @default ""
*/
value?: string;
/**
* @default []
*/
data?: TItem[];
/**
* @default (item) => item
*/
extract?: (item: TItem) => any;
/**
* @default (item) => false
*/
disable?: (item: TItem) => boolean;
/**
* @default (item) => false
*/
filter?: (item: TItem) => boolean;
/**
* Set to `false` to prevent the first result from being selected
* @default true
*/
autoselect?: boolean;
/**
* Set to `keep` to keep the search field unchanged after select, set to `clear` to auto-clear search field
* @default "update"
*/
inputAfterSelect?: "update" | "clear" | "keep";
/**
* @default []
*/
results?: {
original: TItem;
index: number;
score: number;
string: string;
disabled?: boolean;
}[];
/**
* Set to `true` to re-focus the input after selecting a result
* @default false
*/
focusAfterSelect?: boolean;
/**
* Specify the maximum number of results to return
* @default Infinity
*/
limit?: number;
}
export default class Typeahead<
TItem = string | number | Record
> extends SvelteComponentTyped<
TypeaheadProps,
{
select: CustomEvent<{
searched: string;
selected: TItem;
selectedIndex: number;
original: TItem;
originalIndex: number;
}>;
type: CustomEvent;
clear: CustomEvent;
input: WindowEventMap["input"];
change: WindowEventMap["change"];
focus: WindowEventMap["focus"];
blur: WindowEventMap["blur"];
keydown: WindowEventMap["keydown"];
},
{
default: {
result: {
original: TItem;
index: number;
score: number;
string: string;
};
index: number;
value: string;
};
"no-results": {
value: string;
};
}
> {}