UNPKG

react-admin-kit

Version:

A react based UI components for admin system

110 lines (109 loc) 4.41 kB
import type { FormFieldType } from '@ant-design/pro-form/es/components/SchemaForm/typing'; import type { ActionType, ProColumns, ProColumnsValueType, ProTableProps } from '@ant-design/pro-table'; import type { SearchConfig } from '@ant-design/pro-table/es/components/Form/FormRender'; import type { ModalProps, SpaceProps } from 'antd'; import type React from 'react'; import type { ReactElement, ReactNode } from 'react'; import { FormType, ModalFormInnerRefType, ModalFormSelfProps } from '../ModalForm/types'; import type { FormColumnType } from '../SchemaForm/types'; import { SettingFormProps } from '../SettingProvider/types'; export type ToolbarType = { title?: string | false; actions?: ReactElement[]; }; export type InnerRefType = { params?: any; total?: number; dataSource?: any; data?: any; setData?: (vals: Record<string, any>) => void; } & ModalFormInnerRefType; type InnerRef = React.MutableRefObject<InnerRefType | undefined>; export type TableAlertOptionType = { hideDelete?: boolean; deleteProps?: { btnText?: string; title?: (num: any) => string; } | any; enableExport?: boolean; actions?: ReactNode[]; exportName?: string; }; export type MyProTableType = Omit<ProTableProps<any, any>, 'columns' | 'name' | 'onFinish' | 'tableAlertOptionRender' | 'editable' | 'search'> & { columns: TableColumnType[]; name?: string; formColumns?: FormColumnType[]; onFinish?: (values: any, formType: FormType, formData: any) => Promise<any> | void; onOpen?: ModalFormSelfProps['onOpen']; innerRef?: InnerRef; /** * 传入这个函数, 组件就会自动集成多选删除功能. * 如果点击的是行上的删除, record是该行的数据, selectedIds是该行的id; 如果是多选后的删除, record是空对象 * 同时在columns中, 对于valueType为option的那一列, 如果声明了enableDelete, 操作列就会自动加入删除按钮 */ delFunction?: (selectedIds: (string | number)[], record: any, callback?: any) => Promise<any>; delPermission?: () => boolean; /** * 移除了原来ProTable中的tableAlertOptionRender接口而用tableAlertOptions来替代. * 是因为在tableAlert中封装了多选删除的功能 */ tableAlertOption?: TableAlertOptionType; optionColSpaceSize?: 'small'; editable?: boolean; modalProps?: ModalProps; formProps?: SettingFormProps; noPadding?: boolean; confirmModelType?: 'popconfirm' | 'modal'; confirmModalProps?: any; search?: false | (SearchConfig & { labelWrap?: boolean; }); optionColumnSpaceProps?: SpaceProps; defaultHideInSearch?: boolean; }; export type FetchOptionType = { needLoading?: boolean; }; type EnableDeleteType = { disabled?: boolean; visible?: boolean; danger?: boolean; btnText?: string; }; export type selfColumnsValueType = 'export'; export type MyFieldType = ProColumnsValueType | FormFieldType; /** * Table 类型的 column 定义 * 在 @ant-design/pro-table 的 type { ProColumns } 上修改某些属性 */ type TableColumnTypeBase<Record, ValueType> = Omit<ProColumns<Record, ValueType>, 'renderFormItem' | 'render' | 'fieldProps' | 'editable' | 'valueType'> & { /** * @description 是否开启操作列上的删除 */ enableDelete?: boolean | ((record: any, index: number) => EnableDeleteType); /** * 定义导出 */ renderExport?: (text: string | number, record: Record) => string | number; /** * 给 render 方法注入 innerRef */ render?: (text: string | number, record: Record, index: number, action: ActionType, innerRef: InnerRef) => any; }; /** * 被继承的基础接口类型中如果含有 [key: string]: any, 在用 Omit 时会有问题 * https://blog.csdn.net/riddle1981/article/details/131501414 */ type OmitIndex<T, K extends keyof T> = { [P in keyof T as Exclude<P, K>]: T[P]; }; /** * Table 的 column 定义 * 它是 Form column 和 Table column 的合并, 因为在 ProTable 组件中 Tablet 和 Form 都存在 */ export type TableColumnType<Record = any, ValueType = 'text'> = OmitIndex<FormColumnType<Record, ValueType>, 'render'> & TableColumnTypeBase<Record, ValueType> & { type?: 'form' | 'table' | 'search'; children?: TableColumnType<Record, ValueType>[]; valueType?: MyFieldType | ValueType; }; export {};