interface UploadExcelValidation { idx: number; message: string; } export interface UploadExcelOption { fileName?: string; columns?: ExcelColumn[]; limit?: number; key?: string; sheets?: { name: string; items: any[] | (() => Promise); fields: string[]; }[]; onAccept?: (items?: T[], successItems?: T[], errorItems?: T[], warningItems?: T[], file?: File) => void | Promise; mappingItems?: (items: T[]) => T[]; errorValidation?: (items?: T[]) => UploadExcelValidation[] | Promise; warningValidation?: (items?: T[]) => UploadExcelValidation[] | Promise; } export declare type ExcelColumn = ExcelColumnString | ExcelColumnNumber | ExcelColumnBool | ExcelColumnDate | ExcelColumnValues; export interface ExcelBaseColumn { field: string; title: string; required?: boolean; width?: string; description?: string; hidden?: boolean; mappingDisplay?: (item?: T, value?: any) => string | Promise; errorValidation?: (item?: T, value?: any) => string | Promise; warningValidation?: (item?: T, value?: any) => string | Promise; } export interface ExcelColumnString extends ExcelBaseColumn { type: 'string'; defaultValue?: string; pattern?: string; minLength?: number; maxLength?: number; } export interface ExcelColumnNumber extends ExcelBaseColumn { type: 'number'; defaultValue?: number; minValue?: number; maxValue?: number; } export interface ExcelColumnBool extends ExcelBaseColumn { type: 'bool'; defaultValue?: boolean; } export interface ExcelColumnDate extends ExcelBaseColumn { type: 'date' | 'time' | 'datetime'; format?: string; defaultValue?: Date; minDate?: Date; maxDate?: Date; } export interface ExcelColumnValues extends ExcelBaseColumn { type: 'values' | 'radio'; defaultValue?: string | number; values: (string | number)[]; checkValueInArray?: boolean; } export interface Validation { error?: string; warning?: string; data?: { [column: string]: { error?: string; warning?: string; }; }; } export interface ConfigResult { formatDate?: string; columns: ExcelColumn[]; } export {};