{"version":3,"sources":["common/components/searchWrapper.js"],"names":["define","autoComplete","customEvent","selector","submitOnSelect","results","data","blankFormValues","neighborhoodId","cityId","stateId","searchForm","document","querySelector","canSend","neighborhoodIdField","cityIdField","stateIdField","activeSearchId","searchHomeButton","notFoundText","locationText","getElementById","addEventListener","e","autocompleteIsOpen","selectedItem","querySelectorAll","keyCode","scrollTo","offsetTop","key","preventDefault","items","firstItem","length","innerHTML","click","sendEvent","showError","ev","creciAlert","addAlert","event","CustomEvent","detail","dispatchEvent","setFormValues","value","id","eraseFormValues","element","to","duration","difference","scrollTop","perTick","setTimeout","EmptyMessage","Url","QueryArg","MinChars","_Post","response","json","JSON","parse","returnResponse","i","push","_Highlight","name","_Select","item","parseInt","getAttribute","Input","setAttribute","_Position","comboWidth","clientWidth","aux","retry","DOMResults","offsetHeight","offsetLeft","_Blur","now","params"],"mappings":"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","sourcesContent":["define([\r\n 'vendor/autocomplete',\r\n 'vendor/custom-event-polyfill'\r\n],\r\nfunction (autoComplete, customEvent) {\r\n return function (selector, submitOnSelect = false) {\r\n const results = []\r\n var data = {}\r\n\r\n const blankFormValues = {\r\n neighborhoodId: '',\r\n cityId: '',\r\n stateId: ''\r\n }\r\n\r\n const searchForm = document.querySelector(selector)\r\n let canSend = false\r\n\r\n const neighborhoodIdField = searchForm.querySelector('.neighborhoodId')\r\n const cityIdField = searchForm.querySelector('.cityId')\r\n const stateIdField = searchForm.querySelector('.stateId')\r\n const activeSearchId = searchForm.querySelector('.activeSearchId')\r\n const searchHomeButton = searchForm.querySelector('#search-home')\r\n\r\n const notFoundText = 'Nenhum resultado encontrado'\r\n\r\n // location input\r\n const locationText = document.getElementById('busca-home')\r\n\r\n // Replacing the KeyDown (ENTER) event with KeyUp (ArrowDown)\r\n\r\n locationText.addEventListener('keydown',\r\n e => {\r\n const autocompleteIsOpen = document.querySelector('.autocomplete.open')\r\n const selectedItem = document.querySelectorAll('div.autocomplete>ul>li.active')[0]\r\n\r\n if ((e.keyCode === 40 || e.keyCode === 38) && autocompleteIsOpen && selectedItem) {\r\n scrollTo(autocompleteIsOpen, selectedItem.offsetTop, 600)\r\n }\r\n\r\n if (e.key === 13 || e.keyCode === 13) { // Enter\r\n e.preventDefault()\r\n const items = document.querySelectorAll('div.autocomplete>ul>li')\r\n const firstItem = items[0]\r\n\r\n if (items.length > 0) {\r\n if (selectedItem && selectedItem.innerHTML !== notFoundText) {\r\n if (!submitOnSelect) {\r\n selectedItem.click()\r\n return sendEvent()\r\n }\r\n return false\r\n } else if (firstItem && firstItem.innerHTML !== notFoundText) {\r\n if (!submitOnSelect) {\r\n firstItem.click()\r\n return sendEvent()\r\n } else {\r\n return firstItem.click()\r\n }\r\n }\r\n }\r\n return showError()\r\n }\r\n })\r\n\r\n /*\r\n Verificando se o botão existe é para validar se esta na home.\r\n */\r\n if (searchHomeButton) {\r\n searchHomeButton.addEventListener('click',\r\n ev => {\r\n ev.preventDefault()\r\n if (canSend) {\r\n return sendEvent()\r\n } else {\r\n showError()\r\n }\r\n })\r\n }\r\n\r\n function showError () {\r\n return creciAlert.addAlert('Erro', 'Por favor selecione uma Cidade, Bairro ou Região.', 'danger')\r\n }\r\n\r\n function sendEvent () {\r\n const event = new CustomEvent('citySelected',\r\n {\r\n detail: data\r\n })\r\n\r\n // Dispatch the event.\r\n searchForm.dispatchEvent(event)\r\n }\r\n\r\n function setFormValues (data) {\r\n activeSearchId.value = data.id\r\n neighborhoodIdField.value = data.neighborhoodId\r\n cityIdField.value = data.cityId\r\n stateIdField.value = data.stateId\r\n canSend = true\r\n }\r\n\r\n function eraseFormValues () {\r\n setFormValues(blankFormValues)\r\n canSend = false\r\n }\r\n\r\n function scrollTo (element, to, duration) {\r\n if (duration <= 0) return\r\n var difference = to - element.scrollTop\r\n var perTick = difference / duration * 10\r\n\r\n setTimeout(function () {\r\n element.scrollTop = element.scrollTop + perTick\r\n if (element.scrollTop === to) return\r\n scrollTo(element, to, duration - 10)\r\n }, 10)\r\n }\r\n\r\n autoComplete({\r\n EmptyMessage: notFoundText,\r\n Url: `/api/home/activesearch`,\r\n QueryArg: 'search',\r\n MinChars: 3,\r\n _Post: function (response) {\r\n const json = JSON.parse(response)\r\n\r\n const returnResponse = [ ]\r\n\r\n if (json.length === 0) {\r\n return ''\r\n }\r\n\r\n for (let i = 0; i < json.length; i++) {\r\n results[json[i].id] = json[i]\r\n returnResponse.push({ 'Value': json[i].id, 'Label': this._Highlight(json[i].name) })\r\n }\r\n\r\n return returnResponse\r\n },\r\n\r\n _Select: function (item) {\r\n const id = parseInt(item.getAttribute('data-autocomplete-value'), 10)\r\n\r\n if (id && results[id]) {\r\n data = results[id]\r\n this.Input.value = data.name\r\n setFormValues(data)\r\n if (submitOnSelect) {\r\n sendEvent()\r\n }\r\n } else {\r\n eraseFormValues()\r\n }\r\n\r\n this.Input.setAttribute('data-autocomplete-old-value', this.Input.value)\r\n },\r\n\r\n // Função refeita por causa do IE\r\n _Position: function () {\r\n const comboWidth = `width:${this.Input.clientWidth}px;`\r\n // RACE CONDITION STYLE VS SCRIPT EXECUTION FIX MOSTLY FOR IE\r\n if (this.Input.clientWidth === 0) {\r\n const aux = this\r\n\r\n const retry = function () {\r\n aux._Position()\r\n }\r\n\r\n setTimeout(retry, 1000)\r\n }\r\n this.DOMResults.setAttribute('class', 'autocomplete')\r\n this.DOMResults.setAttribute('style',\r\n `top:${this.Input.offsetTop + this.Input.offsetHeight}px;left:${this.Input.offsetLeft}px;${comboWidth}`)\r\n },\r\n /**\r\n * Manage the close\r\n */\r\n _Blur: function (now) {\r\n if (now === void 0) {\r\n now = false\r\n }\r\n if (now) {\r\n var aux = this\r\n setTimeout(function () {\r\n aux.DOMResults.setAttribute('class', 'autocomplete')\r\n },\r\n 150)\r\n } else {\r\n var params = this\r\n setTimeout(function () {\r\n params._Blur(true)\r\n },\r\n 150)\r\n }\r\n }\r\n },\r\n '#busca-home')\r\n }\r\n})\r\n"],"file":"searchWrapper.js"}