import type { FormInstance, FormProps } from 'ant-design-vue'; import type { NamePath } from 'ant-design-vue/lib/form/interface'; import type { GetRowKey } from 'ant-design-vue/lib/table/interface'; import type { FunctionalComponent, Ref } from 'vue'; import type { AnyObject, Key, VueNode } from '..'; export type RowEditableType = 'single' | 'multiple'; export type RecordKey = Key | Key[]; export declare function recordKeyToString(rowKey: RecordKey): Key; export interface AddLineOptions { position?: 'top' | 'bottom'; recordKey?: RecordKey; newRecordType?: 'dataSource' | 'cache'; parentKey?: RecordKey; } export interface NewLineConfig { defaultValue?: T; options: AddLineOptions; } export type ActionRenderFunction = (row: T, config: ActionRenderConfig>, defaultDoms: { save: VueNode; delete: VueNode; cancel: VueNode; }) => VueNode[]; export interface RowEditableConfig { formProps?: Omit; onInit?: (values: DataType, form: FormInstance) => void; }, 'onFinish'>; form?: FormInstance; type?: RowEditableType; editableKeys?: Key[]; onChange?: (editableKeys: Key[], editableRows: DataType[] | DataType) => void; onValuesChange?: (record: DataType, dataSource: DataType[]) => void; actionRender?: ActionRenderFunction; onSave?: (key: RecordKey, record: DataType & { index?: number; }, originRow: DataType & { index?: number; }, newLineConfig?: NewLineConfig) => Promise; onCancel?: (key: RecordKey, record: DataType & { index?: number; }, originRow: DataType & { index?: number; }, newLineConfig?: NewLineConfig) => Promise; onDelete?: (key: RecordKey, row: DataType & { index?: number; }) => Promise; deletePopconfirmMessage?: string; onlyOneLineEditorAlertMessage?: false | string; onlyAddOneLineAlertMessage?: false | string; tableName?: NamePath; saveText?: string; cancelText?: string; deleteText?: string; getRealIndex?: (record: DataType) => number; } export interface ActionTypeText { deleteText?: VueNode; cancelText?: VueNode; saveText?: VueNode; editorType?: 'Array' | 'Map'; addEditRecord?: (row: T, options?: AddLineOptions) => boolean; } export type ActionRenderConfig> = { editableKeys?: RowEditableConfig['editableKeys']; recordKey: RecordKey; preEditRowRef: Ref; index?: number; cancelEditable: (key: RecordKey) => void; onSave: RowEditableConfig['onSave']; onCancel: RowEditableConfig['onCancel']; onDelete?: RowEditableConfig['onDelete']; deletePopconfirmMessage: RowEditableConfig['deletePopconfirmMessage']; setEditableRowKeys: (value: Key[]) => void; newLineConfig?: LineConfig; tableName?: NamePath; children?: VueNode; } & ActionTypeText; export declare function editableRowByKey(keyProps: { data: RecordType[]; childrenColumnName: string; getRowKey: GetRowKey; key: RecordKey; row: RecordType; }, action: 'update' | 'top' | 'delete'): RecordType[]; export interface SaveEditableActionRef { save: () => ReturnType['onSave']>> | Promise; } export declare const SaveEditableAction: import("vue").DefineSetupFnComponent; export interface SaveEditableActionProps extends ActionRenderConfig { row: any; children?: any; } export declare const DeleteEditableAction: FunctionalComponent & { row: any; }>; export declare function defaultActionRender(row: T, config: ActionRenderConfig>): { save: import("vue/jsx-runtime").JSX.Element; saveRef: Ref | undefined, SaveEditableActionRef | undefined>; delete: import("vue/jsx-runtime").JSX.Element | undefined; cancel: import("vue/jsx-runtime").JSX.Element; }; export declare function useEditableArray(props: RowEditableConfig & { getRowKey: GetRowKey; dataSource: RecordType[]; onValuesChange?: (record: RecordType, dataSource: RecordType[]) => void; childrenColumnName: string | undefined; setDataSource: (dataSource: RecordType[]) => void; }): { editableKeys: import("vue").ComputedRef; setEditableRowKeys: (val: Key[] | undefined) => void; isEditable: (row: RecordType & { index: number; }) => { recordKey: string; isEditable: boolean | undefined; preIsEditable: boolean; }; actionRender: (row: RecordType & { index: number; }) => void | VueNode[]; startEditable: (recordKey: Key, record?: RecordType) => boolean; cancelEditable: (recordKey: RecordKey, needReTry?: boolean) => Promise; addEditRecord: (row: RecordType, options?: AddLineOptions) => boolean; saveEditable: (recordKey: RecordKey, needReTry?: boolean) => Promise; newLineRecord: Ref<{ defaultValue?: import("vue").UnwrapRef | undefined; options: { position?: "top" | "bottom" | undefined; recordKey?: Key | Key[] | undefined; newRecordType?: "dataSource" | "cache" | undefined; parentKey?: Key | Key[] | undefined; }; } | undefined, NewLineConfig | { defaultValue?: import("vue").UnwrapRef | undefined; options: { position?: "top" | "bottom" | undefined; recordKey?: Key | Key[] | undefined; newRecordType?: "dataSource" | "cache" | undefined; parentKey?: Key | Key[] | undefined; }; } | undefined>; preEditableKeys: Readonly>; onValuesChange: (value: RecordType, values: RecordType) => void; getRealIndex: ((record: RecordType) => number) | undefined; }; export type UseEditableType = typeof useEditableArray; export type UseEditableUtilType = ReturnType;