preline
Version:
Preline UI is an open-source set of prebuilt UI components based on the utility-first Tailwind CSS framework.
1 lines • 34 kB
JavaScript
var t={189:(t,e,s)=>{s.d(e,{fp:()=>l,lP:()=>i});const i={auto:"auto","auto-start":"auto-start","auto-end":"auto-end",top:"top","top-left":"top-start","top-right":"top-end",bottom:"bottom","bottom-left":"bottom-start","bottom-right":"bottom-end",right:"right","right-start":"right-start","right-end":"right-end",left:"left","left-start":"left-start","left-end":"left-end"},l=["ArrowUp","ArrowLeft","ArrowDown","ArrowRight","Home","End","Escape","Enter","Tab"]},615:(t,e,s)=>{s.d(e,{A:()=>i});class i{constructor(t,e,s){this.el=t,this.options=e,this.events=s,this.el=t,this.options=e,this.events={}}createCollection(t,e){var s;t.push({id:(null===(s=null==e?void 0:e.el)||void 0===s?void 0:s.id)||t.length+1,element:e})}fireEvent(t,e=null){if(this.events.hasOwnProperty(t))return this.events[t](e)}on(t,e){this.events[t]=e}}},926:(t,e,s)=>{s.d(e,{JD:()=>o,PR:()=>i,en:()=>r,fc:()=>a,sg:()=>l,yd:()=>n});const i=(t,e,s="auto",i=10,l=null)=>{const o=e.getBoundingClientRect(),n=l?l.getBoundingClientRect():null,a=window.innerHeight,r=n?o.top-n.top:o.top,d=(l?n.bottom:a)-o.bottom,h=t.clientHeight+i;return"bottom"===s?d>=h:"top"===s?r>=h:r>=h||d>=h},l=(t,e=200)=>{let s;return(...i)=>{clearTimeout(s),s=setTimeout((()=>{t.apply(void 0,i)}),e)}},o=(t,e,s=null)=>{const i=new CustomEvent(t,{detail:{payload:s},bubbles:!0,cancelable:!0,composed:!1});e.dispatchEvent(i)},n=(t,e)=>{const s=()=>{e(),t.removeEventListener("transitionend",s,!0)},i=window.getComputedStyle(t),l=i.getPropertyValue("transition-duration");"none"!==i.getPropertyValue("transition-property")&&parseFloat(l)>0?t.addEventListener("transitionend",s,!0):e()},a=t=>{const e=document.createElement("template");return t=t.trim(),e.innerHTML=t,e.content.firstChild},r=(t,e,s=" ",i="add")=>{t.split(s).forEach((t=>"add"===i?e.classList.add(t):e.classList.remove(t)))}}},e={};function s(i){var l=e[i];if(void 0!==l)return l.exports;var o=e[i]={exports:{}};return t[i](o,o.exports,s),o.exports}s.d=(t,e)=>{for(var i in e)s.o(e,i)&&!s.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},s.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e);var i={};s.d(i,{A:()=>d});var l=s(926),o=s(615),n=s(189),a=function(t,e,s,i){return new(s||(s=Promise))((function(l,o){function n(t){try{r(i.next(t))}catch(t){o(t)}}function a(t){try{r(i.throw(t))}catch(t){o(t)}}function r(t){var e;t.done?l(t.value):(e=t.value,e instanceof s?e:new s((function(t){t(e)}))).then(n,a)}r((i=i.apply(t,e||[])).next())}))};class r extends o.A{constructor(t,e){var s,i;super(t,e),this.optionId=0;const l=t.getAttribute("data-hs-select"),o=l?JSON.parse(l):{},n=Object.assign(Object.assign({},o),e),a={items:", ",betweenItemsAndCounter:"and"};this.value=(null==n?void 0:n.value)||this.el.value||null,this.placeholder=(null==n?void 0:n.placeholder)||"Select...",this.hasSearch=(null==n?void 0:n.hasSearch)||!1,this.preventSearchFocus=(null==n?void 0:n.preventSearchFocus)||!1,this.mode=(null==n?void 0:n.mode)||"default",this.viewport=void 0!==(null==n?void 0:n.viewport)?document.querySelector(null==n?void 0:n.viewport):null,this.isOpened=Boolean(null==n?void 0:n.isOpened)||!1,this.isMultiple=this.el.hasAttribute("multiple")||!1,this.isDisabled=this.el.hasAttribute("disabled")||!1,this.selectedItems=[],this.apiUrl=(null==n?void 0:n.apiUrl)||null,this.apiQuery=(null==n?void 0:n.apiQuery)||null,this.apiOptions=(null==n?void 0:n.apiOptions)||null,this.apiSearchQueryKey=(null==n?void 0:n.apiSearchQueryKey)||null,this.apiDataPart=(null==n?void 0:n.apiDataPart)||null,this.apiFieldsMap=(null==n?void 0:n.apiFieldsMap)||null,this.apiIconTag=(null==n?void 0:n.apiIconTag)||null,this.wrapperClasses=(null==n?void 0:n.wrapperClasses)||null,this.toggleTag=(null==n?void 0:n.toggleTag)||null,this.toggleClasses=(null==n?void 0:n.toggleClasses)||null,this.toggleSeparators=null!==(s=Object.assign(Object.assign({},a),null==n?void 0:n.toggleSeparators))&&void 0!==s?s:a,this.toggleCountText=(null==n?void 0:n.toggleCountText)||null,this.toggleCountTextMinItems=(null==n?void 0:n.toggleCountTextMinItems)||1,this.toggleCountTextMode=(null==n?void 0:n.toggleCountTextMode)||"countAfterLimit",this.tagsItemTemplate=(null==n?void 0:n.tagsItemTemplate)||null,this.tagsItemClasses=(null==n?void 0:n.tagsItemClasses)||null,this.tagsInputId=(null==n?void 0:n.tagsInputId)||null,this.tagsInputClasses=(null==n?void 0:n.tagsInputClasses)||null,this.dropdownTag=(null==n?void 0:n.dropdownTag)||null,this.dropdownClasses=(null==n?void 0:n.dropdownClasses)||null,this.dropdownDirectionClasses=(null==n?void 0:n.dropdownDirectionClasses)||null,this.dropdownSpace=(null==n?void 0:n.dropdownSpace)||10,this.dropdownPlacement=(null==n?void 0:n.dropdownPlacement)||null,this.dropdownScope=(null==n?void 0:n.dropdownScope)||"parent",this.searchTemplate=(null==n?void 0:n.searchTemplate)||null,this.searchWrapperTemplate=(null==n?void 0:n.searchWrapperTemplate)||null,this.searchWrapperClasses=(null==n?void 0:n.searchWrapperClasses)||"bg-white p-2 sticky top-0",this.searchId=(null==n?void 0:n.searchId)||null,this.searchLimit=(null==n?void 0:n.searchLimit)||1/0,this.isSearchDirectMatch=void 0===(null==n?void 0:n.isSearchDirectMatch)||(null==n?void 0:n.isSearchDirectMatch),this.searchClasses=(null==n?void 0:n.searchClasses)||"block w-[calc(100%-2rem)] text-sm border-gray-200 rounded-md focus:border-blue-500 focus:ring-blue-500 dark:bg-neutral-900 dark:border-neutral-700 dark:text-neutral-400 py-2 px-3 my-2 mx-4",this.searchPlaceholder=(null==n?void 0:n.searchPlaceholder)||"Search...",this.searchNoResultTemplate=(null==n?void 0:n.searchNoResultTemplate)||"<span></span>",this.searchNoResultText=(null==n?void 0:n.searchNoResultText)||"No results found",this.searchNoResultClasses=(null==n?void 0:n.searchNoResultClasses)||"px-4 text-sm text-gray-800 dark:text-neutral-200",this.optionTemplate=(null==n?void 0:n.optionTemplate)||null,this.optionTag=(null==n?void 0:n.optionTag)||null,this.optionClasses=(null==n?void 0:n.optionClasses)||null,this.extraMarkup=(null==n?void 0:n.extraMarkup)||null,this.descriptionClasses=(null==n?void 0:n.descriptionClasses)||null,this.iconClasses=(null==n?void 0:n.iconClasses)||null,this.isAddTagOnEnter=null===(i=null==n?void 0:n.isAddTagOnEnter)||void 0===i||i,this.animationInProcess=!1,this.selectOptions=[],this.remoteOptions=[],this.tagsInputHelper=null,this.init()}setValue(t){this.value=t,this.clearSelections(),Array.isArray(t)?(this.toggleTextWrapper.innerHTML=this.value.length?this.stringFromValue():this.placeholder,this.unselectMultipleItems(),this.selectMultipleItems()):(this.setToggleTitle(),this.toggle.querySelector("[data-icon]")&&this.setToggleIcon(),this.toggle.querySelector("[data-title]")&&this.setToggleTitle(),this.selectSingleItem())}init(){this.createCollection(window.$hsSelectCollection,this),this.build()}build(){if(this.el.style.display="none",this.el.children&&Array.from(this.el.children).filter((t=>t.value&&""!==t.value)).forEach((t=>{const e=t.getAttribute("data-hs-select-option");this.selectOptions=[...this.selectOptions,{title:t.textContent,val:t.value,disabled:t.disabled,options:"undefined"!==e?JSON.parse(e):null}]})),this.isMultiple){const t=Array.from(this.el.children).filter((t=>t.selected));if(t){const e=[];t.forEach((t=>{e.push(t.value)})),this.value=e}}this.buildWrapper(),"tags"===this.mode?this.buildTags():this.buildToggle(),this.buildDropdown(),this.extraMarkup&&this.buildExtraMarkup()}buildWrapper(){this.wrapper=document.createElement("div"),this.wrapper.classList.add("hs-select","relative"),"tags"===this.mode&&this.wrapper.addEventListener("click",(t=>{t.target.closest("[data-hs-select-dropdown]")||t.target.closest("[data-tag-value]")||this.tagsInput.focus()})),this.wrapperClasses&&(0,l.en)(this.wrapperClasses,this.wrapper),this.el.before(this.wrapper),this.wrapper.append(this.el)}buildExtraMarkup(){const t=t=>{const e=(0,l.fc)(t);return this.wrapper.append(e),e},e=t=>{t.classList.contains("--prevent-click")||t.addEventListener("click",(t=>{t.stopPropagation(),this.toggleFn()}))};if(Array.isArray(this.extraMarkup))this.extraMarkup.forEach((s=>{const i=t(s);e(i)}));else{const s=t(this.extraMarkup);e(s)}}buildToggle(){var t,e;let s,i;this.toggleTextWrapper=document.createElement("span"),this.toggleTextWrapper.classList.add("truncate"),this.toggle=(0,l.fc)(this.toggleTag||"<div></div>"),s=this.toggle.querySelector("[data-icon]"),i=this.toggle.querySelector("[data-title]"),!this.isMultiple&&s&&this.setToggleIcon(),!this.isMultiple&&i&&this.setToggleTitle(),this.isMultiple?this.toggleTextWrapper.innerHTML=this.value.length?this.stringFromValue():this.placeholder:this.toggleTextWrapper.innerHTML=(null===(t=this.getItemByValue(this.value))||void 0===t?void 0:t.title)||this.placeholder,i||this.toggle.append(this.toggleTextWrapper),this.toggleClasses&&(0,l.en)(this.toggleClasses,this.toggle),this.isDisabled&&this.toggle.classList.add("disabled"),this.wrapper&&this.wrapper.append(this.toggle),(null===(e=this.toggle)||void 0===e?void 0:e.ariaExpanded)&&(this.isOpened?this.toggle.ariaExpanded="true":this.toggle.ariaExpanded="false"),this.toggle.addEventListener("click",(()=>{if(this.isDisabled)return!1;this.toggleFn()}))}setToggleIcon(){var t;const e=this.getItemByValue(this.value),s=this.toggle.querySelector("[data-icon]");if(s.innerHTML="",s){const i=(0,l.fc)(this.apiUrl&&this.apiIconTag?this.apiIconTag||"":(null===(t=null==e?void 0:e.options)||void 0===t?void 0:t.icon)||"");this.value&&this.apiUrl&&this.apiIconTag&&e[this.apiFieldsMap.icon]&&(i.src=e[this.apiFieldsMap.icon]||""),s.append(i),i&&(null==i?void 0:i.src)?s.classList.remove("hidden"):s.classList.add("hidden")}}setToggleTitle(){var t;const e=this.toggle.querySelector("[data-title]");if(e.classList.add("truncate"),e.innerHTML="",e){const s=(null===(t=this.getItemByValue(this.value))||void 0===t?void 0:t.title)||this.placeholder;e.innerHTML=s,this.toggle.append(e)}}buildTags(){this.isDisabled&&this.wrapper.classList.add("disabled"),this.buildTagsInput(),this.setTagsItems()}reassignTagsInputPlaceholder(t){this.tagsInput.placeholder=t,this.tagsInputHelper.innerHTML=t,this.calculateInputWidth()}buildTagsItem(t){var e,s,i,o;const n=this.getItemByValue(t);let a,r,d,h;const p=document.createElement("div");if(p.setAttribute("data-tag-value",t),this.tagsItemClasses&&(0,l.en)(this.tagsItemClasses,p),this.tagsItemTemplate&&(a=(0,l.fc)(this.tagsItemTemplate),p.append(a)),(null===(e=null==n?void 0:n.options)||void 0===e?void 0:e.icon)||this.apiIconTag){const t=(0,l.fc)(this.apiUrl&&this.apiIconTag?this.apiIconTag:null===(s=null==n?void 0:n.options)||void 0===s?void 0:s.icon);this.apiUrl&&this.apiIconTag&&n[this.apiFieldsMap.icon]&&(t.src=n[this.apiFieldsMap.icon]||""),h=a?a.querySelector("[data-icon]"):document.createElement("span"),h.append(t),a||p.append(h)}!a||!a.querySelector("[data-icon]")||(null===(i=null==n?void 0:n.options)||void 0===i?void 0:i.icon)||this.apiUrl||this.apiIconTag||n[null===(o=this.apiFieldsMap)||void 0===o?void 0:o.icon]||a.querySelector("[data-icon]").classList.add("hidden"),r=a?a.querySelector("[data-title]"):document.createElement("span"),r.textContent=n.title||"",a||p.append(r),a?d=a.querySelector("[data-remove]"):(d=document.createElement("span"),d.textContent="X",p.append(d)),d.addEventListener("click",(()=>{this.value=this.value.filter((e=>e!==t)),this.selectedItems=this.selectedItems.filter((e=>e!==t)),this.value.length||this.reassignTagsInputPlaceholder(this.placeholder),this.unselectMultipleItems(),this.selectMultipleItems(),p.remove()})),this.wrapper.append(p)}getItemByValue(t){return this.apiUrl?this.remoteOptions.find((e=>e[this.apiFieldsMap.title]===t)):this.selectOptions.find((e=>e.val===t))}setTagsItems(){this.value&&this.value.forEach((t=>{this.selectedItems.includes(t)||this.buildTagsItem(t),this.selectedItems=this.selectedItems.includes(t)?this.selectedItems:[...this.selectedItems,t]}))}buildTagsInput(){this.tagsInput=document.createElement("input"),this.tagsInputId&&(this.tagsInput.id=this.tagsInputId),this.tagsInputClasses&&(0,l.en)(this.tagsInputClasses,this.tagsInput),this.tagsInput.addEventListener("focus",(()=>{this.isOpened||this.open()})),this.tagsInput.addEventListener("input",(()=>this.calculateInputWidth())),this.tagsInput.addEventListener("input",(0,l.sg)((t=>this.searchOptions(t.target.value)))),this.tagsInput.addEventListener("keydown",(t=>{if("Enter"===t.key&&this.isAddTagOnEnter){const e=t.target.value;if(this.selectOptions.find((t=>t.val===e)))return!1;this.addSelectOption(e,e),this.buildOption(e,e),this.dropdown.querySelector(`[data-value="${e}"]`).click(),this.resetTagsInputField()}})),this.wrapper.append(this.tagsInput),setTimeout((()=>{this.adjustInputWidth(),this.reassignTagsInputPlaceholder(this.value.length?"":this.placeholder)}))}buildDropdown(){this.dropdown=(0,l.fc)(this.dropdownTag||"<div></div>"),this.dropdown.setAttribute("data-hs-select-dropdown",""),"parent"===this.dropdownScope&&this.dropdown.classList.add("absolute","top-full"),this.dropdown.role="listbox",this.dropdown.tabIndex=-1,this.dropdown.ariaOrientation="vertical",this.isOpened||this.dropdown.classList.add("hidden"),this.dropdownClasses&&(0,l.en)(this.dropdownClasses,this.dropdown),this.wrapper&&this.wrapper.append(this.dropdown),this.dropdown&&this.hasSearch&&this.buildSearch(),this.selectOptions&&this.selectOptions.forEach(((t,e)=>this.buildOption(t.title,t.val,t.disabled,t.selected,t.options,`${e}`))),this.apiUrl&&this.optionsFromRemoteData(),"window"===this.dropdownScope&&this.buildPopper()}buildPopper(){"undefined"!=typeof Popper&&Popper.createPopper&&(document.body.appendChild(this.dropdown),this.popperInstance=Popper.createPopper("tags"===this.mode?this.wrapper:this.toggle,this.dropdown,{placement:n.lP[this.dropdownPlacement]||"bottom",strategy:"fixed",modifiers:[{name:"offset",options:{offset:[0,5]}}]}))}updateDropdownWidth(){const t="tags"===this.mode?this.wrapper:this.toggle;this.dropdown.style.width=`${t.clientWidth}px`}buildSearch(){let t;this.searchWrapper=(0,l.fc)(this.searchWrapperTemplate||"<div></div>"),this.searchWrapperClasses&&(0,l.en)(this.searchWrapperClasses,this.searchWrapper),t=this.searchWrapper.querySelector("[data-input]");const e=(0,l.fc)(this.searchTemplate||'<input type="text" />');this.search="INPUT"===e.tagName?e:e.querySelector(":scope input"),this.search.placeholder=this.searchPlaceholder,this.searchClasses&&(0,l.en)(this.searchClasses,this.search),this.searchId&&(this.search.id=this.searchId),this.search.addEventListener("input",(0,l.sg)((t=>{this.apiUrl?this.remoteSearch(t.target.value):this.searchOptions(t.target.value)}))),t?t.append(e):this.searchWrapper.append(e),this.dropdown.append(this.searchWrapper)}buildOption(t,e,s=!1,i=!1,o,n="1",a){var r;let d=null,h=null,p=null,c=null;const u=(0,l.fc)(this.optionTag||"<div></div>");if(u.setAttribute("data-value",e),u.setAttribute("data-title-value",t),u.setAttribute("tabIndex",n),u.classList.add("cursor-pointer"),u.setAttribute("data-id",a||`${this.optionId}`),a||this.optionId++,s&&u.classList.add("disabled"),i&&(this.isMultiple?this.value=[...this.value,e]:this.value=e),this.optionTemplate&&(d=(0,l.fc)(this.optionTemplate),u.append(d)),d?(h=d.querySelector("[data-title]"),h.textContent=t||""):u.textContent=t||"",o){if(o.icon){const e=(0,l.fc)(null!==(r=this.apiIconTag)&&void 0!==r?r:o.icon);if(e.classList.add("max-w-full"),this.apiUrl&&(e.setAttribute("alt",t),e.setAttribute("src",o.icon)),d)p=d.querySelector("[data-icon]"),p.append(e);else{const t=(0,l.fc)("<div></div>");this.iconClasses&&(0,l.en)(this.iconClasses,t),t.append(e),u.append(t)}}if(o.description)if(d)c=d.querySelector("[data-description]"),c&&c.append(o.description);else{const t=(0,l.fc)("<div></div>");t.textContent=o.description,this.descriptionClasses&&(0,l.en)(this.descriptionClasses,t),u.append(t)}}d&&d.querySelector("[data-icon]")&&!o&&!(null==o?void 0:o.icon)&&d.querySelector("[data-icon]").classList.add("hidden"),this.value&&(this.isMultiple?this.value.includes(e):this.value===e)&&u.classList.add("selected"),s||u.addEventListener("click",(()=>this.onSelectOption(e))),this.optionClasses&&(0,l.en)(this.optionClasses,u),this.dropdown&&this.dropdown.append(u),i&&this.setNewValue()}buildOptionFromRemoteData(t,e,s=!1,i=!1,l="1",o,n){l?this.buildOption(t,e,s,i,n,l,o):alert("ID parameter is required for generating remote options! Please check your API endpoint have it.")}buildOptionsFromRemoteData(t){t.forEach(((t,e)=>{let s=null,i="";const l={id:"",title:"",icon:null,description:null,rest:{}};Object.keys(t).forEach((e=>{var o;t[this.apiFieldsMap.id]&&(s=t[this.apiFieldsMap.id]),t[this.apiFieldsMap.title]&&(i=t[this.apiFieldsMap.title]),t[this.apiFieldsMap.icon]&&(l.icon=t[this.apiFieldsMap.icon]),t[null===(o=this.apiFieldsMap)||void 0===o?void 0:o.description]&&(l.description=t[this.apiFieldsMap.description]),l.rest[e]=t[e]})),this.buildOriginalOption(i,i,s,!1,!1,l),this.buildOptionFromRemoteData(i,i,!1,!1,`${e}`,s,l)})),this.sortElements(this.el,"option"),this.sortElements(this.dropdown,"[data-value]")}optionsFromRemoteData(){return a(this,arguments,void 0,(function*(t=""){const e=yield this.apiRequest(t);this.remoteOptions=e,e.length?this.buildOptionsFromRemoteData(this.remoteOptions):console.log("There is no data were responded!")}))}apiRequest(){return a(this,arguments,void 0,(function*(t=""){try{let e=this.apiUrl;const s=this.apiSearchQueryKey?`${this.apiSearchQueryKey}=${t.toLowerCase()}`:null,i=`${this.apiQuery}`,l=this.apiOptions||{};s&&(e+=`?${s}`),this.apiQuery&&(e+=`${s?"&":"?"}${i}`);const o=yield fetch(e,l),n=yield o.json();return this.apiDataPart?n[this.apiDataPart]:n}catch(t){console.error(t)}}))}sortElements(t,e){const s=Array.from(t.querySelectorAll(e));s.sort(((t,e)=>{const s=t.classList.contains("selected")||t.hasAttribute("selected"),i=e.classList.contains("selected")||e.hasAttribute("selected");return s&&!i?-1:!s&&i?1:0})),s.forEach((e=>t.appendChild(e)))}remoteSearch(t){return a(this,void 0,void 0,(function*(){const e=yield this.apiRequest(t);this.remoteOptions=e;let s=e.map((t=>`${t.id}`)),i=null;const l=this.dropdown.querySelectorAll("[data-value]");this.el.querySelectorAll("[data-hs-select-option]").forEach((t=>{var e;const i=t.getAttribute("data-id");s.includes(i)||(null===(e=this.value)||void 0===e?void 0:e.includes(t.value))||this.destroyOriginalOption(t.value)})),l.forEach((t=>{var e;const i=t.getAttribute("data-id");s.includes(i)||(null===(e=this.value)||void 0===e?void 0:e.includes(t.getAttribute("data-value")))?s=s.filter((t=>t!==i)):this.destroyOption(t.getAttribute("data-value"))})),i=e.filter((t=>s.includes(`${t.id}`))),i.length?this.buildOptionsFromRemoteData(i):console.log("There is no data were responded!")}))}destroyOption(t){const e=this.dropdown.querySelector(`[data-value="${t}"]`);if(!e)return!1;e.remove()}buildOriginalOption(t,e,s,i,o,n){const a=(0,l.fc)("<option></option>");a.setAttribute("value",e),i&&a.setAttribute("disabled","disabled"),o&&a.setAttribute("selected","selected"),s&&a.setAttribute("data-id",s),a.setAttribute("data-hs-select-option",JSON.stringify(n)),a.innerText=t,this.el.append(a)}destroyOriginalOption(t){const e=this.el.querySelector(`[value="${t}"]`);if(!e)return!1;e.remove()}buildTagsInputHelper(){this.tagsInputHelper=document.createElement("span"),this.tagsInputHelper.style.fontSize=window.getComputedStyle(this.tagsInput).fontSize,this.tagsInputHelper.style.fontFamily=window.getComputedStyle(this.tagsInput).fontFamily,this.tagsInputHelper.style.fontWeight=window.getComputedStyle(this.tagsInput).fontWeight,this.tagsInputHelper.style.letterSpacing=window.getComputedStyle(this.tagsInput).letterSpacing,this.tagsInputHelper.style.visibility="hidden",this.tagsInputHelper.style.whiteSpace="pre",this.tagsInputHelper.style.position="absolute",this.wrapper.appendChild(this.tagsInputHelper)}calculateInputWidth(){this.tagsInputHelper.textContent=this.tagsInput.value||this.tagsInput.placeholder;const t=parseInt(window.getComputedStyle(this.tagsInput).paddingLeft)+parseInt(window.getComputedStyle(this.tagsInput).paddingRight),e=parseInt(window.getComputedStyle(this.tagsInput).borderLeftWidth)+parseInt(window.getComputedStyle(this.tagsInput).borderRightWidth),s=this.tagsInputHelper.offsetWidth+t+e,i=this.wrapper.offsetWidth-(parseInt(window.getComputedStyle(this.wrapper).paddingLeft)+parseInt(window.getComputedStyle(this.wrapper).paddingRight));this.tagsInput.style.width=`${Math.min(s,i)+2}px`}adjustInputWidth(){this.buildTagsInputHelper(),this.calculateInputWidth()}onSelectOption(t){if(this.clearSelections(),this.isMultiple?(this.value=this.value.includes(t)?Array.from(this.value).filter((e=>e!==t)):[...Array.from(this.value),t],this.selectMultipleItems(),this.setNewValue()):(this.value=t,this.selectSingleItem(),this.setNewValue()),this.fireEvent("change",this.value),(0,l.JD)("change.hs.select",this.el,this.value),"tags"===this.mode){const t=this.selectedItems.filter((t=>!this.value.includes(t)));t.length&&t.forEach((t=>{this.selectedItems=this.selectedItems.filter((e=>e!==t)),this.wrapper.querySelector(`[data-tag-value="${t}"]`).remove()})),this.resetTagsInputField()}this.isMultiple||(this.toggle.querySelector("[data-icon]")&&this.setToggleIcon(),this.toggle.querySelector("[data-title]")&&this.setToggleTitle(),this.close()),this.value.length||"tags"!==this.mode||this.reassignTagsInputPlaceholder(this.placeholder),this.isOpened&&"tags"===this.mode&&this.tagsInput&&this.tagsInput.focus(),this.triggerChangeEventForNativeSelect()}triggerChangeEventForNativeSelect(){const t=new Event("change",{bubbles:!0});this.el.dispatchEvent(t)}addSelectOption(t,e,s,i,l){this.selectOptions=[...this.selectOptions,{title:t,val:e,disabled:s,selected:i,options:l}]}removeSelectOption(t,e=!1){if(!!!this.selectOptions.some((e=>e.val===t)))return!1;this.selectOptions=this.selectOptions.filter((e=>e.val!==t)),this.value=e?this.value.filter((e=>e!==t)):t}resetTagsInputField(){this.tagsInput.value="",this.reassignTagsInputPlaceholder(""),this.searchOptions("")}clearSelections(){Array.from(this.dropdown.children).forEach((t=>{t.classList.contains("selected")&&t.classList.remove("selected")})),Array.from(this.el.children).forEach((t=>{t.selected&&(t.selected=!1)}))}setNewValue(){var t;"tags"===this.mode?this.setTagsItems():(null===(t=this.value)||void 0===t?void 0:t.length)?this.toggleTextWrapper.innerHTML=this.stringFromValue():this.toggleTextWrapper.innerHTML=this.placeholder}stringFromValueBasic(t){const e=[];let s="";if(t.forEach((t=>{this.isMultiple?this.value.includes(t.val)&&e.push(t.title):this.value===t.val&&e.push(t.title)})),this.toggleCountText&&""!==this.toggleCountText&&e.length>=this.toggleCountTextMinItems)if("nItemsAndCount"===this.toggleCountTextMode){const t=e.slice(0,this.toggleCountTextMinItems-1);s=`${t.join(this.toggleSeparators.items)} ${this.toggleSeparators.betweenItemsAndCounter} ${e.length-t.length} ${this.toggleCountText}`}else s=`${e.length} ${this.toggleCountText}`;else s=e.join(this.toggleSeparators.items);return s}stringFromValueRemoteData(){const t=this.dropdown.querySelectorAll("[data-title-value]"),e=[];let s="";if(t.forEach((t=>{const s=t.getAttribute("data-value");this.isMultiple?this.value.includes(s)&&e.push(s):this.value===s&&e.push(s)})),this.toggleCountText&&""!==this.toggleCountText&&e.length>=this.toggleCountTextMinItems)if("nItemsAndCount"===this.toggleCountTextMode){const t=e.slice(0,this.toggleCountTextMinItems-1);s=`${t.join(this.toggleSeparators.items)} ${this.toggleSeparators.betweenItemsAndCounter} ${e.length-t.length} ${this.toggleCountText}`}else s=`${e.length} ${this.toggleCountText}`;else s=e.join(this.toggleSeparators.items);return s}stringFromValue(){return this.apiUrl?this.stringFromValueRemoteData():this.stringFromValueBasic(this.selectOptions)}selectSingleItem(){Array.from(this.el.children).find((t=>this.value===t.value)).selected=!0;const t=Array.from(this.dropdown.children).find((t=>this.value===t.getAttribute("data-value")));t&&t.classList.add("selected")}selectMultipleItems(){Array.from(this.dropdown.children).filter((t=>this.value.includes(t.getAttribute("data-value")))).forEach((t=>t.classList.add("selected"))),Array.from(this.el.children).filter((t=>this.value.includes(t.value))).forEach((t=>t.selected=!0))}unselectMultipleItems(){Array.from(this.dropdown.children).forEach((t=>t.classList.remove("selected"))),Array.from(this.el.children).forEach((t=>t.selected=!1))}searchOptions(t){this.searchNoResult&&(this.searchNoResult.remove(),this.searchNoResult=null),this.searchNoResult=(0,l.fc)(this.searchNoResultTemplate),this.searchNoResult.innerText=this.searchNoResultText,(0,l.en)(this.searchNoResultClasses,this.searchNoResult);const e=this.dropdown.querySelectorAll("[data-value]");let s,i=!1;this.searchLimit&&(s=0),e.forEach((e=>{const l=e.getAttribute("data-title-value").toLocaleLowerCase(),o=t?t.split("").map((t=>t.match(/\w/)?`${t}[\\W_]*`:"\\W*")).join(""):"",n=new RegExp(o,"i"),a=this.isSearchDirectMatch,r=l.trim();(t?a?!r.toLowerCase().includes(t.toLowerCase())||s>=this.searchLimit:!n.test(r)||s>=this.searchLimit:!n.test(r))?e.classList.add("hidden"):(e.classList.remove("hidden"),i=!0,this.searchLimit&&s++)})),i||this.dropdown.append(this.searchNoResult)}eraseToggleIcon(){const t=this.toggle.querySelector("[data-icon]");t&&(t.innerHTML=null,t.classList.add("hidden"))}eraseToggleTitle(){const t=this.toggle.querySelector("[data-title]");t?t.innerHTML=this.placeholder:this.toggleTextWrapper.innerHTML=this.placeholder}toggleFn(){this.isOpened?this.close():this.open()}destroy(){const t=this.el.parentElement.parentElement;this.el.classList.remove("hidden"),this.el.style.display="",t.prepend(this.el),t.querySelector(".hs-select").remove(),this.wrapper=null}open(){var t;const e=(null===(t=null===window||void 0===window?void 0:window.$hsSelectCollection)||void 0===t?void 0:t.find((t=>t.element.isOpened)))||null;if(e&&e.element.close(),this.animationInProcess)return!1;this.animationInProcess=!0,"window"===this.dropdownScope&&this.dropdown.classList.add("invisible"),this.dropdown.classList.remove("hidden"),this.recalculateDirection(),setTimeout((()=>{var t;(null===(t=null==this?void 0:this.toggle)||void 0===t?void 0:t.ariaExpanded)&&(this.toggle.ariaExpanded="true"),this.wrapper.classList.add("active"),this.dropdown.classList.add("opened"),this.dropdown.classList.contains("w-full")&&"window"===this.dropdownScope&&this.updateDropdownWidth(),this.popperInstance&&"window"===this.dropdownScope&&(this.popperInstance.update(),this.dropdown.classList.remove("invisible")),this.hasSearch&&!this.preventSearchFocus&&this.search.focus(),this.animationInProcess=!1})),this.isOpened=!0}close(){var t,e,s,i;if(this.animationInProcess)return!1;this.animationInProcess=!0,(null===(t=null==this?void 0:this.toggle)||void 0===t?void 0:t.ariaExpanded)&&(this.toggle.ariaExpanded="false"),this.wrapper.classList.remove("active"),this.dropdown.classList.remove("opened","bottom-full","top-full"),(null===(e=this.dropdownDirectionClasses)||void 0===e?void 0:e.bottom)&&this.dropdown.classList.remove(this.dropdownDirectionClasses.bottom),(null===(s=this.dropdownDirectionClasses)||void 0===s?void 0:s.top)&&this.dropdown.classList.remove(this.dropdownDirectionClasses.top),this.dropdown.style.marginTop="",this.dropdown.style.marginBottom="",(0,l.yd)(this.dropdown,(()=>{this.dropdown.classList.add("hidden"),this.hasSearch&&(this.search.value="",this.search.dispatchEvent(new Event("input",{bubbles:!0})),this.search.blur()),this.animationInProcess=!1})),null===(i=this.dropdown.querySelector(".hs-select-option-highlighted"))||void 0===i||i.classList.remove("hs-select-option-highlighted"),this.isOpened=!1}addOption(t){let e=`${this.selectOptions.length}`;const s=t=>{const{title:s,val:i,disabled:l,selected:o,options:n}=t;!!this.selectOptions.some((t=>t.val===i))||(this.addSelectOption(s,i,l,o,n),this.buildOption(s,i,l,o,n,e),this.buildOriginalOption(s,i,null,l,o,n),o&&!this.isMultiple&&this.onSelectOption(i))};Array.isArray(t)?t.forEach((t=>{s(t)})):s(t)}removeOption(t){const e=(t,e=!1)=>{!!this.selectOptions.some((e=>e.val===t))&&(this.removeSelectOption(t,e),this.destroyOption(t),this.destroyOriginalOption(t),this.value===t&&(this.value=null,this.eraseToggleTitle(),this.eraseToggleIcon()))};Array.isArray(t)?t.forEach((t=>{e(t,this.isMultiple)})):e(t,this.isMultiple),this.setNewValue()}recalculateDirection(){var t,e,s,i;(0,l.PR)(this.dropdown,this.toggle||this.tagsInput,"bottom",this.dropdownSpace,this.viewport)?(this.dropdown.classList.remove("bottom-full"),(null===(t=this.dropdownDirectionClasses)||void 0===t?void 0:t.bottom)&&this.dropdown.classList.remove(this.dropdownDirectionClasses.bottom),this.dropdown.style.marginBottom="",this.dropdown.classList.add("top-full"),(null===(e=this.dropdownDirectionClasses)||void 0===e?void 0:e.top)&&this.dropdown.classList.add(this.dropdownDirectionClasses.top),this.dropdown.style.marginTop=`${this.dropdownSpace}px`):(this.dropdown.classList.remove("top-full"),(null===(s=this.dropdownDirectionClasses)||void 0===s?void 0:s.top)&&this.dropdown.classList.remove(this.dropdownDirectionClasses.top),this.dropdown.style.marginTop="",this.dropdown.classList.add("bottom-full"),(null===(i=this.dropdownDirectionClasses)||void 0===i?void 0:i.bottom)&&this.dropdown.classList.add(this.dropdownDirectionClasses.bottom),this.dropdown.style.marginBottom=`${this.dropdownSpace}px`)}static getInstance(t,e){const s=window.$hsSelectCollection.find((e=>e.element.el===("string"==typeof t?document.querySelector(t):t)));return s?e?s:s.element:null}static autoInit(){window.$hsSelectCollection||(window.$hsSelectCollection=[]),document.querySelectorAll("[data-hs-select]:not(.--prevent-on-load-init)").forEach((t=>{if(!window.$hsSelectCollection.find((e=>{var s;return(null===(s=null==e?void 0:e.element)||void 0===s?void 0:s.el)===t}))){const e=t.getAttribute("data-hs-select"),s=e?JSON.parse(e):{};new r(t,s)}})),window.$hsSelectCollection&&(window.addEventListener("click",(t=>{const e=t.target;r.closeCurrentlyOpened(e)})),document.addEventListener("keydown",(t=>r.accessibility(t))))}static open(t){const e=window.$hsSelectCollection.find((e=>e.element.el===("string"==typeof t?document.querySelector(t):t)));e&&!e.element.isOpened&&e.element.open()}static close(t){const e=window.$hsSelectCollection.find((e=>e.element.el===("string"==typeof t?document.querySelector(t):t)));e&&e.element.isOpened&&e.element.close()}static closeCurrentlyOpened(t=null){if(!t.closest(".hs-select.active")&&!t.closest("[data-hs-select-dropdown].opened")){const t=window.$hsSelectCollection.filter((t=>t.element.isOpened))||null;t&&t.forEach((t=>{t.element.close()}))}}static accessibility(t){if(window.$hsSelectCollection.find((t=>t.element.isOpened))&&n.fp.includes(t.code)&&!t.metaKey)switch(t.code){case"Escape":t.preventDefault(),this.onEscape();break;case"ArrowUp":t.preventDefault(),t.stopImmediatePropagation(),this.onArrow();break;case"ArrowDown":t.preventDefault(),t.stopImmediatePropagation(),this.onArrow(!1);break;case"Tab":t.preventDefault(),t.stopImmediatePropagation(),this.onTab(t.shiftKey);break;case"Home":t.preventDefault(),t.stopImmediatePropagation(),this.onStartEnd();break;case"End":t.preventDefault(),t.stopImmediatePropagation(),this.onStartEnd(!1);break;case"Enter":t.preventDefault(),this.onEnter(t)}}static onEscape(){const t=window.$hsSelectCollection.find((t=>t.element.isOpened));t&&t.element.close()}static onArrow(t=!0){const e=window.$hsSelectCollection.find((t=>t.element.isOpened));if(e){const s=e.element.dropdown;if(!s)return!1;const i=(t?Array.from(s.querySelectorAll(":scope > *:not(.hidden)")).reverse():Array.from(s.querySelectorAll(":scope > *:not(.hidden)"))).filter((t=>!t.classList.contains("disabled"))),l=s.querySelector(".hs-select-option-highlighted")||s.querySelector(".selected");l||i[0].classList.add("hs-select-option-highlighted");let o=i.findIndex((t=>t===l));o+1<i.length&&o++,i[o].focus(),l&&l.classList.remove("hs-select-option-highlighted"),i[o].classList.add("hs-select-option-highlighted")}}static onTab(t=!0){const e=window.$hsSelectCollection.find((t=>t.element.isOpened));if(e){const s=e.element.dropdown;if(!s)return!1;const i=(t?Array.from(s.querySelectorAll(":scope > *:not(.hidden)")).reverse():Array.from(s.querySelectorAll(":scope > *:not(.hidden)"))).filter((t=>!t.classList.contains("disabled"))),l=s.querySelector(".hs-select-option-highlighted")||s.querySelector(".selected");l||i[0].classList.add("hs-select-option-highlighted");let o=i.findIndex((t=>t===l));if(!(o+1<i.length))return l&&l.classList.remove("hs-select-option-highlighted"),e.element.close(),e.element.toggle.focus(),!1;o++,i[o].focus(),l&&l.classList.remove("hs-select-option-highlighted"),i[o].classList.add("hs-select-option-highlighted")}}static onStartEnd(t=!0){const e=window.$hsSelectCollection.find((t=>t.element.isOpened));if(e){const s=e.element.dropdown;if(!s)return!1;const i=(t?Array.from(s.querySelectorAll(":scope > *:not(.hidden)")):Array.from(s.querySelectorAll(":scope > *:not(.hidden)")).reverse()).filter((t=>!t.classList.contains("disabled"))),l=s.querySelector(".hs-select-option-highlighted");i.length&&(i[0].focus(),l&&l.classList.remove("hs-select-option-highlighted"),i[0].classList.add("hs-select-option-highlighted"))}}static onEnter(t){const e=t.target.previousSibling;if(window.$hsSelectCollection.find((t=>t.element.el===e))){const t=window.$hsSelectCollection.find((t=>t.element.isOpened)),s=window.$hsSelectCollection.find((t=>t.element.el===e));t.element.close(),s.element.open()}else{const e=window.$hsSelectCollection.find((t=>t.element.isOpened));e&&e.element.onSelectOption(t.target.dataset.value||"")}}}window.addEventListener("load",(()=>{r.autoInit()})),document.addEventListener("scroll",(()=>{if(!window.$hsSelectCollection)return!1;const t=window.$hsSelectCollection.find((t=>t.element.isOpened));t&&t.element.recalculateDirection()})),"undefined"!=typeof window&&(window.HSSelect=r);const d=r;var h=i.A;export{h as default};