diff --git a/dist/js/bootstrap-multiselect.js b/dist/js/bootstrap-multiselect.js index 5d17199d..0123f83f 100644 --- a/dist/js/bootstrap-multiselect.js +++ b/dist/js/bootstrap-multiselect.js @@ -463,7 +463,7 @@ buttonGroupReset: '', option: '', divider: '', - optionGroup: '', + optionGroup: '', resetButton: '
' } }, @@ -788,6 +788,7 @@ $checkbox = groupItem.find(".form-check-input"); if ($checkbox.length > 0) { $checkbox.prop('checked', !$checkbox.prop('checked')); + $checkbox.prop('indeterminate', false); $checkbox.change(); } } @@ -1855,25 +1856,36 @@ .not('.multiselect-filter-hidden') .not('.disabled'); - var checked = true; + var checkedCount = 0; $options.each(function () { var $input = $('input', this); - if (!$input.prop('checked')) { - checked = false; + if ($input.prop('checked')) { + checkedCount = checkedCount + 1; } }); - if (selectedClass) { - if (checked) { + var checked; + var indeterminate; + if (checkedCount === 0) { + $(this).removeClass(selectedClass); + checked = false; + indeterminate = false; + } + else { + checked = true; + if (checkedCount === $options.length) { $(this).addClass(selectedClass); + indeterminate = false; } else { $(this).removeClass(selectedClass); + indeterminate = true; } } $('input', this).prop('checked', checked); + $('input', this).prop('indeterminate', indeterminate); }); }, @@ -1888,14 +1900,23 @@ var selectAllItem = $(".multiselect-all", this.$popupContainer); var selectAllInput = selectAllItem.find("input"); - if (checkedBoxesLength > 0 && checkedBoxesLength === allBoxesLength) { - selectAllInput.prop("checked", true); - selectAllItem.addClass(this.options.selectedClass); - } - else { + if (checkedBoxesLength === 0) { selectAllInput.prop("checked", false); + selectAllInput.prop("indeterminate", false); selectAllItem.removeClass(this.options.selectedClass); } + else { + selectAllInput.prop("checked", true); + + if (checkedBoxesLength === allBoxesLength) { + selectAllInput.prop("indeterminate", false); + selectAllItem.addClass(this.options.selectedClass); + } + else { + selectAllInput.prop("indeterminate", true); + selectAllItem.removeClass(this.options.selectedClass); + } + } } },