{"version":3,"file":"header.widgets.bundle.js","mappings":"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","sources":["webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/cart/Minicart.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/cart/MinicartDialog.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/header/HamburgerMenuItem.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/header/MegaMenu.ts","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/header/MenuBarItem.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/header/MenuBarItemExt.js","webpack://sfra-boilerplate/./cartridges/app_custom_core/cartridge/client/default/js/widgets/header/MenuPanel.js","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/cart/Minicart.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/cart/MinicartDialog.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/header/CountrySelector.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/header/CountrySelectorMenuItem.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/header/HamburgerMenuItem.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/header/MegaMenu.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/header/MenuBarItem.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/header/MenuButton.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/header/MenuPanel.ts","webpack://sfra-boilerplate/./cartridges/app_storefront_widgets/cartridge/client/default/js/widgets/header/MenuPanelToggle.ts"],"sourcesContent":["import { getCookie } from 'widgets/toolbox/cookie';\nimport { getJSONByUrl } from 'widgets/toolbox/ajax';\nimport localStorageWrapper from 'widgets/toolbox/localStorageWrapper';\n\n/**\n * @typedef {ReturnType<typeof import('widgets/cart/Minicart').default>} BaseMinicart\n */\n\n/**\n * @description PaymentsList extention\n * @param {BaseMinicart} BaseMinicart Base Minicart\n * @returns {typeof Minicart} updated Minicart class\n */\nexport default function (BaseMinicart) {\n /**\n * @class Minicart\n * @augments BaseMinicart\n * @classdesc Minicart implementation.\n */\n class Minicart extends BaseMinicart {\n prefs() {\n return {\n getCartQuantityTotalUrl: '',\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n this.getCartQuantityTotal()\n .then(quantityTotal => {\n this.renderMinicartHeader(quantityTotal);\n });\n }\n\n /**\n * @description Called for saving the total quantity of the current basket\n * @param {object} response response from server\n * @returns {Promise<any>} Promise object represents mini cart rendering result\n */\n reRenderMinicartWrapper(response) {\n const cart = this.normalizeCartModel(response);\n\n // Return if response have no Cart Model\n if (!cart.totals) {\n return Promise.resolve(null);\n }\n\n this.saveCartQuantityTotal({\n numItems: cart.numItems,\n itemsIds: cart.itemsIds\n });\n\n return super.reRenderMinicartWrapper(response);\n }\n\n /**\n * @description renders minicart link with total quantity\n *\n * @param {any} quantityTotal - cart quantity total\n */\n renderMinicartHeader(quantityTotal) {\n this.render('template', {\n quantityTotal: quantityTotal,\n isShownQtyTotal: parseInt(quantityTotal, 10) > 0\n }, this.ref(this.prefs().refMinicartContent));\n }\n\n /**\n * @description Save the total quantity of the current basket to the local storage\n * @param {object} params - the total quantity of the current basket and product IDs\n */\n saveCartQuantityTotal(params) {\n localStorageWrapper.removeItem('cartQuantityTotal');\n localStorageWrapper.removeItem('cartItemIds');\n localStorageWrapper.setItem('currentSid', getCookie('sid'));\n localStorageWrapper.setItem('cartQuantityTotal', JSON.stringify(params.numItems));\n localStorageWrapper.setItem('cartItemIds', JSON.stringify(params.itemsIds || []));\n }\n\n /**\n * @description Do server call to get the number of items and IDs in the current basket\n * @param {string}url URL to get the number of items in the current basket\n * @returns {Promise<any>} Fetching result promise\n */\n getCartQuantityTotalPromise(url) {\n return getJSONByUrl(url)\n .then((response) => {\n if (!response.error) {\n this.saveCartQuantityTotal({\n numItems: response.quantityTotal,\n itemsIds: response.itemsIds\n });\n\n return Promise.resolve(response.quantityTotal);\n } else {\n return Promise.resolve(null);\n }\n })\n // eslint-disable-next-line no-console\n .catch(error => console.log(error));\n }\n\n /**\n * @description Returns fetching result promise\n * @returns {Promise<object>} Promise result\n */\n getCartQuantityTotal() {\n return new Promise((resolve, reject) => {\n const cartQuantityTotal = localStorageWrapper.getItem('cartQuantityTotal');\n const isSameSession = localStorageWrapper.getItem('currentSid') === getCookie('sid');\n\n if (cartQuantityTotal && isSameSession) {\n return resolve(cartQuantityTotal);\n }\n\n const url = this.prefs().getCartQuantityTotalUrl;\n\n if (!url) {\n return reject(new Error('no URL provided'));\n }\n\n return this.getCartQuantityTotalPromise(url)\n .then((quantityTotal) => {\n return resolve(quantityTotal);\n });\n });\n }\n }\n\n return Minicart;\n}\n","import { getContentByUrl, submitFormJson } from 'widgets/toolbox/ajax';\nimport { WishlistItemsMgr } from 'plugin_wishlists/toolbox/wishlistItemsMgr';\nimport { appendParamToURL } from 'core/toolbox/util';\n\nimport { getCookie } from 'widgets/toolbox/cookie';\nimport localStorageWrapper from 'widgets/toolbox/localStorageWrapper';\n\n/**\n * @typedef {InstanceType<ReturnType<typeof import('widgets/global/ConfirmDialog').default>>} confirmDialog\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n * @typedef {ReturnType<typeof import('widgets/forms/InputStepper').default>} InputStepper\n * @typedef {InstanceType<ReturnType<typeof import('widgets/forms/InputStepper').default>>} inputStepper\n */\n\n/**\n * @description MinicartDialog implementation\n * @param {BaseMinicartDialog} BaseMinicartDialog BaseMinicartDialog implementation\n * @returns {typeof MinicartDialog} MinicartDialog class\n */\nexport default function (BaseMinicartDialog) {\n /**\n * @class MinicartDialog\n * @augments BaseMinicartDialog\n * @classdesc MinicartDialog extention\n */\n class MinicartDialog extends BaseMinicartDialog {\n /**\n * @description Set Update Flag - in which cases Minicart should be updated\n * @param {object} response Response object from server\n * @returns {void}\n */\n setUpdateFlag(response) {\n if (response.cartModel || response.showMinicart) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'needUpdate' does not exist on type 'Mini... Remove this comment to see the full error message\n this.needUpdate = true;\n }\n\n if (this.isMiniCartOpened) {\n this.updateContent();\n }\n }\n\n /**\n * @description Update minicart panel content\n * Fetch actual content in case when it needed. Use flag `needUpdate` for this\n * @returns {Promise<object|null>} Promise object represents server response for minicart updating\n */\n updateContent() {\n if (!this.needUpdate || !this.isMiniCartOpened) {\n return Promise.resolve(null);\n }\n\n this.toggleSpinner(true);\n\n return getContentByUrl(this.prefs().actionUrl)\n .then(response => {\n this.needUpdate = false;\n\n return this.render(undefined, {}, this.ref(this.prefs().refDialog), String(response)).then(() => {\n this.toggleSpinner(false);\n this.addFocusTraps(); // enclose new content with focus trap\n\n if (!this.isMiniCartOpened) {\n this.close();\n }\n }).then(() => {\n this.eventBus().emit('minicart.rendered');\n\n return response;\n });\n })\n .catch(() => {\n this.eventBus().emit('alert.show', { errorCode: 500 });\n this.toggleSpinner(false);\n this.close();\n\n return Promise.resolve(null);\n });\n }\n\n /**\n * @description Move product from minicart to wishlist.\n * In fact this functionality implemented in 2 steps:\n * 1. Add product to wishlist\n * 2. Remove product from minicart\n * This is done due to possible backend code duplication in one universal endpoint\n * @param {confirmDialog} confirmationDialog Target popup\n * @returns {Promise<object|null>} Promise object represents server response for product moving to wishlist\n */\n moveProductToWishlist(confirmationDialog) {\n if (!confirmationDialog) {\n return Promise.resolve(null);\n }\n\n return submitFormJson((this.prefs()).actionMovetowishlist, {\n pid: confirmationDialog.attributes.pid,\n qty: confirmationDialog.attributes.currentValue\n }).then((response) => {\n this.confirmedRemoveProduct(confirmationDialog, true);\n\n if (response.error && !response.itemAlreadyExists) {\n return response;\n }\n\n const wishlistItemsMgr = WishlistItemsMgr.getInstance();\n\n wishlistItemsMgr.updateWishlistItems(response.wishlistItems);\n\n this.eventBus().emit('product.addedToWishlist', response.wishlistItems.length > 0);\n this.eventBus().emit('wishlist.updated', response.pid.toString());\n\n return response;\n });\n }\n\n showMinicart() {\n super.showMinicart();\n\n this.eventBus().emit('minicart.showed', this.needUpdate);\n }\n\n confirmedRemoveProduct(confirmDialog, movedToWishlist = false) {\n if (!confirmDialog) {\n return Promise.resolve(null);\n }\n\n const attributes = confirmDialog.attributes;\n const uuid = attributes.uuid;\n const pid = attributes.pid;\n let url = attributes.url;\n const isOnNotEmptyWishlistPage = !!document.querySelector('[data-tau=\"wishlist_products\"]');\n\n if (attributes.isSubscriptionProduct && isOnNotEmptyWishlistPage) {\n url = appendParamToURL(url, 'isSubscriptionProduct', true);\n }\n\n return submitFormJson(url, {\n pid: pid,\n uuid: uuid\n }, 'POST')\n .then((response) => {\n if (!response) {\n return response;\n }\n\n if (response.basket) {\n localStorageWrapper.removeItem('cartItemIds');\n localStorageWrapper.setItem('currentSid', getCookie('sid'));\n localStorageWrapper.setItem('cartItemIds', JSON.stringify(response.basket.itemsIds || []));\n this.eventBus().emit('remove.product.line.item', response);\n }\n\n this.needUpdate = true;\n\n response.basket.isProductRemoved = true;\n\n this.eventBus().emit('minicart.updated', response.basket);\n this.eventBus().emit('minicart.remove.product', this);\n this.accessibilityAlert(\n movedToWishlist\n ? this.prefs().accessibilityAlerts.movedtowishlist\n : this.prefs().accessibilityAlerts.productremoved\n );\n this.updateContent();\n\n return response;\n })\n .catch(response => {\n this.displayItemLevelErrorMessage(uuid, (response && response.message));\n });\n }\n }\n\n return MinicartDialog;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/header/HamburgerMenuItem').default>} BaseHamburgerMenuItem\n */\n\n/**\n * @description Extend HamburgerMenuItem implementation\n * @param {BaseHamburgerMenuItem} BaseHamburgerMenuItem Base widget for extending\n * @returns {typeof HamburgerMenuItem} HamburgerMenuItem extending widget\n */\nexport default function (BaseHamburgerMenuItem) {\n /**\n * @class HamburgerMenuItem\n * @augments BaseHamburgerMenuItem\n */\n class HamburgerMenuItem extends BaseHamburgerMenuItem {\n prefs() {\n return {\n level: '',\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n\n this.eventBus().on('nav.panel.open', 'renderMenuItems');\n }\n\n renderMenuItems() {\n return new Promise((resolve) => {\n if (this.has('submenuTemplate') && !this.submenuRendered) {\n this.render('submenuTemplate', {}, this.ref('submenu')).then(() => {\n this.submenuRendered = true;\n resolve(true);\n });\n } else {\n resolve(true);\n }\n });\n }\n\n /**\n * @description Set Submenu HTML\n * @param {string} submenuHTML Submenu HTML\n * @returns {void}\n */\n setSubmenuHTML(submenuHTML) {\n const idSuffix = '-copy-';\n\n super.setSubmenuHTML(submenuHTML.replace(/id=\"([^\"]+)\"/gm, (match, token) => {\n let id = token;\n const idSuffixPosition = id.indexOf(idSuffix);\n\n if (idSuffixPosition > -1) {\n id = id.slice(0, idSuffixPosition);\n }\n\n return `id=\"${id}${idSuffix}${this.prefs().level}\"`;\n }));\n }\n\n /**\n * @description Click Event handler\n * @listens dom#click\n * @param {HTMLElement} el Source of keydown event\n * @param {Event} event Event object\n * @returns {void}\n */\n handleClick(el, event) {\n super.handleClick(el, event);\n\n this.eventBus().emit('navigation.click.event', {\n event: 'data-layer-event',\n eventCategory: 'Navigation',\n eventAction: 'Top navigation',\n eventSublabel: el.data('gtmEventSublabel')\n });\n }\n }\n\n return HamburgerMenuItem;\n}\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @param BaseMegaMenu Base widget for extending\n * @returns MegaMenu widget\n */\nexport default function (BaseMegaMenu: ReturnType<typeof import('widgets/header/MegaMenu').default>) {\n /**\n * @category widgets\n * @subcategory header\n * @class MegaMenu\n * @augments BaseMegaMenu\n * @classdesc Menu bar widget for Top Navigation menu.\n */\n class MegaMenu extends BaseMegaMenu {\n /**\n * @description Initialize widget logic.\n * Define current, first and last menu item.\n * Set the role of menu.\n */\n init() {\n super.init();\n\n this.eventBus().on('mega.menu.current.item', 'setCurrentItem');\n }\n\n /**\n * @description Set item as current\n * @param item item\n */\n setCurrentItem(item?: InstanceType<TWidget>): void {\n if (item) {\n this.currentItem = item;\n } else {\n this.currentItem = this.firstItem;\n }\n }\n }\n\n return MegaMenu;\n}\n","import { clickOutside } from 'widgets/toolbox/util';\n\n/**\n * @typedef {ReturnType<typeof import('widgets/header/MenuBarItem').default>} BaseMenuBarItem\n */\n\n/**\n * @param {BaseMenuBarItem} BaseMenuBarItem Base widget for extending\n * @returns {typeof MenuBarItem} MenuBarItem widget\n */\nexport default function (BaseMenuBarItem) {\n /**\n * @category widgets\n * @subcategory header\n * @class MenuBarItem\n * @augments BaseMenuBarItem\n */\n class MenuBarItem extends BaseMenuBarItem {\n prefs() {\n return {\n observe: false,\n classesStickyOverflow: 'm-sticky_overflow',\n ...super.prefs()\n };\n }\n\n init() {\n super.init();\n\n document.addEventListener('mousemove', () => this.renderMenuItems(), { once: true });\n\n this.eventBus().on('mega.menu.render.items', 'renderMenuItems');\n\n if (this.prefs().observe) {\n this.eventBus().on('header.stuck', 'onHeaderStuck');\n this.eventBus().on('header.unstuck', 'onHeaderUnStuck');\n\n if (document.body.classList.contains('b-header_stuck')) {\n this.onHeaderStuck();\n }\n }\n }\n\n onHeaderStuck() {\n const selfElement = this.ref('self').get();\n const parentElement = selfElement?.parentElement;\n let isHidden = false;\n\n if (selfElement && parentElement) {\n isHidden = parentElement.scrollWidth > parentElement.clientWidth\n && (selfElement.offsetLeft + selfElement.clientWidth) > (parentElement.offsetLeft + parentElement.clientWidth);\n }\n\n if (isHidden) {\n this.ref('self').addClass(this.prefs().classesStickyOverflow);\n }\n }\n\n onHeaderUnStuck() {\n this.ref('self').removeClass(this.prefs().classesStickyOverflow);\n }\n\n /**\n * @description Returns menu item array\n * @returns {Array<HTMLElement>} MenuItems array\n */\n getMenuItems() {\n const menuItems = [];\n\n this.eachChild(child => {\n if (!(child instanceof MenuBarItem)) {\n return;\n }\n\n child.has(this.prefs().itemLink, (itemLink) => {\n menuItems.push(itemLink.get());\n });\n child.has(this.prefs().menuMoreLink, (menuMoreLink) => {\n menuItems.push(menuMoreLink.get());\n });\n });\n\n return menuItems;\n }\n\n renderMenuItems() {\n return new Promise((resolve) => {\n if (this.has('submenuTemplate') && !this.submenuRendered) {\n this.render('submenuTemplate', {}, this.ref('submenu')).then(() => {\n this.submenuRendered = true;\n resolve(true);\n });\n } else {\n resolve(true);\n }\n });\n }\n\n /**\n * @description Open menu if exist and focus first/last element\n * @emits MenuBarItem#megaMenuRenderItems\n * @param {boolean} [focusFirstItem] Item focus flag\n * @param {boolean} [focusLastItem] Item focus flag\n * @returns {void}\n */\n openMenu(focusFirstItem, focusLastItem) {\n if (this.has('submenuTemplate') && !this.submenuRendered) {\n this.renderMenuItems().then(() => {\n super.openMenu(focusFirstItem, focusLastItem);\n this.openMenuAfter();\n this.eventBus().emit('mega.menu.render.items');\n });\n } else {\n super.openMenu(focusFirstItem, focusLastItem);\n this.openMenuAfter();\n }\n }\n\n /**\n * @description Actions after menu opening\n * @emits MenuBarItem#megaMenuCurrentItem\n * @returns {void}\n */\n openMenuAfter() {\n // set opened item as current to proper navigation via keyboard\n this.eventBus().emit('mega.menu.current.item', this);\n\n if (this.hasSubmenu()) {\n // replace outside click listener to fix issue with menu closing after navigation via keyboard\n if (this.outSideListener) {\n this.outSideListener();\n }\n\n this.outSideListener = clickOutside(this.ref('self'), () => {\n this.eventBus().emit('mega.menu.close.items');\n }, false);\n }\n }\n\n /**\n * @description Close menu\n * @param {boolean} [returnFocus] Focus flag\n * @returns {void}\n */\n closeMenu(returnFocus) {\n super.closeMenu(returnFocus);\n this.eventBus().emit('mega.menu.current.item');\n }\n\n /**\n * @description Click Event handler\n * @listens dom#click\n * @param {HTMLElement} el Source of keydown event\n * @param {Event} event Event object\n * @returns {void}\n */\n handleClick(el, event) {\n super.handleClick(el, event);\n\n this.eventBus().emit('navigation.click.event', {\n event: 'data-layer-event',\n eventCategory: 'Navigation',\n eventAction: 'Top navigation',\n eventSublabel: el.data('gtmEventSublabel')\n });\n }\n }\n\n return MenuBarItem;\n}\n","import { timeout } from 'widgets/toolbox/util';\n\n/**\n * @typedef {ReturnType<typeof import('widgets/header/MenuBarItem').default>} MenuBarItem\n */\n\nconst ITEM_SWITCH_TIMEOUT = 200;\n\nconst keyCode = Object.freeze({\n ESC: 27,\n LEFT: 37,\n RIGHT: 39\n});\n\n/**\n * @param {MenuBarItem} MenuBarItem Base widget for extending\n * @returns {typeof MenuBarItemExt} MenuBarItem widget\n */\nexport default function (MenuBarItem) {\n /**\n * @category widgets\n * @subcategory header\n * @class MenuBarItem\n * @augments MenuBarItem\n */\n class MenuBarItemExt extends MenuBarItem {\n /**\n * @description Open menu if exist and focus first/last element\n * @emits MenuBarItem#megaMenuCloseItems\n * @param {boolean} [focusFirstItem] Item focus flag\n * @param {boolean} [focusLastItem] Item focus flag\n * @returns {void}\n */\n openMenu(focusFirstItem, focusLastItem) {\n if (this.hasSubmenu()) {\n this.ref(this.prefs().itemLink)\n .attr('aria-expanded', 'true');\n this.ref(this.prefs().submenu)\n .attr('aria-hidden', 'false');\n this.ref(this.prefs().submenu)\n .attr('data-tau', 'menu_flyout');\n this.isSubmenuOpen = true;\n this.isSubmenuInFocus = focusFirstItem || focusLastItem;\n\n if (focusFirstItem) {\n this.setFocusToFirstItem();\n }\n\n if (focusLastItem) {\n this.setFocusToLastItem();\n }\n }\n }\n\n /**\n * @description Mouse enter event handler\n * @listens dom#mouseenter\n * @emits MenuBarItem#megaMenuCloseItems\n * @returns {void}\n */\n mouseEnter() {\n if (this.timerCleanerLeave) {\n this.timerCleanerLeave();\n }\n\n this.timerCleanerEnter = timeout(() => {\n this.openMenu();\n }, ITEM_SWITCH_TIMEOUT);\n }\n\n /**\n * @description Keydown Event handler\n * @listens dom#keydown\n * @param {HTMLElement} _ Source of keydown event\n * @param {KeyboardEvent} event Event object\n * @returns {void}\n */\n handleKeydown(_, event) {\n let preventEventActions = false;\n let preventSuperHandling = false;\n\n switch (event.keyCode) {\n case keyCode.ESC:\n this.closeMenu(true);\n preventSuperHandling = true;\n\n break;\n\n case keyCode.RIGHT:\n if (!this.hasFocusedSubmenu()) {\n this.openMenu(true, false);\n }\n\n preventEventActions = true;\n\n break;\n\n case keyCode.LEFT:\n if (this.hasFocusedSubmenu()) {\n this.closeMenu(true);\n preventEventActions = true;\n }\n\n break;\n\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n if (!preventSuperHandling) {\n super.handleKeydown(_, event);\n }\n }\n }\n\n return MenuBarItemExt;\n}\n","/**\n * @typedef {ReturnType<typeof import('widgets/header/MenuPanel').default>} BaseMenuPanel\n */\n\n/**\n * @param {BaseMenuPanel} BaseMenuPanel Base widget for extending\n * @returns {typeof MenuPanel} MenuPanel widget\n */\nexport default function (BaseMenuPanel) {\n /**\n * @category widgets\n * @subcategory header\n * @class MenuPanel\n * @augments BaseMenuPanel\n */\n class MenuPanel extends BaseMenuPanel {\n /**\n * @description Clear menu panel state\n * @returns {void}\n */\n clearState() {\n super.clearState();\n\n this.has(this.prefs().panelContainer, (panelContainer) => {\n panelContainer.removeClass(this.prefs().classesActiveLevel + this.currentLevel);\n this.currentLevel = 1;\n });\n }\n\n /**\n * @description Handle panel level\n * @param {number} level Level\n * @param {boolean} focusPanelItem Focus panel item flag\n * @param {string} [panelName] Panel Name\n * @param {string} [htmlMarkup] HTML Markup\n * @returns {void}\n */\n handlePanel(level, focusPanelItem, panelName, htmlMarkup) {\n super.handlePanel(level, focusPanelItem, panelName, htmlMarkup);\n\n if (htmlMarkup) {\n this.getById(this.prefs().panel + level, (panel) => {\n panel.has(panel.prefs().submenu, (submenu) => {\n submenu.attr('role', 'menu');\n });\n });\n }\n }\n }\n\n return MenuPanel;\n}\n","import { TWidget } from 'widgets/Widget';\n\n/**\n * @description Base Minicart implementation\n * @param Widget Modal widget for extending\n * @returns Minicart class\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory cart\n * @class Minicart\n * @augments Widget\n * @classdesc Minicart widget (located in header and shows only button with number of items in cart), used to:\n * - Reflect actual products quantity in cart\n * - Opens {@link MinicartDialog} by click, which contains all minicart content (products list, totals, buttons etc.)\n * @property {string} data-widget - Widget name `minicart`\n * @property {string} data-cart-url URL to be used for updating minicart widget (for ex. in case of removing products from minicart)\n * @example <caption>Example of Minicart widget markup</caption>\n * <div\n * data-widget=\"minicart\"\n * data-cart-url=\"${URLUtils.https('Cart-Show')}\"\n * >\n * <div\n * data-ref=\"minicartContent\"\n * data-count=\"${pdict.quantityTotal}\"\n * >\n * ... show minicart button\n * </div>\n * <script data-ref=\"template\" type=\"template/mustache\">\n * <div data-ref=\"minicartContent\" data-count=\"{{quantityTotal}}\" class=\"b-minicart_icon\">\n * ... show minicart button\n * </div>\n * </script>\n * </div>\n */\n class Minicart extends Widget {\n /**\n * @description Returns Widget configuration object\n * @returns {object} Widget configuration object\n */\n prefs() {\n return {\n refMinicartContent: 'minicartContent',\n accessibilityAlerts: <TAccessibilityAlerts>{},\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization logic\n * @listens \"product.added.to.cart\"\n * @listens \"cart.updated\"\n * @listens \"product.updated\"\n * @listens \"minicart.updated\"\n * @returns {void}\n */\n init() {\n this.eventBus().on('product.added.to.cart', 'reRenderMinicartWrapper');\n this.eventBus().on('cart.updated', 'reRenderMinicartWrapper');\n this.eventBus().on('product.updated', 'reRenderMinicartWrapper');\n this.eventBus().on('minicart.updated', 'reRenderMinicartWrapper');\n }\n\n /**\n * @description Used to obtain clear cart model object from server response\n * @param {object} response Response from server\n * @returns {object} Cart model object\n */\n normalizeCartModel(response) {\n return response.cartModel ? response.cartModel : response;\n }\n\n /**\n * @description Called when needs to re-render minicart (for ex. when cart / product in a cart was updated)\n * @param {object} response response from server\n * @returns {Promise<void|null>} Promise object represents mini cart rendering result\n */\n reRenderMinicartWrapper(response) {\n const cart = this.normalizeCartModel(response);\n\n // Return if response have no Cart Model\n if (!cart.totals) {\n return Promise.resolve(null);\n }\n\n // eslint-disable-next-line spellcheck/spell-checker\n const isShownQtyTotal = parseInt(cart.numItems, 10);\n\n // eslint-disable-next-line spellcheck/spell-checker\n return this.render('template', {\n quantityTotal: cart.numItems,\n isShownQtyTotal: isShownQtyTotal > 0,\n isOpen: cart.isOpen\n }, this.ref(this.prefs().refMinicartContent)).then(() => {\n if (cart.showMinicart) {\n this.showMinicart();\n }\n });\n }\n\n /**\n * @description A method, called when event `click` happens on minicart icon\n * - Check cart total if empty redirect to cart page\n * - Shows minicart popover\n * @listens dom#click\n * @returns {void}\n */\n showMinicart() {\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'string | number | boolean | RefE... Remove this comment to see the full error message\n const cartQtyTotal = parseInt(this.ref(this.prefs().refMinicartContent).data('count'), 10);\n\n if (cartQtyTotal === 0) {\n window.location.assign((this.prefs() as any).cartUrl);\n\n return;\n }\n\n this.eventBus().emit('minicart.show');\n }\n }\n\n return Minicart;\n}\n","import { getContentByUrl, submitFormJson, submitFormJsonWithAbort } from 'widgets/toolbox/ajax';\nimport { timeout } from 'widgets/toolbox/util';\n\n/**\n * @typedef {InstanceType<ReturnType<typeof import('widgets/global/ConfirmDialog').default>>} confirmDialog\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n * @typedef {ReturnType<typeof import('widgets/forms/InputStepper').default>} InputStepper\n * @typedef {InstanceType<ReturnType<typeof import('widgets/forms/InputStepper').default>>} inputStepper\n */\n/**\n * @description Base MinicartDialog implementation\n * @param Modal Modal widget for extending\n * @returns MinicartDialog class\n */\nexport default function (Modal: ReturnType<typeof import('widgets/global/Modal').default>) {\n /**\n * @category widgets\n * @subcategory cart\n * @class MinicartDialog\n * @augments Modal\n * @classdesc MinicartDialog widget, that contains all needed logic to display/update minicart component.\n * Widget manages next actions:\n * 1. Change product quantity\n * 2. Remove product (move to Wish list) from Cart\n * 3. Communicate actions results\n * 4. Re-render Minicart including products list and cart summary in case of actions like: quantity changed, product removed etc.\n * 5. Enable/disable \"Secure Checkout\" button to move to Checkout process depending on if there are errors in cart, which prevents moving to Checkout\n * Update of Minicart - uses re-render of Minicart wrapper with HTML-markup, which comes from server, but not based on Cart JSON model.\n * @property {string} data-widget - Widget name `minicartDialog`\n * @property {string} data-action-url - URL to be used for updating minicart widget (for ex. in case of removing products from minicart)\n * @property {object} data-accessibility-alerts - Accessibility alerts per minicart action\n * Possible values are: `quantitychanged`, `productremoved`\n * @property {string} data-action-movetowishlist - Move product to Wish list action URL\n * @example <caption>Example of MinicartDialog widget markup</caption>\n * <div\n * ....\n * data-widget=\"minicartDialog\"\n * data-disable-rendering=\"true\"\n * data-classes-loading=\"m-loading_long\"\n * data-action-url=\"${URLUtils.url('Cart-MiniCartShow')}\"\n * data-accessibility-alerts='{\n * \"quantitychanged\": \"${Resource.msg('alert.quantitychanged', 'cart', null)}\",\n * \"productremoved\": \"${Resource.msg('alert.productremoved', 'cart', null)}\",\n * \"movedtowishlist\": \"${Resource.msg('alert.movedtowishlist', 'cart', null)}\"\n * }'\n * data-action-movetowishlist=\"${URLUtils.url('Wishlist-AddProduct').toString()}\"\n * >\n * <div\n * class=\"b-minicart_panel-container\"\n * data-ref=\"container\"\n * >\n * <div\n * class=\"b-minicart\"\n * role=\"dialog\"\n * aria-modal=\"true\"\n * data-ref=\"dialog\"\n * >\n * <div class=\"b-minicart-inner\">\n * <div class=\"b-minicart-header\">\n * <div data-tau=\"minicart_close\">\n * <isinclude template=\"components/modal/closeButton\"/>\n * </div>\n * </div>\n * </div>\n * </div>\n * </div>\n * <isinclude template=\"cart/cartRemoveProductModal\"/>\n * </div>\n */\n class MinicartDialog extends Modal {\n /**\n * @description Returns Widget configuration object\n * @returns {object} Widget configuration object\n */\n prefs() {\n return {\n actionUrl: '',\n accessibilityAlerts: <TAccessibilityAlerts>{},\n classesActivated: 'm-activated',\n ...super.prefs()\n };\n }\n\n /**\n * @description Widget initialization logic\n * @listens \"minicart.show\"\n * @listens \"product.added.to.cart\"\n * @listens \"cart.updated\"\n * @listens \"product.updated\"\n * @returns {void}\n */\n init() {\n super.init();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'needUpdate' does not exist on type 'Mini... Remove this comment to see the full error message\n this.needUpdate = true;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n this.updateQtyRequests = [];\n this.eventBus().on('minicart.show', 'showMinicart');\n this.eventBus().on('product.added.to.cart', 'setUpdateFlag');\n this.eventBus().on('cart.updated', 'setUpdateFlag');\n this.eventBus().on('product.updated', 'setUpdateFlag');\n }\n\n /**\n * @description Set Update Flag - in which cases Minicart should be updated\n * @param {object} response Response object from server\n * @returns {void}\n */\n setUpdateFlag(response) {\n if (response.cartModel || response.showMinicart) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'needUpdate' does not exist on type 'Mini... Remove this comment to see the full error message\n this.needUpdate = true;\n }\n }\n\n /**\n * @description A method, called when event `click` happens on minicart icon\n * - Check cart total if empty redirect to cart page\n * - Shows minicart panel\n * - Update content of the panel\n * @returns {void}\n */\n showMinicart() {\n this.showModal({\n attributes: {\n 'data-tau-unique': 'minicart_dialog'\n }\n }); // show minicart immediately for better UX\n this.ref(this.prefs().refDialog).addClass(this.prefs().classesActivated);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isMiniCartOpened' does not exist on type... Remove this comment to see the full error message\n this.isMiniCartOpened = true;\n this.updateContent();\n }\n\n /**\n * @description Close Minicart Dialog\n * @listens dom#click\n * @returns {void}\n */\n cancel() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isMiniCartOpened' does not exist on type... Remove this comment to see the full error message\n this.isMiniCartOpened = false;\n super.cancel();\n }\n\n /**\n * @description Update minicart panel content\n * Fetch actual content in case when it needed. Use flag `needUpdate` for this\n * @returns {Promise<object|null>} Promise object represents server response for minicart updating\n */\n updateContent() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'needUpdate' does not exist on type 'Mini... Remove this comment to see the full error message\n if (!this.needUpdate || !this.isMiniCartOpened) {\n return Promise.resolve(null);\n }\n\n this.toggleSpinner(true);\n\n return getContentByUrl(this.prefs().actionUrl)\n .then((response) => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'needUpdate' does not exist on type 'Mini... Remove this comment to see the full error message\n this.needUpdate = false;\n\n return this.render(undefined, {}, this.ref(this.prefs().refDialog), String(response)).then(() => {\n this.toggleSpinner(false);\n this.addFocusTraps(); // enclose new content with focus trap\n }).then(() => response);\n })\n .catch(() => {\n this.eventBus().emit('alert.show', { errorCode: 500 });\n this.toggleSpinner(false);\n this.close();\n\n return Promise.resolve(null);\n });\n }\n\n /**\n * @description Updates quantity for concrete product in minicart widget\n * @param {inputStepper} quantityStepper - Target select input in minicart widget, which triggers quantity update\n * @emits \"minicart.updated\"\n * @returns {Promise<object|null>} Promise object represents server response with quantity updating result\n */\n updateQty(quantityStepper) {\n const currentQuantity = quantityStepper.currentValue;\n const isQuantityBelowMinValue = currentQuantity < quantityStepper.config.lineItemMinOrderQuantity;\n\n this.toggleSpinner(true);\n\n if ((currentQuantity === 0) || isQuantityBelowMinValue) {\n this.removeProduct(quantityStepper);\n this.toggleSpinner(false);\n\n return Promise.resolve(null);\n }\n\n const uuid = quantityStepper.data('uuid');\n const requestObject = submitFormJsonWithAbort(quantityStepper.data('action'), {\n pid: quantityStepper.data('pid'),\n uuid: uuid,\n quantity: quantityStepper.getValue()\n }, 'POST');\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n this.updateQtyRequests.push(requestObject);\n\n // @ts-expect-error ts-migrate(2532) FIXME: Object is possibly 'undefined'.\n return requestObject.promise\n .catch(response => {\n if (response.name === 'AbortError') {\n return;\n }\n\n this.displayItemLevelErrorMessage(uuid, (response && response.message));\n })\n .then((response) => {\n if (!response) {\n return Promise.resolve(null);\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'needUpdate' does not exist on type 'Mini... Remove this comment to see the full error message\n this.needUpdate = true;\n /**\n * @description Event to notify concerned widgets, that Minicart was updated\n * @event \"minicart.updated\"\n */\n this.eventBus().emit('minicart.updated', response);\n this.accessibilityAlert(this.prefs().accessibilityAlerts.quantitychanged);\n this.updateContent();\n\n return response;\n })\n .finally(() => {\n this.toggleSpinner(false);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n const index = this.updateQtyRequests.indexOf(requestObject);\n\n if (index > -1) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n this.updateQtyRequests.splice(index, 1);\n }\n });\n }\n\n /**\n * @description Called when Customer confirms product deletion in a modal\n * <br>In fact sends request to server to delete product line item from basket\n * <br>and updates minicart widget based on server response\n * @emits \"minicart.remove.product\"\n * @param {refElement|null|confirmDialog} confirmDialog - confirmation popup, triggered action\n * @param {boolean} [movedToWishlist] - Optional, if we need to move item to wishlist\n * @returns {Promise<object|null>} Promise object represents server response for product removing\n */\n confirmedRemoveProduct(confirmDialog, movedToWishlist = false) {\n if (!confirmDialog) {\n return Promise.resolve(null);\n }\n\n const attributes = confirmDialog.attributes;\n const uuid = attributes.uuid;\n const url = attributes.url;\n const pid = attributes.pid;\n\n this.eventBus().emit('minicart.remove.product', this);\n\n return submitFormJson(url, {\n pid: pid,\n uuid: uuid\n }, 'POST')\n .then((response) => {\n if (!response) {\n return response;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'needUpdate' does not exist on type 'Mini... Remove this comment to see the full error message\n this.needUpdate = true;\n this.eventBus().emit('minicart.updated', response.basket);\n this.accessibilityAlert(\n movedToWishlist\n ? this.prefs().accessibilityAlerts.movedtowishlist\n : this.prefs().accessibilityAlerts.productremoved\n );\n this.updateContent();\n\n return response;\n })\n .catch(response => {\n this.displayItemLevelErrorMessage(uuid, (response && response.message));\n });\n }\n\n /**\n * @description Aborts redundant update product quantity requests\n * @returns {void}\n */\n dismissQty() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n this.updateQtyRequests.forEach((request) => {\n request.abortController.abort();\n });\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'updateQtyRequests' does not exist on typ... Remove this comment to see the full error message\n this.updateQtyRequests = [];\n }\n\n /**\n * @description Handle cancel confirmDialog that was called due quantity stepper value is 0\n * Set quantity stepper value to 1 if confirmDialog cancel\n * @param {confirmDialog} confirmationDialog Target popup\n * @returns {void}\n */\n cancelProductRemoving(confirmationDialog) {\n const attributes = confirmationDialog && confirmationDialog.attributes;\n\n if (attributes\n && (attributes.currentValue === 0\n || attributes.currentValue < attributes.minOrderQuantity)) {\n const uuid = attributes.uuid;\n const minOrderQuantity = attributes.minOrderQuantity;\n const qtyStepperID = `quantityStepper-${uuid}`;\n\n this.getById(qtyStepperID, (stepper) => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'setInputValue' does not exist on type 'W... Remove this comment to see the full error message\n stepper.setInputValue(stepper.filterInput(minOrderQuantity));\n });\n }\n }\n\n /**\n * @description Display line item level error message.\n * Usually comes with ajax request to remove product or update quantity,\n * and in case if this product is no longer in a basket.\n * @param {string} lineItemUUID - A line item UUID in minicart.\n * @param {string} errorMessage - An error message to show.\n * @returns {void}\n */\n displayItemLevelErrorMessage(lineItemUUID, errorMessage) {\n this.ref(`miniCartItemErrorMessage-${lineItemUUID}`)\n .show().setText(errorMessage || '');\n }\n\n /**\n * @description Shows `remove product` dialog for Customer\n * @param {refElement|inputStepper} link link which is clicked by user\n * @returns {void}\n */\n removeProduct(link) {\n const InputStepper = /** @type {InputStepper} */ (this.getConstructor('InputStepper'));\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'removeProductLink' does not exist on typ... Remove this comment to see the full error message\n this.removeProductLink = link;\n const uuid = link.data('uuid');\n const url = link.data('removeAction') || link.data('action');\n const pid = link.data('pid');\n const qtyStepperID = `quantityStepper-${uuid}`;\n let currentQuantityStepperValue = 1;\n let lineItemMinOrderQuantity = null;\n\n if (link instanceof InputStepper) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'getValue' does not exist on type 'Widget... Remove this comment to see the full error message\n currentQuantityStepperValue = parseInt(link.getValue(), 10);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'lineItemMinOrderQuantity' does not exist... Remove this comment to see the full error message\n lineItemMinOrderQuantity = link.prefs().lineItemMinOrderQuantity;\n } else {\n this.getById(qtyStepperID, (/** @type {inputStepper} */ stepper) => {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'getValue' does not exist on type 'Widget... Remove this comment to see the full error message\n currentQuantityStepperValue = parseInt(stepper.getValue(), 10);\n });\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'showModal' does not exist on type 'Widge... Remove this comment to see the full error message\n this.getById('confirmDialog', (/** @type {confirmDialog} */ dialog) => dialog.showModal({\n productName: link.data('name'),\n attributes: {\n uuid: uuid,\n url: url,\n pid: pid,\n currentValue: currentQuantityStepperValue,\n minOrderQuantity: lineItemMinOrderQuantity\n }\n }));\n }\n\n /**\n * @description Executes when user clicks on product details link in the minicart.\n * Usually used by analytics etc.\n * @emits \"minicart.product.link.click\"\n * @param {refElement} link - clicked product tile link\n * @returns {void}\n */\n onProductLinkClick(link) {\n this.eventBus().emit('minicart.product.link.click', link);\n }\n\n /**\n * @description Shows spinner bar in widget once any update operations (server calls) are pending\n * @param {boolean} isBusy - show / hide spinner\n * @returns {void}\n */\n toggleSpinner(isBusy) {\n this.ref('dialog')\n .removeClass((this.prefs() as any).classesLoading)\n .attr('aria-busy', isBusy.toString());\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'longWaitingTimeout' does not exist on ty... Remove this comment to see the full error message\n if (this.longWaitingTimeout) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'longWaitingTimeout' does not exist on ty... Remove this comment to see the full error message\n this.longWaitingTimeout();\n }\n\n if (isBusy) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'longWaitingTimeout' does not exist on ty... Remove this comment to see the full error message\n this.longWaitingTimeout = timeout(() => {\n this.ref('dialog')\n .addClass((this.prefs() as any).classesLoading);\n }, 1000);\n }\n }\n\n /**\n * @description Fires `alert.show` event to be handled with Global Alerting System\n * @param {string} accessibilityAlert - alert string\n * @returns {void}\n */\n accessibilityAlert(accessibilityAlert) {\n this.eventBus().emit('alert.show', {\n accessibilityAlert\n });\n }\n\n /**\n * @description Move product from minicart to wishlist.\n * In fact this functionality implemented in 2 steps:\n * 1. Add product to wishlist\n * 2. Remove product from minicart\n * This is done due to possible backend code duplication in one universal endpoint\n * @param {confirmDialog} confirmationDialog Target popup\n * @returns {Promise<object|null>} Promise object represents server response for product moving to wishlist\n */\n moveProductToWishlist(confirmationDialog) {\n if (!confirmationDialog) {\n return Promise.resolve(null);\n }\n\n return submitFormJson((this.prefs() as any).actionMovetowishlist, {\n pid: confirmationDialog.attributes.pid,\n qty: confirmationDialog.attributes.currentValue\n }).then((response) => {\n this.confirmedRemoveProduct(confirmationDialog, true);\n\n return response;\n });\n }\n }\n\n return MinicartDialog;\n}\n","import { TWidget } from 'widgets/Widget';\nimport { getJSONByUrl } from '../toolbox/ajax';\n\nconst keyCode = Object.freeze({\n RETURN: 13,\n SPACE: 32\n});\n\n/**\n * @typedef {InstanceType<typeof import('widgets/toolbox/RefElement').RefElement>} refElement\n */\n\n/**\n * @description Country selector switcher\n * @param Widget Base widget for extending\n * @returns Country Selector widget\n */\n\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory header\n * @class CountrySelector\n * @augments Widget\n * @classdesc Represents `CountrySelector` implementation:\n * - Acts as a usability [component {@link MenuButton}](https://www.w3.org/TR/wai-aria-practices/#menubutton) on lg/xl viewports and as {@link HamburgerMenuItem} on sm/md viewports\n * For sm/md viewports {@link CountrySelector} class will be mixed into special {@link HamburgerMenuItem}-like class {@link CountrySelectorMenuItem}\n * - Allows customer to choose target localized version of the site for both, locales and external sites. Also changes currency in accordance to selected locale/country.\n * @property {string} data-widget - Widget name `countrySelector`\n * @property {string} data-url-locale - Set chosen localization info URL for current site locale\n * @property {string} data-url-site - Set chosen site info URL for target site locale\n * @example <caption>Example of CountrySelector for lg/xl viewport</caption>\n * <div\n * data-widget=\"countrySelector\"\n * data-url-locale=\"${URLUtils.url('Page-SetLocale')}\"\n * data-url-site=\"${URLUtils.url('Page-SetSite')}\"\n * >\n * <div\n * class=\"b-country_selector\"\n * data-widget.lg.xl=\"menuButton\"\n * data-event-keydown.lg.xl=\"handleKeydown\"\n * data-event-click.lg.xl=\"toggleMenu\"\n * data-forward-to-parent=\"switchLocale\"\n * >\n * <button\n * onclick=\"\"\n * class=\"b-country_selector-switcher\"\n * ...\n * >\n * <span class=\"b-country_selector-locale\">\n * ... selected locale\n * </span>\n * </button>\n *\n * <ul\n * role=\"menu\"\n * ...\n * >\n * <isloop items=\"${pdict.localeModel.locale.localeLinks}\" var=\"localeLink\">\n * <li\n * data-widget.lg.xl=\"menuBarItem\"\n * data-forward-to-parent=\"switchLocale\"\n * ...\n * >\n * <button\n * data-locale-config=\"${JSON.stringify(localeLink)}\"\n * data-event-click.prevent=\"switchLocale\"\n * data-event-keydown=\"switchLocale\"\n * ...\n * >\n * ...\n * <span class=\"b-country_selector-locale_language\">${localeLink.displayName}</span>\n * </button>\n * </li>\n * </isloop>\n * </ul>\n * </div>\n * </div>\n * @example <caption>Example of CountrySelector for md/sm viewport</caption>\n * ...\n * <isloop items=\"${pdict.localeModel.locale.localeLinks}\" var=\"localeLink\">\n * <div role=\"none\" class=\"b-menu_bar-flyout_column\">\n * <div\n * data-widget.sm.md=\"countrySelectorMenuItem\"\n * data-event-click.sm.md=\"handleClick\"\n * data-event-keydown.sm.md=\"handleKeydown\"\n * data-locale-config=\"${JSON.stringify(localeLink)}\"\n * data-url-locale=\"${URLUtils.url('Page-SetLocale')}\"\n * data-url-site=\"${URLUtils.url('Page-SetSite')}\"\n * ...\n * >\n * <button ...>\n * ... locale data\n * </button>\n * </div>\n * </div>\n * </isloop>\n */\n class CountrySelector extends Widget {\n prefs() {\n return {\n urlLocale: '',\n urlSite: '',\n ...super.prefs()\n };\n }\n\n /**\n * @description Method to switch locale depending on event. Is used for switching locale either by mouse click or by pressing `enter` or `space` on button from keyboard\n * @listens dom#keydown\n * @listens dom#click\n * @param {refElement} button An element, which was chosen by customer and contains all info about selected localization in data attributes\n * @param {Event} event Source event, happened on button element\n * @returns {void}\n */\n switchLocale(button, event) {\n if (!(event instanceof KeyboardEvent)) {\n this.changeLocale(button.data('localeConfig'));\n\n return;\n }\n\n let preventEventActions = false;\n\n switch (event.keyCode) {\n case keyCode.RETURN:\n case keyCode.SPACE:\n preventEventActions = true;\n this.changeLocale(button.data('localeConfig'));\n break;\n\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /**\n * @description Change locale. Sends change locale request,\n * obtains updated URL and follows it to display target locale/site\n * @param {object} localeConfig - Target Locale configuration object\n * @param {string} localeConfig.localeID - Target Locale ID\n * @param {string} localeConfig.currencyCode - Target Locale currency code\n * @param {string} localeConfig.siteID - Target Locale site ID\n * @param {boolean} localeConfig.isOtherSite - If Target Locale not belongs to current site\n * @returns {Promise<object>} Promise object represents server response for country changing\n */\n changeLocale(localeConfig) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'replace' does not exist on type 'string ... Remove this comment to see the full error message\n const queryString = (this.ref('html').data('querystring') || '').replace(/&/g, '&');\n const data: { [keys: string]: string; } = {\n code: localeConfig.localeID,\n CurrencyCode: localeConfig.currencyCode,\n queryString: queryString || '',\n action: <string> this.ref('html').data('action'),\n siteID: localeConfig.siteID\n };\n\n const url = localeConfig.isOtherSite ? this.prefs().urlSite : this.prefs().urlLocale;\n\n return getJSONByUrl(url, data).then(\n response => {\n if (response && response.redirectUrl) {\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'unknown' is not assignable to pa... Remove this comment to see the full error message\n window.location.assign(response.redirectUrl);\n }\n\n return response;\n }\n );\n }\n }\n\n return CountrySelector;\n}\n","const keyCode = Object.freeze({\n RETURN: 13,\n SPACE: 32\n});\n\n/**\n * @description Base CountrySelectorMenuItem implementation\n * @param HamburgerMenuItem Base widget for extending\n * @returns CountrySelectorMenuItem widget\n */\nexport default function (HamburgerMenuItem: ReturnType<typeof import('widgets/header/HamburgerMenuItem').default>) {\n /**\n * @category widgets\n * @subcategory header\n * @class CountrySelectorMenuItem\n * @augments HamburgerMenuItem\n * @classdesc CountrySelectorMenuItem component. Used to switch locales on small viewports. Mixes in 2 widgets:\n * - {@link HamburgerMenuItem} - to be able to behave correctly as a hamburger menu item on small viewports\n * - {@link CountrySelector} - to be able to handle Locale Switcher functionality\n * <br>Was created due to extend {@link HamburgerMenuItem} `click` and `keydown` and use {@link CountrySelector} mixin to switch locale/country\n * @property {string} data-widget - Widget name `countrySelectorMenuItem`\n * @property {object} data-locale-config - Locale item config object\n * @example\n * // use this code to display widget\n * <div\n * data-widget.sm.md=\"countrySelectorMenuItem\"\n * data-event-click.sm.md=\"handleClick\"\n * data-event-keydown.sm.md=\"handleKeydown\"\n * data-locale-config=\"${JSON.stringify(localeLink)}\"\n * data-url-locale=\"${URLUtils.url('Page-SetLocale')}\"\n * data-url-site=\"${URLUtils.url('Page-SetSite')}\"\n * role=\"none\"\n * class=\"b-menu_item\"\n * >\n * <button\n * role=\"menuitem\"\n * b-menu_item-link\n * tabindex=\"-1\"\n * data-ref=\"itemLink\"\n * class=\"b-menu_item-link\"\n * aria-label=\"${Resource.msgf('countrySelector.link.wai', 'global', null, localeLink.displayName)}\"\n * lang=\"${localeLink.language}\"\n * >\n * ....\n * </button>\n * </div>\n */\n class CountrySelectorMenuItem extends HamburgerMenuItem {\n /**\n * @description Click Event handler\n * @listens dom#click\n * @returns {void}\n */\n handleClick() {\n // class CountrySelector, method changeLocale\n this.callIfExists('changeLocale', this.ref('self').data('localeConfig'));\n }\n\n /**\n * @description Keydown Event handler\n * @listens dom#keydown\n * @param {HTMLElement} _ Source of keydown event\n * @param {KeyboardEvent} event Event object\n * @returns {void}\n */\n handleKeydown(_, event) {\n super.handleKeydown(_, event);\n\n let preventEventActions = false;\n\n switch (event.keyCode) {\n case keyCode.SPACE:\n case keyCode.RETURN:\n // class CountrySelector, method changeLocale\n this.callIfExists('changeLocale', this.ref('self').data('localeConfig'));\n preventEventActions = true;\n break;\n\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n return CountrySelectorMenuItem;\n}\n","const keyCode = Object.freeze({\n ESC: 27,\n PAGEUP: 33,\n PAGEDOWN: 34,\n END: 35,\n HOME: 36,\n UP: 38,\n DOWN: 40,\n RIGHT: 39,\n LEFT: 37\n});\n\n/**\n * @typedef {ReturnType<typeof import('widgets/header/MenuBarItem').default>} MenuBarItem\n */\n\n/**\n * @param ListAccessibility Base widget for extending\n * @returns HamburgerMenuItem widget\n */\nexport default function (ListAccessibility: ReturnType<typeof import('widgets/global/ListAccessibility').default>) {\n /**\n * @category widgets\n * @subcategory header\n * @class HamburgerMenuItem\n * @augments ListAccessibility\n * @classdesc Represents MenuPanel component with next features:\n * 1. Represents Menu Item with specific logic for submenus, handling viewtype changes, keyboard navigation, mouse click.\n * 2. Allow open/close menu\n * 3. Allow set/clear Submenu HTML\n * Submenu implemented as empty container where pasted html of selected category taken from original markup that was implemented for MegaMenu,\n * in order to not dublicate nav structure and reuse it as much as possible and to implement reliable slide animation\n * {@link HamburgerMenuItem} may contain another {@link HamburgerMenuItem}. {@link MenuBarItem} Widget can contain another {@link MenuBarItem} like submenu.\n * @example <caption>Example of HamburgerMenuItem widget usage</caption>\n * <li role=\"none\"\n * class=\"b-menu_bar-item\"\n * data-widget=\"hamburgerMenuItem\"\n * data-prevent-show-submenu=\"false\"\n * data-event-keydown=\"handleKeydown\"\n *>\n * <a\n * role=\"menuitem\"\n * class=\"b-menu_bar-link m-has-submenu\"\n * aria-label=\"${category.name}\"\n * aria-haspopup=\"true\"\n * aria-expanded=\"false\"\n * itemprop=\"url name\"\n * tabindex=\"${status.first ? 0 : -1}\"\n * href=\"<isprint value=\"${category.url}\" encoding=\"htmldoublequote\"/>\"\n * data-ref=\"itemLink\"\n * >\n * ${category.name}\n * </a>\n * <isset name=\"menuItem\" value=\"${category}\" scope=\"page\" />\n * <div\n * role=\"menu\"\n * class=\"b-menu_bar-flyout\"\n * aria-label=\"${category.name}\"\n * aria-hidden=\"true\"\n * data-ref=\"submenu\"\n * >\n * <div role=\"none\" class=\"b-menu_bar-flyout_inner\">\n * <isinclude template=\"components/header/menuItem\" />\n *\n * <button\n * role=\"menuitem\"\n * class=\"b-menu_bar-flyout_close\"\n * aria-label=\"${Resource.msg('common.close', 'common', null)}\"\n * title=\"${Resource.msg('common.close', 'common', null)}\"\n * type=\"button\"\n * tabindex=\"-1\"\n * >\n * <isinclude template=\"/common/svg/close\" />\n * </button>\n * </div>\n * </div>\n *</li>\n * @property {string} data-widget - Widget name `hamburgerMenuItem`\n * @property {string} data-event-keydown - Event listener for `handleKeydown` method\n * @property {boolean} [data-prevent-show-submenu=false] - prevent showing submenu\n */\n\n class HamburgerMenuItem extends ListAccessibility {\n /**\n * @description calls super constructor, adds initial states etc.\n *\n * @param {HTMLElement} el DOM element\n * @param {{[x: string]: object|string|number|boolean|null|undefined}} config widget config\n */\n constructor(el, config = {}) {\n super(el, config);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'H... Remove this comment to see the full error message\n this.isSubmenuOpen = false;\n }\n\n prefs() {\n return {\n preventShowSubmenu: false,\n submenu: 'submenu',\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic\n * @returns {void}\n */\n init() {\n this.defineItems();\n this.ref('self').attr('role', 'none');\n this.has(this.prefs().itemLink, () => {\n this.ref(this.prefs().itemLink).attr('role', 'menuitem');\n });\n\n this.onDestroy(() => {\n this.ref('self').attr('role', null);\n this.has(this.prefs().itemLink, () => {\n this.ref(this.prefs().itemLink).attr('role', null);\n });\n });\n }\n\n /**\n * @description Mark Submenu Opened\n * @returns {void}\n */\n markSubmenuOpened() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'H... Remove this comment to see the full error message\n this.isSubmenuOpen = true;\n }\n\n /**\n * @description Returns true if have submenu\n * @returns {boolean} Return true if submenu exist\n */\n hasSubmenu() {\n return this.has(this.prefs().submenu) && !this.prefs().preventShowSubmenu;\n }\n\n /**\n * @description Returns true if submenu open\n * @returns {boolean} Return true if submenu opened\n */\n hasOpenedSubmenu() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'H... Remove this comment to see the full error message\n return !!this.isSubmenuOpen;\n }\n\n /**\n * @description Open next menu level if exist\n * @emits HamburgerMenuItem#navPanelNextLevel\n * @returns {void}\n */\n openMenu() {\n if (this.hasSubmenu()) {\n let submenuHTML;\n let itemLinkRefEl;\n\n this.has(this.prefs().itemLink, (itemLink) => {\n itemLinkRefEl = itemLink;\n });\n this.has(this.prefs().submenu, (submenu) => {\n const submenuElement = submenu.get();\n\n if (submenuElement) {\n submenuHTML = submenuElement.innerHTML;\n }\n });\n /**\n * @description Event to open nav panel next level\n * @event HamburgerMenuItem#navPanelNextLevel\n */\n this.eventBus().emit('nav.panel.next.level', {\n htmlMarkup: submenuHTML,\n parentMenuItem: itemLinkRefEl\n });\n }\n }\n\n /**\n * @description Clear submenu HTML\n * @returns {void}\n */\n clearSubmenuHTML() {\n this.has(this.prefs().submenu, (submenu) => {\n const submenuElement = submenu.get();\n\n if (submenuElement) {\n submenuElement.innerHTML = '';\n }\n });\n }\n\n /**\n * @description Set Submenu HTML\n * @param {string} submenuHTML Submenu HTML\n * @returns {void}\n */\n setSubmenuHTML(submenuHTML) {\n this.has(this.prefs().submenu, (submenu) => {\n const submenuElement = submenu.get();\n\n if (submenuElement) {\n submenuElement.innerHTML = submenuHTML;\n }\n });\n }\n\n /**\n * @description Click Event handler\n * @listens dom#click\n * @param {HTMLElement} _ Source of keydown event\n * @param {Event} event Event object\n * @returns {void}\n */\n handleClick(_, event) {\n if (this.hasSubmenu()) {\n event.preventDefault();\n this.openMenu();\n }\n }\n\n /**\n * @description Keydown Event handler\n * @listens dom#keydown\n * @emits HamburgerMenuItem#navPanelPreviousLevel\n * @param {HTMLElement} _ Source of keydown event\n * @param {KeyboardEvent} event Event object\n * @returns {void}\n */\n handleKeydown(_, event) {\n let preventEventActions = false;\n\n if (!this.hasOpenedSubmenu()) {\n return;\n }\n\n switch (event.keyCode) {\n case keyCode.LEFT:\n /**\n * @description Event to nav panel previous level\n * @event HamburgerMenuItem#navPanelPreviousLevel\n */\n this.eventBus().emit('nav.panel.previous.level');\n preventEventActions = true;\n\n break;\n\n case keyCode.RIGHT:\n\n // @ts-expect-error ts-migrate(2532) FIXME: Object is possibly 'undefined'.\n this.currentItem.openMenu();\n preventEventActions = true;\n\n break;\n\n case keyCode.PAGEUP:\n case keyCode.HOME:\n this.setFocusToFirstItem();\n preventEventActions = true;\n\n break;\n\n case keyCode.PAGEDOWN:\n case keyCode.END:\n this.setFocusToLastItem();\n preventEventActions = true;\n\n break;\n\n case keyCode.UP:\n this.setFocusToPreviousItem();\n preventEventActions = true;\n\n break;\n\n case keyCode.DOWN:\n this.setFocusToNextItem();\n preventEventActions = true;\n\n break;\n\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n return HamburgerMenuItem;\n}\n","const keyCode = Object.freeze({\n TAB: 9,\n RETURN: 13,\n SPACE: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n});\n\ntype menuBarItem = InstanceType<ReturnType<typeof import('widgets/header/MenuBarItem').default>>;\n\n/**\n * @param ListAccessibility Base widget for extending\n * @returns MegaMenu widget\n */\nexport default function (ListAccessibility: ReturnType<typeof import('widgets/global/ListAccessibility').default>) {\n /**\n * @category widgets\n * @subcategory header\n * @class MegaMenu\n * @augments ListAccessibility\n * @classdesc Menu bar widget for Top Navigation menu.\n * Represents MegaMenu component with next features:\n * 1. Support keyboard navigation for accessibility using as basis ListAccessibility mixin and implement specific for Mega Menu accessibility behavior\n * 2. Implementing opening/closing of mega menu flyout\n *\n * MegaMenu widget should contain {@link MenuBarItem} widgets that implement one menu item.\n * For additional information you can check:\n * cartridges/app_storefront_widgets/cartridge/templates/default/components/header/menu.isml\n * MegaMenu widget (menubar in specs) should be imlemented according to https://www.w3.org/TR/wai-aria-practices/#menu specs\n * @example <caption>Example of MegaMenu usage</caption>\n <ul\n id=\"main-menu\"\n class=\"b-menu_bar-inner\"\n aria-label=\"Main categories\"\n data-widget.lg.xl=\"megaMenu\"\n data-event-keydown.lg.xl=\"handleKeydown\"\n >\n ...Menu bar items\n </ul>\n * @property {string} data-widget - Widget name `MegaMenu`\n * @property {string} data-event-keydown - Event listener for `handleKeydown` method\n */\n class MegaMenu extends ListAccessibility {\n /**\n * @description Initialize widget logic.\n * Define current, first and last menu item.\n * Set the role of menu.\n * @returns {void}\n */\n init() {\n this.defineItems();\n this.eventBus().on('mega.menu.close.items', 'closeItems');\n this.ref('self').attr('role', 'menubar');\n this.onDestroy(() => {\n this.ref('self').attr('role', false);\n });\n }\n\n /**\n * @description Set focus to item\n * @param {any} menuItem menuItem Widget\n * @returns {void}\n */\n setFocusToItem(menuItem) {\n let hasOpenedMenu = false;\n const MenuBarItem = (this.getConstructor('menuBarItem'));\n\n this.eachChild((child) => {\n if (!(child instanceof MenuBarItem)) { return; }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'hasOpenedSubmenu' does not exist on type... Remove this comment to see the full error message\n if (child.hasOpenedSubmenu()) {\n hasOpenedMenu = true;\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'removeTabIndex' does not exist on type '... Remove this comment to see the full error message\n child.removeTabIndex();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'closeMenu' does not exist on type 'Widge... Remove this comment to see the full error message\n child.closeMenu();\n });\n\n menuItem.addTabIndex();\n menuItem.focus();\n\n if (hasOpenedMenu) {\n menuItem.openMenu();\n }\n\n this.currentItem = menuItem;\n }\n\n /**\n * @description Close all menu Items\n * @returns {void}\n */\n closeItems() {\n this.eachChild<menuBarItem>((child) => {\n if (typeof child.closeMenu === 'function') {\n child.closeMenu();\n }\n });\n }\n\n /**\n * @description Handle Enter key event\n * @listens dom:keydown\n * @param {KeyboardEvent} event Event Object\n * @returns {void}\n */\n handleEnterKey(event) {\n const domNode = /** @type {HTMLAnchorElement} */ (event.target);\n\n if (domNode && domNode.href) {\n window.location.assign(domNode.href);\n }\n }\n\n /**\n * @description Keydown Event handler\n * @listens dom:keydown\n * @param {HTMLElement} _ Source of keydown event\n * @param {KeyboardEvent} event Event object\n * @returns {void}\n */\n handleKeydown(_, event) {\n let preventEventActions = false;\n\n switch (event.keyCode) {\n case keyCode.PAGEUP:\n case keyCode.HOME:\n this.setFocusToFirstItem();\n preventEventActions = true;\n\n break;\n\n case keyCode.PAGEDOWN:\n case keyCode.END:\n this.setFocusToLastItem();\n preventEventActions = true;\n\n break;\n\n case keyCode.RIGHT:\n if (document.dir === 'rtl') {\n this.setFocusToPreviousItem();\n } else {\n this.setFocusToNextItem();\n }\n\n preventEventActions = true;\n\n break;\n\n case keyCode.LEFT:\n if (document.dir === 'rtl') {\n this.setFocusToNextItem();\n } else {\n this.setFocusToPreviousItem();\n }\n\n preventEventActions = true;\n\n break;\n\n case keyCode.UP:\n\n // @ts-expect-error ts-migrate(2532) FIXME: Object is possibly 'undefined'.\n this.currentItem.openMenu(false, true);\n preventEventActions = true;\n\n break;\n\n case keyCode.DOWN:\n\n // @ts-expect-error ts-migrate(2532) FIXME: Object is possibly 'undefined'.\n this.currentItem.openMenu(true, false);\n preventEventActions = true;\n\n break;\n\n case keyCode.TAB:\n this.closeItems();\n\n break;\n\n case keyCode.RETURN:\n case keyCode.SPACE:\n this.handleEnterKey(event);\n preventEventActions = true;\n\n break;\n\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n return MegaMenu;\n}\n","import { timeout } from 'widgets/toolbox/util';\nimport { clickOutside } from 'widgets/toolbox/util';\n\n/**\n * @typedef {InstanceType<ReturnType<typeof import('widgets/header/MegaMenu').default>>} MegaMenu\n */\n\nconst keyCode = Object.freeze({\n ESC: 27,\n PAGEUP: 33,\n PAGEDOWN: 34,\n END: 35,\n HOME: 36,\n UP: 38,\n DOWN: 40\n});\n\nconst ITEM_SWITCH_TIMEOUT = 200;\n\n/**\n * @param ListAccessibility Base widget for extending\n * @returns MenuBarItem widget\n */\nexport default function (ListAccessibility: ReturnType<typeof import('widgets/global/ListAccessibility').default>) {\n /**\n * @category widgets\n * @subcategory header\n * @class MenuBarItem\n * @augments ListAccessibility\n * @classdesc Represents MenuBarItem component with next features:\n * 2. MenuBarItem Widget can contain another MenuBarItem like submenu.\n * 3. Allow open/close menu\n * 4. Allow handling mouse, keyboard events\n * 5. Allow check if submenus exist and its state(opened/closed)\n *\n * MenuBarItem widget should be a part of {@link MegaMenu} widget that implements the menu.\n * MenuBarItem widget should be imlemented according to https://www.w3.org/TR/wai-aria-practices/#menu specs\n * @example <caption>Example of menuBarItem widget usage</caption>\n * <li role=\"none\"\n * class=\"b-menu_bar-item\"\n * data-widget=\"menuBarItem\"\n * data-event-mouseenter=\"mouseEnter\"\n * data-event-mouseleave=\"mouseLeave\"\n * data-event-keydown=\"handleKeydown\"\n *>\n * <a\n * role=\"menuitem\"\n * class=\"b-menu_bar-link m-has-submenu\"\n * aria-label=\"${category.name}\"\n * aria-haspopup=\"true\"\n * aria-expanded=\"false\"\n * itemprop=\"url name\"\n * tabindex=\"${status.first ? 0 : -1}\"\n * href=\"<isprint value=\"${category.url}\" encoding=\"htmldoublequote\"/>\"\n * data-ref=\"itemLink\"\n * data-event-blur=\"handleClose\"\n * >\n * ${category.name}\n * </a>\n * <isset name=\"menuItem\" value=\"${category}\" scope=\"page\" />\n * <div\n * role=\"menu\"\n * class=\"b-menu_bar-flyout\"\n * aria-label=\"${category.name}\"\n * aria-hidden=\"true\"\n * data-ref=\"submenu\"\n * >\n * <div role=\"none\" class=\"b-menu_bar-flyout_inner\">\n * <isinclude template=\"components/header/menuItem\" />\n *\n * <button\n * role=\"menuitem\"\n * class=\"b-menu_bar-flyout_close\"\n * aria-label=\"${Resource.msg('common.close', 'common', null)}\"\n * title=\"${Resource.msg('common.close', 'common', null)}\"\n * data-event-click=\"handleClose\"\n * type=\"button\"\n * tabindex=\"-1\"\n * >\n * <isinclude template=\"/common/svg/close\" />\n * </button>\n * </div>\n * </div>\n *</li>\n * @property {string} data-widget - Widget name `MenuBarItem`\n * @property {string} data-event-mouseenter - Event listener for `mouseEnter` method\n * @property {string} data-event-mouseleave - Event listener for `mouseLeave` method\n * @property {string} data-event-keydown - Event listener for `handleKeydown` method\n * @property {string} data-event-click - Event listener for `handleClose` method\n */\n\n class MenuBarItem extends ListAccessibility {\n prefs() {\n return {\n submenu: 'submenu',\n menuMoreLink: 'menuMoreLink',\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic.\n * @returns {void}\n */\n init() {\n super.init();\n\n // Async init to not block other widget init\n timeout(() => {\n this.focusableItems = this.getMenuItems();\n this.firstItem = this.focusableItems[0];\n this.lastItem = this.focusableItems[this.focusableItems.length - 1];\n this.currentItem = this.focusableItems[0];\n }, 0);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'M... Remove this comment to see the full error message\n this.isSubmenuOpen = false;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuInFocus' does not exist on type... Remove this comment to see the full error message\n this.isSubmenuInFocus = false;\n }\n\n /**\n * @description Returns menu item array\n * @returns {Array<HTMLElement>} MenuItems array\n */\n getMenuItems() {\n const menuItems = [];\n\n this.eachChild(child => {\n if (!(child instanceof MenuBarItem)) {\n return;\n }\n\n child.has(this.prefs().itemLink, (itemLink) => {\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'HTMLElement | undefined' is not ... Remove this comment to see the full error message\n menuItems.push(itemLink.get());\n });\n menuItems.push(...child.getMenuItems());\n child.has(this.prefs().menuMoreLink, (menuMoreLink) => {\n // @ts-expect-error ts-migrate(2345) FIXME: Argument of type 'HTMLElement | undefined' is not ... Remove this comment to see the full error message\n menuItems.push(menuMoreLink.get());\n });\n });\n\n return menuItems;\n }\n\n /**\n * @description Returns true if widget has submenu\n * @returns {boolean} Return true if submenu exist\n */\n hasSubmenu() {\n return this.has(this.prefs().submenu);\n }\n\n /**\n * @description Returns true if submenu open\n * @returns {boolean} Return true if submenu opened\n */\n hasOpenedSubmenu() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'M... Remove this comment to see the full error message\n return !!this.isSubmenuOpen;\n }\n\n /**\n * @description Returns true if submenu in focus\n * @returns {boolean} Return true if submenu focused\n */\n hasFocusedSubmenu() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuInFocus' does not exist on type... Remove this comment to see the full error message\n return !!this.isSubmenuInFocus;\n }\n\n /**\n * @description Remove Tab Index from element\n * @returns {void}\n */\n removeTabIndex() {\n this.ref(this.prefs().itemLink).attr('tabindex', '-1');\n }\n\n /**\n * @description Add Tab Index to element\n * @returns {void}\n */\n addTabIndex() {\n this.ref(this.prefs().itemLink).attr('tabindex', '0');\n }\n\n /**\n * @description Open menu if exist and focus first/last element\n * @emits MenuBarItem#megaMenuCloseItems\n * @param {boolean} [focusFirstItem] Item focus flag\n * @param {boolean} [focusLastItem] Item focus flag\n * @returns {void}\n */\n openMenu(focusFirstItem, focusLastItem) {\n if (this.hasSubmenu()) {\n this.ref(this.prefs().itemLink)\n .attr('aria-expanded', 'true');\n this.ref(this.prefs().submenu)\n .attr('aria-hidden', 'false');\n this.ref(this.prefs().submenu)\n .attr('data-tau', 'menu_flyout');\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'M... Remove this comment to see the full error message\n this.isSubmenuOpen = true;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuInFocus' does not exist on type... Remove this comment to see the full error message\n this.isSubmenuInFocus = focusFirstItem || focusLastItem;\n\n if (focusFirstItem) {\n this.setFocusToFirstItem();\n }\n\n if (focusLastItem) {\n this.setFocusToLastItem();\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'outSideListener' does not exist on type ... Remove this comment to see the full error message\n this.outSideListener = clickOutside(this.ref('self'), () => {\n /**\n * @description Event to close all items\n * @event MenuBarItem#megaMenuCloseItems\n */\n this.emit('mega.menu.close.items');\n }, false);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'outSideListener' does not exist on type ... Remove this comment to see the full error message\n if (this.outSideListener) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'outSideListener' does not exist on type ... Remove this comment to see the full error message\n this.onDestroy(this.outSideListener);\n }\n }\n }\n\n /**\n * @description Close menu\n * @param {boolean} [returnFocus] Focus flag\n * @returns {void}\n */\n closeMenu(returnFocus?: boolean) {\n if (this.hasSubmenu()) {\n this.ref(this.prefs().itemLink)\n .attr('aria-expanded', 'false');\n this.ref(this.prefs().submenu)\n .attr('aria-hidden', 'true');\n this.ref(this.prefs().submenu)\n .attr('data-tau', false);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'M... Remove this comment to see the full error message\n this.isSubmenuOpen = false;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuInFocus' does not exist on type... Remove this comment to see the full error message\n this.isSubmenuInFocus = false;\n\n if (returnFocus) {\n this.focus();\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'outSideListener' does not exist on type ... Remove this comment to see the full error message\n if (this.outSideListener) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'outSideListener' does not exist on type ... Remove this comment to see the full error message\n this.outSideListener();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'outSideListener' does not exist on type ... Remove this comment to see the full error message\n this.outSideListener = null;\n }\n }\n }\n\n /**\n * @description Mouse enter event handler\n * @listens dom#mouseenter\n * @emits MenuBarItem#megaMenuCloseItems\n * @returns {void}\n */\n mouseEnter() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timerCleanerLeave' does not exist on typ... Remove this comment to see the full error message\n if (this.timerCleanerLeave) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timerCleanerLeave' does not exist on typ... Remove this comment to see the full error message\n this.timerCleanerLeave();\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timerCleanerEnter' does not exist on typ... Remove this comment to see the full error message\n this.timerCleanerEnter = timeout(() => {\n /**\n * @description Event to close all items\n * @event MenuBarItem#megaMenuCloseItems\n */\n this.eventBus().emit('mega.menu.close.items');\n\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 2 arguments, but got 0.\n this.openMenu();\n }, ITEM_SWITCH_TIMEOUT);\n }\n\n /**\n * @description Mouse leave event handler\n * @listens dom#mouseleave\n * @returns {void}\n */\n mouseLeave() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timerCleanerEnter' does not exist on typ... Remove this comment to see the full error message\n if (this.timerCleanerEnter) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timerCleanerEnter' does not exist on typ... Remove this comment to see the full error message\n this.timerCleanerEnter();\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timerCleanerLeave' does not exist on typ... Remove this comment to see the full error message\n this.timerCleanerLeave = timeout(() => {\n this.closeMenu();\n }, ITEM_SWITCH_TIMEOUT);\n }\n\n /**\n * @description Close Event handler\n * @listens dom#click\n * @param {HTMLElement} _ Source of keydown event\n * @param {Event} event Event object\n * @returns {void}\n */\n handleClose(_, event) {\n event.preventDefault();\n\n this.closeMenu();\n }\n\n /**\n * @description Click Event handler\n * @listens dom#click\n * @param {HTMLElement} _ Source of keydown event\n * @param {Event} event Event object\n * @returns {void}\n */\n handleClick(_, event) {\n if (this.hasSubmenu() && !this.hasOpenedSubmenu()) {\n event.preventDefault();\n\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 2 arguments, but got 0.\n this.openMenu();\n }\n }\n\n /**\n * @description Keydown Event handler\n * @listens dom#keydown\n * @param {HTMLElement} _ Source of keydown event\n * @param {KeyboardEvent} event Event object\n * @returns {void}\n */\n handleKeydown(_, event) {\n let preventEventActions = false;\n\n if (!this.hasFocusedSubmenu()) {\n return;\n }\n\n switch (event.keyCode) {\n case keyCode.ESC:\n this.closeMenu(true);\n preventEventActions = true;\n\n break;\n\n case keyCode.PAGEUP:\n case keyCode.HOME:\n this.setFocusToFirstItem();\n preventEventActions = true;\n\n break;\n\n case keyCode.PAGEDOWN:\n case keyCode.END:\n this.setFocusToLastItem();\n preventEventActions = true;\n\n break;\n\n case keyCode.UP:\n this.setFocusToPreviousItem();\n preventEventActions = true;\n\n break;\n\n case keyCode.DOWN:\n this.setFocusToNextItem();\n preventEventActions = true;\n\n break;\n\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n return MenuBarItem;\n}\n","import { timeout } from 'widgets/toolbox/util';\nimport { clickOutside } from 'widgets/toolbox/util';\n\nconst keyCode = Object.freeze({\n ESC: 27,\n TAB: 9,\n RETURN: 13,\n SPACE: 32,\n PAGEUP: 33,\n PAGEDOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40\n});\n\nconst MENU_ACTIVATION_DELAY = 200;\n\n/**\n * @param ListAccessibility Base widget for extending\n * @returns MenuButton widget\n */\nexport default function (ListAccessibility: ReturnType<typeof import('widgets/global/ListAccessibility').default>) {\n /**\n * @category widgets\n * @subcategory header\n * @class MenuButton\n * @augments ListAccessibility\n * @classdesc Represents MenuButton component with next features:\n * 1. Allow open/close menu\n * 2. Allow handling mouse, keyboard events to be able react to user's actions\n * 3. Allow check if submenus exist and its state(opened/closed) to set focus the correct place\n * 4. Support keyboard navigation for accessibility\n * MenuButton component should be imlemented according to https://www.w3.org/TR/wai-aria-practices/#menubutton specs\n * @example <caption>Example of MenuButton widget usage</caption>\n * <div\n * data-widget=\"menuButton\"\n * data-event-mouseenter=\"mouseEnter\"\n * data-event-mouseleave=\"mouseLeave\"\n * data-event-keydown=\"handleKeydown\"\n * ....\n * >\n * <a\n * role=\"menuitem\"\n * aria-haspopup=\"true\"\n * aria-expanded=\"false\"\n * tabindex=\"0\"\n * data-ref=\"itemLink\"\n * >\n * .... menu button text\n * </a>\n * <ul\n * role=\"menu\"\n * aria-hidden=\"true\"\n * data-ref=\"submenu\"\n * >\n * <isloop items=\"${lLinks}\" var=\"link\">\n * <li\n * data-widget.lg.xl=\"menuBarItem\"\n * role=\"none\"\n * >\n * <button\n * role=\"menuitem\"\n * tabindex=\"-1\"\n * data-ref=\"itemLink\"\n * >\n * .... item link\n * </button>\n * </li>\n * </isloop>\n * </ul>\n * </div>\n */\n class MenuButton extends ListAccessibility {\n prefs() {\n return {\n submenu: 'submenu',\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic.\n * @returns {void}\n */\n init() {\n super.init();\n this.defineItems();\n }\n\n /**\n * @description Keydown Event handler\n * @listens dom#keydown\n * @param {HTMLElement} _ Source of keydown event\n * @param {KeyboardEvent} event Event object\n * @returns {void}\n */\n handleKeydown(_, event) {\n let preventEventActions = false;\n\n switch (event.keyCode) {\n case keyCode.PAGEUP:\n case keyCode.HOME:\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'M... Remove this comment to see the full error message\n if (this.isSubmenuOpen) {\n this.setFocusToFirstItem();\n }\n\n preventEventActions = true;\n break;\n\n case keyCode.PAGEDOWN:\n case keyCode.END:\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'M... Remove this comment to see the full error message\n if (this.isSubmenuOpen) {\n this.setFocusToLastItem();\n }\n\n preventEventActions = true;\n break;\n\n case keyCode.UP:\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'M... Remove this comment to see the full error message\n if (!this.isSubmenuOpen) {\n this.openMenu(false, true);\n } else {\n this.setFocusToPreviousItem();\n }\n\n preventEventActions = true;\n break;\n\n case keyCode.DOWN:\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'M... Remove this comment to see the full error message\n if (!this.isSubmenuOpen) {\n this.openMenu(true, false);\n } else {\n this.setFocusToNextItem();\n }\n\n preventEventActions = true;\n break;\n\n case keyCode.TAB:\n case keyCode.ESC:\n this.closeMenu(true);\n break;\n\n case keyCode.RETURN:\n case keyCode.SPACE:\n this.openMenu(true, false);\n preventEventActions = true;\n break;\n\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n\n /**\n * @description Has submenu\n * @returns {boolean} Return true if submenu exist\n */\n hasSubmenu() {\n return this.has(this.prefs().submenu);\n }\n\n /**\n * @description Open menu if exist\n * @param {boolean} [focusFirstItem] Item focus flag\n * @param {boolean} [focusLastItem] Item focus flag\n * @returns {void}\n */\n openMenu(focusFirstItem, focusLastItem) {\n if (this.hasSubmenu()) {\n this.ref(this.prefs().itemLink)\n .attr('aria-expanded', 'true');\n this.ref(this.prefs().submenu)\n .attr('aria-hidden', 'false');\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'M... Remove this comment to see the full error message\n this.isSubmenuOpen = true;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuInFocus' does not exist on type... Remove this comment to see the full error message\n this.isSubmenuInFocus = focusFirstItem || focusLastItem;\n\n if (focusFirstItem) {\n this.setFocusToFirstItem();\n }\n\n if (focusLastItem) {\n this.setFocusToLastItem();\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'outSideListener' does not exist on type ... Remove this comment to see the full error message\n this.outSideListener = clickOutside(this.ref('self'), () => {\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n this.closeMenu();\n\n return false;\n }, true);\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'outSideListener' does not exist on type ... Remove this comment to see the full error message\n if (this.outSideListener) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'outSideListener' does not exist on type ... Remove this comment to see the full error message\n this.onDestroy(this.outSideListener);\n }\n }\n }\n\n /**\n * @description Close menu\n * @param {boolean} [returnFocus] Focus flag\n * @returns {void}\n */\n closeMenu(returnFocus) {\n if (this.hasSubmenu()) {\n this.ref(this.prefs().itemLink)\n .attr('aria-expanded', 'false');\n this.ref(this.prefs().submenu)\n .attr('aria-hidden', 'true');\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'M... Remove this comment to see the full error message\n this.isSubmenuOpen = false;\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuInFocus' does not exist on type... Remove this comment to see the full error message\n this.isSubmenuInFocus = false;\n\n if (returnFocus) {\n this.focus();\n }\n }\n }\n\n /**\n * @description Toggle menu\n * @returns {boolean|void} boolean value indicates is menu open or close\n */\n toggleMenu() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'M... Remove this comment to see the full error message\n return this.isSubmenuOpen ? this.closeMenu() : this.openMenu();\n }\n\n /**\n * @description Mouse enter event handler\n * @listens dom#mouseenter\n * @returns {void}\n */\n mouseEnter() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timerCleanerLeave' does not exist on typ... Remove this comment to see the full error message\n if (this.timerCleanerLeave) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timerCleanerLeave' does not exist on typ... Remove this comment to see the full error message\n this.timerCleanerLeave();\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'M... Remove this comment to see the full error message\n if (this.isSubmenuOpen) { return; }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timerCleanerEnter' does not exist on typ... Remove this comment to see the full error message\n this.timerCleanerEnter = timeout(() => {\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 2 arguments, but got 0.\n this.openMenu();\n }, MENU_ACTIVATION_DELAY);\n }\n\n /**\n * @description Mouse leave event handler\n * @listens dom#mouseleave\n * @returns {void}\n */\n mouseLeave() {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timerCleanerEnter' does not exist on typ... Remove this comment to see the full error message\n if (this.timerCleanerEnter) {\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timerCleanerEnter' does not exist on typ... Remove this comment to see the full error message\n this.timerCleanerEnter();\n }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isSubmenuOpen' does not exist on type 'M... Remove this comment to see the full error message\n if (!this.isSubmenuOpen) { return; }\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'timerCleanerLeave' does not exist on typ... Remove this comment to see the full error message\n this.timerCleanerLeave = timeout(() => {\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n this.closeMenu();\n }, MENU_ACTIVATION_DELAY);\n }\n }\n\n return MenuButton;\n}\n","import { RefElement } from 'widgets/toolbox/RefElement';\nimport { TWidget } from 'widgets/Widget';\nimport { timeout } from 'widgets/toolbox/util';\nimport { isDesktopView } from 'widgets/toolbox/viewtype';\n\nconst ARIA_EXPANDED = 'aria-expanded';\nconst keyCode = Object.freeze({\n RETURN: 13,\n SPACE: 32,\n TAB: 9,\n ESC: 27,\n DOWN: 40,\n UP: 38,\n RIGHT: 39,\n PAGEUP: 33,\n PAGEDOWN: 34,\n END: 35,\n HOME: 36\n});\n/**\n * @typedef {InstanceType <typeof import('widgets/toolbox/RefElement').RefElement>} RefElement\n * @typedef {ReturnType<typeof import('widgets/header/MenuPanelToggle').default>} MenuPanelToggle\n * @typedef {ReturnType<typeof import('widgets/header/HamburgerMenuItem').default>} HamburgerMenuItem\n */\n\ntype hamburgerMenuItem = InstanceType<ReturnType<typeof import('widgets/header/HamburgerMenuItem').default>>;\n\n/**\n * @param SwipeToClose Base widget for extending\n * @returns MenuPanel widget\n */\nexport default function (SwipeToClose: ReturnType<typeof import('widgets/global/SwipeToClose').default>) {\n /**\n * @category widgets\n * @subcategory header\n * @class MenuPanel\n * @augments SwipeToClose\n * @classdesc Represents MenuPanel component with next features:\n * 1. Support keyboard navigation for accessibility\n * 2. Allow handling mouse, keyboard events\n * 3. Allow switch panel (next/previous)\n * 4. Allow open/close panel\n * 5. Allow close panel on Backdrop click\n * 6. Allow focus manipulation\n * 7. Control hamburger menu subpanels, copy and pasting submenu content into this panels\n *\n * MenuPanel widget should inside {@link HamburgerMenuItem} like menu item.\n * Widget has next relationship:\n * * Open panel using method {@link MenuPanel#openPanel} by event {@link MenuPanelToggle#event:navPanelOpen} from {@link MenuPanelToggle} widget.\n * * Open next panel using method {@link MenuPanel#nextPanel} by event {@link HamburgerMenuItem#event:navPanelNextLevel} from {@link HamburgerMenuItem} widget.\n * * Open next panel using method {@link MenuPanel#previousPanel} by event {@link HamburgerMenuItem#event:navPanelPreviousLevel} from {@link HamburgerMenuItem} widget.\n *\n * @example <caption>Example of MenuPanel widget usage</caption>\n * <div\n * id=\"main-navigation\"\n * class=\"b-menu_panel\"\n * aria-labelledby=\"main-navigation-toggle\"\n * data-widget=\"menuPanel\"\n * data-event-click=\"closeOnBackdrop\"\n * data-event-keydown.sm.md=\"handleKeydown\"\n * >\n * <div class=\"b-menu_panel-head\">\n * <button data-event-click.prevent=\"closePanel\">close</button>\n * </div>\n * ... widget content\n * </div>\n * @property {string} data-widget - Widget name `menuPanel`\n * @property {string} data-event-click - Event listener handler for click events\n * @property {string} data-event-keydown - Event listener handler for keydown events\n * @property {number} data-panel-items-count - count of items\n * @property {number} data-panel-count - count of panels\n * @property {string} data-panel-container - reference id of child element, value of its data-ref attribute\n * @property {string} data-classes-backdrop-active - class added/removed on 'self' element on openPanel/closePanel\n * @property {string} data-classes-dialog-open - class added/removed on ref element 'dialog' on openPanel/closePanel\n * @property {string} data-classes-has-dialog - class added/removed on 'html' element on openPanel/closePanel\n * @property {string} data-classes-active-level - prefix for class that is added/removed from panelContainer when navigating between panels\n * @property {string} data-panel-items-prefix - prefix of ID of panel items\n * @property {string} data-main-manu - id of menu element\n * @property {string} data-panel - prefix of ID of panels\n * @property {string} data-item-switch-timeout - timeout (in ms) between panels focus changes\n */\n class MenuPanel extends SwipeToClose {\n parentMenuItems: RefElement[];\n\n panelItems: InstanceType<TWidget>[];\n\n currentLevel: number;\n\n currentPanelItem: any;\n\n firstPanelItem: any;\n\n lastPanelItem: any;\n\n panelTransitionInProgress = false;\n\n isOpened = false;\n\n /**\n * @description calls super constructor, adds initial states etc.\n *\n * @param {HTMLElement} el DOM element\n * @param {{[x: string]: object|string|number|boolean|null|undefined}} config widget config\n */\n constructor(\n el: HTMLElement,\n config: { [x: string]: { [y: string] : unknown} | string | number | boolean | null | undefined; } = {}\n ) {\n super(el, config);\n this.parentMenuItems = [];\n this.panelItems = [];\n this.currentLevel = 1;\n }\n\n prefs() {\n return {\n classesBackdropActive: 'm-active',\n classesDialogOpen: 'm-opened',\n classesDialogClosed: 'm-closed',\n classesHasDialog: 'm-has_dialog',\n classesActiveLevel: 'm-active_level_',\n panelItemsCount: 0,\n panelCount: 3,\n panelItemsPrefix: 'panelItem-',\n mainMenu: 'main-menu',\n mainMenuFooter: 'menu-footer',\n panelTitle: 'panelTitleLevel',\n panel: 'panel-level-',\n itemSwitchTimeout: 500,\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic\n * @listens MenuPanelToggle#navPanelOpen\n * @listens HamburgerMenuItem#navPanelNextLevel\n * @listens HamburgerMenuItem#navPanelPreviousLevel\n * @returns {void}\n */\n init(): void {\n super.init();\n this.definePanelItems();\n this.checkAriaAttributes();\n this.eventBus().on('viewtype.change', 'checkAriaAttributes');\n this.eventBus().on('viewtype.change', 'closePanel');\n this.eventBus().on('nav.panel.open', 'openPanel');\n this.eventBus().on('nav.panel.next.level', 'nextPanel');\n this.eventBus().on('nav.panel.previous.level', 'previousPanel');\n this.applyMenuRole(true);\n this.onDestroy(() => {\n this.clearState();\n this.applyMenuRole(false);\n });\n }\n\n /**\n * @description Clear menu panel state\n * @returns {void}\n */\n clearState(): void {\n this.ref('html').removeClass(this.prefs().classesHasDialog);\n this.ref('self').removeClass(this.prefs().classesBackdropActive);\n this.ref('dialog').removeClass(this.prefs().classesDialogOpen);\n this.ref('dialog').removeClass(this.prefs().classesDialogClosed);\n }\n\n /**\n * @description Toggle menu roles\n * @param {boolean} isMenu Menu type\n * @returns {void}\n */\n applyMenuRole(isMenu: boolean): void {\n this.eachChild(child => {\n if (child.id && child.id === 'main-menu') {\n child.ref('self').attr('role', isMenu ? 'menu' : 'menubar');\n }\n });\n }\n\n /**\n * @description Define Panel Items\n * @returns {void}\n */\n definePanelItems(): void {\n this.panelItems = this.getPanelItems();\n this.currentPanelItem = this.panelItems[0];\n this.firstPanelItem = this.panelItems[0];\n this.lastPanelItem = this.panelItems[this.panelItems.length - 1];\n }\n\n /**\n * @description Check Aria attributes and updated it for custom menu items depend on viewport.\n *\n * Custom Menu has sub item on Large and XLarge viewports but doesn't have on Small and Medium, as per FSD.\n * To correctly support accessibility requirements aria attributes dynamically updated.\n * @returns {void}\n */\n checkAriaAttributes(): void {\n this.panelItems\n .map(menuItem => menuItem.ref('itemLink'))\n .filter(itemLink => itemLink.data('isCustomMenuHtml'))\n .forEach(itemLink => {\n itemLink.attr(ARIA_EXPANDED, isDesktopView());\n itemLink.attr('aria-haspopup', isDesktopView());\n });\n }\n\n /**\n * @description Set transition progress flag\n * @listens dom#transitionstart\n * @returns {void}\n */\n transitionStart(): void {\n this.panelTransitionInProgress = true;\n }\n\n /**\n * @description Unset transition progress flag\n * @listens dom#transitionend\n * @returns {void}\n */\n transitionEnd(): void {\n this.panelTransitionInProgress = false;\n }\n\n /**\n * @description Open next panel level\n * @param data data\n * @param data.parentMenuItem - parent menu item ref element\n * @param data.htmlMarkup - panel markup\n * @returns {void}\n */\n nextPanel(data: { parentMenuItem: RefElement; htmlMarkup: string; }): void {\n if (this.panelTransitionInProgress) {\n return;\n }\n\n data.parentMenuItem.attr(ARIA_EXPANDED, 'true');\n data.parentMenuItem.attr('aria-owns', 'submenu-level-' + (this.currentLevel + 1));\n this.parentMenuItems.push(data.parentMenuItem);\n this.handlePanel(this.currentLevel + 1, true, data.parentMenuItem.getText(), data.htmlMarkup);\n }\n\n /**\n * @description Open previos panel level\n * @returns {void}\n */\n previousPanel(): void {\n if (this.panelTransitionInProgress) {\n return;\n }\n\n if (this.parentMenuItems.length > 0) {\n const last = <RefElement> this.parentMenuItems.pop();\n\n last.attr('aria-owns', null);\n last.attr(ARIA_EXPANDED, 'false');\n }\n\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 4 arguments, but got 2.\n this.handlePanel(this.currentLevel - 1, true);\n }\n\n /**\n * @description Handle panel level\n * @param {number} level Level\n * @param {boolean} focusPanelItem Focus panel item flag\n * @param {string} [panelName] Panel Name\n * @param {string} [htmlMarkup] HTML Markup\n * @returns {void}\n */\n handlePanel(level: number, focusPanelItem: boolean, panelName: string | undefined, htmlMarkup: string): void {\n if (panelName) {\n this.has(this.prefs().panelTitle + level, (panelTitle) => {\n panelTitle.setText(panelName);\n });\n }\n\n if (htmlMarkup) {\n this.getById<hamburgerMenuItem>(this.prefs().panel + level, (panel) => {\n panel.ref('self').attr('aria-busy', 'true');\n panel.setSubmenuHTML(htmlMarkup);\n });\n }\n\n if (level === 1) {\n this.ref('self').attr('aria-busy', 'true');\n }\n\n this.has(this.prefs().panelContainer, (panelContainer) => {\n panelContainer.removeClass(this.prefs().classesActiveLevel + this.currentLevel);\n panelContainer.addClass(this.prefs().classesActiveLevel + level);\n });\n\n if (focusPanelItem) {\n this.setFocusToPanelItem(level, level > this.currentLevel);\n }\n\n this.currentLevel = level;\n }\n\n /**\n * @description Set focus to panel item\n * @param {number} level Level\n * @param {boolean} updateItems Update item flag\n * @returns {void}\n */\n setFocusToPanelItem(level: string | number, updateItems: boolean): void {\n this.onDestroy(timeout(() => {\n if (level === 1) {\n this.setFocusToItem(this.currentPanelItem);\n this.ref('self').attr('aria-busy', 'false');\n } else {\n this.getById<hamburgerMenuItem>(this.prefs().panel + level, (panel) => {\n panel.markSubmenuOpened();\n\n if (updateItems) {\n panel.defineItems();\n }\n\n panel.setFocusToCurrentItem();\n panel.ref('self').attr('aria-busy', 'false');\n });\n }\n }, this.prefs().itemSwitchTimeout));\n }\n\n /**\n * @description Set focus to first item\n * @returns {void}\n */\n setFocusToFirstItem(): void {\n this.ref('self').attr('aria-busy', 'true');\n this.onDestroy(timeout(() => {\n this.setFocusToItem(this.firstPanelItem);\n this.ref('self').attr('aria-busy', 'false');\n }, this.prefs().itemSwitchTimeout));\n }\n\n /**\n * @description Set focus to last item\n * @returns {void}\n */\n setFocusToLastItem(): void {\n this.ref('self').attr('aria-busy', 'true');\n this.onDestroy(timeout(() => {\n this.setFocusToItem(this.lastPanelItem);\n this.ref('self').attr('aria-busy', 'false');\n }, this.prefs().itemSwitchTimeout));\n }\n\n /**\n * @description Set focus to next item\n * @returns {void}\n */\n setFocusToNextItem(): void {\n if (this.panelItems === undefined) {\n return;\n }\n\n if (this.panelItems.length) {\n const newItem = this.currentPanelItem === this.lastPanelItem\n ? this.firstPanelItem\n : this.panelItems[this.getItemIndex(this.currentPanelItem) + 1];\n\n this.setFocusToItem(newItem);\n }\n }\n\n /**\n * @description Set focus to previos item\n * @returns {void}\n */\n setFocusToPreviousItem(): void {\n if (this.panelItems === undefined) {\n return;\n }\n\n if (this.panelItems.length) {\n const newItem = this.currentPanelItem === this.firstPanelItem\n ? this.lastPanelItem\n : this.panelItems[this.getItemIndex(this.currentPanelItem) - 1];\n\n this.setFocusToItem(newItem);\n }\n }\n\n /**\n * @description Set focus to item\n * @param panelItem Panel item\n * @param panelItem.focus - method to focus panel item\n */\n setFocusToItem(panelItem: { focus: () => void; }): void {\n panelItem.focus();\n this.currentPanelItem = panelItem;\n }\n\n /**\n * @description Get item index\n * @param panelItem panel item\n */\n getItemIndex(panelItem: InstanceType<TWidget>): number {\n return this.panelItems ? this.panelItems.indexOf(panelItem) : -1;\n }\n\n /**\n * @description Get Panel Items\n * @returns {Array} Panel items\n */\n getPanelItems(): Array<InstanceType<TWidget>> {\n const panelItems: InstanceType<TWidget>[] = [];\n\n this.getById<InstanceType<TWidget>>(this.prefs().mainMenu, (item) => {\n panelItems.push(...item.items);\n });\n this.getById(this.prefs().mainMenuFooter, (item) => {\n panelItems.push(...item.items);\n });\n\n for (let i = 0; i < this.prefs().panelItemsCount; i++) {\n this.getById(this.prefs().panelItemsPrefix + i, (item) => {\n panelItems.push(item);\n });\n }\n\n return panelItems;\n }\n\n /**\n * @description Open Menu Panel\n * @param data data\n * @param data.focusToLastItem - is set focus to last item\n */\n openPanel(data: { focusToLastItem: boolean }): void {\n this.ref('html').addClass(this.prefs().classesHasDialog);\n this.ref('self').addClass(this.prefs().classesBackdropActive);\n this.ref('dialog')\n .addClass(this.prefs().classesDialogOpen)\n .removeClass(this.prefs().classesDialogClosed);\n this.ref('self').attr('data-tau', 'menu_panel');\n this.definePanelItems();\n\n if (data.focusToLastItem) {\n this.setFocusToLastItem();\n } else {\n this.setFocusToFirstItem();\n }\n\n this.isOpened = true;\n }\n\n /**\n * @description Close Menu Panel\n * @emits MenuPanel#navPanelClose\n * @emits MenuPanel#navPanelToggleFocus\n */\n closePanel(): void {\n if (this.parentMenuItems.length) {\n this.parentMenuItems = [];\n }\n\n if (this.isOpened) {\n this.ref('html').removeClass(this.prefs().classesHasDialog);\n this.ref('self').removeClass(this.prefs().classesBackdropActive);\n this.ref('dialog')\n .removeClass(this.prefs().classesDialogOpen)\n .addClass(this.prefs().classesDialogClosed);\n this.ref('self').attr('data-tau', false);\n /**\n * @description Event to close panel\n * @event MenuPanel#navPanelClose\n */\n this.eventBus().emit('nav.panel.close');\n /**\n * @description Event to toggle focus\n * @event MenuPanel#navPanelToggleFocus\n */\n this.eventBus().emit('nav.panel.toggle.focus');\n this.onDestroy(timeout(() => {\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 4 arguments, but got 2.\n this.handlePanel(1, false);\n\n for (let i = 1; i <= this.prefs().panelCount; i++) {\n this.getById<hamburgerMenuItem>(this.prefs().panel + i, (panel) => {\n panel.clearSubmenuHTML();\n });\n }\n }, this.prefs().itemSwitchTimeout));\n this.isOpened = false;\n }\n }\n\n /**\n * @description Close On Backdrop handler\n * @listens dom#click\n * @param ref - interacted element\n * @param event - event object\n */\n closeOnBackdrop(ref: RefElement, event: Event) {\n if (event.target === this.ref('self').get()) {\n this.closePanel();\n }\n }\n\n /**\n * @description Handle Enter key event\n * @listens dom#keydown\n * @param event Event Object\n */\n handleEnterKey(event: Event) {\n const domNode = <HTMLLinkElement> event.target;\n\n if (domNode && domNode.href) {\n window.location.assign(domNode.href);\n }\n }\n\n /**\n * @description Keydown Event handler\n * @listens dom#keydown\n * @param {HTMLElement} _ Source of keydown event\n * @param {KeyboardEvent} event Event object\n * @returns {void}\n */\n handleKeydown(_: any, event: KeyboardEvent): void {\n let preventEventActions = false;\n\n switch (event.keyCode) {\n case keyCode.PAGEUP:\n case keyCode.HOME:\n this.setFocusToFirstItem();\n preventEventActions = true;\n break;\n case keyCode.PAGEDOWN:\n case keyCode.END:\n this.setFocusToLastItem();\n preventEventActions = true;\n break;\n case keyCode.TAB:\n this.closePanel();\n break;\n case keyCode.ESC:\n this.closePanel();\n preventEventActions = true;\n break;\n case keyCode.RETURN:\n case keyCode.SPACE:\n this.handleEnterKey(event);\n preventEventActions = true;\n break;\n case keyCode.DOWN:\n this.setFocusToNextItem();\n preventEventActions = true;\n break;\n case keyCode.UP:\n this.setFocusToPreviousItem();\n preventEventActions = true;\n break;\n case keyCode.RIGHT:\n this.currentPanelItem.openMenu();\n preventEventActions = true;\n break;\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n return MenuPanel;\n}\n","import { TWidget } from 'widgets/Widget';\nconst keyCode = Object.freeze({\n RETURN: 13,\n SPACE: 32,\n UP: 38,\n DOWN: 40\n});\n\n/**\n * @param Widget Base widget for extending\n * @returns MenuPanelToggle widget\n */\nexport default function (Widget: TWidget) {\n /**\n * @category widgets\n * @subcategory header\n * @class MenuPanelToggle\n * @augments Widget\n * @classdesc Represents MenuPanelToggle component with next features:\n * 1. Widget, which triggers touch/mobile navigation menu panel to open/close\n * 2. This widget work same as menubutton https://www.w3.org/TR/wai-aria-practices/#menubutton and open Hamburger menu, that act as regular menu, but styled as panel\n * Widget has next relationship:\n * * Open panel using method {@link MenuPanelToggle#openPanel} by event {@link MenuPanelToggle#event:navPanelOpen} from {@link MenuPanelToggle} widget.\n * * Close panel using method {@link MenuPanelToggle#closePanel} by event {@link MenuPanel#event:navPanelClose} from {@link MenuPanel} widget.\n * * Toggle panel focus using method {@link MenuPanelToggle#focus} by event {@link MenuPanel#event:navPanelToggleFocus} from {@link MenuPanel} widget.\n * @example <caption>Example of MenuPanelToggle widget usage</caption>\n * <button id=\"main-navigation-toggle\" type=\"button\"\n * data-widget=\"menuPanelToggle\"\n * data-event-click.prevent=\"showPanel\"\n * data-event-keydown=\"handleKeydown\"\n * data-widget=\"menuPanelToggle\"\n * >\n * ...button content\n * </button>\n * @property {string} data-widget - Widget name `menuPanelToggle`\n * @property {string} data-event-click - Event handler method for click event\n * @property {string} data-event-keydown - Event handler method for keydown event\n */\n class MenuPanelToggle extends Widget {\n prefs() {\n return {\n classesOpenedNav: 'm-active',\n ...super.prefs()\n };\n }\n\n /**\n * @description Initialize widget logic.\n * @listens MenuPanel#navPanelClose\n * @listens MenuPanelToggle#navPanelOpen\n * @listens MenuPanel#navPanelToggleFocus\n * @returns {void}\n */\n init() {\n this.eventBus().on('nav.panel.close', 'closePanel');\n this.eventBus().on('nav.panel.open', 'openPanel');\n this.eventBus().on('nav.panel.toggle.focus', 'focus');\n }\n\n /**\n * @description Focus 'self' element\n * @returns {void}\n */\n focus() {\n this.ref('self').focus();\n }\n\n /**\n * @description Show panel\n * @emits MenuPanelToggle#navPanelOpen\n * @param {boolean} [focusToLastItem] Focus to last item flag\n * @returns {void}\n */\n showPanel(focusToLastItem) {\n this.openPanel();\n /**\n * @description Event to open nav panel\n * @event MenuPanelToggle#navPanelOpen\n */\n this.eventBus().emit('nav.panel.open', {\n focusToLastItem: focusToLastItem\n });\n }\n\n /**\n * @description On click handler\n * @listens dom#click\n * @returns {void}\n */\n onClick() {\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n this.showPanel();\n }\n\n /**\n * @description Marked toggle as opened\n * @returns {void}\n */\n openPanel() {\n this.ref('self')\n .addClass(this.prefs().classesOpenedNav)\n .attr('aria-expanded', 'true');\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isOpenDialog' does not exist on type 'Me... Remove this comment to see the full error message\n this.isOpenDialog = true;\n }\n\n /**\n * @description Close panel\n * @returns {void}\n */\n closePanel() {\n this.ref('self')\n .removeClass(this.prefs().classesOpenedNav)\n .attr('aria-expanded', 'false');\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isOpenDialog' does not exist on type 'Me... Remove this comment to see the full error message\n if (this.isOpenDialog) {\n this.focus();\n\n // @ts-expect-error ts-migrate(2339) FIXME: Property 'isOpenDialog' does not exist on type 'Me... Remove this comment to see the full error message\n this.isOpenDialog = false;\n }\n }\n\n /**\n * @description Keydown Event handler\n * @listens dom#keydown\n * @param {HTMLElement} _ Source of keydown event\n * @param {KeyboardEvent} event Event object\n * @returns {void}\n */\n handleKeydown(_, event) {\n let preventEventActions = false;\n\n switch (event.keyCode) {\n case keyCode.UP:\n this.showPanel(true);\n preventEventActions = true;\n\n break;\n\n case keyCode.RETURN:\n case keyCode.SPACE:\n case keyCode.DOWN:\n\n // @ts-expect-error ts-migrate(2554) FIXME: Expected 1 arguments, but got 0.\n this.showPanel();\n preventEventActions = true;\n\n break;\n\n default:\n break;\n }\n\n if (preventEventActions) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n\n return MenuPanelToggle;\n}\n"],"names":["getCookie","getJSONByUrl","localStorageWrapper","BaseMinicart","Minicart","prefs","getCartQuantityTotalUrl","init","getCartQuantityTotal","then","quantityTotal","renderMinicartHeader","reRenderMinicartWrapper","response","cart","normalizeCartModel","totals","Promise","resolve","saveCartQuantityTotal","numItems","itemsIds","render","isShownQtyTotal","parseInt","ref","refMinicartContent","params","removeItem","setItem","JSON","stringify","getCartQuantityTotalPromise","url","error","catch","console","log","reject","cartQuantityTotal","getItem","isSameSession","Error","getContentByUrl","submitFormJson","WishlistItemsMgr","appendParamToURL","BaseMinicartDialog","MinicartDialog","setUpdateFlag","cartModel","showMinicart","needUpdate","isMiniCartOpened","updateContent","toggleSpinner","actionUrl","undefined","refDialog","String","addFocusTraps","close","eventBus","emit","errorCode","moveProductToWishlist","confirmationDialog","actionMovetowishlist","pid","attributes","qty","currentValue","confirmedRemoveProduct","itemAlreadyExists","wishlistItemsMgr","getInstance","updateWishlistItems","wishlistItems","length","toString","confirmDialog","movedToWishlist","uuid","isOnNotEmptyWishlistPage","document","querySelector","isSubscriptionProduct","basket","isProductRemoved","accessibilityAlert","accessibilityAlerts","movedtowishlist","productremoved","displayItemLevelErrorMessage","message","BaseHamburgerMenuItem","HamburgerMenuItem","level","on","renderMenuItems","has","submenuRendered","setSubmenuHTML","submenuHTML","idSuffix","replace","match","token","id","idSuffixPosition","indexOf","slice","handleClick","el","event","eventCategory","eventAction","eventSublabel","data","BaseMegaMenu","MegaMenu","setCurrentItem","item","currentItem","firstItem","clickOutside","BaseMenuBarItem","MenuBarItem","observe","classesStickyOverflow","addEventListener","once","body","classList","contains","onHeaderStuck","selfElement","get","parentElement","isHidden","scrollWidth","clientWidth","offsetLeft","addClass","onHeaderUnStuck","removeClass","getMenuItems","menuItems","eachChild","child","itemLink","push","menuMoreLink","openMenu","focusFirstItem","focusLastItem","openMenuAfter","hasSubmenu","outSideListener","closeMenu","returnFocus","timeout","ITEM_SWITCH_TIMEOUT","keyCode","Object","freeze","ESC","LEFT","RIGHT","MenuBarItemExt","attr","submenu","isSubmenuOpen","isSubmenuInFocus","setFocusToFirstItem","setFocusToLastItem","mouseEnter","timerCleanerLeave","timerCleanerEnter","handleKeydown","_","preventEventActions","preventSuperHandling","hasFocusedSubmenu","preventDefault","stopPropagation","BaseMenuPanel","MenuPanel","clearState","panelContainer","classesActiveLevel","currentLevel","handlePanel","focusPanelItem","panelName","htmlMarkup","getById","panel","Widget","isOpen","cartQtyTotal","window","location","assign","cartUrl","submitFormJsonWithAbort","Modal","classesActivated","updateQtyRequests","showModal","cancel","updateQty","quantityStepper","currentQuantity","isQuantityBelowMinValue","config","lineItemMinOrderQuantity","removeProduct","requestObject","quantity","getValue","promise","name","quantitychanged","finally","index","splice","dismissQty","forEach","request","abortController","abort","cancelProductRemoving","minOrderQuantity","qtyStepperID","stepper","setInputValue","filterInput","lineItemUUID","errorMessage","show","setText","link","InputStepper","getConstructor","removeProductLink","currentQuantityStepperValue","dialog","productName","onProductLinkClick","isBusy","classesLoading","longWaitingTimeout","RETURN","SPACE","CountrySelector","urlLocale","urlSite","switchLocale","button","KeyboardEvent","changeLocale","localeConfig","queryString","code","localeID","CurrencyCode","currencyCode","action","siteID","isOtherSite","redirectUrl","CountrySelectorMenuItem","callIfExists","PAGEUP","PAGEDOWN","END","HOME","UP","DOWN","ListAccessibility","constructor","preventShowSubmenu","defineItems","onDestroy","markSubmenuOpened","hasOpenedSubmenu","itemLinkRefEl","submenuElement","innerHTML","parentMenuItem","clearSubmenuHTML","setFocusToPreviousItem","setFocusToNextItem","TAB","setFocusToItem","menuItem","hasOpenedMenu","removeTabIndex","addTabIndex","focus","closeItems","handleEnterKey","domNode","target","href","dir","focusableItems","lastItem","mouseLeave","handleClose","MENU_ACTIVATION_DELAY","MenuButton","toggleMenu","isDesktopView","ARIA_EXPANDED","SwipeToClose","panelTransitionInProgress","isOpened","parentMenuItems","panelItems","classesBackdropActive","classesDialogOpen","classesDialogClosed","classesHasDialog","panelItemsCount","panelCount","panelItemsPrefix","mainMenu","mainMenuFooter","panelTitle","itemSwitchTimeout","definePanelItems","checkAriaAttributes","applyMenuRole","isMenu","getPanelItems","currentPanelItem","firstPanelItem","lastPanelItem","map","filter","transitionStart","transitionEnd","nextPanel","getText","previousPanel","last","pop","setFocusToPanelItem","updateItems","setFocusToCurrentItem","newItem","getItemIndex","panelItem","items","i","openPanel","focusToLastItem","closePanel","closeOnBackdrop","MenuPanelToggle","classesOpenedNav","showPanel","onClick","isOpenDialog"],"sourceRoot":""}