import { AutoCompleteProps } from 'antd/lib/auto-complete';
/**
 * 按钮：按钮于字段的区别在于结构中有无 `field`
*/
export interface Btn {
    /**
     * 字段宽度
    */
    width: number;
    /**
     * 按钮上的名称
    */
    label: string;
    /**
     * 按钮类型，参考 Button Type
    */
    type?: 'default' | 'primary' | 'ghost' | 'dashed' | 'danger';
    /**
     * 操作按钮上的图标
    */
    icon?: string;
    /**
     * 上传
     * 当为 string 时， upload 为上传地址
     * 当为 true 时,  upload 的上传地址为 默认上传地址 ：/api-fileup/fileup/uploadFile
    */
    upload?: string | boolean;
    /***
     * 当 upload 时，接受的类型
     *  */
    accept?: string;
    /**
     * 是否显示，默认为true，用于条件判断
    */
    show?: boolean;
    /**
     * 点击操作
    */
    onClick: Function;
}
/**
 * 查询字段 ：按钮于字段的区别在于结构中有无 `field`
*/
export interface Field {
    /**
     * 字段宽度
    */
    width: number;
    /**
     * 字段类型
    */
    type?: 'checkbox' | 'radio' | 'select' | 'text' | 'number' | 'timerange' | 'daterange' | 'multiselect' | 'treeselect' | 'month' | 'autocomplete';
    /**
     * 字段名称
    */
    field: string;
    /**
     * 字段Label
    */
    label: string;
    /**
     * 字段选项（为 checkbox/radio/select）等类型时，必须传入.
     * name/value 对的数组
    */
    options?: {
        name: string;
        value: string | number;
    }[];
    /**
     * 是否显示，用于条件判断
    */
    show?: boolean;
    /**
     * 字字段的额外属性,参考各输入组件的文档。
     * 2. 当 type 为 autocomplete 时, config 为  {fetch:stirng,'queryapi',field:string='name', name?:string = 'name',value:stringg = 'id'}
    */
    conf?: any;
}
export interface QueryPanelOpts {
    /**
     * 元素列表，使用一个二维数组的 元素集合，一行代表一行，元素可以为 Field 或者 Btn
     * Field 与 Btn 的区别：主要是 是否包含 field 字段
    */
    rows: (Field | Btn)[][];
    /**
     * 默认值
    */
    default?: any;
    /**
     * 如果设置了onChange事件，则不需要手动设置 button 里面的 onClick 去触发，任何元素改变后，都会发起事件
    */
    onchange?: Function;
}
export interface AutoCompleteOpts extends AutoCompleteProps {
    /**
     * 获取数据API
    */
    fetch: string;
    /**
     *  每页获取大小
     */
    batchSize: number;
    /**
     * API匹配字段，优先 field > name > "name"
    */
    field?: string;
    /**
     * 下拉显示名称，优先 field > name > "name"
    */
    nameField?: string;
    /**
     * 选中时的值，默认id
    */
    valueField?: string;
}
