@flatbiz/antd
Version:
171 lines (168 loc) • 5.84 kB
TypeScript
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 {};