multiselect-uncompressed.js
1.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
* @copyright Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
/**
* JavaScript behavior to allow shift select in administrator grids
*/
(function($) {
Joomla = window.Joomla || {};
var $boxes;
Joomla.JMultiSelect = function(table) {
var $last,
initialize = function(table) {
$boxes = $('#' + table).find('input[type=checkbox]');
$boxes.on('click', function(e) {
doselect(e)
});
},
doselect = function(e) {
var $current = $(e.target), isChecked, lastIndex, currentIndex, swap;
if (e.shiftKey && $last.length) {
isChecked = $current.is(':checked');
lastIndex = $boxes.index($last);
currentIndex = $boxes.index($current);
if (currentIndex < lastIndex) {
// handle selection from bottom up
swap = lastIndex;
lastIndex = currentIndex;
currentIndex = swap;
}
$boxes.slice(lastIndex, currentIndex + 1).attr('checked', isChecked);
}
$last = $current;
}
initialize(table);
}
})(jQuery);