import React from 'react'; import RenderModalBackdropProps from './RenderModalBackdropProps'; import ModalManager from './ModalManager'; import type { ContainerElement } from '../utils/getContainerElement'; export interface Props { /** * 设置为`true`,则打开模态框。 */ open: boolean; /** * 点击遮罩层或者按下 `Esc` 键时的回调函数。此函数只是表达模态框组件想要关闭模态框的意图,实际上必须将`open`属性设置为`false`,才能关闭模态框。 */ onClose?: (reason: 'backdropClick' | 'escapeKeydown') => void; /** * Modal组件请求关闭时的回调函数。 * * @deprecated 请使用 onClose * * 回调函数签名: * * `function(event: object, reason: string) => void` * * * **event**: 事件源 * * **reason**: 引起关闭的原因。 * 'escapeKeydown'表示按ESC键引起关闭, * 'backdropClick'表示点击backdrop引起关闭。 * */ onRequestClose?: (event: React.MouseEvent, reason: string) => void; /** * 指定模态框的容器 */ container?: ContainerElement; /** * 指定模态框子元素。 */ children: React.ReactElement; /** * 模态框中的内容居中显示。 */ center?: boolean; /** * 设置为`false`,则不渲染遮罩层。默认为`true`,表示渲染遮罩层。 */ backdrop?: boolean; /** * 设置为`true`,则点击遮罩层时关闭模态框。默认为`true`。 */ backdropClick?: boolean; /** * 设置遮罩层透明度。默认为 `0.32`。 */ backdropOpacity?: number; /** * 点击遮罩层时触发的回调函数。 */ onBackdropClick?: (event: React.MouseEvent) => void; /** * 设置遮罩层属性 */ BackdropProps?: Record; /** * 渲染遮罩层 */ renderBackdrop?: (backdropProps: RenderModalBackdropProps) => void; /** * * 设置为`true`,则按下 Esc 键时关闭模态框。默认为 `true`。 */ keyboard?: boolean; /** * 在按下 Esc 键时触发的回调函数。 */ onEscapeKeydown?: (event: React.KeyboardEvent) => void; /** * 设置为`true`时,会在模态框打开时会将焦点移动模态框上,关闭时会将焦点恢复到先前焦点元素上。 */ autoFocus?: boolean; /** * 设置为`true`时,在打开模态框会阻止焦点移出模态框。 */ enforceFocus?: boolean; /** * 设置为`true`时,会在模态框打开时阻止页面内容的滚动。 */ scrollLock?: boolean; /** * 模态框管理器 * * @private */ modalManager?: ModalManager; /** * 指定z-index */ zIndex?: number; /** * 启用portal。默认为`true`。但是在测试环境默认为`false`。在单元测试时,可以通过以下方式统一启用或者禁用portal: * * ```ts * import { modalConfig } from '@sinoui/core/Modal'; * * beforeAll(() => modalConfig.enablePortal = false); * afterAll(() => modalConfig.reset()); * ``` */ enablePortal?: boolean; className?: string; } /** * 模态框。 * * 注意,在测试环境中,模态框是不启用portal的。如果需要启用portal,通过以下方式启用: * * ```ts * import { modalConfig } from '@sinoui/core/Modal'; * * beforeAll(() => { * modalConfig.enablePortal = true; * }); * * afterEach(modalConfig.reset); * ``` */ declare const Modal: React.ForwardRefExoticComponent>; export default Modal;