modal-g
Version:
gantd modal
85 lines (84 loc) • 2.5 kB
TypeScript
/// <reference types="react" />
import { ModalProps as antdModalProps } from 'antd/lib/modal';
export interface WindowSize {
width: number;
height: number;
}
export interface ModalPositionSize {
width?: number | string;
height?: number | string;
x?: number;
y?: number;
}
export interface ModalStateProps extends ModalPositionSize {
zIndex?: number;
visible?: boolean;
/** 默认窗口是否最大化 */
maximize?: boolean;
/** 是否在组件挂载期保留弹窗关闭前的定位与尺寸信息 */
keepStateOnClose?: boolean;
}
export interface PrivateModalStateProps extends ModalStateProps {
/** 内部记录当前弹窗的状态 */
isMaximized?: boolean;
/** 存储用户传递的弹窗信息 */
inital?: ModalPositionSize;
/** 存储最大化切换时小窗口的定位与尺寸信息 */
history?: ModalPositionSize;
}
export interface ResizableProviderProps {
initalState?: ModalStateProps;
maxZIndex?: number;
minWidth?: number;
minHeight?: number;
}
export interface ModalsState {
modals: {
[modalId: string]: PrivateModalStateProps;
};
maxZIndex: number;
minWidth: number;
minHeight: number;
windowSize: WindowSize;
initialModalState: ModalStateProps;
}
export interface InnerModalProps extends antdModalProps {
id?: string;
prefixCls?: string;
itemState?: ModalStateProps;
canMaximize?: boolean;
canResize?: boolean;
isModalDialog?: boolean;
children?: React.ReactNode | string;
}
export declare type OnSizeChangeFunc = (width: number, height: number) => void;
export interface ModalProps extends InnerModalProps, ResizableProviderProps {
throttle?: number;
onSizeChange?: OnSizeChangeFunc;
type?: 'autoHeight' | 'resize';
}
export interface ContextContentProps {
id: string;
children: React.ReactNode;
/** resize时的节流时长控制 */
throttleTime?: number;
/** 弹窗尺寸变化时的回调 */
onSizeChange?: OnSizeChangeFunc;
}
export declare enum ActionTypes {
mount = "mount",
unmount = "unmount",
focus = "focus",
show = "show",
hide = "hide",
max = "max",
reset = "reset",
resize = "resize",
drag = "drag",
windowResize = "windowResize"
}
export declare type Action = {
type: ActionTypes;
[key: string]: any;
};
export declare type ResizeDirection = 'top' | 'right' | 'bottom' | 'left' | 'rightTop' | 'rightBottom' | 'leftBottom' | 'leftTop';