/// <reference types="react" />
import { IPropertyComponent } from '../ztranslate';
import { IBaseValuePro } from './abase';
import { IOption, IOptionsPro } from '../../../3config/option';
/**
 * 下拉选择的定义
 */
interface ISelectPro extends IOptionsPro, IBaseValuePro {
    /** 外观样式 - rsuite InputPicker.appearance: 'default' | 'search' */
    appearance?: string;
    /** 是否为块级元素 */
    block?: boolean;
    /** 组件CSS类前缀 */
    classPrefix?: string;
    /** 是否显示清除按钮 - rsuite InputPicker.cleanable */
    cleanable?: boolean;
    /** 弹出层容器 - rsuite InputPicker.container */
    container?: string;
    /** 是否选中 */
    checked?: boolean;
    /** 选择项数据源 - rsuite InputPicker.data */
    data?: any;
    /** 默认选中的值 - rsuite InputPicker.defaultValue */
    defaultValue?: any;
    /** 禁用的选项值列表 - rsuite InputPicker.disabledItemValues */
    disabledItemValues?: any;
    /** 分组字段名 - rsuite InputPicker.groupBy */
    groupBy?: any;
    /** 选项标签字段名 - rsuite InputPicker.labelKey */
    labelKey?: any;
    /** 列表属性 - rsuite InputPicker.listProps */
    listProps?: any;
    /** 下拉菜单最大高度 - rsuite InputPicker.maxHeight */
    maxHeight?: number;
    /** 下拉菜单样式类名 - rsuite InputPicker.menuClassName */
    menuClassName?: string;
    /** 下拉菜单样式 - rsuite InputPicker.menuStyle */
    menuStyle?: string;
    /** 是否防止溢出 - rsuite InputPicker.preventOverflow */
    preventOverflow?: boolean;
    /** 是否可搜索 - rsuite InputPicker.searchable */
    searchable?: boolean;
    /** 组件尺寸 - rsuite InputPicker.size: 'xs' | 'sm' | 'md' | 'lg' */
    size?: string;
    /** 选中的值 - rsuite InputPicker.value */
    value?: any;
    /** 选项值字段名 - rsuite InputPicker.valueKey */
    valueKey?: string;
    /** 是否启用虚拟化 - rsuite InputPicker.virtualized */
    virtualized?: boolean;
    /** 是否固定 - rsuite InputPicker.sticky */
    sticky?: boolean;
    /** 是否支持多选 - rsuite TagPicker(多选时使用) */
    mutilselect?: boolean | number | string;
    /** 是否可创建新选项 - rsuite InputPicker.creatable */
    creatable?: boolean | number;
    /** 值改变事件 - rsuite InputPicker.onChange */
    onChange?: (value: any, event: any) => void;
    /** 清除事件 - rsuite InputPicker.onClean */
    onClean?: (value: any, event: any) => void;
    /** 关闭事件 - rsuite InputPicker.onClose */
    onClose?: () => void;
    /** 进入动画开始事件 - rsuite InputPicker.onEnter */
    onEnter?: () => void;
    /** 进入动画完成事件 - rsuite InputPicker.onEntered */
    onEntered?: () => void;
    /** 进入动画中事件 - rsuite InputPicker.onEntering */
    onEntering?: () => void;
    /** 退出动画开始事件 - rsuite InputPicker.onExit */
    onExit?: () => void;
    /** 退出动画完成事件 - rsuite InputPicker.onExited */
    onExited?: () => void;
    /** 退出动画中事件 - rsuite InputPicker.onExiting */
    onExiting?: () => void;
    /** 分组标题点击事件 - rsuite InputPicker.onGroupTitleClick */
    onGroupTitleClick?: (event: Event) => void;
    /** 打开事件 - rsuite InputPicker.onOpen */
    onOpen?: () => void;
    /** 搜索事件 - rsuite InputPicker.onSearch */
    onSearch?: (searchKeyword: string, event: Event) => void;
    /** 选择事件 - rsuite InputPicker.onSelect */
    onSelect?: (value: string, item: IOption, event: Event) => void;
    /** 渲染底部扩展内容 - rsuite InputPicker.renderExtraFooter */
    renderExtraFooter?: () => React.ReactNode;
    /** 自定义渲染菜单 - rsuite InputPicker.renderMenu */
    renderMenu?: () => React.ReactNode;
    /** 自定义渲染分组 - rsuite InputPicker.renderMenuGroup */
    renderMenuGroup?: (groupTitle: React.ReactNode, item: IOption) => React.ReactNode;
    /** 自定义渲染选项 - rsuite InputPicker.renderMenuItem */
    renderMenuItem?: (label: React.ReactNode, item: IOption) => React.ReactNode;
    /** 自定义渲染已选值 - rsuite InputPicker.renderValue */
    renderValue?: (value: string, item: any, selected: React.ReactNode) => React.ReactNode;
    /** 自定义搜索逻辑 - rsuite InputPicker.searchBy */
    searchBy?: (keyword: string, label: React.ReactNode, item: IOption) => boolean;
    /** 自定义排序逻辑 - rsuite InputPicker.sort */
    sort?: (isGroup: boolean) => (a: any, b: any) => number;
    /** 自定义触发元素类型 - rsuite InputPicker.toggleComponentClass */
    toggleComponentClass?: React.ElementType;
    /** 选择组件类型 - rsuite InputPicker/TagPicker */
    selecttype?: IPropertyComponent;
    /** 弹出位置 - rsuite InputPicker.placement: 'bottomStart' | 'bottomEnd' | 'topStart' | 'topEnd' 等 */
    placement?: string;
    /** 获取所有选中值 */
    getValues?: any;
}
export type { ISelectPro };
