UNPKG

@flatbiz/antd

Version:
171 lines (168 loc) 5.84 kB
import { TAny, TNoopDefine, TPlainObject } from '@flatbiz/utils'; import { ButtonProps, DrawerProps, FormInstance, ModalProps } from 'antd'; import { ReactElement, ReactNode } from 'react'; export type ButtonWrapperProps = Omit<ButtonProps, "onClick" | "color"> & { /** 当返回 Promise 时,按钮自动loading */ onClick?: (e: React.MouseEvent<HTMLElement>) => Promise<TAny> | void; /** 重复点击间隙,单位毫秒 默认值:500 */ debounceDuration?: number; /** 基于GLOBAL中elemAclLimits按钮权限列表,控制按钮显示、隐藏 */ permission?: string; /** 是否隐藏按钮 */ hidden?: boolean; /** loading 显示位置,默认值:left */ loadingPosition?: "left" | "center"; /** 移除按钮内边距,一般用于 type=link 类型下 */ removeGap?: boolean; color?: string; }; export type FbaAppDrawerProps = Omit<DrawerProps, "onOk" | "onCancel" | "getContainer" | "footer" | "extra"> & { okText?: string | ReactElement; cancelText?: string | ReactElement; onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>; onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>; content: string | ReactElement | ((form: FormInstance, operate: { onClose: DrawerProps["onClose"]; }) => ReactElement); okButtonExtraProps?: Omit<ButtonWrapperProps, "onClick" | "children" | "loading">; cancelButtonExtraProps?: Omit<ButtonWrapperProps, "onClick" | "children">; okHidden?: boolean; cancelHidden?: boolean; /** 设置操作区域位置 */ operatePosition?: "header" | "footer"; /** 右上角自定义内容,如果operatePosition=header,此设置无效 */ extra?: ReactNode | ((form: FormInstance) => ReactElement); /** * ``` * 1. 自定义弹框操作区域,通过 operatePosition 配置可以自定义位置 * 2. extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据 * ``` */ operateRender?: (form: FormInstance, extraData?: TPlainObject) => ReactElement; }; export type FbaAppModalProps = Omit<ModalProps, "onOk" | "onCancel" | "getContainer" | "okButtonProps" | "cancelButtonProps" | "footer"> & { /** * 内置尺寸,根据比例固定高度、宽度 * ``` * 1. 如果自定义了width、bodyHeight属性,size中的height、width将对应失效 * 2. 不传、传null值可取消内置尺寸 * ``` */ size?: "small" | "middle" | "large" | null; onOk?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>; onCancel?: (form: FormInstance, e: React.MouseEvent<HTMLElement>) => void | Promise<void>; onClose?: () => void; content: string | ReactElement | ((form: FormInstance, operate: { onClose: TNoopDefine; }) => ReactElement); okHidden?: boolean; cancelHidden?: boolean; okButtonProps?: Omit<ButtonWrapperProps, "hidden" | "children" | "onClick">; cancelButtonProps?: Omit<ButtonWrapperProps, "hidden" | "children" | "onClick">; /** * 设置modal body height 为当前窗口height的百分比,例如:30 * @deprecated 已失效,可通过size属性设置 * ``` * 1. 最大值:80 * 1. 设置bodyStyle.height 后,bodyHeightPercent失效 * ``` */ bodyHeightPercent?: number; titleExtra?: ReactElement; /** * null则隐藏footer * ``` * extraData 为外部通过 useDialogModal.rerenderFooter 重新渲染footer携带的数据 * ``` */ footer?: null | ReactElement | ReactElement[] | ((form: FormInstance, extraData?: TPlainObject) => ReactElement); /** 内容高度,为styles.body.height快捷配置,优先级低于styles.body.height */ bodyHeight?: number; }; export type FbaAppConfirmProps = FbaAppModalProps; export type FbaAppAlertProps = Omit<FbaAppModalProps, "onOk" | "cancelHidden" | "cancelButtonProps" | "onCancel" | "onClick"> & { onClick?: (e: React.MouseEvent<HTMLElement>) => void | Promise<void>; }; export type FbaAppLoadingProps = { className?: string; message?: string; mask?: boolean; }; export declare const FbaApp: ((props: { children: import("react").ReactNode; }) => import("react").JSX.Element) & { /** 不支持多次弹框,第二个弹框可使用useDialogDrawer2 */ useDialogDrawer: () => { appDialogDrawer: { open: (data: FbaAppDrawerProps) => { onClose: () => void; }; close: () => void; useAppDialogDrawer: () => { rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject) => void; }; }; }; useDialogDrawer2: () => { appDialogDrawer2: { open: (data: FbaAppDrawerProps) => { onClose: () => void; }; close: () => void; useAppDialogDrawer: () => { rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject) => void; }; }; }; /** 不支持多次弹框,第二个弹框可使用useDialogModal2 */ useDialogModal: () => { appDialogModal: { open: (data: FbaAppModalProps) => { onClose: () => void; }; close: () => void; useAppDialogModal: () => { rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject) => void; }; }; }; useDialogModal2: () => { appDialogModal2: { open: (data: FbaAppModalProps) => { onClose: () => void; }; close: () => void; useAppDialogModal: () => { rerenderFooter: (data?: import("@flatbiz/utils").TPlainObject) => void; }; }; }; /** 不支持多次弹框 */ useDialogConfirm: () => { appDialogConfirm: { open: (data: FbaAppConfirmProps) => { onClose: () => void; }; close: () => void; }; }; /** 不支持多次弹框 */ useDialogAlert: () => { appDialogAlert: { open: (data: FbaAppAlertProps) => { onClose: () => void; }; close: () => void; }; }; /** 不支持多次弹框 */ useDialogLoading: () => { appDialogLoading: { open: (data?: FbaAppLoadingProps) => { onClose: () => void; }; close: () => void; }; }; }; export {};