{"version":3,"file":"quick-search.min.js","names":["QuickSearchBase","Component","constructor","el","form","$find","closer","resultsEl","input","debounceInterval","undefined","itemTemplate","headingTemplate","noResultsTemplate","addEventListeners","constructNoResults","content","cloneNode","constructItem","image","name","url","subText","item","firstElementChild","setAttribute","querySelector","innerHTML","constructHeading","text","heading","appendResults","results","length","appendChild","prevModuleName","forEach","result","moduleName","title","fetchSearch","value","fetch","getAttribute","URLSearchParams","q","ajax","then","response","json","data","catch","error","console","showModal","focus","$el","classList","add","document","body","setTimeout","hideModal","remove","addEventListener","clearTimeout","e","stopPropagation","EventBus","getInstance"],"sources":["components/quick-search/@common/quick-search.js"],"sourcesContent":["class QuickSearchBase extends Component {\r\n\tconstructor(el) {\r\n\t\tsuper(el);\r\n\t\tthis.form = this.$find('form');\r\n\t\tthis.closer = this.$find('[data-close]');\r\n\t\tthis.resultsEl = this.$find('[data-results]');\r\n\t\tthis.input = this.$find('input');\r\n\t\tthis.debounceInterval = undefined;\r\n\t\tthis.itemTemplate = this.$find('[data-template-item]');\r\n\t\tthis.headingTemplate = this.$find('[data-template-heading]');\r\n\t\tthis.noResultsTemplate = this.$find('[data-template-no-results]');\r\n\t\tthis.addEventListeners();\r\n\t}\r\n\r\n\tconstructNoResults() {\r\n\t\treturn this.noResultsTemplate.content.cloneNode(true)\r\n\t}\r\n\r\n\tconstructItem(image, name, url, subText) {\r\n\t\tconst item = this.itemTemplate.content.firstElementChild.cloneNode(true);\r\n\t\titem.setAttribute('href', url);\r\n\t\tif(!!image) item.querySelector('[data-image]').innerHTML = image;\r\n\t\titem.querySelector('[data-name]').innerHTML = name;\r\n\t\tif(!!subText) item.querySelector('[data-sub-text]').innerHTML = subText;\r\n\r\n\t\treturn item;\r\n\t}\r\n\r\n\tconstructHeading(text) {\r\n\t\tconst heading = this.headingTemplate.content.cloneNode(true);\r\n\t\theading.querySelector('[data-heading]').innerHTML = text;\r\n\r\n\t\treturn heading;\r\n\t}\r\n\r\n\tappendResults(results) {\r\n\t\tthis.resultsEl.innerHTML = '';\r\n\r\n\t\tif(!results.length) {\r\n\t\t\tthis.resultsEl.appendChild(this.constructNoResults());\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet prevModuleName = null;\r\n\r\n\t\tresults.forEach(result => {\r\n\t\t\t(prevModuleName !== result.moduleName) && this.resultsEl.appendChild(this.constructHeading(result.moduleName));\r\n\t\t\tthis.resultsEl.appendChild(this.constructItem(result.image, result.title, result.url, result.subText));\r\n\r\n\t\t\tprevModuleName = result.moduleName;\r\n\t\t});\r\n\t}\r\n\r\n\tfetchSearch() {\r\n\t\tif(this.input.value.length < 2) {\r\n\t\t\tthis.resultsEl.innerHTML = '';\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfetch(this.form.getAttribute('action') + '?' + new URLSearchParams({\r\n\t\t\tq: this.input.value,\r\n\t\t\tajax: 1,\r\n\t\t}))\r\n\t\t.then(response => response.json())\r\n\t\t.then(data => this.appendResults(data))\r\n\t\t.catch((error) => {\r\n\t\t\tconsole.error('Error:', error);\r\n\t\t});\r\n\t}\r\n\r\n\tshowModal() {\r\n\t\tthis.input.focus();\r\n\t\tthis.input.value = '';\r\n\t\tthis.resultsEl.innerHTML = '';\r\n\t\tthis.$el.classList.add('is-active');\r\n\t\tdocument.body.classList.add('u-hiddenOverflow');\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.input.focus();\r\n\t\t}, 500);\r\n\t}\r\n\r\n\thideModal() {\r\n\t\tthis.$el.classList.remove('is-active');\r\n\t\tdocument.body.classList.remove('u-hiddenOverflow');\r\n\t}\r\n\r\n\taddEventListeners() {\r\n\t\tthis.input.addEventListener('input', () => {\r\n\t\t\tthis.debounceInterval && clearTimeout(this.debounceInterval);\r\n\t\t\tthis.debounceInterval = setTimeout(() => this.fetchSearch(), 500);\r\n\t\t});\r\n\t\tthis.$el.addEventListener('click', () => this.hideModal());\r\n\t\tthis.closer.addEventListener('click', () => this.hideModal());\r\n\t\tthis.form.addEventListener('click', e => e.stopPropagation());\r\n\t\tEventBus.getInstance().addEventListener('showQuickSearchModal', () => this.showModal());\r\n\t}\r\n}"],"mappings":"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"}