{"version":3,"file":"autocomplete-3c2812b9.js","names":["define","Moduler","create","defaults","searchTextBoxSelector","resultSelector","loaderSelector","searchUrl","searchMethod","overlaySelector","overlayClass","searchTextMinLength","clearTargetUrl","activateOnEnterKey","data","init","self","this","delayTimer","searchBox","el","querySelector","options","results","classList","add","loader","overlay","document","form","length","action","method","addEventListener","e","key","preventDefault","value","search","location","href","remove","target","matches","innerText","clearTimeout","setTimeout","loaderTimer","formData","FormData","customData","Object","assign","append","fetch","body","then","response","status","innerHTML","text","loadModules"],"sources":["autocomplete.js"],"mappings":"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","sourcesContent":["define(['moduler'], function (Moduler) {\r\n 'use strict';\r\n\r\n return Moduler.create({\r\n defaults: {\r\n searchTextBoxSelector: '.js-searchBox',\r\n resultSelector: '.js-searchResults',\r\n loaderSelector: '.js-searchLoader',\r\n searchUrl: null,\r\n searchMethod: 'POST',\r\n overlaySelector: null,\r\n overlayClass: 'dimmed',\r\n searchTextMinLength: 3,\r\n clearTargetUrl: null, // called when the search box is cleared\r\n activateOnEnterKey: false,\r\n data: null, // extra data to send along the request to server\r\n },\r\n\r\n init: function () {\r\n var self = this;\r\n\r\n self.delayTimer = null;\r\n self.searchBox = self.el.querySelector(self.options.searchTextBoxSelector);\r\n\r\n self.results = self.el.querySelector(self.options.resultSelector);\r\n self.results.classList.add('u-hidden');\r\n\r\n self.loader = self.el.querySelector(self.options.loaderSelector);\r\n self.loader.classList.add('u-hidden');\r\n\r\n self.overlay = null;\r\n if (self.options.overlaySelector) {\r\n self.overlay = document.querySelector(self.options.overlaySelector);\r\n }\r\n \r\n self.form = self.el.querySelector('form');\r\n if (self.options.searchUrl == null || self.options.searchUrl.length == 0) {\r\n self.options.searchUrl = self.form.action;\r\n }\r\n if (self.options.searchMethod == null || self.options.searchMethod.length == 0) {\r\n self.options.searchMethod = self.form.method;\r\n }\r\n\r\n if (self.options.activateOnEnterKey) {\r\n self.searchBox.addEventListener('keypress', function (e) {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n if (self.searchBox.value.length >= self.options.searchTextMinLength) {\r\n self.search();\r\n } else if(self.searchBox.value.length == 0 && self.options.clearTargetUrl != null) {\r\n location.href = self.options.clearTargetUrl;\r\n }\r\n }\r\n });\r\n }\r\n\r\n self.searchBox.addEventListener('keyup', function (e) {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n return;\r\n }\r\n\r\n if (self.searchBox.value.length >= self.options.searchTextMinLength) {\r\n if (self.overlay) {\r\n self.overlay.classList.add(self.options.overlayClass);\r\n }\r\n self.search();\r\n } else {\r\n if (self.overlay) {\r\n self.overlay.classList.remove(self.options.overlayClass);\r\n }\r\n self.loader.classList.add('u-hidden');\r\n self.results.classList.add('u-hidden');\r\n }\r\n });\r\n\r\n self.el.addEventListener('click', function (e) {\r\n if (e.target.matches('.SearchResult-list.js-autoSuggest li a')) {\r\n self.searchBox.value = e.target.innerText;\r\n self.search();\r\n }\r\n });\r\n },\r\n\r\n search: function () {\r\n let self = this;\r\n clearTimeout(self.delayTimer);\r\n\r\n self.delayTimer = setTimeout(function () {\r\n self.loaderTimer = setTimeout(function () {\r\n self.loader.classList.remove('u-hidden');\r\n self.results.classList.add('u-hidden');\r\n }, 300);\r\n \r\n let formData = new FormData(self.form);\r\n if (self.options.data) {\r\n let customData = {};\r\n Object.assign(customData, self.options.data);\r\n for (let key in customData) {\r\n formData.append(key, customData[key]);\r\n }\r\n }\r\n\r\n fetch(self.options.searchUrl, {\r\n method: self.options.searchMethod,\r\n body: formData\r\n }).then(response => {\r\n clearTimeout(self.loaderTimer);\r\n self.loader.classList.add('u-hidden');\r\n if (response.status != 200) {\r\n self.results.innerHTML = \"Search error, please try again later\";\r\n self.results.classList.remove('u-hidden');\r\n }\r\n else {\r\n response.text().then(function (text) {\r\n if (text.length > 0) {\r\n self.results.innerHTML = text;\r\n self.results.classList.remove('u-hidden');\r\n }\r\n Moduler.loadModules(self.results);\r\n });\r\n }\r\n });\r\n }, 600);\r\n }\r\n });\r\n});"]}