{"version":3,"file":"pages-job-board-js-Dvu1k4Xh.js","sources":["../src/entries/pages/job-board.js"],"sourcesContent":["import delegate from \"delegate-it\";\nimport easydropdown from \"easydropdown-a11y\";\nimport ajax from \"@/scripts/common/ajax\";\nimport { scrollToIfNeeded } from \"@/scripts/common/scroll-to\";\nimport { generateQueryString } from \"@/scripts/common/util\";\nimport { updateQueryParams } from \"@/scripts/common/util\";\nimport \"@/styles/components/dropdown.css\";\n\nconst form = document.querySelector(\".filter-form\");\n\nconst setupDropdown = (el) => {\n if (el.tagName !== \"SELECT\") {\n return;\n }\n\n const opts = {\n behavior: {\n openOnFocus: true,\n maxVisibleItems: 10,\n liveUpdates: true,\n useNativeUiOnMobile: false,\n },\n };\n\n easydropdown(el, opts);\n};\n\nconst handleViewChange = (e) => {\n document.querySelector('[data-change-view][aria-selected=\"true\"]').setAttribute(\"aria-selected\", \"false\");\n e.delegateTarget.setAttribute(\"aria-selected\", \"true\");\n\n const url = updateQueryParams([[\"view\", e.delegateTarget.dataset.changeView]]);\n\n window.history.replaceState({}, \"\", url);\n\n updateResults();\n};\n\nconst handleFilterChange = (e) => {\n e && e.preventDefault();\n\n const currentUrl = new URL(window.location.href);\n const currentParams = new URLSearchParams(currentUrl.search);\n const currentView = currentParams.get(\"view\");\n\n const params = new FormData(form);\n const queryString = generateQueryString(params);\n const url = queryString.size ? `${form.action}?${queryString}` : form.action;\n\n window.history.replaceState({}, \"\", url);\n\n if (currentView) {\n const url = updateQueryParams([[\"view\", currentView]]);\n\n window.history.replaceState({}, \"\", url);\n }\n\n updateResults();\n};\n\nconst handleFilterClear = () => {\n const currentUrl = new URL(window.location.href);\n const currentParams = new URLSearchParams(currentUrl.search);\n const currentView = currentParams.get(\"view\");\n\n form.reset();\n form.querySelectorAll('input[type=\"search\"]').forEach((x) => (x.value = null));\n form.querySelectorAll(\"select\").forEach((x) => (x.value = \"\"));\n\n window.history.replaceState({}, \"\", form.action);\n\n if (currentView) {\n const url = updateQueryParams([[\"view\", currentView]]);\n\n window.history.replaceState({}, \"\", url);\n }\n\n updateResults();\n};\n\nconst updateResults = async () => {\n const pageContent = document.querySelector(\"[data-page-content]\");\n\n pageContent.classList.add(\"is-loading\");\n\n const res = await ajax.get(window.location.href).json();\n\n pageContent.innerHTML = res.page;\n pageContent.classList.remove(\"is-loading\");\n\n if (res.isFiltered) {\n scrollToIfNeeded(pageContent, 24);\n }\n};\n\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n if (form) {\n form.querySelectorAll(\"select:not([multiple])\").forEach((el) => setupDropdown(el));\n\n delegate(\".filter-form select\", \"change\", handleFilterChange);\n delegate(\".filter-form\", \"submit\", handleFilterChange);\n delegate(\".filter-form-clear\", \"click\", handleFilterClear);\n }\n\n delegate('[data-change-view]:not([aria-selected=\"true\"])', \"click\", handleViewChange);\n});\n"],"names":["form","setupDropdown","el","easydropdown","handleViewChange","url","updateQueryParams","updateResults","handleFilterChange","currentUrl","currentView","params","queryString","generateQueryString","handleFilterClear","x","pageContent","res","ajax","scrollToIfNeeded","delegate"],"mappings":"6RAQA,MAAMA,EAAO,SAAS,cAAc,cAAc,EAE5CC,EAAiBC,GAAO,CAC5B,GAAIA,EAAG,UAAY,SACjB,OAYFC,EAAaD,EATA,CACX,SAAU,CACR,YAAa,GACb,gBAAiB,GACjB,YAAa,GACb,oBAAqB,EACtB,CACL,CAEuB,CACvB,EAEME,EAAoB,GAAM,CAC9B,SAAS,cAAc,0CAA0C,EAAE,aAAa,gBAAiB,OAAO,EACxG,EAAE,eAAe,aAAa,gBAAiB,MAAM,EAErD,MAAMC,EAAMC,EAAkB,CAAC,CAAC,OAAQ,EAAE,eAAe,QAAQ,UAAU,CAAC,CAAC,EAE7E,OAAO,QAAQ,aAAa,CAAE,EAAE,GAAID,CAAG,EAEvCE,GACF,EAEMC,EAAsB,GAAM,CAChC,GAAK,EAAE,iBAEP,MAAMC,EAAa,IAAI,IAAI,OAAO,SAAS,IAAI,EAEzCC,EADgB,IAAI,gBAAgBD,EAAW,MAAM,EACzB,IAAI,MAAM,EAEtCE,EAAS,IAAI,SAASX,CAAI,EAC1BY,EAAcC,EAAoBF,CAAM,EACxCN,EAAMO,EAAY,KAAO,GAAGZ,EAAK,MAAM,IAAIY,CAAW,GAAKZ,EAAK,OAItE,GAFA,OAAO,QAAQ,aAAa,CAAE,EAAE,GAAIK,CAAG,EAEnCK,EAAa,CACf,MAAML,EAAMC,EAAkB,CAAC,CAAC,OAAQI,CAAW,CAAC,CAAC,EAErD,OAAO,QAAQ,aAAa,CAAE,EAAE,GAAIL,CAAG,CACxC,CAEDE,GACF,EAEMO,EAAoB,IAAM,CAC9B,MAAML,EAAa,IAAI,IAAI,OAAO,SAAS,IAAI,EAEzCC,EADgB,IAAI,gBAAgBD,EAAW,MAAM,EACzB,IAAI,MAAM,EAQ5C,GANAT,EAAK,MAAK,EACVA,EAAK,iBAAiB,sBAAsB,EAAE,QAASe,GAAOA,EAAE,MAAQ,IAAK,EAC7Ef,EAAK,iBAAiB,QAAQ,EAAE,QAASe,GAAOA,EAAE,MAAQ,EAAG,EAE7D,OAAO,QAAQ,aAAa,CAAA,EAAI,GAAIf,EAAK,MAAM,EAE3CU,EAAa,CACf,MAAML,EAAMC,EAAkB,CAAC,CAAC,OAAQI,CAAW,CAAC,CAAC,EAErD,OAAO,QAAQ,aAAa,CAAE,EAAE,GAAIL,CAAG,CACxC,CAEDE,GACF,EAEMA,EAAgB,SAAY,CAChC,MAAMS,EAAc,SAAS,cAAc,qBAAqB,EAEhEA,EAAY,UAAU,IAAI,YAAY,EAEtC,MAAMC,EAAM,MAAMC,EAAK,IAAI,OAAO,SAAS,IAAI,EAAE,OAEjDF,EAAY,UAAYC,EAAI,KAC5BD,EAAY,UAAU,OAAO,YAAY,EAErCC,EAAI,YACNE,EAAiBH,EAAa,EAAE,CAEpC,EAEA,SAAS,iBAAiB,mBAAoB,IAAM,CAC9ChB,IACFA,EAAK,iBAAiB,wBAAwB,EAAE,QAASE,GAAOD,EAAcC,CAAE,CAAC,EAEjFkB,EAAS,sBAAuB,SAAUZ,CAAkB,EAC5DY,EAAS,eAAgB,SAAUZ,CAAkB,EACrDY,EAAS,qBAAsB,QAASN,CAAiB,GAG3DM,EAAS,iDAAkD,QAAShB,CAAgB,CACtF,CAAC"}