@alifd/overlay
Version:
overlay base component
83 lines (82 loc) • 2.14 kB
TypeScript
import React, { CSSProperties, ReactElement } from 'react';
import { pointsType, placementType, PositionResult, TargetRect } from './placement';
export interface OverlayEvent extends MouseEvent, KeyboardEvent {
target: EventTarget | null;
}
export interface OverlayProps {
/**
* 弹窗定位的参考元素
*/
target?: (() => TargetRect | HTMLElement) | string;
container?: () => HTMLElement;
placement?: placementType;
/**
* 偏离 placement 对其方向像素
*/
placementOffset?: number;
/**
* 弹窗定位方式
*/
points?: pointsType;
/**
* 偏移
*/
offset?: [number, number];
/**
* 是否固定
*/
fixed?: boolean;
/**
* 是否显示
*/
visible?: boolean;
onRequestClose?: (targetType: string, event: OverlayEvent) => void;
cache?: boolean;
/**
* 弹窗打开后的回调(此时弹窗挂载成功)
*/
onOpen?: Function;
/**
* 弹窗关闭后的回调
*/
onClose?: Function;
hasMask?: boolean;
canCloseByMask?: boolean;
/**
* 是否禁止滚动
*/
disableScroll?: boolean;
canCloseByOutSideClick?: boolean;
canCloseByEsc?: boolean;
wrapperClassName?: string;
wrapperStyle?: CSSProperties;
maskClassName?: string;
maskStyle?: CSSProperties;
maskRender?: (node: ReactElement) => ReactElement;
/**
* 弹窗内容
*/
children?: ReactElement;
style?: CSSProperties;
safeNode?: () => Element | Array<() => Element>;
onMouseEnter?: () => void;
onMouseLeave?: () => void;
beforePosition?: (result: PositionResult) => PositionResult;
onPosition?: Function;
autoAdjust?: boolean;
autoHideScrollOverflow?: boolean;
/**
* 是否自动聚焦弹窗
*/
autoFocus?: boolean;
isAnimationEnd?: boolean;
rtl?: boolean;
}
/**
* 传入的组件可能是没有 forwardRef 包裹的 Functional Component, 会导致取不到 ref
*/
export declare class RefWrapper extends React.Component {
render(): any;
}
declare const Overlay: any;
export default Overlay;