///
import type { ViewProps } from 'react-native';
export declare type PickerToolbarPosition = 'top' | 'bottom';
export declare type PickerOption = {
text?: T;
value?: T;
disabled?: boolean;
children?: PickerOption[];
[key: string]: any;
};
export declare type State = {
values: T[];
options: PickerOption[];
indexs: number[];
columns: PickerOption[][];
};
export declare type PickerFieldNames = {
text?: string;
value?: string;
children?: string;
};
export interface PickerCommonProps extends Pick {
/** 对象数组,配置每一列显示的数据 */
columns: T[] | T[][];
/** 自定义 columns 结构中的字段 */
columnsFieldNames?: PickerFieldNames;
/** 顶部栏标题 */
title?: React.ReactNode;
/** 是否显示加载状态 */
loading?: boolean;
/** 是否只读状态 */
readonly?: boolean;
/** 确认按钮文字 */
cancelButtonText?: React.ReactNode;
/** 取消按钮文字 */
confirmButtonText?: React.ReactNode;
/** 是否显示顶部栏 */
showToolbar?: boolean;
/** 单列选择时,默认选中项的索引 */
defaultIndex?: number;
/** 选项高度,支持 px vw vh rem 单位,默认 px */
itemHeight?: number;
/** 可见的选项个数 */
visibleItemCount?: number;
/** 顶部栏位置,可选值为 bottom */
toolbarPosition?: PickerToolbarPosition;
/** 自定义整个顶部栏的内容 */
toolbar?: React.ReactNode;
/** 自定义选项上方内容 */
columnsTop?: React.ReactNode;
/** 自定义选项下方内容 */
columnsBottom?: React.ReactNode;
/** 自定义确认按钮内容 */
optionRender?: (option: T) => React.ReactNode;
}
export interface PickerSingleProps> extends PickerCommonProps {
value?: V;
/** 选项改变时触发 */
onChange?: (value: V, options: T, index: number) => void;
/** 点击完成按钮时触发 */
onConfirm?: (value: V, options: T) => void;
/** 点击取消按钮时触发 */
onCancel?: (value: V, options: T) => void;
}
export interface PickerMultipleProps> extends PickerCommonProps {
value?: V[];
/** 选项改变时触发 */
onChange?: (value: V[], options: T[], index: number) => void;
/** 点击完成按钮时触发 */
onConfirm?: (value: V[], options: T[]) => void;
/** 点击取消按钮时触发 */
onCancel?: (value: V[], options: T[]) => void;
}
export declare type PickerProps = PickerSingleProps | PickerMultipleProps;
export interface PickerColumnProps {
index: number;
textKey: string;
itemHeight: number;
wrapHeight: number;
readonly?: boolean;
options?: PickerOption[];
optionRender?: (option: PickerOption) => React.ReactNode;
onChange?: (index: number) => void;
}