amotify
Version:
UI Component for React,NextJS,esbuild
58 lines (57 loc) • 2.19 kB
TypeScript
/// <reference types="react" />
import { StyleTags, ReactElement } from '../../@declares';
import { KeyValueDict } from 'jmini';
import { InputTypes } from '.';
declare namespace Select {
type Input<T = Value> = InputTypes.CoreInput<T> & React.DOMAttributes<HTMLInputElement> & {
label?: ReactElement;
isLabelActive?: boolean;
placeholder?: string;
tone?: InputTypes.BoxTone;
tabIndex?: number;
id?: string;
disabled?: boolean;
value?: T;
options: Option<T>[];
leftIndicator?: ReactElement | false;
rightIndicator?: ReactElement | false;
leftIcon?: ReactElement | false;
rightIcon?: ReactElement | false;
emptySelect?: boolean;
SelectedCellStyles?: StyleTags.PropsNFreeCSS;
SelectorCellStyles?: StyleTags.PropsNFreeCSS;
SelectorMode?: 'original' | 'legacy';
SelectorStyles?: StyleTags.PropsNFreeCSS;
SelectorPosition?: 1 | 2 | 3 | 4;
};
type Value<T = any> = T extends infer V ? V : string | number | boolean | KeyValueDict | void | null;
type Option<T = Value> = {
type?: 'selector';
value: T;
label: ReactElement;
} | {
type: 'label';
value?: T;
label: ReactElement;
};
type WrapperStates = {
rootStates: Input & {
value: Value[];
};
val_preventOpenSelectorOnFocus: boolean;
set_preventOpenSelectorOnFocus: React.Dispatch<React.SetStateAction<boolean>>;
val_status: InputTypes.Status.Plain<Value>;
set_status: React.Dispatch<React.SetStateAction<InputTypes.Status.Plain>>;
val_validate: InputTypes.Validation.Result;
set_validate: React.Dispatch<React.SetStateAction<InputTypes.Validation.Result>>;
val_selectorOpen: boolean;
set_selectorOpen: React.Dispatch<React.SetStateAction<boolean>>;
val_optionFocused: Value;
set_optionFocused: React.Dispatch<React.SetStateAction<Value>>;
};
type Component = {
<T = Value>(p: Input<Value<T>>): JSX.Element;
};
}
declare const Select: Select.Component;
export { Select, Select as default };