Revision 94395bc8
Added by Tomer Brisker about 8 years ago
app/assets/javascripts/jquery.multi-select.js | ||
---|---|---|
|
||
$(document).on('click', '.ms-select-all', function () {
|
||
// can't use multiSelect('select_all') because it adds filtered out items too.
|
||
var formGroup = $(this).closest('.form-group'),
|
||
selected = [];
|
||
|
||
selected = itemsToSelect(formGroup);
|
||
|
||
$(formGroup).find('select[multiple]').multiSelect('select', selected);
|
||
$(this).closest('.form-group').find('.ms-selectable .ms-list :visible').click();
|
||
return false;
|
||
});
|
||
|
||
function findVisibleItems(formGroup) {
|
||
return $(formGroup).find('.ms-selectable .ms-list :not(.hide) span').map(function (index, ele) {
|
||
return $(ele).text();
|
||
});
|
||
}
|
||
|
||
function itemsToSelect(formGroup) {
|
||
var visibles = findVisibleItems(formGroup),
|
||
selected = [];
|
||
$(formGroup).find('select[multiple]').children().each( function () {
|
||
var option = $(this);
|
||
visibles.each( function (index, name) {
|
||
if(option.text() === name) {
|
||
selected.push(option.val())
|
||
}
|
||
});
|
||
});
|
||
return selected;
|
||
}
|
||
|
||
$(document).on('click', '.ms-deselect-all', function () {
|
||
// can't use multiSelect('deselect_all') because it is deselecting disabled items too.
|
||
var ms = $(this).closest('.form-group').find('select[multiple]');
|
Also available in: Unified diff
Refs #7726 - Improve select all for filtered multi-select
(cherry picked from commit a44919d87d44923d63cb99bbb256c5c71a19c05c)