@referralgps/selectra 1.0.0 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +41 -89
- package/dist/selectra.css +1 -1
- package/dist/selectra.es.js +112 -10
- package/dist/selectra.es.js.map +1 -1
- package/dist/selectra.iife.js +6 -8
- package/dist/selectra.iife.js.map +1 -1
- package/dist/selectra.umd.js +6 -8
- package/dist/selectra.umd.js.map +1 -1
- package/package.json +8 -7
- package/src-alpine/README.md +58 -75
- package/src-alpine/index.js +94 -10
- package/src-alpine/selectize.js +39 -4
- package/src-alpine/styles/selectra.css +5 -0
package/dist/selectra.iife.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var Selectra=function(t){"use strict";const e={a:"[aḀḁĂăÂâǍǎȺⱥȦȧẠạÄäÀàÁáĀāÃãÅåąĄÃąĄ]",b:"[b␢βΒB฿𐌁ᛒ]",c:"[cĆćĈĉČčĊċC̄c̄ÇçḈḉȻȼƇƈɕᴄCc]",d:"[dĎďḊḋḐḑḌḍḒḓḎḏĐđD̦d̦ƉɖƊɗƋƌᵭᶁᶑȡᴅDdð]",e:"[eÉéÈèÊêḘḙĚěĔĕẼẽḚḛẺẻĖėËëĒēȨȩĘęᶒɆɇȄȅẾếỀềỄễỂểḜḝḖḗḔḕȆȇẸẹỆệⱸᴇEeɘǝƏƐε]",f:"[fƑƒḞḟ]",g:"[gɢ₲ǤǥĜĝĞğĢģƓɠĠġ]",h:"[hĤĥĦħḨḩẖẖḤḥḢḣɦʰǶƕ]",i:"[iÍíÌìĬĭÎîǏǐÏïḮḯĨĩĮįĪīỈỉȈȉȊȋỊịḬḭƗɨɨ̆ᵻᶖİiIıɪIi]",j:"[jȷĴĵɈɉʝɟʲ]",k:"[kƘƙꝀꝁḰḱǨǩḲḳḴḵκϰ₭]",l:"[lŁłĽľĻļĹĺḶḷḸḹḼḽḺḻĿŀȽƚⱠⱡⱢɫɬᶅɭȴʟLl]",n:"[nŃńǸǹŇňÑñṄṅŅņṆṇṊṋṈṉN̈n̈ƝɲȠƞᵰᶇɳȵɴNnŊŋ]",o:"[oØøÖöÓóÒòÔôǑǒŐőŎŏȮȯỌọƟɵƠơỎỏŌōÕõǪǫȌȍՕօ]",p:"[pṔṕṖṗⱣᵽƤƥᵱ]",q:"[qꝖꝗʠɊɋꝘꝙq̃]",r:"[rŔŕɌɍŘřŖŗṘṙȐȑȒȓṚṛⱤɽ]",s:"[sŚśṠṡṢṣꞨꞩŜŝŠšŞşȘșS̈s̈]",t:"[tŤťṪṫŢţṬṭƮʈȚțṰṱṮṯƬƭ]",u:"[uŬŭɄʉỤụÜüÚúÙùÛûǓǔŰűŬŭƯưỦủŪūŨũŲųȔȕ∪]",v:"[vṼṽṾṿƲʋꝞꝟⱱʋ]",w:"[wẂẃẀẁŴŵẄẅẆẇẈẉ]",x:"[xẌẍẊẋχ]",y:"[yÝýỲỳŶŷŸÿỸỹẎẏỴỵɎɏƳƴ]",z:"[zŹźẐẑŽžŻżẒẓẔẕƵƶ]"},i=(()=>{const t={};let i="";for(const n in e){const s=e[n].substring(2,e[n].length-1);i+=s;for(let e=0;e<s.length;e++)t[s.charAt(e)]=n}const s=new RegExp("["+i+"]","g");return e=>e.replace(s,e=>t[e]||"").toLowerCase()})();function s(t){return(t+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function n(t,e,i){if(!t||!e)return;if(!i)return t[e];const s=e.split(".");let n=t;for(;s.length&&n;)n=n[s.shift()];return n}function o(t,e){return"number"==typeof t&&"number"==typeof e?t>e?1:t<e?-1:0:(t=i(String(t||"")))>(e=i(String(e||"")))?1:e>t?-1:0}class r{constructor(t,e={}){this.items=t,this.settings={diacritics:!0,...e}}tokenize(t,i){if(!(t=String(t||"").toLowerCase().trim()).length)return[];const n=[],o=t.split(/\s+/);for(const r of o){let t=s(r);if(this.settings.diacritics)for(const i in e)t=t.replace(new RegExp(i,"g"),e[i]);i&&(t="\\b"+t),n.push({string:r,regex:new RegExp(t,"i")})}return n}getScoreFunction(t,e){t=this.prepareSearch(t,e);const{tokens:i}=t,{fields:s}=t.options,o=i.length,{nesting:r}=t.options,l=(t,e)=>{if(!t)return 0;const i=(t=String(t||"")).search(e.regex);if(-1===i)return 0;let s=e.string.length/t.length;return 0===i&&(s+=.5),s},h=s.length,c=0===h?()=>0:1===h?(t,e)=>l(n(e,s[0],r),t):(t,e)=>{let i=0;for(let o=0;o<h;o++)i+=l(n(e,s[o],r),t);return i/h};return o?1===o?t=>c(i[0],t):"and"===t.options.conjunction?t=>{let e=0;for(let s=0;s<o;s++){const n=c(i[s],t);if(n<=0)return 0;e+=n}return e/o}:t=>{let e=0;for(let s=0;s<o;s++)e+=c(i[s],t);return e/o}:()=>0}getSortFunction(t,e){const i=!(t=this.prepareSearch(t,e)).query&&e.sort_empty||e.sort,s=(t,i)=>"$score"===t?i.score:n(this.items[i.id],t,e.nesting),r=[];if(i)for(const n of i)(t.query||"$score"!==n.field)&&r.push(n);if(t.query){let t=!0;for(const e of r)if("$score"===e.field){t=!1;break}t&&r.unshift({field:"$score",direction:"desc"})}else{const t=r.findIndex(t=>"$score"===t.field);-1!==t&&r.splice(t,1)}const l=r.map(t=>"desc"===t.direction?-1:1),h=r.length;if(!h)return null;if(1===h){const t=r[0].field,e=l[0];return(i,n)=>e*o(s(t,i),s(t,n))}return(t,e)=>{for(let i=0;i<h;i++){const n=l[i]*o(s(r[i].field,t),s(r[i].field,e));if(n)return n}return 0}}prepareSearch(t,e){return"object"==typeof t?t:((e={...e}).fields&&!Array.isArray(e.fields)&&(e.fields=[e.fields]),e.sort&&!Array.isArray(e.sort)&&(e.sort=[e.sort]),e.sort_empty&&!Array.isArray(e.sort_empty)&&(e.sort_empty=[e.sort_empty]),{options:e,query:String(t||"").toLowerCase(),tokens:this.tokenize(t,e.respect_word_boundaries),total:0,items:[]})}search(t,e){const i=this.prepareSearch(t,e),s=i.options,n=i.query,o=s.score||this.getScoreFunction(i),r=this.items;if(n.length){(Array.isArray(r)?t=>r.forEach((e,i)=>t(e,i)):t=>Object.keys(r).forEach(e=>t(r[e],e)))((t,e)=>{const n=o(t);(!1===s.filter||n>0)&&i.items.push({score:n,id:e})})}else{(Array.isArray(r)?t=>r.forEach((e,i)=>t(e,i)):t=>Object.keys(r).forEach(e=>t(r[e],e)))((t,e)=>{i.items.push({score:1,id:e})})}const l=this.getSortFunction(i,s);return l&&i.items.sort(l),i.total=i.items.length,"number"==typeof s.limit&&(i.items=i.items.slice(0,s.limit)),i}}function l(t){return"string"!=typeof t?"":t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}let h,c=0;function a(t){return null==t?null:"boolean"==typeof t?t?"1":"0":String(t)}function u(t,e=10){const i=function(t,e){h||(h=document.createElement("canvas"));const i=h.getContext("2d");if(e){const t=window.getComputedStyle(e);i.font=`${t.fontStyle} ${t.fontWeight} ${t.fontSize} ${t.fontFamily}`}return i.measureText(t).width}(t.value||t.placeholder||"",t)+e;t.style.width=Math.max(i,60)+"px"}function d(t){return t.tagName&&"select"===t.tagName.toLowerCase()}const p={delimiter:",",splitOn:null,persist:!0,diacritics:!0,create:!1,showAddOptionOnCreate:!0,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,maxOptions:1e3,maxItems:null,hideSelected:null,selectOnTab:!0,preload:!1,allowEmptyOption:!1,closeAfterSelect:!1,loadThrottle:300,loadingClass:"loading",placeholder:"",mode:null,search:!0,showArrow:!0,valueField:"value",labelField:"text",disabledField:"disabled",optgroupField:"optgroup",optgroupLabelField:"label",optgroupValueField:"value",sortField:"$order",searchField:["text"],searchConjunction:"and",respectWordBoundaries:!1,normalize:!0,plugins:[],render:{option:null,item:null,optionCreate:null,optgroupHeader:null,noResults:null,loading:null},load:null,score:null,onChange:null,onItemAdd:null,onItemRemove:null,onClear:null,onOptionAdd:null,onOptionRemove:null,onDropdownOpen:null,onDropdownClose:null,onType:null,onFocus:null,onBlur:null,onInitialize:null},f={};function g(t={}){return()=>({isOpen:!1,isFocused:!1,isDisabled:!1,isLocked:!1,isLoading:!1,isInvalid:!1,query:"",activeIndex:-1,caretPos:0,items:[],options:{},optgroups:{},userOptions:{},optionOrder:[],loadedSearches:{},lastQuery:"",_config:{},_sifter:null,_sourceEl:null,_id:"",_rtl:!1,_plugins:[],_renderCache:{},get config(){return this._config},get isMultiple(){return"multi"===this._config.mode},get isSingle(){return"single"===this._config.mode},get isFull(){return null!==this._config.maxItems&&this.items.length>=this._config.maxItems},get hasOptions(){return Object.keys(this.options).length>0},get canCreate(){if(!this._config.create)return!1;if(!this.query.trim())return!1;if(this.isFull)return!1;if(this._config.createFilter){const t=this._config.createFilter;if("function"==typeof t)return t(this.query);if(t instanceof RegExp)return t.test(this.query);if("string"==typeof t)return new RegExp(t).test(this.query)}return!Object.values(this.options).find(t=>{var e;return(null==(e=t[this._config.labelField])?void 0:e.toLowerCase())===this.query.toLowerCase()})},get selectedItems(){return this.items.map(t=>this.options[a(t)]).filter(Boolean)},get filteredOptions(){return this._getFilteredOptions()},get placeholderText(){return this.items.length>0&&this.isSingle?"":this._config.placeholder||""},get currentValueText(){if(!this.isSingle||!this.items.length)return"";const t=this.options[a(this.items[0])];return t?t[this._config.labelField]:""},init(){if(this._id=function(t="selectize"){return`${t}-${++c}-${Math.random().toString(36).slice(2,8)}`}(),this._config={...p,...t},this._sourceEl=this.$el.querySelector('select, input[type="text"], input[type="hidden"]'),this._sourceEl&&d(this._sourceEl)){const i=function(t){const e=[],i=[],s=[],n=(t,i=null)=>{const n=t.value,o=t.textContent.trim(),r=t.disabled;if(!n&&!o)return;const l={value:n,text:o,disabled:r};if(t.dataset.data)try{Object.assign(l,JSON.parse(t.dataset.data))}catch(h){}null!==i&&(l.optgroup=i),t.selected&&s.push(n),e.push(l)};for(const o of t.children)if("optgroup"===o.tagName.toLowerCase()){const t=o.getAttribute("label")||"";i.push({value:t,label:t,disabled:o.disabled});for(const e of o.children)n(e,t)}else"option"===o.tagName.toLowerCase()&&n(o);return{options:e,optgroups:i,selectedValues:s}}(this._sourceEl),s=this._config.options||[],n=[...i.options,...s];this._registerOptions(n);for(const t of i.optgroups)this.optgroups[t.value]=t;i.selectedValues.length&&(this.items=[...i.selectedValues]),t.mode||(this._config.mode=this._sourceEl.multiple?"multi":"single"),this._sourceEl.hasAttribute("required")&&(this.isInvalid=!this.items.length),this._sourceEl.disabled&&(this.isDisabled=!0),this._sourceEl.placeholder&&(this._config.placeholder=this._sourceEl.placeholder),this._sourceEl.style.display="none",this._sourceEl.setAttribute("tabindex","-1"),this._rtl=(e=this._sourceEl,"rtl"===window.getComputedStyle(e).direction)}else{const t=this._config.options||[];if(this._registerOptions(t),this._config.optgroups)for(const e of this._config.optgroups)this.optgroups[e[this._config.optgroupValueField]]=e;this._config.items&&(this.items=[...this._config.items])}var e;this._config.mode||(this._config.mode=1===this._config.maxItems?"single":"multi"),"single"===this._config.mode&&(this._config.maxItems=1),null===this._config.hideSelected&&(this._config.hideSelected="multi"===this._config.mode),this._sifter=new r(this.options,{diacritics:this._config.diacritics}),this._initPlugins(),this._config.load&&this._config.loadThrottle&&(this._debouncedLoad=function(t,e){let i;return function(...s){clearTimeout(i),i=setTimeout(()=>t.apply(this,s),e)}}(this._performLoad.bind(this),this._config.loadThrottle)),this._config.preload&&this.$nextTick(()=>{"focus"===this._config.preload||this._performLoad("")}),this._trigger("onInitialize"),this._onClickOutside=t=>{this.$el.contains(t.target)||(this.close(),this.blur())},document.addEventListener("mousedown",this._onClickOutside)},destroy(){document.removeEventListener("mousedown",this._onClickOutside),this._sourceEl&&(this._sourceEl.style.display="",this._sourceEl.removeAttribute("tabindex"))},_initPlugins(){const t=this._config.plugins||[];for(const e of t){const t="string"==typeof e?e:e.name,i="string"==typeof e?{}:e.options||{};f[t]?(f[t].call(this,i),this._plugins.push(t)):console.warn(`[selectize] Plugin "${t}" not found.`)}},_registerOptions(t){for(const e of t)this.addOption(e,!0)},addOption(t,e=!1){if(Array.isArray(t)){for(const i of t)this.addOption(i,e);return}const i=a(t[this._config.valueField]);null===i||this.options[i]||(t.$order=t.$order||++this._orderCounter||(this._orderCounter=1),this.options[i]=t,this.optionOrder.push(i),this._sifter&&(this._sifter.items=this.options),this._clearRenderCache(),e||this._trigger("onOptionAdd",i,t))},updateOption(t,e){const i=a(t);if(!i||!this.options[i])return;const s=a(e[this._config.valueField]);if(e.$order=this.options[i].$order,this.options[s]=e,i!==s){delete this.options[i];const t=this.optionOrder.indexOf(i);-1!==t&&(this.optionOrder[t]=s);const e=this.items.indexOf(i);-1!==e&&(this.items[e]=s)}this._sifter&&(this._sifter.items=this.options),this._clearRenderCache()},removeOption(t){const e=a(t);if(!e)return;delete this.options[e],delete this.userOptions[e];const i=this.optionOrder.indexOf(e);-1!==i&&this.optionOrder.splice(i,1),this.items=this.items.filter(t=>t!==e),this._sifter&&(this._sifter.items=this.options),this._clearRenderCache(),this._trigger("onOptionRemove",e)},clearOptions(){const t={};for(const e of this.items)this.options[e]&&(t[e]=this.options[e]);this.options=t,this.optionOrder=Object.keys(t),this.userOptions={},this._sifter&&(this._sifter.items=this.options),this._clearRenderCache()},getOption(t){return this.options[a(t)]||null},addItem(t,e=!1){const i=a(t);i&&this.options[i]&&(this.items.includes(i)||this.isFull||(this.isSingle&&this.items.length&&this.removeItem(this.items[0],!0),this.items.push(i),this.caretPos=this.items.length,this._syncSourceElement(),this._clearRenderCache(),this.query="",(this._config.closeAfterSelect||this.isSingle)&&this.close(),this.isFull&&this.close(),e||(this._trigger("onItemAdd",i,this.options[i]),this._trigger("onChange",this.getValue()))))},removeItem(t,e=!1){const i=a(t),s=this.items.indexOf(i);-1!==s&&(this.items.splice(s,1),this.caretPos>this.items.length&&(this.caretPos=this.items.length),this._syncSourceElement(),this._clearRenderCache(),e||(this._trigger("onItemRemove",i),this._trigger("onChange",this.getValue())))},clear(t=!1){this.items.length&&(this.items=[],this.caretPos=0,this._syncSourceElement(),this._clearRenderCache(),t||(this._trigger("onClear"),this._trigger("onChange",this.getValue())))},getValue(){return this.isSingle?this.items.length?this.items[0]:"":[...this.items]},setValue(t,e=!1){this.clear(!0);const i=Array.isArray(t)?t:[t];for(const s of i)""!==s&&null!=s&&this.addItem(s,!0);e||this._trigger("onChange",this.getValue())},createItem(t=null){const e=null!==t?t:this.query;if(!e.trim())return;if(!this._config.create)return;const i=this._config.create;let s;"function"==typeof i?(s=i(e,t=>{t&&(this.addOption(t),this.addItem(t[this._config.valueField]))}),s&&"object"==typeof s&&(this.addOption(s),this.addItem(s[this._config.valueField]))):(s={},s[this._config.valueField]=e,s[this._config.labelField]=e,this.addOption(s),this.addItem(e)),this.query="",this._clearRenderCache()},_getFilteredOptions(){const t=this._config;if(!this._sifter)return[];const e=Array.isArray(t.searchField)?t.searchField:[t.searchField];let i;i=t.sortField?"string"==typeof t.sortField?[{field:t.sortField,direction:"asc"}]:Array.isArray(t.sortField)?t.sortField:[t.sortField]:[{field:"$order",direction:"asc"}];let s=this.query;t.normalize&&s&&(s=s.normalize("NFD").replace(/[\u0300-\u036f]/g,""));const n={fields:e,conjunction:t.searchConjunction,sort:i,nesting:e.some(t=>t.includes(".")),respect_word_boundaries:t.respectWordBoundaries,limit:t.maxOptions};t.score&&(n.score=t.score);let o=this._sifter.search(s,n).items.map(t=>{const e=this.options[t.id];return e?{...e,_score:t.score}:null}).filter(Boolean);return t.hideSelected&&(o=o.filter(e=>!this.items.includes(a(e[t.valueField])))),o=o.filter(e=>!e[t.disabledField]),o},open(){this.isOpen||this.isDisabled||this.isLocked||(this.isOpen=!0,this.activeIndex=this._config.setFirstOptionActive?0:-1,this._trigger("onDropdownOpen"),this.$nextTick(()=>{this._scrollToActive()}))},close(){this.isOpen&&(this.isOpen=!1,this.activeIndex=-1,this._trigger("onDropdownClose"))},toggle(){this.isOpen?this.close():this.open()},focus(){if(this.isDisabled)return;this.isFocused=!0;const t=this.$refs.searchInput;t&&this.$nextTick(()=>t.focus()),this._config.openOnFocus&&this.open(),"focus"!==this._config.preload||this.loadedSearches[""]||this._performLoad(""),this._trigger("onFocus")},blur(){this.isFocused&&(this.isFocused=!1,this._config.createOnBlur&&this.query.trim()&&this.canCreate&&this.createItem(),this.close(),this._trigger("onBlur"))},onKeyDown(t){if(this.isDisabled||this.isLocked)return;const e=this.filteredOptions,i=this.canCreate,s=e.length+(i?1:0);switch(t.key){case"ArrowDown":t.preventDefault(),this.isOpen?(this.activeIndex=Math.min(this.activeIndex+1,s-1),this._scrollToActive()):this.open();break;case"ArrowUp":t.preventDefault(),this.isOpen&&(this.activeIndex=Math.max(this.activeIndex-1,0),this._scrollToActive());break;case"Enter":t.preventDefault(),this.isOpen&&this.activeIndex>=0?this.activeIndex<e.length?this.selectOption(e[this.activeIndex]):i&&this.createItem():this.isOpen||this.open();break;case"Escape":t.preventDefault(),this.close();break;case"Tab":this.isOpen&&this._config.selectOnTab&&this.activeIndex>=0&&(t.preventDefault(),this.activeIndex<e.length?this.selectOption(e[this.activeIndex]):i&&this.createItem());break;case"Backspace":if(!this.query&&this.items.length&&this.isMultiple){t.preventDefault();const e=this.items[this.items.length-1];this.removeItem(e)}break;case"Delete":if(!this.query&&this.items.length&&this.isMultiple){t.preventDefault();const e=this.items[this.items.length-1];this.removeItem(e)}break;case"a":case"A":(t.ctrlKey||t.metaKey)&&this.isMultiple&&t.preventDefault()}},onInput(){if(this._trigger("onType",this.query),this.isOpen||this.open(),this.activeIndex=this._config.setFirstOptionActive||this.query?0:-1,this._config.load&&this.query){const t=this.query;this.loadedSearches[t]||(this._debouncedLoad?this._debouncedLoad(t):this._performLoad(t))}this.$refs.searchInput&&this.isMultiple&&u(this.$refs.searchInput)},onPaste(t){if(!this.isMultiple)return;const e=(t.clipboardData||window.clipboardData).getData("text");if(!e)return;const i=this._config.splitOn||this._config.delimiter;if(!i)return;t.preventDefault();const s=i instanceof RegExp?i:new RegExp("["+i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")+"]"),n=e.split(s).map(t=>t.trim()).filter(Boolean);for(const o of n){const t=Object.values(this.options).find(t=>{var e,i;return(null==(e=t[this._config.labelField])?void 0:e.toLowerCase())===o.toLowerCase()||(null==(i=t[this._config.valueField])?void 0:i.toLowerCase())===o.toLowerCase()});t?this.addItem(t[this._config.valueField]):this._config.create&&this.createItem(o)}},selectOption(t){if(!t)return;if(t[this._config.disabledField])return;const e=t[this._config.valueField];this.addItem(e),this.query="",this.$refs.searchInput&&(this.$refs.searchInput.focus(),this.isMultiple&&u(this.$refs.searchInput))},_performLoad(t){this._config.load&&(this.loadedSearches[t]||(this.isLoading=!0,this.loadedSearches[t]=!0,this._config.load(t,t=>{if(this.isLoading=!1,t&&Array.isArray(t)){for(const e of t)this.addOption(e,!0);this._clearRenderCache()}})))},renderOption(t){var e;const i=this._config,s=t[i.labelField]||"";return(null==(e=i.render)?void 0:e.option)?i.render.option(t,l):i.highlight&&this.query?function(t,e){if(!e||!e.length)return l(t);const i=l(t),s=new RegExp("("+e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")+")","ig");return i.replace(s,'<span class="font-semibold text-inherit">$1</span>')}(s,this.query):l(s)},renderItem(t){var e;const i=this._config,s=t[i.labelField]||"";return(null==(e=i.render)?void 0:e.item)?i.render.item(t,l):l(s)},renderOptionCreate(){var t;const e=this._config;return(null==(t=e.render)?void 0:t.optionCreate)?e.render.optionCreate({input:this.query},l):`Add <span class="font-medium">${l(this.query)}</span>...`},renderNoResults(){var t;const e=this._config;return(null==(t=e.render)?void 0:t.noResults)?e.render.noResults({query:this.query},l):"No results found"},renderLoading(){var t;const e=this._config;return(null==(t=e.render)?void 0:t.loading)?e.render.loading({query:this.query},l):"Loading..."},addOptionGroup(t,e){this.optgroups[t]=e,this._clearRenderCache()},removeOptionGroup(t){delete this.optgroups[t],this._clearRenderCache()},getGroupedOptions(){const t=this.filteredOptions,e=this._config,i={},s=[];for(const o of t){const t=o[e.optgroupField];t&&this.optgroups[t]?(i[t]||(i[t]=[]),i[t].push(o)):s.push(o)}const n=[];for(const[o,r]of Object.entries(i)){const t=this.optgroups[o];n.push({id:o,label:t[e.optgroupLabelField]||o,options:r})}return s.length&&n.push({id:null,label:null,options:s}),n},get hasOptgroups(){return Object.keys(this.optgroups).length>0},lock(){this.isLocked=!0,this.close()},unlock(){this.isLocked=!1},disable(){this.isDisabled=!0,this.close()},enable(){this.isDisabled=!1},setMaxItems(t){this._config.maxItems=t,this.isFull&&this.close()},_syncSourceElement(){var t;if(this._sourceEl)if(d(this._sourceEl)){for(const t of this._sourceEl.options)t.selected=this.items.includes(t.value);for(const e of this.items){if(!Array.from(this._sourceEl.options).some(t=>t.value===e)){const i=document.createElement("option");i.value=e,i.textContent=(null==(t=this.options[e])?void 0:t[this._config.labelField])||e,i.selected=!0,this._sourceEl.appendChild(i)}}this._sourceEl.dispatchEvent(new Event("change",{bubbles:!0}))}else this._sourceEl.value=this.isSingle?this.items[0]||"":this.items.join(this._config.delimiter),this._sourceEl.dispatchEvent(new Event("input",{bubbles:!0})),this._sourceEl.dispatchEvent(new Event("change",{bubbles:!0}))},_scrollToActive(){this.$nextTick(()=>{const t=this.$refs.dropdown;if(!t)return;const e=t.querySelector('[data-active="true"]');e&&e.scrollIntoView({block:"nearest"})})},_trigger(t,...e){const i=this._config[t];"function"==typeof i&&i.apply(this,e);const s=t.replace(/^on/,"").toLowerCase();this.$el.dispatchEvent(new CustomEvent(`selectra:${s}`,{detail:e,bubbles:!0}))},_clearRenderCache(){this._renderCache={}},isSelected(t){return this.items.includes(a(t[this._config.valueField]))},optionKey(t){return a(t[this._config.valueField])}})}function _(t,e){f[t]=e}
|
|
1
|
+
var Selectra=function(t){"use strict";/*! Selectra v1.0.3 | Apache-2.0 License */const e={a:"[aḀḁĂăÂâǍǎȺⱥȦȧẠạÄäÀàÁáĀāÃãÅåąĄÃąĄ]",b:"[b␢βΒB฿𐌁ᛒ]",c:"[cĆćĈĉČčĊċC̄c̄ÇçḈḉȻȼƇƈɕᴄCc]",d:"[dĎďḊḋḐḑḌḍḒḓḎḏĐđD̦d̦ƉɖƊɗƋƌᵭᶁᶑȡᴅDdð]",e:"[eÉéÈèÊêḘḙĚěĔĕẼẽḚḛẺẻĖėËëĒēȨȩĘęᶒɆɇȄȅẾếỀềỄễỂểḜḝḖḗḔḕȆȇẸẹỆệⱸᴇEeɘǝƏƐε]",f:"[fƑƒḞḟ]",g:"[gɢ₲ǤǥĜĝĞğĢģƓɠĠġ]",h:"[hĤĥĦħḨḩẖẖḤḥḢḣɦʰǶƕ]",i:"[iÍíÌìĬĭÎîǏǐÏïḮḯĨĩĮįĪīỈỉȈȉȊȋỊịḬḭƗɨɨ̆ᵻᶖİiIıɪIi]",j:"[jȷĴĵɈɉʝɟʲ]",k:"[kƘƙꝀꝁḰḱǨǩḲḳḴḵκϰ₭]",l:"[lŁłĽľĻļĹĺḶḷḸḹḼḽḺḻĿŀȽƚⱠⱡⱢɫɬᶅɭȴʟLl]",n:"[nŃńǸǹŇňÑñṄṅŅņṆṇṊṋṈṉN̈n̈ƝɲȠƞᵰᶇɳȵɴNnŊŋ]",o:"[oØøÖöÓóÒòÔôǑǒŐőŎŏȮȯỌọƟɵƠơỎỏŌōÕõǪǫȌȍՕօ]",p:"[pṔṕṖṗⱣᵽƤƥᵱ]",q:"[qꝖꝗʠɊɋꝘꝙq̃]",r:"[rŔŕɌɍŘřŖŗṘṙȐȑȒȓṚṛⱤɽ]",s:"[sŚśṠṡṢṣꞨꞩŜŝŠšŞşȘșS̈s̈]",t:"[tŤťṪṫŢţṬṭƮʈȚțṰṱṮṯƬƭ]",u:"[uŬŭɄʉỤụÜüÚúÙùÛûǓǔŰűŬŭƯưỦủŪūŨũŲųȔȕ∪]",v:"[vṼṽṾṿƲʋꝞꝟⱱʋ]",w:"[wẂẃẀẁŴŵẄẅẆẇẈẉ]",x:"[xẌẍẊẋχ]",y:"[yÝýỲỳŶŷŸÿỸỹẎẏỴỵɎɏƳƴ]",z:"[zŹźẐẑŽžŻżẒẓẔẕƵƶ]"},i=(()=>{const t={};let i="";for(const n in e){const s=e[n].substring(2,e[n].length-1);i+=s;for(let e=0;e<s.length;e++)t[s.charAt(e)]=n}const s=new RegExp("["+i+"]","g");return e=>e.replace(s,e=>t[e]||"").toLowerCase()})();function s(t){return(t+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function n(t,e,i){if(!t||!e)return;if(!i)return t[e];const s=e.split(".");let n=t;for(;s.length&&n;)n=n[s.shift()];return n}function o(t,e){return"number"==typeof t&&"number"==typeof e?t>e?1:t<e?-1:0:(t=i(String(t||"")))>(e=i(String(e||"")))?1:e>t?-1:0}class r{constructor(t,e={}){this.items=t,this.settings={diacritics:!0,...e}}tokenize(t,i){if(!(t=String(t||"").toLowerCase().trim()).length)return[];const n=[],o=t.split(/\s+/);for(const r of o){let t=s(r);if(this.settings.diacritics)for(const i in e)t=t.replace(new RegExp(i,"g"),e[i]);i&&(t="\\b"+t),n.push({string:r,regex:new RegExp(t,"i")})}return n}getScoreFunction(t,e){t=this.prepareSearch(t,e);const{tokens:i}=t,{fields:s}=t.options,o=i.length,{nesting:r}=t.options,l=(t,e)=>{if(!t)return 0;const i=(t=String(t||"")).search(e.regex);if(-1===i)return 0;let s=e.string.length/t.length;return 0===i&&(s+=.5),s},c=s.length,h=0===c?()=>0:1===c?(t,e)=>l(n(e,s[0],r),t):(t,e)=>{let i=0;for(let o=0;o<c;o++)i+=l(n(e,s[o],r),t);return i/c};return o?1===o?t=>h(i[0],t):"and"===t.options.conjunction?t=>{let e=0;for(let s=0;s<o;s++){const n=h(i[s],t);if(n<=0)return 0;e+=n}return e/o}:t=>{let e=0;for(let s=0;s<o;s++)e+=h(i[s],t);return e/o}:()=>0}getSortFunction(t,e){const i=!(t=this.prepareSearch(t,e)).query&&e.sort_empty||e.sort,s=(t,i)=>"$score"===t?i.score:n(this.items[i.id],t,e.nesting),r=[];if(i)for(const n of i)(t.query||"$score"!==n.field)&&r.push(n);if(t.query){let t=!0;for(const e of r)if("$score"===e.field){t=!1;break}t&&r.unshift({field:"$score",direction:"desc"})}else{const t=r.findIndex(t=>"$score"===t.field);-1!==t&&r.splice(t,1)}const l=r.map(t=>"desc"===t.direction?-1:1),c=r.length;if(!c)return null;if(1===c){const t=r[0].field,e=l[0];return(i,n)=>e*o(s(t,i),s(t,n))}return(t,e)=>{for(let i=0;i<c;i++){const n=l[i]*o(s(r[i].field,t),s(r[i].field,e));if(n)return n}return 0}}prepareSearch(t,e){return"object"==typeof t?t:((e={...e}).fields&&!Array.isArray(e.fields)&&(e.fields=[e.fields]),e.sort&&!Array.isArray(e.sort)&&(e.sort=[e.sort]),e.sort_empty&&!Array.isArray(e.sort_empty)&&(e.sort_empty=[e.sort_empty]),{options:e,query:String(t||"").toLowerCase(),tokens:this.tokenize(t,e.respect_word_boundaries),total:0,items:[]})}search(t,e){const i=this.prepareSearch(t,e),s=i.options,n=i.query,o=s.score||this.getScoreFunction(i),r=this.items;if(n.length){(Array.isArray(r)?t=>r.forEach((e,i)=>t(e,i)):t=>Object.keys(r).forEach(e=>t(r[e],e)))((t,e)=>{const n=o(t);(!1===s.filter||n>0)&&i.items.push({score:n,id:e})})}else{(Array.isArray(r)?t=>r.forEach((e,i)=>t(e,i)):t=>Object.keys(r).forEach(e=>t(r[e],e)))((t,e)=>{i.items.push({score:1,id:e})})}const l=this.getSortFunction(i,s);return l&&i.items.sort(l),i.total=i.items.length,"number"==typeof s.limit&&(i.items=i.items.slice(0,s.limit)),i}}function l(t){return"string"!=typeof t?"":t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}let c,h=0;function a(t){return null==t?null:"boolean"==typeof t?t?"1":"0":String(t)}function d(t,e=10){const i=function(t,e){c||(c=document.createElement("canvas"));const i=c.getContext("2d");if(e){const t=window.getComputedStyle(e);i.font=`${t.fontStyle} ${t.fontWeight} ${t.fontSize} ${t.fontFamily}`}return i.measureText(t).width}(t.value||t.placeholder||"",t)+e;t.style.width=Math.max(i,60)+"px"}function u(t){return t.tagName&&"select"===t.tagName.toLowerCase()}const p={delimiter:",",splitOn:null,persist:!0,diacritics:!0,create:!1,showAddOptionOnCreate:!0,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,maxOptions:1e3,maxItems:null,hideSelected:null,selectOnTab:!0,preload:!1,allowEmptyOption:!1,closeAfterSelect:!1,loadThrottle:300,loadingClass:"loading",placeholder:"",mode:null,search:!0,showArrow:!0,valueField:"value",labelField:"text",disabledField:"disabled",optgroupField:"optgroup",optgroupLabelField:"label",optgroupValueField:"value",sortField:"$order",searchField:["text"],searchConjunction:"and",respectWordBoundaries:!1,normalize:!0,plugins:[],render:{option:null,item:null,optionCreate:null,optgroupHeader:null,noResults:null,loading:null},load:null,score:null,onChange:null,onItemAdd:null,onItemRemove:null,onClear:null,onOptionAdd:null,onOptionRemove:null,onDropdownOpen:null,onDropdownClose:null,onType:null,onFocus:null,onBlur:null,onInitialize:null},f={};function g(t={}){return()=>({isOpen:!1,isFocused:!1,isDisabled:!1,isLocked:!1,isLoading:!1,isInvalid:!1,query:"",activeIndex:-1,caretPos:0,items:[],options:{},optgroups:{},userOptions:{},optionOrder:[],loadedSearches:{},lastQuery:"",_config:{},_sifter:null,_sourceEl:null,_id:"",_rtl:!1,_plugins:[],_renderCache:{},get config(){return this._config},get isMultiple(){return"multi"===this._config.mode},get isSingle(){return"single"===this._config.mode},get isFull(){return null!==this._config.maxItems&&this.items.length>=this._config.maxItems},get hasOptions(){return Object.keys(this.options).length>0},get canCreate(){if(!this._config.create)return!1;if(!this.query.trim())return!1;if(this.isFull)return!1;if(this._config.createFilter){const t=this._config.createFilter;if("function"==typeof t)return t(this.query);if(t instanceof RegExp)return t.test(this.query);if("string"==typeof t)return new RegExp(t).test(this.query)}return!Object.values(this.options).find(t=>{var e;return(null==(e=t[this._config.labelField])?void 0:e.toLowerCase())===this.query.toLowerCase()})},get selectedItems(){return this.items.map(t=>this.options[a(t)]).filter(Boolean)},get filteredOptions(){return this._getFilteredOptions()},get placeholderText(){return this.items.length>0&&this.isSingle?"":this._config.placeholder||""},get currentValueText(){if(!this.isSingle||!this.items.length)return"";const t=this.options[a(this.items[0])];return t?t[this._config.labelField]:""},init(){if(this._id=function(t="selectize"){return`${t}-${++h}-${Math.random().toString(36).slice(2,8)}`}(),this._config={...p,...t},this._sourceEl=this.$el.querySelector('select, input[type="text"], input[type="hidden"]'),this._sourceEl&&u(this._sourceEl)){const i=function(t){const e=[],i=[],s=[],n=(t,i=null)=>{const n=t.value,o=t.textContent.trim(),r=t.disabled;if(!n&&!o)return;const l={value:n,text:o,disabled:r};if(t.dataset.data)try{Object.assign(l,JSON.parse(t.dataset.data))}catch(c){}null!==i&&(l.optgroup=i),t.selected&&s.push(n),e.push(l)};for(const o of t.children)if("optgroup"===o.tagName.toLowerCase()){const t=o.getAttribute("label")||"";i.push({value:t,label:t,disabled:o.disabled});for(const e of o.children)n(e,t)}else"option"===o.tagName.toLowerCase()&&n(o);return{options:e,optgroups:i,selectedValues:s}}(this._sourceEl),s=this._config.options||[],n=[...i.options,...s];this._registerOptions(n);for(const t of i.optgroups)this.optgroups[t.value]=t;i.selectedValues.length&&(this.items=[...i.selectedValues]),t.mode||(this._config.mode=this._sourceEl.multiple?"multi":"single"),this._sourceEl.hasAttribute("required")&&(this.isInvalid=!this.items.length),this._sourceEl.disabled&&(this.isDisabled=!0),this._sourceEl.placeholder&&(this._config.placeholder=this._sourceEl.placeholder),this._sourceEl.style.display="none",this._sourceEl.setAttribute("tabindex","-1"),this._rtl=(e=this._sourceEl,"rtl"===window.getComputedStyle(e).direction)}else{const t=this._config.options||[];if(this._registerOptions(t),this._config.optgroups)for(const e of this._config.optgroups)this.optgroups[e[this._config.optgroupValueField]]=e;this._config.items&&(this.items=[...this._config.items])}var e;this._config.mode||(this._config.mode=1===this._config.maxItems?"single":"multi"),"single"===this._config.mode&&(this._config.maxItems=1),null===this._config.hideSelected&&(this._config.hideSelected="multi"===this._config.mode),this._sifter=new r(this.options,{diacritics:this._config.diacritics}),this._initPlugins(),this._config.load&&this._config.loadThrottle&&(this._debouncedLoad=function(t,e){let i;return function(...s){clearTimeout(i),i=setTimeout(()=>t.apply(this,s),e)}}(this._performLoad.bind(this),this._config.loadThrottle)),this._config.preload&&this.$nextTick(()=>{"focus"===this._config.preload||this._performLoad("")}),this._trigger("onInitialize"),this._onClickOutside=t=>{this.$el.contains(t.target)||(this.close(),this.blur())},document.addEventListener("mousedown",this._onClickOutside)},destroy(){document.removeEventListener("mousedown",this._onClickOutside),this._sourceEl&&(this._sourceEl.style.display="",this._sourceEl.removeAttribute("tabindex"))},_initPlugins(){const t=this._config.plugins||[];for(const e of t){const t="string"==typeof e?e:e.name,i="string"==typeof e?{}:e.options||{};f[t]?(f[t].call(this,i),this._plugins.push(t)):console.warn(`[selectize] Plugin "${t}" not found.`)}},_registerOptions(t){for(const e of t)this.addOption(e,!0)},addOption(t,e=!1){if(Array.isArray(t)){for(const i of t)this.addOption(i,e);return}const i=a(t[this._config.valueField]);null===i||this.options[i]||(t.$order=t.$order||++this._orderCounter||(this._orderCounter=1),this.options[i]=t,this.optionOrder.push(i),this._sifter&&(this._sifter.items=this.options),this._clearRenderCache(),e||this._trigger("onOptionAdd",i,t))},updateOption(t,e){const i=a(t);if(!i||!this.options[i])return;const s=a(e[this._config.valueField]);if(e.$order=this.options[i].$order,this.options[s]=e,i!==s){delete this.options[i];const t=this.optionOrder.indexOf(i);-1!==t&&(this.optionOrder[t]=s);const e=this.items.indexOf(i);-1!==e&&(this.items[e]=s)}this._sifter&&(this._sifter.items=this.options),this._clearRenderCache()},removeOption(t){const e=a(t);if(!e)return;delete this.options[e],delete this.userOptions[e];const i=this.optionOrder.indexOf(e);-1!==i&&this.optionOrder.splice(i,1),this.items=this.items.filter(t=>t!==e),this._sifter&&(this._sifter.items=this.options),this._clearRenderCache(),this._trigger("onOptionRemove",e)},clearOptions(){const t={};for(const e of this.items)this.options[e]&&(t[e]=this.options[e]);this.options=t,this.optionOrder=Object.keys(t),this.userOptions={},this._sifter&&(this._sifter.items=this.options),this._clearRenderCache()},getOption(t){return this.options[a(t)]||null},addItem(t,e=!1){const i=a(t);i&&this.options[i]&&(this.items.includes(i)||(this.isSingle&&this.items.length&&this.removeItem(this.items[0],!0),this.isFull||(this.items.push(i),this.caretPos=this.items.length,this._syncSourceElement(),this._clearRenderCache(),this.query="",(this._config.closeAfterSelect||this.isSingle)&&this.close(),this.isFull&&this.close(),e||(this._trigger("onItemAdd",i,this.options[i]),this._trigger("onChange",this.getValue())))))},removeItem(t,e=!1){const i=a(t),s=this.items.indexOf(i);-1!==s&&(this.items.splice(s,1),this.caretPos>this.items.length&&(this.caretPos=this.items.length),this._syncSourceElement(),this._clearRenderCache(),e||(this._trigger("onItemRemove",i),this._trigger("onChange",this.getValue())))},clear(t=!1){this.items.length&&(this.items=[],this.caretPos=0,this._syncSourceElement(),this._clearRenderCache(),t||(this._trigger("onClear"),this._trigger("onChange",this.getValue())))},getValue(){return this.isSingle?this.items.length?this.items[0]:"":[...this.items]},setValue(t,e=!1){this.clear(!0);const i=Array.isArray(t)?t:[t];for(const s of i)""!==s&&null!=s&&this.addItem(s,!0);e||this._trigger("onChange",this.getValue())},createItem(t=null){const e=null!==t?t:this.query;if(!e.trim())return;if(!this._config.create)return;const i=this._config.create;let s;"function"==typeof i?(s=i(e,t=>{t&&(this.addOption(t),this.addItem(t[this._config.valueField]))}),s&&"object"==typeof s&&(this.addOption(s),this.addItem(s[this._config.valueField]))):(s={},s[this._config.valueField]=e,s[this._config.labelField]=e,this.addOption(s),this.addItem(e)),this.query="",this._clearRenderCache()},_getFilteredOptions(){const t=this._config;if(!this._sifter)return[];const e=Array.isArray(t.searchField)?t.searchField:[t.searchField];let i;i=t.sortField?"string"==typeof t.sortField?[{field:t.sortField,direction:"asc"}]:Array.isArray(t.sortField)?t.sortField:[t.sortField]:[{field:"$order",direction:"asc"}];let s=this.query;t.normalize&&s&&(s=s.normalize("NFD").replace(/[\u0300-\u036f]/g,""));const n={fields:e,conjunction:t.searchConjunction,sort:i,nesting:e.some(t=>t.includes(".")),respect_word_boundaries:t.respectWordBoundaries,limit:t.maxOptions};t.score&&(n.score=t.score);let o=this._sifter.search(s,n).items.map(t=>{const e=this.options[t.id];return e?{...e,_score:t.score}:null}).filter(Boolean);return t.hideSelected&&(o=o.filter(e=>!this.items.includes(a(e[t.valueField])))),o=o.filter(e=>!e[t.disabledField]),o},open(){this.isOpen||this.isDisabled||this.isLocked||(this.isOpen=!0,this.activeIndex=this._config.setFirstOptionActive?0:-1,this._trigger("onDropdownOpen"),this.$nextTick(()=>{this._scrollToActive()}))},close(){this.isOpen&&(this.isOpen=!1,this.activeIndex=-1,this._trigger("onDropdownClose"))},toggle(){this.isOpen?this.close():this.open()},focus(){if(this.isDisabled)return;this.isFocused=!0;const t=this.$refs.searchInput;t&&this.$nextTick(()=>t.focus()),this._config.openOnFocus&&this.open(),"focus"!==this._config.preload||this.loadedSearches[""]||this._performLoad(""),this._trigger("onFocus")},blur(){this.isFocused&&(this.isFocused=!1,this._config.createOnBlur&&this.query.trim()&&this.canCreate&&this.createItem(),this.close(),this._trigger("onBlur"))},onKeyDown(t){if(this.isDisabled||this.isLocked)return;const e=this.filteredOptions,i=this.canCreate,s=e.length+(i?1:0);switch(t.key){case"ArrowDown":t.preventDefault(),this.isOpen?(this.activeIndex=Math.min(this.activeIndex+1,s-1),this._scrollToActive()):this.open();break;case"ArrowUp":t.preventDefault(),this.isOpen&&(this.activeIndex=Math.max(this.activeIndex-1,0),this._scrollToActive());break;case"Enter":t.preventDefault(),this.isOpen&&this.activeIndex>=0?this.activeIndex<e.length?this.selectOption(e[this.activeIndex]):i&&this.createItem():this.isOpen||this.open();break;case"Escape":t.preventDefault(),this.close();break;case"Tab":this.isOpen&&this._config.selectOnTab&&this.activeIndex>=0&&(t.preventDefault(),this.activeIndex<e.length?this.selectOption(e[this.activeIndex]):i&&this.createItem());break;case"Backspace":if(!this.query&&this.items.length&&this.isMultiple){t.preventDefault();const e=this.items[this.items.length-1];this.removeItem(e)}break;case"Delete":if(!this.query&&this.items.length&&this.isMultiple){t.preventDefault();const e=this.items[this.items.length-1];this.removeItem(e)}break;case"a":case"A":(t.ctrlKey||t.metaKey)&&this.isMultiple&&t.preventDefault()}},onInput(){if(this._trigger("onType",this.query),this.isOpen||this.open(),this.activeIndex=this._config.setFirstOptionActive||this.query?0:-1,this._config.load&&this.query){const t=this.query;this.loadedSearches[t]||(this._debouncedLoad?this._debouncedLoad(t):this._performLoad(t))}this.$refs.searchInput&&this.isMultiple&&d(this.$refs.searchInput)},onPaste(t){if(!this.isMultiple)return;const e=(t.clipboardData||window.clipboardData).getData("text");if(!e)return;const i=this._config.splitOn||this._config.delimiter;if(!i)return;t.preventDefault();const s=i instanceof RegExp?i:new RegExp("["+i.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")+"]"),n=e.split(s).map(t=>t.trim()).filter(Boolean);for(const o of n){const t=Object.values(this.options).find(t=>{var e,i;return(null==(e=t[this._config.labelField])?void 0:e.toLowerCase())===o.toLowerCase()||(null==(i=t[this._config.valueField])?void 0:i.toLowerCase())===o.toLowerCase()});t?this.addItem(t[this._config.valueField]):this._config.create&&this.createItem(o)}},selectOption(t){if(!t)return;if(t[this._config.disabledField])return;const e=t[this._config.valueField];this.addItem(e),this.query="",this.isSingle?(this.isFocused=!1,this.loadedSearches={},this.$refs.searchInput&&this.$refs.searchInput.blur()):this.$refs.searchInput&&(this.$refs.searchInput.focus(),d(this.$refs.searchInput))},_performLoad(t){this._config.load&&(this.loadedSearches[t]||(this.isLoading=!0,this.loadedSearches[t]=!0,this._config.load(t,t=>{if(this.isLoading=!1,t&&Array.isArray(t)){for(const e of t)this.addOption(e,!0);this._clearRenderCache()}})))},renderOption(t){var e;const i=this._config,s=t[i.labelField]||"";return(null==(e=i.render)?void 0:e.option)?i.render.option(t,l):i.highlight&&this.query?function(t,e){if(!e||!e.length)return l(t);const i=l(t),s=new RegExp("("+e.replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")+")","ig");return i.replace(s,'<span class="font-semibold text-inherit">$1</span>')}(s,this.query):l(s)},renderItem(t){var e;if(!t)return"";const i=this._config,s=t[i.labelField]||"";return(null==(e=i.render)?void 0:e.item)?i.render.item(t,l):l(s)},renderOptionCreate(){var t;const e=this._config;return(null==(t=e.render)?void 0:t.optionCreate)?e.render.optionCreate({input:this.query},l):`Add <span class="font-medium">${l(this.query)}</span>...`},renderNoResults(){var t;const e=this._config;return(null==(t=e.render)?void 0:t.noResults)?e.render.noResults({query:this.query},l):"No results found"},renderLoading(){var t;const e=this._config;return(null==(t=e.render)?void 0:t.loading)?e.render.loading({query:this.query},l):"Loading..."},addOptionGroup(t,e){this.optgroups[t]=e,this._clearRenderCache()},removeOptionGroup(t){delete this.optgroups[t],this._clearRenderCache()},getGroupedOptions(){const t=this.filteredOptions,e=this._config,i={},s=[];for(const o of t){const t=o[e.optgroupField];t&&this.optgroups[t]?(i[t]||(i[t]=[]),i[t].push(o)):s.push(o)}const n=[];for(const[o,r]of Object.entries(i)){const t=this.optgroups[o];n.push({id:o,label:t[e.optgroupLabelField]||o,options:r})}return s.length&&n.push({id:null,label:null,options:s}),n},_getGroupedView(){const t=this.getGroupedOptions();let e=0;return t.map((t,i)=>{const s={key:t.id||"__ungrouped_"+i,label:t.label,options:t.options,offset:e};return e+=t.options.length,s})},get hasOptgroups(){return Object.keys(this.optgroups).length>0},lock(){this.isLocked=!0,this.close()},unlock(){this.isLocked=!1},disable(){this.isDisabled=!0,this.close()},enable(){this.isDisabled=!1},setMaxItems(t){this._config.maxItems=t,this.isFull&&this.close()},_syncSourceElement(){var t;if(this._sourceEl)if(u(this._sourceEl)){for(const t of this._sourceEl.options)t.selected=this.items.includes(t.value);for(const e of this.items){if(!Array.from(this._sourceEl.options).some(t=>t.value===e)){const i=document.createElement("option");i.value=e,i.textContent=(null==(t=this.options[e])?void 0:t[this._config.labelField])||e,i.selected=!0,this._sourceEl.appendChild(i)}}this._sourceEl.dispatchEvent(new Event("change",{bubbles:!0}))}else this._sourceEl.value=this.isSingle?this.items[0]||"":this.items.join(this._config.delimiter),this._sourceEl.dispatchEvent(new Event("input",{bubbles:!0})),this._sourceEl.dispatchEvent(new Event("change",{bubbles:!0}))},_scrollToActive(){this.$nextTick(()=>{const t=this.$refs.dropdown;if(!t)return;const e=t.querySelector('[data-active="true"]');e&&e.scrollIntoView({block:"nearest"})})},_trigger(t,...e){const i=this._config[t];"function"==typeof i&&i.apply(this,e);const s=t.replace(/^on/,"").toLowerCase();this.$el.dispatchEvent(new CustomEvent(`selectra:${s}`,{detail:e,bubbles:!0}))},_clearRenderCache(){this._renderCache={}},isSelected(t){return this.items.includes(a(t[this._config.valueField]))},optionKey(t){return a(t[this._config.valueField])}})}function m(t,e){f[t]=e}m("remove_button",function(t={}){var e;const{label:i="×",title:s="Remove",className:n=""}=t,o=null==(e=this._config.render)?void 0:e.item;this._config.render||(this._config.render={});const r=this;this._config.render.item=function(t,e){const i=r._config.labelField;r._config.valueField;return`<span class="inline-flex items-center">${o?o(t,e):e(t[i]||"")}</span>`},this._showRemoveButton=!0,this._removeButtonLabel=i,this._removeButtonTitle=s,this._removeButtonClass=n}),m("clear_button",function(t={}){const{title:e="Clear All",className:i="",label:s="×"}=t;this._showClearButton=!0,this._clearButtonTitle=e,this._clearButtonLabel=s,this._clearButtonClass=i}),m("restore_on_backspace",function(t={}){const e=t.text||(t=>t[this._config.labelField]||""),i=this.onKeyDown.bind(this);this.onKeyDown=t=>{if("Backspace"===t.key&&!this.query&&this.items.length&&this.isMultiple){t.preventDefault();const i=this.items[this.items.length-1],s=this.options[i];return this.removeItem(i),void(s&&(this.query=e(s),this.$refs.searchInput&&(this.$refs.searchInput.value=this.query)))}i(t)}}),m("dropdown_header",function(t={}){const{title:e="",showClose:i=!0,headerClass:s=""}=t;this._dropdownHeader=!0,this._dropdownHeaderTitle=e,this._dropdownHeaderShowClose=i,this._dropdownHeaderClass=s}),m("tag_limit",function(t={}){const{tagLimit:e=3}=t;this._tagLimit=e,this._showAllTags=!1,Object.defineProperty(this,"visibleItems",{get(){const t=this.selectedItems;return this.isFocused||this._showAllTags||!this._tagLimit?t:t.slice(0,this._tagLimit)}}),Object.defineProperty(this,"hiddenItemCount",{get(){const t=this.selectedItems;return this.isFocused||this._showAllTags||!this._tagLimit?0:Math.max(0,t.length-this._tagLimit)}})}),m("auto_select_on_type",function(){const t=this.blur.bind(this);this.blur=()=>{if(this.query.trim()&&this.filteredOptions.length){const t=this.filteredOptions[0];this.selectOption(t)}this.query="",t()}}),m("select_on_focus",function(){const t=this.focus.bind(this);this.focus=()=>{if(t(),this.isSingle&&this.items.length){const t=this.options[this.items[0]];t&&(this.query=t[this._config.labelField]||"",this.$refs.searchInput&&this.$nextTick(()=>this.$refs.searchInput.select()))}}}),m("read_only",function(t={}){const{readOnly:e=!0}=t;this._isReadOnly=e,this.readonly=t=>{this._isReadOnly=void 0!==t?t:!this._isReadOnly,this._isReadOnly&&this.close()};const i=this.addItem.bind(this),s=this.removeItem.bind(this),n=this.createItem.bind(this),o=this.clear.bind(this);this.addItem=(t,e)=>{this._isReadOnly||i(t,e)},this.removeItem=(t,e)=>{this._isReadOnly||s(t,e)},this.createItem=t=>{this._isReadOnly||n(t)},this.clear=t=>{this._isReadOnly||o(t)}}),m("auto_position",function(){this._autoPosition=!0;const t=this.open.bind(this);this.open=()=>{t(),this.$nextTick(()=>{const t=this.$refs.dropdown,e=this.$el;if(!t||!e)return;const i=e.getBoundingClientRect(),s=window.innerHeight-i.bottom,n=i.top,o=t.offsetHeight||250;this._dropdownPosition=s<o&&n>s?"top":"bottom"})},this._dropdownPosition="bottom"});
|
|
2
2
|
/**
|
|
3
3
|
* Selectra - Alpine.js Plugin
|
|
4
4
|
*
|
|
@@ -9,18 +9,16 @@ var Selectra=function(t){"use strict";const e={a:"[aḀḁĂăÂâǍǎȺⱥȦȧ
|
|
|
9
9
|
*
|
|
10
10
|
* Usage:
|
|
11
11
|
*
|
|
12
|
-
* // Register the plugin
|
|
12
|
+
* // 1. Register the plugin
|
|
13
13
|
* import Alpine from 'alpinejs';
|
|
14
14
|
* import Selectra from 'selectra';
|
|
15
15
|
* Alpine.plugin(Selectra);
|
|
16
16
|
* Alpine.start();
|
|
17
17
|
*
|
|
18
|
-
* //
|
|
19
|
-
* <div x-data="selectra({ options: [...],
|
|
20
|
-
* <template x-selectra></template>
|
|
21
|
-
* </div>
|
|
18
|
+
* // 2. Use it — that's it!
|
|
19
|
+
* <div x-data="selectra({ options: [...], placeholder: 'Pick...' })" x-selectra></div>
|
|
22
20
|
*
|
|
23
|
-
* // Or
|
|
21
|
+
* // Or with a native <select> for progressive enhancement:
|
|
24
22
|
* <div x-data="selectra()" x-selectra>
|
|
25
23
|
* <select>
|
|
26
24
|
* <option value="1">One</option>
|
|
@@ -28,5 +26,5 @@ var Selectra=function(t){"use strict";const e={a:"[aḀḁĂăÂâǍǎȺⱥȦȧ
|
|
|
28
26
|
* </select>
|
|
29
27
|
* </div>
|
|
30
28
|
*/
|
|
31
|
-
|
|
29
|
+
const _='\n<div class="selectra-control" :class="{\'is-disabled\': isDisabled}">\n <div @click="focus()" class="selectra-input"\n :class="{\'is-focused\': isFocused, \'is-invalid\': isInvalid, \'is-locked\': isLocked, \'is-single\': isSingle, \'has-items\': items.length > 0}">\n <span x-show="isSingle && items.length && !isFocused"\n x-text="currentValueText"\n class="selectra-single-value"></span>\n <template x-for="val in items" :key="val">\n <span x-show="isMultiple" class="selectra-item">\n <span x-html="options[val] ? renderItem(options[val]) : val"></span>\n <span @click.stop="removeItem(val)" class="selectra-item-remove">×</span>\n </span>\n </template>\n <input x-ref="searchInput"\n x-model="query"\n @input="onInput()"\n @focus="focus()"\n @blur.debounce.150ms="blur()"\n @keydown="onKeyDown($event)"\n @paste="onPaste($event)"\n :placeholder="placeholderText"\n x-show="(isSingle || !isFull) && (isMultiple || isFocused || !items.length)"\n class="selectra-search">\n <span x-show="isFull && isMultiple" class="selectra-max-badge">Max reached</span>\n <div x-show="isLoading && !isOpen" class="selectra-spinner"></div>\n <svg x-show="isSingle"\n class="selectra-arrow" :class="{\'is-open\': isOpen}"\n fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">\n <path stroke-linecap="round" stroke-linejoin="round" d="M19 9l-7 7-7-7"/>\n </svg>\n </div>\n <div x-show="isOpen" x-ref="dropdown" x-cloak class="selectra-dropdown"\n x-transition:enter="transition ease-out duration-150"\n x-transition:enter-start="opacity-0 -translate-y-1"\n x-transition:enter-end="opacity-100 translate-y-0"\n x-transition:leave="transition ease-in duration-100"\n x-transition:leave-start="opacity-100 translate-y-0"\n x-transition:leave-end="opacity-0 -translate-y-1">\n <div class="selectra-dropdown-content">\n <template x-for="group in _getGroupedView()" :key="group.key">\n <div>\n <div x-show="group.label" x-text="group.label" class="selectra-optgroup-header"></div>\n <template x-for="(option, idx) in group.options" :key="optionKey(option)">\n <div @click="selectOption(option)"\n @mouseenter="activeIndex = group.offset + idx"\n :data-active="activeIndex === group.offset + idx"\n :class="{\'is-active\': activeIndex === group.offset + idx}"\n class="selectra-option"\n x-html="renderOption(option)">\n </div>\n </template>\n </div>\n </template>\n <div x-show="canCreate"\n @click="createItem()"\n @mouseenter="activeIndex = filteredOptions.length"\n :data-active="activeIndex === filteredOptions.length"\n :class="{\'is-active\': activeIndex === filteredOptions.length}"\n class="selectra-option-create"\n x-html="renderOptionCreate()">\n </div>\n <div x-show="filteredOptions.length === 0 && !isLoading && !canCreate"\n class="selectra-no-results"\n x-html="renderNoResults()">\n </div>\n <div x-show="isLoading" class="selectra-loading">\n <div class="selectra-spinner"></div>\n <span x-html="renderLoading()"></span>\n </div>\n </div>\n </div>\n</div>\n'.trim();function v(t){t.data("selectra",(t={})=>g(t)()),t.directive("selectra",(t,{expression:e},{evaluate:i,cleanup:s})=>{t.querySelector(".selectra-control")||t.insertAdjacentHTML("beforeend",_)})}return v.version="1.0.3",v.template=_,t.DEFAULTS=p,t.SELECTRA_TEMPLATE=_,t.Sifter=r,t.createSelectizeComponent=g,t.default=v,t.escapeHtml=l,t.getDefaults=function(){return{...p}},t.hashKey=a,t.registerPlugin=m,Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}}),t}({});
|
|
32
30
|
//# sourceMappingURL=selectra.iife.js.map
|