{"version":3,"file":"5.a87b03254064faea5d47.js","mappings":"2IAIO,MAAMA,EAAe,CACxBC,QAAQ,GAGZ,MAAMC,EAEFC,YAAYC,EAASC,EAASC,EAAUC,GACpCC,KAAKJ,QAAUA,EACfI,KAAKH,QAAUA,EACfG,KAAKF,SAAWA,EAChBE,KAAKD,YAAcA,EACnBC,KAAKP,QAAS,EAEdO,KAAKH,QAAQI,gBAAgB,UAE7BD,KAAKJ,QAAQM,QAAU,KACfF,KAAKP,QAAQO,KAAKG,MAAM,EAEhCH,KAAKF,SAASI,QAAU,KACjBF,KAAKP,QAAQO,KAAKI,MAAM,EAG/BJ,KAAKH,QAAQQ,iBAAiB,WAAYC,IACtC,GAES,WAFDA,EAAEC,IAGCP,KAAKP,SACJa,EAAEE,iBACFR,KAAKI,MAAK,GAER,IAIlBJ,KAAKF,SAASO,iBAAiB,WAAYC,IACvC,GAES,QAFDA,EAAEC,IAGCP,KAAKP,SACJa,EAAEE,iBACFR,KAAKD,YAAYU,QAEf,GAGtB,CAEAN,OACIH,KAAKH,QAAQa,gBAAkB,KAC/BV,KAAKH,QAAQc,aAAa,eAAe,GACzCX,KAAKJ,QAAQe,aAAa,iBAAiB,GAC3CX,KAAKP,QAAS,EACdD,EAAaC,QAAS,EACtBmB,OAAOC,uBAAsB,KACzBb,KAAKH,QAAQiB,UAAUC,IAAI,uBAC3Bf,KAAKD,YAAYU,OAAO,GAEhC,CAEAL,KAAKY,GAAU,GACXhB,KAAKJ,QAAQe,aAAa,iBAAiB,GAC3CX,KAAKP,QAAS,EACdD,EAAaC,QAAS,EACtBO,KAAKH,QAAQiB,UAAUG,OAAO,uBAC9BjB,KAAKH,QAAQa,gBAAmBJ,IACzBA,EAAEY,QAAUlB,KAAKH,SAASG,KAAKmB,cAAcH,EAAQ,CAEhE,CAEAG,cAAcH,GAAU,GACpBhB,KAAKH,QAAQc,aAAa,eAAe,GACzCX,KAAKH,QAAQa,gBAAkB,KAC5BM,GAAShB,KAAKJ,QAAQa,OAC7B,EAGJ,MAAMW,EAAuBC,SAASC,cAAc,gDAChDC,EAAsBF,SAASC,cAAc,2BAC7CE,EAAuBH,SAASC,cAAc,6BAC9CG,EAA4C,OAAxBF,EAA+BA,EAAoBD,cAAc,wBAA0B,KAExF,MAAxBF,GAAuD,MAAvBG,GAAuD,MAAxBC,GAAqD,MAArBC,GAC9F,IAAI/B,EAAmB0B,EAAsBG,EAAqBC,EAAsBC,E","sources":["webpack://heligan.web/./wwwroot/app/src/js/header-search.js"],"sourcesContent":["// ***************************\r\n// ***** Header search *****\r\n// ***************************\r\n\r\nexport const headerSearch = {\r\n active: false\r\n};\r\n\r\nclass HeaderSearchSystem {\r\n\r\n constructor(showBtn, wrapper, closeBtn, searchField) {\r\n this.showBtn = showBtn;\r\n this.wrapper = wrapper;\r\n this.closeBtn = closeBtn;\r\n this.searchField = searchField;\r\n this.active = false;\r\n // remove 'hidden' attribute\r\n this.wrapper.removeAttribute('hidden');\r\n // triggers\r\n this.showBtn.onclick = () => {\r\n if(!this.active) this.show();\r\n };\r\n this.closeBtn.onclick = () => {\r\n if(this.active) this.hide();\r\n };\r\n // ESC key closes search\r\n this.wrapper.addEventListener('keydown', (e) => {\r\n switch (e.key) {\r\n // ESCAPE jumps out a level\r\n case 'Escape':\r\n if(this.active) {\r\n e.preventDefault();\r\n this.hide(true);\r\n }\r\n break;\r\n }\r\n });\r\n // loop the tabbing if search area is active\r\n this.closeBtn.addEventListener('keydown', (e) => {\r\n switch (e.key) {\r\n // TAB\r\n case 'Tab':\r\n if(this.active) {\r\n e.preventDefault();\r\n this.searchField.focus();\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n\r\n show() {\r\n this.wrapper.ontransitionend = null;\r\n this.wrapper.setAttribute('aria-hidden', false);\r\n this.showBtn.setAttribute('aria-expanded', true);\r\n this.active = true;\r\n headerSearch.active = true;\r\n window.requestAnimationFrame(() => {\r\n this.wrapper.classList.add('search-form--active');\r\n this.searchField.focus();\r\n });\r\n }\r\n\r\n hide(doFocus = false) {\r\n this.showBtn.setAttribute('aria-expanded', false);\r\n this.active = false;\r\n headerSearch.active = false;\r\n this.wrapper.classList.remove('search-form--active');\r\n this.wrapper.ontransitionend = (e) => {\r\n if(e.target == this.wrapper) this.transitionEnd(doFocus);\r\n };\r\n }\r\n\r\n transitionEnd(doFocus = false) {\r\n this.wrapper.setAttribute('aria-hidden', true);\r\n this.wrapper.ontransitionend = null;\r\n if(doFocus) this.showBtn.focus();\r\n }\r\n}\r\n\r\nconst headerSearchShownBtn = document.querySelector('#header--utility-bar--tools--search-show-btn'),\r\n headerSearchWrapper = document.querySelector('#header--search-wrapper'),\r\n headerSearchCloseBtn = document.querySelector('#header--search-close-btn'),\r\n headerSearchField = headerSearchWrapper !== null ? headerSearchWrapper.querySelector('input[type=\"search\"]') : null;\r\n\r\nif(headerSearchShownBtn != null && headerSearchWrapper != null && headerSearchCloseBtn != null && headerSearchField != null) {\r\n new HeaderSearchSystem(headerSearchShownBtn, headerSearchWrapper, headerSearchCloseBtn, headerSearchField);\r\n}"],"names":["headerSearch","active","HeaderSearchSystem","constructor","showBtn","wrapper","closeBtn","searchField","this","removeAttribute","onclick","show","hide","addEventListener","e","key","preventDefault","focus","ontransitionend","setAttribute","window","requestAnimationFrame","classList","add","doFocus","remove","target","transitionEnd","headerSearchShownBtn","document","querySelector","headerSearchWrapper","headerSearchCloseBtn","headerSearchField"],"sourceRoot":""}