{"version":3,"file":"Header.js","names":["Header","a","setters","Component","default","mix","Event","mediaQuery","on","off","trigger","animate","deepMerge","Accessibility","tryParseJSON","execute","with","constructor","element","options","arguments","length","enableSticky","_resizable","_scrollable","hideOnScroll","hideElementOnScroll","breakpoints","large","anchor","initCache","sentinelObserver","headerObserver","classNames","focused","sticked","disabled","hamburgerOpened","quickSearchOpened","searchSuggestionsOpened","searchEnterAnimation","searchLeaveAnimation","stickyhidden","selectors","anchorElement","is","document","querySelector","headerInner","searchContainer","simpleSearchCta","headerStickyHidden","querySelectorAll","initState","state","isSticky","isDisabled","wasDisabled","searchOpened","hasSentinel","lastScrollTop","isHeaderTransparent","bindEvents","updateHeight","toggleSearchBar","bind","onKeyboardControl","onOpenSearchSuggestions","onCloseSearchSuggestion","onSearchOverlayClosed","onSearchClose","toggleHamburger","checkHeaderHeight","headerFocused","headerUnfocused","afterInit","body","classList","contains","saveOriginalTabIndex","addHeaderObserver","addSentinel","add","remove","event","key","shiftKey","target","getAttribute","closeSearchBar","focus","IntersectionObserver","records","record","intersectionRatio","threshold","observe","currentHeight","getBoundingClientRect","height","emit","headerHeight","style","isOpened","setTimeout","openSearchBar","setAttribute","onClose","bubbles","then","analytics","onScroll","toggleHeaderWrapperOnScroll","currentScrollTop","window","scrollY","params","restoreFocus","onResize","setAccessibility","disableSticky","resetOriginalTabIndex","forEach","el","sentinel","createElement","appendChild","addSentinelObserver","setAltTabIndex","activeElement","destroy","disconnect","removeListener"],"sources":["components/global/Header.js"],"sourcesContent":["/* eslint max-lines: [\"error\", {\"max\": 350, \"skipBlankLines\": true, \"skipComments\": true }] */\n\nimport Component from 'core/Component';\nimport { mix } from 'core/mixwith';\nimport { Event } from 'services/EventEmitter';\nimport { mediaQuery } from 'toolbox/mediaQuery';\nimport { on, off, trigger } from 'toolbox/event';\nimport { animate } from 'toolbox/animate';\nimport { deepMerge } from 'toolbox/deepMerge';\nimport Accessibility from 'mixins/Accessibility';\nimport { tryParseJSON } from 'toolbox/object';\n\n/**\n * This is a description of the Header constructor function.\n * @class\n * @classdesc This is a description of the Header class.\n * @extends Component\n */\nexport default class Header extends mix(Component).with(Accessibility) {\n /**\n * Constructor of the class that mainly merge the options of the components\n * @param {HTMLElement} element HTMLElement of the component\n * @param {Object} options options that belongs to the component\n */\n constructor(element, options = {}) {\n super(element, deepMerge({\n enableSticky: true,\n _resizable: true,\n _scrollable: true,\n hideOnScroll: true,\n hideElementOnScroll: [],\n\n breakpoints: {\n large: {\n anchor: '[data-js-anchor-large]', // has to be a selector inside header element\n },\n },\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.sentinelObserver = null;\n this.headerObserver = null;\n\n this.classNames = {\n focused: 'm-focused',\n sticked: 'm-sticked',\n disabled: 'm-disabled',\n hamburgerOpened: 'm-hamburger-active',\n quickSearchOpened: 'm-search-active',\n searchSuggestionsOpened: 'm-search-suggestions-active',\n searchEnterAnimation: 'h-fade-in',\n searchLeaveAnimation: 'h-fade-out',\n stickyhidden: 'h-hidden',\n };\n\n if (this.options.enableSticky) {\n if ((mediaQuery.is('xlarge'))) {\n this.selectors.anchorElement = document.querySelector('[data-js-anchor-large]');\n } else {\n this.selectors.anchorElement = document.querySelector('[data-js-anchor]');\n }\n this.selectors.headerInner = this.element.querySelector('[data-js-header-inner]');\n }\n this.selectors.searchContainer = this.element.querySelector('[data-js-header-search-container]');\n if ((mediaQuery.is('xlarge'))) {\n this.selectors.simpleSearchCta = this.element.querySelector('[data-js-header-search-cta-large]');\n } else {\n this.selectors.simpleSearchCta = this.element.querySelector('[data-js-header-search-cta]');\n }\n if (!this.options.hideOnScroll || this.options.hideElementOnScroll) {\n this.headerStickyHidden = this.element.querySelectorAll('[data-js-header-sticky-hidden]');\n }\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.isSticky = false;\n this.state.isDisabled = false;\n this.state.wasDisabled = false;\n this.state.searchOpened = false;\n this.state.hamburgerOpened = false;\n this.state.hasSentinel = false;\n this.state.lastScrollTop = undefined;\n this.state.isHeaderTransparent = false;\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.options.enableSticky) {\n Event.on('contentPanel.transition.ended', this.updateHeight, this);\n }\n\n if (this.selectors.simpleSearchCta) {\n on('click', this.selectors.simpleSearchCta, this.toggleSearchBar.bind(this));\n }\n\n on('keydown', this.selectors.searchContainer, this.onKeyboardControl.bind(this));\n on('simplesearch.results.show', this.element, this.onOpenSearchSuggestions.bind(this));\n on('simplesearch.results.hide', this.element, this.onCloseSearchSuggestion.bind(this));\n on('simplesearch.overlay.closed', this.element, this.onSearchOverlayClosed.bind(this));\n Event.on('simplesearch.close', this.onSearchClose, this);\n Event.on('hamburger.toggle', this.toggleHamburger, this);\n Event.on('sticky.stick', this.checkHeaderHeight, this);\n Event.on('contentPanel.hide', this.checkHeaderHeight, this);\n\n if (this.state.isHeaderTransparent) {\n Event.on('header.focused', this.headerFocused, this);\n Event.on('header.unfocused', this.headerUnfocused, this);\n }\n }\n\n /**\n * After init\n * Run any script after the component is fully initialized\n */\n afterInit() {\n this.state.isHeaderTransparent = document.body.classList.contains('header-transparent');\n\n if (this.options.enableSticky) {\n super.saveOriginalTabIndex();\n this.addHeaderObserver();\n this.addSentinel();\n }\n }\n\n /**\n * Header focused\n * Add class m-focused to header\n */\n headerFocused() {\n if (!this.element.classList.contains(this.classNames.focused)) {\n this.element.classList.add(this.classNames.focused);\n }\n }\n\n /**\n * Header unfocused\n * Remove class m-focused from header\n */\n headerUnfocused() {\n if (this.element.classList.contains(this.classNames.focused)) {\n this.element.classList.remove(this.classNames.focused);\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 if (!event.shiftKey && event.target.getAttribute('data-js-focus-order') === 'last') {\n this.closeSearchBar();\n }\n if (event.shiftKey && event.target.getAttribute('data-js-focus-order') === 'first') { // 'TAB' + shift key\n this.closeSearchBar();\n }\n break;\n case 'Escape': // 'Escape' key\n this.closeSearchBar();\n this.selectors.simpleSearchCta.focus();\n break;\n default:\n break;\n }\n }\n\n /**\n * Add intersection observer for header\n */\n addHeaderObserver() {\n this.headerObserver = new IntersectionObserver((records) => {\n const record = records[0];\n\n // Started sticking.\n if (record.intersectionRatio < 1) {\n this.enableSticky();\n }\n }, { threshold: [0, 1] });\n\n if (this.selectors.anchorElement) {\n // Attach observer to the anchor where you want the sticky to start\n this.headerObserver.observe(this.selectors.anchorElement);\n }\n }\n\n /**\n * Broadcast height of the header\n */\n checkHeaderHeight() {\n const currentHeight = this.state.isDisabled ? 0 : this.selectors.headerInner.getBoundingClientRect().height;\n\n if ((!this.options.hideOnScroll && this.options.hideElementOnScroll)\n || (this.state.wasDisabled !== this.state.isDisabled)) {\n Event.emit('header.updateHeight', {\n height: currentHeight,\n isSticky: !this.state.isDisabled,\n });\n }\n\n this.state.wasDisabled = this.state.isDisabled;\n }\n\n /**\n * Update height of the header\n *\n * @param {Number} height of header\n */\n updateHeight(height) {\n let headerHeight = 'auto';\n\n // We should set the header height only when during sticky mode\n if (this.state.isSticky) {\n headerHeight = height || this.element.getBoundingClientRect().height;\n }\n\n this.element.style.height = headerHeight === 'auto' ? headerHeight : `${headerHeight}px`;\n this.checkHeaderHeight();\n }\n\n /**\n * ToggleHamburger event handler\n *\n * @param {Boolean} isOpened Flag\n */\n toggleHamburger(isOpened) {\n this.state.hamburgerOpened = isOpened;\n if (this.state.hamburgerOpened) {\n this.element.classList.add(this.classNames.hamburgerOpened);\n } else {\n setTimeout(() => {\n this.element.classList.remove(this.classNames.hamburgerOpened);\n }, 200);\n }\n }\n\n /**\n * ToggleSearchBar event handler\n */\n toggleSearchBar() {\n if (this.state.searchOpened) {\n this.closeSearchBar();\n } else {\n this.openSearchBar();\n }\n }\n\n /**\n * Open Search Bar\n * @returns {Promise} - Promise\n */\n openSearchBar() {\n const { quickSearchOpened, searchEnterAnimation } = this.classNames;\n\n this.element.classList.add(quickSearchOpened);\n this.state.searchOpened = true;\n this.selectors.simpleSearchCta.setAttribute('aria-expanded', 'true');\n\n if (mediaQuery.is('xlarge')) {\n Event.emit('overlay.open', {\n /**\n * on overlay close\n */\n onClose: () => {\n trigger('simplesearch.overlay.closed', this.element, { bubbles: true });\n trigger('simplesearch.results.hide', this.element, { bubbles: true });\n },\n });\n }\n\n Event.emit('hamburger.menu.close');\n Event.emit('header.search.open');\n\n return animate(searchEnterAnimation, this.selectors.searchContainer).then(() => {\n const analytics = tryParseJSON(this.selectors.simpleSearchCta.getAttribute('data-analytics'));\n if (analytics) {\n Event.emit('analytics.event', analytics);\n }\n });\n }\n\n /**\n * Close Search Bar\n * @returns {Promise} - Promise\n */\n closeSearchBar() {\n if (!this.state.searchOpened) {\n return null;\n }\n\n const { quickSearchOpened, searchLeaveAnimation } = this.classNames;\n Event.emit('overlay.close');\n\n return animate(searchLeaveAnimation, this.selectors.searchContainer)\n .then(() => {\n Event.emit('header.search.close');\n this.state.searchOpened = false;\n this.element.classList.remove(quickSearchOpened);\n this.selectors.simpleSearchCta.setAttribute('aria-expanded', 'false');\n });\n }\n\n /* eslint-disable complexity */\n /**\n * Handlers to onscroll event\n */\n onScroll() {\n if (!this.state.isSticky || this.state.hamburgerOpened) {\n return;\n }\n if (!this.options.hideOnScroll && this.options.hideElementOnScroll) {\n this.toggleHeaderWrapperOnScroll();\n return;\n }\n\n const currentScrollTop = window.scrollY;\n\n if (currentScrollTop < this.state.lastScrollTop && this.state.isDisabled) {\n this.element.classList.remove(this.classNames.disabled);\n this.element.classList.add(this.classNames.sticked);\n this.state.isDisabled = false;\n } else if (currentScrollTop > this.state.lastScrollTop && !this.state.isDisabled) {\n this.element.classList.add(this.classNames.disabled);\n this.state.isDisabled = true;\n }\n\n this.checkHeaderHeight();\n this.state.lastScrollTop = currentScrollTop;\n }\n /* eslint-enable complexity */\n\n /**\n * SearchOverlayClosed event handler\n */\n onSearchOverlayClosed() {\n this.closeSearchBar();\n }\n\n /**\n * on search field close handler\n * @param {Object} params Event object\n */\n onSearchClose(params) {\n this.closeSearchBar();\n\n if (params && params.restoreFocus) {\n this.selectors.simpleSearchCta.focus();\n }\n }\n\n /**\n * Open Search Suggestions\n */\n onOpenSearchSuggestions() {\n this.element.classList.add(this.classNames.searchSuggestionsOpened);\n this.state.searchSuggestionsOpened = true;\n }\n\n /**\n * SearchSuggestionsOverlayClosed event handler\n */\n onCloseSearchSuggestion() {\n if (this.state.searchSuggestionsOpened) {\n this.element.classList.remove(this.classNames.searchSuggestionsOpened);\n this.state.searchSuggestionsOpened = false;\n }\n }\n\n /**\n * Handlers to onresize event\n */\n onResize() {\n this.updateHeight();\n }\n\n /**\n * Enable sticked state\n */\n enableSticky() {\n if (this.state.isSticky) {\n return;\n }\n\n this.state.isSticky = true;\n this.updateHeight();\n if (!this.options.hideOnScroll || this.state.searchOpened) {\n this.element.classList.add(this.classNames.sticked);\n }\n this.checkHeaderHeight();\n Event.emit('header.sticky.enabled');\n Event.emit('hamburger.menu.close');\n\n if (mediaQuery.is('xlarge')) {\n this.setAccessibility();\n }\n\n if (!this.options.hideOnScroll && this.options.hideElementOnScroll) {\n this.toggleHeaderWrapperOnScroll();\n }\n }\n\n /**\n * Disabled sticked state\n */\n disableSticky() {\n this.state.isSticky = false;\n this.state.isDisabled = false;\n this.updateHeight('auto');\n this.element.classList.remove(this.classNames.sticked);\n this.element.classList.remove(this.classNames.disabled);\n this.checkHeaderHeight();\n Event.emit('header.sticky.disabled');\n\n if (mediaQuery.is('xlarge')) {\n super.resetOriginalTabIndex(true);\n }\n }\n\n /**\n * Toggles the header wrapper's visibility on scroll\n */\n toggleHeaderWrapperOnScroll() {\n if (this.options.hideOnScroll || !this.options.hideElementOnScroll) {\n return;\n }\n const currentScrollTop = window.scrollY || 0;\n\n if (currentScrollTop > this.state.lastScrollTop) { // Scroll down\n this.headerStickyHidden.forEach((el) => {\n el.classList.add(this.classNames.stickyhidden);\n });\n } else if (currentScrollTop < this.state.lastScrollTop) { // Scroll up\n this.headerStickyHidden.forEach((el) => {\n el.classList.remove(this.classNames.stickyhidden);\n });\n }\n this.checkHeaderHeight();\n // Update lastScrollTop after processing\n this.state.lastScrollTop = currentScrollTop;\n }\n\n /**\n * Adding a sentinel within the header. A sentinel is an HTMLElement placed at the initial position of the anchor\n * without that we cannot know when we disable the sticky state. That sentinel should take the same\n * height and position as the anchor\n */\n addSentinel() {\n if (this.state.hasSentinel) {\n return;\n }\n\n this.state.hasSentinel = true;\n\n this.sentinel = document.createElement('div');\n this.sentinel.classList.add('l-header__sentinel');\n\n if (this.selectors.anchorElement) {\n this.sentinel.style.height = `${this.selectors.anchorElement.getBoundingClientRect().height}px`;\n }\n\n this.element.appendChild(this.sentinel);\n\n this.addSentinelObserver();\n }\n\n /**\n * Add an observer to the sentinel\n *\n * @param {HTMLElement} sentinel Data\n */\n addSentinelObserver() {\n this.sentinelObserver = new IntersectionObserver((records) => {\n const record = records[0];\n // stop sticking.\n if (record.intersectionRatio >= 1) {\n this.disableSticky();\n }\n }, { threshold: [1] });\n\n this.sentinelObserver.observe(this.sentinel);\n }\n\n /**\n * Modify tabindex in sticky header for consistent TAB navigation.\n * If user didn't use TAB navigation, move focus to sticky header\n */\n setAccessibility() {\n super.setAltTabIndex();\n\n if (document.activeElement === document.body) {\n this.element.focus();\n }\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.options.enableSticky) {\n if (this.sentinelObserver) {\n this.sentinelObserver.disconnect();\n }\n\n if (this.headerObserver) {\n this.headerObserver.disconnect();\n }\n\n this.updateHeight('auto');\n Event.removeListener('contentPanel.transition.ended', this.updateHeight, this);\n }\n\n off('click', this.selectors.simpleSearchCta);\n off('keydown', this.selectors.searchContainer);\n off('simplesearch.results.show', this.element);\n off('simplesearch.results.hide', this.element);\n off('simplesearch.overlay.closed', this.element);\n Event.removeListener('simplesearch.close', this.toggleSearchBar, this);\n Event.removeListener('hamburger.toggle', this.toggleHamburger, this);\n Event.removeListener('sticky.stick', this.checkHeaderHeight, this);\n Event.removeListener('contentPanel.hide', this.checkHeaderHeight, this);\n\n if (this.state.isHeaderTransparent) {\n Event.removeListener('header.focused', this.headerFocused, this);\n Event.removeListener('header.unfocused', this.headerUnfocused, this);\n }\n }\n}\n"],"mappings":"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","ignoreList":[]}