Skip to content

Popup Widget

Внимание

Для встраивания используеться popup window, отсутствует проблема с third party cookies авторизация доступна

Методы API экземпляра PopupWidget

js
import { WidgetManager } from 'afisha-widget-manager'

const afishaWidgetManager = new WidgetManager('41fa9cef-a753-4119-8e44-45d013717a2a')
const afishaPopupWidget = afishaWidgetManager.appendWidget(
  {
    route: 'creations',
    embedType: 'popup',
    cityId: '2'
  },
  document.body
)

open

js
/**
 * Открывает виджет в модальном окне
 * @returns {Promise<void>}
 */

afishaPopupWidget.open()

close

js
/**
 * Закрывает всплывающее окно с виджетом
 * @returns {void}
 */

afishaPopupWidget.close()

reload

js
/**
 * Перезагружает виджет
 * @returns {void}
 */

afishaPopupWidget.reload()

mount

js
/**
 * Монтирует кнопку для открытия виджета
 * @param {boolean} [skipButton=false] - не монтировать кнопку
 * @returns {void}
 */

afishaPopupWidget.mount()
js
/**
 * Сообщает виджету на какой route ему нужно перейти
 * @param {Routes} route - наименование экрана на котором нужно открыть виджет
 * @param {PartialRecord<SpecialTagsAttributes, string>} [params={}] - параметры виджета
 */

afishaPopupWidget.navigateTo('creationsType', {
  creationType: 'movie',
  cityId: '2'
})

on

js
/**
 * Подписка на события виджета
 * @param {LifeCycleHooks} hook - событие
 * @param {LifeCycleHook} fn - функция callback
 */
const { afterMount } = LIFECYCLE_HOOKS

afishaPopupWidget.on(afterMount, () => {
  console.log('Виджет смотирован')
})

sendMessage

js
/**
 * Отправить post message напрямую в виджет
 * @param {OutgoingPostMessages} id - событие
 * @param {Object} params - параметры которые нужно отправить
 */
import { OUTGOING_POST_MESSAGES } from 'afisha-widget-manager'

afishaPopupWidget.sendMessage(managerSetPartnerECommerce, { currency: 'EUR', price: '200' })