| @@ -1,5 +1,5 @@ | ||
| 1 | -var At=Object.defineProperty;var lt=c=>{throw TypeError(c)};var Ot=(c,e,t)=>e in c?At(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var Dt=(c,e)=>()=>(e||c((e={exports:{}}).exports,e),e.exports);var p=(c,e,t)=>Ot(c,typeof e!="symbol"?e+"":e,t),je=(c,e,t)=>e.has(c)||lt("Cannot "+t);var h=(c,e,t)=>(je(c,e,"read from private field"),t?t.call(c):e.get(c)),g=(c,e,t)=>e.has(c)?lt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(c):e.set(c,t),m=(c,e,t,i)=>(je(c,e,"write to private field"),i?i.call(c,t):e.set(c,t),t),f=(c,e,t)=>(je(c,e,"access private method"),t);import{C as v,P as Pt}from"./chunks/payment-loader.js?ver=1.6.2";import{U as te}from"./chunks/Url.js?ver=1.6.2";import{u as rt,t as at}from"./chunks/timezone.js?ver=1.6.2";import{d as W}from"./chunks/dayjs.min.js?ver=1.6.2";import"./chunks/Str.js?ver=1.6.2";import"./chunks/Arr.js?ver=1.6.2";import"./chunks/vue-router.js?ver=1.6.2";import"./chunks/vue.esm-bundler.js?ver=1.6.2";var Ft=Dt((Yt,qe)=>{class Wt{constructor(e,t={}){this.element=e,this.disabled=!1;const i=this.parseSelectElement();this.options=t.options||i||[];const s=t.placeholder===!1;this.searchPlaceholder="",this.placeholder="",s||(this.placeholder=t.placeholder||this.getPlaceholderFromSelect()||"Select an option...",this.searchPlaceholder=t.searchPlaceholder||"Type to search..."),this.clearable=t.clearable!==!1,this.onChange=t.onChange||(()=>{}),this.onSearch=t.onSearch||(()=>{});const n=this.getInitialSelection();this.selectedValue=n.value,this.selectedText=n.text,this.filteredOptions=[...this.options],this.highlightedIndex=-1,this.isOpen=!1,this.searchTerm="",this.init()}init(){this.createElements(),this.bindEvents(),this.render(),this.selectedValue&&(this.input.value=this.selectedText)}parseSelectElement(){if(this.element.tagName!=="SELECT")return null;const e=[];return this.element.querySelectorAll("option").forEach(i=>{(i.value||i.textContent.trim())&&e.push({value:i.value||i.textContent.trim(),text:i.textContent.trim()})}),e}getPlaceholderFromSelect(){if(this.element.tagName!=="SELECT")return null;if(this.element.hasAttribute("data-placeholder"))return this.element.getAttribute("data-placeholder");const e=this.element.querySelector("option");return e&&!e.value&&e.textContent.trim()?e.textContent.trim():null}getInitialSelection(){if(this.element.tagName!=="SELECT")return{value:null,text:""};const e=this.element.querySelector("option[selected]")||this.element.options[this.element.selectedIndex];return e&&e.value?{value:e.value,text:e.textContent.trim()}:{value:null,text:""}}createElements(){const e=this.element.tagName==="SELECT";let t,i=e&&this.element.parentNode.classList.contains("fct-custom-searchable-select"),s=null;if(i){t=this.element.parentNode;const n=t.querySelector(".fct-custom-searchable-select-container");n&&t.removeChild(n),s=t.querySelector("input")}else t=document.createElement("div"),t.className="fct-custom-searchable-select",e?(this.element.parentNode.insertBefore(t,this.element),t.appendChild(this.element)):(t.classList.add("custom-select-wrapper"),this.element.appendChild(t));e?(this.originalElement=this.element.cloneNode(!0),this.element.style.display="none"):this.originalElement=null,this.selectContainer=document.createElement("div"),this.selectContainer.className="fct-custom-searchable-select-container",this.input=document.createElement("input"),this.input.className="select-input",this.input.type="text",this.input.placeholder=this.placeholder+"*",this.input.addEventListener("keypress",n=>{this.isOpen||n.preventDefault()}),this.originalElement&&(this.originalElement.disabled&&this.disable(),this.originalElement.required&&(this.input.required=!0),this.originalElement.name&&(s?this.hiddenInput=s:(this.hiddenInput=document.createElement("input"),t.appendChild(this.hiddenInput)),this.hiddenInput.type="hidden",this.hiddenInput.name=this.originalElement.name)),this.arrow=document.createElement("div"),this.arrow.className="select-arrow",this.clearBtn=document.createElement("button"),this.clearBtn.className="clear-btn",this.clearBtn.innerHTML="×",this.clearBtn.type="button",this.dropdown=document.createElement("div"),this.dropdown.className="select-dropdown",this.selectContainer.appendChild(this.input),this.clearable&&this.selectContainer.appendChild(this.clearBtn),this.selectContainer.appendChild(this.arrow),this.selectContainer.appendChild(this.dropdown),t.appendChild(this.selectContainer),this.hiddenInput&&(this.hiddenInput.value=this.selectedValue||""),this.wrapper=t}bindEvents(){this.selectContainer.addEventListener("click",e=>{e.target!==this.clearBtn&&this.toggle()}),this.clearBtn.addEventListener("click",e=>{e.stopPropagation(),this.clear()}),this.input.addEventListener("focus",()=>{this.isOpen||this.open()}),this.input.addEventListener("input",e=>{this.searchTerm=e.target.value,this.filter(),this.onSearch(this.searchTerm)}),this.input.addEventListener("keydown",e=>{this.handleKeydown(e)}),this.dropdown.addEventListener("click",e=>{const t=e.target.closest(".select-option");if(t&&!t.classList.contains("no-options")){const i=t.dataset.value,s=t.textContent;this.select(i,s),this.close()}}),this.outsideClickHandler=e=>{this.element.contains(e.target)||this.close()},document.addEventListener("click",this.outsideClickHandler)}handleKeydown(e){switch(e.key){case"ArrowDown":e.preventDefault(),this.highlightNext();break;case"ArrowUp":e.preventDefault(),this.highlightPrev();break;case"Enter":if(e.preventDefault(),this.highlightedIndex>=0&&this.filteredOptions[this.highlightedIndex]){const t=this.filteredOptions[this.highlightedIndex];this.select(t.value,t.text)}break;case"Escape":this.close();break;case"Backspace":this.selectedValue&&this.clear();break}}open(){this.isOpen=!0,this.selectContainer.classList.add("open"),this.input.placeholder=this.searchPlaceholder,this.highlightedIndex=-1,this.input.value="",this.filter(),setTimeout(()=>this.input.focus(),0)}close(){this.isOpen=!1,this.selectContainer.classList.remove("open"),this.input.placeholder=this.placeholder,this.searchTerm="",this.input.value=this.selectedText,this.highlightedIndex=-1}toggle(){this.isOpen?this.close():this.open()}filter(){const e=this.searchTerm.toLowerCase();this.filteredOptions=this.options.filter(t=>t.text.toLowerCase().includes(e)),this.highlightedIndex=-1,this.renderOptions()}highlightNext(){this.filteredOptions.length!==0&&(this.highlightedIndex=Math.min(this.highlightedIndex+1,this.filteredOptions.length-1),this.updateHighlight())}highlightPrev(){this.filteredOptions.length!==0&&(this.highlightedIndex=Math.max(this.highlightedIndex-1,0),this.updateHighlight())}updateHighlight(){var t;const e=this.dropdown.querySelectorAll(".select-option:not(.no-options)");e.forEach((i,s)=>{i.classList.toggle("highlighted",s===this.highlightedIndex)}),this.highlightedIndex>=0&&((t=e[this.highlightedIndex])==null||t.scrollIntoView({block:"nearest"}))}select(e,t){this.selectedValue=e,this.selectedText=t,this.input.value=t,this.hiddenInput&&(this.hiddenInput.value=e||""),this.originalElement&&(this.originalElement.value=e||""),setTimeout(()=>{this.onChange(e,t),this.close()},10)}clear(){return this.select(null,""),this}addOption(e,t){const i={value:e,text:t};return this.options.push(i),(!this.isOpen||!this.searchTerm)&&this.filteredOptions.push(i),this.render(),this}removeOption(e){return this.options=this.options.filter(t=>t.value!==e),this.filteredOptions=this.filteredOptions.filter(t=>t.value!==e),this.selectedValue===e&&this.clear(),this.render(),this}setOptions(e,t=null,i=null){return(t||i)&&(i=i??"value",t=t??"text",e=e.map(s=>({value:s[i],text:s[t]}))),this.options=e||[],this.filteredOptions=[...this.options],this.selectedValue&&!this.options.find(s=>s.value===this.selectedValue)&&this.clear(),this.render(),this}getValue(){return this.selectedValue}getText(){return this.selectedText}getSelected(){return{value:this.selectedValue,text:this.selectedText}}setValue(e){const t=this.options.find(i=>i.value===e);return t?this.select(t.value,t.text):this.clear(),this}disable(){return this.input.disabled=!0,this.disabled=!0,this.selectContainer.classList.add("disabled"),this.element.classList.add("disabled"),this}enable(){return this.input.disabled=!1,this.disabled=!1,this.selectContainer.classList.remove("disabled"),this.element.classList.remove("disabled"),this}render(){this.renderOptions()}renderOptions(){if(this.dropdown.innerHTML="",this.filteredOptions.length===0){const e=document.createElement("div");e.className="select-option no-options",e.textContent=this.searchTerm?"No matches found":"No options available",this.dropdown.appendChild(e);return}this.filteredOptions.forEach((e,t)=>{const i=document.createElement("div");i.className="select-option",i.dataset.value=e.value,i.textContent=e.text,e.value===this.selectedValue&&i.classList.add("selected"),this.dropdown.appendChild(i)})}destroy(){document.removeEventListener("click",this.outsideClickHandler),this.element.innerHTML="",this.selectContainer.remove()}}const Te={init:function(c,e={}){const t=typeof c=="string"?document.querySelector(c):c;if(!t)throw new Error("Element not found");return new Wt(t,e)}};typeof qe<"u"&&qe.exports?qe.exports=Te:typeof define=="function"&&define.amd?define(function(){return Te}):window.customSelect=Te;const ie=(c,e,t={})=>{let i;e==="click"?i=MouseEvent:e==="change"?i=Event:e.includes("focus")?i=FocusEvent:i=UIEvent;const s=new i(e,{bubbles:!0,cancelable:!1,...t});c.dispatchEvent(s)},X=c=>ie(c,"click"),Fe=c=>ie(c,"change"),Mt=c=>ie(c,"focusin"),Nt=c=>ie(c,"focusout"),Bt=c=>ie(c,"modalopen"),Ue=c=>ie(c,"modalclose"),j=(c,e)=>c[e]!==void 0?c[e]:c.getAttribute(e),O=(c,e)=>c==null?void 0:c.classList.contains(e),T=(c,e)=>c==null?void 0:c.classList.add(e),E=(c,e)=>c==null?void 0:c.classList.remove(e),Vt={data:null,searchable:!0,showSelectedItems:!0,placeholder:"Select an option",searchtext:"Search",selectedtext:"selected",hideSelect:!0,onChange:null};var _,$e,Ke,ot,ct,dt,ht,ut,pt,Ze,ft,Le,gt;class H{constructor(e,t={}){g(this,_);if(!e)throw new Error("No element provided to NiceSelect");if(!(e instanceof Element))throw new Error("Invalid element provided to NiceSelect - must be a valid DOM element");const i=[];e.tagName==="SELECT"&&e.querySelectorAll("option").forEach(n=>{(n.value||n.textContent.trim())&&i.push({value:n.value||n.textContent.trim(),text:n.textContent.trim()})}),t.data==null&&(t.data=i),this.el=e,this.el._niceSelect=this,this.config={...Vt,...t},this.data=this.config.data,this.selectedOptions=[],this.placeholder=j(this.el,"placeholder")||this.config.placeholder,this.searchtext=j(this.el,"searchtext")||this.config.searchtext,this.selectedtext=j(this.el,"selectedtext")||this.config.selectedtext,this.dropdown=null,this.selectionList=null,this.multiple=j(this.el,"multiple"),this.disabled=j(this.el,"disabled"),this.onChange=this.config.onChange,f(this,_,$e).call(this),f(this,_,dt).call(this)}_renderSelectedItems(){if(this.multiple){let e="";window.getComputedStyle(this.dropdown).width==="auto"||this.selectedOptions.length<2?(this.selectedOptions.forEach((t,i,s)=>{let n=t.data.text;i!==s.length-1&&(n+=", "),e+=`<span class="current">${n||this.placeholder}</span>`}),e=e||this.placeholder):e=`${this.selectedOptions.length} ${this.selectedtext}`,this.dropdown.querySelector(".multiple-options").innerHTML=e}else{const e=this.selectedOptions.length>0?this.selectedOptions[0].data.text:this.placeholder,t=this.dropdown.querySelector(".current");t.innerHTML=e,this.selectedOptions.length>0&&(!this.selectedOptions[0].data.value||this.selectedOptions[0].data.value==="")?t.classList.add("empty-value"):t.classList.remove("empty-value")}}setSelected(e){let t=null;for(let s=0;s<this.options.length;s++)if(this.options[s].data.value===e){t=this.options[s];break}const i=t==null?void 0:t.element;i&&(i.click(),E(this.dropdown,"open"))}_renderItems(){const e=this.dropdown.querySelector("ul");this.options.forEach(t=>{t.data.value!==""&&(this.multiple&&this.config.showSelectedItems&&this._multipleListAdd(t),e.appendChild(this._renderItem(t)))})}_renderItem(e){const t=document.createElement("li");if(t.innerHTML=e.data.text,e.data.extra!==void 0&&t.appendChild(this._renderItemExtra(e.data.extra)),e.attributes.optgroup)T(t,"optgroup");else{t.setAttribute("data-value",e.data.value);const i=["option"];e.attributes.selected&&i.push("selected"),e.attributes.disabled&&i.push("disabled"),t.classList.add(...i),t.addEventListener("click",s=>this._onDropdownItemClicked(e,s))}return e.element=t,t}_renderItemExtra(e){const t=document.createElement("span");return t.innerHTML=e,T(t,"extra"),t}update(e=""){var i;let t=this;e!=""&&(t=e.target._niceSelect),f(i=t,_,Ze).call(i)}disable(){this.disabled||(this.disabled=!0,T(this.dropdown,"disabled"))}enable(){this.disabled&&(this.disabled=!1,E(this.dropdown,"disabled"))}clear(){f(this,_,pt).call(this),this.selectedOptions=[],this._renderSelectedItems(),this.update(),Fe(this.el)}destroy(){this.selectionList&&f(this,_,Le).call(this),this.dropdown&&(this.dropdown.remove(),this.el.classList.remove("hidden-select"))}focus(e=""){if(O(this.dropdown,"open")?this.multiple?e===this.dropdown.querySelector(".multiple-options")&&(E(this.dropdown,"open"),Ue(this.el)):(E(this.dropdown,"open"),Ue(this.el)):(T(this.dropdown,"open"),Bt(this.el)),O(this.dropdown,"open")){const i=this.dropdown.querySelector(".fct-nice-select-search");i&&(i.value="",i.focus());const s=this.dropdown.querySelector(".focus");s&&E(s,"focus");const n=this.dropdown.querySelector(".selected");n&&T(n,"focus"),this.dropdown.querySelectorAll("ul li").forEach(r=>r.style.display="")}else this.dropdown.focus()}_bindSearchEvent(){const e=this.dropdown.querySelector(".fct-nice-select-search");e&&(e.addEventListener("click",t=>t.stopPropagation()),e.addEventListener("input",t=>this._onSearchChanged(t)))}_onClicked(e){e.preventDefault(),this.focus(e.target)}_onDropdownItemClicked(e,t){const i=t.target;if(!O(i,"disabled")){if(this.multiple){let s;O(i,"selected")?(s=!1,E(i,"selected"),this.selectedOptions=this.selectedOptions.filter(n=>n.data!==e.data)):(s=!0,T(i,"selected"),this.selectedOptions.push(e)),e.data.selected=s,e.attributes.selected=s}else{this.dropdown.querySelectorAll("li.selected").forEach(n=>E(n,"selected")),T(i,"selected"),this.selectedOptions=[e];let s=this.options.find(n=>n.attributes.selected);s&&(s.data.selected=!1,s.attributes.selected=!1),e.data.selected=!0,e.attributes.selected=!0}this._renderSelectedItems(),f(this,_,ut).call(this),f(this,_,ft).call(this)}}setOnChange(e){this.onChange=e}_onClickedOutside(e){this.dropdown.contains(e.target)||(E(this.dropdown,"open"),Ue(this.el))}_onKeyPressed(e){const t=this.dropdown.querySelector(".focus"),i=O(this.dropdown,"open");if(e.keyCode===13)X(i?t:this.dropdown);else if(e.keyCode===40){if(!i)X(this.dropdown);else{const n=this._findNext(t);n&&(t&&E(t,"focus"),T(n,"focus"))}e.preventDefault()}else if(e.keyCode===38){if(!i)X(this.dropdown);else{const n=this._findPrev(t);n&&(t&&E(t,"focus"),T(n,"focus"))}e.preventDefault()}else if(e.keyCode===27&&i)X(this.dropdown);else if(e.keyCode===32&&i)return!1;const s=this.dropdown.querySelector(".focus");return s&&s.scrollIntoView({block:"center"}),!1}_findNext(e){let t=e?e.nextElementSibling:this.dropdown.querySelector(".list .option");for(;t;){if(!O(t,"disabled")&&t.style.display!=="none")return t;t=t.nextElementSibling}return null}_findPrev(e){let t=e?e.previousElementSibling:this.dropdown.querySelector(".list .option:last-child");for(;t;){if(!O(t,"disabled")&&t.style.display!=="none")return t;t=t.previousElementSibling}return null}_onSearchChanged(e){const t=e.target.value.toLowerCase();if(t==="")this.options.forEach(s=>{s.element&&(s.element.style.display="")});else if(O(this.dropdown,"open")){const s=new RegExp(t);this.options.forEach(n=>{n.element&&(n.element.style.display=s.test(n.data.text.toLowerCase())?"":"none")})}this.dropdown.querySelectorAll(".focus").forEach(s=>E(s,"focus"));const i=this._findNext(null);i&&T(i,"focus")}_triggerValidationMessage(e){e==="invalid"?(T(this.dropdown,"invalid"),E(this.dropdown,"valid")):(T(this.dropdown,"valid"),E(this.dropdown,"invalid"))}setOptions(e,t=null,i=null){if((t||i)&&(i=i??"value",t=t??"text",e=e.map(s=>({value:s[i],text:s[t],selected:s.selected||!1,disabled:s.disabled||!1,extra:s.extra}))),this.data=e||[],f(this,_,Ke).call(this,this.data),this.selectedOptions.length>0){const s=this.data.map(r=>r.value),n=this.selectedOptions.filter(r=>s.includes(r.data.value));n.length===0?this.clear():this.selectedOptions=n}return f(this,_,gt).call(this),f(this,_,Ze).call(this),this}_multipleListAdd(e){if(!this.multiple||e.data.disabled||e.data.value==""||!e.attributes.selected)return;if(this.selectionList==null)this.selectionList=document.createElement("ul"),this.selectionList.classList.add("select-selection-list"),this.el.after(this.selectionList);else if(this.selectionList.querySelector(`[data-value="${e.data.value}"]`)!=null)return;let t=document.createElement("li");t.classList.add("select-selection"),t.dataset.value=e.data.value;let i=` | |
| 1 | +var At=Object.defineProperty;var lt=c=>{throw TypeError(c)};var Ot=(c,e,t)=>e in c?At(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var Dt=(c,e)=>()=>(e||c((e={exports:{}}).exports,e),e.exports);var p=(c,e,t)=>Ot(c,typeof e!="symbol"?e+"":e,t),je=(c,e,t)=>e.has(c)||lt("Cannot "+t);var h=(c,e,t)=>(je(c,e,"read from private field"),t?t.call(c):e.get(c)),g=(c,e,t)=>e.has(c)?lt("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(c):e.set(c,t),m=(c,e,t,i)=>(je(c,e,"write to private field"),i?i.call(c,t):e.set(c,t),t),f=(c,e,t)=>(je(c,e,"access private method"),t);import{C as v,P as Pt}from"./chunks/payment-loader.js?ver=1.6.5";import{U as te}from"./chunks/Url.js?ver=1.6.5";import{u as rt,t as at}from"./chunks/timezone.js?ver=1.6.5";import{d as W}from"./chunks/dayjs.min.js?ver=1.6.5";import"./chunks/Str.js?ver=1.6.5";import"./chunks/Arr.js?ver=1.6.5";import"./chunks/vue-router.js?ver=1.6.5";import"./chunks/vue.esm-bundler.js?ver=1.6.5";var Ft=Dt((Yt,qe)=>{class Wt{constructor(e,t={}){this.element=e,this.disabled=!1;const i=this.parseSelectElement();this.options=t.options||i||[];const s=t.placeholder===!1;this.searchPlaceholder="",this.placeholder="",s||(this.placeholder=t.placeholder||this.getPlaceholderFromSelect()||"Select an option...",this.searchPlaceholder=t.searchPlaceholder||"Type to search..."),this.clearable=t.clearable!==!1,this.onChange=t.onChange||(()=>{}),this.onSearch=t.onSearch||(()=>{});const n=this.getInitialSelection();this.selectedValue=n.value,this.selectedText=n.text,this.filteredOptions=[...this.options],this.highlightedIndex=-1,this.isOpen=!1,this.searchTerm="",this.init()}init(){this.createElements(),this.bindEvents(),this.render(),this.selectedValue&&(this.input.value=this.selectedText)}parseSelectElement(){if(this.element.tagName!=="SELECT")return null;const e=[];return this.element.querySelectorAll("option").forEach(i=>{(i.value||i.textContent.trim())&&e.push({value:i.value||i.textContent.trim(),text:i.textContent.trim()})}),e}getPlaceholderFromSelect(){if(this.element.tagName!=="SELECT")return null;if(this.element.hasAttribute("data-placeholder"))return this.element.getAttribute("data-placeholder");const e=this.element.querySelector("option");return e&&!e.value&&e.textContent.trim()?e.textContent.trim():null}getInitialSelection(){if(this.element.tagName!=="SELECT")return{value:null,text:""};const e=this.element.querySelector("option[selected]")||this.element.options[this.element.selectedIndex];return e&&e.value?{value:e.value,text:e.textContent.trim()}:{value:null,text:""}}createElements(){const e=this.element.tagName==="SELECT";let t,i=e&&this.element.parentNode.classList.contains("fct-custom-searchable-select"),s=null;if(i){t=this.element.parentNode;const n=t.querySelector(".fct-custom-searchable-select-container");n&&t.removeChild(n),s=t.querySelector("input")}else t=document.createElement("div"),t.className="fct-custom-searchable-select",e?(this.element.parentNode.insertBefore(t,this.element),t.appendChild(this.element)):(t.classList.add("custom-select-wrapper"),this.element.appendChild(t));e?(this.originalElement=this.element.cloneNode(!0),this.element.style.display="none"):this.originalElement=null,this.selectContainer=document.createElement("div"),this.selectContainer.className="fct-custom-searchable-select-container",this.input=document.createElement("input"),this.input.className="select-input",this.input.type="text",this.input.placeholder=this.placeholder+"*",this.input.addEventListener("keypress",n=>{this.isOpen||n.preventDefault()}),this.originalElement&&(this.originalElement.disabled&&this.disable(),this.originalElement.required&&(this.input.required=!0),this.originalElement.name&&(s?this.hiddenInput=s:(this.hiddenInput=document.createElement("input"),t.appendChild(this.hiddenInput)),this.hiddenInput.type="hidden",this.hiddenInput.name=this.originalElement.name)),this.arrow=document.createElement("div"),this.arrow.className="select-arrow",this.clearBtn=document.createElement("button"),this.clearBtn.className="clear-btn",this.clearBtn.innerHTML="×",this.clearBtn.type="button",this.dropdown=document.createElement("div"),this.dropdown.className="select-dropdown",this.selectContainer.appendChild(this.input),this.clearable&&this.selectContainer.appendChild(this.clearBtn),this.selectContainer.appendChild(this.arrow),this.selectContainer.appendChild(this.dropdown),t.appendChild(this.selectContainer),this.hiddenInput&&(this.hiddenInput.value=this.selectedValue||""),this.wrapper=t}bindEvents(){this.selectContainer.addEventListener("click",e=>{e.target!==this.clearBtn&&this.toggle()}),this.clearBtn.addEventListener("click",e=>{e.stopPropagation(),this.clear()}),this.input.addEventListener("focus",()=>{this.isOpen||this.open()}),this.input.addEventListener("input",e=>{this.searchTerm=e.target.value,this.filter(),this.onSearch(this.searchTerm)}),this.input.addEventListener("keydown",e=>{this.handleKeydown(e)}),this.dropdown.addEventListener("click",e=>{const t=e.target.closest(".select-option");if(t&&!t.classList.contains("no-options")){const i=t.dataset.value,s=t.textContent;this.select(i,s),this.close()}}),this.outsideClickHandler=e=>{this.element.contains(e.target)||this.close()},document.addEventListener("click",this.outsideClickHandler)}handleKeydown(e){switch(e.key){case"ArrowDown":e.preventDefault(),this.highlightNext();break;case"ArrowUp":e.preventDefault(),this.highlightPrev();break;case"Enter":if(e.preventDefault(),this.highlightedIndex>=0&&this.filteredOptions[this.highlightedIndex]){const t=this.filteredOptions[this.highlightedIndex];this.select(t.value,t.text)}break;case"Escape":this.close();break;case"Backspace":this.selectedValue&&this.clear();break}}open(){this.isOpen=!0,this.selectContainer.classList.add("open"),this.input.placeholder=this.searchPlaceholder,this.highlightedIndex=-1,this.input.value="",this.filter(),setTimeout(()=>this.input.focus(),0)}close(){this.isOpen=!1,this.selectContainer.classList.remove("open"),this.input.placeholder=this.placeholder,this.searchTerm="",this.input.value=this.selectedText,this.highlightedIndex=-1}toggle(){this.isOpen?this.close():this.open()}filter(){const e=this.searchTerm.toLowerCase();this.filteredOptions=this.options.filter(t=>t.text.toLowerCase().includes(e)),this.highlightedIndex=-1,this.renderOptions()}highlightNext(){this.filteredOptions.length!==0&&(this.highlightedIndex=Math.min(this.highlightedIndex+1,this.filteredOptions.length-1),this.updateHighlight())}highlightPrev(){this.filteredOptions.length!==0&&(this.highlightedIndex=Math.max(this.highlightedIndex-1,0),this.updateHighlight())}updateHighlight(){var t;const e=this.dropdown.querySelectorAll(".select-option:not(.no-options)");e.forEach((i,s)=>{i.classList.toggle("highlighted",s===this.highlightedIndex)}),this.highlightedIndex>=0&&((t=e[this.highlightedIndex])==null||t.scrollIntoView({block:"nearest"}))}select(e,t){this.selectedValue=e,this.selectedText=t,this.input.value=t,this.hiddenInput&&(this.hiddenInput.value=e||""),this.originalElement&&(this.originalElement.value=e||""),setTimeout(()=>{this.onChange(e,t),this.close()},10)}clear(){return this.select(null,""),this}addOption(e,t){const i={value:e,text:t};return this.options.push(i),(!this.isOpen||!this.searchTerm)&&this.filteredOptions.push(i),this.render(),this}removeOption(e){return this.options=this.options.filter(t=>t.value!==e),this.filteredOptions=this.filteredOptions.filter(t=>t.value!==e),this.selectedValue===e&&this.clear(),this.render(),this}setOptions(e,t=null,i=null){return(t||i)&&(i=i??"value",t=t??"text",e=e.map(s=>({value:s[i],text:s[t]}))),this.options=e||[],this.filteredOptions=[...this.options],this.selectedValue&&!this.options.find(s=>s.value===this.selectedValue)&&this.clear(),this.render(),this}getValue(){return this.selectedValue}getText(){return this.selectedText}getSelected(){return{value:this.selectedValue,text:this.selectedText}}setValue(e){const t=this.options.find(i=>i.value===e);return t?this.select(t.value,t.text):this.clear(),this}disable(){return this.input.disabled=!0,this.disabled=!0,this.selectContainer.classList.add("disabled"),this.element.classList.add("disabled"),this}enable(){return this.input.disabled=!1,this.disabled=!1,this.selectContainer.classList.remove("disabled"),this.element.classList.remove("disabled"),this}render(){this.renderOptions()}renderOptions(){if(this.dropdown.innerHTML="",this.filteredOptions.length===0){const e=document.createElement("div");e.className="select-option no-options",e.textContent=this.searchTerm?"No matches found":"No options available",this.dropdown.appendChild(e);return}this.filteredOptions.forEach((e,t)=>{const i=document.createElement("div");i.className="select-option",i.dataset.value=e.value,i.textContent=e.text,e.value===this.selectedValue&&i.classList.add("selected"),this.dropdown.appendChild(i)})}destroy(){document.removeEventListener("click",this.outsideClickHandler),this.element.innerHTML="",this.selectContainer.remove()}}const Te={init:function(c,e={}){const t=typeof c=="string"?document.querySelector(c):c;if(!t)throw new Error("Element not found");return new Wt(t,e)}};typeof qe<"u"&&qe.exports?qe.exports=Te:typeof define=="function"&&define.amd?define(function(){return Te}):window.customSelect=Te;const ie=(c,e,t={})=>{let i;e==="click"?i=MouseEvent:e==="change"?i=Event:e.includes("focus")?i=FocusEvent:i=UIEvent;const s=new i(e,{bubbles:!0,cancelable:!1,...t});c.dispatchEvent(s)},X=c=>ie(c,"click"),Fe=c=>ie(c,"change"),Mt=c=>ie(c,"focusin"),Nt=c=>ie(c,"focusout"),Bt=c=>ie(c,"modalopen"),Ue=c=>ie(c,"modalclose"),j=(c,e)=>c[e]!==void 0?c[e]:c.getAttribute(e),O=(c,e)=>c==null?void 0:c.classList.contains(e),T=(c,e)=>c==null?void 0:c.classList.add(e),E=(c,e)=>c==null?void 0:c.classList.remove(e),Vt={data:null,searchable:!0,showSelectedItems:!0,placeholder:"Select an option",searchtext:"Search",selectedtext:"selected",hideSelect:!0,onChange:null};var _,$e,Ke,ot,ct,dt,ht,ut,pt,Ze,ft,Le,gt;class H{constructor(e,t={}){g(this,_);if(!e)throw new Error("No element provided to NiceSelect");if(!(e instanceof Element))throw new Error("Invalid element provided to NiceSelect - must be a valid DOM element");const i=[];e.tagName==="SELECT"&&e.querySelectorAll("option").forEach(n=>{(n.value||n.textContent.trim())&&i.push({value:n.value||n.textContent.trim(),text:n.textContent.trim()})}),t.data==null&&(t.data=i),this.el=e,this.el._niceSelect=this,this.config={...Vt,...t},this.data=this.config.data,this.selectedOptions=[],this.placeholder=j(this.el,"placeholder")||this.config.placeholder,this.searchtext=j(this.el,"searchtext")||this.config.searchtext,this.selectedtext=j(this.el,"selectedtext")||this.config.selectedtext,this.dropdown=null,this.selectionList=null,this.multiple=j(this.el,"multiple"),this.disabled=j(this.el,"disabled"),this.onChange=this.config.onChange,f(this,_,$e).call(this),f(this,_,dt).call(this)}_renderSelectedItems(){if(this.multiple){let e="";window.getComputedStyle(this.dropdown).width==="auto"||this.selectedOptions.length<2?(this.selectedOptions.forEach((t,i,s)=>{let n=t.data.text;i!==s.length-1&&(n+=", "),e+=`<span class="current">${n||this.placeholder}</span>`}),e=e||this.placeholder):e=`${this.selectedOptions.length} ${this.selectedtext}`,this.dropdown.querySelector(".multiple-options").innerHTML=e}else{const e=this.selectedOptions.length>0?this.selectedOptions[0].data.text:this.placeholder,t=this.dropdown.querySelector(".current");t.innerHTML=e,this.selectedOptions.length>0&&(!this.selectedOptions[0].data.value||this.selectedOptions[0].data.value==="")?t.classList.add("empty-value"):t.classList.remove("empty-value")}}setSelected(e){let t=null;for(let s=0;s<this.options.length;s++)if(this.options[s].data.value===e){t=this.options[s];break}const i=t==null?void 0:t.element;i&&(i.click(),E(this.dropdown,"open"))}_renderItems(){const e=this.dropdown.querySelector("ul");this.options.forEach(t=>{t.data.value!==""&&(this.multiple&&this.config.showSelectedItems&&this._multipleListAdd(t),e.appendChild(this._renderItem(t)))})}_renderItem(e){const t=document.createElement("li");if(t.innerHTML=e.data.text,e.data.extra!==void 0&&t.appendChild(this._renderItemExtra(e.data.extra)),e.attributes.optgroup)T(t,"optgroup");else{t.setAttribute("data-value",e.data.value);const i=["option"];e.attributes.selected&&i.push("selected"),e.attributes.disabled&&i.push("disabled"),t.classList.add(...i),t.addEventListener("click",s=>this._onDropdownItemClicked(e,s))}return e.element=t,t}_renderItemExtra(e){const t=document.createElement("span");return t.innerHTML=e,T(t,"extra"),t}update(e=""){var i;let t=this;e!=""&&(t=e.target._niceSelect),f(i=t,_,Ze).call(i)}disable(){this.disabled||(this.disabled=!0,T(this.dropdown,"disabled"))}enable(){this.disabled&&(this.disabled=!1,E(this.dropdown,"disabled"))}clear(){f(this,_,pt).call(this),this.selectedOptions=[],this._renderSelectedItems(),this.update(),Fe(this.el)}destroy(){this.selectionList&&f(this,_,Le).call(this),this.dropdown&&(this.dropdown.remove(),this.el.classList.remove("hidden-select"))}focus(e=""){if(O(this.dropdown,"open")?this.multiple?e===this.dropdown.querySelector(".multiple-options")&&(E(this.dropdown,"open"),Ue(this.el)):(E(this.dropdown,"open"),Ue(this.el)):(T(this.dropdown,"open"),Bt(this.el)),O(this.dropdown,"open")){const i=this.dropdown.querySelector(".fct-nice-select-search");i&&(i.value="",i.focus());const s=this.dropdown.querySelector(".focus");s&&E(s,"focus");const n=this.dropdown.querySelector(".selected");n&&T(n,"focus"),this.dropdown.querySelectorAll("ul li").forEach(r=>r.style.display="")}else this.dropdown.focus()}_bindSearchEvent(){const e=this.dropdown.querySelector(".fct-nice-select-search");e&&(e.addEventListener("click",t=>t.stopPropagation()),e.addEventListener("input",t=>this._onSearchChanged(t)))}_onClicked(e){e.preventDefault(),this.focus(e.target)}_onDropdownItemClicked(e,t){const i=t.target;if(!O(i,"disabled")){if(this.multiple){let s;O(i,"selected")?(s=!1,E(i,"selected"),this.selectedOptions=this.selectedOptions.filter(n=>n.data!==e.data)):(s=!0,T(i,"selected"),this.selectedOptions.push(e)),e.data.selected=s,e.attributes.selected=s}else{this.dropdown.querySelectorAll("li.selected").forEach(n=>E(n,"selected")),T(i,"selected"),this.selectedOptions=[e];let s=this.options.find(n=>n.attributes.selected);s&&(s.data.selected=!1,s.attributes.selected=!1),e.data.selected=!0,e.attributes.selected=!0}this._renderSelectedItems(),f(this,_,ut).call(this),f(this,_,ft).call(this)}}setOnChange(e){this.onChange=e}_onClickedOutside(e){this.dropdown.contains(e.target)||(E(this.dropdown,"open"),Ue(this.el))}_onKeyPressed(e){const t=this.dropdown.querySelector(".focus"),i=O(this.dropdown,"open");if(e.keyCode===13)X(i?t:this.dropdown);else if(e.keyCode===40){if(!i)X(this.dropdown);else{const n=this._findNext(t);n&&(t&&E(t,"focus"),T(n,"focus"))}e.preventDefault()}else if(e.keyCode===38){if(!i)X(this.dropdown);else{const n=this._findPrev(t);n&&(t&&E(t,"focus"),T(n,"focus"))}e.preventDefault()}else if(e.keyCode===27&&i)X(this.dropdown);else if(e.keyCode===32&&i)return!1;const s=this.dropdown.querySelector(".focus");return s&&s.scrollIntoView({block:"center"}),!1}_findNext(e){let t=e?e.nextElementSibling:this.dropdown.querySelector(".list .option");for(;t;){if(!O(t,"disabled")&&t.style.display!=="none")return t;t=t.nextElementSibling}return null}_findPrev(e){let t=e?e.previousElementSibling:this.dropdown.querySelector(".list .option:last-child");for(;t;){if(!O(t,"disabled")&&t.style.display!=="none")return t;t=t.previousElementSibling}return null}_onSearchChanged(e){const t=e.target.value.toLowerCase();if(t==="")this.options.forEach(s=>{s.element&&(s.element.style.display="")});else if(O(this.dropdown,"open")){const s=new RegExp(t);this.options.forEach(n=>{n.element&&(n.element.style.display=s.test(n.data.text.toLowerCase())?"":"none")})}this.dropdown.querySelectorAll(".focus").forEach(s=>E(s,"focus"));const i=this._findNext(null);i&&T(i,"focus")}_triggerValidationMessage(e){e==="invalid"?(T(this.dropdown,"invalid"),E(this.dropdown,"valid")):(T(this.dropdown,"valid"),E(this.dropdown,"invalid"))}setOptions(e,t=null,i=null){if((t||i)&&(i=i??"value",t=t??"text",e=e.map(s=>({value:s[i],text:s[t],selected:s.selected||!1,disabled:s.disabled||!1,extra:s.extra}))),this.data=e||[],f(this,_,Ke).call(this,this.data),this.selectedOptions.length>0){const s=this.data.map(r=>r.value),n=this.selectedOptions.filter(r=>s.includes(r.data.value));n.length===0?this.clear():this.selectedOptions=n}return f(this,_,gt).call(this),f(this,_,Ze).call(this),this}_multipleListAdd(e){if(!this.multiple||e.data.disabled||e.data.value==""||!e.attributes.selected)return;if(this.selectionList==null)this.selectionList=document.createElement("ul"),this.selectionList.classList.add("select-selection-list"),this.el.after(this.selectionList);else if(this.selectionList.querySelector(`[data-value="${e.data.value}"]`)!=null)return;let t=document.createElement("li");t.classList.add("select-selection"),t.dataset.value=e.data.value;let i=` | |
| 2 | 2 | <button type="button" class="small remove-select-selection"> |
| 3 | 3 | <span class='remove-select-selection'>×</span> |
| 4 | 4 | </button> |
| 5 | 5 | `;i+=`<span class='selected-name'>${e.data.text}</span>`,t.innerHTML=i,this.selectionList.appendChild(t),t.querySelectorAll(".remove-select-selection").forEach(s=>s.addEventListener("click",this._multipleListRemove.bind(this)))}_multipleListRemove(e){if(this.selectionList==null||(e.target!=null&&(e=e.target),e.matches==null||!e.matches(".remove-select-selection")))return;let t=e.closest("li.select-selection"),i=this.options.find(s=>s.data.value===t.dataset.value).element;i&&i.matches(".selected")&&i.click()}}_=new WeakSet,$e=function(e=!0){this.data?f(this,_,Ke).call(this,this.data):f(this,_,ot).call(this,e),this.el.classList.remove("hidden-select"),f(this,_,ct).call(this),this.config.hideSelect&&this.el.classList.add("hidden-select"),f(this,_,ht).call(this)},Ke=function(e){this.options=e.map(t=>({data:t,attributes:{selected:!!t.selected,disabled:!!t.disabled,optgroup:t.value==="optgroup"}}))},ot=function(e){const t=Array.from(this.el.querySelectorAll("option,optgroup")),i=[],s=[];this.data=t.map(n=>{let r,l=n.selected;e&&n.selected&&!n.defaultSelected&&(l=!1),n.tagName==="OPTGROUP"?r={text:n.label,value:"optgroup"}:r={text:n.dataset.display??n.innerText,value:n.value,extra:n.dataset.extra,selected:l,disabled:n.disabled};const o={selected:l,disabled:n.disabled,optgroup:n.tagName==="OPTGROUP"},a={data:r,attributes:o,element:null};return i.push(a),o.selected&&s.push(a),r}),this.options=i,this.selectedOptions=s},ct=function(){const e=["fct-nice-select",j(this.el,"class")||"",this.disabled?"disabled":"",this.multiple?"has-multiple":""].filter(Boolean),t=this.config.searchable?` |