From 8d0a5255e664bd96a3c0524ae7b5072990dd7f59 Mon Sep 17 00:00:00 2001 From: Ethan Nguyen Date: Tue, 27 Apr 2021 21:28:07 -0400 Subject: [PATCH] feat: switch to tomselect instead of selectize.js It actually supports Bootstrap 5 --- tjdests/apps/profile/forms.py | 6 +- tjdests/static/selectize.bootstrap4.min.css | 1 - tjdests/static/selectize.js | 3 - tjdests/static/tom-select.bootstrap5.css | 433 ++++++++++++++++++++ tjdests/static/tom-select.complete.min.js | 305 ++++++++++++++ tjdests/templates/base.html | 7 +- 6 files changed, 744 insertions(+), 11 deletions(-) delete mode 100644 tjdests/static/selectize.bootstrap4.min.css delete mode 100644 tjdests/static/selectize.js create mode 100644 tjdests/static/tom-select.bootstrap5.css create mode 100644 tjdests/static/tom-select.complete.min.js diff --git a/tjdests/apps/profile/forms.py b/tjdests/apps/profile/forms.py index 4b5a9ec..3dd04ec 100644 --- a/tjdests/apps/profile/forms.py +++ b/tjdests/apps/profile/forms.py @@ -70,7 +70,7 @@ class DecisionForm(forms.ModelForm): ).count() > 0 ): - raise ValidationError("You cannot add a second entry for this college") + self.add_error("college", "You cannot add a second entry for this college") # Rolling and RD decisions cannot be deferred if cleaned_data.get("decision_type") in [ @@ -78,9 +78,7 @@ class DecisionForm(forms.ModelForm): Decision.ROLLING, ]: if "DEFER" in cleaned_data.get("admission_status", ""): - raise ValidationError( - "Regular Decision and Rolling decisions cannot result in a deferral" - ) + self.add_error("admission_status", "Regular Decision and Rolling decisions cannot result in a deferral") return cleaned_data diff --git a/tjdests/static/selectize.bootstrap4.min.css b/tjdests/static/selectize.bootstrap4.min.css deleted file mode 100644 index 4c30ed3..0000000 --- a/tjdests/static/selectize.bootstrap4.min.css +++ /dev/null @@ -1 +0,0 @@ -.selectize-control.plugin-drag_drop.multi>.selectize-input>div.ui-sortable-placeholder{visibility:visible!important;background:#f2f2f2!important;background:rgba(0,0,0,.06)!important;border:0 none!important;box-shadow:inset 0 0 12px 4px #fff}.selectize-control.plugin-drag_drop .ui-sortable-placeholder::after{content:"!";visibility:hidden}.selectize-control.plugin-drag_drop .ui-sortable-helper{box-shadow:0 2px 5px rgba(0,0,0,.2)}.selectize-control .dropdown-header{position:relative;padding:6px .75rem;border-bottom:1px solid #d0d0d0;background:#f8f8f8;border-radius:.25rem .25rem 0 0}.selectize-control .dropdown-header-close{position:absolute;right:.75rem;top:50%;color:#343a40;opacity:.4;margin-top:-12px;line-height:20px;font-size:20px!important}.selectize-control .dropdown-header-close:hover{color:#000}.selectize-dropdown.plugin-optgroup_columns .selectize-dropdown-content{display:flex}.selectize-dropdown.plugin-optgroup_columns .optgroup{border-right:1px solid #f2f2f2;border-top:0 none;flex-grow:1;flex-basis:0;min-width:0}.selectize-dropdown.plugin-optgroup_columns .optgroup:last-child{border-right:0 none}.selectize-dropdown.plugin-optgroup_columns .optgroup:before{display:none}.selectize-dropdown.plugin-optgroup_columns .optgroup-header{border-top:0 none}.selectize-control.plugin-remove_button .item{display:inline-flex;align-items:center;padding-right:0!important}.selectize-control.plugin-remove_button .item .remove{color:inherit;text-decoration:none;vertical-align:middle;display:inline-block;padding:1px 5px;border-left:1px solid #dee2e6;border-radius:0 2px 2px 0;box-sizing:border-box;margin-left:5px}.selectize-control.plugin-remove_button .item .remove:hover{background:rgba(0,0,0,.05)}.selectize-control.plugin-remove_button .item.active .remove{border-left-color:transparent}.selectize-control.plugin-remove_button .disabled .item .remove:hover{background:0 0}.selectize-control.plugin-remove_button .disabled .item .remove{border-left-color:#fff}.selectize-control.plugin-remove_button .remove-single{position:absolute;right:0;top:0;font-size:23px}.selectize-control{position:relative}.selectize-dropdown,.selectize-input,.selectize-input input{color:#343a40;font-family:inherit;font-size:inherit;line-height:1.5;font-smoothing:inherit}.selectize-control.single .selectize-input.input-active,.selectize-input{background:#fff;cursor:text;display:inline-block}.selectize-input{border:1px solid #ced4da;padding:.375rem .75rem;display:inline-block;width:100%;overflow:hidden;position:relative;z-index:1;box-sizing:border-box;box-shadow:none;border-radius:.25rem}.selectize-control.multi .selectize-input.has-items{padding:calc(.375rem - 1px - 0px) .75rem calc(.375rem - 1px - 3px - 0px)}.selectize-input.full{background-color:#fff}.selectize-input.disabled,.selectize-input.disabled *{cursor:default!important}.selectize-input.focus{box-shadow:inset 0 1px 2px rgba(0,0,0,.15)}.selectize-input.dropdown-active{border-radius:.25rem .25rem 0 0}.selectize-input>*{vertical-align:baseline;display:inline-block;zoom:1}.selectize-control.multi .selectize-input>div{cursor:pointer;margin:0 3px 3px 0;padding:1px 5px;background:#efefef;color:#343a40;border:0 solid #dee2e6}.selectize-control.multi .selectize-input>div.active{background:#007bff;color:#fff;border:0 solid transparent}.selectize-control.multi .selectize-input.disabled>div,.selectize-control.multi .selectize-input.disabled>div.active{color:#878787;background:#fff;border:0 solid #fff}.selectize-input>input{display:inline-block!important;padding:0!important;min-height:0!important;max-height:none!important;max-width:100%!important;margin:0!important;text-indent:0!important;border:0 none!important;background:0 0!important;line-height:inherit!important;user-select:auto!important;box-shadow:none!important}.selectize-input>input::-ms-clear{display:none}.selectize-input>input:focus{outline:0!important}.selectize-input>input[placeholder]{box-sizing:initial}.selectize-input.has-items>input{margin:0 4px!important}.selectize-input::after{content:" ";display:block;clear:left}.selectize-input.dropdown-active::before{content:" ";display:block;position:absolute;background:#fff;height:1px;bottom:0;left:0;right:0}.selectize-dropdown{position:absolute;top:100%;left:0;width:100%;z-index:10;border:1px solid #d0d0d0;background:#fff;margin:-1px 0 0 0;border-top:0 none;box-sizing:border-box;box-shadow:0 1px 3px rgba(0,0,0,.1);border-radius:0 0 .25rem .25rem}.selectize-dropdown [data-selectable]{cursor:pointer;overflow:hidden}.selectize-dropdown [data-selectable] .highlight{background:rgba(255,237,40,.4);border-radius:1px}.selectize-dropdown .create,.selectize-dropdown .no-results,.selectize-dropdown .optgroup-header,.selectize-dropdown .option{padding:3px .75rem}.selectize-dropdown .option,.selectize-dropdown [data-disabled],.selectize-dropdown [data-disabled] [data-selectable].option{cursor:inherit;opacity:.5}.selectize-dropdown [data-selectable].option{opacity:1;cursor:pointer}.selectize-dropdown .optgroup:first-child .optgroup-header{border-top:0 none}.selectize-dropdown .optgroup-header{color:#6c757d;background:#fff;cursor:default}.selectize-dropdown .active{background-color:#f8f9fa;color:#16181b}.selectize-dropdown .active.create{color:#16181b}.selectize-dropdown .create{color:rgba(52,58,64,.5)}.selectize-dropdown-content{overflow-y:auto;overflow-x:hidden;max-height:200px;overflow-scrolling:touch}.selectize-dropdown .spinner{display:inline-block;width:30px;height:30px;margin:3px .75rem}.selectize-dropdown .spinner:after{content:" ";display:block;width:24px;height:24px;margin:3px;border-radius:50%;border:5px solid #d0d0d0;border-color:#d0d0d0 transparent #d0d0d0 transparent;animation:lds-dual-ring 1.2s linear infinite}@keyframes lds-dual-ring{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}.selectize-control.single .selectize-input,.selectize-control.single .selectize-input input{cursor:pointer}.selectize-control.single .selectize-input.input-active,.selectize-control.single .selectize-input.input-active input{cursor:text}.selectize-control.single .selectize-input:after{content:" ";display:block;position:absolute;top:50%;right:calc(.75rem + 5px);margin-top:-3px;width:0;height:0;border-style:solid;border-width:5px 5px 0 5px;border-color:#343a40 transparent transparent transparent}.selectize-control.single .selectize-input.dropdown-active:after{margin-top:-4px;border-width:0 5px 5px 5px;border-color:transparent transparent #343a40 transparent}.selectize-control.rtl{text-align:right}.selectize-control.rtl.single .selectize-input:after{left:calc(.75rem + 5px);right:auto}.selectize-control.rtl .selectize-input>input{margin:0 4px 0 -2px!important}.selectize-control .selectize-input.disabled{opacity:.5;background-color:#fff}.selectize-dropdown,.selectize-dropdown.form-control{height:auto;padding:0;margin:2px 0 0 0;z-index:1000;background:#fff;border:1px solid rgba(0,0,0,.15);border-radius:.25rem;box-shadow:0 6px 12px rgba(0,0,0,.175)}.selectize-dropdown .optgroup-header{font-size:.875rem;line-height:1.5}.selectize-dropdown .optgroup:first-child:before{display:none}.selectize-dropdown .optgroup:before{content:" ";display:block;height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef;margin-left:-.75rem;margin-right:-.75rem}.selectize-dropdown .create{padding-left:.75rem}.selectize-dropdown-content{padding:5px 0}.selectize-input{min-height:calc(1.5em + .75rem + 2px);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.selectize-input{transition:none}}.selectize-input.dropdown-active{border-radius:.25rem}.selectize-input.dropdown-active::before{display:none}.selectize-input.focus{border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.is-invalid .selectize-input{border-color:#dc3545;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.is-invalid .selectize-input:focus{border-color:#bd2130;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #eb8c95}.selectize-control.form-control-sm .selectize-input.has-items{min-height:calc(1.5em + .5rem + 2px)!important;height:calc(1.5em + .5rem + 2px);padding:.25rem .5rem!important;font-size:.875rem;line-height:1.5}.selectize-control.multi .selectize-input.has-items{height:auto;padding-left:calc(.75rem - 5px);padding-right:calc(.75rem - 5px)}.selectize-control.multi .selectize-input>div{border-radius:calc(.25rem - 1px)}.form-control.selectize-control{padding:0;height:auto;border:none;background:0 0;box-shadow:none;border-radius:0}.input-group .selectize-input{overflow:unset;border-radius:0 .25rem .25rem 0} \ No newline at end of file diff --git a/tjdests/static/selectize.js b/tjdests/static/selectize.js deleted file mode 100644 index 1bad526..0000000 --- a/tjdests/static/selectize.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! selectize.js - v0.13.3 | https://github.com/selectize/selectize.js | Apache License (v2) */ - -!function(root,factory){"function"==typeof define&&define.amd?define("sifter",factory):"object"==typeof exports?module.exports=factory():root.Sifter=factory()}(this,function(){function Sifter(items,settings){this.items=items,this.settings=settings||{diacritics:!0}}Sifter.prototype.tokenize=function(query){if(!(query=trim(String(query||"").toLowerCase()))||!query.length)return[];for(var regex,letter,tokens=[],words=query.split(/ +/),i=0,n=words.length;i/g,">").replace(/"/g,""")}function debounce_events(self,types,fn){var type,trigger=self.trigger,event_args={};for(type in self.trigger=function(){var type=arguments[0];if(-1===types.indexOf(type))return trigger.apply(self,arguments);event_args[type]=arguments},fn.apply(self,[]),self.trigger=trigger,event_args)event_args.hasOwnProperty(type)&&trigger.apply(self,event_args[type])}function getSelection(input){var sel,selLen,result={};return void 0===input?console.warn("WARN getSelection cannot locate input control"):"selectionStart"in input?(result.start=input.selectionStart,result.length=input.selectionEnd-result.start):document.selection&&(input.focus(),sel=document.selection.createRange(),selLen=document.selection.createRange().text.length,sel.moveStart("character",-input.value.length),result.start=sel.text.length-selLen,result.length=selLen),result}function measureString(str,$parent){return str?(Selectize.$testInput||(Selectize.$testInput=$("").css({position:"absolute",width:"auto",padding:0,whiteSpace:"pre"}),$("
").css({position:"absolute",width:0,height:0,overflow:"hidden"}).append(Selectize.$testInput).appendTo("body")),Selectize.$testInput.text(str),function($from,$to,properties){var i,n,styles={};if(properties)for(i=0,n=properties.length;i").addClass(settings.wrapperClass).addClass(classes).addClass(event),$control=$("
").addClass(settings.inputClass).addClass("items").appendTo($wrapper),$control_input=$('').appendTo($control).attr("tabindex",$input.is(":disabled")?"-1":self.tabIndex),inputId=$(settings.dropdownParent||$wrapper),selector=$("
").addClass(settings.dropdownClass).addClass(event).hide().appendTo(inputId),event=$("
").addClass(settings.dropdownContentClass).attr("tabindex","-1").appendTo(selector);(inputId=$input.attr("id"))&&($control_input.attr("id",inputId+"-selectized"),$("label[for='"+inputId+"']").attr("for",inputId+"-selectized")),self.settings.copyClassesToDropdown&&selector.addClass(classes),$wrapper.css({width:$input[0].style.width}),self.plugins.names.length&&(delimiterEscaped="plugin-"+self.plugins.names.join(" plugin-"),$wrapper.addClass(delimiterEscaped),selector.addClass(delimiterEscaped)),(null===settings.maxItems||1[data-selectable]",function(e){e.stopImmediatePropagation()}),selector.on("mouseenter","[data-selectable]",function(){return self.onOptionHover.apply(self,arguments)}),selector.on("mousedown click","[data-selectable]",function(){return self.onOptionSelect.apply(self,arguments)}),event="mousedown",selector="*:not(input)",fn=function(){return self.onItemSelect.apply(self,arguments)},($parent=$control).on(event,selector,function(e){for(var child=e.target;child&&child.parentNode!==$parent[0];)child=child.parentNode;return e.currentTarget=child,fn.apply(this,[e])}),autoGrow($control_input),$control.on({mousedown:function(){return self.onMouseDown.apply(self,arguments)},click:function(){return self.onClick.apply(self,arguments)}}),$control_input.on({mousedown:function(e){e.stopPropagation()},keydown:function(){return self.onKeyDown.apply(self,arguments)},keyup:function(){return self.onKeyUp.apply(self,arguments)},keypress:function(){return self.onKeyPress.apply(self,arguments)},resize:function(){self.positionDropdown.apply(self,[])},blur:function(){return self.onBlur.apply(self,arguments)},focus:function(){return self.ignoreBlur=!1,self.onFocus.apply(self,arguments)},paste:function(){return self.onPaste.apply(self,arguments)}}),$document.on("keydown"+eventNS,function(e){self.isCmdDown=e[IS_MAC?"metaKey":"ctrlKey"],self.isCtrlDown=e[IS_MAC?"altKey":"ctrlKey"],self.isShiftDown=e.shiftKey}),$document.on("keyup"+eventNS,function(e){e.keyCode===KEY_CTRL&&(self.isCtrlDown=!1),16===e.keyCode&&(self.isShiftDown=!1),e.keyCode===KEY_CMD&&(self.isCmdDown=!1)}),$document.on("mousedown"+eventNS,function(e){if(self.isFocused){if(e.target===self.$dropdown[0]||e.target.parentNode===self.$dropdown[0])return!1;self.$control.has(e.target).length||e.target===self.$control[0]||self.blur(e.target)}}),$window.on(["scroll"+eventNS,"resize"+eventNS].join(" "),function(){self.isOpen&&self.positionDropdown.apply(self,arguments)}),$window.on("mousemove"+eventNS,function(){self.ignoreHover=!1}),this.revertSettings={$children:$input.children().detach(),tabindex:$input.attr("tabindex")},$input.attr("tabindex",-1).hide().after(self.$wrapper),$.isArray(settings.items)&&(self.lastValidValue=settings.items,self.setValue(settings.items),delete settings.items),SUPPORTS_VALIDITY_API&&$input.on("invalid"+eventNS,function(e){e.preventDefault(),self.isInvalid=!0,self.refreshState()}),self.updateOriginalInput(),self.refreshItems(),self.refreshState(),self.updatePlaceholder(),self.isSetup=!0,$input.is(":disabled")&&self.disable(),self.on("change",this.onChange),$input.data("selectize",self),$input.addClass("selectized"),self.trigger("initialize"),!0===settings.preload&&self.onSearchChange("")},setupTemplates:function(){var field_label=this.settings.labelField,field_optgroup=this.settings.optgroupLabelField,templates={optgroup:function(data){return'
'+data.html+"
"},optgroup_header:function(data,escape){return'
'+escape(data[field_optgroup])+"
"},option:function(data,escape){return'
'+escape(data[field_label])+"
"},item:function(data,escape){return'
'+escape(data[field_label])+"
"},option_create:function(data,escape){return'
Add '+escape(data.input)+"
"}};this.settings.render=$.extend({},templates,this.settings.render)},setupCallbacks:function(){var key,fn,callbacks={initialize:"onInitialize",change:"onChange",item_add:"onItemAdd",item_remove:"onItemRemove",clear:"onClear",option_add:"onOptionAdd",option_remove:"onOptionRemove",option_clear:"onOptionClear",optgroup_add:"onOptionGroupAdd",optgroup_remove:"onOptionGroupRemove",optgroup_clear:"onOptionGroupClear",dropdown_open:"onDropdownOpen",dropdown_close:"onDropdownClose",type:"onType",load:"onLoad",focus:"onFocus",blur:"onBlur",dropdown_item_activate:"onDropdownItemActivate",dropdown_item_deactivate:"onDropdownItemDeactivate"};for(key in callbacks)callbacks.hasOwnProperty(key)&&(fn=this.settings[callbacks[key]])&&this.on(key,fn)},onClick:function(e){this.isFocused&&this.isOpen||(this.focus(),e.preventDefault())},onMouseDown:function(e){var self=this,defaultPrevented=e.isDefaultPrevented();$(e.target);if(self.isFocused){if(e.target!==self.$control_input[0])return"single"===self.settings.mode?self.isOpen?self.close():self.open():defaultPrevented||self.setActiveItem(null),!1}else defaultPrevented||window.setTimeout(function(){self.focus()},0)},onChange:function(){""!==this.getValue()&&(this.lastValidValue=this.getValue()),this.$input.trigger("input"),this.$input.trigger("change")},onPaste:function(e){var self=this;self.isFull()||self.isInputHidden||self.isLocked?e.preventDefault():self.settings.splitOn&&setTimeout(function(){var pastedText=self.$control_input.val();if(pastedText.match(self.settings.splitOn))for(var splitInput=$.trim(pastedText).split(self.settings.splitOn),i=0,n=splitInput.length;i=this.settings.maxItems},updateOriginalInput:function(opts){var i,n,options,label;if(opts=opts||{},1===this.tagType){for(options=[],i=0,n=this.items.length;i'+escape_html(label)+"");options.length||this.$input.attr("multiple")||options.push(''),this.$input.html(options.join(""))}else this.$input.val(this.getValue()),this.$input.attr("value",this.$input.val());this.isSetup&&(opts.silent||this.trigger("change",this.$input.val()))},updatePlaceholder:function(){var $input;this.settings.placeholder&&($input=this.$control_input,this.items.length?$input.removeAttr("placeholder"):$input.attr("placeholder",this.settings.placeholder),$input.triggerHandler("update",{force:!0}))},open:function(){this.isLocked||this.isOpen||"multi"===this.settings.mode&&this.isFull()||(this.focus(),this.isOpen=!0,this.refreshState(),this.$dropdown.css({visibility:"hidden",display:"block"}),this.positionDropdown(),this.$dropdown.css({visibility:"visible"}),this.trigger("dropdown_open",this.$dropdown))},close:function(){var trigger=this.isOpen;"single"===this.settings.mode&&this.items.length&&(this.hideInput(),this.isBlurring&&this.$control_input.blur()),this.isOpen=!1,this.$dropdown.hide(),this.setActiveOption(null),this.refreshState(),trigger&&this.trigger("dropdown_close",this.$dropdown)},positionDropdown:function(){var $control=this.$control,offset="body"===this.settings.dropdownParent?$control.offset():$control.position();offset.top+=$control.outerHeight(!0),this.$dropdown.css({width:$control[0].getBoundingClientRect().width,top:offset.top,left:offset.left})},clear:function(silent){this.items.length&&(this.$control.children(":not(input)").remove(),this.items=[],this.lastQuery=null,this.setCaret(0),this.setActiveItem(null),this.updatePlaceholder(),this.updateOriginalInput({silent:silent}),this.refreshState(),this.showInput(),this.trigger("clear"))},insertAtCaret:function(target){var caret=Math.min(this.caretPos,this.items.length),el=target[0],target=this.buffer||this.$control[0];0===caret?target.insertBefore(el,target.firstChild):target.insertBefore(el,target.childNodes[caret]),this.setCaret(caret+1)},deleteSelection:function(e){var i,n,values,option_select,$option_select,caret,direction=e&&8===e.keyCode?-1:1,selection=getSelection(this.$control_input[0]);if(this.$activeOption&&!this.settings.hideSelected&&(option_select=this.getAdjacentOption(this.$activeOption,-1).attr("data-value")),values=[],this.$activeItems.length){for(caret=this.$control.children(".active:"+(0
'+data.title+'×
'}},options),self.setup=(original=self.setup,function(){original.apply(self,arguments),self.$dropdown_header=$(options.html(options)),self.$dropdown.prepend(self.$dropdown_header)})}),Selectize.define("optgroup_columns",function(options){var original,self=this;options=$.extend({equalizeWidth:!0,equalizeHeight:!0},options),this.getAdjacentOption=function($option,index){var $options=$option.closest("[data-group]").find("[data-selectable]"),index=$options.index($option)+index;return 0<=index&&index<$options.length?$options.eq(index):$()},this.onKeyDown=(original=self.onKeyDown,function(e){var $option,$options;return!this.isOpen||37!==e.keyCode&&39!==e.keyCode?original.apply(this,arguments):(self.ignoreHover=!0,$option=($options=this.$activeOption.closest("[data-group]")).find("[data-selectable]").index(this.$activeOption),void(($option=($options=($options=37===e.keyCode?$options.prev("[data-group]"):$options.next("[data-group]")).find("[data-selectable]")).eq(Math.min($options.length-1,$option))).length&&this.setActiveOption($option)))});function equalizeSizes(){var i,height_max,width_last,width_parent,$optgroups=$("[data-group]",self.$dropdown_content),n=$optgroups.length;if(n&&self.$dropdown_content.width()){if(options.equalizeHeight){for(i=height_max=0;i
',div=div.firstChild,doc.body.appendChild(div),width=getScrollbarWidth.width=div.offsetWidth-div.clientWidth,doc.body.removeChild(div)),width};(options.equalizeHeight||options.equalizeWidth)&&(hook.after(this,"positionDropdown",equalizeSizes),hook.after(this,"refreshOptions",equalizeSizes))}),Selectize.define("remove_button",function(options){options=$.extend({label:"×",title:"Remove",className:"remove",append:!0},options);("single"===this.settings.mode?function(thisRef,options){options.className="remove-single";var original,self=thisRef,html=''+options.label+"";thisRef.setup=(original=self.setup,function(){var id,render_item;options.append&&(id=$(self.$input.context).attr("id"),$("#"+id),render_item=self.settings.render.item,self.settings.render.item=function(data){return html_container=render_item.apply(thisRef,arguments),html_element=html,$("").append(html_container).append(html_element);var html_container,html_element}),original.apply(thisRef,arguments),thisRef.$control.on("click","."+options.className,function(e){e.preventDefault(),self.isLocked||self.clear()})})}:function(thisRef,options){var original,self=thisRef,html=''+options.label+"";thisRef.setup=(original=self.setup,function(){var render_item;options.append&&(render_item=self.settings.render.item,self.settings.render.item=function(data){return html_container=render_item.apply(thisRef,arguments),html_element=html,pos=html_container.search(/(<\/[^>]+>\s*)$/),html_container.substring(0,pos)+html_element+html_container.substring(pos);var html_container,html_element,pos}),original.apply(thisRef,arguments),thisRef.$control.on("click","."+options.className,function($item){if($item.preventDefault(),!self.isLocked){$item=$($item.currentTarget).parent();return self.setActiveItem($item),self.deleteSelection()&&self.setCaret(self.items.length),!1}})})})(this,options)}),Selectize.define("restore_on_backspace",function(options){var original,self=this;options.text=options.text||function(option){return option[this.settings.labelField]},this.onKeyDown=(original=self.onKeyDown,function(e){var option;return 8===e.keyCode&&""===this.$control_input.val()&&!this.$activeItems.length&&0<=(option=this.caretPos-1)&&option .ts-input > div.ui-sortable-placeholder { + visibility: visible !important; + background: #f2f2f2 !important; + background: rgba(0, 0, 0, 0.06) !important; + border: 0 none !important; + box-shadow: inset 0 0 12px 4px #fff; } + +.ts-control.plugin-drag_drop .ui-sortable-placeholder::after { + content: '!'; + visibility: hidden; } + +.ts-control.plugin-drag_drop .ui-sortable-helper { + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); } + +.plugin-checkbox_options .option input { + margin-right: 0.5rem; } + +.plugin-clear_button .items { + padding-right: calc( 1em + (3 * 5px)) !important; } + +.plugin-clear_button .clear-button { + opacity: 0; + position: absolute; + top: 0.375rem; + right: calc(0.75rem - 5px); + margin-right: 0 !important; + background: transparent !important; + transition: opacity 0.5s; } + +.plugin-clear_button .has-items.focus .clear-button, +.plugin-clear_button:hover .has-items .clear-button { + opacity: 1; } + +.ts-control .dropdown-header { + position: relative; + padding: 6px 0.75rem; + border-bottom: 1px solid #d0d0d0; + background: #f8f8f8; + border-radius: 0.25rem 0.25rem 0 0; } + +.ts-control .dropdown-header-close { + position: absolute; + right: 0.75rem; + top: 50%; + color: #343a40; + opacity: 0.4; + margin-top: -12px; + line-height: 20px; + font-size: 20px !important; } + +.ts-control .dropdown-header-close:hover { + color: black; } + +.plugin-dropdown_input .ts-input.focus { + box-shadow: none; + border: 1px solid #ced4da; } + +.plugin-dropdown_input .dropdown-input { + border: 1px solid #d0d0d0; + border-width: 0 0 1px 0; + display: block; + padding: 0.375rem 0.75rem; + box-shadow: none; + width: 100%; + background: transparent; } + +.plugin-dropdown_input .focus ~ .ts-dropdown .dropdown-input { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); } + +.ts-control.plugin-input_autogrow .ts-input.has-items > input { + min-width: 0; } + +.ts-control.plugin-input_autogrow .ts-input.focus.has-items > input { + flex: none; } + +.ts-dropdown.plugin-optgroup_columns .ts-dropdown-content { + display: flex; } + +.ts-dropdown.plugin-optgroup_columns .optgroup { + border-right: 1px solid #f2f2f2; + border-top: 0 none; + flex-grow: 1; + flex-basis: 0; + min-width: 0; } + +.ts-dropdown.plugin-optgroup_columns .optgroup:last-child { + border-right: 0 none; } + +.ts-dropdown.plugin-optgroup_columns .optgroup:before { + display: none; } + +.ts-dropdown.plugin-optgroup_columns .optgroup-header { + border-top: 0 none; } + +.ts-control.plugin-remove_button .item { + display: inline-flex; + align-items: center; + padding-right: 0 !important; } + +.ts-control.plugin-remove_button .item .remove { + color: inherit; + text-decoration: none; + vertical-align: middle; + display: inline-block; + padding: 1px 5px; + border-left: 1px solid #dee2e6; + border-radius: 0 2px 2px 0; + box-sizing: border-box; + margin-left: 5px; } + +.ts-control.plugin-remove_button .item .remove:hover { + background: rgba(0, 0, 0, 0.05); } + +.ts-control.plugin-remove_button .item.active .remove { + border-left-color: rgba(0, 0, 0, 0); } + +.ts-control.plugin-remove_button .disabled .item .remove:hover { + background: none; } + +.ts-control.plugin-remove_button .disabled .item .remove { + border-left-color: white; } + +.ts-control.plugin-remove_button .remove-single { + position: absolute; + right: 0; + top: 0; + font-size: 23px; } + +.ts-control { + position: relative; } + +.ts-dropdown, +.ts-input, +.ts-input input { + color: #343a40; + font-family: inherit; + font-size: inherit; + line-height: 1.5; + font-smoothing: inherit; } + +.ts-input, +.ts-control.single .ts-input.input-active { + background: #fff; + cursor: text; } + +.ts-input { + border: 1px solid #ced4da; + padding: 0.375rem 0.75rem; + width: 100%; + overflow: hidden; + position: relative; + z-index: 1; + box-sizing: border-box; + box-shadow: none; + border-radius: 0.25rem; + display: flex; + flex-wrap: wrap; } + .ts-control.multi .ts-input.has-items { + padding: calc( 0.375rem - 1px - 0px) 0.75rem calc( 0.375rem - 1px - 3px - 0px); } + .ts-input.full { + background-color: #fff; } + .ts-input.disabled, .ts-input.disabled * { + cursor: default !important; } + .ts-input.focus { + box-shadow: none; } + .ts-input.dropdown-active { + border-radius: 0.25rem 0.25rem 0 0; } + .ts-input > * { + vertical-align: baseline; + display: inline-block; } + .ts-control.multi .ts-input > div { + cursor: pointer; + margin: 0 3px 3px 0; + padding: 1px 5px; + background: #efefef; + color: #343a40; + border: 0px solid #dee2e6; } + .ts-control.multi .ts-input > div.active { + background: #0d6efd; + color: #fff; + border: 0px solid rgba(0, 0, 0, 0); } + .ts-control.multi .ts-input.disabled > div, .ts-control.multi .ts-input.disabled > div.active { + color: #868787; + background: white; + border: 0px solid white; } + .ts-input > input { + flex: 1 1 auto; + min-width: 7rem; + display: inline-block !important; + padding: 0 !important; + min-height: 0 !important; + max-height: none !important; + max-width: 100% !important; + margin: 0 !important; + text-indent: 0 !important; + border: 0 none !important; + background: none !important; + line-height: inherit !important; + -webkit-user-select: auto !important; + -moz-user-select: auto !important; + -ms-user-select: auto !important; + user-select: auto !important; + box-shadow: none !important; } + .ts-input > input::-ms-clear { + display: none; } + .ts-input > input:focus { + outline: none !important; } + .ts-input.has-items > input { + margin: 0 4px !important; } + .ts-input::after { + content: ' '; + display: block; + clear: left; } + .ts-input.dropdown-active::before { + content: ' '; + display: block; + position: absolute; + background: white; + height: 1px; + bottom: 0; + left: 0; + right: 0; } + .ts-input.rtl { + text-align: right; } + .ts-input.rtl.single .ts-input:after { + left: calc(0.75rem + 5px); + right: auto; } + .ts-input.rtl .ts-input > input { + margin: 0 4px 0 -2px !important; } + .ts-input .ts-input.disabled { + opacity: 0.5; + background-color: #fff; } + .input-hidden .ts-input > input { + opacity: 0; } + +.ts-dropdown { + position: absolute; + top: 100%; + left: 0; + width: 100%; + z-index: 10; + display: none; + border: 1px solid #d0d0d0; + background: #fff; + margin: 0.25rem 0 0 0; + border-top: 0 none; + box-sizing: border-box; + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); + border-radius: 0 0 0.25rem 0.25rem; } + .ts-dropdown [data-selectable] { + cursor: pointer; + overflow: hidden; } + .ts-dropdown [data-selectable] .highlight { + background: rgba(255, 237, 40, 0.4); + border-radius: 1px; } + .ts-dropdown .option, + .ts-dropdown .optgroup-header, + .ts-dropdown .no-results, + .ts-dropdown .create { + padding: 3px 0.75rem; } + .ts-dropdown .option, .ts-dropdown [data-disabled], .ts-dropdown [data-disabled] [data-selectable].option { + cursor: inherit; + opacity: 0.5; } + .ts-dropdown [data-selectable].option { + opacity: 1; + cursor: pointer; } + .ts-dropdown .optgroup:first-child .optgroup-header { + border-top: 0 none; } + .ts-dropdown .optgroup-header { + color: #6c757d; + background: #fff; + cursor: default; } + .ts-dropdown .create:hover, + .ts-dropdown .option:hover, + .ts-dropdown .active { + background-color: #e9ecef; + color: #1e2125; } + .ts-dropdown .create:hover.create, + .ts-dropdown .option:hover.create, + .ts-dropdown .active.create { + color: #1e2125; } + .ts-dropdown .create { + color: rgba(52, 58, 64, 0.5); } + .ts-dropdown .spinner { + display: inline-block; + width: 30px; + height: 30px; + margin: 3px 0.75rem; } + .ts-dropdown .spinner:after { + content: " "; + display: block; + width: 24px; + height: 24px; + margin: 3px; + border-radius: 50%; + border: 5px solid #d0d0d0; + border-color: #d0d0d0 transparent #d0d0d0 transparent; + animation: lds-dual-ring 1.2s linear infinite; } + +@keyframes lds-dual-ring { + 0% { + transform: rotate(0deg); } + 100% { + transform: rotate(360deg); } } + +.ts-dropdown-content { + overflow-y: auto; + overflow-x: hidden; + max-height: 200px; + overflow-scrolling: touch; + scroll-behavior: smooth; } + +.ts-dropdown, +.ts-dropdown.form-control, +.ts-dropdown.form-select { + height: auto; + padding: 0; + z-index: 1000; + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; + box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); } + +.ts-dropdown .optgroup-header { + font-size: 0.875rem; + line-height: 1.5; } + +.ts-dropdown .optgroup:first-child:before { + display: none; } + +.ts-dropdown .optgroup:before { + content: ' '; + display: block; + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid rgba(0, 0, 0, 0.15); + margin-left: -0.75rem; + margin-right: -0.75rem; } + +.ts-dropdown .create { + padding-left: 0.75rem; } + +.ts-dropdown-content { + padding: 5px 0; } + +.ts-input { + min-height: calc(1.5em + 0.75rem + 2px); + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; } + @media (prefers-reduced-motion: reduce) { + .ts-input { + transition: none; } } + .ts-input.dropdown-active { + border-radius: 0.25rem; } + .ts-input.dropdown-active::before { + display: none; } + .ts-input.focus { + border-color: #86b7fe; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); } + +.is-invalid .ts-input, +.was-validated .ts-input.invalid { + border-color: #dc3545; } + .is-invalid .ts-input.focus, + .was-validated .ts-input.invalid.focus { + border-color: #bd2130; + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); } + +.is-valid .ts-input { + border-color: #198754; } + .is-valid .ts-input.focus { + border-color: #198754; + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); } + +.ts-control.form-select-sm .ts-input.has-items, .ts-control.form-control-sm .ts-input.has-items { + min-height: calc(1.5em + 0.5rem + 2px) !important; + height: calc(1.5em + 0.5rem + 2px) !important; + padding: 0.25rem 0.5rem !important; + font-size: 0.875rem; } + +.ts-control.multi .ts-input.has-items { + padding-left: calc(0.75rem - 5px); + padding-right: calc(0.75rem - 5px); } + +.ts-control.multi .ts-input > div { + border-radius: calc(0.25rem - 1px); } + +.ts-control:not(.form-select) { + padding: 0; + border: none; + height: auto; + box-shadow: none; + background: none; } + .ts-control:not(.form-select).single .ts-input { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; } + +.ts-control.form-select { + padding: 0; + height: auto; + box-shadow: none; } + .ts-control.form-select .ts-input, + .ts-control.form-select.single .ts-input.input-active { + border: none !important; + background: transparent !important; } + +.input-group .ts-input { + overflow: unset; + border-radius: 0 0.25rem 0.25rem 0; } + +/*# sourceMappingURL=tom-select.bootstrap5.css.map */ \ No newline at end of file diff --git a/tjdests/static/tom-select.complete.min.js b/tjdests/static/tom-select.complete.min.js new file mode 100644 index 0000000..ead2dcd --- /dev/null +++ b/tjdests/static/tom-select.complete.min.js @@ -0,0 +1,305 @@ +/** +* Tom Select v1.6.0 +* Licensed under the Apache License, Version 2.0 (the "License"); +*/ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).TomSelect=t()}(this,(function(){"use strict" +function e(e,t){e.split(/\s+/).forEach((e=>{t(e)}))}class t{constructor(){this._events={}}on(t,i){e(t,(e=>{this._events[e]=this._events[e]||[],this._events[e].push(i)}))}off(t,i){var s=arguments.length +0!==s?e(t,(e=>{if(1===s)return delete this._events[e] +e in this._events!=!1&&this._events[e].splice(this._events[e].indexOf(i),1)})):this._events={}}trigger(t,...i){var s=this +e(t,(e=>{if(e in s._events!=!1)for(let t of s._events[e])t.apply(s,i)}))}}var i=[[67,67],[160,160],[192,438],[452,652],[961,961],[1019,1019],[1083,1083],[1281,1289],[1984,1984],[5095,5095],[7429,7441],[7545,7549],[7680,7935],[8580,8580],[9398,9449],[11360,11391],[42792,42793],[42802,42851],[42873,42897],[42912,42922],[64256,64260],[65313,65338],[65345,65370]] +function s(e){return e.normalize("NFD").replace(/[\u0300-\u036F]/g,"").normalize("NFKD").toLowerCase()}var n=null +function o(e){null===n&&(n=function(){var e={"l·":"l","ʼn":"n","æ":"ae","ø":"o","aʾ":"a","dž":"dz"},t={} +return i.forEach((i=>{for(let s=i[0];s<=i[1];s++){let i=String.fromCharCode(s),n=i.normalize("NFD").replace(/[\u0300-\u036F]/g,"").normalize("NFKD") +n!=i&&(n=n.toLowerCase(),n in e&&(n=e[n]),n in t||(t[n]=n+n.toUpperCase()),t[n]+=i)}})),t}()) +for(let t in n)n.hasOwnProperty(t)&&(e=e.replace(new RegExp(t,"g"),"["+n[t]+"]")) +return e}function r(e,t){if(e)return e[t]}function a(e,t){if(e){for(var i=t.split(".");i.length&&(e=e[i.shift()]););return e}}function l(e,t,i){var s,n +return e?-1===(n=(e=String(e||"")).search(t.regex))?0:(s=t.string.length/e.length,0===n&&(s+=.5),s*i):0}function d(e){return(e+"").replace(/([.?*+^$[\]\\(){}|-])/g,"\\$1")}function c(e,t){var i=e[t] +i&&!Array.isArray(i)&&(e[t]=[i])}function p(e,t){if(Array.isArray(e))e.forEach(t) +else for(var i in e)e.hasOwnProperty(i)&&t(e[i],i)}function u(e,t){return"number"==typeof e&&"number"==typeof t?e>t?1:e(t=s(String(t||"")).toLowerCase())?1:t>e?-1:0}class h{constructor(e,t){this.items=void 0,this.settings=void 0,this.items=e,this.settings=t||{diacritics:!0}}tokenize(e,t,i){if(!e||!e.length)return[] +var s,n=[],r=e.split(/\s+/) +return i&&(s=new RegExp("^("+Object.keys(i).map(d).join("|")+"):(.*)$")),r.forEach((e=>{let i,r=null,a=null +s&&(i=e.match(s))&&(r=i[1],e=i[2]),e.length>0&&(a=d(e),this.settings.diacritics&&(a=o(a)),t&&(a="\\b"+a),a=new RegExp(a,"i")),n.push({string:e,regex:a,field:r})})),n}getScoreFunction(e,t){var i=this.prepareSearch(e,t) +return this._getScoreFunction(i)}_getScoreFunction(e){const t=e.tokens,i=t.length +if(!i)return function(){return 0} +const s=e.options.fields,n=e.weights,o=s.length,r=e.getAttrFn +var a=o?1===o?function(e,t){const i=s[0].field +return l(r(t,i),e,n[i])}:function(e,t){var i=0 +if(e.field){const s=r(t,e.field) +!e.regex&&s?i+=.1:i+=l(s,e,n[e.field])}else p(n,((s,n)=>{i+=l(r(t,n),e,s)})) +return i/o}:function(){return 0} +return 1===i?function(e){return a(t[0],e)}:"and"===e.options.conjunction?function(e){for(var s,n=0,o=0;n{s+=a(t,e)})),s/i}}getSortFunction(e,t){var i=this.prepareSearch(e,t) +return this._getSortFunction(i)}_getSortFunction(e){var t,i,s,n,o,r,a,l,d,c,p,h +if(s=this,h=e.options,p=!e.query&&h.sort_empty||h.sort,d=function(t,i){return"$score"===t?i.score:e.getAttrFn(s.items[i.id],t)},o=[],p)for(t=0,i=p.length;t{o.push({field:e})})),n.fields=o}n.fields.forEach((e=>{i[e.field]="weight"in e?e.weight:1}))}return{options:n,query:e=s(String(e||"")).toLowerCase().trim(),tokens:this.tokenize(e,n.respect_word_boundaries,i),total:0,items:[],weights:i,getAttrFn:n.nesting?a:r}}search(e,t){var i,s,n,o,r=this +return s=this.prepareSearch(e,t),t=s.options,e=s.query,o=t.score||r._getScoreFunction(s),e.length?p(r.items,((e,n)=>{i=o(e),(!1===t.filter||i>0)&&s.items.push({score:i,id:n})})):p(r.items,((e,t)=>{s.items.push({score:1,id:t})})),(n=r._getSortFunction(s))&&s.items.sort(n),s.total=s.items.length,"number"==typeof t.limit&&(s.items=s.items.slice(0,t.limit)),s}}function g(e,t){if(null!==t){if("string"==typeof t){if(!t.length)return +t=new RegExp(t,"i")}!function e(i){var s=0 +if(3===i.nodeType){var n=i.data.search(t) +if(n>=0&&i.data.length>0){var o=i.data.match(t),r=document.createElement("span") +r.className="highlight" +var a=i.splitText(n) +a.splitText(o[0].length) +var l=a.cloneNode(!0) +r.appendChild(l),a.parentNode.replaceChild(r,a),s=1}}else if(1===i.nodeType&&i.childNodes&&!/(script|style)/i.test(i.tagName)&&("highlight"!==i.className||"SPAN"!==i.tagName))for(var d=0;d0},render:{}} +function m(e){return null==e?null:"boolean"==typeof e?e?"1":"0":e+""}function y(e){return(e+"").replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function O(e,t,i){var s,n=e.trigger,o={} +for(s in e.trigger=function(){var i=arguments[0] +if(-1===t.indexOf(i))return n.apply(e,arguments) +o[i]=arguments},i.apply(e,[]),e.trigger=n,o)n.apply(e,o[s])}function b(e,t=!1){e&&(e.preventDefault(),t&&e.stopPropagation())}function w(e,t,i,s){e.addEventListener(t,i,s)}function I(e,t){return!!t&&(!!t[e]&&1===(t.altKey?1:0)+(t.ctrlKey?1:0)+(t.shiftKey?1:0)+(t.metaKey?1:0))}function C(e,t){const i=e.getAttribute("id") +return i||(e.setAttribute("id",t),t)}function _(e,t){var i=Object.assign({},v,t),s=i.dataAttr,n=i.labelField,o=i.valueField,r=i.disabledField,a=i.optgroupField,l=i.optgroupLabelField,d=i.optgroupValueField,c=e.tagName.toLowerCase(),p=e.getAttribute("placeholder")||e.getAttribute("data-placeholder") +if(!p&&!i.allowEmptyOption){let t=e.querySelector('option[value=""]') +t&&(p=t.textContent)}var u={placeholder:p,options:[],optgroups:[],items:[],maxItems:null} +return"select"===c?(()=>{var t,c=u.options,p={},h=1,g=e=>{var t=Object.assign({},e.dataset),i=s&&t[s] +return"string"==typeof i&&i.length&&(t=Object.assign(t,JSON.parse(i))),t},f=(e,t)=>{var s=m(e.value) +if(s||i.allowEmptyOption)if(p.hasOwnProperty(s)){if(t){var l=p[s][a] +l?Array.isArray(l)?l.push(t):p[s][a]=[l,t]:p[s][a]=t}}else{var d=g(e) +d[n]=d[n]||e.textContent,d[o]=d[o]||s,d[r]=d[r]||e.disabled,d[a]=d[a]||t,d.$option=e,p[s]=d,c.push(d),e.selected&&u.items.push(s)}},v=e=>{var t,i;(i=g(e))[l]=i[l]||e.getAttribute("label")||"",i[d]=i[d]||h++,i[r]=i[r]||e.disabled,u.optgroups.push(i),t=i[d] +for(const i of e.children)f(i,t)} +u.maxItems=e.hasAttribute("multiple")?null:1 +for(const i of e.children)"optgroup"===(t=i.tagName.toLowerCase())?v(i):"option"===t&&f(i)})():(()=>{var t,r,a=e.getAttribute(s) +if(a){u.options=JSON.parse(a) +for(const e of u.options)u.items.push(e[o])}else{var l=e.value.trim()||"" +if(!i.allowEmptyOption&&!l.length)return +t=l.split(i.delimiter) +for(const e of t)(r={})[n]=e,r[o]=e,u.options.push(r) +u.items=t}})(),Object.assign({},v,u,t)}function S(e){if(e.jquery)return e[0] +if(e instanceof HTMLElement)return e +if(e.indexOf("<")>-1){let t=document.createElement("div") +return t.innerHTML=e.trim(),t.firstChild}return document.querySelector(e)}function A(e,t){var i=document.createEvent("HTMLEvents") +i.initEvent(t,!0,!1),e.dispatchEvent(i)}function x(e,t){Object.assign(e.style,t)}function F(e,...t){var i=L(t);(e=P(e)).map((e=>{i.map((t=>{e.classList.add(t)}))}))}function k(e,...t){var i=L(t);(e=P(e)).map((e=>{i.map((t=>{e.classList.remove(t)}))}))}function L(e){var t=[] +for(let i of e)"string"==typeof i&&(i=i.trim().split(/[\11\12\14\15\40]/)),Array.isArray(i)&&(t=t.concat(i)) +return t.filter(Boolean)}function P(e){return Array.isArray(e)||(e=[e]),e}function E(e,t,i){if(!i||i.contains(e))for(;e&&e.matches;){if(e.matches(t))return e +e=e.parentNode}}function T(e,t){return t>0?e[e.length-1]:e[0]}function q(e,t){if(!e)return-1 +t=t||e.nodeName +for(var i=0;e=e.previousElementSibling;)e.matches(t)&&i++ +return i}function V(e,t){for(const i in t)e.setAttribute(i,t[i])}var D=0 +class j extends(function(e){return e.plugins={},class extends e{static define(t,i){e.plugins[t]={name:t,fn:i}}initializePlugins(e){var t,i,s,n=this,o=[] +if(n.plugins={names:[],settings:{},requested:{},loaded:{}},Array.isArray(e))for(t=0,i=e.length;tn.test(e):this.settings.createFilter=()=>!0),this.initializePlugins(this.settings.plugins),this.setupCallbacks(),this.setupTemplates(),this.setup()}setup(){var e,t,i,s,n,o,r,a,l,d=this,c=d.settings,p=d.input +const u={passive:!0},h=d.inputId+"-ts-dropdown" +if(o=d.settings.mode,r=p.getAttribute("class")||"",F(e=S("
"),c.wrapperClass,r,o),F(t=S('
'),c.inputClass),e.append(t),F(s=d.render("dropdown"),c.dropdownClass,o),F(n=S(`
`),c.dropdownContentClass),s.append(n),S(c.dropdownParent||e).appendChild(s),c.controlInput)i=S(c.controlInput) +else{i=S('') +for(const e of["autocorrect","autocapitalize","autocomplete"])p.getAttribute(e)&&V(i,{[e]:p.getAttribute(e)})}c.controlInput||(i.tabIndex=p.disabled?-1:d.tabIndex,t.appendChild(i)),V(i,{role:"combobox",haspopup:"listbox","aria-expanded":"false","aria-controls":h}),l=C(i,d.inputId+"-tomselected") +let g="label[for='"+function(e){return e.replace(/['"\\]/g,"\\$&")}(d.inputId)+"']",f=document.querySelector(g) +if(f){V(f,{for:l}),V(n,{"aria-labelledby":C(f,d.inputId+"-ts-label")})}if(d.settings.copyClassesToDropdown&&F(s,r),e.style.width=p.style.width,d.plugins.names.length&&(a="plugin-"+d.plugins.names.join(" plugin-"),F([e,s],a)),(null===c.maxItems||c.maxItems>1)&&d.is_select_tag&&V(p,{multiple:"multiple"}),d.settings.placeholder&&V(i,{placeholder:c.placeholder}),!d.settings.splitOn&&d.settings.delimiter){var v=d.settings.delimiter.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&") +d.settings.splitOn=new RegExp("\\s*"+v+"+\\s*")}var m,y,O +this.settings.load&&this.settings.loadThrottle&&(this.settings.load=(m=this.settings.load,y=this.settings.loadThrottle,function(e,t){var i=this +O&&(i.loading=Math.max(i.loading-1,0)),clearTimeout(O),O=setTimeout((function(){O=null,i.loadedSearches[e]=!0,m.call(i,e,t)}),y)})),d.control=t,d.control_input=i,d.wrapper=e,d.dropdown=s,d.dropdown_content=n,d.control_input.type=p.type,w(s,"mouseenter",(e=>{var t=E(e.target,"[data-selectable]",s) +if(t)return d.onOptionHover(e,t)}),{capture:!0}),w(t,"mousedown",(e=>{if(e.target==i)return d.clearActiveItems(),e.stopPropagation(),void d.inputState() +var s=E(e.target,"."+d.settings.itemClass,t) +return s?d.onItemSelect(e,s):d.onMouseDown(e)})),w(t,"click",(e=>d.onClick(e))),w(i,"keydown",(e=>d.onKeyDown(e))),w(i,"keyup",(e=>d.onKeyUp(e))),w(i,"keypress",(e=>d.onKeyPress(e))),w(i,"resize",(()=>d.positionDropdown()),u),w(i,"blur",(e=>d.onBlur(e))),w(i,"focus",(e=>{d.ignoreBlur=!1,d.onFocus(e)})),w(i,"paste",(e=>d.onPaste(e))) +var I=e=>{var t=E(e.target,"[data-selectable]",d.dropdown) +if(!t&&!d.wrapper.contains(e.target))return d.isFocused&&d.blur(),void d.inputState() +b(e,!0),t&&d.onOptionSelect(e,t)},_=()=>{d.isOpen&&d.positionDropdown()} +w(document,"mousedown",I),w(window,"sroll",_,u),w(window,"resize",_,u),d._destroy=()=>{document.removeEventListener("mousedown",I),window.removeEventListener("sroll",_),window.removeEventListener("resize",_)},this.revertSettings={innerHTML:p.innerHTML,tabIndex:p.tabIndex},p.tabIndex=-1,V(p,{hidden:"hidden"}),p.insertAdjacentElement("afterend",d.wrapper),d.setValue(c.items),delete c.items,w(p,"invalid",(e=>{b(e),d.isInvalid||(d.isInvalid=!0,d.refreshState())})),d.updateOriginalInput(),d.refreshItems(),d.refreshState(),d.inputState(),d.isSetup=!0,p.disabled&&d.disable(),d.on("change",this.onChange),F(p,"tomselected"),d.trigger("initialize"),!0===c.preload&&d.load("")}setupOptions(e=[],t=[]){for(const t of e)this.registerOption(t) +for(const e of t)this.registerOptionGroup(e)}setupTemplates(){var e=this,t=e.settings.labelField,i=e.settings.optgroupLabelField,s={optgroup:(e,t)=>{let i=document.createElement("div") +return i.className="optgroup",i.appendChild(e.options),i},optgroup_header:(e,t)=>'
'+t(e[i])+"
",option:(e,i)=>"
"+i(e[t])+"
",item:(e,i)=>"
"+i(e[t])+"
",option_create:(e,t)=>'
Add '+t(e.input)+"
",no_results:(e,t)=>'
No results found
',loading:(e,t)=>'
',not_loading:()=>{},dropdown:()=>"
"} +e.settings.render=Object.assign({},s,e.settings.render)}setupCallbacks(){var e,t,i={initialize:"onInitialize",change:"onChange",item_add:"onItemAdd",item_remove:"onItemRemove",clear:"onClear",option_add:"onOptionAdd",option_remove:"onOptionRemove",option_clear:"onOptionClear",optgroup_add:"onOptionGroupAdd",optgroup_remove:"onOptionGroupRemove",optgroup_clear:"onOptionGroupClear",dropdown_open:"onDropdownOpen",dropdown_close:"onDropdownClose",type:"onType",load:"onLoad",focus:"onFocus",blur:"onBlur"} +for(e in i)(t=this.settings[i[e]])&&this.on(e,t)}onClick(e){var t=this +t.isFocused&&t.isOpen||(t.focus(),b(e))}onMouseDown(e){var t=this +if(t.isFocused)return"single"!==t.settings.mode&&t.setActiveItem(),t.open(),!1 +setTimeout((()=>t.focus()),0)}onChange(){A(this.input,"input"),A(this.input,"change")}onPaste(e){var t=this +t.isFull()||t.isInputHidden||t.isLocked?b(e):t.settings.splitOn&&setTimeout((()=>{var e=t.inputValue() +if(e.match(t.settings.splitOn)){var i=e.trim().split(t.settings.splitOn) +for(const e of i)t.createItem(e)}}),0)}onKeyPress(e){var t=this +if(!t.isLocked){var i=String.fromCharCode(e.keyCode||e.which) +return t.settings.create&&"multi"===t.settings.mode&&i===t.settings.delimiter?(t.createItem(),void b(e)):void 0}b(e)}onKeyDown(e){var t=this +if(t.isLocked)9!==e.keyCode&&b(e) +else{switch(e.keyCode){case 65:if(I(f,e))return void t.selectAll() +break +case 27:return t.isOpen&&(b(e,!0),t.close()),void t.clearActiveItems() +case 40:if(!t.isOpen&&t.hasOptions)t.open() +else if(t.activeOption){let e=t.getAdjacent(t.activeOption,1) +e&&t.setActiveOption(e)}return void b(e) +case 38:if(t.activeOption){let e=t.getAdjacent(t.activeOption,-1) +e&&t.setActiveOption(e)}return void b(e) +case 13:return void(t.isOpen&&t.activeOption?(t.onOptionSelect(e,t.activeOption),b(e)):t.settings.create&&t.createItem()&&b(e)) +case 37:return void t.advanceSelection(-1,e) +case 39:return void t.advanceSelection(1,e) +case 9:return void(t.settings.selectOnTab&&(t.isOpen&&t.activeOption&&(t.tab_key=!0,t.onOptionSelect(e,t.activeOption),b(e),t.tab_key=!1),t.settings.create&&t.createItem()&&b(e))) +case 8:case 46:return void t.deleteSelection(e)}t.isInputHidden&&!I(f,e)&&b(e)}}onKeyUp(e){var t=this +if(t.isLocked)b(e) +else{var i=t.inputValue() +t.lastValue!==i&&(t.lastValue=i,t.settings.shouldLoad.call(t,i)&&t.load(i),t.refreshOptions(),t.trigger("type",i))}}onFocus(e){var t=this,i=t.isFocused +if(t.isDisabled)return t.blur(),void b(e) +t.ignoreFocus||(t.isFocused=!0,"focus"===t.settings.preload&&t.load(""),i||t.trigger("focus"),t.activeItems.length||(t.showInput(),t.setActiveItem(),t.refreshOptions(!!t.settings.openOnFocus)),t.refreshState())}onBlur(e){var t=this +if(t.isFocused){if(t.isFocused=!1,t.ignoreFocus=!1,!t.ignoreBlur&&document.activeElement===t.dropdown_content)return t.ignoreBlur=!0,void t.onFocus(e) +var i=()=>{t.close(),t.setActiveItem(),t.setCaret(t.items.length),t.trigger("blur")} +t.settings.create&&t.settings.createOnBlur?t.createItem(null,!1,i):i()}}onOptionHover(e,t){}onOptionSelect(e,t){var i,s=this +t&&(t.parentElement&&t.parentElement.matches("[data-disabled]")||(t.classList.contains("create")?s.createItem(null,!0,(()=>{s.settings.closeAfterSelect&&s.close()})):void 0!==(i=t.dataset.value)&&(s.lastQuery=null,s.addItem(i),s.settings.closeAfterSelect?s.close():!s.settings.hideSelected&&e.type&&/mouse/.test(e.type)&&s.setActiveOption(s.getOption(i)))))}onItemSelect(e,t){var i=this +i.isLocked||"multi"===i.settings.mode&&(b(e),i.setActiveItem(t,e))}load(e){var t=this,i=t.settings.load +if(!i)return +if(t.loadedSearches.hasOwnProperty(e))return +F(t.wrapper,t.settings.loadingClass),t.loading++ +const s=t.loadCallback.bind(t) +i.call(t,e,s)}loadCallback(e,t){const i=this +i.loading=Math.max(i.loading-1,0),i.lastQuery=null,i.clearActiveOption(),i.setupOptions(e,t),i.refreshOptions(i.isFocused&&!i.isInputHidden),i.loading||k(i.wrapper,i.settings.loadingClass),i.trigger("load",e,t)}onSearchChange(e){this.load(e)}setTextboxValue(e=""){var t=this.control_input +t.value!==e&&(t.value=e,A(t,"update"),this.lastValue=e)}getValue(){return this.is_select_tag&&this.input.hasAttribute("multiple")?this.items:this.items.join(this.settings.delimiter)}setValue(e,t){O(this,t?[]:["change"],(()=>{this.clear(t),this.addItems(e,t)}))}setMaxItems(e){0===e&&(e=null),this.settings.maxItems=e,this.refreshState()}setActiveItem(e,t){var i,s,n,o,r,a,l=this +if("single"!==l.settings.mode){if(!e)return l.clearActiveItems(),void(l.isFocused&&l.showInput()) +if("mousedown"===(i=t&&t.type.toLowerCase())&&I("shiftKey",t)&&l.activeItems.length){for(a=l.getLastActive(),(n=Array.prototype.indexOf.call(l.control.children,a))>(o=Array.prototype.indexOf.call(l.control.children,e))&&(r=n,n=o,o=r),s=n;s<=o;s++)e=l.control.children[s],-1===l.activeItems.indexOf(e)&&l.setActiveItemClass(e) +b(t)}else"mousedown"===i&&I(f,t)||"keydown"===i&&I("shiftKey",t)?e.classList.contains("active")?l.removeActiveItem(e):l.setActiveItemClass(e):(l.clearActiveItems(),l.setActiveItemClass(e)) +l.hideInput(),l.isFocused||l.focus()}}setActiveItemClass(e){var t=this.control.querySelector(".last-active") +t&&k(t,"last-active"),F(e,"active last-active"),-1==this.activeItems.indexOf(e)&&this.activeItems.push(e)}removeActiveItem(e){var t=this.activeItems.indexOf(e) +this.activeItems.splice(t,1),k(e,"active")}clearActiveItems(){k(this.activeItems,"active"),this.activeItems=[]}setActiveOption(e){var t,i,s +if(e===this.activeOption)return +if(this.clearActiveOption(),!e)return +this.activeOption=e,V(this.control_input,{"aria-activedescendant":e.getAttribute("id")}),V(e,{"aria-selected":"true"}),F(e,"active"),t=this.dropdown_content.clientHeight +let n=this.dropdown_content.scrollTop||0 +i=this.activeOption.offsetHeight,(s=this.activeOption.getBoundingClientRect().top-this.dropdown_content.getBoundingClientRect().top+n)+i>t+n?this.dropdown_content.scrollTop=s-t+i:s0||!e.isFocused&&this.settings.hidePlaceholder&&e.items.length>0?(e.setTextboxValue(),e.isInputHidden=!0,F(e.wrapper,"input-hidden")):(e.isInputHidden=!1,k(e.wrapper,"input-hidden")))}hideInput(){this.inputState()}showInput(){this.inputState()}inputValue(){return this.control_input.value.trim()}focus(){var e=this +e.isDisabled||(e.ignoreFocus=!0,e.control_input.focus(),setTimeout((()=>{e.ignoreFocus=!1,e.onFocus()}),0))}blur(){this.control_input.blur(),this.onBlur(null)}getScoreFunction(e){return this.sifter.getScoreFunction(e,this.getSearchOptions())}getSearchOptions(){var e,t=this.settings +return"string"==typeof t.sortField&&(e=[{field:t.sortField}]),{fields:t.searchField,conjunction:t.searchConjunction,sort:e,nesting:t.nesting}}search(e){var t,i,s,n=this,o=n.settings,r=this.getSearchOptions() +if(o.score&&"function"!=typeof(s=n.settings.score.call(n,e)))throw new Error('Tom Select "score" setting must be a function that returns a function') +if(e!==n.lastQuery?(n.lastQuery=e,i=n.sifter.search(e,Object.assign(r,{score:s})),n.currentResults=i):i=Object.assign({},n.currentResults),o.hideSelected)for(t=i.items.length-1;t>=0;t--)-1!==n.items.indexOf(m(i.items[t].id))&&i.items.splice(t,1) +return i}refreshOptions(e=!0){var t,i,s,n,o,r,a,l,d,c,p,u,h,f=this,v=f.inputValue(),y=f.search(v),O=f.activeOption&&m(f.activeOption.dataset.value),b=f.settings.shouldOpen||!1 +for(n=y.items.length,"number"==typeof f.settings.maxOptions&&(n=Math.min(n,f.settings.maxOptions)),n>0&&(b=!0),u={},o=[],t=0;t0&&(l=l.cloneNode(!0),k(l,"active"),l.removeAttribute("aria-selected")),u[r].appendChild(l)}for(r of(this.settings.lockOptgroupOrder&&o.sort(((e,t)=>(f.optgroups[e]&&f.optgroups[e].$order||0)-(f.optgroups[t]&&f.optgroups[t].$order||0))),l=document.createDocumentFragment(),o))if(f.optgroups.hasOwnProperty(r)&&u[r].children.length){let e=document.createDocumentFragment() +e.append(f.render("optgroup_header",f.optgroups[r])),e.append(u[r]) +let t=f.render("optgroup",{group:f.optgroups[r],options:e}) +l.append(t)}else l.append(u[r]) +if(f.dropdown_content.innerHTML="",f.dropdown_content.append(l),f.settings.highlight&&(f.dropdown_content,h=document.querySelectorAll("span.highlight"),Array.prototype.forEach.call(h,(function(e,t){var i=e.parentNode +i.replaceChild(e.firstChild,e),i.normalize()})),y.query.length&&y.tokens.length))for(const e of y.tokens)g(f.dropdown_content,e.regex) +var w=e=>{let t=f.render(e,{input:v}) +return t&&(b=!0,f.dropdown_content.insertBefore(t,f.dropdown_content.firstChild)),t} +if(f.settings.shouldLoad.call(f,v)?f.loading?w("loading"):0===y.items.length&&w("no_results"):w("not_loading"),(d=f.canCreate(v))&&(p=w("option_create")),f.hasOptions=y.items.length>0||d,b){if(y.items.length>0){if(!(c=O&&f.getOption(O))||!f.dropdown_content.contains(c)){let e=0 +p&&!f.settings.addPrecedence&&(e=1),c=f.selectable()[e]}}else c=p +f.setActiveOption(c),e&&!f.isOpen&&f.open()}else f.clearActiveOption(),e&&f.isOpen&&f.close(!1)}selectable(){return this.dropdown_content.querySelectorAll("[data-selectable]")}addOption(e){var t,i=this +if(Array.isArray(e))for(const t of e)i.addOption(t) +else(t=i.registerOption(e))&&(i.userOptions[t]=!0,i.lastQuery=null,i.trigger("option_add",t,e))}registerOption(e){var t=m(e[this.settings.valueField]) +return null!==t&&!this.options.hasOwnProperty(t)&&(e.$order=e.$order||++this.order,e.$id=this.inputId+"-opt-"+this.options_i++,this.options[t]=e,t)}registerOptionGroup(e){var t=m(e[this.settings.optgroupValueField]) +return null!==t&&(e.$order=e.$order||++this.order,this.optgroups[t]=e,t)}addOptionGroup(e,t){var i +t[this.settings.optgroupValueField]=e,(i=this.registerOptionGroup(t))&&this.trigger("optgroup_add",i,t)}removeOptionGroup(e){this.optgroups.hasOwnProperty(e)&&(delete this.optgroups[e],this.clearCache(),this.trigger("optgroup_remove",e))}clearOptionGroups(){this.optgroups={},this.clearCache(),this.trigger("optgroup_clear")}updateOption(e,t){var i,s,n,o,r,a,l,d=this +if(e=m(e),n=m(t[d.settings.valueField]),null!==e&&d.options.hasOwnProperty(e)){if("string"!=typeof n)throw new Error("Value must be set in option data") +l=d.options[e].$order,n!==e&&(delete d.options[e],-1!==(o=d.items.indexOf(e))&&d.items.splice(o,1,n)),t.$order=t.$order||l,d.options[n]=t,r=d.renderCache.item,a=d.renderCache.option,r&&(delete r[e],delete r[n]),a&&(delete a[e],delete a[n]),-1!==d.items.indexOf(n)&&(i=d.getItem(e),s=d.render("item",t),i.classList.contains("active")&&F(s,"active"),i.parentNode.insertBefore(s,i),i.remove()),d.lastQuery=null,d.isOpen&&d.refreshOptions(!1)}}removeOption(e,t){var i=this +e=m(e) +var s=i.renderCache.item,n=i.renderCache.option +s&&delete s[e],n&&delete n[e],delete i.userOptions[e],delete i.options[e],i.lastQuery=null,i.trigger("option_remove",e),i.removeItem(e,t)}clearOptions(){this.loadedSearches={},this.userOptions={},this.clearCache() +var e={} +for(let t in this.options)this.options.hasOwnProperty(t)&&this.items.indexOf(t)>=0&&(e[t]=this.options[t]) +this.options=this.sifter.items=e,this.lastQuery=null,this.trigger("option_clear")}getOption(e){return this.renderCache.option.hasOwnProperty(e)?this.renderCache.option[e]:this.getElementWithValue(e,this.selectable())}getAdjacent(e,t,i="option"){var s +if(e){s="item"==i?this.controlChildren():this.dropdown_content.querySelectorAll("[data-selectable]") +for(let i=0;i0?s[i+1]:s[i-1]}}getElementWithValue(e,t){if(null!==(e=m(e)))for(const i of t){let t=i +if(t.getAttribute("data-value")===e)return t}}getItem(e){return this.getElementWithValue(e,this.control.children)}addItems(e,t){var i=this +i.buffer=document.createDocumentFragment() +for(const e of i.control.children)i.buffer.appendChild(e) +var s=Array.isArray(e)?e:[e] +for(let e=0,n=(s=s.filter((e=>-1===i.items.indexOf(e)))).length;e{var i,s,n=this,o=n.settings.mode +if(e=m(e),(-1===n.items.indexOf(e)||("single"===o&&n.close(),"single"!==o&&n.settings.duplicates))&&n.options.hasOwnProperty(e)&&("single"===o&&n.clear(t),"multi"!==o||!n.isFull())){if(i=n.render("item",n.options[e]),n.control.contains(i)&&(i=i.cloneNode(!0)),s=n.isFull(),n.items.splice(n.caretPos,0,e),n.insertAtCaret(i),n.isSetup){let s=n.selectable() +if(!n.isPending){let t=n.getOption(e),i=n.getAdjacent(t,1) +n.refreshOptions(n.isFocused&&"single"!==o),i&&n.setActiveOption(i)}!s.length||n.isFull()?n.close():n.isPending||n.positionDropdown(),n.trigger("item_add",e,i),n.isPending||n.updateOriginalInput({silent:t})}(!n.isPending||!s&&n.isFull())&&n.refreshState()}}))}removeItem(e,t){var i,s,n=this,o=n.getItem(e) +o&&(e=m(o.dataset.value),-1!==(i=n.items.indexOf(e))&&(o.remove(),o.classList.contains("active")&&(s=n.activeItems.indexOf(o),n.activeItems.splice(s,1),k(o,"active")),n.items.splice(i,1),n.lastQuery=null,!n.settings.persist&&n.userOptions.hasOwnProperty(e)&&n.removeOption(e,t),i{}),!n.canCreate(e))return i(),!1 +n.lock() +var r=!1,a=e=>{if(n.unlock(),!e||"object"!=typeof e)return i() +var s=m(e[n.settings.valueField]) +if("string"!=typeof s)return i() +n.setTextboxValue(),n.addOption(e),n.setCaret(o),n.addItem(s),n.refreshOptions(t&&"single"!==n.settings.mode),i(e),r=!0} +return s="function"==typeof n.settings.create?n.settings.create.call(this,e,a):{[n.settings.labelField]:e,[n.settings.valueField]:e},r||a(s),!0}refreshItems(){var e=this +e.lastQuery=null,e.isSetup&&e.addItems(e.items),e.updateOriginalInput(),e.refreshState()}refreshState(){var e=this +e.refreshValidityState() +var t=e.isFull(),i=e.isLocked +e.wrapper.classList.toggle("rtl",e.rtl) +var s,n=e.control.classList +n.toggle("focus",e.isFocused),n.toggle("disabled",e.isDisabled),n.toggle("required",e.isRequired),n.toggle("invalid",e.isInvalid),n.toggle("locked",i),n.toggle("full",t),n.toggle("not-full",!t),n.toggle("input-active",e.isFocused&&!e.isInputHidden),n.toggle("dropdown-active",e.isOpen),n.toggle("has-options",(s=e.options,0===Object.keys(s).length)),n.toggle("has-items",e.items.length>0)}refreshValidityState(){var e=this +if(e.input.checkValidity){this.isRequired&&(e.input.required=!0) +var t=!e.input.checkValidity() +e.isInvalid=t,e.control_input.required=t,this.isRequired&&(e.input.required=!t)}}isFull(){return null!==this.settings.maxItems&&this.items.length>=this.settings.maxItems}updateOriginalInput(e={}){var t,i,s=this +if(s.is_select_tag)for(s.input.querySelectorAll("option[selected]").forEach((e=>{-1==s.items.indexOf(e.value)&&(e.selected=!1,e.removeAttribute("selected"))})),t=s.items.length-1;t>=0;t--){var n +if(i=s.items[t],!(n=s.options[i].$option)){const e=s.options[i][s.settings.labelField]||"" +n=S('"),s.options[i].$option=n}n.selected=!0,V(n,{selected:"true"}),s.input.prepend(n)}else s.input.value=s.getValue() +s.isSetup&&(e.silent||s.trigger("change",s.getValue()))}open(){var e=this +e.isLocked||e.isOpen||"multi"===e.settings.mode&&e.isFull()||(e.isOpen=!0,V(e.control_input,{"aria-expanded":"true"}),e.refreshState(),x(e.dropdown,{visibility:"hidden",display:"block"}),e.positionDropdown(),x(e.dropdown,{visibility:"visible",display:"block"}),e.focus(),e.trigger("dropdown_open",e.dropdown))}close(e=!0){var t=this,i=t.isOpen +e&&t.setTextboxValue(),"single"===t.settings.mode&&t.items.length&&(t.hideInput(),t.tab_key||t.blur()),t.isOpen=!1,V(t.control_input,{"aria-expanded":"false"}),x(t.dropdown,{display:"none"}),t.clearActiveOption(),t.refreshState(),i&&t.trigger("dropdown_close",t.dropdown)}positionDropdown(){if("body"===this.settings.dropdownParent){var e=this.control,t=e.getBoundingClientRect(),i=e.offsetHeight+t.top+window.scrollY,s=t.left+window.scrollX +x(this.dropdown,{width:t.width+"px",top:i+"px",left:s+"px"})}}clear(e){var t=this +if(t.items.length){var i=t.controlChildren() +for(const e of i)e.remove() +t.items=[],t.lastQuery=null,t.setCaret(0),t.setActiveItem(),t.updateOriginalInput({silent:e}),t.refreshState(),t.showInput(),t.trigger("clear")}}insertAtCaret(e){var t=this,i=Math.min(t.caretPos,t.items.length),s=t.buffer||t.control +0===i?s.insertBefore(e,s.firstChild):s.insertBefore(e,s.children[i]),t.setCaret(i+1)}deleteSelection(e){var t,i,s,n,o,r=this +if(t=e&&8===e.keyCode?-1:1,i={start:(o=r.control_input).selectionStart,length:o.selectionEnd-o.selectionStart},s=[],r.activeItems.length){n=q(T(r.activeItems,t)),t>0&&n++ +for(const e of r.activeItems)s.push(e.dataset.value)}else(r.isFocused||"single"===r.settings.mode)&&r.items.length&&(t<0&&0===i.start&&0===i.length?s.push(r.items[r.caretPos-1]):t>0&&i.start===r.inputValue().length&&s.push(r.items[r.caretPos])) +if(!s.length||"function"==typeof r.settings.onDelete&&!1===r.settings.onDelete.call(r,s,e))return!1 +for(b(e,!0),void 0!==n&&r.setCaret(n);s.length;)r.removeItem(s.pop()) +return r.showInput(),r.positionDropdown(),r.refreshOptions(!1),!0}advanceSelection(e,t){var i,s,n,o=this +o.rtl&&(e*=-1),o.inputValue().length||(I(f,t)||I("shiftKey",t)?(n=(s=o.getLastActive(e))?s.classList.contains("active")?o.getAdjacent(s,e,"item"):s:e>0?o.control_input.nextElementSibling:o.control_input.previousElementSibling)&&(n.classList.contains("active")&&o.removeActiveItem(s),o.setActiveItemClass(n)):o.isFocused&&!o.activeItems.length?o.setCaret(o.caretPos+e):(s=o.getLastActive(e))&&(i=q(s),o.setCaret(e>0?i+1:i),o.setActiveItem()))}getLastActive(e){let t=this.control.querySelector(".last-active") +if(t)return t +var i=this.control.querySelectorAll(".active") +return i?T(i,e):void 0}setCaret(e){var t=this +"single"===t.settings.mode||t.settings.controlInput?e=t.items.length:(e=Math.max(0,Math.min(t.items.length,e)))==t.caretPos||t.isPending||t.controlChildren().forEach(((i,s)=>{s{if(i)i=!1 +else{i=!0 +var e=_(t.input,{}) +t.setupOptions(e.options,e.optgroups),t.setValue(e.items)}}))})),j.define("checkbox_options",(function(e){var t=this,i=t.onOptionSelect +t.settings.hideSelected=!1 +var s=function(e){var t=e.querySelector("input") +e.classList.contains("selected")?t.checked=!0:t.checked=!1} +t.hook("after","setupTemplates",(()=>{var e=t.settings.render.option +t.settings.render.option=function(i){var s=S(e.apply(t,arguments)),n=document.createElement("input") +n.addEventListener("click",(function(e){b(e)})),n.type="checkbox" +var o=m(i[t.settings.valueField]) +return t.items.indexOf(o)>-1&&(n.checked=!0),s.prepend(n),s}})),t.on("item_remove",(e=>{var i=t.getOption(e) +i&&(i.classList.remove("selected"),s(i))})),t.hook("instead","onOptionSelect",(function(e,s){return s.classList.contains("selected")?(s.classList.remove("selected"),t.removeItem(s.dataset.value),t.refreshOptions(),void b(e,!0)):i.apply(t,arguments)})),t.hook("after","onOptionSelect",((e,t)=>{s(t)}))})),j.define("clear_button",(function(e){var t=this +e=Object.assign({className:"clear-button",title:"Clear All",html:e=>`
×
`},e),t.hook("after","setup",(()=>{var i=S(e.html(e)) +i.addEventListener("click",(e=>{for(;t.items.length>0;)t.removeItem(t.items[0],!0) +t.updateOriginalInput(),e.preventDefault(),e.stopPropagation()})),t.control.appendChild(i)}))})),j.define("drag_drop",(function(e){var t=this +if(!$.fn.sortable)throw new Error('The "drag_drop" plugin requires jQuery UI "sortable".') +if("multi"===t.settings.mode){var i=t.lock,s=t.unlock +t.hook("instead","lock",(function(){var e=t.control.dataset.sortable +return e&&e.disable(),i.apply(t,arguments)})),t.hook("instead","unlock",(function(){var e=t.control.dataset.sortable +return e&&e.enable(),s.apply(t,arguments)})),t.hook("after","setup",(()=>{var e=$(t.control).sortable({items:"[data-value]",forcePlaceholderSize:!0,disabled:t.isLocked,start:(t,i)=>{i.placeholder.css("width",i.helper.css("width")),e.css({overflow:"visible"})},stop:()=>{e.css({overflow:"hidden"}) +var i=[] +e.children("[data-value]").each((function(){i.push($(this).attr("data-value"))})),t.setValue(i)}})}))}})),j.define("dropdown_header",(function(e){var t=this +e=Object.assign({title:"Untitled",headerClass:"dropdown-header",titleRowClass:"dropdown-header-title",labelClass:"dropdown-header-label",closeClass:"dropdown-header-close",html:e=>'
'+e.title+'×
'},e),t.hook("after","setup",(()=>{var i=S(e.html(e)),s=i.querySelector("."+e.closeClass) +s&&s.addEventListener("click",(e=>{b(e,!0),t.close()})),t.dropdown.insertBefore(i,t.dropdown.firstChild)}))})),j.define("dropdown_input",(function(){var e=this,t=e.settings.controlInput||'' +t=S(t),e.settings.placeholder&&V(t,{placeholder:e.settings.placeholder}),e.settings.controlInput=t,e.settings.shouldOpen=!0,e.hook("after","setup",(()=>{V(e.wrapper,{tabindex:e.input.disabled?"-1":e.tabIndex}),w(e.wrapper,"keypress",(t=>{if(!e.control.contains(t.target)&&!e.dropdown.contains(t.target))switch(t.keyCode){case 13:return void e.onClick(t)}})) +let i=S('