1class customSelect extends HTMLElement{constructor(){if(super(),this.elem=this.querySelector("select"),this.bubbles=!1,this.mainClass="custom-select",this.titleClass="custom-select__title",this.listClass="custom-select__list",this.selectedClass="is-selected",this.openClass="is-open",this.selectOptions=this.elem.options,this.optionsLength=this.selectOptions.length,this.index=0,this.closeButtonText=this.dataset.closeButton,this.selectContainer=document.createElement("div"),this.selectContainer.className=this.mainClass,this.elem.id&&(this.selectContainer.id="custom-"+this.elem.id),this.button=document.createElement("button"),this.button.className=this.titleClass,this.button.textContent=this.generateListInnerHtml(this.selectOptions[0].textContent,"||"),this.ul=document.createElement("ul"),this.ul.className=this.listClass,this.generateOptions(this.selectOptions),this.selectContainer.appendChild(this.button),this.selectContainer.appendChild(this.ul),this.svg=this.querySelector("svg"),this.selectContainer.addEventListener("click",this.onClick.bind(this)),this.elem.parentNode.insertBefore(this.selectContainer,this.elem),this.elem.classList.add("visually-hidden"),window.addEventListener("click",this.clickedOutside.bind(this)),window.innerWidth>=768){let oldValue=0,newValue=0;window.addEventListener("scroll",e=>{newValue=window.pageYOffset,oldValue>newValue&&this.close(this.ul),oldValue=newValue})}}generateOptions(options){for(var i=0;i<options.length;i++){const li=document.createElement("li");li.innerHTML=this.generateListInnerHtml(options[i].textContent.trim(),"||",options[i].disabled),li.setAttribute("data-value",options[i].value),li.setAttribute("data-index",this.index++);var optionsValue=options[i].value,optionsValueDown=optionsValue.toLowerCase(),style="",letters=["xs","s","m","l","xl","xs/s","s/m","m/l","l/xl"];if(letters.includes(optionsValueDown)){var count=0;letters.forEach(letter=>{count++,letter===optionsValueDown&&(style=`order:${count}`)})}if(li.setAttribute("style",style),options[i].disabled&&li.classList.add("disabled"),this.selectOptions[this.elem.selectedIndex].textContent===options[i].textContent&&(li.classList.add(this.selectedClass),this.button.innerHTML=this.generateListInnerHtml(options[i].textContent,"||")),this.ul.appendChild(li),this.closeButtonText!==""&&i===options.length-1){const closeButton=document.createElement("li"),closeIcon=`<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"> 2 <path fill="currentColor" fill-rule="evenodd" d="M6.343 6.343a1 1 0 0 1 1.414 0L12 10.586l4.243-4.243a1 1 0 1 1 1.414 1.414L13.414 12l4.243 4.243a1 1 0 1 1-1.414 1.414L12 13.414l-4.243 4.243a1 1 0 0 1-1.414-1.414L10.586 12 6.343 7.757a1 1 0 0 1 0-1.414Z" clip-rule="evenodd"/> 3 </svg>`;closeButton.innerHTML=`${closeIcon} <span>${this.closeButtonText}</span>`,closeButton.classList.add("custom-select__close"),this.ul.appendChild(closeButton)}}}onClick(e){e.preventDefault();var t=e.target;if(t.className===this.titleClass&&this.toggle(this.ul),t.classList.contains("klaviyo-bis-trigger")){const parentLi=t.closest("li");parentLi&&this.handleVariantChange(parentLi);return}t.tagName==="LI"&&(t.classList.contains("custom-select__close")?this.close(this.ul):this.handleVariantChange(t))}handleVariantChange(liElement){this.button.innerHTML=liElement.innerHTML,this.elem.options.selectedIndex=liElement.getAttribute("data-index"),this.elem.options.selectedValue=liElement.getAttribute("data-value");const evt=this.bubbles?new CustomEvent("change",!0):new CustomEvent("change");this.elem.dispatchEvent(evt);for(let i=0;i<this.optionsLength;i++)this.ul.querySelectorAll("li")[i].classList.remove(this.selectedClass);liElement.classList.add(this.selectedClass),document.querySelector('option[name="placeholder"]')?.removeAttribute("selected"),this.elem.value=this.elem.options.selectedValue,this.elem.dispatchEvent(new Event("change",{bubbles:!0})),this.close(this.ul)}generateListInnerHtml(string,separator="+",disabled=!1){if(string==="")return!1;var html=string,stringSplit=string.split(separator);return stringSplit[0]!==void 0&&stringSplit[1]!==void 0&&(html=` 4 ${disabled?'<a class="klaviyo-bis-trigger custom-select__klaviyo" href="#">':""}
5 <span class="first">${stringSplit[0]}</span> 6 <span class="last">${stringSplit[1]}</span> 7 ${disabled?"</a>":""}`),html}clickedOutside(e){this.selectContainer.contains(e.target)||this.close(this.ul)}toggle(ul){ul.classList.toggle(this.openClass)}open(ul){ul.classList.add(this.openClass)}close(ul){ul.classList.remove(this.openClass)}}customElements.get("custom-select")||customElements.define("custom-select",customSelect); 8//# sourceMappingURL=/cdn/shop/t/119/assets/custom-select.js.map?v=49108630098414011351789544041
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.