@1771technologies/lytenyte-pro
Version:
Blazingly fast headless React data grid with 100s of features.
45 lines (44 loc) • 1.61 kB
TypeScript
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;
};