import { TopLibPopup } from './popup'; import { OpenerProps } from '../popup/types'; export type Options = { /** * Глобальное событие, которое будет вызвано перед открытием TopPopup */ decoratorBeforeOpen?: (popup: TopLibPopup) => void; /** * Глобальное событие, которое будет вызвано после открытия TopPopup */ decoratorAfterOpen?: (popup: TopLibPopup) => void; /** * Определитель того, что клик вне Popup нужно игнорировать * @returns {boolean} - если true, то click не приведет к закрытию Popup */ decoratorIsIgnoreOuterClick?: (e: MouseEvent) => boolean; }; declare class Worker { /** * Глобальное выключение закрытия меню, используется при различных оверлеях */ static noClose: boolean; /** * Для взаимодействия с vue */ static vueConnectors: Map; static options: Options; /** * Вернуть объект компонента popup, привязанный к элементу */ static getPopup(elPopup: HTMLElement): TopLibPopup; static getElPopupOpener(el: Element): HTMLElement | null; static getPopupFromOpener(el: HTMLElement): TopLibPopup | null; /** * Вернуть все элементы с Popup */ static getAll(): HTMLElement[]; /** * Вернуть все элементы с открытыми Popup */ static getAllVisible(): HTMLElement[]; /** * Открыть Popup от указанного elOpener * @param {HTMLElement} elOpener - элемент, который должен вызвать открытие Popup */ static openByOpener(elOpener: HTMLElement): Promise; /** * Создать и открыть Popup * @param elOpener - элемент, вызвавший открытие Popup * @param options - опции Popup */ private static open; static close(elPopup: HTMLElement, restoreFocus?: boolean): void; static recalcPosition(elPopup: HTMLElement): void; /** * Скролл к активному элементу списка */ static scrollToActive(elPopup: HTMLElement): void; static decoratorBeforeOpen(popup: TopLibPopup): void; static decoratorAfterOpen(popup: TopLibPopup): void; static decoratorIsIgnoreOuterClick(e: MouseEvent): boolean; /** * Зарегистрировать Vue компонент * * Каждый экземляр Popup регистрируется в словаре vueConnectors для последующего доступа из js */ static regVueComponent(id: string, vueConnector: any): void; /** * Снять с регистрации Vue компонент */ static unregVueComponent(id: string): void; /** * Сгенерировать элемент для открытия popup */ static genElPopupOpener(tagName: string, props: OpenerProps, ...elsChildrens: HTMLElement[] | string[]): HTMLElement; } export default Worker;