import { VNode } from 'vue';
import { HeaderRenderScope } from '../Table/types';
import { TableColumnCtx } from 'element-plus/es/components/table/src/table-column/defaults';
/** 自定义数据项 */
export type DiyDataType = Record<string, string | number | undefined | boolean>;
/** 列类型 */
export declare enum DIY_DATA_TYPE {
    /** 自动补全输入框 */
    AUTOCOMPLETE = "autocomplete",
    /** 格式化文本 */
    FORMAT = "format",
    /** 文本,初始化要传数据，配合isSameData使用 */
    TEXT = "text",
    /** 序号列 */
    INDEX = "index",
    /** 多选列 */
    SELECTION = "selection"
}
/** 列配置 */
export type DiyDataTableColumnItem = Partial<Omit<TableColumnCtx<DiyDataType>, "type" | "children" | "renderCell" | "renderHeader">> & {
    /** 字段名 */
    prop: string;
    /** 表头名称 */
    label?: string;
    /** 列key */
    key?: number | string;
    /** 是否是添加的列 */
    isAdd?: boolean;
    /** 宽度 */
    width?: number;
    /** 最小宽度 */
    minWidth?: number;
    /** 最大长度 */
    maxlength?: number;
    /** 头部最大长度 */
    headerMaxlength?: number;
    /** 输入框占位符 */
    placeholder?: string;
    /** 是否必填 */
    required?: boolean;
    /** required 为 true 时，必填的提示语，不传则使用的 label + "不能为空"， 非必填 **/
    requiredMessage?: string;
    /** 是否是可编辑表头 */
    isEditHeader?: boolean;
    /** 是否相同数据 */
    isSameData?: boolean;
    /** 列输入框类型 */
    type?: DIY_DATA_TYPE;
    /** 自动补全输入框 数据 */
    completeList?: string[];
    /** 格式化input值，type为FORMAT：格式化数据 */
    formatter?: (value: string | DiyDataType) => string;
    /** 处理格式化展示 */
    showFormatter?: (value: string) => string;
    /** input值解析 */
    parser?: (value: string) => string;
    /** 校验 */
    varidate?: (value: string | number | undefined, row: DiyDataType, index: number) => true | string;
    /** 固定列位置 */
    fixed?: "left" | "right";
    /** 对齐方式 */
    align?: "left" | "center" | "right";
    /** 列插槽 */
    slot?: string;
    /** 多选列：决定某一行是否可以被选择，仅对 type 为 SELECTION 的列生效 */
    selectable?: (row: DiyDataType, index: number) => boolean;
    /** 多选列：是否在数据更新后保留选择，仅对 type 为 SELECTION 的列生效 */
    reserveSelection?: boolean;
    /** show是否显示列，目前对序号列(prop:index)和多选列(prop:selection)生效 */
    isShow?: boolean;
    isNewlyColumn?: boolean;
    /** 输入框时，若限制了输入值的长度，是否显示剩余字数 */
    showWordLimit?: boolean;
    /** 自定义表头内容渲染（返回 render 函数） */
    headerRender?: (scope: HeaderRenderScope<DiyDataType>) => VNode;
};
/** 增行，增列操作列的配置项 */
export interface DiytableOperationType {
    isShow?: boolean;
    /** 宽度 */
    width?: number | string;
    /** 最小宽度 */
    minWidth?: number | string;
    customAddRow?: boolean;
    addRowText?: string;
    customAddColumn?: boolean;
    addColumnText?: string;
}
