{"version":3,"sources":["webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/modal/modal.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/modal/ajax-modal.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/components/modal/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/lock-body/lock-body.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/lock-body/index.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/screen-dimensions/screen-dimensions.js","webpack:///./cartridges/app_designholding/cartridge/client/default/js/utilities/screen-dimensions/index.js"],"names":["MODAL_HOOK","MODAL_CLOSE_HOOK","MODAL_VISIBLE_CLASS","MODAL_HTML_CLASS","MODAL_ANIMATING_CLASS","CUSTOM_COUNTRY_MODAL_OPEN","Modal","constructor","registeredModals","scrollElement","document","scrollingElement","html","tabIndexExceptionIds","scrollTop","modals","querySelectorAll","forEach","modal","setupModalRegistry","bindEvents","bindTriggerButton","id","triggerBtn","triggerEl","addEventListener","Events","$trigger","data","bindCloseButton","closeBtn","btn","clearCurrentFocus","activeElement","body","blur","hideModal","modalIsOpen","classList","remove","customBind","getElementById","el","_modalIsInitialised","getAttribute","mobileOnly","dataset","modalMobileOnly","ScreenDimensions","isTabletLandscapeAndBigger","includes","setTabIndexOfChildren","bindModalEvents","openOnLoad","contains","$on","event","closeModal","openModal","rebindTriggerButtons","keyboardEventCode","escape","indexOf","keyCode","key","registeredModal","autoFocus","modalAutoFocus","noBodyClass","modalNoBodyClass","closeAllOthers","modalCloseAllOthers","keepScrollPosition","modalKeepScrollPosition","hasTransform","modalHasTransform","isTabletPortraitAndBigger","setScrollPosition","Object","keys","filter","_modal","add","tabIndex","setTimeout","addBodyLock","element","modalIndex","removeScrollPosition","removeBodyLock","style","top","removeProperty","MODAL_CONTENT_HOOK","AjaxModal","href","_","setModalContentAndOpen","loadModal","clickEvent","currentTarget","open","click","prototype","call","getContentError","isLoading","getContentSuccess","response","htmlString","type","parser","DOMParser","content","parseFromString","querySelector","modalElement","setModalTypeClasses","modalContent","parentNode","replaceChild","moduleInit","async","removeCurrentModalModifiers","prefix","classes","className","split","c","startsWith","join","trim","modalType","API","get","then","catch","error","touchMoveHandler","isIos","removeEventListener","installMediaQueryWatcher","mediaQuery","layoutChangedCallback","mql","window","matchMedia","addListener","matches","media","MEDIA_QUERIES","reference","breakpoint","screenHeight","height","screenWidth","width","RafThrottle","set","namespace","fn","updateWidth","mqObject","index","innerWidth","innerHeight"],"mappings":"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","file":"js/Modal.js","sourcesContent":["import Events from '@utilities/events';\nimport setTabIndexOfChildren from '@utilities/set-tabindex-of-children';\nimport ScreenDimensions from '@utilities/screen-dimensions';\nimport keyboardEventCode from '@utilities/keyboard-event-code';\nimport { body, html } from '@utilities/dom-elements';\nimport { addBodyLock, removeBodyLock } from '@utilities/lock-body';\n\nconst MODAL_HOOK = '[js-hook-modal]';\nconst MODAL_CLOSE_HOOK = '[js-hook-button-modal-close]';\nconst MODAL_VISIBLE_CLASS = 'modal--is-showing';\nconst MODAL_HTML_CLASS = 'is--modal-open';\nconst MODAL_ANIMATING_CLASS = 'modal--is-animating';\nconst CUSTOM_COUNTRY_MODAL_OPEN = 'is--country-modal-open';\n\nclass Modal {\n constructor() {\n this.registeredModals = {};\n this.scrollElement = document.scrollingElement || html;\n this.tabIndexExceptionIds = [\n 'modal-mega-menu',\n 'modal-main-menu',\n 'modal-mobile-menu',\n 'refinement-bar',\n 'share-cart-modal',\n 'coupon-modal',\n ];\n this.scrollTop = 0;\n\n const modals = [...document.querySelectorAll(MODAL_HOOK)];\n\n modals.forEach((modal) => this.setupModalRegistry(modal));\n\n this.bindEvents();\n }\n\n /**\n * Bind all button specific events\n * @param {string} id Modal id\n * @param {HTMLElement} triggerBtn Button to open modal\n */\n static bindTriggerButton({ id, triggerBtn }) {\n triggerBtn.forEach((triggerEl) =>\n triggerEl.addEventListener('click', () => {\n Events.$trigger(`modal::open`, { data: { id } });\n Events.$trigger(`modal[${id}]::open`, { data: { id } });\n }),\n );\n }\n\n /**\n * Bind all close button specific events\n * @param {string} id Modal id\n * @param {HTMLElement} triggerBtn Button to open modal\n */\n static bindCloseButton({ id, closeBtn }) {\n closeBtn.forEach((btn) =>\n btn.addEventListener('click', () => {\n Events.$trigger('modal::close', { data: { id } });\n Events.$trigger(`modal[${id}]::close`, { data: { id } });\n }),\n );\n }\n\n static clearCurrentFocus() {\n if (document.activeElement !== document.body) document.activeElement.blur();\n }\n\n static hideModal(modal) {\n if (!modal.modalIsOpen) {\n modal.classList.remove(MODAL_VISIBLE_CLASS);\n modal.classList.remove(MODAL_ANIMATING_CLASS);\n }\n }\n\n /**\n * Bind event based on custom hook\n * @param {string} id\n */\n customBind(id) {\n const modal = document.getElementById(id);\n\n this.setupModalRegistry(modal);\n }\n\n /**\n * Setup an object per found modal\n * @param {HTMLElement} el Single modalbox\n */\n setupModalRegistry(el) {\n if (el._modalIsInitialised) return;\n\n const id = el.getAttribute('id');\n\n const triggerBtn = [...document.querySelectorAll(`[aria-controls=${id}]`)];\n\n const closeBtn = [...el.querySelectorAll(MODAL_CLOSE_HOOK)];\n const mobileOnly = el.dataset.modalMobileOnly === 'true';\n\n const modal = {\n el,\n id,\n triggerBtn,\n closeBtn,\n };\n\n if (!mobileOnly || !ScreenDimensions.isTabletLandscapeAndBigger) {\n if (!this.tabIndexExceptionIds.includes(id)) {\n setTabIndexOfChildren(modal.el, -1);\n }\n this.registeredModals[`modal-${id}`] = modal;\n }\n\n this.bindModalEvents(modal);\n\n const openOnLoad = el.classList.contains(MODAL_VISIBLE_CLASS);\n if (openOnLoad) {\n Events.$trigger(`modal[${id}]::open`);\n }\n\n el._modalIsInitialised = true;\n }\n\n /**\n * Bind all general events\n */\n bindEvents() {\n Events.$on('modal::close', (event, data) => this.closeModal(data));\n Events.$on('modal::open', (event, data) => this.openModal(data));\n\n Events.$on('modal::bind', (event, data) => this.customBind(data));\n Events.$on('modal::bind-buttons', (event, data) => this.rebindTriggerButtons(data));\n }\n\n /**\n * Bind all modal specific events\n * @param {string} id Modal id\n * @param {HTMLElement} triggerBtn Button to open modal\n * @param {HTMLElement} closeBtn Button to close modal\n */\n bindModalEvents({ el, id, triggerBtn, closeBtn }) {\n Modal.bindTriggerButton({ el, id, triggerBtn });\n\n Events.$on(`modal[${id}]::close`, () => this.closeModal({ id }));\n Events.$on(`modal[${id}]::open`, () => this.openModal({ id }));\n\n Modal.bindCloseButton({ el, id, closeBtn });\n\n // Close on ESCAPE_KEY\n document.addEventListener('keyup', (event) => {\n if (keyboardEventCode.escape.indexOf(event.keyCode || event.key) !== -1 && body.classList.contains(MODAL_HTML_CLASS)) {\n Events.$trigger('modal::close');\n Events.$trigger(`modal[${id}]::close`, { data: { id } });\n }\n });\n }\n\n /**\n * Rebind all buttons of existing modals\n * @param {string} id Modal id\n */\n rebindTriggerButtons({id}) {\n const modals = [...document.querySelectorAll(`#${id}`)];\n\n // Loop trough all found modals based on hook\n modals.forEach((modal) => {\n const registeredModal = this.registeredModals[`modal-${modal.id}`] || false;\n\n if (registeredModal) {\n const triggerBtn = [...document.querySelectorAll(`[aria-controls=${modal.id}]`)];\n const closeBtn = [...registeredModal.el.querySelectorAll(MODAL_CLOSE_HOOK)];\n registeredModal.triggerBtn = triggerBtn;\n registeredModal.closeBtn = closeBtn;\n Modal.bindTriggerButton(registeredModal);\n Modal.bindCloseButton(registeredModal);\n }\n });\n }\n\n /**\n * Open modal by given id\n * @param {Object[]} data\n * @param {string} data[].id\n */\n openModal(data) {\n const modal = this.registeredModals[`modal-${data.id}`];\n\n if (!modal || modal.el.modalIsOpen) return;\n\n const autoFocus = modal.el.dataset.modalAutoFocus === 'true';\n const noBodyClass = modal.el.dataset.modalNoBodyClass === 'true';\n const closeAllOthers = modal.el.dataset.modalCloseAllOthers === 'true';\n const keepScrollPosition = modal.el.dataset.modalKeepScrollPosition === 'true';\n const hasTransform = modal.el.dataset.modalHasTransform === 'true';\n\n // Set scroll position for fixed body on mobile\n if (keepScrollPosition && !ScreenDimensions.isTabletPortraitAndBigger) this.setScrollPosition();\n\n if (closeAllOthers) {\n Object.keys(this.registeredModals)\n .filter((key) => this.registeredModals[key].id !== data.id)\n .forEach((id) => {\n const _modal = this.registeredModals[id];\n if (_modal.el.modalIsOpen) {\n Events.$trigger(`modal[${_modal.id}]::close`, { data: { id: _modal.id } });\n }\n });\n }\n\n // Add modal open class to body element if noBodyClass is false\n if (!noBodyClass) body.classList.add(MODAL_HTML_CLASS);\n\n // Add tabindex and add visible class\n if (!this.tabIndexExceptionIds.includes(data.id)) {\n modal.el.tabIndex = 0;\n setTabIndexOfChildren(modal.el, 0);\n }\n\n setTimeout(() => {\n modal.el.classList.add(MODAL_VISIBLE_CLASS);\n }, 0);\n\n if (hasTransform) {\n setTimeout(() => {\n modal.el.classList.add(MODAL_ANIMATING_CLASS);\n }, 10);\n }\n\n modal.el.modalIsOpen = true;\n addBodyLock();\n\n Events.$trigger(`modal::opened[${data.id}]`);\n\n Events.$trigger('focustrap::activate', {\n data: {\n element: modal.el,\n autoFocus,\n },\n });\n }\n\n /**\n * Close modal by id, if none gives it will close all\n * @param {Object[]} data\n * @param {string} data[].id\n */\n closeModal(data) {\n const { id } = data || {};\n\n // If no ID is given we will close all modals\n if (!data || !id) {\n // eslint-disable-next-line\n for (const modalIndex of Object.keys(this.registeredModals)) {\n const modal = this.registeredModals[modalIndex] || false;\n if (modal && modal.id) {\n this.closeModal({ id: modal.id });\n Events.$trigger('focustrap::deactivate');\n }\n }\n\n return;\n }\n\n // Get current modal from all known modals\n const modal = this.registeredModals[`modal-${id}`];\n\n // If there is no modal do nothing\n if (!modal || !modal.el.modalIsOpen) return;\n\n const noBodyClass = modal.el.dataset.modalNoBodyClass === 'true';\n\n // Remove modal open class off body element if noBodyClass is false\n if (!noBodyClass) body.classList.remove(MODAL_HTML_CLASS);\n\n const keepScrollPosition = modal.el.dataset.modalKeepScrollPosition === 'true';\n\n // Scroll to original position\n if (keepScrollPosition && !ScreenDimensions.isTabletPortraitAndBigger)\n this.removeScrollPosition();\n\n // Remove tabindex and remove visible class\n if (!this.tabIndexExceptionIds.includes(id)) {\n modal.el.tabIndex = -1;\n setTabIndexOfChildren(modal.el, -1);\n }\n\n const hasTransform = modal.el.dataset.modalHasTransform === 'true';\n\n if (hasTransform) modal.el.classList.remove(MODAL_ANIMATING_CLASS);\n\n modal.el.classList.remove(MODAL_VISIBLE_CLASS);\n body.classList.remove(CUSTOM_COUNTRY_MODAL_OPEN);\n\n modal.el.modalIsOpen = false;\n removeBodyLock();\n\n Events.$trigger('focustrap::deactivate');\n\n Modal.clearCurrentFocus();\n }\n\n /**\n * Sets scrollposition to prevent body scrolling to top when position is fixed\n */\n setScrollPosition() {\n this.scrollTop = this.scrollElement.scrollTop;\n body.style.top = `-${this.scrollTop}px`;\n }\n\n /**\n * Removes scroll position from body and scrolls to original position\n */\n removeScrollPosition() {\n this.scrollElement.scrollTop = this.scrollTop;\n body.style.removeProperty('top');\n }\n}\n\nexport default Modal;\n","import Events from '@utilities/events'\nimport API from '@utilities/api'\nimport moduleInit from '@utilities/module-init'\nimport keyboardEventCode from '@utilities/keyboard-event-code'\nimport { body } from '@utilities/dom-elements'\nimport Modal from './modal'\n\nconst MODAL_CONTENT_HOOK = '[js-hook-modal-content]'\nconst MODAL_HTML_CLASS = 'is--modal-open'\n\nclass AjaxModal extends Modal {\n constructor() {\n super()\n this.href = ''\n }\n\n /**\n * Bind all modal specific events\n * @param {string} id Modal id\n * @param {HTMLElement} triggerBtn Button to open modal\n * @param {HTMLElement} closeBtn Button to close modal\n */\n bindModalEvents({ el, id, triggerBtn, closeBtn }) {\n this.bindTriggerButton({ el, id, triggerBtn })\n\n if (el.dataset.modalHasTransform) {\n el.addEventListener('transitionend', () => Modal.hideModal(el))\n }\n\n Events.$on(`modal[${id}]::setContentAndOpen`, (_, data) =>\n this.setModalContentAndOpen(data),\n )\n Events.$on(`modal[${id}]::load`, () => this.loadModal({ id, href: this.href }))\n Events.$on(`modal[${id}]::close`, () => this.closeModal({ id }))\n Events.$on(`modal[${id}]::open`, () => this.openModal({ id }))\n\n Modal.bindCloseButton({ el, id, closeBtn })\n\n // Close on ESCAPE_KEY\n document.addEventListener('keyup', (event) => {\n if (keyboardEventCode.escape.indexOf(event.keyCode || event.key) !== -1 && body.classList.contains(MODAL_HTML_CLASS)) {\n Events.$trigger('modal::close')\n Events.$trigger(`modal[${id}]::close`, { data: { id } })\n }\n })\n }\n\n /**\n * Bind all button specific events\n * @param {string} id Modal id\n * @param {HTMLElement} triggerBtn Button to open modal\n */\n bindTriggerButton({ el, id, triggerBtn }) {\n triggerBtn.forEach((triggerEl) => {\n triggerEl.addEventListener('click', (clickEvent) => {\n if (el.modalIsOpen) {\n Events.$trigger('modal::close', { data: { id } })\n Events.$trigger(`modal[${id}]::close`, { data: { id } })\n } else if (clickEvent.currentTarget && clickEvent.currentTarget.getAttribute('href')) {\n this.href = clickEvent.currentTarget.getAttribute('href')\n Events.$trigger('modal::load', {\n data: { id, href: this.href },\n })\n } else {\n Events.$trigger('modal::open', { data: { id } })\n Events.$trigger(`modal[${id}]::open`, { data: { id } })\n }\n })\n\n if (triggerEl.dataset.open) triggerEl.click()\n })\n }\n\n bindEvents() {\n Modal.prototype.bindEvents.call(this)\n\n Events.$on('modal::load', (event, data) => this.loadModal(data))\n }\n\n /**\n * Process Fetch error for _getContent\n *\n * @param {Object|string} error\n */\n getContentError() {\n this.isLoading = false\n Events.$trigger('loader::hide')\n }\n\n /**\n * Parse Fetch results and updated select DOM elements\n *\n * @param {string} response - Fetch response HTML code\n * @return {undefined}\n */\n getContentSuccess(response, id) {\n this.isLoading = false\n Events.$trigger('loader::hide')\n Events.$trigger(`modal[${id}]::setContentAndOpen`, { data: { id, htmlString: response } })\n }\n\n setModalContentAndOpen(data) {\n const { id, htmlString, type } = data\n const parser = new DOMParser()\n const content = parser.parseFromString(htmlString, 'text/html').querySelector(MODAL_CONTENT_HOOK)\n\n if (!content) return;\n // Get current modal from all known modals\n const modal = this.registeredModals[`modal-${id}`]\n\n // If there is no modal do nothing\n if (!modal || !modal.el) return\n this.modalElement = modal.el\n\n if(type)\n this.setModalTypeClasses(type)\n\n const modalContent = modal.el.querySelector(MODAL_CONTENT_HOOK)\n if (!modalContent) return\n\n modalContent.parentNode.replaceChild(content, modalContent)\n\n\n Events.$trigger('modal::bind-buttons', { data: { id } })\n Events.$trigger('lazyimage::update')\n Events.$trigger('events::dom-reinit')\n Events.$trigger('modal::open', { data: { id } })\n Events.$trigger(`modal[${id}]::open`, { data: { id } })\n\n this.isLoading = false\n Events.$trigger('loader::hide')\n\n // @TODO create extends of ajax modal to make this part below custom\n moduleInit.async('[js-hook-ajax-modal-button]', () =>\n import(/* webpackChunkName: \"js/AjaxModalButton\" */ '@components/ajax-modal-button'),\n )\n moduleInit.async('[js-hook-add-to-cart]', () =>\n import(/* webpackChunkName: \"js/AddToCart\" */ '@components/add-to-cart')\n )\n moduleInit.async('[js-hook-accordion]', () =>\n import(/* webpackChunkName: \"js/Accordion\" */ '@components/accordion'),\n )\n moduleInit.async('[js-hook-address-form]', () =>\n import(/* webpackChunkName: \"js/AddressForm\" */ '@components/address-form'),\n )\n moduleInit.async('[js-hook-product-attribute]', () =>\n import(/* webpackChunkName: \"js/ProductAttribute\" */ '@components/product-attribute'),\n )\n moduleInit.async('[js-hook-product-attribute-size]', () =>\n import(/* webpackChunkName: \"js/ProductAttributeSize\" */ '@components/product-attribute/size'),\n )\n moduleInit.async('[js-hook-toggle]', () =>\n import(/* webpackChunkName: \"js/Toggle\" */ '@components/toggle'),\n )\n moduleInit.async('[js-hook-alert]', () =>\n import(/* webpackChunkName: \"js/Alert\" */ '@components/alert'),\n )\n }\n\n removeCurrentModalModifiers() {\n const prefix = 'modal--';\n const classes = this.modalElement.className.split(\" \").filter(c => !c.startsWith(prefix));\n this.modalElement.className = classes.join(\" \").trim();\n }\n\n /**\n * Control css-modifier classes for modals based on Type\n *\n * Type-list:\n * no type/default; Centered modal\n * 'flyout'; Panel animates in from the right side on desktop. Animates in from the bottom on mobile.\n */\n setModalTypeClasses(modalType) {\n this.removeCurrentModalModifiers();\n this.modalElement.classList.add(`modal--${modalType}`)\n }\n\n /**\n * Retrieve data from tab content search results\n */\n loadModal(data) {\n const { id, href } = data\n this.isLoading = true\n Events.$trigger('loader::show')\n\n API.get(href)\n .then((response) => this.getContentSuccess(response.data, id))\n .catch((error) => this.getContentError(error.response.data || ''))\n }\n}\n\nexport default new AjaxModal()\n","/**\n * @shelf-version: 1.1.0\n */\n\nimport Modal from './ajax-modal';\n\nexport default Modal;\n","import isIos from '@utilities/detect-os'\n\n/**\n * Body lock utils to prevent body from scrolling on iOS when positioned fixed\n * Too prevent issues when having -webkit-overflow-scrolling: touch\n * Source: https://stackoverflow.com/questions/48873171/webkit-overflow-touch-stops-working-when-tapping-on-element-outside-of-scroll\n */\n\nfunction touchMoveHandler() {\n document.body.scrollTop = 0\n}\n\nexport const addBodyLock = () => {\n if (!isIos) return\n document.addEventListener('touchmove', touchMoveHandler, false)\n}\n\nexport const removeBodyLock = () => {\n if (!isIos) return\n document.removeEventListener('touchmove', touchMoveHandler, false)\n}\n","import { addBodyLock, removeBodyLock } from './lock-body';\n\nexport { addBodyLock, removeBodyLock };\n","import RafThrottle from '@utilities/raf-throttle'\n\nconst installMediaQueryWatcher = (mediaQuery, layoutChangedCallback) => {\n const mql = window.matchMedia(mediaQuery)\n mql.addListener((event) => layoutChangedCallback(event.matches, event.media))\n layoutChangedCallback(mql.matches, mql.media)\n}\n\nconst MEDIA_QUERIES = [\n {\n reference: 'isMobile',\n breakpoint: 320,\n },\n {\n reference: 'isMobilePlus',\n breakpoint: 480,\n },\n {\n reference: 'isTabletPortrait',\n breakpoint: 768,\n },\n {\n reference: 'isTabletLandscape',\n breakpoint: 1024,\n },\n {\n reference: 'isLaptop',\n breakpoint: 1240,\n },\n {\n reference: 'isDesktop',\n breakpoint: 1600,\n },\n {\n reference: 'isWidescreen',\n breakpoint: 1920,\n },\n]\n\nclass ScreenDimensions {\n get screenHeight() {\n return this.height\n }\n\n get screenWidth() {\n return this.width\n }\n\n constructor() {\n RafThrottle.set([\n {\n element: window,\n event: 'resize',\n namespace: 'ScreenDimensionsWidthChange',\n fn: () => this.updateWidth(),\n },\n ])\n\n MEDIA_QUERIES.forEach((mqObject, index) => {\n const { breakpoint } = mqObject\n\n installMediaQueryWatcher(`(min-width: ${breakpoint}px)`, (matches) => {\n this[`${mqObject.reference}AndBigger`] = matches\n })\n\n if (!index) {\n installMediaQueryWatcher(`(max-width: ${breakpoint}px)`, (matches) => {\n this[mqObject.reference] = matches\n })\n } else if (MEDIA_QUERIES[index + 1]) {\n installMediaQueryWatcher(\n `(min-width: ${breakpoint}px) and (max-width: ${\n MEDIA_QUERIES[index + 1].breakpoint - 1\n }px)`,\n (matches) => {\n this[mqObject.reference] = matches\n },\n )\n } else {\n installMediaQueryWatcher(`(min-width: ${breakpoint}px)`, (matches) => {\n this[mqObject.reference] = matches\n })\n }\n })\n\n this.updateWidth()\n }\n\n updateWidth() {\n // eslint-disable-next-line\n ;(this.width = window.innerWidth), (this.height = window.innerHeight)\n }\n}\n\nexport default new ScreenDimensions()\n","/**\n * @shelf-version: 1.1.0\n */\n\nimport ScreenDimensions from './screen-dimensions'\n\nexport default ScreenDimensions\n"],"sourceRoot":""}