@bothub-chat/ui
Version:
Bothub UI Components
41 lines (40 loc) • 1.92 kB
TypeScript
import { SelectFieldChangeEventHandler, SelectFieldDataItem, SelectFieldMultiChangeEventHandler, SelectFieldMultiValueChangeEventHandler, SelectFieldPlacement, SelectFieldValueChangeEventHandler } from './types';
import { ValueType } from '.';
export interface UseSelectFieldDefaultProps {
multiple?: false;
value?: SelectFieldDataItem | null;
onChange?: SelectFieldChangeEventHandler;
onValueChange?: SelectFieldValueChangeEventHandler;
}
export interface UseSelectFieldMultiProps {
multiple: true;
value?: SelectFieldDataItem[];
onChange?: SelectFieldMultiChangeEventHandler;
onValueChange?: SelectFieldMultiValueChangeEventHandler;
}
export type UseSelectFieldUnionProps = UseSelectFieldDefaultProps | UseSelectFieldMultiProps;
export type UseSelectFieldProps = {
disabled?: boolean;
placement?: SelectFieldPlacement;
contentHeight?: number | string;
onClose?: () => void;
onSelectClick?: () => void;
} & UseSelectFieldUnionProps;
export type UseSelectFieldReturnType = ReturnType<typeof useSelectField>;
export declare const useSelectField: <TriggerType extends HTMLElement = HTMLDivElement>({ value: initialValue, multiple, disabled, placement: initialPlacement, contentHeight, onClose, onSelectClick, onChange, onValueChange, }: UseSelectFieldProps) => {
x: number;
y: number;
width: number;
isOpen: boolean;
triggerRef: import("react").RefObject<TriggerType>;
selectModalRef: import("react").RefObject<HTMLDivElement>;
placement: "top-left" | "top-right" | "bottom-left" | "bottom-center";
isKeyboardOpen: import("react").MutableRefObject<boolean>;
value: ValueType;
disabled: boolean;
multiple: boolean;
contentHeight: string | number | undefined;
handleInputClick: (native: boolean, event: React.MouseEvent<HTMLElement>) => void;
handleClose: () => void;
setValue: (value: ValueType) => void;
};