import type { UnreadCounterPlugin } from '../../plugins/UnreadCounter/UnreadCounter'; import { Props } from './template'; import { PopupBase } from '../Popup'; import { BehaviorStrategies } from '../strategies'; import { BadgeType, ButtonCollapsed, WidgetProxy } from '../../types'; import { PageScrollController } from '../../components/popup'; export interface ButtonProps { /** * Мобильный вид виджета. Если не задан, вычисляется автоматически */ isMobile?: boolean; /** * Если `true`, то при клике вне области попапа, попап будет закрываться */ autocloseable?: boolean; /** * Стратегии открытия * * @knob select iframe, detached */ strategies?: BehaviorStrategies[]; /** * При превышении указанного ограничения отобразится сокращенная форма записи значения счетчика (maxCount+) * @default 99 */ badgeMaxCount?: number; /** * Вид бейджика с количеством непрочитанных сообщений. * @default 'num' */ badgeType?: BadgeType; /** * Свернута ли кнопка виджета в десктопном отображении. * @default 'hover' */ collapsedDesktop?: ButtonCollapsed; /** * Свернута ли кнопка виджета в мобильном отображении. * @default 'always' */ collapsedTouch?: ButtonCollapsed; /** * Текст кнопки виджета * @default 'Напишите нам!' */ buttonText?: string; /** * Плагин кол-ва непрочитанных сообщений */ unreadCounterPlugin?: UnreadCounterPlugin; /** * Если `true`, полупрозрачный слой для затемнения фона будет виден * Для правильной работы необходимо монтировать кнопку в `body` * Слой не отключает скролл страницы, включать/отключать скролл можно в событие `onToggled` */ paranjaVisible?: boolean; /** * Установить кастомный контроллер скролла страницы * Нужен для управления поведением скролла страницы при открытии попапа * Контроллер по умолчанию отключает скролл страницы в мобильном режиме */ pageScrollController?: PageScrollController; } export declare function buttonContextFactoryProvider(props: ButtonProps): (widgetProxy: WidgetProxy) => { buttonMode: boolean; badgeMaxCount: number; badgeType: BadgeType; collapsed: ButtonCollapsed; buttonSize: "normal" | "large"; buttonText: string | undefined; unreadCounterPlugin: UnreadCounterPlugin | undefined; paranjaVisible: boolean | undefined; pageScrollController: PageScrollController; onButtonClick: () => void; }; declare class ButtonUI extends PopupBase { constructor(props: ButtonProps); /** * @doc * Смонтировать UI в указанный DOM узел. По умолчанию в document.body * * @doctemplate method_annotation */ mount( /** * @doc * Узел в который будет смонитрован UI */ node?: HTMLElement): void; } /** * @doctemplate function_annotation * @doctitle Button UI * @doc * Классический виджет с кнопкой. Кнопка отображается в правом нижнем углу. * * @doc -scope=internal * [Storybook](https://messenger-test.s3.mds.yandex.net/storybook/widget/latest/index.html?path=/story/widget--ui-button) * * @example * -scope=internal * import 'yandex-int/messenger.widget/lib/ui/button.css'; * import { * YandexConfig, * Widget, * buttonUIFactory, * yandexUnreadCounterFactory, * } from 'yandex-int/messenger.widget'; * * const unreadCounterPlugin = yandexUnreadCounterFactory(); * * const ui = buttonUIFactory({ * unreadCounterPlugin, * }); * * const widget = new Widget(new YandexConfig({ * serviceId: YOUR_SERVICE_ID, * iframeOpenData: { * // Параметры открытия виджета (идентификатор чата, идентификатор бота и т.п.) * // [подробнее](/doc/interfaces.md#baseiframeopenparams) * }, * })) * .setPlugin(unreadCounterPlugin) * .setUI(ui) * .init(); * * ui.mount(); * @example * -scope=external * import 'yandex-messenger-widget/lib/ui/button.css'; * import { * buttonUIFactory, * yandexUnreadCounterFactory, * } from 'yandex-messenger-widget'; * * const unreadCounterPlugin = yandexUnreadCounterFactory(); * * const ui = buttonUIFactory({ * unreadCounterPlugin, * }); * * const widget = createMultiChatsWidget({ * serviceId: YOUR_SERVICE_ID, * iframeOpenData: { * // Параметры открытия виджета (идентификатор чата, идентификатор бота и т.п.) * // [подробнее](/doc/interfaces.md#baseiframeopenparams) * }, * }) * .setPlugin(unreadCounterPlugin) * .setUI(ui) * .init(); * * ui.mount(); */ export declare function buttonUIFactory( /** * @docref template=members_annotation */ props: ButtonProps): ButtonUI; export {};