/** * 判断指定元素是否在模态框中 * * @param node 节点 */ export declare function findParentModal(node: Element | null): HTMLElement | null; /** * 模态框信息 */ export interface ModalInfo { /** * 模态框元素 */ node: HTMLElement; /** * 模态框内容 */ content: HTMLElement; /** * 装载模态框的容器 */ container: HTMLElement; /** * 自动获取焦点 */ autoFocus: boolean; /** * 设置焦点不离开模态框 */ enforceFocus: boolean; } /** * 模态框管理 */ export default class ModalManager { /** * 所有展现的模态框 */ private readonly modals; /** * 在模态框之外的焦点元素 */ private activeElementOutModal; /** * 在模态框内的焦点元素 */ private readonly activeElementsInModals; /** * 模态框卸载时的回调函数 */ private readonly unmountCallbacksOfModals; /** * 卸载模态框管理器的回调函数 */ private readonly unmountCallbacks; /** * 将焦点还给之前元素的定时器id */ private focusLastActiveElementTimer; constructor(); private static _defaultModalManager?; static defaultModalManager(): ModalManager; /** * 添加模态框 * * @param modalNode 模态框元素 */ add(modal: ModalInfo): void; /** * 删除模态框 * * @param modalNode 模态框元素 */ remove(modalNode: HTMLElement): void; /** * 判断指定模态框是否为顶端模态框 * * @param modalNode 模态框元素 */ isTopModal(modalNode: HTMLElement): boolean; destroy(): void; /** * 监听全局聚焦事件,获取模态框之外的聚焦元素以及模态框内聚焦元素的变化 */ private listenGlobalFocus; /** * 限制焦点离开模态框 * * @param modal 模态框 */ private enforceFocusInModal; /** * 聚焦模态框 * * @param modalNode 模态框元素 */ private focusModal; /** * 聚焦之前的焦点元素。 * * 此函数在模态框关闭时调用,将焦点还给之前的焦点元素。 */ private focusLastActiveElement; /** * 获取顶端模态框的焦点元素 */ private getActiveElementOfTopModal; }