UNPKG

@antdv/pro-utils

Version:

@antdv/pro-utils

149 lines (148 loc) 6.33 kB
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<T> { defaultValue?: T; options: AddLineOptions; } export type ActionRenderFunction<T> = (row: T, config: ActionRenderConfig<T, NewLineConfig<T>>, defaultDoms: { save: VueNode; delete: VueNode; cancel: VueNode; }) => VueNode[]; export interface RowEditableConfig<DataType> { formProps?: Omit<FormProps & { formRef?: Ref<FormInstance | undefined>; 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<DataType>; onSave?: (key: RecordKey, record: DataType & { index?: number; }, originRow: DataType & { index?: number; }, newLineConfig?: NewLineConfig<DataType>) => Promise<any | void>; onCancel?: (key: RecordKey, record: DataType & { index?: number; }, originRow: DataType & { index?: number; }, newLineConfig?: NewLineConfig<DataType>) => Promise<any | void>; onDelete?: (key: RecordKey, row: DataType & { index?: number; }) => Promise<any | void>; deletePopconfirmMessage?: string; onlyOneLineEditorAlertMessage?: false | string; onlyAddOneLineAlertMessage?: false | string; tableName?: NamePath; saveText?: string; cancelText?: string; deleteText?: string; getRealIndex?: (record: DataType) => number; } export interface ActionTypeText<T> { deleteText?: VueNode; cancelText?: VueNode; saveText?: VueNode; editorType?: 'Array' | 'Map'; addEditRecord?: (row: T, options?: AddLineOptions) => boolean; } export type ActionRenderConfig<T, LineConfig = NewLineConfig<T>> = { editableKeys?: RowEditableConfig<T>['editableKeys']; recordKey: RecordKey; preEditRowRef: Ref<T | null>; index?: number; cancelEditable: (key: RecordKey) => void; onSave: RowEditableConfig<T>['onSave']; onCancel: RowEditableConfig<T>['onCancel']; onDelete?: RowEditableConfig<T>['onDelete']; deletePopconfirmMessage: RowEditableConfig<T>['deletePopconfirmMessage']; setEditableRowKeys: (value: Key[]) => void; newLineConfig?: LineConfig; tableName?: NamePath; children?: VueNode; } & ActionTypeText<T>; export declare function editableRowByKey<RecordType>(keyProps: { data: RecordType[]; childrenColumnName: string; getRowKey: GetRowKey<RecordType>; key: RecordKey; row: RecordType; }, action: 'update' | 'top' | 'delete'): RecordType[]; export interface SaveEditableActionRef<T = any> { save: () => ReturnType<NonNullable<RowEditableConfig<T>['onSave']>> | Promise<void>; } export declare const SaveEditableAction: import("vue").DefineSetupFnComponent<SaveEditableActionProps, {}, {}, SaveEditableActionProps & {}, import("vue").PublicProps>; export interface SaveEditableActionProps extends ActionRenderConfig<any> { row: any; children?: any; } export declare const DeleteEditableAction: FunctionalComponent<ActionRenderConfig<any> & { row: any; }>; export declare function defaultActionRender<T>(row: T, config: ActionRenderConfig<T, NewLineConfig<T>>): { save: import("vue/jsx-runtime").JSX.Element; saveRef: Ref<SaveEditableActionRef<T> | undefined, SaveEditableActionRef<T> | undefined>; delete: import("vue/jsx-runtime").JSX.Element | undefined; cancel: import("vue/jsx-runtime").JSX.Element; }; export declare function useEditableArray<RecordType extends AnyObject>(props: RowEditableConfig<RecordType> & { getRowKey: GetRowKey<RecordType>; dataSource: RecordType[]; onValuesChange?: (record: RecordType, dataSource: RecordType[]) => void; childrenColumnName: string | undefined; setDataSource: (dataSource: RecordType[]) => void; }): { editableKeys: import("vue").ComputedRef<Key[] | undefined>; 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<true | undefined>; addEditRecord: (row: RecordType, options?: AddLineOptions) => boolean; saveEditable: (recordKey: RecordKey, needReTry?: boolean) => Promise<boolean>; newLineRecord: Ref<{ defaultValue?: import("vue").UnwrapRef<RecordType> | undefined; options: { position?: "top" | "bottom" | undefined; recordKey?: Key | Key[] | undefined; newRecordType?: "dataSource" | "cache" | undefined; parentKey?: Key | Key[] | undefined; }; } | undefined, NewLineConfig<RecordType> | { defaultValue?: import("vue").UnwrapRef<RecordType> | undefined; options: { position?: "top" | "bottom" | undefined; recordKey?: Key | Key[] | undefined; newRecordType?: "dataSource" | "cache" | undefined; parentKey?: Key | Key[] | undefined; }; } | undefined>; preEditableKeys: Readonly<Ref<Key[] | undefined, Key[] | undefined>>; onValuesChange: (value: RecordType, values: RecordType) => void; getRealIndex: ((record: RecordType) => number) | undefined; }; export type UseEditableType = typeof useEditableArray; export type UseEditableUtilType = ReturnType<UseEditableType>;