import type { BaseFieldPreviewProps, BasicComponentProps } from "../../../types";
import { ReactNode } from 'react';
import type { CnCascaderSelectItem } from './cn-cascader-select-item';
import type { ExtraCallbackProps } from './extra-callback-props';
import type { CnCascaderSelectRequestConfig } from './cn-cascader-select-requestConfig';
export interface CnCascaderSelectProps extends BasicComponentProps, BaseFieldPreviewProps {
    /**
     * 数据源
     */
    dataSource?: CnCascaderSelectItem[];
    /**
     * 展示模式，级联和树形
     */
    mode?: 'cascade' | 'tree';
    /**
     * 请求配置
     */
    requestConfig?: CnCascaderSelectRequestConfig;
    /**
     * 远程懒加载，仅在配置requestConfig后生效，默认请求参数为"value"，可通过修改requestConfig.remoteLazyLoadKey来更改
     */
    enableRemoteLazyLoad?: boolean;
    /**
     * 是否禁用
     */
    disabled?: boolean;
    /**
     * 是否只读
     */
    readOnly?: boolean;
    /**
     * 是否可清空
     */
    hasClear?: boolean;
    /**
     * onChange事件是否只透出最后一个选项的值
     */
    useSimpleValue?: boolean;
    /**
     * 异步加载数据的回调
     */
    loadData?: (item?: any) => Promise<any>;
    /**
     * 默认值
     */
    defaultValue?: any;
    /**
     * 受控值
     */
    value?: any;
    /**
     * 是否多选 `v0.12.6+`
     * @since 0.12.6
     */
    multiple?: boolean;
    /**
     * 占位文案
     */
    placeholder?: string;
    /**
     * 选中项展示的分隔符
     */
    separator?: string;
    /**
     * 选择提示文案
     */
    rootTipText?: string | ReactNode;
    /**
     * 尺寸
     */
    size?: 'small' | 'medium' | 'large';
    /**
     * 抽屉容器类名
     */
    drawerClassName?: string;
    /**
     * 是否可搜索
     */
    showSearch?: boolean;
    /**
     * 是否本地搜索
     */
    filterLocal?: boolean;
    /**
     * 点击选项事件
     */
    onSelect?: (val?: any, item?: any) => void;
    /**
     * 点击清空事件
     */
    onClear?: () => void;
    /**
     * 点击取消事件
     */
    onCancel?: (reason?: string) => void;
    /**
     * 数据变更的回调
     */
    onChange?: (value?: any, data?: CnCascaderSelectItem | CnCascaderSelectItem[], extra?: ExtraCallbackProps) => void;
    /**
     * 用户搜索时回调
     */
    onSearch?: (value?: string) => void;
    /**
     * 抽屉可见变化时的回调，返回可见状态和触发可见变化的来源
     */
    onVisibleChange?: (visible: boolean, reason: string | undefined) => void;
    /**
     * 自定义选中项的渲染事件
     */
    renderContent?: (value?: CnCascaderSelectItem[], separator?: string) => ReactNode | string;
    /**
     * 内部变量，是否在 CnFilter quick 模式下使用
     * @ignore 内部使用
     */
    insideFilter?: boolean;
    /**
     * 用于标定是否存在于 Form 内(解决样式边距问题)
     * @ignore 内部使用
     */
    insideForm?: boolean;
    /**
     * 是否选中即发生改变, 该属性仅在单选模式下有效
     * @since 0.12.6
     */
    changeOnSelect?: boolean;
}
