{"version":3,"sources":["webpack:////home/vsts/work/1/s/src/views/blocks/careerHeaderBlock/js/careerHeaderBlock.js","webpack:///./api.js"],"names":["Api","CLS","BLK","CareerHeaderBlock","$el","this","setCareerHeaderBlock","urlParams","URLSearchParams","window","location","search","undefined","get","hash","searchCommunityInput","$","locationKeywordUrl","data","searchCommunityLocationResults","searchCommunityLocationName","searchCommunity","searchCommunityNearby","debounceSearchKeywordService","debounce","getNearbyProperties","select2","width","minimumResultsForSearch","placeholder","on","e","inputLocationEvent","keyword","val","fetchResults","then","response","length","renderKeywordResults","func","timeout","timer","args","clearTimeout","setTimeout","apply","nearbyProperties","empty","that","i","locationLink","addClass","html","attr","append","toggleKeywordResults","url","$filterParam","paramsString","getFilters","getApi","filterParam","keys","Object","filters","key","encodeURI","isOpen","removeClass","fetch","headers","json","Promise","resolve","catch","error","reject","callApi","method","body","JSON","stringify","Headers"],"mappings":"2oBAIA,O,IACYA,E,4JAAZ,M,EAJA,IACMC,EAAM,oBACNC,EAAM,IAAMD,EAAM,I,QASXE,kB,WACZ,WAAYC,GAAK,C,+FAAA,QAEhBC,KAAKD,IAAMA,CAGX,C,2CAGAC,KAAKC,qBAAL,EACA,IAAIC,EAAY,IAAIC,gBAAgBC,OAAOC,SAASC,MAApC,EACsBC,SAAlC,EAAOL,EAAUM,IAAI,MAAd,CAAP,GAAyE,OAA1BN,EAAUM,IAAI,MAAd,GAA2D,KAAzBN,EAAUM,IAAI,MAAd,IACpFJ,OAAOC,SAASI,KAAO,QACxB,C,iDAEsB,WAEtBT,KAAKU,qBAAuBC,EAAEA,yBAAFA,EAC5BX,KAAKY,mBAAqBD,EAAEX,KAAKD,GAAP,EAAYc,KAAK,YAAjB,EAG1Bb,KAAKc,+BAAiCH,EAAKd,EAAL,qBACtCG,KAAKe,4BAA8BJ,EAAKd,EAAL,2BACnCG,KAAKgB,gBAAkBL,EAAKd,EAAL,sBACvBG,KAAKiB,sBAAwBN,EAAKd,EAAL,8BAG7BG,KAAKkB,6BAA+BlB,KAAKmB,SACxCnB,KAAKoB,mBAD8B,EAMpCT,8BAA8BU,QAAQ,CAErCC,MAAO,OACPC,wBAAyB,CAAC,EAC1BC,YAAa,uBAJwB,CAAtC,EAsBAxB,KAAKU,qBAAsBe,GAAG,QAAS,SAACC,GACvC,EAAKC,mBAAL,CACA,CAFD,CAMA,C,+CAGA,IAAIC,EAAU,CACb,QAAW5B,KAAKU,qBAAqBmB,IAA1B,CADE,EAId7B,KAAKkB,6BAA6BU,CAAlC,CACA,C,8CAGmBA,GAAS,WAK5B5B,KAAK8B,aAAa9B,KAAKY,mBAAoBgB,CAA3C,EAAoDG,KAAK,SAACC,GACrDA,GACe,EAAlBA,EAASC,OACT,EAAKC,qBAAqBF,CAA1B,EAEA,EAAKE,qBAAqB,EAA1B,CAGD,CARD,CASA,C,mCAGQC,GAAqB,WAAfC,EAAe,uDAAL,IACpBC,SACJ,OAAO,WAAa,2BAATC,EAAS,qBAATA,EAAS,gBACnBC,aAAaF,CAAb,EACAA,EAAQG,WAAW,WAClBL,EAAKM,MAAM,EAAMH,CAAjB,CACA,EAAEF,CAFK,CAGR,CACD,C,+CAEoBM,GACpB,GAAgC,IAA5BA,EAAiBT,OAArB,CAGAjC,KAAKiB,sBAAsB0B,MAA3B,EAEA,IADA,IAAIC,EAAO5C,KAL2B,aAM7B6C,GAKR,IAAIC,EAAenC,EAAE,SAAF,EACjBoC,SADiB,wBAEjBC,KAFiB,yCAE6BpD,EAF7B,mJAIG8C,EAAiBG,GAJpB,yBAMjBI,KAAK,eAAgBP,EAAiBG,EANrB,EAQlBD,EAAK3B,sBAAsBiC,OAAOJ,CAAlC,EAEDA,EAAarB,GAAG,QAAS,SAACC,GACzBkB,EAAKlC,qBAAqBmB,IAAIa,EAAiBG,EAA/C,EACAD,EAAK9B,+BAA+BiC,SAAS,QAA7C,CACA,CAHD,CArBqC,EAM7BF,EAAI,EAAGA,EAAIH,EAAiBT,OAAQY,CAACA,GAAI,EAAzCA,CAAyC,EAqBlD7C,KAAKmD,qBAAqB,EAA1B,CAxBC,CAyBD,C,uCAEYC,EAAKC,GACbC,EAAetD,KAAKuD,WAAWF,CAAhB,EAGnB,OAAO1D,EAAI6D,OAFEJ,EAAM,IAAME,CAElB,CACP,C,qCAEUG,GAIV,IAHA,IAAIC,EAAOC,OAAOD,KAAKD,CAAZ,EACPG,EAAU,GAELf,EAAI,EAAGA,EAAIa,EAAKzB,OAAQY,CAACA,GAAI,CACrC,IAAIgB,EAAMH,EAAKb,GAEXA,IAAMa,EAAKzB,OAAS,EACvB2B,GAAWE,UAAUD,CAAV,EAAiB,IAAMC,UAAUL,EAAYI,EAAtB,EAElCD,GAAWE,UAAUD,CAAV,EAAiB,IAAMC,UAAUL,EAAYI,EAAtB,EAA8B,GAEjE,CAED,OAAOD,CACP,C,+CAEoBG,GAIpBA,EACG/D,KAAKc,+BAA+BkD,YAAY,QAAhD,EACAhE,KAAKc,+BAA+BiC,SAAS,QAA7C,CACH,C,kIC3KcS,OAAT,SAASA,EAAOJ,GACtB,OAAOa,MAAMb,EAAK,CACjBc,QAAS,CACR,eAAgB,kBADR,CADQ,CAAX,EAKLnC,KAAK,SAACC,GAAD,OAAcA,EAASmC,KAAT,CAAd,CALA,EAMLpC,KAAK,SAACC,GAAD,OAAcoC,QAAQC,QAAQrC,CAAhB,CAAd,CANA,EAOLsC,MAAM,SAACC,GACPH,QAAQI,OAAOD,CAAf,CACA,CATK,CAUP,E,QAGeE,QAAT,SAASA,EAAQrB,GAAiC,IAA5BvC,EAA4B,uDAArB,GAAI6D,EAAiB,uDAAR,OAChD,OAAOT,MAAMb,EAAK,CACjBsB,OAAQA,EACRC,KAAMC,KAAKC,UAAUhE,CAAf,EACNqD,QAAS,IAAIY,QAAQ,CACpB,eAAgB,kBADI,CAAZ,CAHQ,CAAX,EAOL/C,KAAK,SAACC,GAAD,OAAcA,EAASmC,KAAT,CAAd,CAPA,EAQLpC,KAAK,SAACC,GAAD,OAAcoC,QAAQC,QAAQrC,CAAhB,CAAd,CARA,EASLsC,MAAM,SAACC,GACPH,QAAQI,OAAOD,CAAf,CACA,CAXK,CAYP,C","file":"block-6.4dfb74c0df403e09dc00.js","sourcesContent":["// CONSTANTS are all caps.\nconst NS = 'CareerHeaderBlock';\nconst CLS = 'careerHeaderBlock';\nconst BLK = '.' + CLS + '-';\nimport 'select2';\nimport * as Api from '../../../../global/js/api';\n\n// Import stuff here if you need to or even better to import them dynamically\n// for ex. of dynamic import check out ./loadBlk.js using Webpack dynamic imports as chunks.\n// import $ from 'jquery'\n\n\nexport class CareerHeaderBlock {\n\tconstructor($el) {\n\t\t// $el is the blk node return by the loadCareerHeaderBlock function\n\t\tthis.$el = $el;\n\n\n\t}\n\n\tinit() {\n\t\tthis.setCareerHeaderBlock();\n\t\tvar urlParams = new URLSearchParams(window.location.search);\n\t\tif (typeof(urlParams.get('role')) !== undefined && urlParams.get('role') !== null && urlParams.get('role') !=='')\n\t\t\twindow.location.hash = 'roles';\n\t}\n\n\tsetCareerHeaderBlock() {\n\t\t\n\t\tthis.searchCommunityInput = $(`#community-form-control`);\n\t\tthis.locationKeywordUrl = $(this.$el).data('keywordUrl');\n\n\t\t\n\t\tthis.searchCommunityLocationResults = $(`${BLK}community-results`);\n\t\tthis.searchCommunityLocationName = $(`${BLK}community-location-name`);\n\t\tthis.searchCommunity = $(`${BLK}community-location`);\n\t\tthis.searchCommunityNearby = $(`${BLK}community-nearby-locations`);\n\n\t\t\n\t\tthis.debounceSearchKeywordService = this.debounce(\n\t\t\tthis.getNearbyProperties\n\t\t);\n\n\n\t\t// Add Some logic here\n\t\t$(`#careerHeaderBlockSelect`).select2({\n\t\t\t// theme: 'bootstrap4',\n\t\t\twidth: '100%',\n\t\t\tminimumResultsForSearch: -1,\n\t\t\tplaceholder: 'Select from drop down'\n\n\t\t});\n\n\t\t// $(`#careerHeaderLocationSelect`).select2({\n\t\t// \tajax: {\n\t\t// \t\turl: 'https://localhost:5000/api/search/location/search-career-location',\n\t\t// \t\tdataType: 'json'\n\t\t// \t\t// Additional AJAX parameters go here; see the end of this chapter for the full code of this example\n\t\t// \t},\n\n\t\t// \t// theme: 'bootstrap4',\n\t\t// \twidth: '100%',\n\t\t// \tminimumResultsForSearch: -1,\n\n\t\t// });\n\n\n\t\tthis.searchCommunityInput .on('input', (e) => {\n\t\t\tthis.inputLocationEvent();\n\t\t});\n\n\n\n\t}\n\n\tinputLocationEvent() {\n\t\tlet keyword = {\n\t\t\t'keyword': this.searchCommunityInput.val(),\n\t\t};\n\n\t\tthis.debounceSearchKeywordService(keyword);\n\t}\n\n\n\tgetNearbyProperties(keyword) {\n\t\t/**\n\t\t * call api services get nearby properties;\n\t\t */\n\n\t\tthis.fetchResults(this.locationKeywordUrl, keyword).then((response) => {\n\t\t\tif (response &&\n\t\t\t\tresponse.length > 0) {\n\t\t\t\tthis.renderKeywordResults(response);\n\t\t\t} else {\n\t\t\t\tthis.renderKeywordResults([]);\n\t\t\t\tconsole.log('return response is null');\n\t\t\t}\n\t\t});\n\t}\n\n\t\n\tdebounce(func, timeout = 400) {\n\t\tlet timer;\n\t\treturn (...args) => {\n\t\t\tclearTimeout(timer);\n\t\t\ttimer = setTimeout(() => {\n\t\t\t\tfunc.apply(this, args);\n\t\t\t}, timeout);\n\t\t};\n\t}\n\n\trenderKeywordResults(nearbyProperties) {\n\t\tif (nearbyProperties.length === 0) {\n\t\t\treturn;\n\t\t}\n\t\tthis.searchCommunityNearby.empty();\n\t\tlet that = this;\n\t\tfor (let i = 0; i < nearbyProperties.length; i++) {\n\t\t\tvar image = 'house.svg';\n\n\t\t\t \n\n\t\t\tlet locationLink = $('')\n\t\t\t\t.addClass(`text-decoration-none`)\n\t\t\t\t.html(`
\n\t\t\t\t\n\t\t\t\t${nearbyProperties[i]}\n\t\t\t
`)\n\t\t\t\t.attr('data-keyword', nearbyProperties[i]);\n\n\t\t\t\tthat.searchCommunityNearby.append(locationLink);\n\n\t\t\tlocationLink.on('click', (e) => {\n\t\t\t\tthat.searchCommunityInput.val(nearbyProperties[i]);\n\t\t\t\tthat.searchCommunityLocationResults.addClass('d-none');\n\t\t\t});\n\t\t}\n\n\t\tthis.toggleKeywordResults(true);\n\t}\n\n\tfetchResults(url, $filterParam) {\n\t\tlet paramsString = this.getFilters($filterParam);\n\t\tlet apiUrl = url + '?' + paramsString;\n\n\t\treturn Api.getApi(apiUrl);\n\t}\n\n\tgetFilters(filterParam) {\n\t\tlet keys = Object.keys(filterParam);\n\t\tlet filters = '';\n\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tlet key = keys[i];\n\n\t\t\tif (i === keys.length - 1) {\n\t\t\t\tfilters += encodeURI(key) + '=' + encodeURI(filterParam[key]);\n\t\t\t} else {\n\t\t\t\tfilters += encodeURI(key) + '=' + encodeURI(filterParam[key]) + '&';\n\t\t\t}\n\t\t}\n\n\t\treturn filters;\n\t}\n\n\ttoggleKeywordResults(isOpen) {\n\t\t/**\n\t\t * open or close dropdown prediction list UI\n\t\t */\n\t\tisOpen\n\t\t\t? this.searchCommunityLocationResults.removeClass('d-none')\n\t\t\t: this.searchCommunityLocationResults.addClass('d-none');\n\t}\n\n\t// Add more functions like on above here\n}\n","// fetch with GET does not allow body data\r\nexport function getApi(url) {\r\n\treturn fetch(url, {\r\n\t\theaders: {\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t},\r\n\t})\r\n\t\t.then((response) => response.json())\r\n\t\t.then((response) => Promise.resolve(response))\r\n\t\t.catch((error) => {\r\n\t\t\tPromise.reject(error);\r\n\t\t});\r\n}\r\n\r\n// fetch with POST and others (DELETE, etc.)\r\nexport function callApi(url, data = {}, method = 'POST') {\r\n\treturn fetch(url, {\r\n\t\tmethod: method,\r\n\t\tbody: JSON.stringify(data),\r\n\t\theaders: new Headers({\r\n\t\t\t'Content-Type': 'application/json',\r\n\t\t}),\r\n\t})\r\n\t\t.then((response) => response.json())\r\n\t\t.then((response) => Promise.resolve(response))\r\n\t\t.catch((error) => {\r\n\t\t\tPromise.reject(error);\r\n\t\t});\r\n}\r\n"],"sourceRoot":""}