{"version":3,"sources":["teamsearch.js"],"names":["app","teamSearch","defaultCareType","template","resultContainer","loader","outputContainer","noResultContainer","careTypeField","postalCodeField","validate","contactPage","init","form","length","querySelector","document","Bouncer","disableSubmit","addEventListener","selectedCareType","classList","event","target","contains","window","value","add","util","searchTeam","postalCode","setTimeout","display","pathname","push","innerHTML","pageUrl","result","hasResult","careType","fetch","method","headers","Accept","then","response","onDocumentReady","json","data","executeSearch","style","Mustache","render","remove","setAttribute","slideDown","getAttribute"],"mappings":"AAKEA,IAAAC,WAAA,wBAGA,IAAIC,EACAC,EACAC,EAAAA,KACAC,EAAJ,KACIC,EAAAA,KACAC,EAAiB,KACjBC,EAAJ,KACIC,EACAC,EACAC,EAAAA,EAAc,KA6FlB,MAAO,CACLC,KA3FA,WACA,MAAIC,EAAKC,SAATC,cAAuB,sBAELF,IAAlBX,EAAAA,SAEAE,EAAkBY,EAAAA,QAASD,SAC3BV,EAASW,SAASD,cAAc,uBAChCT,EAAkBF,SAAAA,cAAgBW,wBAClCR,EAAAA,SAAiBQ,cAAGX,wBACpBI,EAAgBK,EAAAE,cAAmB,+BACnCN,EAAkBI,EAAAE,cAAmB,iCAErCL,EAAeO,EAAAA,cAAQ,qBACrBC,EAAeL,EAAAE,cAAA,uBAGjBJ,EAAW,IAAGK,QAASD,yBAAc,CAErCC,eAASG,IAIPC,EAAAA,SAAmBZ,cAAgBA,uBAGnCH,SAAOgB,iBAAc,mBAErB,SAAAC,GAR4D,GAAxDA,EAAMC,OAAOF,UAAUG,SAAS,uBAYpCC,EAAkBjB,EAAMA,EAAAkB,MAAAxB,EAb1BG,EAAAgB,UAAAM,IAAA,cAmBFC,KAASC,QAAAA,EAAqBC,KAG1BR,OAAOS,WAAA,WAOPxB,IAAAA,EAAwByB,EAAxBzB,EANSkB,EAMeO,EANCC,EAFLP,MAUpBpB,OAAAA,UAAe4B,KAACC,CAThBb,MAAO,aAWPc,QAAIC,OAAOC,SAAWL,SACpBM,SAAAA,IAmCL,SAEDA,EAAAT,GAdE,OAAOU,MAAM,yCAA2CD,EAAW,eAAiBT,EAAY,CAC9FW,OAAQ,MAcZC,QAAO,CACDC,OAAE/B,sBAVHgC,KAAK,SAACC,GAcRC,OAAAA,EAAgBC,SAArBH,KAAA,SAAAI,GAVQ,OAAOA,IAxCXC,CAAcV,EAAUT,GAAYc,KAAK,SAACP,GAavC9B,EAAM2C,MAAAlB,QAAA,OACL1B,EAAA4C,MAAAlB,QAAA,OACAzB,EAAAA,UAAwByB,GAI1BK,EAAAC,WAXEhC,EAAgB6B,UAAYgB,SAASC,OAAOjD,EAASgC,UAAWE,GAYlEhC,EAAiBgD,MAAOrB,QAAA,QAGtBrB,KAAAA,UAAY2C,EAAa,OAvB7B/C,EAAA2C,MAAAlB,QAAA,QA2BDJ,KAAA2B,UAAAnD,EAAA,MAIGqC,EAAMpB,UADwFgC,OAAA,cAG5FV,GAAQ,UAAAhC,EAAA6C,aAAA,iBADD7C,EAAA2C,aAAA,cAAA,QAIRV,EAAKM,MAACL,QAAa,WAvCpBN,WAzDJ,GA8GFX,KAAKkB,gBAAgB,WACnB9C,IAAIC,WAAWW","file":"../teamsearch.min.js","sourcesContent":["/* ========================================================================\r\n Team search\r\n ========================================================================== */\r\n\r\napp.teamSearch = (function () {\r\n 'use strict';\r\n\r\n let selectedCareType = null;\r\n let defaultCareType = null;\r\n let template = null;\r\n let resultContainer = null;\r\n let loader = null;\r\n let outputContainer = null;\r\n let noResultContainer = null;\r\n let careTypeField = null;\r\n let postalCodeField = null;\r\n let validate = null;\r\n let contactPage = null;\r\n\r\n function init() {\r\n const form = document.querySelector('.js-teamSearchForm');\r\n if (form.length === 0) return;\r\n\r\n defaultCareType = form.dataset.careType;\r\n template = document.querySelector('#teamSearchTemplate');\r\n resultContainer = document.querySelector('.js-teamSearchResult');\r\n loader = document.querySelector('.js-teamSearchLoader');\r\n outputContainer = resultContainer.querySelector('.teamSearch__result__output');\r\n noResultContainer = resultContainer.querySelector('.teamSearch__result__noresult');\r\n careTypeField = form.querySelector('[name=\"careType\"]');\r\n postalCodeField = form.querySelector('[name=\"postalCode\"]');\r\n\r\n validate = new Bouncer('form.js-teamSearchForm', {\r\n disableSubmit: true,\r\n });\r\n\r\n contactPage = document.querySelector('[data-contact-page]');\r\n\r\n document.addEventListener('bouncerFormValid', (event) => {\r\n if (event.target.classList.contains('js-teamSearchForm') == false) return;\r\n\r\n // get care type\r\n selectedCareType = careTypeField ? careTypeField.value : defaultCareType;\r\n\r\n // show loader\r\n loader.classList.add('is-loading');\r\n\r\n // collapse results\r\n util.slideUp(resultContainer, 250);\r\n\r\n // execute search with a short delay\r\n window.setTimeout(() => {\r\n searchTeam(selectedCareType, postalCodeField.value);\r\n }, 1000);\r\n });\r\n }\r\n\r\n function searchTeam(careType, postalCode) {\r\n // DATALAYER\r\n window.dataLayer.push({\r\n event: 'teamSearch',\r\n pageUrl: window.location.pathname,\r\n careType: careType,\r\n });\r\n\r\n executeSearch(careType, postalCode).then((result) => {\r\n // clear previous result\r\n noResultContainer.style.display = 'none';\r\n outputContainer.style.display = 'none';\r\n outputContainer.innerHTML = '';\r\n\r\n if (result.hasResult) {\r\n // show result using Mustache template\r\n outputContainer.innerHTML = Mustache.render(template.innerHTML, result);\r\n outputContainer.style.display = 'block';\r\n\r\n // show result\r\n util.slideDown(resultContainer, 250);\r\n } else {\r\n // show result\r\n noResultContainer.style.display = 'block';\r\n util.slideDown(resultContainer, 500);\r\n }\r\n\r\n // hide loader\r\n loader.classList.remove('is-loading');\r\n\r\n if (contactPage && contactPage.getAttribute('aria-hidden') === 'false') {\r\n contactPage.setAttribute('aria-hidden', 'true');\r\n contactPage.style.display = 'none';\r\n }\r\n });\r\n }\r\n\r\n function executeSearch(careType, postalCode) {\r\n return fetch('/umbraco/api/teamsearch/find?careType=' + careType + '&postalCode=' + postalCode, {\r\n method: 'GET',\r\n headers: {\r\n Accept: 'application/json',\r\n },\r\n })\r\n .then((response) => {\r\n return response.json();\r\n })\r\n .then((data) => {\r\n return data;\r\n });\r\n }\r\n\r\n // Expose public functions and variables\r\n return {\r\n init: init,\r\n };\r\n})();\r\n\r\nutil.onDocumentReady(function () {\r\n app.teamSearch.init();\r\n});\r\n"]}