1"use strict";(self.webpackChunkpattern_library=self.webpackChunkpattern_library||[]).push([[608],{7452: 2/*!**************************************!*\ 3 !*** ./source/js/utils/datalayer.js ***! 4 \**************************************/function(e,t){t.A=e=>{window.dataLayer=window.dataLayer||[],window.dataLayer.push(e)}},7495: 5/*!*************************************!*\ 6 !*** ./source/js/utils/_helpers.js ***! 7 \*************************************/function(e,t,i){function s(e,t){const i=String(e.className);if(i.indexOf(t)>0)return;const s=`${i} ${t}`;e.setAttribute("class",s.trim())}function n(e,t){const i=String(e.className);if(i.indexOf(t)>=0){const s=i.replace(t,"");e.setAttribute("class",s.trim())}}function o(e,t){return String(e.className).indexOf(t)>=0||!1}function a(e,t){Element.prototype.matches||(Element.prototype.matches=Element.prototype.matchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector||Element.prototype.oMatchesSelector||Element.prototype.webkitMatchesSelector||function(e){const t=(this.document||this.ownerDocument).querySelectorAll(e);let i=t.length;for(;--i>=0&&t.item(i)!==this;)console.log("");return i>-1});let i=e;for(;i&&i!==document;i=i.parentNode)if(i.matches(t))return i;return null}i.d(t,{iQ:function(){return s},kp:function(){return a},nB:function(){return o},vy:function(){return n}})},9195: 8/*!****************************************************************************!*\ 9 !*** ./source/patterns/03-components/global/_header/header.js + 1 modules ***! 10 \****************************************************************************/function(e,t,i){i.r(t),i.d(t,{default:function(){return c}});var s=i(738),n=i(8014),o=i(7495),a=i(7452);class r{constructor(e){this.container=e,this.headerSpacer=document.querySelector(".js-header-spacer"),this.innerContainer=this.container.querySelector(".js-header-inner"),this.toggleButton=this.container.querySelector(".js-burger-nav"),this.nav=this.container.querySelector(".js-mobile-navigation"),this.desktopSearchForm=this.container.querySelector(".js-search-form"),this.desktopSearchTextField=this.container.querySelector(".js-search-textfield"),this.showSearchButton=this.container.querySelector(".js-show-search"),this.hideSearchButton=this.container.querySelector(".js-hide-search"),this.initialised=!1,this.isSearchOpen=!1,this.lastScrollTop=0,this.init()}init(){if(this.initialised)console.warn("Header module is already initialised!");else{this.desktopSearchForm&&this.desktopSearchForm.addEventListener("submit",()=>r.validateForm()),this.showSearchButton&&this.showSearchButton.addEventListener("click",e=>{e.preventDefault(),this.container.classList.contains("header--mobile-nav-open")&&this.toggleMobileMenu(),this.container.classList.toggle("search-open")}),this.hideSearchButton&&this.hideSearchButton.addEventListener("click",e=>{e.preventDefault(),this.hideSearchBar()});const e=function(e,t){let i;return(...s)=>{const n=this;clearTimeout(i),i=setTimeout(()=>t.apply(n,s),e)}}(50,()=>{this.resize()});window.addEventListener("resize",e),this.resize();let t=!1;this.lastKnownScrollPosition=window.scrollY,window.addEventListener("scroll",()=>{this.lastKnownScrollPosition=window.scrollY<0?0:window.scrollY,t||(window.requestAnimationFrame(()=>{this.applyScrollClasses(),t=!1}),t=!0)}),this.applyScrollClasses(),this.applyKeyboardNavigation(),this.toggleMobileSubNavigation(),this.toggleButton.addEventListener("click",()=>{this.toggleMobileMenu()}),this.mobileHideSearch(),this.trackNavClicks()}}mobileHideSearch(){this.mobileSearchButton&&(this.mobileSearchButton.classList.remove("header--search-showing"),this.container.classList.remove("header--search-showing"),this.isSearchOpen=!1)}submitDesktopForm(){this.desktopSearchTextField.value&&this.desktopSearchForm.submit()}hideSearchBar(){this.container.classList.remove("search-open")}toggleMobileMenu(){this.innerContainer.classList.toggle("header__inner--mobile-nav-open"),this.container.classList.toggle("header--mobile-nav-open");document.body.classList.toggle("mobile-nav-open")?(this.toggleButton.setAttribute("aria-label","close menu"),s.Ay.staggerTo(".js-mobile-navigation",.3,{x:0,delay:.05,ease:n.Ay.easeInOut},.04)):(this.toggleButton.setAttribute("aria-label","open menu"),s.Ay.staggerTo(".js-mobile-navigation",.2,{x:-200,ease:n.Ay.easeInOut},.04)),this.hideSearchBar()}toggleMobileSubNavigation(){this.nav.querySelectorAll(".js-menu-toggle").forEach(e
10=>{e.addEventListener("click",()=>{const t=(0,o.kp)(e,".js-nav-list-item"),i=t.querySelector(".js-sub-navigation");if(e.classList.contains("open"))s.Ay.to(i,.5,{height:0,ease:n.Ay.easeOut});else{this.nav.querySelectorAll(".js-nav-list-item.open").forEach(e=>{const t=e.querySelector(".js-sub-navigation"),i=e.querySelector(".js-menu-toggle");s.Ay.to(t,.5,{height:0,ease:n.Ay.easeOut}),t.classList.remove("open"),e.classList.remove("open"),i.classList.remove("open")});const e=`${i.querySelector(".js-sub-nav-inner").offsetHeight}px`;s.Ay.to(i,.5,{height:e,ease:n.Ay.easeOut})}e.classList.toggle("open"),t.classList.toggle("open")})})}trackNavClicks(){this.trackMainNavClicks(),this.trackSubNavClicks(),this.trackQuickLinkClicks()}trackMainNavClicks(){const e=this.container.querySelectorAll(".primary-navigation__link");e&&e.forEach(e=>{e.addEventListener("click",()=>{(0,a.A)({event:"link.click",linkName:unescape(e.querySelector("span").innerHTML).trim(),linkType:"top nav"})})})}trackSubNavClicks(){const e=this.container.querySelectorAll(".secondary-navigation__link");e&&e.forEach(e=>{e.addEventListener("click",()=>{(0,a.A)({event:"link.click",linkName:unescape(e.innerHTML).trim(),linkType:"sub nav"})})})}trackQuickLinkClicks(){const e=this.container.querySelectorAll(".header__quick-link");e&&e.forEach(e=>{e.addEventListener("click",()=>{(0,a.A)({event:"link.click",linkName:unescape(e.innerHTML).trim(),linkType:"quick link"})})})}resize(){const e=Math.max(this.container.offsetHeight,this.container.innerHeight||0);this.headerSpacer.style.height=`${e}px`}applyScrollClasses(){const e="scrolling",t="no-scroll";this.lastKnownScrollPosition<=0?(this.container.classList.contains(t)||this.container.classList.add(t),this.container.classList.contains(e)&&this.container.classList.remove(e)):(this.container.classList.contains(t)&&this.container.classList.remove(t),this.container.classList.contains(e)||this.container.classList.add(e)),this.lastKnownScrollPosition>this.lastScrollTop?this.container.classList.contains("scrolling-down")||this.container.classList.add("scrolling-down"):this.container.classList.contains("scrolling-down")&&this.container.classList.remove("scrolling-down"),this.lastScrollTop=this.lastKnownScrollPosition}applyKeyboardNavigation(){this.container.querySelectorAll(".js-nav-link-with-sub-nav").forEach(e=>{const t=e.closest(".js-nav-list-item"),i=t.querySelectorAll(".js-sub-navigation-item"),s=i[0],n=i[i.length-1];e.addEventListener("keydown",e=>{"Enter"===e.key&&(e.preventDefault(),this.closeAllOpenedMenus(),s&&s.focus(),t.classList.toggle("open"))}),t.addEventListener("keydown",i=>{"Escape"===i.key&&(t.classList.remove("open"),e.focus(),i.preventDefault())}),n&&n.addEventListener("keydown",e=>{e.shiftKey||"Tab"!==e.key||this.closeAllOpenedMenus()})}),this.container.addEventListener("focusout",()=>{const e=document.activeElement;e&&this.container.contains(e)&&this.closeAllOpenedMenus()})}closeAllOpenedMenus(){this.container.querySelectorAll(".js-nav-list-item.open").forEach(e=>{e.classList.remove("open")})}}var c=e=>new r(e)}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.