{"version":3,"file":"javascripts/chunks/2a86c4f5706d85e4caad.dialog.js","mappings":"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","sources":["webpack:///./components/dialog/javascripts/dialog.js","webpack:///./javascripts/events/delegateEvent.js","webpack:///./javascripts/dom/addClass.js","webpack:///./javascripts/dom/removeClass.js","webpack:///./javascripts/dom/select.js","webpack:///./javascripts/helpers/baseModule.js","webpack:///../.yarn/cache/body-scroll-lock-npm-3.1.5-fbe946063b-52c25b81d6.zip/node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js"],"sourcesContent":["import { disableBodyScroll, enableBodyScroll } from 'body-scroll-lock';\n\nimport addClass from '../../../javascripts/dom/addClass';\nimport BaseModule from '../../../javascripts/helpers/baseModule';\nimport delegateEvent from '../../../javascripts/events/delegateEvent';\nimport removeClass from '../../../javascripts/dom/removeClass';\n\n// Dialo module based on the wai-aria best practises https://www.w3.org/TR/2017/NOTE-wai-aria-practices-1.1-20171214/examples/dialog-dialog/dialog.html\nexport default class Dialog extends BaseModule {\n constructor(element) {\n super(element, element.getAttribute('data-js-module'));\n if (this.initializedBefore) return;\n\n // make sure the overlay is a direct child of
\n if (element.parentElement !== document.body) {\n document.body.appendChild(element);\n }\n\n this.getElements([\n { id: 'body', selector: 'body' },\n { id: 'close', selector: 'close' },\n { id: 'content', selector: 'content' }\n ]);\n\n this.dialogContentUrl = this.elements.self.getAttribute(\n 'data-js-dialog-content'\n );\n this.dialogIsActiveClass = 'dialog--is-active';\n\n this.focusedElementBeforeOpen = document.activeElement;\n this.bindEvents();\n }\n\n get focusableElements() {\n return Array.from(\n this.elements.self.querySelectorAll(\n 'a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), [tabindex=\"0\"]:not([hidden])'\n )\n );\n }\n\n get firstFocusableElement() {\n return this.focusableElements[0];\n }\n\n get lastFocusableElement() {\n return this.focusableElements.slice(-1)[0];\n }\n\n get isActive() {\n return this.elements.self.classList.contains(this.dialogIsActiveClass);\n }\n\n /**\n * When focus is on the first element, moves the focus to\n * the last element of a dialog\n * @param {any} event backward tab\n * @returns {void}\n */\n handleBackwardTab(event) {\n if (document.activeElement === this.firstFocusableElement) {\n event.preventDefault();\n this.lastFocusableElement.focus();\n }\n }\n\n /**\n * When focus is on the last element, moves the focus back to\n * the first element of a dialog\n * @param {any} event forward tab\n * @returns {void}\n */\n handleForwardTab(event) {\n if (document.activeElement === this.lastFocusableElement) {\n event.preventDefault();\n this.firstFocusableElement.focus();\n }\n }\n\n openDialog() {\n disableBodyScroll(this.elements.self);\n this.focusedElementBeforeOpen = document.activeElement;\n addClass(this.elements.self, this.dialogIsActiveClass);\n this.elements.self.removeAttribute('hidden', '');\n this.firstFocusableElement.focus();\n }\n\n closeDialog() {\n removeClass(this.elements.self, this.dialogIsActiveClass);\n this.elements.self.setAttribute('hidden', '');\n this.focusedElementBeforeOpen.focus();\n enableBodyScroll(this.elements.self);\n }\n\n toggleDialog() {\n if (this.isActive) {\n this.closeDialog();\n } else {\n this.openDialog();\n }\n }\n\n bindEvents() {\n // Close the dialog when clicking outside of it\n this.elements.self.addEventListener('click', (event) => {\n if (event.target === this.elements.self) {\n this.closeDialog();\n }\n });\n\n // Open dialog on button click\n const selector = `[data-js-dialog-toggle=\"${this.elements.self.id}\"]`;\n if (selector) {\n delegateEvent('click', selector, document, this.openDialog.bind(this));\n }\n\n // Close dialog on close click\n this.elements.close.addEventListener('click', this.closeDialog.bind(this));\n\n // Control dialog via events\n this.elements.self.addEventListener(\n 'closeDialog',\n this.closeDialog.bind(this)\n );\n this.elements.self.addEventListener(\n 'openDialog',\n this.openDialog.bind(this)\n );\n this.elements.self.addEventListener(\n 'toggleDialog',\n this.toggleDialog.bind(this)\n );\n\n // a11y key helpers\n this.elements.self.addEventListener('keydown', (event) => {\n switch (event.key) {\n // Focus never leaves the dialog and moves around\n // between focusable elements\n case 'Tab': {\n if (this.focusableElements.length === 1) {\n event.preventDefault();\n break;\n }\n if (event.shiftKey) {\n this.handleBackwardTab(event);\n } else {\n this.handleForwardTab(event);\n }\n break;\n }\n // Escape closes the top dialog (current dialog)\n case 'Escape': {\n this.closeDialog();\n break;\n }\n default: {\n break;\n }\n }\n });\n }\n}\n","/**\n * Live event binding on document or different context\n *\n * delegate('click', '.some_elem', document, (event) => {\n * });\n *\n * @param {string} eventName Event to bind\n * @param {string} sel Selector for the descendant node\n * @param {Object} el Context the event node is related to\n * @param {function} handler Callback function shoulkd get triggered when event gets triggered\n * @returns {void}\n */\nexport default (eventName, sel, el, handler) => {\n el.addEventListener(\n eventName,\n (e) => {\n const found = e.target.closest(sel);\n // returns null if no matching parentNode is found\n if (found) {\n handler.call(found, e);\n }\n },\n false\n );\n};\n","/**\n * Adds classes to a DOM element\n * @param {Element} element Element the classes should get added to\n * @param {string} classNames One or more classnames\n * @returns {void}\n */\nexport default (element, ...classNames) => {\n classNames\n .filter((className) => !element.classList.contains(className))\n .forEach((className) => {\n element.classList.add(className);\n });\n};\n","/**\n * Removes classes from a DOM element\n * @param {Element} element Element the classes should get removed from\n * @param {string} classNames One or more classnames\n * @returns {void}\n */\nexport default (element, ...classNames) => {\n classNames\n .filter((className) => element.classList.contains(className))\n .forEach((className) => {\n element.classList.remove(className);\n });\n};\n","/**\n * This methods selects Elements from a specific context by a selector\n * @param {string} selector Selector of the element to find\n * @param {Element|HTMLDocument} [element] Context of the selectable\n * @returns {Array