feat: switch to tomselect instead of selectize.js

It actually supports Bootstrap 5
This commit is contained in:
Ethan Nguyen 2021-04-27 21:28:07 -04:00
parent f992e44f76
commit 8d0a5255e6
No known key found for this signature in database
GPG Key ID: B4CA5339AF911920
6 changed files with 744 additions and 11 deletions

View File

@ -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

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,433 @@
/**
* Tom Select bootstrap 5
*/
/**
* tom-select.css (v1.6.0)
* Copyright (c) contributors
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this
* file except in compliance with the License. You may obtain a copy of the License at:
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
* ANY KIND, either express or implied. See the License for the specific language
* governing permissions and limitations under the License.
*
*/
.ts-control.plugin-drag_drop.multi > .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 */

View File

@ -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?-1:0:(e=s(String(e||"")).toLowerCase())>(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<i;n++){if((s=a(t[n],e))<=0)return 0
o+=s}return o/i}:function(e){var s=0
return p(t,(t=>{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<i;t++)(e.query||"$score"!==p[t].field)&&o.push(p[t])
if(e.query){for(c=!0,t=0,i=o.length;t<i;t++)if("$score"===o[t].field){c=!1
break}c&&o.unshift({field:"$score",direction:"desc"})}else for(t=0,i=o.length;t<i;t++)if("$score"===o[t].field){o.splice(t,1)
break}for(l=[],t=0,i=o.length;t<i;t++)l.push("desc"===o[t].direction?-1:1)
return(r=o.length)?1===r?(n=o[0].field,a=l[0],function(e,t){return a*u(d(n,e),d(n,t))}):function(e,t){var i,s,n
for(i=0;i<r;i++)if(n=o[i].field,s=l[i]*u(d(n,e),d(n,t)))return s
return 0}:null}prepareSearch(e,t){const i={}
var n=Object.assign({},t)
if(c(n,"sort"),c(n,"sort_empty"),n.fields){if(c(n,"fields"),Array.isArray(n.fields)&&"object"!=typeof n.fields[0]){var o=[]
n.fields.forEach((e=>{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;d<i.childNodes.length;++d)d+=e(i.childNodes[d])
return s}(e)}}const f="undefined"!=typeof navigator&&/Mac/.test(navigator.userAgent)?"metaKey":"ctrlKey"
var v={options:[],optgroups:[],plugins:[],delimiter:",",splitOn:null,persist:!0,diacritics:!0,create:null,createOnBlur:!1,createFilter:null,highlight:!0,openOnFocus:!0,shouldOpen:null,maxOptions:50,maxItems:null,hideSelected:null,duplicates:!1,addPrecedence:!1,selectOnTab:!1,preload:null,allowEmptyOption:!1,closeAfterSelect:!1,loadThrottle:300,loadingClass:"loading",dataAttr:null,optgroupField:"optgroup",valueField:"value",labelField:"text",disabledField:"disabled",optgroupLabelField:"label",optgroupValueField:"value",lockOptgroupOrder:!1,sortField:"$order",searchField:["text"],searchConjunction:"and",mode:null,wrapperClass:"ts-control",inputClass:"ts-input",dropdownClass:"ts-dropdown",dropdownContentClass:"ts-dropdown-content",itemClass:"item",optionClass:"option",dropdownParent:null,controlInput:null,copyClassesToDropdown:!0,placeholder:null,hidePlaceholder:null,shouldLoad:function(e){return e.length>0},render:{}}
function m(e){return null==e?null:"boolean"==typeof e?e?"1":"0":e+""}function y(e){return(e+"").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;")}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;t<i;t++)"string"==typeof e[t]?o.push(e[t]):(n.plugins.settings[e[t].name]=e[t].options,o.push(e[t].name))
else if(e)for(s in e)e.hasOwnProperty(s)&&(n.plugins.settings[s]=e[s],o.push(s))
for(;o.length;)n.require(o.shift())}loadPlugin(t){var i=this,s=i.plugins,n=e.plugins[t]
if(!e.plugins.hasOwnProperty(t))throw new Error('Unable to find "'+t+'" plugin')
s.requested[t]=!0,s.loaded[t]=n.fn.apply(i,[i.plugins.settings[t]||{}]),s.names.push(t)}require(e){var t=this,i=t.plugins
if(!t.plugins.loaded.hasOwnProperty(e)){if(i.requested[e])throw new Error('Plugin has circular dependency ("'+e+'")')
t.loadPlugin(e)}return i.loaded[e]}}}(t)){constructor(e,t){var i
super(),this.control_input=void 0,this.wrapper=void 0,this.dropdown=void 0,this.control=void 0,this.dropdown_content=void 0,this.order=0,this.settings=void 0,this.input=void 0,this.tabIndex=void 0,this.is_select_tag=void 0,this.rtl=void 0,this.inputId=void 0,this._destroy=void 0,this.sifter=void 0,this.tab_key=!1,this.isOpen=!1,this.isDisabled=!1,this.isRequired=void 0,this.isInvalid=!1,this.isLocked=!1,this.isFocused=!1,this.isInputHidden=!1,this.isSetup=!1,this.ignoreFocus=!1,this.ignoreBlur=!1,this.hasOptions=!1,this.currentResults=null,this.lastValue="",this.caretPos=0,this.loading=0,this.loadedSearches={},this.activeOption=null,this.activeItems=[],this.optgroups={},this.options={},this.options_i=0,this.userOptions={},this.items=[],this.renderCache={item:{},option:{}},D++
var s=S(e)
if(s.tomselect)throw new Error("Tom Select already initialized on this element")
s.tomselect=this,i=(window.getComputedStyle&&window.getComputedStyle(s,null)).getPropertyValue("direction"),this.settings=_(s,t),this.input=s,this.tabIndex=s.tabIndex||0,this.is_select_tag="select"===s.tagName.toLowerCase(),this.rtl=/rtl/i.test(i),this.inputId=C(s,"tomselect-"+D),this.isRequired=s.required,this.sifter=new h(this.options,{diacritics:this.settings.diacritics}),this.setupOptions(this.settings.options,this.settings.optgroups),delete this.settings.optgroups,delete this.settings.options,this.settings.mode=this.settings.mode||(1===this.settings.maxItems?"single":"multi"),"boolean"!=typeof this.settings.hideSelected&&(this.settings.hideSelected="multi"===this.settings.mode),"boolean"!=typeof this.settings.hidePlaceholder&&(this.settings.hidePlaceholder="multi"!==this.settings.mode)
var n=this.settings.createFilter
"function"!=typeof n&&("string"==typeof n&&(n=new RegExp(n)),n instanceof RegExp?this.settings.createFilter=e=>n.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("<div>"),c.wrapperClass,r,o),F(t=S('<div class="items">'),c.inputClass),e.append(t),F(s=d.render("dropdown"),c.dropdownClass,o),F(n=S(`<div role="listbox" id="${h}" tabindex="-1">`),c.dropdownContentClass),s.append(n),S(c.dropdownParent||e).appendChild(s),c.controlInput)i=S(c.controlInput)
else{i=S('<input type="text" autocomplete="off" size="1" />')
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)=>'<div class="optgroup-header">'+t(e[i])+"</div>",option:(e,i)=>"<div>"+i(e[t])+"</div>",item:(e,i)=>"<div>"+i(e[t])+"</div>",option_create:(e,t)=>'<div class="create">Add <strong>'+t(e.input)+"</strong>&hellip;</div>",no_results:(e,t)=>'<div class="no-results">No results found</div>',loading:(e,t)=>'<div class="spinner"></div>',not_loading:()=>{},dropdown:()=>"<div></div>"}
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:s<n&&(this.dropdown_content.scrollTop=s)}clearActiveOption(){this.activeOption&&(k(this.activeOption,"active"),this.activeOption.removeAttribute("aria-selected")),this.activeOption=null,this.control_input.removeAttribute("aria-activedescendant")}selectAll(){"single"!==this.settings.mode&&(this.activeItems=this.controlChildren(),this.activeItems.length&&(F(this.activeItems,"active"),this.hideInput(),this.close()),this.focus())}inputState(){var e=this
e.settings.controlInput||(e.activeItems.length>0||!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;t<n;t++){let e=f.options[y.items[t].id],n=m(e[f.settings.valueField]),l=f.getOption(n)
for(l||(l=f.render("option",e)),f.settings.hideSelected||l.classList.toggle("selected",f.items.includes(n)),r=e[f.settings.optgroupField]||"",i=0,s=(a=Array.isArray(r)?r:[r])&&a.length;i<s;i++)r=a[i],f.optgroups.hasOwnProperty(r)||(r=""),u.hasOwnProperty(r)||(u[r]=document.createDocumentFragment(),o.push(r)),i>0&&(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;i<s.length;i++)if(s[i]==e)return t>0?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<n;e++)i.isPending=e<n-1,i.addItem(s[e],t)
var n=i.control
n.insertBefore(i.buffer,n.firstChild),i.buffer=null}addItem(e,t){O(this,t?[]:["change"],(()=>{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.caretPos&&n.setCaret(n.caretPos-1),n.updateOriginalInput({silent:t}),n.refreshState(),n.positionDropdown(),n.trigger("item_remove",e,o)))}createItem(e,t=!0,i){var s,n=this,o=n.caretPos
if(e=e||n.inputValue(),"function"!=typeof i&&(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('<option value="'+y(i)+'">'+y(e)+"</option>"),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<e?t.control_input.insertAdjacentElement("beforebegin",i):t.control.appendChild(i)})),t.caretPos=e}controlChildren(){return Array.from(this.control.getElementsByClassName(this.settings.itemClass))}lock(){this.close(),this.isLocked=!0,this.refreshState()}unlock(){this.isLocked=!1,this.refreshState()}disable(){var e=this
e.input.disabled=!0,e.control_input.disabled=!0,e.control_input.tabIndex=-1,e.isDisabled=!0,e.lock()}enable(){var e=this
e.input.disabled=!1,e.control_input.disabled=!1,e.control_input.tabIndex=e.tabIndex,e.isDisabled=!1,e.unlock()}destroy(){var e=this,t=e.revertSettings
e.trigger("destroy"),e.off(),e.wrapper.remove(),e.dropdown.remove(),e.input.innerHTML=t.innerHTML,e.input.tabIndex=t.tabIndex,k(e.input,"tomselected"),e.input.removeAttribute("hidden"),e.input.required=this.isRequired,e._destroy(),delete e.input.tomselect}render(e,t){var i,s,n=this
if(("option"===e||"item"===e)&&(i=m(t[n.settings.valueField]),n.renderCache[e].hasOwnProperty(i)))return n.renderCache[e][i]
var o=n.settings.render[e]
return"function"!=typeof o?null:(s=o.call(this,t,y))?(s=S(s),"option"===e||"option_create"===e?t[n.settings.disabledField]?V(s,{"aria-disabled":"true"}):V(s,{"data-selectable":""}):"optgroup"===e&&(V(s,{"data-group":t.group[n.settings.optgroupValueField]}),t.group[n.settings.disabledField]&&V(s,{"data-disabled":""})),"option"!==e&&"item"!==e||(V(s,{"data-value":i}),"item"===e?F(s,n.settings.itemClass):(F(s,n.settings.optionClass),V(s,{role:"option",id:t.$id})),n.renderCache[e][i]=s),s):s}clearCache(e){void 0===e?this.renderCache={item:{},option:{}}:this.renderCache[e]={}}canCreate(e){return this.settings.create&&e.length&&this.settings.createFilter.call(this,e)}hook(e,t,i){var s=this,n=s[t]
s[t]=function(){var t,o
return"after"===e&&(t=n.apply(s,arguments)),o=i.apply(s,arguments),"instead"===e?o:("before"===e&&(t=n.apply(s,arguments)),t)}}}return j.define("change_listener",(function(e){var t=this,i=!1
w(t.input,"change",(()=>{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=>`<div class="${e.className}" title="${e.title}">&times;</div>`},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=>'<div class="'+e.headerClass+'"><div class="'+e.titleRowClass+'"><span class="'+e.labelClass+'">'+e.title+'</span><a class="'+e.closeClass+'">&times;</a></div></div>'},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||'<input type="text" autocomplete="off" class="dropdown-input" />'
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('<div class="dropdown-input-wrap">')
i.appendChild(t),e.dropdown.insertBefore(i,e.dropdown.firstChild)}))})),j.define("input_autogrow",(function(){var e=this
e.hook("after","setup",(()=>{var t=document.createElement("span"),i=e.control_input
t.style.cssText="position:absolute; top:-99999px; left:-99999px; width:auto; padding:0; white-space:pre; ",e.wrapper.appendChild(t)
for(const e of["letterSpacing","fontSize","fontFamily","fontWeight","textTransform"])t.style[e]=i.style[e]
var s=()=>{e.items.length>0?(t.textContent=i.value,i.style.width=t.clientWidth+"px"):i.style.width=""}
s(),e.on("update item_add item_remove",s),w(i,"input",s),w(i,"keyup",s),w(i,"blur",s),w(i,"update",s)}))})),j.define("no_backspace_delete",(function(){var e=this,t=e.deleteSelection
this.hook("instead","deleteSelection",(function(){return!!e.activeItems.length&&t.apply(e,arguments)}))})),j.define("no_active_items",(function(e){this.hook("instead","setActiveItem",(()=>{})),this.hook("instead","selectAll",(()=>{}))})),j.define("optgroup_columns",(function(){var e=this,t=e.onKeyDown
e.hook("instead","onKeyDown",(function(i){var s,n,o,r
if(!e.isOpen||37!==i.keyCode&&39!==i.keyCode)return t.apply(e,arguments)
r=E(e.activeOption,"[data-group]"),s=q(e.activeOption,"[data-selectable]"),(r=37===i.keyCode?r.previousSibling:r.nextSibling)&&(n=(o=r.querySelectorAll("[data-selectable]"))[Math.min(o.length-1,s)])&&e.setActiveOption(n)}))})),j.define("remove_button",(function(e){e=Object.assign({label:"&times;",title:"Remove",className:"remove",append:!0},e)
var t=this
if(e.append){var i='<a href="javascript:void(0)" class="'+e.className+'" tabindex="-1" title="'+y(e.title)+'">'+e.label+"</a>"
t.hook("after","setupTemplates",(()=>{var e=t.settings.render.item
t.settings.render.item=function(){var s=S(e.apply(t,arguments)),n=S(i)
return s.appendChild(n),w(n,"mousedown",(e=>{b(e,!0)})),w(n,"click",(e=>{if(b(e,!0),!t.isLocked){var i=s.dataset.value
t.removeItem(i),t.refreshOptions(!1)}})),s}}))}})),j.define("restore_on_backspace",(function(e){var t=this
e.text=e.text||function(e){return e[t.settings.labelField]},t.on("item_remove",(function(i){if(""===t.control_input.value.trim()){var s=t.options[i]
s&&t.setTextboxValue(e.text.call(t,s))}}))})),j}))
var tomSelect=function(e,t){return new TomSelect(e,t)}
//# sourceMappingURL=tom-select.complete.min.js.map

View File

@ -12,13 +12,14 @@
<script src="{% static "bootstrap.bundle.min.js" %}" integrity="sha384-JEW9xMcG8R+pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf"></script>
<script src="{% static "jquery.min.js" %}" integrity="sha512-894YE6QWD5I59HgZOGReFYm4dnWc1Qt5NtvYSaNcOP+u1T9qYdvdihz0PPSiiqn/+/3e7Jo4EaG7TubfWGUrMQ=="></script>
<script src="{% static "selectize.js" %}" integrity="sha512-pF+DNRwavWMukUv/LyzDyDMn8U2uvqYQdJN0Zvilr6DDo/56xPDZdDoyPDYZRSL4aOKO/FGKXTpzDyQJ8je8Qw=="></script>
<link rel="stylesheet" href="{% static "selectize.bootstrap4.min.css" %}" integrity="sha512-MMojOrCQrqLg4Iarid2YMYyZ7pzjPeXKRvhW9nZqLo6kPBBTuvNET9DBVWptAo/Q20Fy11EIHM5ig4WlIrJfQw==" />
<script src="{% static "tom-select.complete.min.js" %}" integrity="sha384-Hnof5Csstpcrk+thlHZ8VXXkD/Wk96gkCvwIvpwYLBVIAPyQA3gkqcPO+RwLARmZ"></script>
<link rel="stylesheet" href="{% static "tom-select.bootstrap5.css" %}" integrity="sha384-3syGtcTzvEB6zjzJ4BQ2loMdsaYaxAjWjD3GcbCLAPAE2XkENSR94WcY8c3g5lNu" />
<script>
$(document).ready(function(){
$("select").each(function(){
$(this).selectize();
new TomSelect("#" + this.id, {allowEmptyOption: true, "plugins": ["change_listener"]});
});
$(function () {
$('[data-toggle="tooltip"]').tooltip()