1import{utils}from"@theme/global-utilities";export class SearchResults extends HTMLElement{constructor(){super(),this._selectors={articlesCount:"[js-articles-count]",productsCount:"[js-products-count]",productGrid:"[js-products-grid]",mainFilterForm:"[js-filter-form]",mainSortBy:"#SortBy",sortTrigger:"[js-sort-trigger]",sortDropdown:"[js-sort-dropdown]",desktopFilterTrigger:"[js-desktop-filter-trigger]",desktopFilters:"[js-desktop-filters]",filteredResultsCount:"[js-filtered-results-count]",nonFilteredResultsCount:"[js-non-filtered-results-count]",nextProductsBtn:"[js-next-products]",nextArticlesBtn:"[js-next-articles]",product:"[js-product]",article:"[js-article]"},this._refresh=["[js-results-count]","[js-products-count]","[js-products-grid]","[js-sort-dropdown-options]","[js-sort-trigger]","[js-pagination-products]"],this._refreshFilterClear=["[js-results-count]","[js-products-count]","[js-products-grid]","[js-sort-dropdown-options]","[js-sort-trigger]","[js-pagination-products]","[js-articles-count]","[js-articles-grid]","[js-pagination-articles]"]}connectedCallback(){this.productGrid=this.querySelector(this._selectors.productGrid),this.sortTrigger=this.querySelector(this._selectors.sortTrigger),this.sortDropdown=this.querySelector(this._selectors.sortDropdown),this.mainFilterForm=this.querySelector(this._selectors.mainFilterForm),this.mainSortBy=this.querySelector(this._selectors.mainSortBy),this.desktopFilterTrigger=this.querySelector(this._selectors.desktopFilterTrigger),this.desktopFilters=this.querySelector(this._selectors.desktopFilters),this.seeMoreBtn=this.querySelector(this._selectors.seeMoreBtn),this.imageFilters=this.querySelectorAll(this._selectors.imageFilter),this.hasAttribute("data-search-not-performed")&&(window.location.href=window.Shopify.routes.root),this._setListeners(),this._handleProductsPagination(),this._handleArticlesPagination()}_setListeners(){document.addEventListener("filter:change",this._handleFilterChange),this.sortTrigger?.addEventListener("change",this._sortTriggerChange),this.desktopFilterTrigger?.addEventListener("click",this._toggleDesktopFilters)}_loadNextArticles=()=>{const t=Number(this.nextArticlesBtn.dataset.nextPage);this.querySelectorAll(`${this._selectors.article}[data-page="${t}"]`).forEach(t=>{t.classList.remove("hidden")});const e=t+1;this.querySelectorAll(`${this._selectors.article}[data-page="${e}"]`).length>0?(this.nextArticlesBtn.dataset.nextPage=e,this.nextArticlesBtn.blur()):this.nextArticlesBtn.remove()};_handleArticlesPagination=()=>{this.nextArticlesBtn?.removeEventListener("click",this._loadNextArticles),this.nextArticlesBtn=this.querySelector(this._selectors.nextArticlesBtn),this.nextArticlesBtn&&this.nextArticlesBtn.addEventListener("click",this._loadNextArticles)};_loadNextProducts=()=>{const t=Number(this.nextProductsBtn.dataset.nextPage);this.querySelectorAll(`${this._selectors.product}[data-page="${t}"]`).forEach(t=>{t.classList.remove("hidden")});const e=t+1;this.querySelectorAll(`${this._selectors.product}[data-page="${e}"]`).length>0?(this.nextProductsBtn.dataset.nextPage=e,this.nextProductsBtn.blur()):this.nextProductsBtn.remove()};_handleProductsPagination=()=>{this.nextProductsBtn?.removeEventListener("click",this._loadNextProducts),this.nextProductsBtn=this.querySelector(this._selectors.nextProductsBtn),this.nextProductsBtn&&this.nextProductsBtn.addEventListener("click",this._loadNextProducts)};_toggleDesktopFilters=t=>{t.preventDefault(),"true"===t.currentTarget.dataset.open?(this.desktopFilterTrigger.dataset.open="false",this.desktopFilters.dataset.open="false"):(this.desktopFilterTrigger.dataset.open="true",this.desktopFilters.dataset.open="true")};_sortTriggerChange=t=>{this.mainSortBy.value=t.target.value;const e=new Event("input",{bubbles:!0,cancelable:!0});this.mainFilterForm.dispatchEvent(e)};_handleFilterChange=t=>{const{parsedHTML:e}=t.detail,s=e.querySelector(`[data-id="${this.dataset.id}"]`),r=!s.querySelector(this._selectors.filteredResultsCount);r?utils.refreshElements(this._refreshFilterClear,s,this):utils.refreshElements(this._refresh,s,this);const i=this.querySelector(this._selectors.filteredResultsCount);if(i){const t=(this.querySelector(this._selectors.productsCount)?Number(this.querySelector(this._selectors.productsCount).textContent):0)+(this.querySelector(this._selectors.articlesCount)?Number(this.querySelector(this._selectors.articlesCount).textContent):0);i.textContent=t>0?`Showing ${t} result${t>1?"s":""} for`:"No results found for",this.querySelector(this._selectors.nonFilteredResultsCount).classList.add("hidden")}this.productGrid.scrollIntoView({behavior:"instant"}),this._handleProductsPagination(),r&&this._handleArticlesPagination(),this.sortDropdown.disconnectedCallback(),this.sortDropdown.connectedCallback()}}customElements.get("s-search-results")||customElements.define("s-search-results",SearchResults);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.