UNPKG

@eqsmarketing/frontend-site

Version:

Equipmentshare's custom code for the Webflow build

2 lines (1 loc) 3.2 kB
"use strict";(()=>{var l="https://boards-api.greenhouse.io/v1/boards/";var f="equipmentsharecom",u="gh",m=`${u}-element`,d=`${u}-filter`;var p={button_apply:`[${m}="apply"]`,title:`[${m}="title"]`,description:`[${m}="description"]`,location:`[${m}="office"]`,department:`[${m}="department"]`,anchor_element:`[${m}="link"]`,nested:`[${m}="nested"]`},h={department:`[${d}="department"]`,location:`[${d}="location"]`,office:`[${d}="office"]`};var w=`[${u}-custom-position]`;var E=async r=>{try{let t=`${l}${f}/jobs/${r}?questions=true`,e=await fetch(t);if(!e.ok)throw new Error("Failed to fetch position details from Greenhouse api");return await e.json()}catch{return}};var y=async r=>{try{let t=`${l}${f}/departments/${r}?render_as=tree&content=true`;return await(await fetch(t)).json()}catch{return}},S=async()=>{try{let r=`${l}${f}/jobs?content=true`;return await(await fetch(r)).json()}catch{return{jobs:[],meta:0}}};var T=async(r,t)=>{let e=[],n=[],a=[];if(r){let o=await y(r);o&&o.jobs.length>0&&(await Promise.all(o.jobs.map(async s=>{let i=await E(s.id);i&&e.push(i)})),await Promise.all(o.children.map(async s=>{s.jobs.length>0&&await Promise.all(s.jobs.map(async i=>{let c=await E(i.id);c&&e.push(c)}))})))}else{let o=await S();if(!o)return{jobs:[],departments:[],offices:[]};e=o.jobs}return t&&(e=e.filter(o=>{let s=o.metadata.find(i=>i.name===t.name);if(s&&s.value===t.value)return!0})),n=[...new Set(e.map(o=>o.departments).flat().filter((o,s,i)=>i.findIndex(c=>c.name===o.name)===s))],a=[...new Set(e.map(o=>o.offices).flat().filter((o,s,i)=>i.findIndex(c=>c.name===o.name)===s))],n.sort(L),a.sort(L),{jobs:e,departments:n,offices:a}},L=(r,t)=>(r.name.trim(),t.name.trim(),r.name<t.name?-1:r.name>t.name?1:0);var b=(r,t)=>{let e=r.cloneNode(!0),{parentElement:n}=r,{type:a}=e;if(n)return e instanceof HTMLSelectElement&&a.includes("select")&&t.forEach(o=>e.add(new Option(o.name,o.id.toString()))),n.appendChild(e),r.remove(),e};var x=(r,t)=>{let e=r.cloneNode(!0),n=e.querySelector(p.title),a=e.querySelector(p.location),o=e.querySelector(p.department),s=e.querySelector(p.anchor_element);if(s){let i=new URL(s.href);i.searchParams.append("gh_jid",`${t.id}`),s.href=i.toString()}return n&&(n.innerText=t.title),o&&t.departments.forEach(i=>{o.innerText=i.name}),a&&(a.innerText=t.location.name),_(t,e),e},_=(r,t)=>{r.offices.forEach(e=>{let n=document.createElement("div");n.style.display="none",n.setAttribute("fs-cmsfilter-field","office"),n.innerText=e.id.toString(),t.appendChild(n)}),r.departments.forEach(e=>{let n=document.createElement("div");n.style.display="none",n.setAttribute("fs-cmsfilter-field","department"),n.innerText=e.id.toString(),t.appendChild(n)})};window.fsAttributes=window.fsAttributes||[];window.fsAttributes.push(["cmsload",async r=>{let[t]=r,[e]=t.items,n=e.element;t.clearItems();let{jobs:a}=await T(),s=a.filter(i=>i.departments.some(c=>!c.name.startsWith("ZZ"))).map(i=>x(n,i));t.addItems(s)}]);window.fsAttributes.push(["cmsfilter",async r=>{let{departments:t,offices:e}=await T(),[n]=r,a=t.filter(i=>!i.name.startsWith("ZZ")),o=n.form.querySelector(h.department),s=n.form.querySelector(h.office);!s||!o||(b(o,a),b(s,e),n.storeFiltersData())}]);})();