import type { MouseEvent, PropsWithChildren, ReactElement, ReactNode, Ref } from 'react'; import type { ButtonProps as AntdButtonProps, DrawerProps as AntdDrawerProps, ModalProps as AntdModalProps, WatermarkProps as AntdWatermarkProps } from 'antd'; export type WrapperInstance = { open(): Promise; close(): Promise; }; type DrawerModeProps = { modeProps?: Omit; } & Pick; type ModalModeProps = { modeProps?: Omit; } & Pick; type ModePropsMap = { page: DrawerModeProps; inline: DrawerModeProps; modal: ModalModeProps; drawer: DrawerModeProps; }; export type Mode = keyof ModePropsMap; export type WrapperProps = { /** 模式 */ mode?: T; } & ModePropsMap[T] & PropsWithChildren<{ className?: string; /** 确定事件 */ onOk?: (e: MouseEvent) => Promise | boolean | void; /** 关闭事件 */ onCancel?: (e: MouseEvent) => Promise | boolean | void; /** 页脚 */ footer?: ReactNode | null; okButtonContent?: ReactNode; okButtonOpen?: boolean; okButtonProps?: Omit; cancelButtonContent?: ReactNode; cancelButtonOpen?: boolean; cancelButtonProps?: Omit; /** 水印 */ watermark?: AntdWatermarkProps; /** * @description open之前执行,可阻塞open */ beforeOpen?: () => Promise | boolean | void; /** * @description close之前执行,可阻塞close */ beforeClose?: () => Promise | boolean | void; }>; export type WrapperStaticInterface = { displayName: string; }; export type InternalWrapperType = (props: PropsWithChildren> & { ref?: Ref; }) => ReactElement; export type WrapperInterface = InternalWrapperType & WrapperStaticInterface; declare const Component: WrapperInterface; export default Component;