| 1 |
(()=>{const e=e=>String(e).replaceAll("&","&").replaceAll("<","<").replaceAll(">",">").replaceAll('"',""");document.querySelectorAll("[data-ff-advanced-search]").forEach((t=>{const a=t.querySelector(".gutenify--advanced-search__input"),r=t.querySelector(".gutenify--advanced-search__results"),n=t.querySelector(".gutenify--advanced-search__status");if(!a||!r||!n)return;let s=null,c=null,l=-1;const i=()=>{r.hidden=!0,a.setAttribute("aria-expanded","false"),a.removeAttribute("aria-activedescendant"),l=-1},o=async()=>{const s=a.value.trim();if(s.length<Number(t.dataset.minimum))i();else{c?.abort(),c=new AbortController,n.textContent=t.dataset.labelSearching;try{const l=new URL(t.dataset.restUrl);l.searchParams.set("search",s),l.searchParams.set("limit",t.dataset.limit);const i=await fetch(l,{signal:c.signal});if(!i.ok)throw new Error("search_failed");((s,c)=>{const l=s.products.map(((t,r)=>`<a id="${a.id}-option-${r}" class="gutenify--advanced-search__product" role="option" href="${e(t.url)}"><span class="gutenify--advanced-search__image">${t.imageHtml}</span><span><strong>${e(t.name)}</strong><span class="gutenify--advanced-search__price">${t.priceHtml}</span></span></a>`)).join(""),i="true"===t.dataset.showCategories&&s.categories.length?`<div class="gutenify--advanced-search__categories"><strong>${e(t.dataset.labelCategories)}</strong>${s.categories.map((t=>`<a href="${e(t.url)}">${e(t.name)}</a>`)).join("")}</div>`:"",o=new URL(t.dataset.searchUrl||window.location.href);o.searchParams.set("s",c),o.searchParams.set("post_type","product");const d="true"===t.dataset.showViewAll?`<a class="gutenify--advanced-search__view-all" href="${e(o.href)}">${e(t.dataset.labelViewAll)}</a>`:"";r.innerHTML=l||i?`${l}${i}${d}`:`<p class="gutenify--advanced-search__empty">${e(t.dataset.labelEmpty)}</p>`,r.hidden=!1,a.setAttribute("aria-expanded","true"),n.textContent=`${s.products.length} product results.`})(await i.json(),s)}catch(e){"AbortError"!==e.name&&(n.textContent=t.dataset.labelError)}}};a.addEventListener("input",(()=>{window.clearTimeout(s),s=window.setTimeout(o,Number(t.dataset.delay))})),a.addEventListener("keydown",(e=>{if("Escape"===e.key)return void i();const t=Array.from(r.querySelectorAll('[role="option"]'));["ArrowDown","ArrowUp","Enter"].includes(e.key)&&!r.hidden&&t.length&&(e.preventDefault(),"Enter"===e.key&&l>=0?t[l].click():(l="ArrowDown"===e.key?(l+1)%t.length:(l-1+t.length)%t.length,t.forEach(((e,t)=>e.setAttribute("aria-selected",String(t===l)))),a.setAttribute("aria-activedescendant",t[l].id)))})),document.addEventListener("click",(e=>{t.contains(e.target)||i()}))}))})(); |