{"version":3,"sources":["webpack:///./assets/javascripts/modules/components/header/LayerMenuPanel.js","webpack:///./assets/javascripts/modules/components/header/MenuItem.js","webpack:///./assets/javascripts/modules/components/HeaderComponent.js"],"names":["LayerMenuPanel","panelElement","_classCallCheck","this","isActive","panelTitle","querySelector","backBtn","leaveHandler","backHandler","show","callback","window","matchMedia","matches","addEventListener","classList","add","CLASSNAMES","remove","removeEventListener","text","innerText","element","contains","MenuItem","itemEl","layersContainerEl","item","panel","layersContainer","header","document","init","active","activeLayersContainer","divider","checkForPanel","e","console","error","dataset","panelTarget","length","target","panelEl","startListener","_this","isDesktop","showPanel","checkChild","relatedTarget","hidePanel","detectTap","preventDefault","event","type","bool","arguments","undefined","toggle","setActive","hideLayer","togglePanelsContainer","self","showLayer","onLeave","whenBack","HeaderComponent","htmlEl","_possibleConstructorReturn","__proto__","Object","getPrototypeOf","call","menuItems","menuIsOpen","searchIsOpen","burgerMenu","$component","SELECTORS","searchBtnItems","querySelectorAll","searchBtn","headerHeight","offsetHeight","style","transition","benefitBar","activeSecondLevelLayer","searchLayer","searchOverlay","searchMobile","searchHeightMobile","searchOffsetHeightMobile","actionsMobileSearch","menuItemsLinkSel","isTablet","Component","jsHeightHeader","jsVh","burgerOpen","showMenu","headerIsSticky","searchOpen","searchLayerOpened","_get","prototype","setCustomVar","listenResize","$","width","listenScroll","listenBurger","bindSearchBtnEvents","setMenuItems","menuItemsLinkEvents","bindEvents","_this2","_this3","items","forEach","menuItem","push","barHeight","CSS_CLASSNAMES","scrollY","root","documentElement","setProperty","CSS_CUSTOMVARS","innerHeight","index","$emit","$customEvents","SEARCH_LAYER_EVENTS","open","$on","MENU_EVENTS","hideMenu","disabled","close","_this4","hasAttribute","preventDefaultEvent","checkActiveSecondLevelLayer","body","position","top","scrollTo","hideSecondLvlNav"],"mappings":"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","file":"component-HeaderComponent.chunks.js","sourcesContent":["export default class LayerMenuPanel {\n get CLASSNAMES() {\n return {\n show: 'show-panel',\n };\n }\n constructor(panelElement) {\n this.isActive = false;\n this.panelElement = panelElement;\n this.panelTitle = this.panelElement.querySelector('[data-panel-title]');\n this.backBtn = this.panelElement.querySelector('[data-close-panel]');\n this.leaveHandler = () => '';\n this.backHandler = () => '';\n }\n onLeave(callback) {\n let mq = window.matchMedia('(min-width:992px)');\n if (!mq.matches) {\n return;\n }\n this.leaveHandler = callback;\n this.panelElement.addEventListener('mouseleave', this.leaveHandler);\n }\n whenBack(callback) {\n this.backHandler = callback;\n this.backBtn.addEventListener('click', this.backHandler);\n }\n showLayer() {\n this.panelElement.classList.add(this.CLASSNAMES.show);\n this.isActive = true;\n }\n hideLayer() {\n this.panelElement.classList.remove(this.CLASSNAMES.show);\n this.panelElement.removeEventListener('mouseleave', this.leaveHandler);\n this.backBtn.removeEventListener('click', this.backHandler);\n this.isActive = false;\n }\n setTitle(text) {\n if (!this.panelTitle) {\n return;\n }\n this.panelTitle.innerText = text;\n }\n checkChild(element) {\n return this.panelElement.contains(element);\n }\n}\n","import LayerMenuPanel from './LayerMenuPanel';\n\nexport default class MenuItem {\n get CLASSNAMES() {\n return {\n active: 'active',\n activeLayersContainer: 'active-layers',\n divider: 'header-divider'\n };\n }\n\n constructor(itemEl, layersContainerEl) {\n this.item = itemEl;\n this.panel = null;\n this.layersContainer = layersContainerEl;\n this.header = document.querySelector('header');\n if(this.item) {\n this.init();\n }\n }\n\n init() {\n try {\n this.checkForPanel();\n } catch(e) {\n console.error(e);\n }\n }\n\n checkForPanel() {\n if(!this.layersContainer) {\n throw `No layers container declared at constructor`;\n }\n if(\n this.item.dataset.panelTarget &&\n this.item.dataset.panelTarget.length > 0\n ) {\n let target = this.item.dataset.panelTarget;\n let panelEl = this.layersContainer.querySelector(\n ` [data-menu-panel=\"${target}\"]`\n );\n if(panelEl) {\n this.panel = new LayerMenuPanel(panelEl);\n this.startListener();\n }\n }\n }\n\n isDesktop() {\n return !!window.matchMedia('(min-width:992px)').matches;\n }\n\n startListener() {\n // check if is desktop\n if(this.isDesktop()) {\n this.item.addEventListener('mouseenter', e => {\n if(this.isDesktop()) {\n showPanel(this);\n }\n });\n this.item.addEventListener('mouseleave', e => {\n if(!this.panel.checkChild(e.relatedTarget) && this.isDesktop()) {\n this.hidePanel();\n }\n });\n } else {\n // mobile\n let detectTap;\n this.item.addEventListener('touchstart', e => {\n detectTap = true; // Detects all touch events\n });\n this.item.addEventListener('touchmove', e => {\n detectTap = false; // Excludes the scroll events from touch events\n });\n this.item.addEventListener('touchend', e => {\n e.preventDefault();\n if(event.type == \"click\") detectTap = true; // Detects click events\n if(detectTap) {\n // Here you can write the function or codes you want to execute on tap\n showPanel(this);\n }\n });\n if(!('ontouchstart' in window)) {\n this.item.addEventListener('click', e => {\n e.preventDefault();\n showPanel(this);\n });\n }\n }\n }\n\n on(event, callback) {\n if(!this.panel) {\n return;\n }\n this.item.addEventListener(event, callback);\n }\n\n setActive(bool = true) {\n if(typeof bool !== 'boolean') {\n return;\n }\n this.item.classList.toggle(this.CLASSNAMES.active, bool);\n }\n\n hidePanel() {\n if(!this.panel) {\n return;\n }\n this.setActive(false);\n this.panel.hideLayer();\n if(!this.panel.isActive) {\n this.togglePanelsContainer(this.panel.isActive);\n }\n }\n\n togglePanelsContainer(bool = true) {\n if(typeof bool !== 'boolean') {\n return;\n }\n this.layersContainer.classList.toggle(this.CLASSNAMES.activeLayersContainer, bool);\n }\n}\n\nexport const showPanel = (self) => {\n if(!self.panel || self.panel.isActive) {\n return;\n }\n self.setActive();\n self.panel.showLayer();\n self.header.classList.add(self.CLASSNAMES.divider);\n self.togglePanelsContainer(self.panel.isActive);\n self.panel.onLeave(e => {\n if(e.relatedTarget === self.item) {\n return;\n }\n self.hidePanel();\n });\n self.panel.whenBack(() => {\n self.hidePanel();\n });\n}\n","import Component from '../abstracts/Component';\nimport MenuItem from './header/MenuItem';\nimport {showPanel} from './header/MenuItem';\n\nexport default class HeaderComponent extends Component {\n get SELECTORS() {\n return {\n burgerMenu: '[data-trigger-menu]',\n searchBtn: '[data-trigger-search]',\n layersContainer: '[data-menu-layers]',\n menuItems: '[data-menu-item]',\n benefitBar: '[data-benefit-bar]',\n searchLayer: '[data-search]',\n searchOverlay: '[data-search-overlay]',\n searchMobile: '[data-search-mobile]',\n searchHeightMobile: '[data-search-height-mobile]',\n actionsMobileSearch: '[data-actions-mobile-search]',\n menuItemsLinkSel : '[data-menu-item] a'\n };\n }\n\n get CSS_CUSTOMVARS() {\n return {\n jsHeightHeader: '--js-header-height',\n jsVh: '--vh',\n };\n }\n\n get CSS_CLASSNAMES() {\n return {\n burgerOpen: 'menu-open',\n showMenu: 'show-menu',\n activeLayersContainer: 'active-layers',\n headerIsSticky: 'header-is-sticky',\n searchOpen: 'search-open',\n searchLayerOpened: '--search-layer-opened',\n };\n }\n\n constructor(htmlEl) {\n super(htmlEl);\n this.menuItems = [];\n this.menuIsOpen = false;\n this.searchIsOpen = false;\n this.burgerMenu = this.$component.querySelector(this.SELECTORS.burgerMenu);\n this.searchBtnItems = this.$component.querySelectorAll(this.SELECTORS.searchBtn);\n this.headerHeight = this.$component.offsetHeight;\n this.layersContainer = this.$component.querySelector(this.SELECTORS.layersContainer);\n if(this.layersContainer != null) this.layersContainer.style.transition = 'opacity .5s ease-in-out .2s';\n this.benefitBar = document.querySelector(this.SELECTORS.benefitBar);\n this.activeSecondLevelLayer = false;\n this.searchLayer = this.$component.querySelector(this.SELECTORS.searchLayer);\n this.searchOverlay = this.$component.querySelector(this.SELECTORS.searchOverlay);\n this.searchMobile = this.$component.querySelector(this.SELECTORS.searchMobile);\n this.searchHeightMobile = this.$component.querySelector(this.SELECTORS.searchHeightMobile);\n this.searchOffsetHeightMobile = this.searchHeightMobile !== null ? this.searchHeightMobile.offsetHeight : 0;\n this.actionsMobileSearch = this.$component.querySelector(this.SELECTORS.actionsMobileSearch);\n this.menuItemsLinkSel = this.$component.querySelectorAll(this.SELECTORS.menuItemsLinkSel);\n this.isTablet = window.matchMedia('(max-width: 991px)').matches;\n }\n\n render() {\n super.render();\n this.setCustomVar();\n this.listenResize();\n if($(window).width() < 992) { //The feature runs only for tablet and mobile to avoid a graphics bug that only occurs for desktop (MC-4695)\n this.listenScroll();\n }\n this.listenBurger();\n this.bindSearchBtnEvents();\n this.setMenuItems();\n this.menuItemsLinkEvents();\n this.bindEvents();\n }\n\n listenResize() {\n window.addEventListener('resize', () => {\n this.headerHeight = this.$component.offsetHeight;\n this.searchOffsetHeightMobile = this.searchHeightMobile ? this.searchHeightMobile.offsetHeight : this.searchOffsetHeightMobile;\n this.setMenuItems();\n this.setCustomVar();\n });\n }\n\n setMenuItems() {\n this.menuItems = [];\n let items = this.$component.querySelectorAll(this.SELECTORS.menuItems);\n\n if(items && items.length > 0) {\n items.forEach(item => {\n let menuItem = new MenuItem(item, this.layersContainer);\n this.menuItems.push(menuItem);\n });\n }\n }\n\n hideSecondLvlNav() {\n if (this.menuItems.length < 1) {\n return;\n }\n this.menuItems.forEach(menuItem => {\n menuItem.hidePanel();\n });\n }\n\n listenScroll() {\n let self = this;\n window.addEventListener('scroll', () => {\n self.headerHeight = self.$component.offsetHeight;\n let barHeight = self.benefitBar !== null ? self.benefitBar.offsetHeight : 0;\n // If the class header-is-sticky is not present, the value of self.searchOffsetHeightMobile will not be modified\n if(!self.$component.classList.contains(self.CSS_CLASSNAMES.headerIsSticky)) {\n self.searchOffsetHeightMobile = self.searchHeightMobile ? self.searchHeightMobile.offsetHeight : self.searchOffsetHeightMobile;\n }\n // To enhance activeHeaderSticky, barHeight/2 is subtracted from the check, as it is a value very close to the threshold within which the search bar needs to compress\n const activeHeaderSticky = window.scrollY > self.searchOffsetHeightMobile - barHeight/2;\n activeHeaderSticky ? self.$component.classList.add(self.CSS_CLASSNAMES.headerIsSticky) : self.$component.classList.remove(self.CSS_CLASSNAMES.headerIsSticky);\n if(window.scrollY == 0) {\n self.$component.classList.remove(self.CSS_CLASSNAMES.headerIsSticky);\n }\n self.setCustomVar();\n });\n }\n\n setCustomVar() {\n const root = document.documentElement;\n\n root.style.setProperty(this.CSS_CUSTOMVARS.jsHeightHeader, `${this.headerHeight - this.searchOffsetHeightMobile}px`);\n root.style.setProperty(this.CSS_CUSTOMVARS.jsVh, `${window.innerHeight * 0.01}px`);\n }\n\n bindSearchBtnEvents() {\n let self = this;\n if(this.searchBtnItems && this.searchBtnItems.length > 0) {\n this.searchBtnItems.forEach((item, index) => {\n item.addEventListener('click', () => {\n self.$emit(self.$customEvents.SEARCH_LAYER_EVENTS.open);\n self.searchIsOpen = true;\n });\n });\n }\n this.$on(this.$customEvents.SEARCH_LAYER_EVENTS.open, () => {\n if(self.menuIsOpen) {\n self.$emit(self.$customEvents.MENU_EVENTS.hideMenu);\n self.menuIsOpen = false;\n }\n self.searchBtnItems.forEach((item, index) => {\n item.disabled = true;\n });\n self.$component.classList.add(self.CSS_CLASSNAMES.searchLayerOpened);\n });\n this.$on(this.$customEvents.SEARCH_LAYER_EVENTS.close, () => {\n self.searchBtnItems.forEach((item, index) => {\n item.disabled = false;\n });\n self.$component.classList.remove(self.CSS_CLASSNAMES.searchLayerOpened);\n });\n\n if(this.searchOverlay != null) {\n this.searchOverlay.addEventListener('click', () => {\n self.$emit(self.$customEvents.SEARCH_LAYER_EVENTS.close);\n self.searchIsOpen = false;\n });\n }\n }\n\n listenBurger() {\n let self = this;\n if(this.burgerMenu != null) {\n this.burgerMenu.addEventListener('click', () => {\n self.menuIsOpen\n ? self.$emit(self.$customEvents.MENU_EVENTS.hideMenu)\n : self.$emit(self.$customEvents.MENU_EVENTS.showMenu);\n self.menuIsOpen = !self.menuIsOpen;\n });\n }\n }\n\n checkActiveSecondLevelLayer() {\n if(this.menuItems && this.menuItems.length > 0) {\n this.menuItems.forEach((menuItem, index) => {\n if(menuItem.item.hasAttribute('data-pre-open')) {\n showPanel(menuItem);\n this.activeSecondLevelLayer = true;\n }\n });\n }\n }\n\n menuItemsLinkEvents() {\n let self = this;\n if(this.menuItemsLinkSel && this.menuItemsLinkSel.length > 0) {\n this.menuItemsLinkSel.forEach((item, index) => {\n item.addEventListener('click', () => {\n if(item.dataset.preventDefaultEvent) {\n event.preventDefault();\n }\n });\n });\n }\n }\n\n bindEvents() {\n let self = this;\n let scrollY;\n self.$on(self.$customEvents.MENU_EVENTS.showMenu, () => {\n if(self.searchIsOpen) {\n self.$emit(self.$customEvents.SEARCH_LAYER_EVENTS.close);\n self.searchIsOpen = false;\n }\n self.checkActiveSecondLevelLayer();\n self.burgerMenu.classList.add(self.CSS_CLASSNAMES.burgerOpen);\n /*\n self.actionsMobileSearch.style.opacity = \"1\";\n */\n //self.actionsMobileSearchToggleVisibility();\n if(self.activeSecondLevelLayer) {\n self.$component.classList.add(self.CSS_CLASSNAMES.showMenu);\n } else {\n self.$component.classList.add(self.CSS_CLASSNAMES.showMenu);\n }\n let barHeight = self.benefitBar.offsetHeight;\n scrollY = window.scrollY > barHeight ? window.scrollY : barHeight;\n document.body.style.position = 'fixed';\n document.body.style.top = `-${barHeight}px`;\n document.body.style.width = '100%';\n });\n self.$on(self.$customEvents.MENU_EVENTS.hideMenu, () => {\n self.burgerMenu.classList.remove(self.CSS_CLASSNAMES.burgerOpen);\n if(!self.$component.classList.contains(self.CSS_CLASSNAMES.headerIsSticky)) {\n /*\n self.actionsMobileSearch.style.opacity = \"0\";\n */\n //self.actionsMobileSearchToggleVisibility(false);\n }\n self.$component.classList.remove(self.CSS_CLASSNAMES.showMenu);\n document.body.style.position = '';\n document.body.style.top = '';\n window.scrollTo(0, scrollY);\n self.hideSecondLvlNav();\n self.activeSecondLevelLayer = false;\n });\n }\n}\n"],"sourceRoot":""}