import { ExtractPropTypes, PropType } from 'vue'; import { ComposerTranslation } from 'vue-i18n'; import { type OptionProps } from '@dao-style/core'; export type MultiRowEditorRow = Record; type ColumnId = string; type TypeValid = boolean | undefined; export type MultiRowEditorColumnValidatorReturn = { valid: TypeValid; message?: string; }; type BaseColumn = { id: ColumnId; label?: string; modelPath?: string; placeholder?: string; defaultValue?: MultiRowEditorRow[string]; unique?: boolean; required?: boolean; trim?: boolean; props?: object; colWidth?: string; tip?: string; validator?: (val?: MultiRowEditorRow[string], row?: MultiRowEditorRow, column?: BaseColumn, t?: ComposerTranslation) => MultiRowEditorColumnValidatorReturn | Promise; }; export type MultiRowEditorColumnValidator = NonNullable; export type MultiRowEditorColumn = (BaseColumn & { type?: 'input'; }) | (BaseColumn & { type?: 'select'; options?: Partial[]; }); export type MultiRowEditorValidatorReturn = { valid: boolean; detail: { valid: TypeValid; message?: string; }[]; }; export type MultiRowEditorValidator = ((data: MultiRowEditorRow[], columns: MultiRowEditorColumn[], limit: number, t?: ComposerTranslation) => MultiRowEditorValidatorReturn | Promise); type AddDisabled = boolean | undefined | MultiRowEditorValidator; export type MultiRowEditorUnremovableRow = (row: MultiRowEditorRow) => boolean; export type MultiRowEditorRemoveTip = string | ((row: MultiRowEditorRow, rowIndex: number) => string); export declare const getMultiRowEditorColumnValue: (targetColumn: MultiRowEditorColumn, rowData: MultiRowEditorRow) => any; export declare const multiRowEditorDefaultValidator: MultiRowEditorValidator; export declare const multiRowEditorDefaultColumnValidator: MultiRowEditorColumnValidator; export declare const multiRowEditorProps: { modelValue: { type: PropType; default: () => never[]; }; validator: { type: PropType; default: MultiRowEditorValidator; }; columns: { type: PropType; default: undefined; }; showLabel: { type: BooleanConstructor; default: boolean; }; addText: { type: StringConstructor; default: undefined; }; addDisabled: { type: PropType; default: undefined; }; limit: { type: NumberConstructor; default: number; }; min: { type: NumberConstructor; default: number; }; unremovableRow: { type: PropType; default: undefined; }; removeTip: { type: PropType; default: undefined; }; formWidth: { type: StringConstructor; default: undefined; }; editable: { type: BooleanConstructor; default: boolean; }; helper: { type: StringConstructor; default: undefined; }; sortable: { type: BooleanConstructor; default: boolean; }; numbered: { type: BooleanConstructor; default: boolean; }; }; export declare const multiRowEditorColumnProps: { modelValue: { type: PropType; default: {}; }; valid: { type: PropType; default: undefined; }; column: { type: PropType; default: {}; }; editable: { type: BooleanConstructor; default: boolean; }; }; export type MultiRowEditorRowInfo = MultiRowEditorColumnValidatorReturn; export type MultiRowEditorProps = ExtractPropTypes; export type MultiRowEditorColumnProps = ExtractPropTypes; export declare const multiRowEditorEmits: { 'update:modelValue': (rows: MultiRowEditorRow[]) => void; change: (rows: MultiRowEditorRow[]) => void; add: (row: MultiRowEditorRow, rows: MultiRowEditorRow[]) => void; exceed: (row: MultiRowEditorRow, rows: MultiRowEditorRow[]) => void; remove: (row: MultiRowEditorRow, rows: MultiRowEditorRow[]) => void; valid: (res: MultiRowEditorValidatorReturn) => void; }; export type MultiRowEditorEmits = typeof multiRowEditorEmits; export type MultiRowColumnSlot = { name: string; row: MultiRowEditorRow; rowIndex: number; column: MultiRowEditorColumn; info?: MultiRowEditorRowInfo; }; export interface MultiRowEditorSlotHandlers { handleValid: () => MultiRowEditorValidatorReturn; handleAdd: () => void; handleRemove: (index?: number) => void; } export {};