PageSourceSearch

https://www.rails.com/cdn/shop/t/1629/assets/search-template-vite-mpnO2mxM.js

js rails.com collected 2026-10-03 19:17:17 UTC 8,053 bytes, 1 lines download raw bytes

1import{r as S}from"./theme-sections-vite-Co0nR_Yu.js";import{i as u}from"./lazy-load-images-vite-MKimLRwW.js";import{d as m,c as B}from"./bodyScrollLock.esm-vite-CABaxWbl.js";const e={loadMoreButton:".js-load-more",productsGrid:".js-search-grid",productsCount:".js-search-count",preloader:".js-page-preloader",body:"body",filterButton:".js-filters-button",filteringBody:".js-filtering-body",filtering:".js-filtering",filtersSortForm:".js-filter-sort-form",filtersSortFormContainer:".js-filters-sort-form-container",filtersOverlay:".js-search-filter-overlay",sorting:".js-sorting",sortingOptions:".js-sorting-options",sortingOption:".js-sorting-option",sortingButtonTitle:".js-sorting-title",sortingRadio:".js-sorting-radio",sortingButton:".js-sorting-button",applyFiltersButton:".js-apply-filters-button",resetFiltersButton:".js-reset-filters-button",filtersAndSortButtonMobile:".js-filters-and-sort-button-mobile",checkboxOption:".js-checkbox-options",checkboxActiveOptions:".js-checkbox-options.active",buttonClose:".js-close-sidebar",filtersCount:".js-filters-count"},h={totalPages:"data-total-pages",currentPage:"data-current-page"},r={hidden:"hidden",active:"active",pageOverlay:"page-overlay",pageOverlayFull:"page-overlay--full"};S("search-template",{onLoad:function(){this.preloader=this.container.querySelector(e.preloader),this.body=document.querySelector(e.body),this.productsGrid=this.container.querySelector(e.productsGrid),this.loadMoreButton=this.container.querySelector(e.loadMoreButton),this.productsCount=this.container.querySelector(e.productsCount),this.filtersSortForm=this.container.querySelector(e.filtersSortForm),this.filtering=this.container.querySelector(e.filtering),this.filteringBody=this.container.querySelector(e.filteringBody),this.sorting=this.container.querySelector(e.sorting),this.sortingOptions=this.container.querySelector(e.sortingOptions),this.filterButton=this.container.querySelector(e.sortingButton),this.filtersOverlay=this.container.querySelector(e.filtersOverlay),this.initialUrl=null,this.currentPage=+this.loadMoreButton.dataset.currentPage,this.totalPages=+this.loadMoreButton.dataset.totalPages,this.paginateBy=+this.loadMoreButton.dataset.paginateBy,this.clickHandler(),this.toggleFilterWindow(),this.toggleMobileFiltersAndSort(),this.initMediaEvents(),this.getFiltersCount(),this.closeDesktopFiltersAndSort()},getFiltersCount(){document.addEventListener("click",t=>{const i=t.target.closest(e.checkboxOption),s=[...this.container.querySelectorAll(e.filtersCount)];if(!i)return;i.classList.toggle(r.active);let o=[...this.container.querySelectorAll(e.checkboxActiveOptions)];s.length&&s.map(l=>{o.length?l.innerHTML=`(${o.length})`:l.innerHTML=""})})},clickHandler(){this.container.addEventListener("click",t=>{const i=t.target.closest(e.filterButton),s=t.target.closest(e.sortingButton),o=t.target.closest(e.applyFiltersButton),l=t.target.closest(e.resetFiltersButton),n=t.target.closest(e.sortingOption),a=[...this.container.querySelectorAll(e.checkboxOption)],c=t.target.closest(e.buttonClose),f=t.target.closest(e.filtersSortForm),p=t.target.closest(e.filtersOverlay),y=[...this.container.querySelectorAll(e.filtersCount)],g=t.target.closest(e.loadMoreButton);c&&this.closeSidebar(f),p&&this.closeSidebar(this.filtersSortForm),g&&this.loadPages(g),i&&(this.toggleList(this.filtering,this.filteringBody),this.hideSorting(this.sorting,this.sortingOptions)),s&&(this.toggleList(this.sorting,this.sortingOptions),this.hideFiltering(this.filtering,this.filteringBody)),n&&(this.hideFiltering(this.filtering,this.filteringBody),this.hideSorting(this.sorting,this.sortingOptions),this.filteringAndSortingAction(n),this.updateFilterButton(n)),o&&(this.hideFiltering(this.filtering,this.filteringBody),this.closeSidebar(this.filtersSortForm),this.filteringAndSortingAction()),l&&(a.map(d=>{d.classList.contains(r.active)&&(d.checked=!1,d.classList.remove(r.active))}),y.map(d=>{d.innerHTML=""}),this.hideFiltering(this.filtering,this.filteringBody),this.closeSidebar(this.filtersSortForm),this.filteringAndSortingAction())})},closeSidebar(t){t.classList.remove(r.active),B(),this.filtersOverlay&&this.filtersOverlay.classList.remove(r.active)},closeDesktopFiltersAndSort(){window.addEventListener("click",t=>{const i=t.target.closest(e.filtering),s=t.target.closest(e.sorting);i||this.hideFiltering(this.filtering,this.filteringBody),s||this.hideSorting(this.sorting,this.sortingOptions)})},hideFiltering(t,i){t.classList.remove(r.active),i.classList.add(r.hidden)},hideSorting(t,i){t.classList.remove(r.active),i.classList.add(r.hidden)},toggleList(t,i){t.classList.toggle(r.active),i.classList.toggle(r.hidden)},toggleFilterWindow(){const t=this.container.querySelector(e.filtersSortForm),i=this.container.querySelector(e.filterButton);!t||!i||i.addEventListener("click",()=>{t.classList.toggle(r.active)})},updateFilterButton(t){if(!this.filterButton||!t)return;let i=this.filterButton.querySelector(e.sortingButtonTitle),s=t.dataset.optionName;!i||!s||(i.innerText=s)},toggleMobileFiltersAndSort(){document.addEventListener("click",t=>{const i=t.target.closest(e.filtersAndSortButtonMobile),s=this.container.querySelector(e.filtersSortForm),o=this.container.querySelector(e.filtersSortFormContainer);
1i&&(this.filtersOverlay&&this.filtersOverlay.classList.toggle(r.active),s.classList.toggle(r.active),o&&m(o))})},filteringAndSortingAction(t){const i=this.container.querySelector(e.filtersSortForm);let s=new URL(window.location.href);const o=new FormData(i),l=[...o.keys()];let n="?sections=";if(l.map(a=>{let c=o.getAll(a);c.length?s.searchParams.set(a,c.join("%%%")):s.searchParams.delete(a)}),t){const a=t.querySelector(e.sortingRadio),c=t.dataset.value;a.setAttribute("checked","checked"),s.searchParams.set("sort_by",c)}this.initialUrl=s.search.replace("?","&"),this.initialUrl=this.initialUrl.replaceAll("%25%25%25",","),this.initialUrl&&(this.loadMoreButton.setAttribute(h.currentPage,1),this.currentPage>=this.totalPages&&this.loadMoreButton.classList.add(r.hidden)),s.search.includes("?")&&(n="&sections="),s=s+n+this.container.dataset.sectionId,s=s.replaceAll("%25%25%25",","),this.body&&this.preloader&&this.initPreloader(this.body,this.preloader),this.getFilteringSectionRequest(s)},getFilteringSectionRequest(t){fetch(t).then(i=>i.json()).then(i=>i[this.container.dataset.sectionId]).then(i=>{const s=new DOMParser().parseFromString(i,"text/html"),o=s.querySelector(e.productsGrid).innerHTML,l=s.querySelector(e.loadMoreButton),n=s.querySelector(e.productsCount).innerHTML;[...this.container.querySelectorAll(e.checkboxOption)].length&&(l?this.loadMoreButton.classList.remove(r.hidden):this.loadMoreButton.classList.add(r.hidden),this.productsGrid.innerHTML=o,this.productsCount.innerHTML=+n,this.productsCount.dataset.productsCount=+n,this.removePreloader(this.body,this.preloader),u())}).catch(i=>new Error(i))},loadPages(t){const i=t.dataset.nextUrl;let s=+t.dataset.currentPage,o=+t.dataset.totalPages;this.initPreloader(this.body,this.preloader),s=s+1;let l=i.replace(/page=[0-9]+/,`page=${s}&view=ajax-template`);this.initialUrl&&(l+=this.initialUrl),fetch(l).then(n=>n.text()).then(n=>{if(this.removePreloader(this.body,this.preloader),this.productsGrid.insertAdjacentHTML("beforeend",n),u(),t.setAttribute(h.currentPage,s),this.initialUrl&&this.productsCount.dataset.productsCount>=this.paginateBy){const a=Math.ceil(this.productsCount.dataset.productsCount/this.paginateBy);this.loadMoreButton.setAttribute(h.totalPages,a),o=a}s>=o?this.loadMoreButton.classList.add(r.hidden):this.loadMoreButton.classList.remove(r.hidden)}).catch(n=>new Error(n))},initPreloader(t,i){t.classList.add(r.pageOverlay,r.pageOverlayFull),i.classList.add(r.active)},removePreloader(t,i){t.classList.remove(r.pageOverlay,r.pageOverlayFull),i.classList.remove(r.active)},initMediaEvents:function(){let t=window.matchMedia("(min-width: 1500px)");t.addEventListener?t.addEventListener("change",()=>{this.closeSidebar(this.filtersSortForm)}):t.addListener(()=>{this.closeSidebar(this.filtersSortForm)})}});

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.