{"version":3,"file":"SlidingPanel.js","names":["SlidingPanel","a","setters","Component","default","deepMerge","Event","on","off","animate","mix","Accessibility","AnalyticsMixin","LoaderMixin","ajax","execute","with","constructor","element","options","arguments","length","classNames","open","close","url","overlay","a11y","ariaLiveOpened","ariaLiveClosed","showOverlay","initCache","active","opened","selectors","trigger","querySelector","target","content","slidingAriaLive","document","initState","state","isActive","analyticsSent","afterInit","body","appendChild","bindEvents","onTriggerClick","bind","onKeyboardControl","onTargetClick","onBeforeOverlayClose","checkActive","emit","event","key","onTabKey","togglePanel","focusTrap","analytics","onClick","sendAnalytics","hasAttribute","hide","data","getAttribute","JSON","parse","show","classList","add","then","loadContent","updateAria","initModalPattern","virtualPage","updateVirtualPage","panelOpen","isUnblockScrollForAll","destroyModalPattern","remove","addOverlayLoader","spinnerInContainer","onContentLoaded","catch","error","setContent","message","Promise","resolve","response","innerHTML","appendedScripts","querySelectorAll","forEach","script","srcScript","createElement","text","async","defer","type","head","push","destroy","removeListener","removeChild"],"sources":["components/global/SlidingPanel.js"],"sourcesContent":["import Component from 'core/Component';\nimport { deepMerge } from 'toolbox/deepMerge';\nimport { Event } from 'services/EventEmitter';\nimport { on, off } from 'toolbox/event';\nimport { animate } from 'toolbox/animate';\nimport { mix } from 'core/mixwith';\nimport Accessibility from 'mixins/Accessibility';\nimport AnalyticsMixin from 'mixins/Analytics';\nimport LoaderMixin from 'mixins/Loader';\nimport { ajax } from 'toolbox/ajax';\n\n/**\n * This is a description of the SlidingPanel constructor function.\n * @class\n * @classdesc This is a description of the SlidingPanel class. (must be edited)\n * @extends Component\n */\nexport default class SlidingPanel extends mix(Component).with(Accessibility, LoaderMixin, AnalyticsMixin) {\n /**\n * Constructor of the class that mainly merge the options of the components\n *\n * @param {HTMLElement} element HTMLElement of the component\n * @param {Object} options options that belongs to the component\n *\n */\n constructor(element, options = {}) {\n super(element, deepMerge({\n // ClassNames\n classNames: {\n open: 'h-slide-up-in', // Added to sliding panel classes after it is opened\n close: 'h-slide-up-out', // Added to sliding panel classes before it is closed\n },\n url: {}, // urls list\n overlay: {}, // overlay options\n a11y: {\n ariaLiveOpened: '', // Text used for the voice message when sliding panel is opening\n ariaLiveClosed: '', // Text used for the voice message when sliding panel is closing\n },\n showOverlay: true, // flag indicates if overlay should be shown\n }, options));\n }\n\n /**\n * All selectors must be cached. Never cache elements that are out of the component scope\n */\n initCache() {\n this.classNames = {\n active: 'm-active',\n opened: 'm-opened',\n };\n this.selectors.trigger = this.element.querySelector('[data-js-sliding-trigger]');\n this.selectors.target = this.element.querySelector('[data-js-sliding-container]');\n this.selectors.content = this.element.querySelector('[data-js-sliding-content]');\n this.selectors.slidingAriaLive = document.querySelector('[data-js-sliding-aria-live]');\n }\n\n /**\n * Init the different state of the component\n * It helps to avoid heavy DOM manipulation\n */\n initState() {\n this.state.isActive = false;\n this.state.analyticsSent = false;\n }\n\n /**\n * After init\n * Run any script after the component is fully initialized\n */\n afterInit() {\n this.selectors.target = document.body.appendChild(this.selectors.target);\n }\n\n /**\n * Should contain only event listeners and nothing else\n * All the event handlers should be into a separated function. No usage of anonyous function\n */\n bindEvents() {\n if (this.selectors.trigger) {\n on('click', this.selectors.trigger, this.onTriggerClick.bind(this));\n }\n on('keydown', this.selectors.target, this.onKeyboardControl.bind(this));\n on('click', this.selectors.target, this.onTargetClick.bind(this));\n Event.on('overlay.close.before', this.onBeforeOverlayClose, this);\n Event.on('slidingPanel.check.active', this.checkActive, this);\n }\n\n /**\n * Check if sliding panel is active when opening a modal\n */\n checkActive() {\n if (this.state.isActive) {\n Event.emit('modal.keep.overlay.open');\n }\n }\n\n /**\n * Keydown event handler\n *\n * @param {Object} event Event object\n */\n onKeyboardControl(event) {\n switch (event.key) {\n case 'Tab': // 'Tab' key\n this.onTabKey(event);\n break;\n case 'Escape': // 'Escape' key\n this.togglePanel();\n break;\n default:\n break;\n }\n }\n\n /**\n * Tab key event\n *\n * @param {Object} event Event object\n */\n onTabKey(event) {\n super.focusTrap(this.selectors.target, event);\n }\n\n /**\n * Trigger click event handler\n */\n onTriggerClick() {\n this.togglePanel();\n\n if (this.analytics.onClick && !this.state.analyticsSent) {\n this.sendAnalytics(this.analytics.onClick);\n this.state.analyticsSent = true;\n }\n }\n\n /**\n * Target container click event handler\n * @param {Object} event Event object\n */\n onTargetClick(event) {\n const { target } = event;\n\n if (target.hasAttribute('data-js-sliding-close')) {\n this.hide();\n\n if (this.options.showOverlay) {\n Event.emit('overlay.close');\n }\n }\n if (target.hasAttribute('data-analytics') && target.hasAttribute('data-send-analytics')) {\n let data;\n const analytics = target.getAttribute('data-analytics');\n if (analytics) {\n data = JSON.parse(analytics);\n }\n this.sendAnalytics(data);\n }\n }\n\n /**\n * Send analytics\n * @param {data} data analytics object\n */\n sendAnalytics(data) {\n if (data) {\n Event.emit('analytics.event', data);\n }\n }\n\n /**\n * Show/hide panel based on current state\n */\n togglePanel() {\n if (this.state.isActive) {\n this.hide();\n\n if (this.options.showOverlay) {\n Event.emit('overlay.close');\n }\n } else {\n this.show();\n }\n }\n\n /**\n * Show panel\n * @param {Object} options options\n */\n show(options) {\n const { active } = this.state;\n this.state.isActive = true;\n\n if (!active) {\n this.selectors.target.classList.add(this.classNames.active);\n animate(this.options.classNames.open, this.selectors.target).then(() => {\n this.selectors.target.classList.add(this.classNames.opened);\n });\n }\n\n this.loadContent(options && options.url);\n\n if (this.selectors.slidingAriaLive) {\n this.updateAria(this.selectors.slidingAriaLive, this.options.a11y.ariaLiveOpened);\n }\n\n // Put the focus into the Modal window after content is loaded and mask the main page from screen reader\n this.initModalPattern(this.selectors.target);\n\n if (this.analytics.virtualPage) {\n this.updateVirtualPage(this.analytics.virtualPage);\n }\n this.sendAnalytics(this.analytics.panelOpen);\n\n if (this.options.showOverlay) {\n Event.emit('overlay.open', this.options.overlay);\n }\n\n Event.emit('page.scroll.disabled', true);\n Event.emit('slidingPanel.open.after', this);\n }\n\n /**\n * Hide panel\n */\n hide() {\n Event.emit('page.scroll.enabled', { isUnblockScrollForAll: true });\n\n this.state.isActive = false;\n this.destroyModalPattern();\n\n if (this.selectors.slidingAriaLive) {\n this.updateAria(this.selectors.slidingAriaLive, this.options.a11y.ariaLiveClosed);\n }\n\n animate(this.options.classNames.close, this.selectors.target).then(() => {\n this.selectors.target.classList.remove(this.classNames.opened);\n this.selectors.target.classList.remove(this.classNames.active);\n Event.emit('slidingPanel.close.after', this);\n });\n }\n\n /**\n * Before overlay close event handler\n */\n onBeforeOverlayClose() {\n if (!this.state.isActive) {\n return;\n }\n\n this.hide();\n }\n\n /**\n * Dynamically load content\n * @param {String} url content custom url\n * @returns {Promise} object\n */\n loadContent(url) {\n if ((!url && !this.options.url.content) || !this.selectors.content) {\n return Promise.resolve();\n }\n\n this.addOverlayLoader(this.selectors.content, null, { spinnerInContainer: true });\n\n return ajax(url || this.options.url.content)\n .then(this.onContentLoaded.bind(this))\n .catch((error) => {\n this.setContent(error.message);\n });\n }\n\n /**\n * Put a content to content container\n * @param {String} response - HTML which inserts to container\n */\n onContentLoaded(response) {\n if (!this.selectors.content) {\n return;\n }\n\n this.setContent(response);\n }\n\n /**\n * Put a content to content container\n * @param {String} content - content which inserts to container\n */\n setContent(content) {\n if (!content) {\n return;\n }\n\n this.selectors.content.innerHTML = content;\n // evaluates inline javascripts in response content\n this.appendedScripts = [];\n this.selectors.content.querySelectorAll('script').forEach((script) => {\n const srcScript = document.createElement('script');\n\n srcScript.text = script.innerHTML;\n srcScript.async = script.async;\n srcScript.defer = script.defer;\n srcScript.type = script.type;\n document.head.appendChild(srcScript);\n this.appendedScripts.push(srcScript);\n });\n\n Event.emit('registry.registerChildren', this.selectors.content);\n }\n\n /**\n * Destroy is called automatically after the component is being removed from the DOM\n * You must always destroy the listeners attached to an element to avoid any memory leaks\n */\n destroy() {\n if (this.selectors.trigger) {\n off('click', this.selectors.trigger);\n }\n off('click', this.selectors.target);\n off('keydown', this.selectors.target);\n Event.removeListener('overlay.close.before', this.onBeforeOverlayClose, this);\n Event.removeListener('slidingPanel.check.active', this.checkActive, this);\n (this.appendedScripts || []).forEach((srcScript) => {\n document.head.removeChild(srcScript);\n });\n this.selectors.target.remove();\n }\n}\n"],"mappings":"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","ignoreList":[]}