import { Event } from '@yandex-int/messenger.utils'; import type { ChannelTransport } from '@yandex-int/messenger.channels'; import * as IWidget from '../../types'; import { BaseUI } from '../Base'; import { WidgetEvent } from '../../libs/WidgetEvent/WidgetEvent'; import type { Props } from './template'; import type { Context } from '../../libs/Templater'; import { BehaviorStrategies } from '../strategies'; import { calculatePosition } from '../../components/popup/utils'; import { PageScrollController } from '../../components/popup'; /** * @interface */ export interface PopupProps { /** * Мобильный вид виджета. Если не задан, вычисляется автоматически */ isMobile?: boolean; /** * Элемент от которого позиционируется попап * * @knob boolean */ popupTargetNode?: HTMLElement; /** * Используется вместе с popupTargetNode для позиции появления попапа от элемента. * Default bottom-left */ popupTargetPosition?: IWidget.TargetPosition; /** * Если true паранжа будет видна * Паранжа не отключает скролл страницы, включать/отключать скролл можно в событие `onToggled` */ paranjaVisible?: boolean; /** * Пользовательская функция расчета позиции попапа */ calculatePosition?: typeof calculatePosition; /** * Если true, то при клике вне область попапа, попап будет закрываться */ autocloseable?: boolean; /** * Стратегии открытия * * @knob select iframe, detached */ strategies?: BehaviorStrategies[]; /** * Установить кастомный контроллер скролла страницы * Нужен для управления поведением скролла страницы при открытии попапа * Контроллер по умолчанию - отключает скролл страницы в мобильном режиме */ pageScrollController?: PageScrollController; } export interface OnToggledEvent { /** * Попап скрыт */ hidden: boolean; } export declare class PopupBase
extends BaseUI