import React, { ReactNode } from 'react'; import type { ModalProps, DrawerProps, FormInstance, ModalFuncProps } from 'antd'; import type { ProFormType } from '../ProForm/propsType'; /** * 抽屉尺寸类型定义 */ export type DrawerSizePropsType = 'small' | 'middle' | 'large'; export type DrawerSizeType = DrawerSizePropsType; /** * 显示类型定义 */ export type ShowTypePropsType = 'Modal' | 'Drawer'; export type ShowType = ShowTypePropsType; export interface ProDrawerFormType { /** @name 内部form实例 */ form?: FormInstance; /** @name 自定义className */ className?: string; /** @name 控制显示隐藏 */ open: ModalProps['open'] | DrawerProps['open']; /** @name 标题 */ title?: ModalProps['title'] | DrawerProps['title']; /** @name 点击蒙层是否允许关闭 */ maskClosable?: ModalProps['maskClosable'] | DrawerProps['maskClosable']; /** @name 禁止选项 */ disabled?: boolean | undefined; /** @name 是否查看模式 */ isView?: boolean | undefined; /** @name 宽度 */ width?: string | number; /** @name 取消按钮文字 */ cancelText?: ModalProps['cancelText']; /** @name 确认按钮文字 */ okText?: ModalProps['okText']; /** @name 确认按钮loading状态 */ okLoading?: boolean; /** @name 确认按钮禁用状态 */ okDisabled?: boolean; /** @name 显示方式 */ mode?: ShowType; /** @name 尺寸 */ size?: DrawerSizeType; /** * @name 自动选中第一项 * @description 只对有input的类型有效 */ autoFocusFirstInput?: boolean; /** * @name 关闭时是否开启二次确认弹框 * @description 只对Drawer的类型有效 */ isConfirmClose?: boolean; /** * @name 关闭时二次确认弹框的属性 * @description 只对Drawer的类型有效 */ isConfirmCloseModalProps?: Omit; /** * @name 底部默认取消按钮事件 * @returns 返回Promise或布尔值可控制弹窗关闭行为 */ onCancel?: () => Promise | boolean | void | unknown; /** * @name 底部默认确定按钮事件 * @param values 表单值 * @param form 表单实例 * @returns 返回Promise或布尔值可控制弹窗关闭行为 */ onOk?: (values?: any, form?: FormInstance) => Promise | boolean | void | unknown; /** * @name 底部自定义按钮配置 */ footer?: ReactNode | ReactNode[]; /** * @name 底部左侧自定义渲染 */ extraLeft?: ReactNode; /** * @name proForm的属性 * @description 配置后children不展示 */ proFormProps?: Omit; /** * @name 弹框的属性 */ modalProps?: ModalProps; /** * @name 抽屉的属性 */ drawerProps?: DrawerProps; /** * @name 关闭时弹框或者抽屉是否清空formValues */ onCloseClean?: boolean; /** @name 子组件 */ children?: React.ReactNode; /** @name z轴层级 */ zIndex?: number; } export type ProDrawerFormPropsType = ProDrawerFormType;