",{title:d.element.attr("title")});d.disabled&&this._addClass(g,null,"ui-state-disabled");this._setText(c,d.label);return g.append(c).appendTo(b)},_setText:function(b,d){d?b.text(d):b.html(" ")},_move:function(b,d){var g=".ui-menu-item";if(this.isOpen)var c=this.menuItems.eq(this.focusIndex).parent("li");else c=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),g+=":not(.ui-state-disabled)";b="first"===b||"last"===b?c["first"===b?"prevAll":"nextAll"](g).eq(-1):
-c[b+"All"](g).eq(0);b.length&&this.menuInstance.focus(d,b)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(b){this[this.isOpen?"close":"open"](b)},_setSelection:function(){if(this.range){if(window.getSelection){var b=window.getSelection();b.removeAllRanges();b.addRange(this.range)}else this.range.select();this.button.focus()}},_documentClick:{mousedown:function(b){this.isOpen&&(a(b.target).closest(".ui-selectmenu-menu, #"+a.escapeSelector(this.ids.button)).length||
-this.close(b))}},_buttonEvents:{mousedown:function(){if(window.getSelection){var b=window.getSelection();b.rangeCount&&(this.range=b.getRangeAt(0))}else this.range=document.selection.createRange()},click:function(b){this._setSelection();this._toggle(b)},keydown:function(b){var d=!0;switch(b.keyCode){case a.ui.keyCode.TAB:case a.ui.keyCode.ESCAPE:this.close(b);d=!1;break;case a.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(b);break;case a.ui.keyCode.UP:b.altKey?this._toggle(b):this._move("prev",
-b);break;case a.ui.keyCode.DOWN:b.altKey?this._toggle(b):this._move("next",b);break;case a.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(b):this._toggle(b);break;case a.ui.keyCode.LEFT:this._move("prev",b);break;case a.ui.keyCode.RIGHT:this._move("next",b);break;case a.ui.keyCode.HOME:case a.ui.keyCode.PAGE_UP:this._move("first",b);break;case a.ui.keyCode.END:case a.ui.keyCode.PAGE_DOWN:this._move("last",b);break;default:this.menu.trigger(b),d=!1}d&&b.preventDefault()}},_selectFocusedItem:function(b){var d=
-this.menuItems.eq(this.focusIndex).parent("li");d.hasClass("ui-state-disabled")||this._select(d.data("ui-selectmenu-item"),b)},_select:function(b,d){var g=this.element[0].selectedIndex;this.element[0].selectedIndex=b.index;this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(b));this._setAria(b);this._trigger("select",d,{item:b});b.index!==g&&this._trigger("change",d,{item:b});this.close(d)},_setAria:function(b){b=this.menuItems.eq(b.index).attr("id");this.button.attr({"aria-labelledby":b,
-"aria-activedescendant":b});this.menu.attr("aria-activedescendant",b)},_setOption:function(b,d){if("icons"===b){var g=this.button.find("span.ui-icon");this._removeClass(g,null,this.options.icons.button)._addClass(g,null,d.button)}this._super(b,d);"appendTo"===b&&this.menuWrap.appendTo(this._appendTo());"width"===b&&this._resizeButton()},_setOptionDisabled:function(b){this._super(b);this.menuInstance.option("disabled",b);this.button.attr("aria-disabled",b);this._toggleClass(this.button,null,"ui-state-disabled",
-b);this.element.prop("disabled",b);b?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var b=this.options.appendTo;b&&=b.jquery||b.nodeType?a(b):this.document.find(b).eq(0);b&&b[0]||(b=this.element.closest(".ui-front, dialog"));b.length||(b=this.document[0].body);return b},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen);this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+
-(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen);this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var b=this.options.width;!1===b?this.button.css("width",""):(null===b&&(b=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(b))},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var b=this._super();b.disabled=this.element.prop("disabled");
-return b},_parseOptions:function(b){var d=this,g=[];b.each(function(c,e){e.hidden||g.push(d._parseOption(a(e),c))});this.items=g},_parseOption:function(b,d){var g=b.parent("optgroup");return{element:b,index:d,value:b.val(),label:b.text(),optgroup:g.attr("label")||"",disabled:g.prop("disabled")||b.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler();this.menuWrap.remove();this.button.remove();this.element.show();this.element.removeUniqueId();this.labels.attr("for",this.ids.element)}}])});
-(function(a){"function"===typeof define&&define.amd?define(["jquery","./mouse","../keycode","../version","../widget"],a):a(jQuery)})(function(a){return a.widget("ui.slider",a.ui.mouse,{version:"1.13.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},
+c[b+"All"](g).eq(0);b.length&&this.menuInstance.focus(d,b)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(b){this[this.isOpen?"close":"open"](b)},_setSelection:function(){if(this.range){if(window.getSelection){var b=window.getSelection();b.removeAllRanges();b.addRange(this.range)}else this.range.select();this.button.trigger("focus")}},_documentClick:{mousedown:function(b){this.isOpen&&(a(b.target).closest(".ui-selectmenu-menu, #"+
+a.escapeSelector(this.ids.button)).length||this.close(b))}},_buttonEvents:{mousedown:function(){if(window.getSelection){var b=window.getSelection();b.rangeCount&&(this.range=b.getRangeAt(0))}else this.range=document.selection.createRange()},click:function(b){this._setSelection();this._toggle(b)},keydown:function(b){var d=!0;switch(b.keyCode){case a.ui.keyCode.TAB:case a.ui.keyCode.ESCAPE:this.close(b);d=!1;break;case a.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(b);break;case a.ui.keyCode.UP:b.altKey?
+this._toggle(b):this._move("prev",b);break;case a.ui.keyCode.DOWN:b.altKey?this._toggle(b):this._move("next",b);break;case a.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(b):this._toggle(b);break;case a.ui.keyCode.LEFT:this._move("prev",b);break;case a.ui.keyCode.RIGHT:this._move("next",b);break;case a.ui.keyCode.HOME:case a.ui.keyCode.PAGE_UP:this._move("first",b);break;case a.ui.keyCode.END:case a.ui.keyCode.PAGE_DOWN:this._move("last",b);break;default:this.menu.trigger(b),d=!1}d&&b.preventDefault()}},
+_selectFocusedItem:function(b){var d=this.menuItems.eq(this.focusIndex).parent("li");d.hasClass("ui-state-disabled")||this._select(d.data("ui-selectmenu-item"),b)},_select:function(b,d){var g=this.element[0].selectedIndex;this.element[0].selectedIndex=b.index;this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(b));this._setAria(b);this._trigger("select",d,{item:b});b.index!==g&&this._trigger("change",d,{item:b});this.close(d)},_setAria:function(b){b=this.menuItems.eq(b.index).attr("id");
+this.button.attr({"aria-labelledby":b,"aria-activedescendant":b});this.menu.attr("aria-activedescendant",b)},_setOption:function(b,d){if("icons"===b){var g=this.button.find("span.ui-icon");this._removeClass(g,null,this.options.icons.button)._addClass(g,null,d.button)}this._super(b,d);"appendTo"===b&&this.menuWrap.appendTo(this._appendTo());"width"===b&&this._resizeButton()},_setOptionDisabled:function(b){this._super(b);this.menuInstance.option("disabled",b);this.button.attr("aria-disabled",b);this._toggleClass(this.button,
+null,"ui-state-disabled",b);this.element.prop("disabled",b);b?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var b=this.options.appendTo;b&&=b.jquery||b.nodeType?a(b):this.document.find(b).eq(0);b&&b[0]||(b=this.element.closest(".ui-front, dialog"));b.length||(b=this.document[0].body);return b},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen);this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,
+"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen);this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var b=this.options.width;!1===b?this.button.css("width",""):(null===b&&(b=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(b))},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var b=this._super();
+b.disabled=this.element.prop("disabled");return b},_parseOptions:function(b){var d=this,g=[];b.each(function(c,e){e.hidden||g.push(d._parseOption(a(e),c))});this.items=g},_parseOption:function(b,d){var g=b.parent("optgroup");return{element:b,index:d,value:b.val(),label:b.text(),optgroup:g.attr("label")||"",disabled:g.prop("disabled")||b.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler();this.menuWrap.remove();this.button.remove();this.element.show();this.element.removeUniqueId();
+this.labels.attr("for",this.ids.element)}}])});
+(function(a){"function"===typeof define&&define.amd?define(["jquery","./mouse","../keycode","../version","../widget"],a):a(jQuery)})(function(a){return a.widget("ui.slider",a.ui.mouse,{version:"1.13.2",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},
numPages:5,_create:function(){this._mouseSliding=this._keySliding=!1;this._animateOff=!0;this._handleIndex=null;this._detectOrientation();this._mouseInit();this._calculateNewMax();this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content");this._refresh();this._animateOff=!1},_refresh:function(){this._createRange();this._createHandles();this._setupEvents();this._refreshValue()},_createHandles:function(){var b=this.options;var d=this.element.find(".ui-slider-handle"),g=[];
var c=b.values&&b.values.length||1;d.length>c&&(d.slice(c).remove(),d=d.slice(0,c));for(b=d.length;b
");this.handles=d.add(a(g.join("")).appendTo(this.element));this._addClass(this.handles,"ui-slider-handle","ui-state-default");this.handle=this.handles.eq(0);this.handles.each(function(e){a(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var b=this.options;b.range?(!0===b.range&&(b.values?b.values.length&&2!==b.values.length?
b.values=[b.values[0],b.values[0]]:Array.isArray(b.values)&&(b.values=b.values.slice(0)):b.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=a("").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),"min"!==b.range&&"max"!==b.range||this._addClass(this.range,"ui-slider-range-"+b.range)):(this.range&&this.range.remove(),this.range=null)},
@@ -703,54 +704,55 @@ t){r(a(this),n)},onSelect:function(A){v(a(this),n,"maxDate")}},p,p.end));r(n,m);
(q/100));break;default:l=q}return{px:l,minimax:">"==e?-1:"<"==e?1:0}}var g=0,c={open:{"class":"ui-multiselect-open",icon:'
',title:"Close"},checkAll:{"class":"ui-multiselect-all",icon:'
',text:"Check all",title:"Check all"},uncheckAll:{"class":"ui-multiselect-none",icon:'
',
text:"Uncheck all",title:"Uncheck all"},flipAll:{"class":"ui-multiselect-flip",icon:'
',text:"Flip all",title:"Flip all"},collapse:{icon:'
',title:"Collapse"},expand:{icon:'
',title:"Expand"},collapseAll:{"class":"ui-multiselect-collapseall",icon:'
',text:"Collapse all",title:"Collapse all"},expandAll:{"class":"ui-multiselect-expandall",
icon:'
',text:"Expand all",title:"Expand all"}};a.widget("ech.multiselect",{options:{buttonWidth:225,menuWidth:null,menuHeight:200,resizableMenu:!1,appendTo:null,position:{},zIndex:null,classes:"",header:["checkAll","uncheckAll"],linkInfo:null,noneSelectedText:"Select options",selectedText:"# of # selected",selectedList:0,selectedListSeparator:", ",maxSelected:null,openEffect:null,closeEffect:null,autoOpen:!1,htmlText:[],wrapText:["button","header","options"],
-listbox:!1,addInputNames:!0,disableInputsOnToggle:!0,groupsSelectable:!0,groupsCollapsable:!1,groupColumns:!1},_getAppendEl:function(){var e=this.options.appendTo;e&&(e=e.jquery?e:e.nodeType?a(e):a(e).eq(0));e&&e[0]||(e=this.element.closest(".ui-front, dialog"));e.length||(e=a(document.body));return e},_buildButton:function(){var e=this.options.wrapText||[];e=(this.$button=a(document.createElement("button"))).addClass("ui-multiselect ui-widget ui-state-default ui-corner-all"+(-1
{{icon}}',"open"));this.$buttonlabel=a(document.createElement("span")).html(this.options.noneSelectedText||$element[0].placeholder).appendTo(e);return e},_buildHeaderHtml:function(){if(!this.options.header)return"";
-if("string"===typeof this.options.header)return""+this.options.header+"";var e="";if(this.options.header.constructor==Array)for(var h=0;h{{icon}}{{text}}',f))}return e},_create:function(){var e=this.element,h=this.options;this.linkInfo=
-a.extend(!0,{},c,h.linkInfo||{});this._selectWidth=e.outerWidth();e.hide();h.htmlText=h.htmlText||[];var f=h.wrapText=h.wrapText||[];this.speed=a.fx.speeds._default;this._isOpen=!1;this._namespaceID=this.eventNamespace;this.multiselectID=g++;this.$headerLinkContainer=a(document.createElement("ul")).addClass("ui-helper-reset").html(this._buildHeaderHtml()+(h.listbox?"":this._linkHTML('{{icon}}',"close")));var k=(this.$header=a(document.createElement("div"))).addClass("ui-multiselect-header ui-widget-header ui-corner-all ui-helper-clearfix").append(this.$headerLinkContainer);
+listbox:!1,addInputNames:!0,disableInputsOnToggle:!0,groupsSelectable:!0,groupsCollapsable:!1,groupColumns:!1,groupColumnsWidth:!1},_getAppendEl:function(){var e=this.options.appendTo;e&&(e=e.jquery?e:e.nodeType?a(e):a(e).eq(0));e&&e[0]||(e=this.element.closest(".ui-front, dialog"));e.length||(e=a(document.body));return e},_buildButton:function(){var e=this.options.wrapText||[];e=(this.$button=a(document.createElement("button"))).addClass("ui-multiselect ui-widget ui-state-default ui-corner-all"+
+(-1{{icon}}',"open"));this.$buttonlabel=a(document.createElement("span")).html(this.options.noneSelectedText||this.element[0].placeholder).appendTo(e);return e},_buildHeaderHtml:function(){if(!this.options.header)return"";
+if("string"===typeof this.options.header)return""+this.options.header+"";var e="";if(this.options.header.constructor==Array)for(var h=0;h{{icon}}{{text}}',f))}if(this.options.header.constructor==Object){var k=Object.keys(this.options.header);
+for(h=0;h{{icon}}'+q+"",f))}}return e},_create:function(){var e=this.element,h=this.options;this.linkInfo=a.extend(!0,{},c,h.linkInfo||{});this._selectWidth=e.outerWidth();e.hide();h.htmlText=h.htmlText||[];var f=h.wrapText=h.wrapText||[];this.speed=
+a.fx.speeds._default;this._isOpen=!1;this._namespaceID=this.eventNamespace;this.multiselectID=g++;this.$headerLinkContainer=a(document.createElement("ul")).addClass("ui-helper-reset").html(this._buildHeaderHtml()+(h.listbox?"":this._linkHTML('{{icon}}',"close")));var k=(this.$header=a(document.createElement("div"))).addClass("ui-multiselect-header ui-widget-header ui-corner-all ui-helper-clearfix").append(this.$headerLinkContainer);
f=(this.$checkboxes=a(document.createElement("ul"))).addClass("ui-multiselect-checkboxes ui-helper-reset"+(-1","")},_init:function(){var e=
this.element[0];!1!==this.options.header?this.$headerLinkContainer.find(".ui-multiselect-all, .ui-multiselect-none, .ui-multiselect-flip").toggle(!!e.multiple):this.$header.hide();this.options.autoOpen&&!this.options.listbox&&this.open();e.disabled&&this.disable()},_makeOption:function(e){var h=this.element.get(0),f=h.id||this.multiselectID,k="ui-multiselect-"+this.multiselectID+"-"+(e.id||f+"-option-"+this.inputIdCounter++),q=h.multiple;h=e.disabled;var l=e.selected,n=document.createElement("input");
f={type:q?"checkbox":"radio",id:k,title:e.title||null,value:e.value,name:this.options.addInputNames?"multiselect_"+f:null,checked:l?"checked":null,"aria-selected":l?"true":null,disabled:h?"disabled":null,"aria-disabled":h?"true":null};for(var m in f)null!==f[m]&&n.setAttribute(m,f[m]);m=e.attributes;f=m.length;for(var p=0;pl||(e._toggleChecked(f.filter(":checked").length!==f.length,f),e._trigger("optgrouptoggle",
-h,{inputs:k,label:q,checked:k.length?k[0].checked:null}))}}).on("click.multiselect",".ui-multiselect-collapser",function(h){var f=a(this),k=f.parent(),q=k.find(".ui-multiselect-grouplabel").first().html(),l=e.linkInfo,n=k.hasClass("ui-multiselect-collapsed");!1!==e._trigger("beforecollapsetoggle",h,{label:q,collapsed:n})&&(k.toggleClass("ui-multiselect-collapsed"),f.attr("title",n?l.collapse.title:l.expand.title).html(n?l.collapse.icon:l.expand.icon),e.options.listbox||e._setMenuHeight(!0),e._trigger("collapsetoggle",
-h,{label:q,collapsed:!n}))}).on("mouseenter.multiselect",".ui-multiselect-collapser",function(h){this.classList.add("ui-state-hover")}).on("mouseleave.multiselect",".ui-multiselect-collapser",function(h){this.classList.remove("ui-state-hover")}).on("mouseenter.multiselect","label",function(h,f){if(!this.classList.contains("ui-state-disabled")){h=e.$checkboxes[0];var k=h.scrollLeft,q=h.scrollTop,l=window.pageXOffset,n=window.pageYOffset;e.$labels.removeClass("ui-state-hover");a(this).addClass("ui-state-hover").find("input").focus();
-f&&f.allowScroll||(h.scrollLeft=k,h.scrollTop=q,window.scrollTo(l,n))}}).on("keydown.multiselect","label",function(h){if(82!==h.which&&!(111h.which))switch(h.preventDefault(),h.which){case 9:h.shiftKey?(e.$menu.find(".ui-state-hover").removeClass("ui-state-hover"),e.$header.find("li").last().find("a").focus()):e.close();break;case 27:e.close();break;case 38:case 40:case 37:case 39:e._traverse(h.which,this);break;case 13:case 32:a(this).find("input")[0].click();break;case 65:h.altKey&&
-e.checkAll();break;case 70:h.altKey&&e.flipAll();break;case 85:h.altKey&&e.uncheckAll()}}).on("click.multiselect","input",function(h){var f=a(this),k=this.value,q=this.checked,l=e.element,n=l.find("option"),m=l[0].multiple,p=e.$inputs,r=p.filter(":checked").length,v=e.options,x=e.htmlAllowedFor("options")?"html":"text";x=f.parent().find("span")[x]();v=v.maxSelected;if(this.disabled||!1===e._trigger("click",h,{value:k,text:x,checked:q}))h.preventDefault();else{if(v&&q&&r>v)return!1!==e._trigger("maxselected",
-h,{labels:e.$labels,inputs:p})&&e.buttonMessage("LIMIT OF "+(r-1)+" REACHED!"),this.checked=!1,h.preventDefault(),!1;this.focus();f.prop("aria-selected",q);n.each(function(){this.selected=this.value===k?q:m&&this.selected});m||(e.$labels.removeClass("ui-state-active"),f.closest("label").toggleClass("ui-state-active",q),e.close());l.trigger("change");setTimeout(a.proxy(e.update,e),10)}})},_bindHeaderEvents:function(){var e=this;e.$header.on("click.multiselect","a",function(h){var f=
-{"ui-multiselect-close":"close","ui-multiselect-all":"checkAll","ui-multiselect-none":"uncheckAll","ui-multiselect-flip":"flipAll","ui-multiselect-collapseall":"collapseAll","ui-multiselect-expandall":"expandAll"};for(hdgClass in f)if(this.classList.contains(hdgClass))return e[f[hdgClass]](),h.preventDefault(),!1}).on("keydown.multiselect","a",function(h){switch(h.which){case 27:e.close();break;case 9:var f=a(h.target);if(h.shiftKey&&!f.parent().prev().length&&!e.$header.find(".ui-multiselect-filter").length||
-!f.parent().next().length&&!e.$labels.length&&!h.shiftKey)e.close(),h.preventDefault()}})},_setResizable:function(){this.options.resizableMenu&&"resizable"in a.ui&&(this.$menu.show(),this.$menu.resizable({containment:"parent",handles:"s",helper:"ui-multiselect-resize",stop:function(e,h){h.size.width=h.originalSize.width;a(this).outerWidth(h.originalSize.width);!1!==this._trigger("resize",e,h)&&(this.options.menuHeight=h.size.height);this._setMenuHeight(!0)}}),this.$menu.hide())},_bindEvents:function(){this.options.listbox||
-this._bindButtonEvents();this._bindHeaderEvents();this._bindCheckboxEvents();this._setResizable();this.document.on("mousedown"+this._namespaceID+" wheel"+this._namespaceID+" mousewheel"+this._namespaceID,function(e){e=e.target;this._isOpen&&(this.$button?e!==this.$button[0]&&!a.contains(this.$button[0],e):1)&&e!==this.$menu[0]&&!a.contains(this.$menu[0],e)&&this.close()}.bind(this));a(this.element[0].form).on("reset"+this._namespaceID,function(){setTimeout(this.refresh.bind(this),10)}.bind(this))},
-_setButtonWidth:function(e){if(!this._savedButtonWidth||e){e=this._selectWidth||this._getBCRWidth(this.element);var h=this.options.buttonWidth||"";if(/\d/.test(h)){var f=d(h,this.element),k=f.px;f=f.minimax;e=0>f?Math.max(e,k):0f?Math.max(e,k):0
-v&&(v=this.offsetTop);r=this.offsetTop+this.offsetHeight-v+4;if(f&&++p>=k||r>h)return m="auto",f||(r=h),!1});this.$checkboxes.css("overflow",m).height(r);this._savedMenuHeight=this.$menu.outerHeight(!1)}},_getBCRWidth:function(e){if(!e||e.jquery&&!e[0])return null;e=e.jquery?e[0].getBoundingClientRect():e.getBoundingClientRect();return e.right-e.left},_jqWidthFix:function(e){return!e||e.jquery&&!e[0]?null:e.jquery?this._getBCRWidth(e[0])-e.outerWidth(!1):this._getBCRWidth(e)-a(e).outerWidth(!1)},
-_traverse:function(e,h){h=a(h);e=38===e||37===e;var f=h.parent()[e?"prevAll":"nextAll"]("li:not(:disabled, .ui-multiselect-optgroup):visible").first();f.length||(f=h.parents(".ui-multiselect-optgroup")[e?"prev":"next"]());f.length?f.find("label").filter(":visible")[e?"last":"first"]().trigger("mouseover",{allowScroll:!0}):(h=this.$checkboxes,h.find("label").filter(":visible")[e?"last":"first"]().trigger("mouseover",{allowScroll:!0}),h.scrollTop(e?h.height():0))},_toggleState:function(e,h){return function(){var f=
-"!"===h?!this[e]:h;this.disabled||(this[e]=f);f?this.setAttribute("aria-"+e,!0):this.removeAttribute("aria-"+e)}},_toggleChecked:function(e,h,f){var k=this,q=k.element;h=h&&h.length?h:k.$inputs;f&&(h=k._isOpen?h.closest("li").not(".ui-multiselect-excluded").find("input").not(":disabled"):h.not(":disabled"));h.each(k._toggleState("checked",e));h.eq(0).focus();k.update();var l={};h.each(function(){l[this.value]=!0});q.find("option").each(function(){!this.disabled&&l[this.value]&&k._toggleState("selected",
-e).call(this)});h.length&&q.trigger("change")},_toggleDisabled:function(e,h){if(this.$button)this.$button.prop({disabled:e,"aria-disabled":e})[e?"addClass":"removeClass"]("ui-state-disabled");if(this.options.disableInputsOnToggle){var f="undefined"===typeof h?this.$inputs:this._multiselectOptgroupFilter(h).find("input");if(e){f=f.filter(":enabled").get();for(var k=0,q=f.length;k=(h?q-n+l-n:k-q)?(h?this._toggleChecked("!",e):this._toggleChecked("!"),this._trigger("flipAll")):this.buttonMessage("Flip All Not Permitted.")},collapseAll:function(e){this._trigger("beforeCollapseAll");("undefined"===typeof e?this.$checkboxes.find(".ui-multiselect-optgroup"):this._multiselectOptgroupFilter(e)).addClass("ui-multiselect-collapsed").children(".ui-multiselect-collapser").attr("title",
-this.linkInfo.expand.title).html(this.linkInfo.expand.icon);this._trigger("collapseAll")},expandAll:function(e){this._trigger("beforeExpandAll");("undefined"===typeof e?this.$checkboxes.find(".ui-multiselect-optgroup"):this._multiselectOptgroupFilter(e)).removeClass("ui-multiselect-collapsed").children(".ui-multiselect-collapser").attr("title",this.linkInfo.collapse.title).html(this.linkInfo.collapse.icon);this._trigger("expandAll")},buttonMessage:function(e){var h=this;h.$buttonlabel.html(e);setTimeout(function(){h.update()},
-1E3)},getChecked:function(){return this.$inputs.filter(":checked")},getUnchecked:function(){return this.$inputs.filter(":not(:checked)")},destroy:function(){a.Widget.prototype.destroy.call(this);this.document.off(this._namespaceID);a(this.element[0].form).off(this._namespaceID);this.options.listbox||this.$button.remove();this.$menu.remove();this.element.show();return this},isOpen:function(){return this._isOpen},widget:function(){return this.$menu},getNamespaceID:function(){return this._namespaceID},
-getButton:function(){return this.$button},getMenu:function(){return this.$menu},getLabels:function(){return this.$labels},getCollapsed:function(){return this.$checkboxes.find(".ui-multiselect-collapsed")},value:function(e){return"undefined"!==typeof e?(this.element.val(e),this.resync(),this.element):this.element.val()},htmlAllowedFor:function(e){return-1"+
-h+""));break;case "checkAllText":case "uncheckAllText":case "flipAllText":case "collapseAllText":case "expandAllText":"checkAllText"===e&&this.options.maxSelected||f.find("a."+this.linkInfo[e.replace("Text","")]["class"]+" span").eq(-1).html(h);break;case "checkAllIcon":case "uncheckAllIcon":case "flipAllIcon":case "collapseAllIcon":case "expandAllIcon":"checkAllIcon"===e&&this.options.maxSelected||f.find("a."+this.linkInfo[e.replace("Icon","")]["class"]+" span").eq(0).replaceWith(h);break;case "openIcon":k.find("span.ui-multiselect-open").html(h);
-break;case "closeIcon":k.find("a.ui-multiselect-close").html(h);break;case "buttonWidth":case "menuWidth":this.options[e]=h;this._setButtonWidth(!0);this._setMenuWidth(!0);break;case "menuHeight":this.options[e]=h;this._setMenuHeight(!0);break;case "selectedText":case "selectedList":case "maxSelected":case "noneSelectedText":case "selectedListSeparator":this.options[e]=h;this.update(!0);break;case "classes":k.add(this.$button).removeClass(this.options.classes).addClass(h);break;case "multiple":f=
-this.element;!!f[0].multiple!==h&&(k.toggleClass("ui-multiselect-multiple",h).toggleClass("ui-multiselect-single",!h),f[0].multiple=h,this.uncheckAll(),this.refresh());break;case "position":null===h||a.isEmptyObject(h)||(this.options.position=h);this.position();break;case "zIndex":this.options.zIndex=h;this.$menu.css("z-index",h);break;default:this.options[e]=h}a.Widget.prototype._setOption.apply(this,arguments)}});a.ui&&"dialog"in a.ui&&a.widget("ui.dialog",a.ui.dialog,{_allowInteraction:function(e){if(this._super(e)||
-a(e.target).closest(".ui-multiselect-menu").length)return!0}})})(jQuery);
+e.textContent;if(f=e.getAttribute("data-image-src"))p=document.createElement("img"),p.setAttribute("src",f),m.insertBefore(p,m.firstChild);f=document.createElement("label");f.setAttribute("for",k);e.title&&f.setAttribute("title",e.title);f.className+=(h?" ui-state-disabled":"")+(l&&!q?" ui-state-active":"")+" ui-corner-all";f.appendChild(n);f.appendChild(m);k=document.createElement("li");k.className=(h?"ui-multiselect-disabled ":"")+(this.options.groupColumns?" ui-multiselect-columns":"")+(e.className||
+"");this.options.groupColumnsWidth&&(k.style.width=this.options.groupColumnsWidth+"px");k.appendChild(f);return k},_buildOptionList:function(){var e=this,h=[];this.inputIdCounter=0;this.element.children().each(function(){if("OPTGROUP"===this.tagName.toUpperCase()){var f=[];a(this).children().each(function(){f.push(e._makeOption(this))});var k=e.options.groupsCollapsable?a(document.createElement("button")).attr({title:e.linkInfo.collapse.title,type:"button"}).addClass("ui-state-default ui-corner-all ui-multiselect-collapser").html(e.linkInfo.collapse.icon):
+null,q=a(document.createElement("a")).addClass("ui-multiselect-grouplabel"+(e.options.groupsSelectable?" ui-multiselect-selectable":"")).html(this.getAttribute("label")),l=a(document.createElement("ul")).append(f);k=a(document.createElement("li")).addClass("ui-multiselect-optgroup"+(e.options.groupColumns?" ui-multiselect-columns":"")+(this.className?" "+this.className:"")).append(k,q,l);e.options.groupColumnsWidth&&k.css("width",e.options.groupColumnsWidth+"px");h.push(k)}else h.push(e._makeOption(this))});
+this.$checkboxes.empty().append(h)},refresh:function(e){var h=this.element;!1!==this.options.header&&this.$headerLinkContainer.find(".ui-multiselect-all, .ui-multiselect-none, .ui-multiselect-flip").toggle(!!h[0].multiple);this._buildOptionList();this._updateCache();this.options.listbox?(this._isOpen||(this.$menu.show(),this._isOpen=!0),this._setMenuWidth(),this._setMenuHeight()):(this._setButtonWidth(),this.update(!0));e||this._trigger("refresh")},_updateCache:function(){this._savedMenuHeight=this._savedMenuWidth=
+this._savedButtonWidth=0;this.$header=this.$menu.children(".ui-multiselect-header");this.$checkboxes=this.$menu.children(".ui-multiselect-checkboxes");this.$labels=this.$menu.find("label:not(.ui-multiselect-filter-label)");this.$inputs=this.$labels.children("input");this.element.is(':data("ech-multiselectfilter")')&&this.element.data("ech-multiselectfilter").updateCache(!0)},resync:function(e){var h=this.$inputs,f=this.element.find("option");if(h.length===f.length){var k={};h.not(e?":disabled":"").each(function(){k[this.value]=
+this});f.not(e?":disabled":"").each(function(){this.value in k&&(k[this.value].checked=this.selected)});this._trigger("resync");this.update()}else this.refresh()},update:function(e){if(!this.options.listbox){var h=this.options,f=h.selectedList,k=h.selectedText,q=this.$inputs,l=q.length;q=q.filter(":checked");var n=q.length;f=n?"function"===typeof k?k.call(this,n,l,q.get()):/\d/.test(f)&&0l||(e._toggleChecked(f.filter(":checked").length!==f.length,f),e._trigger("optgrouptoggle",h,{inputs:k,label:q,checked:k.length?k[0].checked:null}))}}).on("click.multiselect",".ui-multiselect-collapser",function(h){var f=a(this),k=f.parent(),q=k.find(".ui-multiselect-grouplabel").first().html(),l=e.linkInfo,n=k.hasClass("ui-multiselect-collapsed");!1!==e._trigger("beforecollapsetoggle",
+h,{label:q,collapsed:n})&&(k.toggleClass("ui-multiselect-collapsed"),f.attr("title",n?l.collapse.title:l.expand.title).html(n?l.collapse.icon:l.expand.icon),e.options.listbox||e._setMenuHeight(!0),e._trigger("collapsetoggle",h,{label:q,collapsed:!n}))}).on("mouseenter.multiselect",".ui-multiselect-collapser",function(h){this.classList.add("ui-state-hover")}).on("mouseleave.multiselect",".ui-multiselect-collapser",function(h){this.classList.remove("ui-state-hover")}).on("mouseenter.multiselect","label",
+function(h,f){if(!this.classList.contains("ui-state-disabled")){h=e.$checkboxes[0];var k=h.scrollLeft,q=h.scrollTop,l=window.pageXOffset,n=window.pageYOffset;e.$labels.removeClass("ui-state-hover");a(this).addClass("ui-state-hover").find("input").trigger("focus");f&&f.allowScroll||(h.scrollLeft=k,h.scrollTop=q,window.scrollTo(l,n))}}).on("keydown.multiselect","label",function(h){if(82!==h.which&&!(111h.which))switch(h.preventDefault(),h.which){case 9:h.shiftKey?(e.$menu.find(".ui-state-hover").removeClass("ui-state-hover"),
+e.$header.find("li").last().find("a").trigger("focus")):e.close();break;case 27:e.close();break;case 38:case 40:case 37:case 39:e._traverse(h.which,this);break;case 13:case 32:a(this).find("input")[0].click();break;case 65:h.altKey&&e.checkAll();break;case 70:h.altKey&&e.flipAll();break;case 85:h.altKey&&e.uncheckAll()}}).on("click.multiselect","input",function(h){var f=a(this),k=this.value,q=this.checked,l=e.element,n=l.find("option"),m=l[0].multiple,p=e.$inputs,r=p.filter(":checked").length,v=e.options,
+x=e.htmlAllowedFor("options")?"html":"text";x=f.parent().find("span")[x]();v=v.maxSelected;if(this.disabled||!1===e._trigger("click",h,{value:k,text:x,checked:q}))h.preventDefault();else{if(v&&q&&r>v)return!1!==e._trigger("maxselected",h,{labels:e.$labels,inputs:p})&&e.buttonMessage("LIMIT OF "+(r-1)+" REACHED!"),this.checked=!1,h.preventDefault(),!1;this.focus();f.prop("aria-selected",q);n.each(function(){this.selected=this.value===k?q:m&&this.selected});m||(e.$labels.removeClass("ui-state-active"),
+f.closest("label").toggleClass("ui-state-active",q),e.close());l.trigger("change");setTimeout(a.proxy(e.update,e),10)}})},_bindHeaderEvents:function(){var e=this;e.$header.on("click.multiselect","a",function(h){var f={"ui-multiselect-close":"close","ui-multiselect-all":"checkAll","ui-multiselect-none":"uncheckAll","ui-multiselect-flip":"flipAll","ui-multiselect-collapseall":"collapseAll","ui-multiselect-expandall":"expandAll"};for(hdgClass in f)if(this.classList.contains(hdgClass))return e[f[hdgClass]](),
+h.preventDefault(),!1}).on("keydown.multiselect","a",function(h){switch(h.which){case 27:e.close();break;case 9:var f=a(h.target);if(h.shiftKey&&!f.parent().prev().length&&!e.$header.find(".ui-multiselect-filter").length||!f.parent().next().length&&!e.$labels.length&&!h.shiftKey)e.close(),h.preventDefault()}})},_setResizable:function(){this.options.resizableMenu&&"resizable"in a.ui&&(this.$menu.show(),this.$menu.resizable({containment:"parent",handles:"s",helper:"ui-multiselect-resize",stop:function(e,
+h){h.size.width=h.originalSize.width;a(this).outerWidth(h.originalSize.width);!1!==this._trigger("resize",e,h)&&(this.options.menuHeight=h.size.height);this._setMenuHeight(!0)}}),this.$menu.hide())},_bindEvents:function(){this.options.listbox||this._bindButtonEvents();this._bindHeaderEvents();this._bindCheckboxEvents();this._setResizable();this.document.on("mousedown"+this._namespaceID+" wheel"+this._namespaceID+" mousewheel"+this._namespaceID,function(e){e=e.target;this._isOpen&&(this.$button?e!==
+this.$button[0]&&!a.contains(this.$button[0],e):1)&&e!==this.$menu[0]&&!a.contains(this.$menu[0],e)&&this.close()}.bind(this));a(this.element[0].form).on("reset"+this._namespaceID,function(){setTimeout(this.refresh.bind(this),10)}.bind(this))},_setButtonWidth:function(e){if(!this._savedButtonWidth||e){e=this._selectWidth||this._getBCRWidth(this.element);var h=this.options.buttonWidth||"";if(/\d/.test(h)){var f=d(h,this.element),k=f.px;f=f.minimax;e=0>f?Math.max(e,k):0f?Math.max(e,k):0v&&(v=this.offsetTop);r=this.offsetTop+this.offsetHeight-v+4;if(f&&++p>=k||r>h)return m="auto",f||(r=h),!1});this.$checkboxes.css("overflow",m).height(r);this._savedMenuHeight=this.$menu.outerHeight(!1)}},
+_getBCRWidth:function(e){if(!e||e.jquery&&!e[0])return null;e=e.jquery?e[0].getBoundingClientRect():e.getBoundingClientRect();return e.right-e.left},_jqWidthFix:function(e){return!e||e.jquery&&!e[0]?null:e.jquery?this._getBCRWidth(e[0])-e.outerWidth(!1):this._getBCRWidth(e)-a(e).outerWidth(!1)},_traverse:function(e,h){h=a(h);e=38===e||37===e;var f=h.parent()[e?"prevAll":"nextAll"]("li:not(:disabled, .ui-multiselect-optgroup):visible").first();f.length||(f=h.parents(".ui-multiselect-optgroup")[e?"prev":
+"next"]());f.length?f.find("label").filter(":visible")[e?"last":"first"]().trigger("mouseover",{allowScroll:!0}):(h=this.$checkboxes,h.find("label").filter(":visible")[e?"last":"first"]().trigger("mouseover",{allowScroll:!0}),h.scrollTop(e?h.height():0))},_toggleState:function(e,h){return function(){var f="!"===h?!this[e]:h;this.disabled||(this[e]=f);f?this.setAttribute("aria-"+e,!0):this.removeAttribute("aria-"+e)}},_toggleChecked:function(e,h,f){var k=this,q=k.element;h=h&&h.length?h:k.$inputs;
+f&&(h=k._isOpen?h.closest("li").not(".ui-multiselect-excluded").find("input").not(":disabled"):h.not(":disabled"));h.each(k._toggleState("checked",e));h.eq(0).trigger("focus");k.update();var l={};h.each(function(){l[this.value]=!0});q.find("option").each(function(){!this.disabled&&l[this.value]&&k._toggleState("selected",e).call(this)});h.length&&q.trigger("change")},_toggleDisabled:function(e,h){if(this.$button)this.$button.prop({disabled:e,"aria-disabled":e})[e?"addClass":"removeClass"]("ui-state-disabled");
+if(this.options.disableInputsOnToggle){var f="undefined"===typeof h?this.$inputs:this._multiselectOptgroupFilter(h).find("input");if(e){f=f.filter(":enabled").get();for(var k=0,q=f.length;k=(h?q-n+l-n:k-q)?(h?this._toggleChecked("!",e):this._toggleChecked("!"),this._trigger("flipAll")):this.buttonMessage("Flip All Not Permitted.")},
+collapseAll:function(e){this._trigger("beforeCollapseAll");("undefined"===typeof e?this.$checkboxes.find(".ui-multiselect-optgroup"):this._multiselectOptgroupFilter(e)).addClass("ui-multiselect-collapsed").children(".ui-multiselect-collapser").attr("title",this.linkInfo.expand.title).html(this.linkInfo.expand.icon);this._trigger("collapseAll")},expandAll:function(e){this._trigger("beforeExpandAll");("undefined"===typeof e?this.$checkboxes.find(".ui-multiselect-optgroup"):this._multiselectOptgroupFilter(e)).removeClass("ui-multiselect-collapsed").children(".ui-multiselect-collapser").attr("title",
+this.linkInfo.collapse.title).html(this.linkInfo.collapse.icon);this._trigger("expandAll")},buttonMessage:function(e){var h=this;h.$buttonlabel.html(e);setTimeout(function(){h.update()},1E3)},getChecked:function(){return this.$inputs.filter(":checked")},getUnchecked:function(){return this.$inputs.filter(":not(:checked)")},destroy:function(){a.Widget.prototype.destroy.call(this);this.document.off(this._namespaceID);a(this.element[0].form).off(this._namespaceID);this.options.listbox||this.$button.remove();
+this.$menu.remove();this.element.show();return this},isOpen:function(){return this._isOpen},widget:function(){return this.$menu},getNamespaceID:function(){return this._namespaceID},getButton:function(){return this.$button},getMenu:function(){return this.$menu},getLabels:function(){return this.$labels},getCollapsed:function(){return this.$checkboxes.find(".ui-multiselect-collapsed")},value:function(e){return"undefined"!==typeof e?(this.element.val(e),this.resync(),this.element):this.element.val()},
+htmlAllowedFor:function(e){return-1"+h+""));break;case "checkAllText":case "uncheckAllText":case "flipAllText":case "collapseAllText":case "expandAllText":"checkAllText"===e&&this.options.maxSelected||f.find("a."+this.linkInfo[e.replace("Text","")]["class"]+" span").eq(-1).html(h);break;case "checkAllIcon":case "uncheckAllIcon":case "flipAllIcon":case "collapseAllIcon":case "expandAllIcon":"checkAllIcon"===
+e&&this.options.maxSelected||f.find("a."+this.linkInfo[e.replace("Icon","")]["class"]+" span").eq(0).replaceWith(h);break;case "openIcon":k.find("span.ui-multiselect-open").html(h);break;case "closeIcon":k.find("a.ui-multiselect-close").html(h);break;case "buttonWidth":case "menuWidth":this.options[e]=h;this._setButtonWidth(!0);this._setMenuWidth(!0);break;case "menuHeight":this.options[e]=h;this._setMenuHeight(!0);break;case "selectedText":case "selectedList":case "maxSelected":case "noneSelectedText":case "selectedListSeparator":this.options[e]=
+h;this.update(!0);break;case "classes":k.add(this.$button).removeClass(this.options.classes).addClass(h);break;case "multiple":f=this.element;!!f[0].multiple!==h&&(k.toggleClass("ui-multiselect-multiple",h).toggleClass("ui-multiselect-single",!h),f[0].multiple=h,this.uncheckAll(),this.refresh());break;case "position":null===h||a.isEmptyObject(h)||(this.options.position=h);this.position();break;case "zIndex":this.options.zIndex=h;this.$menu.css("z-index",h);break;default:this.options[e]=h}a.Widget.prototype._setOption.apply(this,
+arguments)},_parse2px:d});a.ui&&"dialog"in a.ui&&a.widget("ui.dialog",a.ui.dialog,{_allowInteraction:function(e){if(this._super(e)||a(e.target).closest(".ui-multiselect-menu").length)return!0}})})(jQuery);
(function(a){function b(c,e,h){var f;return function(){var k=this,q=arguments,l=h&&!f;clearTimeout(f);f=setTimeout(function(){f=null;h||c.apply(k,q)},e);l&&c.apply(k,q)}}var d=/[\-\[\]{}()*+?.,\\\^$|#\s]/g,g={contains:"{{term}}",beginsWith:"^{{term}}",endsWith:"{{term}}$",exactMatch:"^{{term}}$",containsNumber:"d",isNumeric:"^d+$",isNonNumeric:"^D+$"};a.widget("ech.multiselectfilter",{options:{label:"Filter:",placeholder:"Enter keywords",filterRule:"contains",searchGroups:!1,autoReset:!1,width:null,
debounceMS:250},_create:function(){var c=this.options,e=this.element;this.instance=e.data("ech-multiselect");this.$header=this.instance.$menu.find(".ui-multiselect-header").addClass("ui-multiselect-hasfilter");this.$input=a(document.createElement("input")).attr({placeholder:c.placeholder,type:"search"}).css({width:"string"===typeof c.width?this.instance._parse2px(c.width,this.$header).px+"px":/\d/.test(c.width)?c.width+"px":null});this._bindInputEvents();if(this.options.autoReset)e.on("multiselectbeforeclose",
a.proxy(this._reset,this));c=a(document.createElement("label")).text(c.label).append(this.$input).addClass("ui-multiselect-filter-label");this.$wrapper=a(document.createElement("div")).addClass("ui-multiselect-filter").append(c).prependTo(this.$header);this.instance._isOpen&&this.instance._setMenuHeight(!0);this.updateCache();var h=this.instance,f=this.$input[0];h._oldToggleChecked=h._toggleChecked;h._toggleChecked=function(k,q){h._oldToggleChecked(k,q,!!f.value)}},_bindInputEvents:function(){this.$input.on({keydown:function(c){if(13===
@@ -1009,7 +1011,7 @@ g.isUndefined(h)||(h=e.closest(h),h.length||(h=a(h)),h.remove())});c.on("ajax:be
e.data("w2p_disable_with",e[h]()),g.isUndefined(e.data("w2p_enable_with"))&&e.data("w2p_enable_with",e[h]()),e[h](e.data("w2p_disable_with")));e.prop("disabled",!0)})},enableFormElements:function(c){c.find(g.enableSelector).each(function(){var e=a(this),h=e.is("button")?"html":"val";e.data("w2p_enable_with")&&(e[h](e.data("w2p_enable_with")),e.removeData("w2p_enable_with"));e.prop("disabled",!1)})},form_handlers:function(){var c=a(document);c.on("ajax:beforeSend","form[data-w2p_target]",function(){g.disableFormElements(a(this))});
c.on("ajax:complete","form[data-w2p_target]",function(){g.enableFormElements(a(this))})},invalidate:function(c){a("div[data-w2p_remote]",c).each(function(){var e=a("#"+a(this).attr("id")).get(0);g.isUndefined(e.timing)||clearInterval(e.timing)});a.web2py.component_handler(c)},main_hook:function(){var c=a(".w2p_flash");c.hide();c.html()&&g.flash(c.html());g.ajax_init(document);g.event_handlers();g.a_handlers();g.form_handlers()}};a(function(){g.main_hook()})})(jQuery);ajax=jQuery.web2py.ajax;
web2py_component=jQuery.web2py.component;web2py_websocket=jQuery.web2py.web2py_websocket;web2py_ajax_page=jQuery.web2py.ajax_page;web2py_validate_entropy=jQuery.web2py.validate_entropy;web2py_ajax_fields=jQuery.web2py.ajax_fields;web2py_trap_form=jQuery.web2py.trap_form;popup=jQuery.web2py.popup;collapse=jQuery.web2py.collapse;fade=jQuery.web2py.fade;
-(function(a){"function"===typeof define&&define.amd?define("jquery ./mouse ../data ../ie ../scroll-parent ../version ../widget".split(" "),a):a(jQuery)})(function(a){return a.widget("ui.sortable",a.ui.mouse,{version:"1.13.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,
+(function(a){"function"===typeof define&&define.amd?define("jquery ./mouse ../data ../ie ../scroll-parent ../version ../widget".split(" "),a):a(jQuery)})(function(a){return a.widget("ui.sortable",a.ui.mouse,{version:"1.13.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,
scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(b,d,g){return b>=d&&b li > :first-child").add(b.find("> :not(li)").even())},heightStyle:"auto",
+(function(a){"function"===typeof define&&define.amd?define(["jquery","../version","../keycode","../unique-id","../widget"],a):a(jQuery)})(function(a){return a.widget("ui.accordion",{version:"1.13.2",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:function(b){return b.find("> li > :first-child").add(b.find("> :not(li)").even())},heightStyle:"auto",
icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var b=this.options;this.prevShow=this.prevHide=a();this._addClass("ui-accordion","ui-widget ui-helper-reset");this.element.attr("role","tablist");b.collapsible||
!1!==b.active&&null!=b.active||(b.active=0);this._processPanels();0>b.active&&(b.active+=this.headers.length);this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():a()}},_createIcons:function(){var b=this.options.icons;if(b){var d=a("");this._addClass(d,"ui-accordion-header-icon","ui-icon "+b.header);d.prependTo(this.headers);d=this.active.children(".ui-accordion-header-icon");this._removeClass(d,b.header)._addClass(d,null,b.activeHeader)._addClass(this.headers,
"ui-accordion-icons")}},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons");this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){this.element.removeAttr("role");this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId();this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId();"content"!==this.options.heightStyle&&b.css("height","")},
diff --git a/static/scripts/jquery-3.6.0.min.js b/static/scripts/jquery-3.6.0.min.js
deleted file mode 100644
index c4c6022f2..000000000
--- a/static/scripts/jquery-3.6.0.min.js
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
-!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0` may have
+ // a null one - a default behavior of all modern browsers.
+ var adown = a.nodeType === 9 && a.documentElement || a,
bup = b && b.parentNode;
return a === bup || !!( bup && bup.nodeType === 1 && (
adown.contains ?
@@ -2242,7 +2307,7 @@ Expr = Sizzle.selectors = {
return elem.nodeName.toLowerCase() === "input" &&
elem.type === "text" &&
- // Support: IE<8
+ // Support: IE <10 only
// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
( ( attr = elem.getAttribute( "type" ) ) == null ||
attr.toLowerCase() === "text" );
@@ -3129,8 +3194,8 @@ jQuery.fn.extend( {
var rootjQuery,
// A simple way to check for HTML strings
- // Prioritize #id over to avoid XSS via location.hash (#9521)
- // Strict HTML recognition (#11290: must start with <)
+ // Prioritize #id over to avoid XSS via location.hash (trac-9521)
+ // Strict HTML recognition (trac-11290: must start with <)
// Shortcut simple #id case for speed
rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
@@ -4087,7 +4152,7 @@ jQuery.extend( {
isReady: false,
// A counter to track how many items to wait for before
- // the ready event fires. See #6781
+ // the ready event fires. See trac-6781
readyWait: 1,
// Handle when the DOM is ready
@@ -4215,7 +4280,7 @@ function fcamelCase( _all, letter ) {
// Convert dashed to camelCase; used by the css and data modules
// Support: IE <=9 - 11, Edge 12 - 15
-// Microsoft forgot to hump their vendor prefix (#9572)
+// Microsoft forgot to hump their vendor prefix (trac-9572)
function camelCase( string ) {
return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
}
@@ -4251,7 +4316,7 @@ Data.prototype = {
value = {};
// We can accept data for non-element nodes in modern browsers,
- // but we should not, see #8335.
+ // but we should not, see trac-8335.
// Always return an empty object.
if ( acceptData( owner ) ) {
@@ -4490,7 +4555,7 @@ jQuery.fn.extend( {
while ( i-- ) {
// Support: IE 11 only
- // The attrs elements can be null (#14894)
+ // The attrs elements can be null (trac-14894)
if ( attrs[ i ] ) {
name = attrs[ i ].name;
if ( name.indexOf( "data-" ) === 0 ) {
@@ -4913,9 +4978,9 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
input = document.createElement( "input" );
// Support: Android 4.0 - 4.3 only
- // Check state lost if the name is set (#11217)
+ // Check state lost if the name is set (trac-11217)
// Support: Windows Web Apps (WWA)
- // `name` and `type` must use .setAttribute for WWA (#14901)
+ // `name` and `type` must use .setAttribute for WWA (trac-14901)
input.setAttribute( "type", "radio" );
input.setAttribute( "checked", "checked" );
input.setAttribute( "name", "t" );
@@ -4939,7 +5004,7 @@ var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
} )();
-// We have to close these tags to support XHTML (#13200)
+// We have to close these tags to support XHTML (trac-13200)
var wrapMap = {
// XHTML parsers do not magically insert elements in the
@@ -4965,7 +5030,7 @@ if ( !support.option ) {
function getAll( context, tag ) {
// Support: IE <=9 - 11 only
- // Use typeof to avoid zero-argument method invocation on host objects (#15151)
+ // Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
var ret;
if ( typeof context.getElementsByTagName !== "undefined" ) {
@@ -5048,7 +5113,7 @@ function buildFragment( elems, context, scripts, selection, ignored ) {
// Remember the top-level container
tmp = fragment.firstChild;
- // Ensure the created nodes are orphaned (#12392)
+ // Ensure the created nodes are orphaned (trac-12392)
tmp.textContent = "";
}
}
@@ -5469,15 +5534,15 @@ jQuery.event = {
for ( ; cur !== this; cur = cur.parentNode || this ) {
- // Don't check non-elements (#13208)
- // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+ // Don't check non-elements (trac-13208)
+ // Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
matchedHandlers = [];
matchedSelectors = {};
for ( i = 0; i < delegateCount; i++ ) {
handleObj = handlers[ i ];
- // Don't conflict with Object.prototype properties (#13203)
+ // Don't conflict with Object.prototype properties (trac-13203)
sel = handleObj.selector + " ";
if ( matchedSelectors[ sel ] === undefined ) {
@@ -5731,7 +5796,7 @@ jQuery.Event = function( src, props ) {
// Create target properties
// Support: Safari <=6 - 7 only
- // Target should not be a text node (#504, #13143)
+ // Target should not be a text node (trac-504, trac-13143)
this.target = ( src.target && src.target.nodeType === 3 ) ?
src.target.parentNode :
src.target;
@@ -5854,10 +5919,10 @@ jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateTyp
return true;
},
- // Suppress native focus or blur as it's already being fired
- // in leverageNative.
- _default: function() {
- return true;
+ // Suppress native focus or blur if we're currently inside
+ // a leveraged native-event stack
+ _default: function( event ) {
+ return dataPriv.get( event.target, type );
},
delegateType: delegateType
@@ -5956,7 +6021,8 @@ var
// checked="checked" or checked
rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
- rcleanScript = /^\s*\s*$/g;
+
+ rcleanScript = /^\s*\s*$/g;
// Prefer a tbody over its parent table for containing new rows
function manipulationTarget( elem, content ) {
@@ -6070,7 +6136,7 @@ function domManip( collection, args, callback, ignored ) {
// Use the original fragment for the last item
// instead of the first because it can end up
- // being emptied incorrectly in certain situations (#8070).
+ // being emptied incorrectly in certain situations (trac-8070).
for ( ; i < l; i++ ) {
node = fragment;
@@ -6111,6 +6177,12 @@ function domManip( collection, args, callback, ignored ) {
}, doc );
}
} else {
+
+ // Unwrap a CDATA section containing script contents. This shouldn't be
+ // needed as in XML documents they're already not visible when
+ // inspecting element contents and in HTML documents they have no
+ // meaning but we're preserving that logic for backwards compatibility.
+ // This will be removed completely in 4.0. See gh-4904.
DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
}
}
@@ -6393,9 +6465,12 @@ jQuery.each( {
} );
var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+var rcustomProp = /^--/;
+
+
var getStyles = function( elem ) {
- // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
+ // Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
// IE throws on elements created in popups
// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
var view = elem.ownerDocument.defaultView;
@@ -6430,6 +6505,15 @@ var swap = function( elem, options, callback ) {
var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
+var whitespace = "[\\x20\\t\\r\\n\\f]";
+
+
+var rtrimCSS = new RegExp(
+ "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
+ "g"
+);
+
+
( function() {
@@ -6495,7 +6579,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
}
// Support: IE <=9 - 11 only
- // Style of cloned element affects source element cloned (#8908)
+ // Style of cloned element affects source element cloned (trac-8908)
div.style.backgroundClip = "content-box";
div.cloneNode( true ).style.backgroundClip = "";
support.clearCloneStyle = div.style.backgroundClip === "content-box";
@@ -6575,6 +6659,7 @@ var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
function curCSS( elem, name, computed ) {
var width, minWidth, maxWidth, ret,
+ isCustomProp = rcustomProp.test( name ),
// Support: Firefox 51+
// Retrieving style before computed somehow
@@ -6585,11 +6670,42 @@ function curCSS( elem, name, computed ) {
computed = computed || getStyles( elem );
// getPropertyValue is needed for:
- // .css('filter') (IE 9 only, #12537)
- // .css('--customProperty) (#3144)
+ // .css('filter') (IE 9 only, trac-12537)
+ // .css('--customProperty) (gh-3144)
if ( computed ) {
+
+ // Support: IE <=9 - 11+
+ // IE only supports `"float"` in `getPropertyValue`; in computed styles
+ // it's only available as `"cssFloat"`. We no longer modify properties
+ // sent to `.css()` apart from camelCasing, so we need to check both.
+ // Normally, this would create difference in behavior: if
+ // `getPropertyValue` returns an empty string, the value returned
+ // by `.css()` would be `undefined`. This is usually the case for
+ // disconnected elements. However, in IE even disconnected elements
+ // with no styles return `"none"` for `getPropertyValue( "float" )`
ret = computed.getPropertyValue( name ) || computed[ name ];
+ if ( isCustomProp && ret ) {
+
+ // Support: Firefox 105+, Chrome <=105+
+ // Spec requires trimming whitespace for custom properties (gh-4926).
+ // Firefox only trims leading whitespace. Chrome just collapses
+ // both leading & trailing whitespace to a single space.
+ //
+ // Fall back to `undefined` if empty string returned.
+ // This collapses a missing definition with property defined
+ // and set to an empty string but there's no standard API
+ // allowing us to differentiate them without a performance penalty
+ // and returning `undefined` aligns with older jQuery.
+ //
+ // rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED
+ // as whitespace while CSS does not, but this is not a problem
+ // because CSS preprocessing replaces them with U+000A LINE FEED
+ // (which *is* CSS whitespace)
+ // https://www.w3.org/TR/css-syntax-3/#input-preprocessing
+ ret = ret.replace( rtrimCSS, "$1" ) || undefined;
+ }
+
if ( ret === "" && !isAttached( elem ) ) {
ret = jQuery.style( elem, name );
}
@@ -6685,7 +6801,6 @@ var
// except "table", "table-cell", or "table-caption"
// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
rdisplayswap = /^(none|table(?!-c[ea]).+)/,
- rcustomProp = /^--/,
cssShow = { position: "absolute", visibility: "hidden", display: "block" },
cssNormalTransform = {
letterSpacing: "0",
@@ -6921,15 +7036,15 @@ jQuery.extend( {
if ( value !== undefined ) {
type = typeof value;
- // Convert "+=" or "-=" to relative numbers (#7345)
+ // Convert "+=" or "-=" to relative numbers (trac-7345)
if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
value = adjustCSS( elem, name, ret );
- // Fixes bug #9237
+ // Fixes bug trac-9237
type = "number";
}
- // Make sure that null and NaN values aren't set (#7116)
+ // Make sure that null and NaN values aren't set (trac-7116)
if ( value == null || value !== value ) {
return;
}
@@ -7553,7 +7668,7 @@ function Animation( elem, properties, options ) {
remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
// Support: Android 2.3 only
- // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+ // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)
temp = remaining / animation.duration || 0,
percent = 1 - temp,
index = 0,
@@ -7943,7 +8058,6 @@ jQuery.fx.speeds = {
// Based off of the plugin by Clint Helfers, with permission.
-// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
jQuery.fn.delay = function( time, type ) {
time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
type = type || "fx";
@@ -8168,8 +8282,7 @@ jQuery.extend( {
// Support: IE <=9 - 11 only
// elem.tabIndex doesn't always return the
// correct value when it hasn't been explicitly set
- // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- // Use proper attribute retrieval(#12072)
+ // Use proper attribute retrieval (trac-12072)
var tabindex = jQuery.find.attr( elem, "tabindex" );
if ( tabindex ) {
@@ -8273,8 +8386,7 @@ function classesToArray( value ) {
jQuery.fn.extend( {
addClass: function( value ) {
- var classes, elem, cur, curValue, clazz, j, finalValue,
- i = 0;
+ var classNames, cur, curValue, className, i, finalValue;
if ( isFunction( value ) ) {
return this.each( function( j ) {
@@ -8282,36 +8394,35 @@ jQuery.fn.extend( {
} );
}
- classes = classesToArray( value );
+ classNames = classesToArray( value );
- if ( classes.length ) {
- while ( ( elem = this[ i++ ] ) ) {
- curValue = getClass( elem );
- cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+ if ( classNames.length ) {
+ return this.each( function() {
+ curValue = getClass( this );
+ cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
if ( cur ) {
- j = 0;
- while ( ( clazz = classes[ j++ ] ) ) {
- if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
- cur += clazz + " ";
+ for ( i = 0; i < classNames.length; i++ ) {
+ className = classNames[ i ];
+ if ( cur.indexOf( " " + className + " " ) < 0 ) {
+ cur += className + " ";
}
}
// Only assign if different to avoid unneeded rendering.
finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) {
- elem.setAttribute( "class", finalValue );
+ this.setAttribute( "class", finalValue );
}
}
- }
+ } );
}
return this;
},
removeClass: function( value ) {
- var classes, elem, cur, curValue, clazz, j, finalValue,
- i = 0;
+ var classNames, cur, curValue, className, i, finalValue;
if ( isFunction( value ) ) {
return this.each( function( j ) {
@@ -8323,45 +8434,42 @@ jQuery.fn.extend( {
return this.attr( "class", "" );
}
- classes = classesToArray( value );
+ classNames = classesToArray( value );
- if ( classes.length ) {
- while ( ( elem = this[ i++ ] ) ) {
- curValue = getClass( elem );
+ if ( classNames.length ) {
+ return this.each( function() {
+ curValue = getClass( this );
// This expression is here for better compressibility (see addClass)
- cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+ cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
if ( cur ) {
- j = 0;
- while ( ( clazz = classes[ j++ ] ) ) {
+ for ( i = 0; i < classNames.length; i++ ) {
+ className = classNames[ i ];
// Remove *all* instances
- while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
- cur = cur.replace( " " + clazz + " ", " " );
+ while ( cur.indexOf( " " + className + " " ) > -1 ) {
+ cur = cur.replace( " " + className + " ", " " );
}
}
// Only assign if different to avoid unneeded rendering.
finalValue = stripAndCollapse( cur );
if ( curValue !== finalValue ) {
- elem.setAttribute( "class", finalValue );
+ this.setAttribute( "class", finalValue );
}
}
- }
+ } );
}
return this;
},
toggleClass: function( value, stateVal ) {
- var type = typeof value,
+ var classNames, className, i, self,
+ type = typeof value,
isValidValue = type === "string" || Array.isArray( value );
- if ( typeof stateVal === "boolean" && isValidValue ) {
- return stateVal ? this.addClass( value ) : this.removeClass( value );
- }
-
if ( isFunction( value ) ) {
return this.each( function( i ) {
jQuery( this ).toggleClass(
@@ -8371,17 +8479,20 @@ jQuery.fn.extend( {
} );
}
- return this.each( function() {
- var className, i, self, classNames;
+ if ( typeof stateVal === "boolean" && isValidValue ) {
+ return stateVal ? this.addClass( value ) : this.removeClass( value );
+ }
+
+ classNames = classesToArray( value );
+ return this.each( function() {
if ( isValidValue ) {
// Toggle individual class names
- i = 0;
self = jQuery( this );
- classNames = classesToArray( value );
- while ( ( className = classNames[ i++ ] ) ) {
+ for ( i = 0; i < classNames.length; i++ ) {
+ className = classNames[ i ];
// Check each className given, space separated list
if ( self.hasClass( className ) ) {
@@ -8515,7 +8626,7 @@ jQuery.extend( {
val :
// Support: IE <=10 - 11 only
- // option.text throws exceptions (#14686, #14858)
+ // option.text throws exceptions (trac-14686, trac-14858)
// Strip and collapse whitespace
// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
stripAndCollapse( jQuery.text( elem ) );
@@ -8542,7 +8653,7 @@ jQuery.extend( {
option = options[ i ];
// Support: IE <=9 only
- // IE8-9 doesn't update selected after form reset (#2551)
+ // IE8-9 doesn't update selected after form reset (trac-2551)
if ( ( option.selected || i === index ) &&
// Don't return options that are disabled or in a disabled optgroup
@@ -8685,8 +8796,8 @@ jQuery.extend( jQuery.event, {
return;
}
- // Determine event propagation path in advance, per W3C events spec (#9951)
- // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+ // Determine event propagation path in advance, per W3C events spec (trac-9951)
+ // Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
bubbleType = special.delegateType || type;
@@ -8738,7 +8849,7 @@ jQuery.extend( jQuery.event, {
acceptData( elem ) ) {
// Call a native DOM method on the target with the same name as the event.
- // Don't do default actions on window, that's where global variables be (#6170)
+ // Don't do default actions on window, that's where global variables be (trac-6170)
if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
// Don't re-trigger an onFOO event when we call its FOO() method
@@ -9012,7 +9123,7 @@ var
rantiCache = /([?&])_=[^&]*/,
rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
- // #7653, #8125, #8152: local protocol detection
+ // trac-7653, trac-8125, trac-8152: local protocol detection
rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
rnoContent = /^(?:GET|HEAD)$/,
rprotocol = /^\/\//,
@@ -9035,7 +9146,7 @@ var
*/
transports = {},
- // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ // Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression
allTypes = "*/".concat( "*" ),
// Anchor tag for parsing the document origin
@@ -9106,7 +9217,7 @@ function inspectPrefiltersOrTransports( structure, options, originalOptions, jqX
// A special extend for ajax options
// that takes "flat" options (not to be deep extended)
-// Fixes #9887
+// Fixes trac-9887
function ajaxExtend( target, src ) {
var key, deep,
flatOptions = jQuery.ajaxSettings.flatOptions || {};
@@ -9517,12 +9628,12 @@ jQuery.extend( {
deferred.promise( jqXHR );
// Add protocol if not provided (prefilters might expect it)
- // Handle falsy url in the settings object (#10093: consistency with old signature)
+ // Handle falsy url in the settings object (trac-10093: consistency with old signature)
// We also use the url parameter if available
s.url = ( ( url || s.url || location.href ) + "" )
.replace( rprotocol, location.protocol + "//" );
- // Alias method option to type as per ticket #12004
+ // Alias method option to type as per ticket trac-12004
s.type = options.method || options.type || s.method || s.type;
// Extract dataTypes list
@@ -9565,7 +9676,7 @@ jQuery.extend( {
}
// We can fire global events as of now if asked to
- // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+ // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)
fireGlobals = jQuery.event && s.global;
// Watch for a new set of requests
@@ -9594,7 +9705,7 @@ jQuery.extend( {
if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
- // #9682: remove data so that it's not used in an eventual retry
+ // trac-9682: remove data so that it's not used in an eventual retry
delete s.data;
}
@@ -9867,7 +9978,7 @@ jQuery._evalUrl = function( url, options, doc ) {
return jQuery.ajax( {
url: url,
- // Make this explicit, since user can override this through ajaxSetup (#11264)
+ // Make this explicit, since user can override this through ajaxSetup (trac-11264)
type: "GET",
dataType: "script",
cache: true,
@@ -9976,7 +10087,7 @@ var xhrSuccessStatus = {
0: 200,
// Support: IE <=9 only
- // #1450: sometimes IE returns 1223 when it should be 204
+ // trac-1450: sometimes IE returns 1223 when it should be 204
1223: 204
},
xhrSupported = jQuery.ajaxSettings.xhr();
@@ -10048,7 +10159,7 @@ jQuery.ajaxTransport( function( options ) {
} else {
complete(
- // File: protocol always yields status 0; see #8605, #14207
+ // File: protocol always yields status 0; see trac-8605, trac-14207
xhr.status,
xhr.statusText
);
@@ -10109,7 +10220,7 @@ jQuery.ajaxTransport( function( options ) {
xhr.send( options.hasContent && options.data || null );
} catch ( e ) {
- // #14683: Only rethrow if this hasn't been notified as an error yet
+ // trac-14683: Only rethrow if this hasn't been notified as an error yet
if ( callback ) {
throw e;
}
@@ -10753,7 +10864,9 @@ jQuery.each(
// Support: Android <=4.0 only
// Make sure we trim BOM and NBSP
-var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
+// Require that the "whitespace run" starts from a non-whitespace
+// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
+var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
// Bind a function to a context, optionally partially applying any
// arguments.
@@ -10820,7 +10933,7 @@ jQuery.isNumeric = function( obj ) {
jQuery.trim = function( text ) {
return text == null ?
"" :
- ( text + "" ).replace( rtrim, "" );
+ ( text + "" ).replace( rtrim, "$1" );
};
@@ -10868,8 +10981,8 @@ jQuery.noConflict = function( deep ) {
};
// Expose jQuery and $ identifiers, even in AMD
-// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
-// and CommonJS for browser emulators (#13566)
+// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (trac-13566)
if ( typeof noGlobal === "undefined" ) {
window.jQuery = window.$ = jQuery;
}
diff --git a/static/scripts/jquery-3.6.2.min.js b/static/scripts/jquery-3.6.2.min.js
new file mode 100644
index 000000000..eda7ce803
--- /dev/null
+++ b/static/scripts/jquery-3.6.2.min.js
@@ -0,0 +1,2 @@
+/*! jQuery v3.6.2 | (c) OpenJS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),v={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},S=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||S).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.2",E=function(e,t){return new E.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,S)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&v(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!y||!y.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ve(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=E)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{if(d.cssSupportsSelector&&!CSS.supports("selector("+c+")"))throw new Error;return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===E&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[E]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ye(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ve(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,S=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.cssSupportsSelector=ce(function(){return CSS.supports("selector(*)")&&C.querySelectorAll(":is(:jqfake)")&&!CSS.supports("selector(:is(*,:jqfake))")}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=E,!C.getElementsByName||!C.getElementsByName(E).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&S){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&S)return t.getElementsByClassName(e)},s=[],y=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+E+"-]").length||y.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||y.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+E+"+*").length||y.push(".#.+[+~]"),e.querySelectorAll("\\\f"),y.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),d.cssSupportsSelector||y.push(":has"),y=y.length&&new RegExp(y.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),v=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType&&e.documentElement||e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&v(p,e)?-1:t==C||t.ownerDocument==p&&v(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&S&&!N[t+" "]&&(!s||!s.test(t))&&(!y||!y.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:S,!0)),N.test(r[1])&&E.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=S.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,D=E(S);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=S.createDocumentFragment().appendChild(S.createElement("div")),(fe=S.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),v.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",v.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",v.option=!!ce.lastChild;var ge={thead:[1,""],col:[2,""],tr:[2,""],td:[3,""],_default:[0,"",""]};function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var me=/<|?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),S.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;E.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||E.expando+"_"+Ct.guid++;return this[e]=!0,e}}),E.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||E.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?E(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),v.createHTMLDocument=((Ut=S.implementation.createHTMLDocument("").body).innerHTML="",2===Ut.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(v.createHTMLDocument?((r=(t=S.implementation.createHTMLDocument("")).createElement("base")).href=S.location.href,t.head.appendChild(r)):t=S),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(E.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},E.expr.pseudos.animated=function(t){return E.grep(E.timers,function(e){return t===e.elem}).length},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return B(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=_e(v.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return B(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){E.fn[t]=function(e){return this.on(t,e)}}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0',
- 'title': 'Close'
+ 'title': 'Close',
},
'checkAll': {
'class': 'ui-multiselect-all',
'icon': '',
'text': 'Check all',
- 'title': 'Check all'
+ 'title': 'Check all',
},
'uncheckAll': {
'class': 'ui-multiselect-none',
'icon': '',
'text': 'Uncheck all',
- 'title': 'Uncheck all'
+ 'title': 'Uncheck all',
},
'flipAll': {
'class': 'ui-multiselect-flip',
'icon': '',
'text': 'Flip all',
- 'title': 'Flip all'
+ 'title': 'Flip all',
},
'collapse': {
'icon': '',
- 'title': 'Collapse'
+ 'title': 'Collapse',
},
'expand': {
'icon': '',
- 'title': 'Expand'
+ 'title': 'Expand',
},
'collapseAll': {
'class': 'ui-multiselect-collapseall',
'icon': '',
'text': 'Collapse all',
- 'title': 'Collapse all'
+ 'title': 'Collapse all',
},
'expandAll': {
'class': 'ui-multiselect-expandall',
'icon': '',
'text': 'Expand all',
- 'title': 'Expand all'
- }
+ 'title': 'Expand all',
+ },
};
/**
* Checks an option element for data-image-src
* and adds that as an image tag within the widget option
- *
+ *
* @param {Node} option to pull an image from
* @param {Node} span to insert image tag into
*/
@@ -92,10 +92,10 @@
/**
* Retrieves the font size of the document
* Defaults to 16px
- * @returns {string} pixel string for font size
+ * @return {string} pixel string for font size
*/
function determineFontSize() {
- if(window.getComputedStyle) {
+ if (window.getComputedStyle) {
return getComputedStyle(document.body).fontSize;
}
return '16px';
@@ -104,20 +104,21 @@
/**
* Creates a jQuery object from the input element
* This can be a string selector, Node, or jQuery object
- * @param {(object|string)} elem
+ * @param {(object|string)} elem
+ * @return {object} jquery object for element
*/
function getjQueryFromElement(elem) {
- if(!!elem.jquery) {
+ if (!!elem.jquery) {
return elem;
}
- if(!!elem.nodeType) {
+ if (!!elem.nodeType) {
return $(elem);
}
return $(elem).eq(0);
}
- /**
+ /**
* Converts dimensions specified in options to pixel values.
* Determines if specified value is a minimum, maximum or exact value.
* The value can be a number or a string with px, pts, ems, in, cm, mm, or % units.
@@ -131,7 +132,7 @@
* @param {string} dimText Option text (or number) containing possibly < or >, number, and a unit.
* @param {object} $elem jQuery object (or node) to reference for % calculations.
* @param {boolean} isHeight T/F to change from using width in % calculations.
- * @returns {pixels, minimax} object containing pixels and -1/1/0 indicating min/max/exact.
+ * @return {object} object containing pixels and -1/1/0 indicating min/max/exact.
*/
function parse2px(dimText, $elem, isHeight) {
if (typeof dimText !== 'string') {
@@ -165,39 +166,40 @@
pixels = value;
}
// minimax: -1 => minimum value, 1 => maximum value, 0 => exact value
- return {px: pixels, minimax: minimax == '>' ? -1 : ( minimax == '<' ? 1 : 0 ) };
+ return {px: pixels, minimax: minimax == '>' ? -1 : ( minimax == '<' ? 1 : 0 )};
}
- $.widget("ech.multiselect", {
+ $.widget('ech.multiselect', {
// default options
options: {
- buttonWidth: 225, // (integer | string | 'auto' | null) Sets the min/max/exact width of the button.
- menuWidth: null, // (integer | string | 'auto' | null) If a number is provided, sets the exact menu width.
- menuHeight: 200, // (integer | string | 'auto' | 'size') Sets the height of the menu or determines it using native select's size setting.
- resizableMenu: false, // (true | false) Enables the use of jQuery UI resizable if it is loaded.
- appendTo: null, // (jQuery | DOM element | selector string) If provided, this specifies what element to append the widget to in the DOM.
- position: {}, // (object) A jQuery UI position object that constrains how the pop-up menu is positioned.
- zIndex: null, // (integer) Overrides the z-index set for the menu container.
- classes: '', // (string) Classes that you can provide to be applied to the elements making up the widget.
- header: ['checkAll','uncheckAll'], // (false | string | array) False, custom string or array indicating which links to show in the header & in what order.
- linkInfo: null, // (object | null) Supply an obect of link information to use alternative icons, icon labels, or icon title text. See linkDefaults above for object structure.
+ buttonWidth: 225, // (integer | string | 'auto' | null) Sets the min/max/exact width of the button.
+ menuWidth: null, // (integer | string | 'auto' | null) If a number is provided, sets the exact menu width.
+ menuHeight: 200, // (integer | string | 'auto' | 'size') Sets the height of the menu or determines it using native select's size setting.
+ resizableMenu: false, // (true | false) Enables the use of jQuery UI resizable if it is loaded.
+ appendTo: null, // (jQuery | DOM element | selector string) If provided, this specifies what element to append the widget to in the DOM.
+ position: {}, // (object) A jQuery UI position object that constrains how the pop-up menu is positioned.
+ zIndex: null, // (integer) Overrides the z-index set for the menu container.
+ classes: '', // (string) Classes that you can provide to be applied to the elements making up the widget.
+ header: ['checkAll', 'uncheckAll'], // (false | string | array) False, custom string or array indicating which links to show in the header & in what order.
+ linkInfo: null, // (object | null) Supply an obect of link information to use alternative icons, icon labels, or icon title text. See linkDefaults above for object structure.
noneSelectedText: 'Select options', // (string | null) The text to show in the button where nothing is selected. Set to null to use the native select's placeholder text.
- selectedText: '# of # selected', // (string) A "template" that indicates how to show the count of selections in the button. The "#'s" are replaced by the selection count & option count.
- selectedList: 0, // (integer) The actual list selections will be shown in the button when the count of selections is <= than this number.
- selectedListSeparator: ', ', // (string) This allows customization of the list separator. Use ',
' to make the button grow vertically showing 1 selection per line.
- maxSelected: null, // (integer | null) If selected count > maxSelected, then message is displayed, and new selection is undone.
- openEffect: null, // (array) An array containing menu opening effect information.
- closeEffect: null, // (array) An array containing menu closing effect information.
- autoOpen: false, // (true | false) If true, then the menu will be opening immediately after initialization.
- htmlText: [], // (array) List of 'button' &/or 'options' indicating in which parts of the widget to treat text as html.
- wrapText: ['button','header','options'], // (array) List of 'button', 'header', &/or 'options' indicating in which parts of the widget to wrap text.
- listbox: false, // (true | false) Omits the button and instead of a pop-up inserts the open menu directly after the native select as a list box.
- addInputNames: true, // (true | false) If true, names are created for each option input in the multi-select.
- disableInputsOnToggle: true, // (true | false) If true, each individual checkbox input is also disabled when the widget is disabled.
- groupsSelectable: true, // (true | false) Determines if clicking on an option group heading selects all of its options.
- groupsCollapsable: false, // (true | false) Determines if option groups can be collapsed.
- groupColumns: false // (true | false) Displays groups in a horizonal column layout.
+ selectedText: '# of # selected', // (string) A "template" that indicates how to show the count of selections in the button. The "#'s" are replaced by the selection count & option count.
+ selectedList: 0, // (integer) The actual list selections will be shown in the button when the count of selections is <= than this number.
+ selectedListSeparator: ', ', // (string) This allows customization of the list separator. Use ',
' to make the button grow vertically showing 1 selection per line.
+ maxSelected: null, // (integer | null) If selected count > maxSelected, then message is displayed, and new selection is undone.
+ openEffect: null, // (array) An array containing menu opening effect information.
+ closeEffect: null, // (array) An array containing menu closing effect information.
+ autoOpen: false, // (true | false) If true, then the menu will be opening immediately after initialization.
+ htmlText: [], // (array) List of 'button' &/or 'options' indicating in which parts of the widget to treat text as html.
+ wrapText: ['button', 'header', 'options'], // (array) List of 'button', 'header', &/or 'options' indicating in which parts of the widget to wrap text.
+ listbox: false, // (true | false) Omits the button and instead of a pop-up inserts the open menu directly after the native select as a list box.
+ addInputNames: true, // (true | false) If true, names are created for each option input in the multi-select.
+ disableInputsOnToggle: true, // (true | false) If true, each individual checkbox input is also disabled when the widget is disabled.
+ groupsSelectable: true, // (true | false) Determines if clicking on an option group heading selects all of its options.
+ groupsCollapsable: false, // (true | false) Determines if option groups can be collapsed.
+ groupColumns: false, // (true | false) Displays groups in a horizonal column layout.
+ groupColumnsWidth: false, // (integer) The width of each select item in the groupColumns.
},
/**
@@ -207,19 +209,19 @@
* 3. If still do not have a valid DOM element to append to, then append to the document body.
*
* NOTE: this.element and this.document are jQuery objects per the jQuery UI widget API.
- * @returns {object} jQuery object for the DOM element to append to.
+ * @return {object} jQuery object for the DOM element to append to.
*/
_getAppendEl: function() {
- var elem = this.options.appendTo; // jQuery object or selector, DOM element or null.
+ var elem = this.options.appendTo; // jQuery object or selector, DOM element or null.
- if (elem) { // NOTE: The find below handles the jQuery selector case
+ if (elem) { // NOTE: The find below handles the jQuery selector case
elem = getjQueryFromElement(elem);
}
if (!elem || !elem[0]) {
elem = this.element.closest('.ui-front, dialog');
}
if (!elem.length) {
- elem = $(document.body); // Position at end of body. Note that this returns a DOM element.
+ elem = $(document.body); // Position at end of body. Note that this returns a DOM element.
}
return elem;
},
@@ -227,9 +229,9 @@
/**
* Constructs the button element for the widget
* Stores the result in this.$button
- * @returns{object} jQuery object for button
+ * @return{object} jQuery object for button
*/
- _buildButton: function () {
+ _buildButton: function() {
var wrapText = this.options.wrapText || [];
var $button = (this.$button = $(document.createElement('button')))
.addClass('ui-multiselect ui-widget ui-state-default ui-corner-all'
@@ -240,22 +242,22 @@
'type': 'button',
'title': this.element[0].title,
'tabIndex': this.element[0].tabIndex,
- 'id': this.element[0].id ? this.element[0].id + '_ms' : null
+ 'id': this.element[0].id ? this.element[0].id + '_ms' : null,
})
.prop('aria-haspopup', true)
.html(this._linkHTML('{{icon}}', 'open'));
this.$buttonlabel = $(document.createElement('span'))
- .html(this.options.noneSelectedText || $element[0].placeholder)
+ .html(this.options.noneSelectedText || this.element[0].placeholder)
.appendTo($button);
return $button;
},
/**
* Constructs HTML string for menu header
- * @returns {string}
+ * @return {string}
*/
- _buildHeaderHtml: function () {
+ _buildHeaderHtml: function() {
// Header controls will contain the links & ordering specified by the header option.
// Depending on how the options are set, this may be empty or simply plain text
if (!this.options.header) {
@@ -275,6 +277,19 @@
}
}
}
+
+ if (this.options.header.constructor == Object) {
+ var options = Object.keys(this.options.header);
+ for (var x = 0; x < options.length; x++) {
+ var displayText = options[x];
+ var linkInfoKey = this.options.header[displayText];
+ if (linkInfoKey && linkInfoKey in this.linkInfo
+ && !(this.options.maxSelected && linkInfoKey === 'checkAll')
+ && ['open', 'close', 'collapse', 'expand'].indexOf(linkInfoKey) === -1) {
+ headerLinksHTML += this._linkHTML('{{icon}}'+displayText+'', linkInfoKey);
+ }
+ }
+ }
return headerLinksHTML;
},
@@ -294,7 +309,7 @@
var options = this.options;
// Do an extend here to address link info missing from options.linkInfo--missing info defaults to that in linkDefaults.
- var linkInfo = ( this.linkInfo = $.extend(true, {}, linkDefaults, options.linkInfo || {}) );
+ this.linkInfo = $.extend(true, {}, linkDefaults, options.linkInfo || {});
// grab select width before hiding it
this._selectWidth = $element.outerWidth();
@@ -314,7 +329,7 @@
// bump unique ID after assigning it to the widget instance
this.multiselectID = multiselectID++;
-
+
this.$headerLinkContainer = $( document.createElement('ul') )
.addClass('ui-helper-reset')
.html( this._buildHeaderHtml()
@@ -356,9 +371,8 @@
}
// Use $.extend below since the "of" position property may not be able to be supplied via the option.
options.position = $.extend({'my': 'left top', 'at': 'left bottom', 'of': $button}, options.position || {});
- }
- else {
- $menu.insertAfter($element); // No button
+ } else {
+ $menu.insertAfter($element); // No button
}
this._bindEvents();
@@ -371,11 +385,13 @@
* Helper function used in _create()
* @param {string} linkTemplate HTML link template string
* @param {string} linkID key string to look up in linkInfo object.
- * @returns {object} link HTML
+ * @return {object} link HTML
*/
_linkHTML: function(linkTemplate, linkID) {
var self = this;
- return linkTemplate.replace(/{{(.*?)}}/ig, function(m, p1){ return self.linkInfo[linkID][p1] } )
+ return linkTemplate.replace(/{{(.*?)}}/ig, function(m, p1) {
+ return self.linkInfo[linkID][p1];
+} )
.replace('', '');
},
@@ -393,8 +409,7 @@
this.$headerLinkContainer
.find('.ui-multiselect-all, .ui-multiselect-none, .ui-multiselect-flip')
.toggle( !!elSelect.multiple );
- }
- else {
+ } else {
this.$header.hide();
}
@@ -416,7 +431,7 @@
*
*
* @param {node} option Option from select to be added to menu
- * @returns {object} jQuery object for menu option
+ * @return {object} jQuery object for menu option
*/
_makeOption: function(option) {
var elSelect = this.element.get(0);
@@ -430,19 +445,19 @@
var input = document.createElement('input');
var inputAttribs = {
- "type": isMultiple ? 'checkbox' : 'radio',
- "id": inputID,
- "title": option.title || null,
- "value": option.value,
- "name": this.options.addInputNames ? "multiselect_" + id : null,
- "checked": isSelected ? "checked" : null,
- "aria-selected": isSelected ? "true" : null,
- "disabled": isDisabled ? "disabled" : null,
- "aria-disabled": isDisabled ? "true" : null
+ 'type': isMultiple ? 'checkbox' : 'radio',
+ 'id': inputID,
+ 'title': option.title || null,
+ 'value': option.value,
+ 'name': this.options.addInputNames ? 'multiselect_' + id : null,
+ 'checked': isSelected ? 'checked' : null,
+ 'aria-selected': isSelected ? 'true' : null,
+ 'disabled': isDisabled ? 'disabled' : null,
+ 'aria-disabled': isDisabled ? 'true' : null,
};
for (var name in inputAttribs) {
if (inputAttribs[name] !== null) {
- input.setAttribute(name,inputAttribs[name]);
+ input.setAttribute(name, inputAttribs[name]);
}
}
// Clone data attributes
@@ -459,8 +474,7 @@
var span = document.createElement('span');
if (this.htmlAllowedFor('options')) {
span.innerHTML = option.innerHTML;
- }
- else {
+ } else {
span.textContent = option.textContent;
}
@@ -480,7 +494,13 @@
var item = document.createElement('li');
item.className = (isDisabled ? 'ui-multiselect-disabled ' : '')
+ + (this.options.groupColumns ? ' ui-multiselect-columns' : '')
+ (option.className || '');
+
+ if (this.options.groupColumnsWidth) {
+ item.style.width = this.options.groupColumnsWidth+'px';
+ }
+
item.appendChild(label);
return item;
@@ -512,7 +532,7 @@
// Build the list section for this optgroup, complete w/ option inputs...
var $collapseButton = !!self.options.groupsCollapsable
? $( document.createElement('button') )
- .attr({'title': self.linkInfo.collapse.title})
+ .attr({'title': self.linkInfo.collapse.title, 'type': 'button'})
.addClass('ui-state-default ui-corner-all ui-multiselect-collapser')
.html(self.linkInfo.collapse.icon)
: null;
@@ -525,10 +545,14 @@
.addClass('ui-multiselect-optgroup'
+ (self.options.groupColumns ? ' ui-multiselect-columns' : '')
+ (elem.className ? ' ' + elem.className : ''))
- .append($collapseButton, $optGroupLabel, $optionGroup)
+ .append($collapseButton, $optGroupLabel, $optionGroup);
+
+ if (self.options.groupColumnsWidth) {
+ $optGroupItem.css('width', self.options.groupColumnsWidth+'px');
+ }
+
list.push($optGroupItem);
- }
- else {
+ } else {
list.push(self._makeOption(elem));
}
});
@@ -554,14 +578,13 @@
.toggle( !!$element[0].multiple );
}
- this._buildOptionList(); // Clear and rebuild the menu.
- this._updateCache(); // cache some more useful elements
+ this._buildOptionList(); // Clear and rebuild the menu.
+ this._updateCache(); // cache some more useful elements
if (!this.options.listbox) {
this._setButtonWidth();
this.update(true);
- }
- else {
+ } else {
if (!this._isOpen) {
this.$menu.show();
this._isOpen = true;
@@ -605,7 +628,7 @@
* from the native select options' selected states.
* @param {boolean} skipDisabled If true, disabled options in either are skipped.
*/
- resync : function(skipDisabled) {
+ resync: function(skipDisabled) {
var $inputs = this.$inputs;
var $options = this.element.find('option');
@@ -621,8 +644,7 @@
});
this._trigger('resync');
this.update();
- }
- else {
+ } else {
this.refresh();
}
},
@@ -651,16 +673,15 @@
if (numChecked) {
if (typeof selectedText === 'function') {
value = selectedText.call(this, numChecked, inputCount, $checked.get());
- }
- else if (/\d/.test(selectedList) && selectedList > 0 && numChecked <= selectedList) {
- value = $checked.map(function() { return $(this).next().text().replace(/\n$/, '') })
+ } else if (/\d/.test(selectedList) && selectedList > 0 && numChecked <= selectedList) {
+ value = $checked.map(function() {
+ return $(this).next().text().replace(/\n$/, '');
+})
.get().join(options.selectedListSeparator);
- }
- else {
+ } else {
value = selectedText.replace('#', numChecked).replace('#', inputCount);
}
- }
- else {
+ } else {
value = options.noneSelectedText;
}
@@ -696,8 +717,11 @@
_bindButtonEvents: function() {
var self = this;
var $button = this.$button;
+ /**
+ * @return {Boolean} always false
+ */
function buttonClickHandler() {
- self[ self._isOpen ? 'close' : 'open' ]();
+ self[self._isOpen ? 'close' : 'open']();
return false;
}
@@ -720,7 +744,7 @@
},
blur: function() {
this.classList.remove('ui-state-focus');
- }
+ },
})
// webkit doesn't like it when you click on the span :(
.find('span')
@@ -735,14 +759,13 @@
var index = $inputs.index( $inputs.filter(':checked') );
if (e.which === 38 && index) {
$inputs.eq(index - 1).trigger('click');
- }
- else if (e.which === 40 && index < $inputs.length - 1) {
+ } else if (e.which === 40 && index < $inputs.length - 1) {
$inputs.eq(index + 1).trigger('click');
}
return;
}
- switch(e.which) {
+ switch (e.which) {
case 27: // esc
case 37: // left
case 38: // up
@@ -778,7 +801,7 @@
var label = this.textContent;
// trigger before callback and bail if the return is false
- if (self._trigger('beforeoptgrouptoggle', e, { inputs:nodes, label:label }) === false) {
+ if (self._trigger('beforeoptgrouptoggle', e, {inputs: nodes, label: label}) === false) {
return;
}
@@ -797,19 +820,19 @@
self._trigger('optgrouptoggle', e, {
inputs: nodes,
label: label,
- checked: nodes.length ? nodes[0].checked : null
+ checked: nodes.length ? nodes[0].checked : null,
});
})
// collapse button
.on('click.multiselect', '.ui-multiselect-collapser', function(e) {
- var $this = $(this),
- $parent = $this.parent(),
- optgroupLabel = $parent.find('.ui-multiselect-grouplabel').first().html(),
- linkInfo = self.linkInfo,
- collapsedClass = 'ui-multiselect-collapsed',
- isCollapsed = $parent.hasClass(collapsedClass);
-
- if (self._trigger('beforecollapsetoggle', e, { label: optgroupLabel , collapsed: isCollapsed }) === false) {
+ var $this = $(this);
+ var $parent = $this.parent();
+ var optgroupLabel = $parent.find('.ui-multiselect-grouplabel').first().html();
+ var linkInfo = self.linkInfo;
+ var collapsedClass = 'ui-multiselect-collapsed';
+ var isCollapsed = $parent.hasClass(collapsedClass);
+
+ if (self._trigger('beforecollapsetoggle', e, {label: optgroupLabel, collapsed: isCollapsed}) === false) {
return;
}
$parent.toggleClass(collapsedClass);
@@ -821,7 +844,7 @@
self._setMenuHeight(true);
}
- self._trigger('collapsetoggle', e, { label: optgroupLabel, collapsed: !isCollapsed });
+ self._trigger('collapsetoggle', e, {label: optgroupLabel, collapsed: !isCollapsed});
})
// collapse button
.on('mouseenter.multiselect', '.ui-multiselect-collapser', function(e) {
@@ -841,7 +864,7 @@
var scrollY = window.pageYOffset;
self.$labels.removeClass('ui-state-hover');
- $(this).addClass('ui-state-hover').find('input').focus();
+ $(this).addClass('ui-state-hover').find('input').trigger('focus');
// Restore scroll positions if altered by setting input focus
if ( !param || !param.allowScroll ) {
@@ -863,13 +886,12 @@
}
e.preventDefault();
- switch(e.which) {
+ switch (e.which) {
case 9: // tab
if (e.shiftKey) {
- self.$menu.find(".ui-state-hover").removeClass("ui-state-hover");
- self.$header.find("li").last().find("a").focus();
- }
- else {
+ self.$menu.find('.ui-state-hover').removeClass('ui-state-hover');
+ self.$header.find('li').last().find('a').trigger('focus');
+ } else {
self.close();
}
break;
@@ -886,17 +908,17 @@
case 32: // space
$(this).find('input')[0].click();
break;
- case 65: // Alt-A
+ case 65: // Alt-A
if (e.altKey) {
self.checkAll();
}
break;
- case 70: // Alt-F
+ case 70: // Alt-F
if (e.altKey) {
self.flipAll();
}
break;
- case 85: // Alt-U
+ case 85: // Alt-U
if (e.altKey) {
self.uncheckAll();
}
@@ -914,21 +936,21 @@
var $tags = $element.find('option');
var isMultiple = $element[0].multiple;
var $allInputs = self.$inputs;
- var numChecked = $allInputs.filter(":checked").length;
+ var numChecked = $allInputs.filter(':checked').length;
var options = self.options;
var textFxn = self.htmlAllowedFor('options') ? 'html' : 'text';
- var optionText = $input.parent().find("span")[textFxn]();
+ var optionText = $input.parent().find('span')[textFxn]();
var maxSelected = options.maxSelected;
// bail if this input is disabled or the event is cancelled
- if (input.disabled || self._trigger('click', e, { value: val, text: optionText, checked: checked }) === false) {
+ if (input.disabled || self._trigger('click', e, {value: val, text: optionText, checked: checked}) === false) {
e.preventDefault();
return;
}
if (maxSelected && checked && numChecked > maxSelected) {
- if (self._trigger('maxselected', e, { labels: self.$labels, inputs: $allInputs }) !== false) {
- self.buttonMessage("LIMIT OF " + (numChecked - 1) + " REACHED!");
+ if (self._trigger('maxselected', e, {labels: self.$labels, inputs: $allInputs}) !== false) {
+ self.buttonMessage('LIMIT OF ' + (numChecked - 1) + ' REACHED!');
}
input.checked = false;
e.preventDefault();
@@ -957,7 +979,7 @@
}
// fire change on the select box
- $element.trigger("change");
+ $element.trigger('change');
// setTimeout is to fix multiselect issue #14 and #47. caused by jQuery issue #3827
// http://bugs.jquery.com/ticket/3827
@@ -976,32 +998,32 @@
self.$header
.on('click.multiselect', 'a', function(e) {
var headerLinks = {
- 'ui-multiselect-close' : 'close',
- 'ui-multiselect-all' : 'checkAll',
- 'ui-multiselect-none' : 'uncheckAll',
- 'ui-multiselect-flip' : 'flipAll',
- 'ui-multiselect-collapseall' : 'collapseAll',
- 'ui-multiselect-expandall' : 'expandAll'
+ 'ui-multiselect-close': 'close',
+ 'ui-multiselect-all': 'checkAll',
+ 'ui-multiselect-none': 'uncheckAll',
+ 'ui-multiselect-flip': 'flipAll',
+ 'ui-multiselect-collapseall': 'collapseAll',
+ 'ui-multiselect-expandall': 'expandAll',
};
for (hdgClass in headerLinks) {
if ( this.classList.contains(hdgClass) ) {
// headerLinks[hdgClass] is the click handler name
- self[ headerLinks[hdgClass] ]();
+ self[headerLinks[hdgClass]]();
e.preventDefault();
return false;
}
}
}).
on('keydown.multiselect', 'a', function(e) {
- switch(e.which) {
+ switch (e.which) {
case 27:
self.close();
break;
- case 9: //tab
+ case 9: // tab
var $target = $(e.target);
if ((e.shiftKey
&& !$target.parent().prev().length
- && !self.$header.find(".ui-multiselect-filter").length)
+ && !self.$header.find('.ui-multiselect-filter').length)
|| (!$target.parent().next().length && !self.$labels.length && !e.shiftKey)) {
self.close();
e.preventDefault();
@@ -1015,7 +1037,7 @@
* Allows the widget to be resized if the option is set and resizable is
* included in jQuery UI
*/
- _setResizable: function () {
+ _setResizable: function() {
if (!this.options.resizableMenu || !('resizable' in $.ui)) {
return;
}
@@ -1024,7 +1046,7 @@
containment: 'parent',
handles: 's',
helper: 'ui-multiselect-resize',
- stop: function (e, ui) {
+ stop: function(e, ui) {
// Force consistent width
ui.size.width = ui.originalSize.width;
$(this).outerWidth(ui.originalSize.width);
@@ -1032,7 +1054,7 @@
this.options.menuHeight = ui.size.height;
}
this._setMenuHeight(true);
- }
+ },
});
this.$menu.hide();
},
@@ -1090,8 +1112,7 @@
var pixels = parsed.px;
var minimax = parsed.minimax;
width = minimax < 0 ? Math.max(width, pixels) : ( minimax > 0 ? Math.min(width, pixels) : pixels );
- }
- else { // keywords
+ } else { // keywords
buttonWidth = buttonWidth.toLowerCase();
}
@@ -1122,8 +1143,7 @@
var pixels = parsed.px;
var minimax = parsed.minimax;
width = minimax < 0 ? Math.max(width, pixels) : ( minimax > 0 ? Math.min(width, pixels) : pixels );
- }
- else { // keywords
+ } else { // keywords
menuWidth = menuWidth.toLowerCase();
}
@@ -1177,8 +1197,7 @@
optionHeight = parse2px(optionHeight, self.element, true).px;
maxHeight = Math.min(optionHeight, maxHeight) - headerHeight - menuBorderPaddingHt - cbBorderPaddingHt;
- }
- else if (optionHeight.toLowerCase() === 'size') {
+ } else if (optionHeight.toLowerCase() === 'size') {
// Overall height based on native select 'size' attribute
useSelectSize = true;
// Retrieves native select's size attribute or defaults to 4 (like native select).
@@ -1187,7 +1206,7 @@
var overflowSetting = 'hidden';
var itemCount = 0;
- var hoverAdjust = 4; // Adjustment for hover height included here.
+ var hoverAdjust = 4; // Adjustment for hover height included here.
var ulHeight = hoverAdjust;
var ulTop = -1;
@@ -1199,7 +1218,7 @@
if (ulTop < 0) {
ulTop = this.offsetTop;
}
- ulHeight = this.offsetTop + this.offsetHeight - ulTop + hoverAdjust;
+ ulHeight = this.offsetTop + this.offsetHeight - ulTop + hoverAdjust;
if (useSelectSize && ++itemCount >= elSelectSize || ulHeight > maxHeight) {
overflowSetting = 'auto';
if (!useSelectSize) {
@@ -1219,7 +1238,7 @@
* Calculate accurate outerWidth(false) using getBoundingClientRect()
* Note that this presumes that the element is visible in the layout.
* @param {node} elem DOM node or jQuery equivalent to get width for.
- * @returns {float} Decimal floating point value for the width.
+ * @return {float} Decimal floating point value for the width.
*/
_getBCRWidth: function(elem) {
if (!elem || !!elem.jquery && !elem[0]) {
@@ -1232,8 +1251,8 @@
/**
* Calculate jQuery width correction factor to fix floating point round-off errors.
* Note that this presumes that the element is visible in the layout.
- * @param {node} DOM node or jQuery equivalent to get width for.
- * @returns {float} Correction value for the width--typically a decimal < 1.0
+ * @param {node} elem node or jQuery equivalent to get width for.
+ * @return {float} Correction value for the width--typically a decimal < 1.0
*/
_jqWidthFix: function(elem) {
if (!elem || !!elem.jquery && !elem[0]) {
@@ -1241,7 +1260,7 @@
}
return !!elem.jquery
? this._getBCRWidth(elem[0]) - elem.outerWidth(false)
- : this._getBCRWidth(elem) - $(elem).outerWidth(false);
+ : this._getBCRWidth(elem) - $(elem).outerWidth(false);
},
/**
@@ -1257,7 +1276,7 @@
var $next = $start.parent()[moveToLast ? 'prevAll' : 'nextAll']('li:not(:disabled, .ui-multiselect-optgroup):visible').first();
// we might have to jump to the next/previous option group
if (!$next.length) {
- $next = $start.parents(".ui-multiselect-optgroup")[moveToLast ? "prev" : "next" ]();
+ $next = $start.parents('.ui-multiselect-optgroup')[moveToLast ? 'prev' : 'next']();
}
// if at the first/last element
@@ -1265,13 +1284,12 @@
var $container = this.$checkboxes;
// move to the first/last
- $container.find('label').filter(':visible')[ moveToLast ? 'last' : 'first' ]().trigger('mouseover', {allowScroll: true});
+ $container.find('label').filter(':visible')[moveToLast ? 'last' : 'first']().trigger('mouseover', {allowScroll: true});
// set scroll position
$container.scrollTop(moveToLast ? $container.height() : 0);
- }
- else {
- $next.find('label').filter(':visible')[ moveToLast ? "last" : "first" ]().trigger('mouseover', {allowScroll: true});
+ } else {
+ $next.find('label').filter(':visible')[moveToLast ? 'last' : 'first']().trigger('mouseover', {allowScroll: true});
}
},
@@ -1280,19 +1298,19 @@
* The context of this function should be a checkbox; do not proxy it.
* @param {string} prop Property being toggled on the checkbox
* @param {string} flag Flag to set for the property
+ * @return {function} function for toggling checked state
*/
_toggleState: function(prop, flag) {
return function() {
var state = (flag === '!') ? !this[prop] : flag;
if ( !this.disabled ) {
- this[ prop ] = state;
+ this[prop] = state;
}
if (state) {
this.setAttribute('aria-' + prop, true);
- }
- else {
+ } else {
this.removeAttribute('aria-' + prop);
}
};
@@ -1320,7 +1338,7 @@
$inputs.each(self._toggleState('checked', flag));
// Give the first input focus
- $inputs.eq(0).focus();
+ $inputs.eq(0).trigger('focus');
// update button text
self.update();
@@ -1328,7 +1346,7 @@
// Create a plain object of the values that actually changed
var inputValues = {};
$inputs.each( function() {
- inputValues[ this.value ] = true;
+ inputValues[this.value] = true;
});
// toggle state on original option tags
@@ -1341,7 +1359,7 @@
// trigger the change event on the select
if ($inputs.length) {
- $element.trigger("change");
+ $element.trigger('change');
}
},
@@ -1352,18 +1370,18 @@
* @param {number | string} groupID index or label of option group to disable
*/
_toggleDisabled: function(flag, groupID) {
- var disabledClass = 'ui-state-disabled'; // used for styling only
+ var disabledClass = 'ui-state-disabled'; // used for styling only
if (this.$button) {
- this.$button.prop({ 'disabled':flag, 'aria-disabled':flag })[ flag ? 'addClass' : 'removeClass' ](disabledClass);
- }
-
+ this.$button.prop({'disabled': flag, 'aria-disabled': flag})[flag ? 'addClass' : 'removeClass'](disabledClass);
+ }
+
if (this.options.disableInputsOnToggle) {
// Apply the ui-multiselect-disabled class name to identify which
// input elements this widget disabled (not pre-disabled)
// so that they can be restored if the widget is re-enabled.
- var $inputs = (typeof groupID === 'undefined') ? this.$inputs : this._multiselectOptgroupFilter(groupID).find('input'),
- msDisabledClass = 'ui-multiselect-disabled';
+ var $inputs = (typeof groupID === 'undefined') ? this.$inputs : this._multiselectOptgroupFilter(groupID).find('input');
+ var msDisabledClass = 'ui-multiselect-disabled';
if (flag) {
var matchedInputs = $inputs.filter(':enabled').get();
for (var x = 0, len = matchedInputs.length; x < len; x++) {
@@ -1372,12 +1390,11 @@
matchedInputs[x].classList.add(msDisabledClass);
matchedInputs[x].parentNode.classList.add(disabledClass);
}
- }
- else {
+ } else {
var matchedInputs = $inputs.filter('.' + msDisabledClass + ':disabled').get();
for (var x = 0, len = matchedInputs.length; x < len; x++) {
- matchedInputs[x].removeAttribute("disabled");
- matchedInputs[x].removeAttribute("aria-disabled");
+ matchedInputs[x].removeAttribute('disabled');
+ matchedInputs[x].removeAttribute('aria-disabled');
matchedInputs[x].classList.remove(msDisabledClass);
matchedInputs[x].parentNode.classList.remove(disabledClass);
}
@@ -1387,7 +1404,7 @@
var $select = (typeof groupID === 'undefined') ? this.element : this._nativeOptgroupFilter(groupID).find('option');
$select.prop({
'disabled': flag,
- 'aria-disabled': flag
+ 'aria-disabled': flag,
});
},
@@ -1416,7 +1433,7 @@
this.$checkboxes.scrollTop(0);
// Show the menu, set its dimensions, and position it.
- $menu.css('display','block');
+ $menu.css('display', 'block');
this._setMenuWidth();
this._setMenuHeight();
this.position();
@@ -1424,30 +1441,25 @@
// Do any specified open animation effect after positioning the menu.
if (!!effect) {
// Menu must be hidden for some effects (e.g. fade) to work.
- $menu.css('display','none');
+ $menu.css('display', 'none');
if (typeof effect == 'string') {
$menu.show(effect, this.speed);
- }
- else if (typeof effect == 'object' && effect.constructor == Array) {
+ } else if (typeof effect == 'object' && effect.constructor == Array) {
$menu.show(effect[0], effect[1] || this.speed);
- }
- else if (typeof effect == 'object' && effect.constructor == Object) {
+ } else if (typeof effect == 'object' && effect.constructor == Object) {
$menu.show(effect);
}
}
// focus the first not disabled option or filter input if available
- var filter = $header.find(".ui-multiselect-filter");
+ var filter = $header.find('.ui-multiselect-filter');
if (filter.length) {
filter.first().find('input').trigger('focus');
- }
- else if ($inputs.length) {
+ } else if ($inputs.length) {
$inputs.eq(0).trigger('focus').parent('label').eq(0).trigger('mouseover').trigger('mouseenter');
- }
- else if ($labels.length) {
+ } else if ($labels.length) {
$labels.filter(':not(.ui-state-disabled)').eq(0).trigger('mouseover').trigger('mouseenter').find('input').trigger('focus');
- }
- else {
+ } else {
$header.find('a').first().trigger('focus');
}
@@ -1475,20 +1487,17 @@
if (!!effect) {
if (typeof effect == 'string') {
$menu.hide(effect, this.speed);
- }
- else if (typeof effect == 'object' && effect.constructor == Array) {
+ } else if (typeof effect == 'object' && effect.constructor == Array) {
$menu.hide(effect[0], effect[1] || this.speed);
- }
- else if (typeof effect == 'object' && effect.constructor == Object) {
+ } else if (typeof effect == 'object' && effect.constructor == Object) {
$menu.hide(effect);
}
- }
- else {
- $menu.css('display','none');
+ } else {
+ $menu.css('display', 'none');
}
$button.removeClass('ui-state-active').trigger('blur').trigger('mouseleave');
- this.element.trigger('blur'); // For jQuery Validate
+ this.element.trigger('blur'); // For jQuery Validate
this._isOpen = false;
this._trigger('close');
$button.trigger('focus');
@@ -1505,8 +1514,7 @@
if ($.ui && $.ui.position) {
this.$menu.position(this.options.position);
- }
- else {
+ } else {
var pos = {};
pos.top = $button.offset().top + this._savedButtonHeight;
@@ -1538,10 +1546,9 @@
return;
}
- if (typeof groupID === 'undefined') { // groupID could be 0
+ if (typeof groupID === 'undefined') { // groupID could be 0
this._toggleChecked(true);
- }
- else {
+ } else {
this._toggleChecked(true, this._multiselectOptgroupFilter(groupID).find('input'));
}
@@ -1555,10 +1562,9 @@
uncheckAll: function(groupID) {
this._trigger('beforeUncheckAll');
- if (typeof groupID === 'undefined') { // groupID could be 0
+ if (typeof groupID === 'undefined') { // groupID could be 0
this._toggleChecked(false);
- }
- else {
+ } else {
this._toggleChecked(false, this._multiselectOptgroupFilter(groupID).find('input'));
}
if ( !this.element[0].multiple && !this.$inputs.filter(':checked').length) {
@@ -1577,7 +1583,7 @@
flipAll: function(groupID) {
this._trigger('beforeFlipAll');
- var gotID = (typeof groupID !== 'undefined'); // groupID could be 0
+ var gotID = (typeof groupID !== 'undefined'); // groupID could be 0
var maxSelected = this.options.maxSelected;
var inputCount = this.$inputs.length;
var checkedCount = this.$inputs.filter(':checked').length;
@@ -1589,14 +1595,12 @@
|| maxSelected >= (gotID ? checkedCount - gCheckedCount + gInputCount - gCheckedCount : inputCount - checkedCount ) ) {
if (gotID) {
this._toggleChecked('!', $filteredOptgroupInputs);
- }
- else {
+ } else {
this._toggleChecked('!');
}
this._trigger('flipAll');
- }
- else {
- this.buttonMessage("Flip All Not Permitted.");
+ } else {
+ this.buttonMessage('Flip All Not Permitted.');
}
},
@@ -1607,7 +1611,7 @@
collapseAll: function(groupID) {
this._trigger('beforeCollapseAll');
- var $optgroups = (typeof groupID === 'undefined') // groupID could be 0
+ var $optgroups = (typeof groupID === 'undefined') // groupID could be 0
? this.$checkboxes.find('.ui-multiselect-optgroup')
: this._multiselectOptgroupFilter(groupID);
@@ -1624,7 +1628,7 @@
expandAll: function(groupID) {
this._trigger('beforeExpandAll');
- var $optgroups = (typeof groupID === 'undefined') // groupID could be 0
+ var $optgroups = (typeof groupID === 'undefined') // groupID could be 0
? this.$checkboxes.find('.ui-multiselect-optgroup')
: this._multiselectOptgroupFilter(groupID);
@@ -1649,23 +1653,23 @@
/**
* Provides a list of all checked options
- * @returns {array} list of inputs
+ * @return {array} list of inputs
*/
getChecked: function() {
- return this.$inputs.filter(":checked");
+ return this.$inputs.filter(':checked');
},
/**
* Provides a list of all options that are not checked
- * @returns {array} list of inputs
+ * @return {array} list of inputs
*/
getUnchecked: function() {
- return this.$inputs.filter(":not(:checked)");
+ return this.$inputs.filter(':not(:checked)');
},
/**
* Destroys the widget instance
- * @returns {object} reference to widget
+ * @return {object} reference to widget
*/
destroy: function() {
// remove classes + data
@@ -1685,28 +1689,28 @@
},
/**
- * @returns {boolean} indicates whether the menu is open
+ * @return {boolean} indicates whether the menu is open
*/
isOpen: function() {
return this._isOpen;
},
/**
- * @returns {object} jQuery object for menu
+ * @return {object} jQuery object for menu
*/
widget: function() {
return this.$menu;
},
/**
- * @returns {string} namespaceID for use with external event handlers.
+ * @return {string} namespaceID for use with external event handlers.
*/
getNamespaceID: function() {
return this._namespaceID;
},
/**
- * @returns {object} jQuery object for button
+ * @return {object} jQuery object for button
*/
getButton: function() {
return this.$button;
@@ -1714,21 +1718,21 @@
/**
* Essentially an alias for widget
- * @returns {object} jQuery object for menu
+ * @return {object} jQuery object for menu
*/
getMenu: function() {
return this.$menu;
},
/**
- * @returns {array} List of the option labels
+ * @return {array} List of the option labels
*/
getLabels: function() {
return this.$labels;
},
/**
- * @returns {array} List of option groups that are collapsed
+ * @return {array} List of option groups that are collapsed
*/
getCollapsed: function() {
return this.$checkboxes.find('.ui-multiselect-collapsed');
@@ -1737,14 +1741,14 @@
/**
* Sets the value of the underlying select then resyncs the menu.
* @param {(string|array)} newValue value(s) to set the underlying select to.
+ * @return {any} the underlying select when a value is provied, or eles the value of the select
*/
value: function(newValue) {
if (typeof newValue !== 'undefined') {
this.element.val(newValue);
this.resync();
return this.element;
- }
- else {
+ } else {
return this.element.val();
}
},
@@ -1770,11 +1774,10 @@
var $option = $( document.createElement('option') ).attr(attributes)[textFxn](text);
var optionNode = $option.get(0);
- if (typeof groupID === 'undefined') { // groupID could be 0
+ if (typeof groupID === 'undefined') { // groupID could be 0
self.element.append($option);
self.$checkboxes.append(self._makeOption(optionNode));
- }
- else {
+ } else {
self._nativeOptgroupFilter(groupID).append($option);
self._multiselectOptgroupFilter(groupID).append(self._makeOption(optionNode));
}
@@ -1783,11 +1786,12 @@
},
/**
- * Finds an optgroup in the native select by index or label
+ * Finds an optgroup in the native select by index or label using the tag name
* @param {(number|string)} groupID index or label of option group to find
+ * @return {object} matching option groups
*/
_nativeOptgroupFilter: function(groupID) {
- return this.element.children("OPTGROUP").filter( function(index) {
+ return this.element.children('OPTGROUP').filter( function(index) {
return (typeof groupID === 'number' ? index === groupID : this.getAttribute('label') === groupID);
});
},
@@ -1795,9 +1799,10 @@
/**
* Finds an optgroup in the multiselect widget by index or label
* @param {(number|string)} groupID index or label of option group to find
+ * @return {object} matching option groups
*/
_multiselectOptgroupFilter: function(groupID) {
- return this.$menu.find(".ui-multiselect-optgroup").filter( function(index) {
+ return this.$menu.find('.ui-multiselect-optgroup').filter( function(index) {
return (typeof groupID === 'number' ? index === groupID : this.getElementsByClassName('ui-multiselect-grouplabel')[0].textContent === groupID);
});
},
@@ -1810,8 +1815,8 @@
if (!value) {
return;
}
- this.element.find("option[value=" + value + "]").remove();
- this.$labels.find("input[value=" + value + "]").parents("li").remove();
+ this.element.find('option[value=' + value + ']').remove();
+ this.$labels.find('input[value=' + value + ']').parents('li').remove();
this._updateCache();
},
@@ -1823,15 +1828,14 @@
* @param {any} value to be assigned to that option
*/
_setOption: function(key, value) {
- var $header = this.$header,
- $menu = this.$menu;
+ var $header = this.$header;
+ var $menu = this.$menu;
- switch(key) {
+ switch (key) {
case 'header':
if (typeof value === 'boolean') {
$header.toggle( value );
- }
- else if (typeof value === 'string') {
+ } else if (typeof value === 'string') {
this.$headerLinkContainer.children('li:not(:last-child)').remove();
this.$headerLinkContainer.prepend('' + value + '');
}
@@ -1843,7 +1847,7 @@
case 'expandAllText':
if (key !== 'checkAllText' || !this.options.maxSelected) {
// eq(-1) finds the last span
- $header.find('a.' + this.linkInfo[key.replace('Text','')]['class'] + ' span').eq(-1).html(value);
+ $header.find('a.' + this.linkInfo[key.replace('Text', '')]['class'] + ' span').eq(-1).html(value);
}
break;
case 'checkAllIcon':
@@ -1853,7 +1857,7 @@
case 'expandAllIcon':
if (key !== 'checkAllIcon' || !this.options.maxSelected) {
// eq(0) finds the first span
- $header.find('a.' + this.linkInfo[key.replace('Icon','')]['class'] + ' span').eq(0).replaceWith(value);
+ $header.find('a.' + this.linkInfo[key.replace('Icon', '')]['class'] + ' span').eq(0).replaceWith(value);
}
break;
case 'openIcon':
@@ -1865,19 +1869,19 @@
case 'buttonWidth':
case 'menuWidth':
this.options[key] = value;
- this._setButtonWidth(true); // true forces recalc of cached value.
- this._setMenuWidth(true); // true forces recalc of cached value.
+ this._setButtonWidth(true); // true forces recalc of cached value.
+ this._setMenuWidth(true); // true forces recalc of cached value.
break;
case 'menuHeight':
this.options[key] = value;
- this._setMenuHeight(true); // true forces recalc of cached value.
+ this._setMenuHeight(true); // true forces recalc of cached value.
break;
case 'selectedText':
case 'selectedList':
case 'maxSelected':
case 'noneSelectedText':
case 'selectedListSeparator':
- this.options[key] = value; // these all need to update immediately for the update() call
+ this.options[key] = value; // these all need to update immediately for the update() call
this.update(true);
break;
case 'classes':
@@ -1905,8 +1909,9 @@
default:
this.options[key] = value;
}
- $.Widget.prototype._setOption.apply(this, arguments);
+ $.Widget.prototype._setOption.apply(this, arguments); // eslint-disable-line prefer-rest-params
},
+ _parse2px: parse2px,
});
@@ -1914,13 +1919,12 @@
// https://api.jqueryui.com/dialog/#method-_allowInteraction
// https://learn.jquery.com/jquery-ui/widget-factory/extending-widgets/
if ($.ui && 'dialog' in $.ui) {
- $.widget( "ui.dialog", $.ui.dialog, {
+ $.widget( 'ui.dialog', $.ui.dialog, {
_allowInteraction: function( event ) {
if ( this._super( event ) || $( event.target ).closest('.ui-multiselect-menu' ).length ) {
return true;
}
- }
+ },
});
}
-
})(jQuery);
diff --git a/static/scripts/ui/position.js b/static/scripts/ui/position.js
index 2f5da8742..88bafa3b1 100644
--- a/static/scripts/ui/position.js
+++ b/static/scripts/ui/position.js
@@ -1,5 +1,5 @@
/*!
- * jQuery UI Position 1.13.1
+ * jQuery UI Position 1.13.2
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
diff --git a/static/scripts/ui/scroll-parent.js b/static/scripts/ui/scroll-parent.js
index 242bbb82e..00183db72 100644
--- a/static/scripts/ui/scroll-parent.js
+++ b/static/scripts/ui/scroll-parent.js
@@ -1,5 +1,5 @@
/*!
- * jQuery UI Scroll Parent 1.13.1
+ * jQuery UI Scroll Parent 1.13.2
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
diff --git a/static/scripts/ui/tabbable.js b/static/scripts/ui/tabbable.js
index e936f6c3e..963061840 100644
--- a/static/scripts/ui/tabbable.js
+++ b/static/scripts/ui/tabbable.js
@@ -1,5 +1,5 @@
/*!
- * jQuery UI Tabbable 1.13.1
+ * jQuery UI Tabbable 1.13.2
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
diff --git a/static/scripts/ui/unique-id.js b/static/scripts/ui/unique-id.js
index b3acdff70..2788aa70f 100644
--- a/static/scripts/ui/unique-id.js
+++ b/static/scripts/ui/unique-id.js
@@ -1,5 +1,5 @@
/*!
- * jQuery UI Unique ID 1.13.1
+ * jQuery UI Unique ID 1.13.2
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
diff --git a/static/scripts/ui/version.js b/static/scripts/ui/version.js
index fc3e1d035..3233b0ad5 100644
--- a/static/scripts/ui/version.js
+++ b/static/scripts/ui/version.js
@@ -15,6 +15,6 @@
$.ui = $.ui || {};
-return $.ui.version = "1.13.1";
+return $.ui.version = "1.13.2";
} );
diff --git a/static/scripts/ui/widget.js b/static/scripts/ui/widget.js
index 59cf7130e..d7200ea9b 100644
--- a/static/scripts/ui/widget.js
+++ b/static/scripts/ui/widget.js
@@ -1,5 +1,5 @@
/*!
- * jQuery UI Widget 1.13.1
+ * jQuery UI Widget 1.13.2
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
diff --git a/static/scripts/ui/widgets/accordion.js b/static/scripts/ui/widgets/accordion.js
index b14bf2f7a..b803419e3 100644
--- a/static/scripts/ui/widgets/accordion.js
+++ b/static/scripts/ui/widgets/accordion.js
@@ -1,5 +1,5 @@
/*!
- * jQuery UI Accordion 1.13.1
+ * jQuery UI Accordion 1.13.2
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -40,7 +40,7 @@
"use strict";
return $.widget( "ui.accordion", {
- version: "1.13.1",
+ version: "1.13.2",
options: {
active: 0,
animate: {},
diff --git a/static/scripts/ui/widgets/autocomplete.js b/static/scripts/ui/widgets/autocomplete.js
index dcc2df3f2..fad94f455 100644
--- a/static/scripts/ui/widgets/autocomplete.js
+++ b/static/scripts/ui/widgets/autocomplete.js
@@ -1,5 +1,5 @@
/*!
- * jQuery UI Autocomplete 1.13.1
+ * jQuery UI Autocomplete 1.13.2
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -40,7 +40,7 @@
"use strict";
$.widget( "ui.autocomplete", {
- version: "1.13.1",
+ version: "1.13.2",
defaultElement: "",
options: {
appendTo: null,
diff --git a/static/scripts/ui/widgets/button.js b/static/scripts/ui/widgets/button.js
index 398c4ef55..f17258b3a 100644
--- a/static/scripts/ui/widgets/button.js
+++ b/static/scripts/ui/widgets/button.js
@@ -1,5 +1,5 @@
/*!
- * jQuery UI Button 1.13.1
+ * jQuery UI Button 1.13.2
* http://jqueryui.com
*
* Copyright jQuery Foundation and other contributors
@@ -42,7 +42,7 @@
"use strict";
$.widget( "ui.button", {
- version: "1.13.1",
+ version: "1.13.2",
defaultElement: "