amotify
Version:
UI Component for React,NextJS,esbuild
88 lines (87 loc) • 3.12 kB
TypeScript
/// <reference types="react" />
import { StyleProps, ReactElement } from '../../@declares';
import { Records } from 'jmini';
import { InputTypes } from '.';
declare namespace Autocomplete {
type Input<T = Value> = InputTypes.CoreInput<T | T[]> & React.DOMAttributes<HTMLInputElement> & {
label?: ReactElement;
tone?: InputTypes.BoxTone;
tabIndex?: number;
id?: string;
disabled?: boolean;
min?: number;
max?: number;
multiSelect?: boolean;
value?: T | T[];
options: Option<T>[];
emptySelect?: boolean;
leftIndicator?: ReactElement | false;
rightIndicator?: ReactElement | false;
leftIcon?: ReactElement | false;
rightIcon?: ReactElement | false;
searchInputPlaceholder?: string;
onDynamicSearchOptions?: onDynamicSearchOptions<T>;
onDynamicSearchOptionsDelay?: number;
onSelectorRender?(p: onSelectorRenderProps<T>): React.JSX.Element;
onSelectedRender?(p: onSelectedRenderProps<T>): React.JSX.Element;
pickerStyles?: StyleProps.StyleProps;
pickerPosition?: 1 | 2 | 3 | 4;
};
type Value<T = any> = T extends infer V ? V : string | number | boolean | Records | void | null;
type Option<T = Value> = {
type?: 'selector';
id?: string;
label?: ReactElement;
selectedLabel?: ReactElement;
value: T;
searchValue?: string;
} | {
type: 'label';
id?: string;
label?: ReactElement;
selectedLabel?: ReactElement;
value?: T;
searchValue?: string;
};
type OptionsDict = {
[key: string]: Option;
};
type onDynamicSearchOptions<T = Value> = {
(k: string): Promise<Option<T>[]>;
};
type onSelectorRenderProps<T = Value> = {
option: Option<T>;
isSelected: boolean;
isFocused: boolean;
onAdd(): void;
onKeyDown(event: React.KeyboardEvent): void;
};
type onSelectedRenderProps<T = Value> = {
value: T;
option?: Records;
label: ReactElement;
onRemove(event: any): void;
};
type WrapperStates = {
rootStates: Input & {
value: Value[];
};
val_options: Option[];
set_options: React.Dispatch<React.SetStateAction<Option[]>>;
val_optionFocused: string;
set_optionFocused: React.Dispatch<React.SetStateAction<string>>;
val_optionsDict: OptionsDict;
set_optionsDict: React.Dispatch<React.SetStateAction<OptionsDict>>;
val_optionsModified: boolean;
set_optionsModified: React.Dispatch<React.SetStateAction<boolean>>;
val_keyword: string;
set_keyword: React.Dispatch<React.SetStateAction<string>>;
val_status: InputTypes.Status<Value[]>;
set_status: React.Dispatch<React.SetStateAction<InputTypes.Status>>;
};
type Component = {
<T = Value>(p: Input<Value<T>>): React.JSX.Element;
};
}
declare const Autocomplete: Autocomplete.Component;
export { Autocomplete, Autocomplete as default };