UNPKG

@1771technologies/lytenyte-pro

Version:

Blazingly fast headless React data grid with 100s of features.

45 lines (44 loc) 1.61 kB
export type BaseOption = { readonly id: string; readonly selectable?: boolean; }; export type BasicSelect<T extends BaseOption> = { readonly kind: "basic"; readonly value: T | null; readonly onOptionChange: (change: T | null) => void; readonly options: T[]; }; export type MultiSelect<T extends BaseOption> = { readonly kind: "multi"; readonly value: T[]; readonly onOptionChange: (change: T[]) => void; readonly options: T[]; }; export type ComboSelect<T extends BaseOption> = { readonly kind: "combo"; readonly value: T | null; readonly onOptionChange: (change: T | null) => void; readonly query?: string; readonly onQueryChange?: (change: string) => void; readonly searchDebounceMs?: number; readonly clearOnSelect?: boolean; readonly clearOnQuery?: boolean; readonly options: (query: string | null) => Promise<T[]> | T[]; }; export type MultiComboSelect<T extends BaseOption> = { readonly kind: "multi-combo"; readonly value: T[]; readonly onOptionChange: (change: T[]) => void; readonly query?: string; readonly onQueryChange?: (change: string) => void; readonly searchDebounceMs?: number; readonly clearOnSelect?: boolean; readonly clearOnQuery?: boolean; readonly options: (query: string | null) => Promise<T[]> | T[]; }; export type SmartSelectKinds<T extends BaseOption> = BasicSelect<T> | MultiSelect<T> | ComboSelect<T> | MultiComboSelect<T>; export type OptionRenderProps<T extends BaseOption> = { readonly option: T; readonly active: boolean; readonly selected: boolean; };