+
+ Besides the refactoring of upgrading the multiselect to Bootstrap v4 also the filter controls were redesigned.
+ To keep the old design the following template can be used for filter:
+
+
+ In Chrome checked checkboxes are highlighted in blue and also in Bootstrap v4 active dropdown items have a blue color. This led to the situation that checked checkboxes were almost not visible anymore.
+ Therefore the active color for dropdown items was changed a light grey.
+ If you would like to use the Bootstrap default color you can use the selectedClass option with the value multiselect-active-item-fallback:
+
+
'
+ },
filterBehavior: 'value',
onFiltering: function() {
done();
diff --git a/tests/spec/bootstrap-multiselect.min.js b/tests/spec/bootstrap-multiselect.min.js
new file mode 100644
index 00000000..e38296e7
--- /dev/null
+++ b/tests/spec/bootstrap-multiselect.min.js
@@ -0,0 +1 @@
+describe('Bootstrap Multiselect "Core".',(function(){var onInitialized=!1;beforeEach((function(){for(var $select=$(''),i=1;i<100;i++){var $option=$('");i<10&&$option.prop("selected",!0),$select.append($option)}$("body").append($select),$select.multiselect({buttonContainer:'',onInitialized:function($select){onInitialized=!0},checkboxName:function($option){return"value-"+$($option).attr("value")}})})),it("Should add the container after the select.",(function(){expect($("#multiselect-container").length).toBe(1)})),it("Should add the multiselect button.",(function(){expect($("#multiselect-container .multiselect").length).toBe(1)})),it("Should add the dropdown menu.",(function(){expect($("#multiselect-container .dropdown-menu").length).toBe(1)})),it("Should add an li element with checkbox and label for each option.",(function(){expect($("#multiselect-container .multiselect-option").length).toBe(99),expect($("#multiselect-container .form-check-label").length).toBe(99),expect($('#multiselect-container input[type="checkbox"]').length).toBe(99)})),it("Should preserve selected options.",(function(){expect($('#multiselect-container input[type="checkbox"]:checked').length).toBe(9),expect($("#multiselect option:selected").length).toBe(9)})),it("Should be able to select options by value.",(function(){$("#multiselect").multiselect("select","10"),expect($('#multiselect option[value="10"]').prop("selected")).toBe(!0),expect($('#multiselect-container input[value="10"]').prop("checked")).toBe(!0)})),it('Select method should handle "null" and "undefined" correctly.',(function(){expect($("#multiselect option:selected").length).toBe(9),$("#multiselect").multiselect("select",null),expect($("#multiselect option:selected").length).toBe(9),$("#multiselect").multiselect("select",void 0),expect($("#multiselect option:selected").length).toBe(9)})),it("Should be able to deselect options by value.",(function(){$("#multiselect").multiselect("select","10"),$("#multiselect").multiselect("deselect","10"),expect($('#multiselect option[value="10"]').prop("selected")).toBe(!1),expect($('#multiselect-container input[value="10"]').prop("checked")).toBe(!1)})),it('Deselect method should handle "null" and "undefined" correctly.',(function(){expect($("#multiselect option:selected").length).toBe(9),$("#multiselect").multiselect("deselect",null),expect($("#multiselect option:selected").length).toBe(9),$("#multiselect").multiselect("deselect",void 0),expect($("#multiselect option:selected").length).toBe(9)})),it("Should be able to select options using an array of values.",(function(){$("#multiselect").multiselect("select",["10","11"]),expect($('#multiselect option[value="10"]').prop("selected")).toBe(!0),expect($('#multiselect-container input[value="10"]').prop("checked")).toBe(!0),expect($('#multiselect option[value="11"]').prop("selected")).toBe(!0),expect($('#multiselect-container input[value="11"]').prop("checked")).toBe(!0)})),it("Should be able to deselect options using an array of values.",(function(){$("#multiselect").multiselect("select",["10","11"]),$("#multiselect").multiselect("deselect",["10","11"]),expect($('#multiselect option[value="10"]').prop("selected")).toBe(!1),expect($('#multiselect-container input[value="10"]').prop("checked")).toBe(!1),expect($('#multiselect option[value="11"]').prop("selected")).toBe(!1),expect($('#multiselect-container input[value="11"]').prop("checked")).toBe(!1)})),it("Should be able to disable the multiselect",(function(){$("#multiselect").multiselect("disable"),expect($("#multiselect").prop("disabled")).toBe(!0)})),it("Should be able to enable the multiselect",(function(){$("#multiselect").multiselect("disable"),$("#multiselect").multiselect("enable"),expect($("#multiselect").prop("disabled")).toBe(!1)})),it("Should be able to select all options.",(function(){$("#multiselect").multiselect("selectAll");for(var i=1;i<100;i++)expect($('#multiselect option[value="'+i.toString()+'"]').prop("selected")).toBe(!0),expect($('#multiselect-container input[value="'+i.toString()+'"]').prop("checked")).toBe(!0)})),it("Should be able to deselect all options.",(function(){$("#multiselect").multiselect("selectAll");for(var i=1;i<100;i++)expect($('#multiselect option[value="'+i.toString()+'"]').prop("selected")).toBe(!0),expect($('#multiselect-container input[value="'+i.toString()+'"]').prop("checked")).toBe(!0);$("#multiselect").multiselect("deselectAll");for(var i=1;i<100;i++)expect($('#multiselect option[value="'+i.toString()+'"]').prop("selected")).toBe(!1),expect($('#multiselect-container input[value="'+i.toString()+'"]').prop("checked")).toBe(!1)})),it("Should update the checkboxes according to the selected options after using refresh.",(function(){for(var i=10;i<20;i++)$('#multiselect option[value="'+i+'"]').prop("selected",!0);expect($("#multiselect option:selected").length).toBe(19),expect($('#multiselect-container input[type="checkbox"]:checked').length).toBe(9),$("#multiselect").multiselect("refresh"),expect($('#multiselect-container input[type="checkbox"]:checked').length).toBe(19);for(var i=10;i<20;i++)expect($('#multiselect option[value="'+i+'"]').prop("selected")).toBe(!0)})),it("Should remove container, button and ul after destroy.",(function(){$("#multiselect").multiselect("destroy"),expect($("#multiselect-container.multiselect-container").length).toBe(0),expect($("#multiselect-container .multiselect").length).toBe(0),expect($("#multiselect-container .dropdown-menu").length).toBe(0)})),it("Should select an option when checkbox is changed (change event).",(function(){$('#multiselect-container .multiselect-option input[value="10"]').prop("checked",!0),$('#multiselect-container .multiselect-option input[value="10"]').trigger("change"),expect($('#multiselect-container input[value="10"]').prop("checked")).toBe(!0),expect($('#multiselect option[value="10"]').prop("selected")).toBe(!0)})),it("Should deselect an option when checkbox is changed (change event).",(function(){$('#multiselect-container .multiselect-option input[value="10"]').prop("checked",!0),$('#multiselect-container .multiselect-option input[value="10"]').trigger("change"),$('#multiselect-container .multiselect-option input[value="10"]').prop("checked",!1),$('#multiselect-container .multiselect-option input[value="10"]').trigger("change"),expect($('#multiselect-container input[value="10"]').prop("checked")).toBe(!1),expect($('#multiselect option[value="10"]').prop("selected")).toBe(!1)})),it("Should select an option when checkbox is clicked.",(function(){$('#multiselect-container .multiselect-option input[value="10"]').click(),expect($('#multiselect-container input[value="10"]').prop("checked")).toBe(!0),expect($('#multiselect option[value="10"]').prop("selected")).toBe(!0)})),it("Should deselect an option when checkbox is clicked.",(function(){$('#multiselect-container .multiselect-option input[value="10"]').click(),$('#multiselect-container .multiselect-option input[value="10"]').click(),expect($('#multiselect-container input[value="10"]').prop("checked")).toBe(!1),expect($('#multiselect option[value="10"]').prop("selected")).toBe(!1)})),it("Should trigger onInitialized.",(function(){expect(onInitialized).toBe(!0)})),it("Should correctly apply checkboxName.",(function(){$("#multiselect-container input").each((function(){expect($(this).attr("name")).toBe("value-"+$(this).attr("value"))}))})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),describe('Bootstrap Multiselect "Multiple Multiselects".',(function(){var multiselects=["one","two","three"],onSelectAllTriggered=0,onDeselectAllTriggered=0,onChangeFired=0;beforeEach((function(){onSelectAllTriggered=0,onDeselectAllTriggered=0,onChangeFired=0;for(var m=0;m<3;m++){for(var $select=$(''),i=1;i<10;i++)$select.append('");$("body").append($select),$select.multiselect({buttonContainer:'',includeSelectAllOption:!0,selectAllValue:"multiselect-all",onSelectAll:function(){onSelectAllTriggered++},onDeselectAll:function(){onDeselectAllTriggered++},onChange:function(option,checked){onChangeFired++}})}})),it("Should initialize all multiselects.",(function(){expect($(".multiselect").length).toBe(3);for(var m=0;m<3;m++)expect($("#multiselect-"+multiselects[m]).length).toBe(1),expect($("#multiselect-container-"+multiselects[m]).length).toBe(1),expect($("#multiselect-container-"+multiselects[m]+" .multiselect").length).toBe(1),expect($("#multiselect-container-"+multiselects[m]+" .dropdown-menu").length).toBe(1),expect($("#multiselect-container-"+multiselects[m]+" .multiselect-option").length).toBe(9),expect($("#multiselect-container-"+multiselects[m]+" .multiselect-all").length).toBe(1),expect($("#multiselect-container-"+multiselects[m]+" .form-check-label").length).toBe(10),expect($("#multiselect-container-"+multiselects[m]+' input[type="checkbox"]').length).toBe(10)})),it("Should not select/deselect options in other multiselects.",(function(){for(var m=0;m<3;m++){for(var i=1;i<10;i++){$("#multiselect-container-"+multiselects[m]+' input[value="'+i+'"]').click(),expect($("#multiselect-container-"+multiselects[m]+' input[value!="multiselect-all"]:checked').length).toBe(i);for(var n=0;n<3;n++)m!=n&&expect($("#multiselect-container-"+multiselects[n]+' input[value!="multiselect-all"]:checked').length).toBe(0)}for(var i=9;i>=1;i--){$("#multiselect-container-"+multiselects[m]+' input[value="'+i+'"]').click(),expect($("#multiselect-container-"+multiselects[m]+' input[value!="multiselect-all"]:checked').length).toBe(i-1);for(var n=0;n<3;n++)m!=n&&expect($("#multiselect-container-"+multiselects[n]+' input[value!="multiselect-all"]:checked').length).toBe(0)}}})),it("Should not trigger onChange in other multiselects.",(function(){for(var m=0;m<3;m++)for(var i=1;i<10;i++)$("#multiselect-container-"+multiselects[m]+' input[value="'+i+'"]').click(),expect(onChangeFired).toBe(1),onChangeFired=0})),it("Should not select all/deselect all options in other multiselects.",(function(){for(var m=0;m<3;m++){$("#multiselect-container-"+multiselects[m]+' input[value="multiselect-all"]').click(),expect($("#multiselect-container-"+multiselects[m]+' input[value!="multiselect-all"]:checked').length).toBe(9);for(var n=0;n<3;n++)n!=m&&(expect($("#multiselect-container-"+multiselects[n]+' input[value!="multiselect-all"]:checked').length).toBe(0),expect($("#multiselect-container-"+multiselects[n]+' input[value="multiselect-all"]:checked').length).toBe(0));$("#multiselect-container-"+multiselects[m]+' input[value="multiselect-all"]').click(),expect($("#multiselect-container-"+multiselects[m]+' input[value!="multiselect-all"]:checked').length).toBe(0)}})),it("Should not trigger onSelectAll in other multiselects.",(function(){for(var m=0;m<3;m++)$("#multiselect-container-"+multiselects[m]+' input[value="multiselect-all"]').click(),expect(onSelectAllTriggered).toBe(1),expect(onChangeFired).toBe(0),$("#multiselect-container-"+multiselects[m]+' input[value="multiselect-all"]').click(),onSelectAllTriggered=0})),it("Should not trigger onDeselectAll in other multiselects",(function(){for(var m=0;m<3;m++)$("#multiselect-container-"+multiselects[m]+' input[value="multiselect-all"]').click(),$("#multiselect-container-"+multiselects[m]+' input[value="multiselect-all"]').click(),expect(onSelectAllTriggered).toBe(1),expect(onDeselectAllTriggered).toBe(1),expect(onChangeFired).toBe(0),onSelectAllTriggered=0,onDeselectAllTriggered=0})),afterEach((function(){for(var m=0;m<3;m++)$("#multiselect-"+multiselects[m]).multiselect("destroy"),$("#multiselect-"+multiselects[m]).remove()}))})),describe('Bootstrap Multiselect "Single Selection".',(function(){beforeEach((function(){for(var $select=$(''),i=1;i<100;i++)$select.append('");$("body").append($select),$select.multiselect({buttonContainer:''})})),it("Should create radio buttons instead of checkboxes.",(function(){expect($('#multiselect-container input[type="radio"]').length).toBe(99),expect($('#multiselect-container input[type="checkbox"]').length).toBe(0),expect($("#multiselect option:selected").length).toBe(1)})),it("Only one option at a time can be selected.",(function(){expect($("#multiselect option:selected").length).toBe(1);var i=0;$("#multiselect-container input").each((function(){0===i?(expect($(this).prop("checked")).toBe(!0),i++):(expect($(this).prop("checked")).toBe(!1),$(this).click(),expect($("#multiselect option:selected").length).toBe(1),expect($(this).prop("checked")).toBe(!0),i++)}))})),it("Deselect all should work.",(function(){expect($("#multiselect option:selected").length).toBe(1)})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),describe('Bootstrap Multiselect "Individual Configuration Options".',(function(){describe("disableIfEmpty.",(function(){var $select=null;beforeEach((function(){$select=$(''),$("body").append($select),$select.multiselect({buttonContainer:'',disableIfEmpty:!0})})),it("Should disable button if emppty.",(function(){expect($("#multiselect-container button").prop("disabled")).toBe(!0)})),it("Should still be disabled after invoking rebuild.",(function(){$select.multiselect("rebuild"),expect($("#multiselect-container button").prop("disabled")).toBe(!0)})),it("Should not be disabled after invoking rebuild after adding options.",(function(){$select.append(''),$select.multiselect("rebuild"),expect($("#multiselect-container button").prop("disabled")).toBe(!1)})),it("Should not be disabled after rebuilding with more options after invoking destroy.",(function(){$select.append(''),$select.multiselect("destroy"),$select.multiselect({buttonContainer:'',disableIfEmpty:!0}),expect($("#multiselect-container button").prop("disabled")).toBe(!1)})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))}))})),describe('Bootstrap Multiselect "individual Methods".',(function(){describe('Method "clearSelection" should clear selection in multiple mode.',(function(){beforeEach((function(){var $select=$('');$select.append(''),$select.append(''),$select.append(''),$("body").append($select),$select.multiselect({buttonContainer:''})})),it('Method "clearSelection" should clear selection.',(function(){$('#multiselect-container input[value="value-1"]').click(),$('#multiselect-container input[value="value-2"]').click(),expect($("#multiselect-container input:checked").length).toBe(2),expect($("#multiselect option:selected").length).toBe(2),$("#multiselect").multiselect("clearSelection"),expect($("#multiselect-container input:checked").length).toBe(0),expect($("#multiselect option:selected").length).toBe(0)})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),describe('Method "clearSelection" should correctly update select all.',(function(){beforeEach((function(){var $select=$('');$select.append(''),$select.append(''),$select.append(''),$("body").append($select),$select.multiselect({buttonContainer:'',includeSelectAllOption:!0,selectAllValue:"multiselect-all"})})),it('Method "clearSelection" should clear selection.',(function(){$('#multiselect-container input[value="multiselect-all"]').click(),expect($("#multiselect-container input:checked").length).toBe(4),expect($("#multiselect option:selected").length).toBe(3),$("#multiselect").multiselect("clearSelection"),expect($("#multiselect-container input:checked").length).toBe(0),expect($("#multiselect option:selected").length).toBe(0)})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),describe('Method "clearSelection" should clear selection in single mode.',(function(){beforeEach((function(){var $select=$('');$select.append(''),$select.append(''),$select.append(''),$("body").append($select),$select.multiselect({buttonContainer:''})})),it('Method "clearSelection" is NOT able to clear selection.',(function(){$('#multiselect-container input[value="value-2"]').click(),expect($("#multiselect-container input:checked").length).toBe(1),expect($("#multiselect option:selected").length).toBe(1),$("#multiselect").multiselect("clearSelection"),expect($("#multiselect-container input:checked").length).toBe(1),expect($("#multiselect option:selected").length).toBe(1)})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))}))})),describe('Bootstrap Multiselect "Clickable Optgroups"',(function(){var fired=0;beforeEach((function(){for(var $select=$(''),i=1;i<11;i++){for(var $optgroup=$(''),j=1;j<11;j++)1==i?$optgroup.append('"):$optgroup.append('");$select.append($optgroup)}$("body").append($select),fired=0,$select.multiselect({buttonContainer:'',enableClickableOptGroups:!0,numberDisplayed:10,onChange:function(option,checked){fired++}})})),it("Should correctly create inputs for optgroups.",(function(){expect($("#multiselect-container .multiselect-group").length).toBe(10),expect($("#multiselect-container .multiselect-group input").length).toBe(10),$("#multiselect-container .multiselect-group").each((function(){expect($("input",$(this).nextUntil(".multiselect-group")).length).toBe(10)}))})),it("Groups should be clickable and correctly initialized.",(function(){expect($("#multiselect option:selected").length).toBe(10),expect(fired).toBe(0);var i=0;$("#multiselect-container .multiselect-group").each((function(){0==i?($(".form-check-label",$(this)).click(),expect($("option:selected",$("#multiselect optgroup")[i]).length).toBe(0),expect($("#multiselect option:selected").length).toBe(0),$(".form-check-label",$(this)).click(),expect($("option:selected",$("#multiselect optgroup")[i]).length).toBe(10),expect($("#multiselect option:selected").length).toBe(10)):($(".form-check-label",$(this)).click(),expect($("option:selected",$("#multiselect optgroup")[i]).length).toBe(10),expect($("#multiselect option:selected").length).toBe(20),$(".form-check-label",$(this)).click()),i++}))})),it("Clickable groups should fire onChange only once.",(function(){expect($("#multiselect option:selected").length).toBe(10),expect(fired).toBe(0);var i=0;$("#multiselect-container .multiselect-group").each((function(){$(".form-check-label",$(this)).click(),expect(fired).toBe(1),fired=0,$(".form-check-label",$(this)).click(),expect(fired).toBe(1),fired=0,i++}))})),it("Clickable groups should fire change only once",(function(){expect($("#multiselect option:selected").length).toBe(10);var changed=0;$("#multiselect").on("change",(function(){changed++})),$("#multiselect-container .multiselect-group").each((function(){$(".form-check-label",$(this)).click(),expect(changed).toBe(1),changed=0,$(".form-check-label",$(this)).click(),expect(changed).toBe(1),changed=0})),fired=0})),it("Should update button text.",(function(){expect($("#multiselect option:selected").length).toBe(10),expect(fired).toBe(0);var i=0;$("#multiselect-container .multiselect-group").each((function(){if(0==i){var text="";$("option:selected",$("#multiselect optgroup")[i]).each((function(){text+=$(this).text()+", "})),text=text.substr(0,text.length-2),expect($("#multiselect-container .multiselect-selected-text").text()).toBe(text),$(".form-check-label",$(this)).click()}else{$(".form-check-label",$(this)).click();var text="";$("option:selected",$("#multiselect optgroup")[i]).each((function(){text+=$(this).text()+", "})),text=text.substr(0,text.length-2),expect($("#multiselect-container .multiselect-selected-text").text()).toBe(text),$(".form-check-label",$(this)).click()}i++}))})),it("Should be updated by clicking corresponding options.",(function(){for(var i=1;i<10;i++){expect($("option:selected",$("#multiselect optgroup")[0]).length).toBe(10),expect($("#multiselect option:selected").length).toBe(10);var $group=$($("#multiselect-container .multiselect-group")[i]),$optGroup=$($("#multiselect optgroup")[i]);$group.nextUntil(".multiselect-group").each((function(){var $input=$("input",this);$input.click(),expect($input.prop("checked")).toBe(!0)})),expect($("option:selected",$optGroup).length).toBe(10),expect($("#multiselect option:selected").length).toBe(20),expect($("input",$group).prop("checked")).toBe(!0),$group.nextUntil(".multiselect-group").each((function(){var $input=$("input",this);$input.click(),expect($input.prop("checked")).toBe(!1)})),expect($("#multiselect option:selected").length).toBe(10),expect($("input",$group).prop("checked")).toBe(!1)}})),it("Should be updated through select/deselect.",(function(){for(var values=[],i=1;i<11;i++)values.push("1-"+i);var $group=$("#multiselect-container .multiselect-group")[0];$("#multiselect").multiselect("deselect",values),expect($("input",$group).prop("checked")).toBe(!1),$("#multiselect").multiselect("select",values),expect($("input",$group).prop("checked")).toBe(!0)})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),describe('Bootstrap Multiselect "Collapsible Optgroups"',(function(){var fired=0;beforeEach((function(){for(var $select=$(''),i=1;i<11;i++){for(var $optgroup=$(''),j=1;j<11;j++)$optgroup.append('");$select.append($optgroup)}$("body").append($select),$select.multiselect({buttonContainer:'',enableCollapsibleOptGroups:!0,onChange:function(option,checked){fired++}})})),it("Should correctly create headers for optgroups.",(function(){expect($("#multiselect-container .multiselect-group").length).toBe(10),$("#multiselect-container .multiselect-group").each((function(){expect($("input",$(this).nextUntil(".multiselect-group")).length).toBe(10)}))})),it("Groups should not be clickable.",(function(){expect($("#multiselect option:selected").length).toBe(0);var i=0;$("#multiselect-container .multiselect-group").each((function(){$(".form-check-label",$(this)).click(),expect($("option:selected",$("#multiselect optgroup")[i]).length).toBe(0),expect($("#multiselect option:selected").length).toBe(0),$(".form-check-label",$(this)).click(),i++}))})),it("Should be collapsible.",(function(){var $group=$("#multiselect-container .multiselect-group:first"),$options,$options;$(".caret-container",$group).click(),($options=$group.nextUntil(".multiselect-group")).each((function(){expect($(this).hasClass("multiselect-collapsible-hidden")).toBe(!0),expect($(this).hasClass("multiselect-collapsible-hidden")).toBe($(this).is(":hidden"))})),$(".caret-container",$group).click(),($options=$group.nextUntil("li.multiselect-group")).each((function(){expect($(this).hasClass("multiselect-collapsible-hidden")).toBe(!1),expect($(this).hasClass("multiselect-collapsible-hidden")).toBe($(this).is(":hidden"))}))})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),describe('Bootstrap Multiselect "Clickable+Collapsible Optgroups"',(function(){var fired=0;beforeEach((function(){for(var $select=$(''),i=1;i<11;i++){for(var $optgroup=$(''),j=1;j<11;j++)$optgroup.append('");$select.append($optgroup)}$("body").append($select),$select.multiselect({buttonContainer:'',enableClickableOptGroups:!0,enableCollapsibleOptGroups:!0,onChange:function(option,checked){fired++}})})),it("Should correctly create inputs for optgroups.",(function(){expect($("#multiselect-container .multiselect-group").length).toBe(10),expect($("#multiselect-container .multiselect-group input").length).toBe(10),$("#multiselect-container .multiselect-group").each((function(){expect($("input",$(this).nextUntil(".multiselect-group")).length).toBe(10)}))})),it("Groups should be clickable.",(function(){expect($("#multiselect option:selected").length).toBe(0);var i=0;$("#multiselect-container .multiselect-group").each((function(){$(".form-check-label",$(this)).click(),expect($("option:selected",$("#multiselect optgroup")[i]).length).toBe(10),expect($("#multiselect option:selected").length).toBe(10),$(".form-check-label",$(this)).click(),i++}))})),it("Clickable groups should fire onChange only once.",(function(){expect($("#multiselect option:selected").length).toBe(0),fired=0,expect(fired).toBe(0);var i=0;$("#multiselect-container .multiselect-group").each((function(){$(".form-check-label",$(this)).click(),expect(fired).toBe(1),fired=0,$(".form-check-label",$(this)).click(),expect(fired).toBe(1),fired=0,i++}))})),it("Should be collapsible.",(function(){var $group=$("#multiselect-container .multiselect-group:first"),$lis,$lis;$(".caret-container",$group).click(),($lis=$group.nextUntil(".multiselect-group")).each((function(){expect($(this).hasClass("multiselect-collapsible-hidden")).toBe(!0),expect($(this).hasClass("multiselect-collapsible-hidden")).toBe($(this).is(":hidden"))})),$(".caret-container",$group).click(),($lis=$group.nextUntil(".multiselect-group")).each((function(){expect($(this).hasClass("multiselect-collapsible-hidden")).toBe(!1),expect($(this).hasClass("multiselect-collapsible-hidden")).toBe($(this).is(":hidden"))}))})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),describe('Bootstrap Multiselect "Clickable+Collapsible+SelectAll Optgroups"',(function(){var fired=0;beforeEach((function(){for(var $select=$(''),i=1;i<11;i++){for(var $optgroup=$(''),j=1;j<11;j++)$optgroup.append('");$select.append($optgroup)}$("body").append($select),$select.multiselect({buttonContainer:'',enableClickableOptGroups:!0,enableCollapsibleOptGroups:!0,includeSelectAllOption:!0,selectAllValue:"multiselect-all"})})),it("Should NOT handle option groups differently, i.e. not set class to active.",(function(){var $groups,$lis;$('#multiselect-container input[value="multiselect-all"]').click(),$("#multiselect-container .multiselect-group").each((function(){expect($(this).hasClass("active")).toBe(!0)})),$("#multiselect-container .multiselect-option:not(.multiselect-group)").each((function(){expect($(this).hasClass("active")).toBe(!0)}))})),it("Should select all options (including option groups).",(function(){var $options;$('#multiselect-container input[value="multiselect-all"]').click(),$("#multiselect-container .multiselect-option").each((function(){expect($("input",this).prop("checked")).toBe(!0)}))})),it("Should automatically update select all.",(function(){var i=0;$("#multiselect-container .multiselect-group").each((function(){$(".form-check-label",$(this)).click(),expect($("option:selected",$("#multiselect optgroup")[i]).length).toBe(10),expect($("#multiselect option:selected").length).toBe(10*(i+1)),i++})),expect($('#multiselect-container .multiselect-all input[value="multiselect-all"]').prop("checked")).toBe(!0)})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),describe('Bootstrap Multiselect "Dataprovider"',(function(){beforeEach((function(){var $select=$('');$("body").append($select),$select.multiselect({buttonContainer:''})}));var options=[{label:"Option 1",value:"1",selected:!0,title:"Option 1 Title"},{label:"Option 2",value:"2",title:"Option 2 Title"},{label:"Option 3",value:"3",selected:!0,title:"Option 3 Title"},{label:"Option 4",value:"4",title:"Option 4 Title"},{label:"Option 5",value:"5",title:"Option 5 Title"},{label:"Option 6",value:"6",title:"Option 6 Title"}],options_attributes=[{label:"Option 1",value:"1",attributes:{"some-attribute":"test"}}];it("Should be able to add options.",(function(){$("#multiselect").multiselect("dataprovider",options),expect($("#multiselect option").length).toBe(6),expect($("#multiselect-container input").length).toBe(6),expect($('#multiselect option[value="1"]').length).toBe(1),expect($('#multiselect option[value="1"]').prop("selected")).toBe(!0),expect($('#multiselect-container input[value="1"]').prop("checked")).toBe(!0),expect($('#multiselect option[value="2"]').length).toBe(1),expect($('#multiselect option[value="2"]').prop("selected")).toBe(!1),expect($('#multiselect-container input[value="2"]').prop("checked")).toBe(!1),expect($('#multiselect option[value="3"]').length).toBe(1),expect($('#multiselect option[value="3"]').prop("selected")).toBe(!0),expect($('#multiselect-container input[value="3"]').prop("checked")).toBe(!0),expect($('#multiselect option[value="4"]').length).toBe(1),expect($('#multiselect option[value="4"]').prop("selected")).toBe(!1),expect($('#multiselect-container input[value="4"]').prop("checked")).toBe(!1),expect($('#multiselect option[value="5"]').length).toBe(1),expect($('#multiselect option[value="5"]').prop("selected")).toBe(!1),expect($('#multiselect-container input[value="5"]').prop("checked")).toBe(!1),expect($('#multiselect option[value="6"]').length).toBe(1),expect($('#multiselect option[value="6"]').prop("selected")).toBe(!1),expect($('#multiselect-container input[value="6"]').prop("checked")).toBe(!1)})),it("Should be able to define title.",(function(){$("#multiselect").multiselect("dataprovider",options),expect($('#multiselect option[value="1"]').attr("title")).toBe("Option 1 Title"),expect($('#multiselect option[value="2"]').attr("title")).toBe("Option 2 Title"),expect($('#multiselect option[value="3"]').attr("title")).toBe("Option 3 Title"),expect($('#multiselect option[value="4"]').attr("title")).toBe("Option 4 Title"),expect($('#multiselect option[value="5"]').attr("title")).toBe("Option 5 Title"),expect($('#multiselect option[value="6"]').attr("title")).toBe("Option 6 Title"),expect($('#multiselect-container input[value="1"]').closest(".multiselect-option").attr("title")).toBe("Option 1 Title"),expect($('#multiselect-container input[value="2"]').closest(".multiselect-option").attr("title")).toBe("Option 2 Title"),expect($('#multiselect-container input[value="3"]').closest(".multiselect-option").attr("title")).toBe("Option 3 Title"),expect($('#multiselect-container input[value="4"]').closest(".multiselect-option").attr("title")).toBe("Option 4 Title"),expect($('#multiselect-container input[value="5"]').closest(".multiselect-option").attr("title")).toBe("Option 5 Title"),expect($('#multiselect-container input[value="6"]').closest(".multiselect-option").attr("title")).toBe("Option 6 Title")})),it("Should be able to define data attributes.",(function(){$("#multiselect").multiselect("dataprovider",options_attributes),expect($('#multiselect option[value="1"]').attr("value")).toBe("1"),expect($('#multiselect option[value="1"]').attr("data-some-attribute")).toBe("test")}));var optgroups=[{label:"Group 1",children:[{label:"Option 1.1",value:"1-1"},{label:"Option 1.2",value:"1-2"},{label:"Option 1.3",value:"1-3"}]},{label:"Group 2",children:[{label:"Option 2.1",value:"1"},{label:"Option 2.2",value:"2"},{label:"Option 2.3",value:"3"}]}];it("Should be able to handle optgroups.",(function(){$("#multiselect").multiselect("dataprovider",optgroups),expect($("#multiselect optgroup").length).toBe(2),expect($("#multiselect option").length).toBe(6),expect($("#multiselect-container input").length).toBe(6),expect($('#multiselect optgroup[label="Group 1"] option').length).toBe(3),expect($('#multiselect optgroup[label="Group 2"] option').length).toBe(3)})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),describe('Bootstrap Multiselect "Select All".',(function(){var onSelectAllTriggered=!1,onDeselectAllTriggered=!1,fired=0;beforeEach((function(){onSelectAllTriggered=!1,onDeselectAllTriggered=!1,fired=0;for(var $select=$(''),i=1;i<100;i++)$select.append('');$("body").append($select),$select.multiselect({buttonContainer:'',includeSelectAllOption:!0,selectAllValue:"multiselect-all",onSelectAll:function(){onSelectAllTriggered=!0},onDeselectAll:function(){onDeselectAllTriggered=!0},onChange:function(option,checked){fired++}})})),it("Should not add an additional option to the select.",(function(){expect($('#multiselect option[value="multiselect-all"]').length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').length).toBe(1),expect($("#multiselect option").length).toBe(99),expect($("#multiselect-container input").length).toBe(100)})),it('Should update the select all when all options are selected by the "select" method.',(function(){expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1);for(var i=1;i<100;i++)$("#multiselect").multiselect("select",i.toString()),expect($('#multiselect option[value="'+i.toString()+'"]').prop("selected")).toBe(!0);expect($("#multiselect option:selected").length).toBe(99),expect($("#multiselect-container input").length).toBe(100),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!0)})),it('Should update the select all when all options are deselected by the "deselect" method (first all options are selected as before).',(function(){expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1);for(var i=1;i<100;i++)$("#multiselect").multiselect("select",i.toString());expect($("#multiselect option:selected").length).toBe(99),expect($("#multiselect-container input:checked").length).toBe(100),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!0);for(var i=1;i<100;i++)$("#multiselect").multiselect("deselect",i.toString());expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1)})),it("Should update the select all option when all options are selected by the change event.",(function(){expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1),$('#multiselect-container input[value!="multiselect-all"]').prop("checked",!0),$('#multiselect-container input[value!="multiselect-all"]').trigger("change"),expect($('#multiselect option:selected[value!="multiselect-all"]').length).toBe(99),expect($("#multiselect option:selected").length).toBe(99),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!0)})),it("Should update the select all option when all options are deselected by the change event.",(function(){expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1),$('#multiselect-container input[value!="multiselect-all"]').prop("checked",!0),$('#multiselect-container input[value!="multiselect-all"]').trigger("change"),expect($('#multiselect option:selected[value!="multiselect-all"]').length).toBe(99),expect($("#multiselect option:selected").length).toBe(99),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!0),$('#multiselect-container input[value!="multiselect-all"]').prop("checked",!1),$('#multiselect-container input[value!="multiselect-all"]').trigger("change"),expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1)})),it("Should update the select all option when all options are selected by the click event.",(function(){expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1),$('#multiselect-container input[value!="multiselect-all"]').click(),expect($("#multiselect option:selected").length).toBe(99),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!0)})),it("Should update the select all option when all options are deselected by the click event.",(function(){expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1),$('#multiselect-container input[value!="multiselect-all"]').click(),expect($("#multiselect option:selected").length).toBe(99),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!0),$('#multiselect-container input[value!="multiselect-all"]').click(),expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1)})),it("Should trigger onSelectAll/onDeselectAll when changing the select all option.",(function(){expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1),$('#multiselect-container input[value="multiselect-all"]').prop("checked",!0),$('#multiselect-container input[value="multiselect-all"]').trigger("change"),expect($("#multiselect option:selected").length).toBe(99),expect($("#multiselect-container input:checked").length).toBe(100),expect(onSelectAllTriggered).toBe(!0),$('#multiselect-container input[value="multiselect-all"]').prop("checked",!1),$('#multiselect-container input[value="multiselect-all"]').trigger("change"),expect($('#multiselect option:selected[value!="multiselect-all"]').length).toBe(0),expect($("#multiselect option:selected").length).toBe(0),expect(onDeselectAllTriggered).toBe(!0)})),it("Should trigger the onSelectAll/onDeselectAll when clicking the select all option.",(function(){expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1),$('#multiselect-container input[value="multiselect-all"]').click(),expect($("#multiselect option:selected").length).toBe(99),expect($("#multiselect-container input:checked").length).toBe(100),expect(onSelectAllTriggered).toBe(!0),$('#multiselect-container input[value="multiselect-all"]').click(),expect($('#multiselect option:selected[value!="multiselect-all"]').length).toBe(0),expect($("#multiselect option:selected").length).toBe(0),expect(onDeselectAllTriggered).toBe(!0)})),it("Should NOT trigger onSelectAll/onDeselectAll based on the change event.",(function(){expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1),$('#multiselect-container input[value!="multiselect-all"]').prop("checked",!0),$('#multiselect-container input[value!="multiselect-all"]').trigger("change"),expect($('#multiselect option:selected[value!="multiselect-all"]').length).toBe(99),expect($("#multiselect option:selected").length).toBe(99),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!0),expect(onSelectAllTriggered).toBe(!1),$('#multiselect-container input[value!="multiselect-all"]').prop("checked",!1),$('#multiselect-container input[value!="multiselect-all"]').trigger("change"),expect($('#multiselect option:selected[value!="multiselect-all"]').length).toBe(0),expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1),expect(onDeselectAllTriggered).toBe(!1)})),it("Should NOT trigger onSelectAll/onDeselectAll based on the click event.",(function(){expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1),$('#multiselect-container input[value!="multiselect-all"]').click(),expect($("#multiselect option:selected").length).toBe(99),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!0),expect(onSelectAllTriggered).toBe(!1),$('#multiselect-container input[value!="multiselect-all"]').click(),expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="multiselect-all"]').prop("checked")).toBe(!1),expect(onDeselectAllTriggered).toBe(!1)})),it("Should trigger onSelectAll/onDeselectAll on function call.",(function(){$("#multiselect").multiselect("selectAll",!0,!0),expect(onSelectAllTriggered).toBe(!0),$("#multiselect").multiselect("deselectAll",!0,!0),expect(onDeselectAllTriggered).toBe(!0)})),it("Should NOT trigger onSelectAll on initialization but initialize the select all option correctly.",(function(){for(var $select=$(''),i=1;i<10;i++)$select.append('');$("body").append($select),onSelectAllTriggered=!1,$select.multiselect({buttonContainer:'',includeSelectAllOption:!0,selectAllValue:"multiselect-all",onSelectAll:function(){onSelectAllTriggered=!0}}),expect($('#multiselect-onSelectAll-container input[value="multiselect-all"]').prop("checked")).toBe(!0),expect(onSelectAllTriggered).toBe(!1),$("#multiselect-onSelectAll").multiselect("destroy"),$("#multiselect-onSelectAll").remove()})),it("Should NOT trigger onDeselectAll on initialization but initialize the select all option correctly.",(function(){for(var $select=$(''),i=1;i<10;i++)$select.append('');$("body").append($select),onDeselectAllTriggered=!1,$select.multiselect({buttonContainer:'',includeSelectAllOption:!0,selectAllValue:"multiselect-all",onDeselectAll:function(){onDeselectAllTriggered=!0}}),expect($('#multiselect-onDeselectAll-container input[value="multiselect-all"]').prop("checked")).toBe(!1),expect(onDeselectAllTriggered).toBe(!1),$("#multiselect-onDeselectAll").multiselect("destroy"),$("#multiselect-onDeselectAll").remove()})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),describe('Bootstrap Multiselect "Filter".',(function(){var $select=null;beforeEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove(),$select=$('');for(var i=1;i<10;i++)$select.append('");$("body").append($select)})),describe("Should create filter.",(function(){beforeEach((function(){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"value"})})),it("Should create filter.",(function(){expect($("#multiselect-container .multiselect-filter").length).toBe(1),expect($("#multiselect-container .multiselect-filter input").length).toBe(1)}))})),describe("Should create legacy filter.",(function(){beforeEach((function(){$select.multiselect({buttonContainer:'',enableFiltering:!0,templates:{filter:'
'},filterBehavior:"value"})})),it("Should create filter.",(function(){expect($("#multiselect-container .multiselect-filter").length).toBe(1),expect($("#multiselect-container .multiselect-filter input").length).toBe(1),expect($("#multiselect-container .multiselect-filter .multiselect-clear-filter").length).toBe(1)}))})),describe("Should filter elements by value.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"value",onFiltering:function(){done()}}),$("#multiselect-container .multiselect-filter input").val("value-9").trigger("keydown")})),it("Should filter elements.",(function(){for(var i=1;i<10;i++)9!=i?expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').closest(".multiselect-option").hasClass("multiselect-filter-hidden")).toBe(!0,i):expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').closest(".multiselect-option").hasClass("multiselect-filter-hidden")).toBe(!1,i)}))})),describe("Should filter elements by value only.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"value",onFiltering:function(){done()}}),$("#multiselect-container .multiselect-filter input").val("Option").trigger("keydown")})),it("Should filter elements.",(function(){for(var i=1;i<10;i++)expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').closest(".multiselect-option").hasClass("multiselect-filter-hidden")).toBe(!0,i)}))})),describe("Should filter elements by text.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"text",onFiltering:function(){done()}}),$("#multiselect-container .multiselect-filter input").val("Option 9").trigger("keydown")})),it("Should filter elements.",(function(){for(var i=1;i<10;i++)9!=i?expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').closest(".multiselect-option").hasClass("multiselect-filter-hidden")).toBe(!0,i):expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').closest(".multiselect-option").hasClass("multiselect-filter-hidden")).toBe(!1,i)}))})),describe("Should filter elements by text only.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"text",onFiltering:function(){done()}}),$("#multiselect-container .multiselect-filter input").val("value").trigger("keydown")})),it("Should filter elements.",(function(){for(var i=1;i<10;i++)expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').closest(".multiselect-option").hasClass("multiselect-filter-hidden")).toBe(!0,i)}))})),describe("Should filter elements by text and value - text.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"both",onFiltering:function(){done()}}),$("#multiselect-container .multiselect-filter input").val("Option 9").trigger("keydown")})),it("Should filter elements.",(function(){for(var i=1;i<10;i++)9!=i?expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').closest(".multiselect-option").hasClass("multiselect-filter-hidden")).toBe(!0,i):expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').closest(".multiselect-option").hasClass("multiselect-filter-hidden")).toBe(!1,i)}))})),describe("Should filter elements by text and value - value.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"both",onFiltering:function(){done()}}),$("#multiselect-container .multiselect-filter input").val("value-9").trigger("keydown")})),it("Should filter elements.",(function(){for(var i=1;i<10;i++)9!=i?expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').closest(".multiselect-option").hasClass("multiselect-filter-hidden")).toBe(!0,i):expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').closest(".multiselect-option").hasClass("multiselect-filter-hidden")).toBe(!1,i)}))})),describe("Should remove filter on clicking the legacy clear button.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,templates:{filter:'
'},filterBehavior:"value",onFiltering:function(){done()}}),$("#multiselect-container .multiselect-filter input").val("value-9").trigger("keydown")})),it("Should remove filter.",(function(){for(var i=1;i<10;i++)9!=i?expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').closest(".multiselect-option").hasClass("multiselect-filter-hidden")).toBe(!0,i):expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').closest(".multiselect-option").hasClass("multiselect-filter-hidden")).toBe(!1,i);$("#multiselect-container .multiselect-filter .multiselect-clear-filter").click();for(var i=1;i<10;i++)expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').closest(".multiselect-option").hasClass("multiselect-filter-hidden")).toBe(!1,i)}))})),describe("Filtering and removing the filter should not alter selection.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"value",onFiltering:function(){done()}}),$('#multiselect-container .multiselect-option input[value="value-1"]').click(),$('#multiselect-container .multiselect-option input[value="value-9"]').click();for(var i=1;i<10;i++)9!=i&&1!=i?expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!1,i):expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!0,i);$("#multiselect-container .multiselect-filter input").val("value-9").trigger("keydown")})),it("Should not alter selection.",(function(){for(var i=1;i<10;i++)9!=i&&1!=i?expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!1,i):expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!0,i);$("#multiselect-container .multiselect-filter .multiselect-clear-filter").click();for(var i=1;i<10;i++)9!=i&&1!=i?expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!1,i):expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!0,i)}))})),describe("Select method should select both hidden and visible options.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"value",onFiltering:function(){done()}});for(var i=1;i<10;i++)expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!1,i);$("#multiselect-container .multiselect-filter input").val("value-9").trigger("keydown")})),it("Should not alter selection.",(function(){$("#multiselect").multiselect("select","value-1"),expect($('#multiselect-container .multiselect-option input[value="value-1"]').prop("checked")).toBe(!0),expect($('#multiselect option[value="value-1"]').prop("selected")).toBe(!0),$("#multiselect").multiselect("select","value-9"),expect($('#multiselect-container .multiselect-option input[value="value-9"]').prop("checked")).toBe(!0),expect($('#multiselect option[value="value-9"]').prop("selected")).toBe(!0)}))})),describe("Deselect method should select both hidden and visible options.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"value",onFiltering:function(){done()}}),$('#multiselect-container .multiselect-option input[value="value-9"]').click(),$('#multiselect-container .multiselect-option input[value="value-1"]').click();for(var i=1;i<10;i++)9!=i&&1!=i?expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!1,i):expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!0,i);$("#multiselect-container .multiselect-filter input").val("value-9").trigger("keydown")})),it("Should not alter selection.",(function(){$("#multiselect").multiselect("deselect","value-1"),expect($('#multiselect-container .multiselect-option input[value="value-1"]').prop("checked")).toBe(!1),expect($('#multiselect option[value="value-1"]').prop("selected")).toBe(!1),$("#multiselect").multiselect("deselect","value-9"),expect($('#multiselect-container .multiselect-option input[value="value-9"]').prop("checked")).toBe(!1),expect($('#multiselect option[value="value-9"]').prop("selected")).toBe(!1)}))})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),describe('Bootstrap Multiselect "Select All+Filter+selectAllJustVisible".',(function(){var $select=null;beforeEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove(),$select=$('');for(var i=1;i<10;i++)$select.append('");$("body").append($select)})),describe("Should select only visible options if selectAllJustVisible is true.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"value",includeSelectAllOption:!0,selectAllJustVisible:!0,selectAllValue:"multiselect-all",onFiltering:function(){done()}});for(var i=1;i<10;i++)expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!1,i);$("#multiselect-container .multiselect-filter input").val("value-9").trigger("keydown")})),it("Should select one option.",(function(){$('#multiselect-container .multiselect-all input[value="multiselect-all"]').click();for(var i=1;i<10;i++)9!=i?expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!1,i):expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!0,i)}))})),describe("Should deselect only visible options if selectAllJustVisible is true.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"value",includeSelectAllOption:!0,selectAllJustVisible:!0,selectAllValue:"multiselect-all",onFiltering:function(){done()}}),$('#multiselect-container .multiselect-option input[value="value-1"]').click(),$('#multiselect-container .multiselect-option input[value="value-9"]').click();for(var i=1;i<10;i++)9!=i&&1!=i?expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!1,i):expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!0,i);$("#multiselect-container .multiselect-filter input").val("value-9").trigger("keydown")})),it("Should deselect one option.",(function(){$("#multiselect-container .multiselect-all input").click();for(var i=1;i<10;i++)1!=i?expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!1,i):expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!0,i)}))})),describe("Should select all options if selectAllJustVisible is false.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"value",includeSelectAllOption:!0,selectAllJustVisible:!1,selectAllValue:"multiselect-all",onFiltering:function(){done()}});for(var i=1;i<10;i++)expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!1,i);$("#multiselect-container .multiselect-filter input").val("value-9").trigger("keydown")})),it("Should select all options.",(function(){$('#multiselect-container .multiselect-all input[value="multiselect-all"]').click();for(var i=1;i<10;i++)expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!0,i)}))})),describe("Should deselect all options if selectAllJustVisible is false.",(function(){beforeEach((function(done){$select.multiselect({buttonContainer:'',enableFiltering:!0,filterBehavior:"value",includeSelectAllOption:!0,selectAllJustVisible:!1,selectAllValue:"multiselect-all",onFiltering:function(){done()}});for(var i=1;i<10;i++)$('#multiselect-container .multiselect-option input[value="value-'+i+'"]').click(),expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!0,i);$("#multiselect-container .multiselect-filter input").val("value-9").trigger("keydown")})),it("Should select all options.",(function(){$('#multiselect-container .multiselect-all input[value="multiselect-all"]').click();for(var i=1;i<10;i++)expect($('#multiselect-container .multiselect-option input[value="value-'+i+'"]').prop("checked")).toBe(!1,i)}))})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),describe('Bootstrap Multiselect "Specific Issues".',(function(){it("#393.",(function(){for(var $select=$(''),i=1;i<100;i++)$select.append('');$("body").append($select),$select.multiselect({buttonContainer:'',includeSelectAllOption:!0,selectAllValue:0}),expect($('#multiselect-container input[value="0"]').length).toBe(1),expect($('#multiselect-container input[value="0"]').prop("checked")).toBe(!1),$("#multiselect").multiselect("selectAll"),expect($("#multiselect option:selected").length).toBe(99),expect($('#multiselect-container input[value="0"]').prop("checked")).toBe(!0),$("#multiselect").multiselect("deselectAll"),expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="0"]').prop("checked")).toBe(!1),$('#multiselect-container input[value="0"]').click(),expect($("#multiselect option:selected").length).toBe(99),expect($('#multiselect-container input[value="0"]').prop("checked")).toBe(!0),$('#multiselect-container input[value="0"]').click(),expect($("#multiselect option:selected").length).toBe(0),expect($('#multiselect-container input[value="0"]').prop("checked")).toBe(!1),$("#multiselect").multiselect("destroy"),$("#multiselect").remove()})),it("#405.",(function(){for(var selection=document.getSelection(),range=document.createRange(),$selection=$("Some text to select"),$select=$(''),i=1;i<5;i++)$select.append('');$("body").append($selection).append($select),$select.multiselect({buttonContainer:''}),range.selectNodeContents($selection.get(0)),selection.removeAllRanges(),selection.addRange(range),"Range"===document.getSelection().type&&($("#multiselect-container").find(".multiselect-option:first .form-check-label").trigger("click"),expect($("#multiselect-container").find("input:first").prop("checked")).toBe(!0)),$("#multiselect").multiselect("destroy"),$("#multiselect").remove(),$selection.remove()})),it("#679.",(function(){for(var $select=$(''),i=1;i<11;i++){for(var $optgroup=$(''),j=1;j<11;j++)$optgroup.append('");$select.append($optgroup)}$("body").append($select);var fired=0;$select.multiselect({buttonContainer:'',enableClickableOptGroups:!0,enableCollapsibleOptGroups:!0,onChange:function(option,checked){fired++}}),expect($("#multiselect option:selected").length).toBe(0),expect(fired).toBe(0);var i=0;$("#multiselect-container .multiselect-group").each((function(){$(".form-check-label",$(this)).click(),expect(fired).toBe(1),fired=0,$(".form-check-label",$(this)).click(),expect(fired).toBe(1),fired=0,i++})),$("#multiselect").multiselect("destroy"),$("#multiselect").remove()})),it("#655/1 when clicking the options.",(function(){var $select=$('');$select.append(''),$select.append(''),$("body").append($select),$select.multiselect({buttonContainer:'',enableClickableOptGroups:!0}),$('#multiselect-container input[value="2-1"]').click(),$('#multiselect-container input[value="2-2"]').click(),$('#multiselect-container input[value="2-3"]').click(),expect($($("#multiselect-container .multiselect-group input")[0]).prop("checked")).toBe(!1),expect($('#multiselect-container input[value="1-1"]').prop("checked")).toBe(!1),expect($('#multiselect-container input[value="1-2"]').prop("checked")).toBe(!1),expect($('#multiselect-container input[value="1-3"]').prop("checked")).toBe(!1),expect($($("#multiselect-container .multiselect-group input")[1]).prop("checked")).toBe(!0),expect($('#multiselect-container input[value="2-1"]').prop("checked")).toBe(!0),expect($('#multiselect-container input[value="2-2"]').prop("checked")).toBe(!0),expect($('#multiselect-container input[value="2-3"]').prop("checked")).toBe(!0),$("#multiselect").multiselect("destroy"),$("#multiselect").remove()})),it("#655/1 when clicking the optgroup.",(function(){var $select=$('');$select.append(''),$select.append(''),$("body").append($select),$select.multiselect({buttonContainer:'',enableClickableOptGroups:!0}),$($("#multiselect-container .multiselect-group input")[1]).click(),expect($($("#multiselect-container .multiselect-group input")[0]).prop("checked")).toBe(!1),expect($('#multiselect-container input[value="1-1"]').prop("checked")).toBe(!1),expect($('#multiselect-container input[value="1-2"]').prop("checked")).toBe(!1),expect($('#multiselect-container input[value="1-3"]').prop("checked")).toBe(!1),expect($($("#multiselect-container .multiselect-group input")[1]).prop("checked")).toBe(!0),expect($('#multiselect-container input[value="2-1"]').prop("checked")).toBe(!0),expect($('#multiselect-container input[value="2-2"]').prop("checked")).toBe(!0),expect($('#multiselect-container input[value="2-3"]').prop("checked")).toBe(!0),$("#multiselect").multiselect("destroy"),$("#multiselect").remove()})),it("#655/2 when clicking the options.",(function(){var $select=$('');$select.append(''),$select.append(''),$("body").append($select),$select.multiselect({buttonContainer:'',enableClickableOptGroups:!0,selectedClass:"multiselect-custom-selected"}),$('#multiselect-container input[value="2-1"]').click(),$('#multiselect-container input[value="2-2"]').click(),$('#multiselect-container input[value="2-3"]').click(),expect($($("#multiselect-container .multiselect-group")[0]).prop("class").split(" ")).not.toContain("multiselect-custom-selected"),expect($('#multiselect-container .multiselect-option:has(input[value="1-1"])').prop("class").split(" ")).not.toContain("multiselect-custom-selected"),expect($('#multiselect-container .multiselect-option:has(input[value="1-2"])').prop("class").split(" ")).not.toContain("multiselect-custom-selected"),expect($('#multiselect-container .multiselect-option:has(input[value="1-3"])').prop("class").split(" ")).not.toContain("multiselect-custom-selected"),expect($($("#multiselect-container .multiselect-group")[1]).prop("class").split(" ")).toContain("multiselect-custom-selected"),expect($('#multiselect-container .multiselect-option:has(input[value="2-1"])').prop("class").split(" ")).toContain("multiselect-custom-selected"),expect($('#multiselect-container .multiselect-option:has(input[value="2-2"])').prop("class").split(" ")).toContain("multiselect-custom-selected"),expect($('#multiselect-container .multiselect-option:has(input[value="2-3"])').prop("class").split(" ")).toContain("multiselect-custom-selected"),$("#multiselect").multiselect("destroy"),$("#multiselect").remove()})),it("#655/2 when clicking the optgroup.",(function(){var $select=$('');$select.append(''),$select.append(''),$("body").append($select),$select.multiselect({buttonContainer:'',enableClickableOptGroups:!0,selectedClass:"multiselect-custom-selected"}),$($("#multiselect-container .multiselect-group input")[1]).click(),expect($($("#multiselect-container .multiselect-group")[0]).prop("class").split(" ")).not.toContain("multiselect-custom-selected"),expect($('#multiselect-container .multiselect-option:has(input[value="1-1"])').prop("class").split(" ")).not.toContain("multiselect-custom-selected"),expect($('#multiselect-container .multiselect-option:has(input[value="1-2"])').prop("class").split(" ")).not.toContain("multiselect-custom-selected"),expect($('#multiselect-container .multiselect-option:has(input[value="1-3"])').prop("class").split(" ")).not.toContain("multiselect-custom-selected"),expect($($("#multiselect-container .multiselect-group")[1]).prop("class").split(" ")).toContain("multiselect-custom-selected"),expect($('#multiselect-container .multiselect-option:has(input[value="2-1"])').prop("class").split(" ")).toContain("multiselect-custom-selected"),expect($('#multiselect-container .multiselect-option:has(input[value="2-2"])').prop("class").split(" ")).toContain("multiselect-custom-selected"),expect($('#multiselect-container .multiselect-option:has(input[value="2-3"])').prop("class").split(" ")).toContain("multiselect-custom-selected"),$("#multiselect").multiselect("destroy"),$("#multiselect").remove()})),describe("#732.",(function(){var triggeredOnSelectAll=!1,triggeredOnDeselectAll=!1;beforeEach((function(done){triggeredOnSelectAll=!1,triggeredOnDeselectAll=!1;var $select=$('');$select.append(''),$("body").append($select),$select.multiselect({buttonContainer:'',enableFiltering:!0,includeSelectAllOption:!0,onSelectAll:function(){triggeredOnSelectAll=!0},onDeselectAll:function(){triggeredOnDeselectAll=!0},onFiltering:function(){done()}}),$("#multiselect-container .multiselect-filter input").val("2").trigger("keydown")})),it("Should not fire onSelectAll or onDeselectAll when filtering or clearing filter.",(function(){expect(triggeredOnSelectAll).toBe(!1),expect(triggeredOnDeselectAll).toBe(!1),$("#multiselect-container .multiselect-filter .multiselect-clear-filter").click(),expect(triggeredOnSelectAll).toBe(!1),expect(triggeredOnDeselectAll).toBe(!1)})),afterEach((function(){$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),it("#759.",(function(){var $select=$('');$select.append(''),$("body").append($select),$select.multiselect({buttonContainer:''}),expect($("#multiselect-container .multiselect-selected-text").text()).toBe("Test"),$("#multiselect").multiselect("destroy"),$("#multiselect").remove()}))})),describe("Knockout Binding.",(function(){var $testArea;afterEach((function(){$testArea&&$testArea.multiselect("destroy").remove()})),it("Should update values and options with an observable array.",(function(){jasmine.clock().install(),$testArea=$('').appendTo(document.body);var viewModel={myValues:ko.observableArray(),myOptions:ko.observableArray([])};expect(void 0!==ko.bindingHandlers.multiselect.init).toEqual(!0);var optionSpy=spyOn(ko.bindingHandlers.selectedOptions,"init").and.callThrough(),multiSpy=spyOn(ko.bindingHandlers.multiselect,"init").and.callThrough();ko.applyBindings(viewModel,$testArea[0]),expect(optionSpy.calls.count()).toEqual(1),expect(multiSpy.calls.count()).toEqual(1),expect($testArea.find("option").length).toEqual(0),expect($testArea.val()).toEqual(null),expect($testArea.next().find("button.multiselect").text().trim()).toEqual("None selected"),expect($testArea.next().find(".multiselect-option").length).toEqual(0),viewModel.myOptions(["option1","option2"]),jasmine.clock().tick(1e3),expect($testArea.next().find(".multiselect-option").length).toEqual(2),expect($testArea.find("option").length).toEqual(2),expect($testArea.find("option:checked").length).toEqual(0),viewModel.myValues(["option2"]),jasmine.clock().tick(1e3),expect($testArea.find("option:checked").length).toEqual(1),expect($testArea.find("option:checked").text().trim()).toEqual("option2"),viewModel.myValues(["option1","option2"]),jasmine.clock().tick(1e3),expect($testArea.find("option:checked").length).toEqual(2),expect($testArea.find("option:checked").map((function(){return $(this).text().trim()})).toArray()).toEqual(["option1","option2"]),expect($testArea.next().find("button.multiselect").text().trim()).toEqual("All selected (2)"),viewModel.myOptions.push("wacky option"),jasmine.clock().tick(1e3),expect($testArea.find("option:checked").length).toEqual(2),expect($testArea.find("option:checked").map((function(){return $(this).text().trim()})).toArray()).toEqual(["option1","option2"]),expect($testArea.find("option").map((function(){return $(this).text().trim()})).toArray()).toEqual(["option1","option2","wacky option"]),expect($testArea.next().find("button.multiselect").text().trim()).toEqual("2 selected")}))})),describe('Bootstrap Multiselect "Reset".',(function(){var $select;beforeEach((function(){$select=$('');for(var i=1;i<100;i++)$select.append('');$("body").append($select),$select.multiselect({buttonContainer:'',includeResetOption:!0})})),it("Should not add an additional option to the select.",(function(){expect($select.find("option").length).toBe(99)})),it("Should add reset button.",(function(){expect($("#multiselect-container").find(".multiselect-reset button").text()).toBe("Reset")})),it("Should reset if button clicked.",(function(){$select.multiselect("selectAll",!0,!1),expect($select.find("option:selected").length).toBe(99),$("#multiselect-container").find(".multiselect-reset button").click(),expect($select.find("option:selected").length).toBe(0)})),afterEach((function(){$select.multiselect("destroy"),$select.remove()}))}));
\ No newline at end of file