{"version":3,"sources":["components/quick-search/@common/quick-search.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","reuslts","length","appendChild","prevModuleName","reverse","forEach","result","moduleName","title","fetchSearch","value","fetch","getAttribute","URLSearchParams","q","ajax","then","response","json","data","catch","error","console","showModal","focus","$el","classList","add","setTimeout","hideModal","remove","addEventListener","clearTimeout","e","stopPropagation","EventBus","getInstance"],"mappings":"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","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(reuslts) {\r\n\t\tthis.resultsEl.innerHTML = '';\r\n\r\n\t\tif(!reuslts.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\treuslts.reverse().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\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}\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}"],"file":"quick-search.min.js"}