datatables.net-select 1.7.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/js/dataTables.select.js +267 -92
- package/js/dataTables.select.min.js +2 -2
- package/js/dataTables.select.min.mjs +2 -2
- package/js/dataTables.select.mjs +266 -91
- package/package.json +2 -2
- package/types/types.d.ts +4 -4
package/js/dataTables.select.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Select for DataTables
|
|
1
|
+
/*! Select for DataTables 2.0.0
|
|
2
2
|
* © SpryMedia Ltd - datatables.net/license/mit
|
|
3
3
|
*/
|
|
4
4
|
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
// Browser
|
|
44
44
|
factory( jQuery, window, document );
|
|
45
45
|
}
|
|
46
|
-
}(function( $, window, document
|
|
46
|
+
}(function( $, window, document ) {
|
|
47
47
|
'use strict';
|
|
48
48
|
var DataTable = $.fn.dataTable;
|
|
49
49
|
|
|
@@ -52,11 +52,15 @@ var DataTable = $.fn.dataTable;
|
|
|
52
52
|
// Version information for debugger
|
|
53
53
|
DataTable.select = {};
|
|
54
54
|
|
|
55
|
-
DataTable.select.version = '
|
|
55
|
+
DataTable.select.version = '2.0.0';
|
|
56
56
|
|
|
57
57
|
DataTable.select.init = function (dt) {
|
|
58
58
|
var ctx = dt.settings()[0];
|
|
59
59
|
|
|
60
|
+
if (!DataTable.versionCheck('2')) {
|
|
61
|
+
throw 'Warning: Select requires DataTables 2 or newer';
|
|
62
|
+
}
|
|
63
|
+
|
|
60
64
|
if (ctx._select) {
|
|
61
65
|
return;
|
|
62
66
|
}
|
|
@@ -121,9 +125,12 @@ DataTable.select.init = function (dt) {
|
|
|
121
125
|
var info = true;
|
|
122
126
|
var selector = 'td, th';
|
|
123
127
|
var className = 'selected';
|
|
128
|
+
var headerCheckbox = true;
|
|
124
129
|
var setStyle = false;
|
|
125
130
|
|
|
126
|
-
ctx._select = {
|
|
131
|
+
ctx._select = {
|
|
132
|
+
infoEls: []
|
|
133
|
+
};
|
|
127
134
|
|
|
128
135
|
// Initialisation customisations
|
|
129
136
|
if (opts === true) {
|
|
@@ -167,6 +174,10 @@ DataTable.select.init = function (dt) {
|
|
|
167
174
|
if (opts.className !== undefined) {
|
|
168
175
|
className = opts.className;
|
|
169
176
|
}
|
|
177
|
+
|
|
178
|
+
if (opts.headerCheckbox !== undefined) {
|
|
179
|
+
headerCheckbox = opts.headerCheckbox;
|
|
180
|
+
}
|
|
170
181
|
}
|
|
171
182
|
|
|
172
183
|
dt.select.selector(selector);
|
|
@@ -177,27 +188,21 @@ DataTable.select.init = function (dt) {
|
|
|
177
188
|
dt.select.info(info);
|
|
178
189
|
ctx._select.className = className;
|
|
179
190
|
|
|
180
|
-
// Sort table based on selected rows. Requires Select Datatables extension
|
|
181
|
-
$.fn.dataTable.ext.order['select-checkbox'] = function (settings, col) {
|
|
182
|
-
return this.api()
|
|
183
|
-
.column(col, { order: 'index' })
|
|
184
|
-
.nodes()
|
|
185
|
-
.map(function (td) {
|
|
186
|
-
if (settings._select.items === 'row') {
|
|
187
|
-
return $(td).parent().hasClass(settings._select.className);
|
|
188
|
-
}
|
|
189
|
-
else if (settings._select.items === 'cell') {
|
|
190
|
-
return $(td).hasClass(settings._select.className);
|
|
191
|
-
}
|
|
192
|
-
return false;
|
|
193
|
-
});
|
|
194
|
-
};
|
|
195
|
-
|
|
196
191
|
// If the init options haven't enabled select, but there is a selectable
|
|
197
192
|
// class name, then enable
|
|
198
193
|
if (!setStyle && $(dt.table().node()).hasClass('selectable')) {
|
|
199
194
|
dt.select.style('os');
|
|
200
195
|
}
|
|
196
|
+
|
|
197
|
+
// Insert a checkbox into the header if needed - might need to wait
|
|
198
|
+
// for init complete, or it might already be done
|
|
199
|
+
if (headerCheckbox) {
|
|
200
|
+
initCheckboxHeader(dt);
|
|
201
|
+
|
|
202
|
+
dt.on('init', function () {
|
|
203
|
+
initCheckboxHeader(dt);
|
|
204
|
+
});
|
|
205
|
+
}
|
|
201
206
|
};
|
|
202
207
|
|
|
203
208
|
/*
|
|
@@ -249,6 +254,7 @@ The `_select` object contains the following properties:
|
|
|
249
254
|
on the row
|
|
250
255
|
info:boolean - If the selection summary should be shown in the table
|
|
251
256
|
information elements
|
|
257
|
+
infoEls:element[] - List of HTML elements with info elements for a table
|
|
252
258
|
}
|
|
253
259
|
```
|
|
254
260
|
|
|
@@ -433,10 +439,10 @@ function enableMouseSelection(dt) {
|
|
|
433
439
|
}
|
|
434
440
|
|
|
435
441
|
var ctx = dt.settings()[0];
|
|
436
|
-
var
|
|
442
|
+
var container = dt.table().container();
|
|
437
443
|
|
|
438
444
|
// Ignore clicks inside a sub-table
|
|
439
|
-
if ($(e.target).closest('div.'
|
|
445
|
+
if ($(e.target).closest('div.dt-container')[0] != container) {
|
|
440
446
|
return;
|
|
441
447
|
}
|
|
442
448
|
|
|
@@ -534,14 +540,8 @@ function eventTrigger(api, type, args, any) {
|
|
|
534
540
|
* @param {DataTable.Api} api DataTable to update
|
|
535
541
|
* @private
|
|
536
542
|
*/
|
|
537
|
-
function info(api) {
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
if (!ctx._select.info || !ctx.aanFeatures.i) {
|
|
541
|
-
return;
|
|
542
|
-
}
|
|
543
|
-
|
|
544
|
-
if (api.select.style() === 'api') {
|
|
543
|
+
function info(api, node) {
|
|
544
|
+
if (api.select.style() === 'api' || api.select.info() === false) {
|
|
545
545
|
return;
|
|
546
546
|
}
|
|
547
547
|
|
|
@@ -561,22 +561,81 @@ function info(api) {
|
|
|
561
561
|
);
|
|
562
562
|
};
|
|
563
563
|
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
el = $(el);
|
|
564
|
+
var el = $(node);
|
|
565
|
+
var output = $('<span class="select-info"/>');
|
|
567
566
|
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
add(output, 'cell', cells);
|
|
567
|
+
add(output, 'row', rows);
|
|
568
|
+
add(output, 'column', columns);
|
|
569
|
+
add(output, 'cell', cells);
|
|
572
570
|
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
571
|
+
var existing = el.children('span.select-info');
|
|
572
|
+
|
|
573
|
+
if (existing.length) {
|
|
574
|
+
existing.remove();
|
|
575
|
+
}
|
|
577
576
|
|
|
578
|
-
|
|
579
|
-
|
|
577
|
+
if (output.text() !== '') {
|
|
578
|
+
el.append(output);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Add a checkbox to the header for checkbox columns, allowing all rows to
|
|
584
|
+
* be selected, deselected or just to show the state.
|
|
585
|
+
*
|
|
586
|
+
* @param {*} dt API
|
|
587
|
+
*/
|
|
588
|
+
function initCheckboxHeader( dt ) {
|
|
589
|
+
// Find any checkbox column(s)
|
|
590
|
+
dt.columns('.dt-select').every(function () {
|
|
591
|
+
var header = this.header();
|
|
592
|
+
|
|
593
|
+
if (! $('input', header).length) {
|
|
594
|
+
// If no checkbox yet, insert one
|
|
595
|
+
var input = $('<input>')
|
|
596
|
+
.attr({
|
|
597
|
+
class: 'dt-select-checkbox',
|
|
598
|
+
type: 'checkbox',
|
|
599
|
+
'aria-label': dt.i18n('select.aria.headerCheckbox') || 'Select all rows'
|
|
600
|
+
})
|
|
601
|
+
.appendTo(header)
|
|
602
|
+
.on('change', function () {
|
|
603
|
+
if (this.checked) {
|
|
604
|
+
dt.rows({search: 'applied'}).select();
|
|
605
|
+
}
|
|
606
|
+
else {
|
|
607
|
+
dt.rows({selected: true}).deselect();
|
|
608
|
+
}
|
|
609
|
+
})
|
|
610
|
+
.on('click', function (e) {
|
|
611
|
+
e.stopPropagation();
|
|
612
|
+
});
|
|
613
|
+
|
|
614
|
+
// Update the header checkbox's state when the selection in the
|
|
615
|
+
// table changes
|
|
616
|
+
dt.on('draw select deselect', function (e, pass, type) {
|
|
617
|
+
if (type === 'row' || ! type) {
|
|
618
|
+
var count = dt.rows({selected: true}).count();
|
|
619
|
+
var search = dt.rows({search: 'applied', selected: true}).count();
|
|
620
|
+
var available = dt.rows({search: 'applied'}).count();
|
|
621
|
+
|
|
622
|
+
if (search && search <= count && search === available) {
|
|
623
|
+
input
|
|
624
|
+
.prop('checked', true)
|
|
625
|
+
.prop('indeterminate', false);
|
|
626
|
+
}
|
|
627
|
+
else if (search === 0 && count === 0) {
|
|
628
|
+
input
|
|
629
|
+
.prop('checked', false)
|
|
630
|
+
.prop('indeterminate', false);
|
|
631
|
+
}
|
|
632
|
+
else {
|
|
633
|
+
input
|
|
634
|
+
.prop('checked', false)
|
|
635
|
+
.prop('indeterminate', true);
|
|
636
|
+
}
|
|
637
|
+
}
|
|
638
|
+
});
|
|
580
639
|
}
|
|
581
640
|
});
|
|
582
641
|
}
|
|
@@ -602,8 +661,7 @@ function init(ctx) {
|
|
|
602
661
|
// This method of attaching to `aoRowCreatedCallback` is a hack until
|
|
603
662
|
// DataTables has proper events for row manipulation If you are reviewing
|
|
604
663
|
// this code to create your own plug-ins, please do not do this!
|
|
605
|
-
ctx.aoRowCreatedCallback.push({
|
|
606
|
-
fn: function (row, data, index) {
|
|
664
|
+
ctx.aoRowCreatedCallback.push(function (row, data, index) {
|
|
607
665
|
var i, ien;
|
|
608
666
|
var d = ctx.aoData[index];
|
|
609
667
|
|
|
@@ -622,9 +680,8 @@ function init(ctx) {
|
|
|
622
680
|
$(d.anCells[i]).addClass(ctx._select.className);
|
|
623
681
|
}
|
|
624
682
|
}
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
});
|
|
683
|
+
}
|
|
684
|
+
);
|
|
628
685
|
|
|
629
686
|
// On Ajax reload we want to reselect all rows which are currently selected,
|
|
630
687
|
// if there is an rowId (i.e. a unique value to identify each row with)
|
|
@@ -668,8 +725,20 @@ function init(ctx) {
|
|
|
668
725
|
});
|
|
669
726
|
|
|
670
727
|
// Update the table information element with selected item summary
|
|
671
|
-
api.on('
|
|
672
|
-
info
|
|
728
|
+
api.on('info.dt', function (e, ctx, node) {
|
|
729
|
+
// Store the info node for updating on select / deselect
|
|
730
|
+
if (!ctx._select.infoEls.includes(node)) {
|
|
731
|
+
ctx._select.infoEls.push(node);
|
|
732
|
+
}
|
|
733
|
+
|
|
734
|
+
info(api, node);
|
|
735
|
+
});
|
|
736
|
+
|
|
737
|
+
api.on('select.dtSelect.dt deselect.dtSelect.dt', function () {
|
|
738
|
+
ctx._select.infoEls.forEach(function (el) {
|
|
739
|
+
info(api, el);
|
|
740
|
+
});
|
|
741
|
+
|
|
673
742
|
api.state.save();
|
|
674
743
|
});
|
|
675
744
|
|
|
@@ -697,13 +766,13 @@ function init(ctx) {
|
|
|
697
766
|
function rowColumnRange(dt, type, idx, last) {
|
|
698
767
|
// Add a range of rows from the last selected row to this one
|
|
699
768
|
var indexes = dt[type + 's']({ search: 'applied' }).indexes();
|
|
700
|
-
var idx1 =
|
|
701
|
-
var idx2 =
|
|
769
|
+
var idx1 = indexes.indexOf(last);
|
|
770
|
+
var idx2 = indexes.indexOf(idx);
|
|
702
771
|
|
|
703
772
|
if (!dt[type + 's']({ selected: true }).any() && idx1 === -1) {
|
|
704
773
|
// select from top to here - slightly odd, but both Windows and Mac OS
|
|
705
774
|
// do this
|
|
706
|
-
indexes.splice(
|
|
775
|
+
indexes.splice(indexes.indexOf(idx) + 1, indexes.length);
|
|
707
776
|
}
|
|
708
777
|
else {
|
|
709
778
|
// reverse so we can shift click 'up' as well as down
|
|
@@ -723,7 +792,7 @@ function rowColumnRange(dt, type, idx, last) {
|
|
|
723
792
|
}
|
|
724
793
|
else {
|
|
725
794
|
// Deselect range - need to keep the clicked on row selected
|
|
726
|
-
indexes.splice(
|
|
795
|
+
indexes.splice(indexes.indexOf(idx), 1);
|
|
727
796
|
dt[type + 's'](indexes).deselect();
|
|
728
797
|
}
|
|
729
798
|
}
|
|
@@ -850,8 +919,10 @@ $.each(
|
|
|
850
919
|
data = settings[o.prop][indexes[i]];
|
|
851
920
|
|
|
852
921
|
if (
|
|
853
|
-
|
|
854
|
-
|
|
922
|
+
data && (
|
|
923
|
+
(selected === true && data._select_selected === true) ||
|
|
924
|
+
(selected === false && !data._select_selected)
|
|
925
|
+
)
|
|
855
926
|
) {
|
|
856
927
|
out.push(indexes[i]);
|
|
857
928
|
}
|
|
@@ -875,11 +946,13 @@ DataTable.ext.selector.cell.push(function (settings, opts, cells) {
|
|
|
875
946
|
rowData = settings.aoData[cells[i].row];
|
|
876
947
|
|
|
877
948
|
if (
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
(
|
|
949
|
+
rowData && (
|
|
950
|
+
(selected === true &&
|
|
951
|
+
rowData._selected_cells &&
|
|
952
|
+
rowData._selected_cells[cells[i].column] === true) ||
|
|
953
|
+
(selected === false &&
|
|
954
|
+
(!rowData._selected_cells || !rowData._selected_cells[cells[i].column]))
|
|
955
|
+
)
|
|
883
956
|
) {
|
|
884
957
|
out.push(cells[i]);
|
|
885
958
|
}
|
|
@@ -994,6 +1067,17 @@ apiRegister('select.selector()', function (selector) {
|
|
|
994
1067
|
});
|
|
995
1068
|
});
|
|
996
1069
|
|
|
1070
|
+
apiRegister('select.last()', function (set) {
|
|
1071
|
+
let ctx = this.context[0];
|
|
1072
|
+
|
|
1073
|
+
if (set) {
|
|
1074
|
+
ctx._select_lastCell = set;
|
|
1075
|
+
return this;
|
|
1076
|
+
}
|
|
1077
|
+
|
|
1078
|
+
return ctx._select_lastCell;
|
|
1079
|
+
});
|
|
1080
|
+
|
|
997
1081
|
apiRegisterPlural('rows().select()', 'row().select()', function (select) {
|
|
998
1082
|
var api = this;
|
|
999
1083
|
|
|
@@ -1004,8 +1088,26 @@ apiRegisterPlural('rows().select()', 'row().select()', function (select) {
|
|
|
1004
1088
|
this.iterator('row', function (ctx, idx) {
|
|
1005
1089
|
clear(ctx);
|
|
1006
1090
|
|
|
1007
|
-
|
|
1008
|
-
|
|
1091
|
+
// There is a good amount of knowledge of DataTables internals in
|
|
1092
|
+
// this function. It _could_ be done without that, but it would hurt
|
|
1093
|
+
// performance (or DT would need new APIs for this work)
|
|
1094
|
+
var dtData = ctx.aoData[idx];
|
|
1095
|
+
var dtColumns = ctx.aoColumns;
|
|
1096
|
+
|
|
1097
|
+
$(dtData.nTr).addClass(ctx._select.className);
|
|
1098
|
+
dtData._select_selected = true;
|
|
1099
|
+
|
|
1100
|
+
for (var i=0 ; i<dtColumns.length ; i++) {
|
|
1101
|
+
var col = dtColumns[i];
|
|
1102
|
+
|
|
1103
|
+
if (col.sType === 'select-checkbox') {
|
|
1104
|
+
// Make sure the checkbox shows the right state
|
|
1105
|
+
$('input.dt-select-checkbox', dtData.anCells[i]).prop('checked', true);
|
|
1106
|
+
|
|
1107
|
+
// Invalidate the sort data for this column
|
|
1108
|
+
dtData._aSortData[i] = null;
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1009
1111
|
});
|
|
1010
1112
|
|
|
1011
1113
|
this.iterator('table', function (ctx, i) {
|
|
@@ -1110,9 +1212,25 @@ apiRegisterPlural('rows().deselect()', 'row().deselect()', function () {
|
|
|
1110
1212
|
var api = this;
|
|
1111
1213
|
|
|
1112
1214
|
this.iterator('row', function (ctx, idx) {
|
|
1113
|
-
|
|
1215
|
+
// Like the select action, this has a lot of knowledge about DT internally
|
|
1216
|
+
var dtData = ctx.aoData[idx];
|
|
1217
|
+
var dtColumns = ctx.aoColumns;
|
|
1218
|
+
|
|
1219
|
+
$(dtData.nTr).removeClass(ctx._select.className);
|
|
1220
|
+
dtData._select_selected = false;
|
|
1114
1221
|
ctx._select_lastCell = null;
|
|
1115
|
-
|
|
1222
|
+
|
|
1223
|
+
for (var i=0 ; i<dtColumns.length ; i++) {
|
|
1224
|
+
var col = dtColumns[i];
|
|
1225
|
+
|
|
1226
|
+
if (col.sType === 'select-checkbox') {
|
|
1227
|
+
// Make sure the checkbox shows the right state
|
|
1228
|
+
$('input.dt-select-checkbox', dtData.anCells[i]).prop('checked', false);
|
|
1229
|
+
|
|
1230
|
+
// Invalidate the sort data for this column
|
|
1231
|
+
dtData._aSortData[i] = null;
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1116
1234
|
});
|
|
1117
1235
|
|
|
1118
1236
|
this.iterator('table', function (ctx, i) {
|
|
@@ -1198,15 +1316,15 @@ function namespacedEvents(config) {
|
|
|
1198
1316
|
}
|
|
1199
1317
|
|
|
1200
1318
|
function enabled(dt, config) {
|
|
1201
|
-
if (
|
|
1319
|
+
if (config.limitTo.indexOf('rows') !== -1 && dt.rows({ selected: true }).any()) {
|
|
1202
1320
|
return true;
|
|
1203
1321
|
}
|
|
1204
1322
|
|
|
1205
|
-
if (
|
|
1323
|
+
if (config.limitTo.indexOf('columns') !== -1 && dt.columns({ selected: true }).any()) {
|
|
1206
1324
|
return true;
|
|
1207
1325
|
}
|
|
1208
1326
|
|
|
1209
|
-
if (
|
|
1327
|
+
if (config.limitTo.indexOf('cells') !== -1 && dt.cells({ selected: true }).any()) {
|
|
1210
1328
|
return true;
|
|
1211
1329
|
}
|
|
1212
1330
|
|
|
@@ -1306,34 +1424,23 @@ $.extend(DataTable.ext.buttons, {
|
|
|
1306
1424
|
showSelected: {
|
|
1307
1425
|
text: i18n('showSelected', 'Show only selected'),
|
|
1308
1426
|
className: 'buttons-show-selected',
|
|
1309
|
-
action: function (e, dt
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
if (conf._filter) {
|
|
1314
|
-
var idx = DataTable.ext.search.indexOf(conf._filter);
|
|
1315
|
-
|
|
1316
|
-
if (idx !== -1) {
|
|
1317
|
-
DataTable.ext.search.splice(idx, 1);
|
|
1318
|
-
conf._filter = null;
|
|
1319
|
-
}
|
|
1427
|
+
action: function (e, dt) {
|
|
1428
|
+
if (dt.search.fixed('dt-select')) {
|
|
1429
|
+
// Remove existing function
|
|
1430
|
+
dt.search.fixed('dt-select', null);
|
|
1320
1431
|
|
|
1321
1432
|
this.active(false);
|
|
1322
1433
|
}
|
|
1323
1434
|
else {
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
|
|
1333
|
-
};
|
|
1334
|
-
|
|
1335
|
-
conf._filter = fn;
|
|
1336
|
-
DataTable.ext.search.push(fn);
|
|
1435
|
+
// Use a fixed filtering function to match on selected rows
|
|
1436
|
+
// This needs to reference the internal aoData since that is
|
|
1437
|
+
// where Select stores its reference for the selected state
|
|
1438
|
+
var dataSrc = dt.settings()[0].aoData;
|
|
1439
|
+
|
|
1440
|
+
dt.search.fixed('dt-select', function (text, data, idx) {
|
|
1441
|
+
// _select_selected is set by Select on the data object for the row
|
|
1442
|
+
return dataSrc[idx]._select_selected;
|
|
1443
|
+
});
|
|
1337
1444
|
|
|
1338
1445
|
this.active(true);
|
|
1339
1446
|
}
|
|
@@ -1362,6 +1469,74 @@ $.each(['Row', 'Column', 'Cell'], function (i, item) {
|
|
|
1362
1469
|
};
|
|
1363
1470
|
});
|
|
1364
1471
|
|
|
1472
|
+
DataTable.type('select-checkbox', {
|
|
1473
|
+
className: 'dt-select',
|
|
1474
|
+
detect: function (data) {
|
|
1475
|
+
// Rendering function will tell us if it is a checkbox type
|
|
1476
|
+
return data === 'select-checkbox' ? data : false;
|
|
1477
|
+
},
|
|
1478
|
+
order: {
|
|
1479
|
+
pre: function (d) {
|
|
1480
|
+
return d === 'X' ? -1 : 0;
|
|
1481
|
+
}
|
|
1482
|
+
}
|
|
1483
|
+
});
|
|
1484
|
+
|
|
1485
|
+
$.extend(true, DataTable.defaults.oLanguage, {
|
|
1486
|
+
select: {
|
|
1487
|
+
aria: {
|
|
1488
|
+
rowCheckbox: 'Select row'
|
|
1489
|
+
}
|
|
1490
|
+
}
|
|
1491
|
+
});
|
|
1492
|
+
|
|
1493
|
+
DataTable.render.select = function (valueProp, nameProp) {
|
|
1494
|
+
var valueFn = valueProp ? DataTable.util.get(valueProp) : null;
|
|
1495
|
+
var nameFn = nameProp ? DataTable.util.get(nameProp) : null;
|
|
1496
|
+
|
|
1497
|
+
return function (data, type, row, meta) {
|
|
1498
|
+
var dtRow = meta.settings.aoData[meta.row];
|
|
1499
|
+
var selected = dtRow._select_selected;
|
|
1500
|
+
var ariaLabel = meta.settings.oLanguage.select.aria.rowCheckbox;
|
|
1501
|
+
|
|
1502
|
+
if (type === 'display') {
|
|
1503
|
+
return $('<input>')
|
|
1504
|
+
.attr({
|
|
1505
|
+
'aria-label': ariaLabel,
|
|
1506
|
+
class: 'dt-select-checkbox',
|
|
1507
|
+
name: nameFn ? nameFn(row) : null,
|
|
1508
|
+
type: 'checkbox',
|
|
1509
|
+
value: valueFn ? valueFn(row) : null,
|
|
1510
|
+
checked: selected
|
|
1511
|
+
})[0];
|
|
1512
|
+
}
|
|
1513
|
+
else if (type === 'type') {
|
|
1514
|
+
return 'select-checkbox';
|
|
1515
|
+
}
|
|
1516
|
+
else if (type === 'filter') {
|
|
1517
|
+
return '';
|
|
1518
|
+
}
|
|
1519
|
+
|
|
1520
|
+
return selected ? 'X' : '';
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
|
|
1524
|
+
// Legacy checkbox ordering
|
|
1525
|
+
DataTable.ext.order['select-checkbox'] = function (settings, col) {
|
|
1526
|
+
return this.api()
|
|
1527
|
+
.column(col, { order: 'index' })
|
|
1528
|
+
.nodes()
|
|
1529
|
+
.map(function (td) {
|
|
1530
|
+
if (settings._select.items === 'row') {
|
|
1531
|
+
return $(td).parent().hasClass(settings._select.className);
|
|
1532
|
+
}
|
|
1533
|
+
else if (settings._select.items === 'cell') {
|
|
1534
|
+
return $(td).hasClass(settings._select.className);
|
|
1535
|
+
}
|
|
1536
|
+
return false;
|
|
1537
|
+
});
|
|
1538
|
+
};
|
|
1539
|
+
|
|
1365
1540
|
$.fn.DataTable.select = DataTable.select;
|
|
1366
1541
|
|
|
1367
1542
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Select for DataTables
|
|
1
|
+
/*! Select for DataTables 2.0.0
|
|
2
2
|
* © SpryMedia Ltd - datatables.net/license/mit
|
|
3
3
|
*/
|
|
4
|
-
!function(l){var s,c;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return l(e,window,document)}):"object"==typeof exports?(s=require("jquery"),c=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||s(e),c(e,t),l(t,e,e.document)}:(c(window,s),module.exports=l(s,window,window.document))):l(jQuery,window,document)}(function(m,i,e,h){"use strict";var _=m.fn.dataTable;function r(n,e,t){function l(t,l){l<t&&(e=l,l=t,t=e);var e,s=!1;return n.columns(":visible").indexes().filter(function(e){return e===t&&(s=!0),e===l?!(s=!1):s})}function s(t,l){var e,s=n.rows({search:"applied"}).indexes(),c=(s.indexOf(t)>s.indexOf(l)&&(e=l,l=t,t=e),!1);return s.filter(function(e){return e===t&&(c=!0),e===l?!(c=!1):c})}var c,t=n.cells({selected:!0}).any()||t?(c=l(t.column,e.column),s(t.row,e.row)):(c=l(0,e.column),s(0,e.row)),t=n.cells(t,c).flatten();n.cells(e,{selected:!0}).any()?n.cells(t).deselect():n.cells(t).select()}function s(e){var t=e.settings()[0]._select.selector;m(e.table().container()).off("mousedown.dtSelect",t).off("mouseup.dtSelect",t).off("click.dtSelect",t),m("body").off("click.dtSelect"+p(e.table().node()))}function c(o){var a,t=m(o.table().container()),l=o.settings()[0],s=l._select.selector;t.on("mousedown.dtSelect",s,function(e){(e.shiftKey||e.metaKey||e.ctrlKey)&&t.css("-moz-user-select","none").one("selectstart.dtSelect",s,function(){return!1}),i.getSelection&&(a=i.getSelection())}).on("mouseup.dtSelect",s,function(){t.css("-moz-user-select","")}).on("click.dtSelect",s,function(e){var t,l=o.select.items();if(a){var s=i.getSelection();if((!s.anchorNode||m(s.anchorNode).closest("table")[0]===o.table().node())&&s!==a)return}var c,s=o.settings()[0],n=o.settings()[0].oClasses.sWrapper.trim().replace(/ +/g,".");m(e.target).closest("div."+n)[0]==o.table().container()&&(n=o.cell(m(e.target).closest("td, th"))).any()&&(c=m.Event("user-select.dt"),u(o,c,[l,n,e]),c.isDefaultPrevented()||(c=n.index(),"row"===l?(t=c.row,w(e,o,s,"row",t)):"column"===l?(t=n.index().column,w(e,o,s,"column",t)):"cell"===l&&(t=n.index(),w(e,o,s,"cell",t)),s._select_lastCell=c))}),m("body").on("click.dtSelect"+p(o.table().node()),function(e){var t;!l._select.blurable||m(e.target).parents().filter(o.table().container()).length||0===m(e.target).parents("html").length||m(e.target).parents("div.DTE").length||(t=m.Event("select-blur.dt"),u(o,t,[e.target,e]),t.isDefaultPrevented()||f(l,!0))})}function u(e,t,l,s){s&&!e.flatten().length||("string"==typeof t&&(t+=".dt"),l.unshift(e),m(e.table().node()).trigger(t,l))}function n(o){var i=new _.Api(o);o._select_init=!0,o.aoRowCreatedCallback.push({fn:function(e,t,l){var s,c,n=o.aoData[l];for(n._select_selected&&m(e).addClass(o._select.className),s=0,c=o.aoColumns.length;s<c;s++)(o.aoColumns[s]._select_selected||n._selected_cells&&n._selected_cells[s])&&m(n.anCells[s]).addClass(o._select.className)},sName:"select-deferRender"}),i.on("preXhr.dt.dtSelect",function(e,t){var l,s;t===i.settings()[0]&&(l=i.rows({selected:!0}).ids(!0).filter(function(e){return e!==h}),s=i.cells({selected:!0}).eq(0).map(function(e){var t=i.row(e.row).id(!0);return t?{row:t,column:e.column}:h}).filter(function(e){return e!==h}),i.one("draw.dt.dtSelect",function(){i.rows(l).select(),s.any()&&s.each(function(e){i.cells(e.row,e.column).select()})}))}),i.on("draw.dtSelect.dt select.dtSelect.dt deselect.dtSelect.dt info.dt",function(){var s,c,n,o,a,e;(e=(s=i).settings()[0])._select.info&&e.aanFeatures.i&&"api"!==s.select.style()&&(c=s.rows({selected:!0}).flatten().length,n=s.columns({selected:!0}).flatten().length,o=s.cells({selected:!0}).flatten().length,a=function(e,t,l){e.append(m('<span class="select-item"/>').append(s.i18n("select."+t+"s",{_:"%d "+t+"s selected",0:"",1:"1 "+t+" selected"},l)))},m.each(e.aanFeatures.i,function(e,t){t=m(t);var l=m('<span class="select-info"/>'),s=(a(l,"row",c),a(l,"column",n),a(l,"cell",o),t.children("span.select-info"));s.length&&s.remove(),""!==l.text()&&t.append(l)})),i.state.save()}),i.on("destroy.dtSelect",function(){m(i.rows({selected:!0}).nodes()).removeClass(i.settings()[0]._select.className),s(i),i.off(".dtSelect"),m("body").off(".dtSelect"+p(i.table().node()))})}function d(e,t,l,s){var c,n=e[t+"s"]({search:"applied"}).indexes(),s=m.inArray(s,n),o=m.inArray(l,n);e[t+"s"]({selected:!0}).any()||-1!==s?(o<s&&(c=o,o=s,s=c),n.splice(o+1,n.length),n.splice(0,s)):n.splice(m.inArray(l,n)+1,n.length),e[t](l,{selected:!0}).any()?(n.splice(m.inArray(l,n),1),e[t+"s"](n).deselect()):e[t+"s"](n).select()}function f(e,t){!t&&"single"!==e._select.style||((t=new _.Api(e)).rows({selected:!0}).deselect(),t.columns({selected:!0}).deselect(),t.cells({selected:!0}).deselect())}function w(e,t,l,s,c){var n=t.select.style(),o=t.select.toggleable(),a=t[s](c,{selected:!0}).any();a&&!o||("os"===n?e.ctrlKey||e.metaKey?t[s](c).select(!a):e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):d(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):(o=t[s+"s"]({selected:!0}),a&&1===o.flatten().length?t[s](c).deselect():(o.deselect(),t[s](c).select())):"multi+shift"==n&&e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):d(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):t[s](c).select(!a))}function p(e){return e.id.replace(/[^a-zA-Z0-9\-\_]/g,"-")}_.select={},_.select.version="1.7.0",_.select.init=function(c){var e,t,l,s,n,o,a,i,r,u,d,f=c.settings()[0];f._select||(e=c.state.loaded(),t=function(e,t,l){if(null!==l&&l.select!==h){if(c.rows({selected:!0}).any()&&c.rows().deselect(),l.select.rows!==h&&c.rows(l.select.rows).select(),c.columns({selected:!0}).any()&&c.columns().deselect(),l.select.columns!==h&&c.columns(l.select.columns).select(),c.cells({selected:!0}).any()&&c.cells().deselect(),l.select.cells!==h)for(var s=0;s<l.select.cells.length;s++)c.cell(l.select.cells[s].row,l.select.cells[s].column).select();c.state.save()}},c.on("stateSaveParams",function(e,t,l){l.select={},l.select.rows=c.rows({selected:!0}).ids(!0).toArray(),l.select.columns=c.columns({selected:!0})[0],l.select.cells=c.cells({selected:!0})[0].map(function(e){return{row:c.row(e.row).id(!0),column:e.column}})}).on("stateLoadParams",t).one("init",function(){t(0,0,e)}),s=f.oInit.select,l=_.defaults.select,l=s===h?l:s,s="row",i=a=!(o=!(n="api")),r="td, th",d=!(u="selected"),f._select={},!0===l?(n="os",d=!0):"string"==typeof l?(n=l,d=!0):m.isPlainObject(l)&&(l.blurable!==h&&(o=l.blurable),l.toggleable!==h&&(a=l.toggleable),l.info!==h&&(i=l.info),l.items!==h&&(s=l.items),d=(n=l.style!==h?l.style:"os",!0),l.selector!==h&&(r=l.selector),l.className!==h&&(u=l.className)),c.select.selector(r),c.select.items(s),c.select.style(n),c.select.blurable(o),c.select.toggleable(a),c.select.info(i),f._select.className=u,m.fn.dataTable.ext.order["select-checkbox"]=function(t,e){return this.api().column(e,{order:"index"}).nodes().map(function(e){return"row"===t._select.items?m(e).parent().hasClass(t._select.className):"cell"===t._select.items&&m(e).hasClass(t._select.className)})},!d&&m(c.table().node()).hasClass("selectable")&&c.select.style("os"))},m.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(e,i){_.ext.selector[i.type].push(function(e,t,l){var s,c=t.selected,n=[];if(!0!==c&&!1!==c)return l;for(var o=0,a=l.length;o<a;o++)s=e[i.prop][l[o]],(!0===c&&!0===s._select_selected||!1===c&&!s._select_selected)&&n.push(l[o]);return n})}),_.ext.selector.cell.push(function(e,t,l){var s,c=t.selected,n=[];if(c===h)return l;for(var o=0,a=l.length;o<a;o++)s=e.aoData[l[o].row],(!0!==c||!s._selected_cells||!0!==s._selected_cells[l[o].column])&&(!1!==c||s._selected_cells&&s._selected_cells[l[o].column])||n.push(l[o]);return n});var t=_.Api.register,l=_.Api.registerPlural;function o(t,l){return function(e){return e.i18n("buttons."+t,l)}}function a(e){e=e._eventNamespace;return"draw.dt.DT"+e+" select.dt.DT"+e+" deselect.dt.DT"+e}t("select()",function(){return this.iterator("table",function(e){_.select.init(new _.Api(e))})}),t("select.blurable()",function(t){return t===h?this.context[0]._select.blurable:this.iterator("table",function(e){e._select.blurable=t})}),t("select.toggleable()",function(t){return t===h?this.context[0]._select.toggleable:this.iterator("table",function(e){e._select.toggleable=t})}),t("select.info()",function(t){return t===h?this.context[0]._select.info:this.iterator("table",function(e){e._select.info=t})}),t("select.items()",function(t){return t===h?this.context[0]._select.items:this.iterator("table",function(e){e._select.items=t,u(new _.Api(e),"selectItems",[t])})}),t("select.style()",function(l){return l===h?this.context[0]._select.style:this.iterator("table",function(e){e._select||_.select.init(new _.Api(e)),e._select_init||n(e),e._select.style=l;var t=new _.Api(e);s(t),"api"!==l&&c(t),u(new _.Api(e),"selectStyle",[l])})}),t("select.selector()",function(t){return t===h?this.context[0]._select.selector:this.iterator("table",function(e){s(new _.Api(e)),e._select.selector=t,"api"!==e._select.style&&c(new _.Api(e))})}),l("rows().select()","row().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("row",function(e,t){f(e),e.aoData[t]._select_selected=!0,m(e.aoData[t].nTr).addClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"select",["row",l[t]],!0)}),this)}),t("row().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoData[this[0]]&&e.aoData[this[0]]._select_selected)}),l("columns().select()","column().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("column",function(e,t){f(e),e.aoColumns[t]._select_selected=!0;t=new _.Api(e).column(t);m(t.header()).addClass(e._select.className),m(t.footer()).addClass(e._select.className),t.nodes().to$().addClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"select",["column",l[t]],!0)}),this)}),t("column().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoColumns[this[0]]&&e.aoColumns[this[0]]._select_selected)}),l("cells().select()","cell().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("cell",function(e,t,l){f(e);t=e.aoData[t];t._selected_cells===h&&(t._selected_cells=[]),t._selected_cells[l]=!0,t.anCells&&m(t.anCells[l]).addClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"select",["cell",l.cells(l[t]).indexes().toArray()],!0)}),this)}),t("cell().selected()",function(){var e=this.context[0];if(e&&this.length){e=e.aoData[this[0][0].row];if(e&&e._selected_cells&&e._selected_cells[this[0][0].column])return!0}return!1}),l("rows().deselect()","row().deselect()",function(){var l=this;return this.iterator("row",function(e,t){e.aoData[t]._select_selected=!1,e._select_lastCell=null,m(e.aoData[t].nTr).removeClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"deselect",["row",l[t]],!0)}),this}),l("columns().deselect()","column().deselect()",function(){var l=this;return this.iterator("column",function(s,e){s.aoColumns[e]._select_selected=!1;var t=new _.Api(s),l=t.column(e);m(l.header()).removeClass(s._select.className),m(l.footer()).removeClass(s._select.className),t.cells(null,e).indexes().each(function(e){var t=s.aoData[e.row],l=t._selected_cells;!t.anCells||l&&l[e.column]||m(t.anCells[e.column]).removeClass(s._select.className)})}),this.iterator("table",function(e,t){u(l,"deselect",["column",l[t]],!0)}),this}),l("cells().deselect()","cell().deselect()",function(){var l=this;return this.iterator("cell",function(e,t,l){t=e.aoData[t];t._selected_cells!==h&&(t._selected_cells[l]=!1),t.anCells&&!e.aoColumns[l]._select_selected&&m(t.anCells[l]).removeClass(e._select.className)}),this.iterator("table",function(e,t){u(l,"deselect",["cell",l[t]],!0)}),this});var v=0;return m.extend(_.ext.buttons,{selected:{text:o("selected","Selected"),className:"buttons-selected",limitTo:["rows","columns","cells"],init:function(l,e,s){var c=this;s._eventNamespace=".select"+v++,l.on(a(s),function(){var e,t;c.enable((e=l,t=s,!(-1===m.inArray("rows",t.limitTo)||!e.rows({selected:!0}).any())||(!(-1===m.inArray("columns",t.limitTo)||!e.columns({selected:!0}).any())||!(-1===m.inArray("cells",t.limitTo)||!e.cells({selected:!0}).any()))))}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectedSingle:{text:o("selectedSingle","Selected single"),className:"buttons-selected-single",init:function(t,e,l){var s=this;l._eventNamespace=".select"+v++,t.on(a(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(1===e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectAll:{text:o("selectAll","Select all"),className:"buttons-select-all",action:function(e,t,l,s){var c=this.select.items(),n=s.selectorModifier;(n?("function"==typeof n&&(n=n.call(t,e,t,l,s)),this[c+"s"](n)):this[c+"s"]()).select()}},selectNone:{text:o("selectNone","Deselect all"),className:"buttons-select-none",action:function(){f(this.settings()[0],!0)},init:function(t,e,l){var s=this;l._eventNamespace=".select"+v++,t.on(a(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(0<e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},showSelected:{text:o("showSelected","Show only selected"),className:"buttons-show-selected",action:function(e,s,t,l){var c;l._filter?(-1!==(c=_.ext.search.indexOf(l._filter))&&(_.ext.search.splice(c,1),l._filter=null),this.active(!1)):(l._filter=c=function(e,t,l){return e!==s.settings()[0]||e.aoData[l]._select_selected},_.ext.search.push(c),this.active(!0)),s.draw()}}}),m.each(["Row","Column","Cell"],function(e,t){var c=t.toLowerCase();_.ext.buttons["select"+t+"s"]={text:o("select"+t+"s","Select "+c+"s"),className:"buttons-select-"+c+"s",action:function(){this.select.items(c)},init:function(e){var s=this;e.on("selectItems.dt.DT",function(e,t,l){s.active(l===c)})}}}),m.fn.DataTable.select=_.select,m(e).on("preInit.dt.dtSelect",function(e,t){"dt"===e.namespace&&_.select.init(new _.Api(t))}),_});
|
|
4
|
+
!function(l){var s,c;"function"==typeof define&&define.amd?define(["jquery","datatables.net"],function(e){return l(e,window,document)}):"object"==typeof exports?(s=require("jquery"),c=function(e,t){t.fn.dataTable||require("datatables.net")(e,t)},"undefined"==typeof window?module.exports=function(e,t){return e=e||window,t=t||s(e),c(e,t),l(t,e,e.document)}:(c(window,s),module.exports=l(s,window,window.document))):l(jQuery,window,document)}(function(m,i,e){"use strict";var _=m.fn.dataTable;function r(n,e,t){function l(t,l){l<t&&(e=l,l=t,t=e);var e,s=!1;return n.columns(":visible").indexes().filter(function(e){return e===t&&(s=!0),e===l?!(s=!1):s})}function s(t,l){var e,s=n.rows({search:"applied"}).indexes(),c=(s.indexOf(t)>s.indexOf(l)&&(e=l,l=t,t=e),!1);return s.filter(function(e){return e===t&&(c=!0),e===l?!(c=!1):c})}var c,t=n.cells({selected:!0}).any()||t?(c=l(t.column,e.column),s(t.row,e.row)):(c=l(0,e.column),s(0,e.row)),t=n.cells(t,c).flatten();n.cells(e,{selected:!0}).any()?n.cells(t).deselect():n.cells(t).select()}function s(e){var t=e.settings()[0]._select.selector;m(e.table().container()).off("mousedown.dtSelect",t).off("mouseup.dtSelect",t).off("click.dtSelect",t),m("body").off("click.dtSelect"+v(e.table().node()))}function n(o){var a,t=m(o.table().container()),l=o.settings()[0],s=l._select.selector;t.on("mousedown.dtSelect",s,function(e){(e.shiftKey||e.metaKey||e.ctrlKey)&&t.css("-moz-user-select","none").one("selectstart.dtSelect",s,function(){return!1}),i.getSelection&&(a=i.getSelection())}).on("mouseup.dtSelect",s,function(){t.css("-moz-user-select","")}).on("click.dtSelect",s,function(e){var t,l=o.select.items();if(a){var s=i.getSelection();if((!s.anchorNode||m(s.anchorNode).closest("table")[0]===o.table().node())&&s!==a)return}var c,s=o.settings()[0],n=o.table().container();m(e.target).closest("div.dt-container")[0]==n&&(n=o.cell(m(e.target).closest("td, th"))).any()&&(c=m.Event("user-select.dt"),d(o,c,[l,n,e]),c.isDefaultPrevented()||(c=n.index(),"row"===l?(t=c.row,h(e,o,s,"row",t)):"column"===l?(t=n.index().column,h(e,o,s,"column",t)):"cell"===l&&(t=n.index(),h(e,o,s,"cell",t)),s._select_lastCell=c))}),m("body").on("click.dtSelect"+v(o.table().node()),function(e){var t;!l._select.blurable||m(e.target).parents().filter(o.table().container()).length||0===m(e.target).parents("html").length||m(e.target).parents("div.DTE").length||(t=m.Event("select-blur.dt"),d(o,t,[e.target,e]),t.isDefaultPrevented())||f(l,!0)})}function d(e,t,l,s){s&&!e.flatten().length||("string"==typeof t&&(t+=".dt"),l.unshift(e),m(e.table().node()).trigger(t,l))}function a(s,e){var t,l,c,n,o;"api"!==s.select.style()&&!1!==s.select.info()&&(o=s.rows({selected:!0}).flatten().length,t=s.columns({selected:!0}).flatten().length,l=s.cells({selected:!0}).flatten().length,c=function(e,t,l){e.append(m('<span class="select-item"/>').append(s.i18n("select."+t+"s",{_:"%d "+t+"s selected",0:"",1:"1 "+t+" selected"},l)))},e=m(e),c(n=m('<span class="select-info"/>'),"row",o),c(n,"column",t),c(n,"cell",l),(o=e.children("span.select-info")).length&&o.remove(),""!==n.text())&&e.append(n)}function p(o){o.columns(".dt-select").every(function(){var n,e=this.header();m("input",e).length||(n=m("<input>").attr({class:"dt-select-checkbox",type:"checkbox","aria-label":o.i18n("select.aria.headerCheckbox")||"Select all rows"}).appendTo(e).on("change",function(){this.checked?o.rows({search:"applied"}).select():o.rows({selected:!0}).deselect()}).on("click",function(e){e.stopPropagation()}),o.on("draw select deselect",function(e,t,l){var s,c;"row"!==l&&l||(l=o.rows({selected:!0}).count(),s=o.rows({search:"applied",selected:!0}).count(),c=o.rows({search:"applied"}).count(),s&&s<=l&&s===c?n.prop("checked",!0).prop("indeterminate",!1):0===s&&0===l?n.prop("checked",!1).prop("indeterminate",!1):n.prop("checked",!1).prop("indeterminate",!0))}))})}function u(e,t,l,s){var c,n=e[t+"s"]({search:"applied"}).indexes(),s=n.indexOf(s),o=n.indexOf(l);e[t+"s"]({selected:!0}).any()||-1!==s?(o<s&&(c=o,o=s,s=c),n.splice(o+1,n.length),n.splice(0,s)):n.splice(n.indexOf(l)+1,n.length),e[t](l,{selected:!0}).any()?(n.splice(n.indexOf(l),1),e[t+"s"](n).deselect()):e[t+"s"](n).select()}function f(e,t){!t&&"single"!==e._select.style||((t=new _.Api(e)).rows({selected:!0}).deselect(),t.columns({selected:!0}).deselect(),t.cells({selected:!0}).deselect())}function h(e,t,l,s,c){var n=t.select.style(),o=t.select.toggleable(),a=t[s](c,{selected:!0}).any();a&&!o||("os"===n?e.ctrlKey||e.metaKey?t[s](c).select(!a):e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):u(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):(o=t[s+"s"]({selected:!0}),a&&1===o.flatten().length?t[s](c).deselect():(o.deselect(),t[s](c).select())):"multi+shift"==n&&e.shiftKey?"cell"===s?r(t,c,l._select_lastCell||null):u(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):t[s](c).select(!a))}function v(e){return e.id.replace(/[^a-zA-Z0-9\-\_]/g,"-")}_.select={},_.select.version="2.0.0",_.select.init=function(c){var e,t,l,s,n,o,a,i,r,d,u,f,h=c.settings()[0];if(!_.versionCheck("2"))throw"Warning: Select requires DataTables 2 or newer";h._select||(e=c.state.loaded(),t=function(e,t,l){if(null!==l&&void 0!==l.select){if(c.rows({selected:!0}).any()&&c.rows().deselect(),void 0!==l.select.rows&&c.rows(l.select.rows).select(),c.columns({selected:!0}).any()&&c.columns().deselect(),void 0!==l.select.columns&&c.columns(l.select.columns).select(),c.cells({selected:!0}).any()&&c.cells().deselect(),void 0!==l.select.cells)for(var s=0;s<l.select.cells.length;s++)c.cell(l.select.cells[s].row,l.select.cells[s].column).select();c.state.save()}},c.on("stateSaveParams",function(e,t,l){l.select={},l.select.rows=c.rows({selected:!0}).ids(!0).toArray(),l.select.columns=c.columns({selected:!0})[0],l.select.cells=c.cells({selected:!0})[0].map(function(e){return{row:c.row(e.row).id(!0),column:e.column}})}).on("stateLoadParams",t).one("init",function(){t(0,0,e)}),s=h.oInit.select,l=_.defaults.select,l=void 0===s?l:s,s="row",r="td, th",d="selected",f=!(u=i=a=!(o=!(n="api"))),h._select={infoEls:[]},!0===l?(n="os",f=!0):"string"==typeof l?(n=l,f=!0):m.isPlainObject(l)&&(void 0!==l.blurable&&(o=l.blurable),void 0!==l.toggleable&&(a=l.toggleable),void 0!==l.info&&(i=l.info),void 0!==l.items&&(s=l.items),f=(n=void 0!==l.style?l.style:"os",!0),void 0!==l.selector&&(r=l.selector),void 0!==l.className&&(d=l.className),void 0!==l.headerCheckbox)&&(u=l.headerCheckbox),c.select.selector(r),c.select.items(s),c.select.style(n),c.select.blurable(o),c.select.toggleable(a),c.select.info(i),h._select.className=d,!f&&m(c.table().node()).hasClass("selectable")&&c.select.style("os"),u&&(p(c),c.on("init",function(){p(c)})))},m.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(e,i){_.ext.selector[i.type].push(function(e,t,l){var s,c=t.selected,n=[];if(!0!==c&&!1!==c)return l;for(var o=0,a=l.length;o<a;o++)(s=e[i.prop][l[o]])&&(!0===c&&!0===s._select_selected||!1===c&&!s._select_selected)&&n.push(l[o]);return n})}),_.ext.selector.cell.push(function(e,t,l){var s,c=t.selected,n=[];if(void 0===c)return l;for(var o=0,a=l.length;o<a;o++)(s=e.aoData[l[o].row])&&(!0===c&&s._selected_cells&&!0===s._selected_cells[l[o].column]||!1===c&&(!s._selected_cells||!s._selected_cells[l[o].column]))&&n.push(l[o]);return n});var t=_.Api.register,l=_.Api.registerPlural;function o(t,l){return function(e){return e.i18n("buttons."+t,l)}}function w(e){e=e._eventNamespace;return"draw.dt.DT"+e+" select.dt.DT"+e+" deselect.dt.DT"+e}t("select()",function(){return this.iterator("table",function(e){_.select.init(new _.Api(e))})}),t("select.blurable()",function(t){return void 0===t?this.context[0]._select.blurable:this.iterator("table",function(e){e._select.blurable=t})}),t("select.toggleable()",function(t){return void 0===t?this.context[0]._select.toggleable:this.iterator("table",function(e){e._select.toggleable=t})}),t("select.info()",function(t){return void 0===t?this.context[0]._select.info:this.iterator("table",function(e){e._select.info=t})}),t("select.items()",function(t){return void 0===t?this.context[0]._select.items:this.iterator("table",function(e){e._select.items=t,d(new _.Api(e),"selectItems",[t])})}),t("select.style()",function(l){return void 0===l?this.context[0]._select.style:this.iterator("table",function(e){e._select||_.select.init(new _.Api(e)),e._select_init||(o=e,c=new _.Api(o),o._select_init=!0,o.aoRowCreatedCallback.push(function(e,t,l){var s,c,n=o.aoData[l];for(n._select_selected&&m(e).addClass(o._select.className),s=0,c=o.aoColumns.length;s<c;s++)(o.aoColumns[s]._select_selected||n._selected_cells&&n._selected_cells[s])&&m(n.anCells[s]).addClass(o._select.className)}),c.on("preXhr.dt.dtSelect",function(e,t){var l,s;t===c.settings()[0]&&(l=c.rows({selected:!0}).ids(!0).filter(function(e){return void 0!==e}),s=c.cells({selected:!0}).eq(0).map(function(e){var t=c.row(e.row).id(!0);return t?{row:t,column:e.column}:void 0}).filter(function(e){return void 0!==e}),c.one("draw.dt.dtSelect",function(){c.rows(l).select(),s.any()&&s.each(function(e){c.cells(e.row,e.column).select()})}))}),c.on("info.dt",function(e,t,l){t._select.infoEls.includes(l)||t._select.infoEls.push(l),a(c,l)}),c.on("select.dtSelect.dt deselect.dtSelect.dt",function(){o._select.infoEls.forEach(function(e){a(c,e)}),c.state.save()}),c.on("destroy.dtSelect",function(){m(c.rows({selected:!0}).nodes()).removeClass(c.settings()[0]._select.className),s(c),c.off(".dtSelect"),m("body").off(".dtSelect"+v(c.table().node()))})),e._select.style=l;var o,c,t=new _.Api(e);s(t),"api"!==l&&n(t),d(new _.Api(e),"selectStyle",[l])})}),t("select.selector()",function(t){return void 0===t?this.context[0]._select.selector:this.iterator("table",function(e){s(new _.Api(e)),e._select.selector=t,"api"!==e._select.style&&n(new _.Api(e))})}),t("select.last()",function(e){var t=this.context[0];return e?(t._select_lastCell=e,this):t._select_lastCell}),l("rows().select()","row().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("row",function(e,t){f(e);var l=e.aoData[t],s=e.aoColumns;m(l.nTr).addClass(e._select.className),l._select_selected=!0;for(var c=0;c<s.length;c++)"select-checkbox"===s[c].sType&&(m("input.dt-select-checkbox",l.anCells[c]).prop("checked",!0),l._aSortData[c]=null)}),this.iterator("table",function(e,t){d(l,"select",["row",l[t]],!0)}),this)}),t("row().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoData[this[0]]&&e.aoData[this[0]]._select_selected)}),l("columns().select()","column().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("column",function(e,t){f(e),e.aoColumns[t]._select_selected=!0;t=new _.Api(e).column(t);m(t.header()).addClass(e._select.className),m(t.footer()).addClass(e._select.className),t.nodes().to$().addClass(e._select.className)}),this.iterator("table",function(e,t){d(l,"select",["column",l[t]],!0)}),this)}),t("column().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoColumns[this[0]]&&e.aoColumns[this[0]]._select_selected)}),l("cells().select()","cell().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("cell",function(e,t,l){f(e);t=e.aoData[t];void 0===t._selected_cells&&(t._selected_cells=[]),t._selected_cells[l]=!0,t.anCells&&m(t.anCells[l]).addClass(e._select.className)}),this.iterator("table",function(e,t){d(l,"select",["cell",l.cells(l[t]).indexes().toArray()],!0)}),this)}),t("cell().selected()",function(){var e=this.context[0];if(e&&this.length){e=e.aoData[this[0][0].row];if(e&&e._selected_cells&&e._selected_cells[this[0][0].column])return!0}return!1}),l("rows().deselect()","row().deselect()",function(){var l=this;return this.iterator("row",function(e,t){var l=e.aoData[t],s=e.aoColumns;m(l.nTr).removeClass(e._select.className),l._select_selected=!1,e._select_lastCell=null;for(var c=0;c<s.length;c++)"select-checkbox"===s[c].sType&&(m("input.dt-select-checkbox",l.anCells[c]).prop("checked",!1),l._aSortData[c]=null)}),this.iterator("table",function(e,t){d(l,"deselect",["row",l[t]],!0)}),this}),l("columns().deselect()","column().deselect()",function(){var l=this;return this.iterator("column",function(s,e){s.aoColumns[e]._select_selected=!1;var t=new _.Api(s),l=t.column(e);m(l.header()).removeClass(s._select.className),m(l.footer()).removeClass(s._select.className),t.cells(null,e).indexes().each(function(e){var t=s.aoData[e.row],l=t._selected_cells;!t.anCells||l&&l[e.column]||m(t.anCells[e.column]).removeClass(s._select.className)})}),this.iterator("table",function(e,t){d(l,"deselect",["column",l[t]],!0)}),this}),l("cells().deselect()","cell().deselect()",function(){var l=this;return this.iterator("cell",function(e,t,l){t=e.aoData[t];void 0!==t._selected_cells&&(t._selected_cells[l]=!1),t.anCells&&!e.aoColumns[l]._select_selected&&m(t.anCells[l]).removeClass(e._select.className)}),this.iterator("table",function(e,t){d(l,"deselect",["cell",l[t]],!0)}),this});var b=0;return m.extend(_.ext.buttons,{selected:{text:o("selected","Selected"),className:"buttons-selected",limitTo:["rows","columns","cells"],init:function(l,e,s){var c=this;s._eventNamespace=".select"+b++,l.on(w(s),function(){var e,t;c.enable((e=l,!(-1===(t=s).limitTo.indexOf("rows")||!e.rows({selected:!0}).any())||!(-1===t.limitTo.indexOf("columns")||!e.columns({selected:!0}).any())||!(-1===t.limitTo.indexOf("cells")||!e.cells({selected:!0}).any())))}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectedSingle:{text:o("selectedSingle","Selected single"),className:"buttons-selected-single",init:function(t,e,l){var s=this;l._eventNamespace=".select"+b++,t.on(w(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(1===e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectAll:{text:o("selectAll","Select all"),className:"buttons-select-all",action:function(e,t,l,s){var c=this.select.items(),n=s.selectorModifier;(n?("function"==typeof n&&(n=n.call(t,e,t,l,s)),this[c+"s"](n)):this[c+"s"]()).select()}},selectNone:{text:o("selectNone","Deselect all"),className:"buttons-select-none",action:function(){f(this.settings()[0],!0)},init:function(t,e,l){var s=this;l._eventNamespace=".select"+b++,t.on(w(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(0<e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},showSelected:{text:o("showSelected","Show only selected"),className:"buttons-show-selected",action:function(e,t){var s;t.search.fixed("dt-select")?(t.search.fixed("dt-select",null),this.active(!1)):(s=t.settings()[0].aoData,t.search.fixed("dt-select",function(e,t,l){return s[l]._select_selected}),this.active(!0)),t.draw()}}}),m.each(["Row","Column","Cell"],function(e,t){var c=t.toLowerCase();_.ext.buttons["select"+t+"s"]={text:o("select"+t+"s","Select "+c+"s"),className:"buttons-select-"+c+"s",action:function(){this.select.items(c)},init:function(e){var s=this;e.on("selectItems.dt.DT",function(e,t,l){s.active(l===c)})}}}),_.type("select-checkbox",{className:"dt-select",detect:function(e){return"select-checkbox"===e&&e},order:{pre:function(e){return"X"===e?-1:0}}}),m.extend(!0,_.defaults.oLanguage,{select:{aria:{rowCheckbox:"Select row"}}}),_.render.select=function(e,t){var n=e?_.util.get(e):null,o=t?_.util.get(t):null;return function(e,t,l,s){var c=s.settings.aoData[s.row]._select_selected,s=s.settings.oLanguage.select.aria.rowCheckbox;return"display"===t?m("<input>").attr({"aria-label":s,class:"dt-select-checkbox",name:o?o(l):null,type:"checkbox",value:n?n(l):null,checked:c})[0]:"type"===t?"select-checkbox":"filter"!==t&&c?"X":""}},_.ext.order["select-checkbox"]=function(t,e){return this.api().column(e,{order:"index"}).nodes().map(function(e){return"row"===t._select.items?m(e).parent().hasClass(t._select.className):"cell"===t._select.items&&m(e).hasClass(t._select.className)})},m.fn.DataTable.select=_.select,m(e).on("preInit.dt.dtSelect",function(e,t){"dt"===e.namespace&&_.select.init(new _.Api(t))}),_});
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Select for DataTables
|
|
1
|
+
/*! Select for DataTables 2.0.0
|
|
2
2
|
* © SpryMedia Ltd - datatables.net/license/mit
|
|
3
3
|
*/
|
|
4
|
-
import jQuery from"jquery";import DataTable from"datatables.net";let $=jQuery;function cellRange(n,e,t){function l(t,l){l<t&&(e=l,l=t,t=e);var e,s=!1;return n.columns(":visible").indexes().filter(function(e){return e===t&&(s=!0),e===l?!(s=!1):s})}function s(t,l){var e,s=n.rows({search:"applied"}).indexes(),c=(s.indexOf(t)>s.indexOf(l)&&(e=l,l=t,t=e),!1);return s.filter(function(e){return e===t&&(c=!0),e===l?!(c=!1):c})}var c,t=n.cells({selected:!0}).any()||t?(c=l(t.column,e.column),s(t.row,e.row)):(c=l(0,e.column),s(0,e.row)),t=n.cells(t,c).flatten();n.cells(e,{selected:!0}).any()?n.cells(t).deselect():n.cells(t).select()}function disableMouseSelection(e){var t=e.settings()[0]._select.selector;$(e.table().container()).off("mousedown.dtSelect",t).off("mouseup.dtSelect",t).off("click.dtSelect",t),$("body").off("click.dtSelect"+_safeId(e.table().node()))}function enableMouseSelection(a){var o,t=$(a.table().container()),l=a.settings()[0],s=l._select.selector;t.on("mousedown.dtSelect",s,function(e){(e.shiftKey||e.metaKey||e.ctrlKey)&&t.css("-moz-user-select","none").one("selectstart.dtSelect",s,function(){return!1}),window.getSelection&&(o=window.getSelection())}).on("mouseup.dtSelect",s,function(){t.css("-moz-user-select","")}).on("click.dtSelect",s,function(e){var t,l=a.select.items();if(o){var s=window.getSelection();if((!s.anchorNode||$(s.anchorNode).closest("table")[0]===a.table().node())&&s!==o)return}var c,s=a.settings()[0],n=a.settings()[0].oClasses.sWrapper.trim().replace(/ +/g,".");$(e.target).closest("div."+n)[0]==a.table().container()&&(n=a.cell($(e.target).closest("td, th"))).any()&&(c=$.Event("user-select.dt"),eventTrigger(a,c,[l,n,e]),c.isDefaultPrevented()||(c=n.index(),"row"===l?(t=c.row,typeSelect(e,a,s,"row",t)):"column"===l?(t=n.index().column,typeSelect(e,a,s,"column",t)):"cell"===l&&(t=n.index(),typeSelect(e,a,s,"cell",t)),s._select_lastCell=c))}),$("body").on("click.dtSelect"+_safeId(a.table().node()),function(e){var t;!l._select.blurable||$(e.target).parents().filter(a.table().container()).length||0===$(e.target).parents("html").length||$(e.target).parents("div.DTE").length||(t=$.Event("select-blur.dt"),eventTrigger(a,t,[e.target,e]),t.isDefaultPrevented()||clear(l,!0))})}function eventTrigger(e,t,l,s){s&&!e.flatten().length||("string"==typeof t&&(t+=".dt"),l.unshift(e),$(e.table().node()).trigger(t,l))}function info(s){var c,n,a,o,e=s.settings()[0];e._select.info&&e.aanFeatures.i&&"api"!==s.select.style()&&(c=s.rows({selected:!0}).flatten().length,n=s.columns({selected:!0}).flatten().length,a=s.cells({selected:!0}).flatten().length,o=function(e,t,l){e.append($('<span class="select-item"/>').append(s.i18n("select."+t+"s",{_:"%d "+t+"s selected",0:"",1:"1 "+t+" selected"},l)))},$.each(e.aanFeatures.i,function(e,t){t=$(t);var l=$('<span class="select-info"/>'),s=(o(l,"row",c),o(l,"column",n),o(l,"cell",a),t.children("span.select-info"));s.length&&s.remove(),""!==l.text()&&t.append(l)}))}function init(a){var c=new DataTable.Api(a);a._select_init=!0,a.aoRowCreatedCallback.push({fn:function(e,t,l){var s,c,n=a.aoData[l];for(n._select_selected&&$(e).addClass(a._select.className),s=0,c=a.aoColumns.length;s<c;s++)(a.aoColumns[s]._select_selected||n._selected_cells&&n._selected_cells[s])&&$(n.anCells[s]).addClass(a._select.className)},sName:"select-deferRender"}),c.on("preXhr.dt.dtSelect",function(e,t){var l,s;t===c.settings()[0]&&(l=c.rows({selected:!0}).ids(!0).filter(function(e){return void 0!==e}),s=c.cells({selected:!0}).eq(0).map(function(e){var t=c.row(e.row).id(!0);return t?{row:t,column:e.column}:void 0}).filter(function(e){return void 0!==e}),c.one("draw.dt.dtSelect",function(){c.rows(l).select(),s.any()&&s.each(function(e){c.cells(e.row,e.column).select()})}))}),c.on("draw.dtSelect.dt select.dtSelect.dt deselect.dtSelect.dt info.dt",function(){info(c),c.state.save()}),c.on("destroy.dtSelect",function(){$(c.rows({selected:!0}).nodes()).removeClass(c.settings()[0]._select.className),disableMouseSelection(c),c.off(".dtSelect"),$("body").off(".dtSelect"+_safeId(c.table().node()))})}function rowColumnRange(e,t,l,s){var c,n=e[t+"s"]({search:"applied"}).indexes(),s=$.inArray(s,n),a=$.inArray(l,n);e[t+"s"]({selected:!0}).any()||-1!==s?(a<s&&(c=a,a=s,s=c),n.splice(a+1,n.length),n.splice(0,s)):n.splice($.inArray(l,n)+1,n.length),e[t](l,{selected:!0}).any()?(n.splice($.inArray(l,n),1),e[t+"s"](n).deselect()):e[t+"s"](n).select()}function clear(e,t){!t&&"single"!==e._select.style||((t=new DataTable.Api(e)).rows({selected:!0}).deselect(),t.columns({selected:!0}).deselect(),t.cells({selected:!0}).deselect())}function typeSelect(e,t,l,s,c){var n=t.select.style(),a=t.select.toggleable(),o=t[s](c,{selected:!0}).any();o&&!a||("os"===n?e.ctrlKey||e.metaKey?t[s](c).select(!o):e.shiftKey?"cell"===s?cellRange(t,c,l._select_lastCell||null):rowColumnRange(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):(a=t[s+"s"]({selected:!0}),o&&1===a.flatten().length?t[s](c).deselect():(a.deselect(),t[s](c).select())):"multi+shift"==n&&e.shiftKey?"cell"===s?cellRange(t,c,l._select_lastCell||null):rowColumnRange(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):t[s](c).select(!o))}function _safeId(e){return e.id.replace(/[^a-zA-Z0-9\-\_]/g,"-")}DataTable.select={},DataTable.select.version="1.7.0",DataTable.select.init=function(c){var e,t,l,s,n,a,o,i,r,u,d,f=c.settings()[0];f._select||(e=c.state.loaded(),t=function(e,t,l){if(null!==l&&void 0!==l.select){if(c.rows({selected:!0}).any()&&c.rows().deselect(),void 0!==l.select.rows&&c.rows(l.select.rows).select(),c.columns({selected:!0}).any()&&c.columns().deselect(),void 0!==l.select.columns&&c.columns(l.select.columns).select(),c.cells({selected:!0}).any()&&c.cells().deselect(),void 0!==l.select.cells)for(var s=0;s<l.select.cells.length;s++)c.cell(l.select.cells[s].row,l.select.cells[s].column).select();c.state.save()}},c.on("stateSaveParams",function(e,t,l){l.select={},l.select.rows=c.rows({selected:!0}).ids(!0).toArray(),l.select.columns=c.columns({selected:!0})[0],l.select.cells=c.cells({selected:!0})[0].map(function(e){return{row:c.row(e.row).id(!0),column:e.column}})}).on("stateLoadParams",t).one("init",function(){t(0,0,e)}),s=f.oInit.select,l=DataTable.defaults.select,l=void 0===s?l:s,s="row",i=o=!(a=!(n="api")),r="td, th",d=!(u="selected"),f._select={},!0===l?(n="os",d=!0):"string"==typeof l?(n=l,d=!0):$.isPlainObject(l)&&(void 0!==l.blurable&&(a=l.blurable),void 0!==l.toggleable&&(o=l.toggleable),void 0!==l.info&&(i=l.info),void 0!==l.items&&(s=l.items),d=(n=void 0!==l.style?l.style:"os",!0),void 0!==l.selector&&(r=l.selector),void 0!==l.className&&(u=l.className)),c.select.selector(r),c.select.items(s),c.select.style(n),c.select.blurable(a),c.select.toggleable(o),c.select.info(i),f._select.className=u,$.fn.dataTable.ext.order["select-checkbox"]=function(t,e){return this.api().column(e,{order:"index"}).nodes().map(function(e){return"row"===t._select.items?$(e).parent().hasClass(t._select.className):"cell"===t._select.items&&$(e).hasClass(t._select.className)})},!d&&$(c.table().node()).hasClass("selectable")&&c.select.style("os"))},$.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(e,i){DataTable.ext.selector[i.type].push(function(e,t,l){var s,c=t.selected,n=[];if(!0!==c&&!1!==c)return l;for(var a=0,o=l.length;a<o;a++)s=e[i.prop][l[a]],(!0===c&&!0===s._select_selected||!1===c&&!s._select_selected)&&n.push(l[a]);return n})}),DataTable.ext.selector.cell.push(function(e,t,l){var s,c=t.selected,n=[];if(void 0===c)return l;for(var a=0,o=l.length;a<o;a++)s=e.aoData[l[a].row],(!0!==c||!s._selected_cells||!0!==s._selected_cells[l[a].column])&&(!1!==c||s._selected_cells&&s._selected_cells[l[a].column])||n.push(l[a]);return n});var apiRegister=DataTable.Api.register,apiRegisterPlural=DataTable.Api.registerPlural;function i18n(t,l){return function(e){return e.i18n("buttons."+t,l)}}function namespacedEvents(e){e=e._eventNamespace;return"draw.dt.DT"+e+" select.dt.DT"+e+" deselect.dt.DT"+e}function enabled(e,t){return!(-1===$.inArray("rows",t.limitTo)||!e.rows({selected:!0}).any())||(!(-1===$.inArray("columns",t.limitTo)||!e.columns({selected:!0}).any())||!(-1===$.inArray("cells",t.limitTo)||!e.cells({selected:!0}).any()))}apiRegister("select()",function(){return this.iterator("table",function(e){DataTable.select.init(new DataTable.Api(e))})}),apiRegister("select.blurable()",function(t){return void 0===t?this.context[0]._select.blurable:this.iterator("table",function(e){e._select.blurable=t})}),apiRegister("select.toggleable()",function(t){return void 0===t?this.context[0]._select.toggleable:this.iterator("table",function(e){e._select.toggleable=t})}),apiRegister("select.info()",function(t){return void 0===t?this.context[0]._select.info:this.iterator("table",function(e){e._select.info=t})}),apiRegister("select.items()",function(t){return void 0===t?this.context[0]._select.items:this.iterator("table",function(e){e._select.items=t,eventTrigger(new DataTable.Api(e),"selectItems",[t])})}),apiRegister("select.style()",function(l){return void 0===l?this.context[0]._select.style:this.iterator("table",function(e){e._select||DataTable.select.init(new DataTable.Api(e)),e._select_init||init(e),e._select.style=l;var t=new DataTable.Api(e);disableMouseSelection(t),"api"!==l&&enableMouseSelection(t),eventTrigger(new DataTable.Api(e),"selectStyle",[l])})}),apiRegister("select.selector()",function(t){return void 0===t?this.context[0]._select.selector:this.iterator("table",function(e){disableMouseSelection(new DataTable.Api(e)),e._select.selector=t,"api"!==e._select.style&&enableMouseSelection(new DataTable.Api(e))})}),apiRegisterPlural("rows().select()","row().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("row",function(e,t){clear(e),e.aoData[t]._select_selected=!0,$(e.aoData[t].nTr).addClass(e._select.className)}),this.iterator("table",function(e,t){eventTrigger(l,"select",["row",l[t]],!0)}),this)}),apiRegister("row().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoData[this[0]]&&e.aoData[this[0]]._select_selected)}),apiRegisterPlural("columns().select()","column().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("column",function(e,t){clear(e),e.aoColumns[t]._select_selected=!0;t=new DataTable.Api(e).column(t);$(t.header()).addClass(e._select.className),$(t.footer()).addClass(e._select.className),t.nodes().to$().addClass(e._select.className)}),this.iterator("table",function(e,t){eventTrigger(l,"select",["column",l[t]],!0)}),this)}),apiRegister("column().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoColumns[this[0]]&&e.aoColumns[this[0]]._select_selected)}),apiRegisterPlural("cells().select()","cell().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("cell",function(e,t,l){clear(e);t=e.aoData[t];void 0===t._selected_cells&&(t._selected_cells=[]),t._selected_cells[l]=!0,t.anCells&&$(t.anCells[l]).addClass(e._select.className)}),this.iterator("table",function(e,t){eventTrigger(l,"select",["cell",l.cells(l[t]).indexes().toArray()],!0)}),this)}),apiRegister("cell().selected()",function(){var e=this.context[0];if(e&&this.length){e=e.aoData[this[0][0].row];if(e&&e._selected_cells&&e._selected_cells[this[0][0].column])return!0}return!1}),apiRegisterPlural("rows().deselect()","row().deselect()",function(){var l=this;return this.iterator("row",function(e,t){e.aoData[t]._select_selected=!1,e._select_lastCell=null,$(e.aoData[t].nTr).removeClass(e._select.className)}),this.iterator("table",function(e,t){eventTrigger(l,"deselect",["row",l[t]],!0)}),this}),apiRegisterPlural("columns().deselect()","column().deselect()",function(){var l=this;return this.iterator("column",function(s,e){s.aoColumns[e]._select_selected=!1;var t=new DataTable.Api(s),l=t.column(e);$(l.header()).removeClass(s._select.className),$(l.footer()).removeClass(s._select.className),t.cells(null,e).indexes().each(function(e){var t=s.aoData[e.row],l=t._selected_cells;!t.anCells||l&&l[e.column]||$(t.anCells[e.column]).removeClass(s._select.className)})}),this.iterator("table",function(e,t){eventTrigger(l,"deselect",["column",l[t]],!0)}),this}),apiRegisterPlural("cells().deselect()","cell().deselect()",function(){var l=this;return this.iterator("cell",function(e,t,l){t=e.aoData[t];void 0!==t._selected_cells&&(t._selected_cells[l]=!1),t.anCells&&!e.aoColumns[l]._select_selected&&$(t.anCells[l]).removeClass(e._select.className)}),this.iterator("table",function(e,t){eventTrigger(l,"deselect",["cell",l[t]],!0)}),this});var _buttonNamespace=0;$.extend(DataTable.ext.buttons,{selected:{text:i18n("selected","Selected"),className:"buttons-selected",limitTo:["rows","columns","cells"],init:function(e,t,l){var s=this;l._eventNamespace=".select"+_buttonNamespace++,e.on(namespacedEvents(l),function(){s.enable(enabled(e,l))}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectedSingle:{text:i18n("selectedSingle","Selected single"),className:"buttons-selected-single",init:function(t,e,l){var s=this;l._eventNamespace=".select"+_buttonNamespace++,t.on(namespacedEvents(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(1===e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectAll:{text:i18n("selectAll","Select all"),className:"buttons-select-all",action:function(e,t,l,s){var c=this.select.items(),n=s.selectorModifier;(n?("function"==typeof n&&(n=n.call(t,e,t,l,s)),this[c+"s"](n)):this[c+"s"]()).select()}},selectNone:{text:i18n("selectNone","Deselect all"),className:"buttons-select-none",action:function(){clear(this.settings()[0],!0)},init:function(t,e,l){var s=this;l._eventNamespace=".select"+_buttonNamespace++,t.on(namespacedEvents(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(0<e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},showSelected:{text:i18n("showSelected","Show only selected"),className:"buttons-show-selected",action:function(e,s,t,l){var c;l._filter?(-1!==(c=DataTable.ext.search.indexOf(l._filter))&&(DataTable.ext.search.splice(c,1),l._filter=null),this.active(!1)):(l._filter=c=function(e,t,l){return e!==s.settings()[0]||e.aoData[l]._select_selected},DataTable.ext.search.push(c),this.active(!0)),s.draw()}}}),$.each(["Row","Column","Cell"],function(e,t){var c=t.toLowerCase();DataTable.ext.buttons["select"+t+"s"]={text:i18n("select"+t+"s","Select "+c+"s"),className:"buttons-select-"+c+"s",action:function(){this.select.items(c)},init:function(e){var s=this;e.on("selectItems.dt.DT",function(e,t,l){s.active(l===c)})}}}),$.fn.DataTable.select=DataTable.select,$(document).on("preInit.dt.dtSelect",function(e,t){"dt"===e.namespace&&DataTable.select.init(new DataTable.Api(t))});export default DataTable;
|
|
4
|
+
import jQuery from"jquery";import DataTable from"datatables.net";let $=jQuery;function cellRange(n,e,t){function l(t,l){l<t&&(e=l,l=t,t=e);var e,s=!1;return n.columns(":visible").indexes().filter(function(e){return e===t&&(s=!0),e===l?!(s=!1):s})}function s(t,l){var e,s=n.rows({search:"applied"}).indexes(),c=(s.indexOf(t)>s.indexOf(l)&&(e=l,l=t,t=e),!1);return s.filter(function(e){return e===t&&(c=!0),e===l?!(c=!1):c})}var c,t=n.cells({selected:!0}).any()||t?(c=l(t.column,e.column),s(t.row,e.row)):(c=l(0,e.column),s(0,e.row)),t=n.cells(t,c).flatten();n.cells(e,{selected:!0}).any()?n.cells(t).deselect():n.cells(t).select()}function disableMouseSelection(e){var t=e.settings()[0]._select.selector;$(e.table().container()).off("mousedown.dtSelect",t).off("mouseup.dtSelect",t).off("click.dtSelect",t),$("body").off("click.dtSelect"+_safeId(e.table().node()))}function enableMouseSelection(a){var o,t=$(a.table().container()),l=a.settings()[0],s=l._select.selector;t.on("mousedown.dtSelect",s,function(e){(e.shiftKey||e.metaKey||e.ctrlKey)&&t.css("-moz-user-select","none").one("selectstart.dtSelect",s,function(){return!1}),window.getSelection&&(o=window.getSelection())}).on("mouseup.dtSelect",s,function(){t.css("-moz-user-select","")}).on("click.dtSelect",s,function(e){var t,l=a.select.items();if(o){var s=window.getSelection();if((!s.anchorNode||$(s.anchorNode).closest("table")[0]===a.table().node())&&s!==o)return}var c,s=a.settings()[0],n=a.table().container();$(e.target).closest("div.dt-container")[0]==n&&(n=a.cell($(e.target).closest("td, th"))).any()&&(c=$.Event("user-select.dt"),eventTrigger(a,c,[l,n,e]),c.isDefaultPrevented()||(c=n.index(),"row"===l?(t=c.row,typeSelect(e,a,s,"row",t)):"column"===l?(t=n.index().column,typeSelect(e,a,s,"column",t)):"cell"===l&&(t=n.index(),typeSelect(e,a,s,"cell",t)),s._select_lastCell=c))}),$("body").on("click.dtSelect"+_safeId(a.table().node()),function(e){var t;!l._select.blurable||$(e.target).parents().filter(a.table().container()).length||0===$(e.target).parents("html").length||$(e.target).parents("div.DTE").length||(t=$.Event("select-blur.dt"),eventTrigger(a,t,[e.target,e]),t.isDefaultPrevented())||clear(l,!0)})}function eventTrigger(e,t,l,s){s&&!e.flatten().length||("string"==typeof t&&(t+=".dt"),l.unshift(e),$(e.table().node()).trigger(t,l))}function info(s,e){var t,l,c,n,a;"api"!==s.select.style()&&!1!==s.select.info()&&(a=s.rows({selected:!0}).flatten().length,t=s.columns({selected:!0}).flatten().length,l=s.cells({selected:!0}).flatten().length,c=function(e,t,l){e.append($('<span class="select-item"/>').append(s.i18n("select."+t+"s",{_:"%d "+t+"s selected",0:"",1:"1 "+t+" selected"},l)))},e=$(e),c(n=$('<span class="select-info"/>'),"row",a),c(n,"column",t),c(n,"cell",l),(a=e.children("span.select-info")).length&&a.remove(),""!==n.text())&&e.append(n)}function initCheckboxHeader(a){a.columns(".dt-select").every(function(){var n,e=this.header();$("input",e).length||(n=$("<input>").attr({class:"dt-select-checkbox",type:"checkbox","aria-label":a.i18n("select.aria.headerCheckbox")||"Select all rows"}).appendTo(e).on("change",function(){this.checked?a.rows({search:"applied"}).select():a.rows({selected:!0}).deselect()}).on("click",function(e){e.stopPropagation()}),a.on("draw select deselect",function(e,t,l){var s,c;"row"!==l&&l||(l=a.rows({selected:!0}).count(),s=a.rows({search:"applied",selected:!0}).count(),c=a.rows({search:"applied"}).count(),s&&s<=l&&s===c?n.prop("checked",!0).prop("indeterminate",!1):0===s&&0===l?n.prop("checked",!1).prop("indeterminate",!1):n.prop("checked",!1).prop("indeterminate",!0))}))})}function init(a){var c=new DataTable.Api(a);a._select_init=!0,a.aoRowCreatedCallback.push(function(e,t,l){var s,c,n=a.aoData[l];for(n._select_selected&&$(e).addClass(a._select.className),s=0,c=a.aoColumns.length;s<c;s++)(a.aoColumns[s]._select_selected||n._selected_cells&&n._selected_cells[s])&&$(n.anCells[s]).addClass(a._select.className)}),c.on("preXhr.dt.dtSelect",function(e,t){var l,s;t===c.settings()[0]&&(l=c.rows({selected:!0}).ids(!0).filter(function(e){return void 0!==e}),s=c.cells({selected:!0}).eq(0).map(function(e){var t=c.row(e.row).id(!0);return t?{row:t,column:e.column}:void 0}).filter(function(e){return void 0!==e}),c.one("draw.dt.dtSelect",function(){c.rows(l).select(),s.any()&&s.each(function(e){c.cells(e.row,e.column).select()})}))}),c.on("info.dt",function(e,t,l){t._select.infoEls.includes(l)||t._select.infoEls.push(l),info(c,l)}),c.on("select.dtSelect.dt deselect.dtSelect.dt",function(){a._select.infoEls.forEach(function(e){info(c,e)}),c.state.save()}),c.on("destroy.dtSelect",function(){$(c.rows({selected:!0}).nodes()).removeClass(c.settings()[0]._select.className),disableMouseSelection(c),c.off(".dtSelect"),$("body").off(".dtSelect"+_safeId(c.table().node()))})}function rowColumnRange(e,t,l,s){var c,n=e[t+"s"]({search:"applied"}).indexes(),s=n.indexOf(s),a=n.indexOf(l);e[t+"s"]({selected:!0}).any()||-1!==s?(a<s&&(c=a,a=s,s=c),n.splice(a+1,n.length),n.splice(0,s)):n.splice(n.indexOf(l)+1,n.length),e[t](l,{selected:!0}).any()?(n.splice(n.indexOf(l),1),e[t+"s"](n).deselect()):e[t+"s"](n).select()}function clear(e,t){!t&&"single"!==e._select.style||((t=new DataTable.Api(e)).rows({selected:!0}).deselect(),t.columns({selected:!0}).deselect(),t.cells({selected:!0}).deselect())}function typeSelect(e,t,l,s,c){var n=t.select.style(),a=t.select.toggleable(),o=t[s](c,{selected:!0}).any();o&&!a||("os"===n?e.ctrlKey||e.metaKey?t[s](c).select(!o):e.shiftKey?"cell"===s?cellRange(t,c,l._select_lastCell||null):rowColumnRange(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):(a=t[s+"s"]({selected:!0}),o&&1===a.flatten().length?t[s](c).deselect():(a.deselect(),t[s](c).select())):"multi+shift"==n&&e.shiftKey?"cell"===s?cellRange(t,c,l._select_lastCell||null):rowColumnRange(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):t[s](c).select(!o))}function _safeId(e){return e.id.replace(/[^a-zA-Z0-9\-\_]/g,"-")}DataTable.select={},DataTable.select.version="2.0.0",DataTable.select.init=function(c){var e,t,l,s,n,a,o,i,r,d,u,f,h=c.settings()[0];if(!DataTable.versionCheck("2"))throw"Warning: Select requires DataTables 2 or newer";h._select||(e=c.state.loaded(),t=function(e,t,l){if(null!==l&&void 0!==l.select){if(c.rows({selected:!0}).any()&&c.rows().deselect(),void 0!==l.select.rows&&c.rows(l.select.rows).select(),c.columns({selected:!0}).any()&&c.columns().deselect(),void 0!==l.select.columns&&c.columns(l.select.columns).select(),c.cells({selected:!0}).any()&&c.cells().deselect(),void 0!==l.select.cells)for(var s=0;s<l.select.cells.length;s++)c.cell(l.select.cells[s].row,l.select.cells[s].column).select();c.state.save()}},c.on("stateSaveParams",function(e,t,l){l.select={},l.select.rows=c.rows({selected:!0}).ids(!0).toArray(),l.select.columns=c.columns({selected:!0})[0],l.select.cells=c.cells({selected:!0})[0].map(function(e){return{row:c.row(e.row).id(!0),column:e.column}})}).on("stateLoadParams",t).one("init",function(){t(0,0,e)}),s=h.oInit.select,l=DataTable.defaults.select,l=void 0===s?l:s,s="row",r="td, th",d="selected",f=!(u=i=o=!(a=!(n="api"))),h._select={infoEls:[]},!0===l?(n="os",f=!0):"string"==typeof l?(n=l,f=!0):$.isPlainObject(l)&&(void 0!==l.blurable&&(a=l.blurable),void 0!==l.toggleable&&(o=l.toggleable),void 0!==l.info&&(i=l.info),void 0!==l.items&&(s=l.items),f=(n=void 0!==l.style?l.style:"os",!0),void 0!==l.selector&&(r=l.selector),void 0!==l.className&&(d=l.className),void 0!==l.headerCheckbox)&&(u=l.headerCheckbox),c.select.selector(r),c.select.items(s),c.select.style(n),c.select.blurable(a),c.select.toggleable(o),c.select.info(i),h._select.className=d,!f&&$(c.table().node()).hasClass("selectable")&&c.select.style("os"),u&&(initCheckboxHeader(c),c.on("init",function(){initCheckboxHeader(c)})))},$.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(e,i){DataTable.ext.selector[i.type].push(function(e,t,l){var s,c=t.selected,n=[];if(!0!==c&&!1!==c)return l;for(var a=0,o=l.length;a<o;a++)(s=e[i.prop][l[a]])&&(!0===c&&!0===s._select_selected||!1===c&&!s._select_selected)&&n.push(l[a]);return n})}),DataTable.ext.selector.cell.push(function(e,t,l){var s,c=t.selected,n=[];if(void 0===c)return l;for(var a=0,o=l.length;a<o;a++)(s=e.aoData[l[a].row])&&(!0===c&&s._selected_cells&&!0===s._selected_cells[l[a].column]||!1===c&&(!s._selected_cells||!s._selected_cells[l[a].column]))&&n.push(l[a]);return n});var apiRegister=DataTable.Api.register,apiRegisterPlural=DataTable.Api.registerPlural;function i18n(t,l){return function(e){return e.i18n("buttons."+t,l)}}function namespacedEvents(e){e=e._eventNamespace;return"draw.dt.DT"+e+" select.dt.DT"+e+" deselect.dt.DT"+e}function enabled(e,t){return!(-1===t.limitTo.indexOf("rows")||!e.rows({selected:!0}).any())||!(-1===t.limitTo.indexOf("columns")||!e.columns({selected:!0}).any())||!(-1===t.limitTo.indexOf("cells")||!e.cells({selected:!0}).any())}apiRegister("select()",function(){return this.iterator("table",function(e){DataTable.select.init(new DataTable.Api(e))})}),apiRegister("select.blurable()",function(t){return void 0===t?this.context[0]._select.blurable:this.iterator("table",function(e){e._select.blurable=t})}),apiRegister("select.toggleable()",function(t){return void 0===t?this.context[0]._select.toggleable:this.iterator("table",function(e){e._select.toggleable=t})}),apiRegister("select.info()",function(t){return void 0===t?this.context[0]._select.info:this.iterator("table",function(e){e._select.info=t})}),apiRegister("select.items()",function(t){return void 0===t?this.context[0]._select.items:this.iterator("table",function(e){e._select.items=t,eventTrigger(new DataTable.Api(e),"selectItems",[t])})}),apiRegister("select.style()",function(l){return void 0===l?this.context[0]._select.style:this.iterator("table",function(e){e._select||DataTable.select.init(new DataTable.Api(e)),e._select_init||init(e),e._select.style=l;var t=new DataTable.Api(e);disableMouseSelection(t),"api"!==l&&enableMouseSelection(t),eventTrigger(new DataTable.Api(e),"selectStyle",[l])})}),apiRegister("select.selector()",function(t){return void 0===t?this.context[0]._select.selector:this.iterator("table",function(e){disableMouseSelection(new DataTable.Api(e)),e._select.selector=t,"api"!==e._select.style&&enableMouseSelection(new DataTable.Api(e))})}),apiRegister("select.last()",function(e){var t=this.context[0];return e?(t._select_lastCell=e,this):t._select_lastCell}),apiRegisterPlural("rows().select()","row().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("row",function(e,t){clear(e);var l=e.aoData[t],s=e.aoColumns;$(l.nTr).addClass(e._select.className),l._select_selected=!0;for(var c=0;c<s.length;c++)"select-checkbox"===s[c].sType&&($("input.dt-select-checkbox",l.anCells[c]).prop("checked",!0),l._aSortData[c]=null)}),this.iterator("table",function(e,t){eventTrigger(l,"select",["row",l[t]],!0)}),this)}),apiRegister("row().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoData[this[0]]&&e.aoData[this[0]]._select_selected)}),apiRegisterPlural("columns().select()","column().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("column",function(e,t){clear(e),e.aoColumns[t]._select_selected=!0;t=new DataTable.Api(e).column(t);$(t.header()).addClass(e._select.className),$(t.footer()).addClass(e._select.className),t.nodes().to$().addClass(e._select.className)}),this.iterator("table",function(e,t){eventTrigger(l,"select",["column",l[t]],!0)}),this)}),apiRegister("column().selected()",function(){var e=this.context[0];return!!(e&&this.length&&e.aoColumns[this[0]]&&e.aoColumns[this[0]]._select_selected)}),apiRegisterPlural("cells().select()","cell().select()",function(e){var l=this;return!1===e?this.deselect():(this.iterator("cell",function(e,t,l){clear(e);t=e.aoData[t];void 0===t._selected_cells&&(t._selected_cells=[]),t._selected_cells[l]=!0,t.anCells&&$(t.anCells[l]).addClass(e._select.className)}),this.iterator("table",function(e,t){eventTrigger(l,"select",["cell",l.cells(l[t]).indexes().toArray()],!0)}),this)}),apiRegister("cell().selected()",function(){var e=this.context[0];if(e&&this.length){e=e.aoData[this[0][0].row];if(e&&e._selected_cells&&e._selected_cells[this[0][0].column])return!0}return!1}),apiRegisterPlural("rows().deselect()","row().deselect()",function(){var l=this;return this.iterator("row",function(e,t){var l=e.aoData[t],s=e.aoColumns;$(l.nTr).removeClass(e._select.className),l._select_selected=!1,e._select_lastCell=null;for(var c=0;c<s.length;c++)"select-checkbox"===s[c].sType&&($("input.dt-select-checkbox",l.anCells[c]).prop("checked",!1),l._aSortData[c]=null)}),this.iterator("table",function(e,t){eventTrigger(l,"deselect",["row",l[t]],!0)}),this}),apiRegisterPlural("columns().deselect()","column().deselect()",function(){var l=this;return this.iterator("column",function(s,e){s.aoColumns[e]._select_selected=!1;var t=new DataTable.Api(s),l=t.column(e);$(l.header()).removeClass(s._select.className),$(l.footer()).removeClass(s._select.className),t.cells(null,e).indexes().each(function(e){var t=s.aoData[e.row],l=t._selected_cells;!t.anCells||l&&l[e.column]||$(t.anCells[e.column]).removeClass(s._select.className)})}),this.iterator("table",function(e,t){eventTrigger(l,"deselect",["column",l[t]],!0)}),this}),apiRegisterPlural("cells().deselect()","cell().deselect()",function(){var l=this;return this.iterator("cell",function(e,t,l){t=e.aoData[t];void 0!==t._selected_cells&&(t._selected_cells[l]=!1),t.anCells&&!e.aoColumns[l]._select_selected&&$(t.anCells[l]).removeClass(e._select.className)}),this.iterator("table",function(e,t){eventTrigger(l,"deselect",["cell",l[t]],!0)}),this});var _buttonNamespace=0;$.extend(DataTable.ext.buttons,{selected:{text:i18n("selected","Selected"),className:"buttons-selected",limitTo:["rows","columns","cells"],init:function(e,t,l){var s=this;l._eventNamespace=".select"+_buttonNamespace++,e.on(namespacedEvents(l),function(){s.enable(enabled(e,l))}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectedSingle:{text:i18n("selectedSingle","Selected single"),className:"buttons-selected-single",init:function(t,e,l){var s=this;l._eventNamespace=".select"+_buttonNamespace++,t.on(namespacedEvents(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(1===e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},selectAll:{text:i18n("selectAll","Select all"),className:"buttons-select-all",action:function(e,t,l,s){var c=this.select.items(),n=s.selectorModifier;(n?("function"==typeof n&&(n=n.call(t,e,t,l,s)),this[c+"s"](n)):this[c+"s"]()).select()}},selectNone:{text:i18n("selectNone","Deselect all"),className:"buttons-select-none",action:function(){clear(this.settings()[0],!0)},init:function(t,e,l){var s=this;l._eventNamespace=".select"+_buttonNamespace++,t.on(namespacedEvents(l),function(){var e=t.rows({selected:!0}).flatten().length+t.columns({selected:!0}).flatten().length+t.cells({selected:!0}).flatten().length;s.enable(0<e)}),this.disable()},destroy:function(e,t,l){e.off(l._eventNamespace)}},showSelected:{text:i18n("showSelected","Show only selected"),className:"buttons-show-selected",action:function(e,t){var s;t.search.fixed("dt-select")?(t.search.fixed("dt-select",null),this.active(!1)):(s=t.settings()[0].aoData,t.search.fixed("dt-select",function(e,t,l){return s[l]._select_selected}),this.active(!0)),t.draw()}}}),$.each(["Row","Column","Cell"],function(e,t){var c=t.toLowerCase();DataTable.ext.buttons["select"+t+"s"]={text:i18n("select"+t+"s","Select "+c+"s"),className:"buttons-select-"+c+"s",action:function(){this.select.items(c)},init:function(e){var s=this;e.on("selectItems.dt.DT",function(e,t,l){s.active(l===c)})}}}),DataTable.type("select-checkbox",{className:"dt-select",detect:function(e){return"select-checkbox"===e&&e},order:{pre:function(e){return"X"===e?-1:0}}}),$.extend(!0,DataTable.defaults.oLanguage,{select:{aria:{rowCheckbox:"Select row"}}}),DataTable.render.select=function(e,t){var n=e?DataTable.util.get(e):null,a=t?DataTable.util.get(t):null;return function(e,t,l,s){var c=s.settings.aoData[s.row]._select_selected,s=s.settings.oLanguage.select.aria.rowCheckbox;return"display"===t?$("<input>").attr({"aria-label":s,class:"dt-select-checkbox",name:a?a(l):null,type:"checkbox",value:n?n(l):null,checked:c})[0]:"type"===t?"select-checkbox":"filter"!==t&&c?"X":""}},DataTable.ext.order["select-checkbox"]=function(t,e){return this.api().column(e,{order:"index"}).nodes().map(function(e){return"row"===t._select.items?$(e).parent().hasClass(t._select.className):"cell"===t._select.items&&$(e).hasClass(t._select.className)})},$.fn.DataTable.select=DataTable.select,$(document).on("preInit.dt.dtSelect",function(e,t){"dt"===e.namespace&&DataTable.select.init(new DataTable.Api(t))});export default DataTable;
|
package/js/dataTables.select.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/*! Select for DataTables
|
|
1
|
+
/*! Select for DataTables 2.0.0
|
|
2
2
|
* © SpryMedia Ltd - datatables.net/license/mit
|
|
3
3
|
*/
|
|
4
4
|
|
|
@@ -12,11 +12,15 @@ let $ = jQuery;
|
|
|
12
12
|
// Version information for debugger
|
|
13
13
|
DataTable.select = {};
|
|
14
14
|
|
|
15
|
-
DataTable.select.version = '
|
|
15
|
+
DataTable.select.version = '2.0.0';
|
|
16
16
|
|
|
17
17
|
DataTable.select.init = function (dt) {
|
|
18
18
|
var ctx = dt.settings()[0];
|
|
19
19
|
|
|
20
|
+
if (!DataTable.versionCheck('2')) {
|
|
21
|
+
throw 'Warning: Select requires DataTables 2 or newer';
|
|
22
|
+
}
|
|
23
|
+
|
|
20
24
|
if (ctx._select) {
|
|
21
25
|
return;
|
|
22
26
|
}
|
|
@@ -81,9 +85,12 @@ DataTable.select.init = function (dt) {
|
|
|
81
85
|
var info = true;
|
|
82
86
|
var selector = 'td, th';
|
|
83
87
|
var className = 'selected';
|
|
88
|
+
var headerCheckbox = true;
|
|
84
89
|
var setStyle = false;
|
|
85
90
|
|
|
86
|
-
ctx._select = {
|
|
91
|
+
ctx._select = {
|
|
92
|
+
infoEls: []
|
|
93
|
+
};
|
|
87
94
|
|
|
88
95
|
// Initialisation customisations
|
|
89
96
|
if (opts === true) {
|
|
@@ -127,6 +134,10 @@ DataTable.select.init = function (dt) {
|
|
|
127
134
|
if (opts.className !== undefined) {
|
|
128
135
|
className = opts.className;
|
|
129
136
|
}
|
|
137
|
+
|
|
138
|
+
if (opts.headerCheckbox !== undefined) {
|
|
139
|
+
headerCheckbox = opts.headerCheckbox;
|
|
140
|
+
}
|
|
130
141
|
}
|
|
131
142
|
|
|
132
143
|
dt.select.selector(selector);
|
|
@@ -137,27 +148,21 @@ DataTable.select.init = function (dt) {
|
|
|
137
148
|
dt.select.info(info);
|
|
138
149
|
ctx._select.className = className;
|
|
139
150
|
|
|
140
|
-
// Sort table based on selected rows. Requires Select Datatables extension
|
|
141
|
-
$.fn.dataTable.ext.order['select-checkbox'] = function (settings, col) {
|
|
142
|
-
return this.api()
|
|
143
|
-
.column(col, { order: 'index' })
|
|
144
|
-
.nodes()
|
|
145
|
-
.map(function (td) {
|
|
146
|
-
if (settings._select.items === 'row') {
|
|
147
|
-
return $(td).parent().hasClass(settings._select.className);
|
|
148
|
-
}
|
|
149
|
-
else if (settings._select.items === 'cell') {
|
|
150
|
-
return $(td).hasClass(settings._select.className);
|
|
151
|
-
}
|
|
152
|
-
return false;
|
|
153
|
-
});
|
|
154
|
-
};
|
|
155
|
-
|
|
156
151
|
// If the init options haven't enabled select, but there is a selectable
|
|
157
152
|
// class name, then enable
|
|
158
153
|
if (!setStyle && $(dt.table().node()).hasClass('selectable')) {
|
|
159
154
|
dt.select.style('os');
|
|
160
155
|
}
|
|
156
|
+
|
|
157
|
+
// Insert a checkbox into the header if needed - might need to wait
|
|
158
|
+
// for init complete, or it might already be done
|
|
159
|
+
if (headerCheckbox) {
|
|
160
|
+
initCheckboxHeader(dt);
|
|
161
|
+
|
|
162
|
+
dt.on('init', function () {
|
|
163
|
+
initCheckboxHeader(dt);
|
|
164
|
+
});
|
|
165
|
+
}
|
|
161
166
|
};
|
|
162
167
|
|
|
163
168
|
/*
|
|
@@ -209,6 +214,7 @@ The `_select` object contains the following properties:
|
|
|
209
214
|
on the row
|
|
210
215
|
info:boolean - If the selection summary should be shown in the table
|
|
211
216
|
information elements
|
|
217
|
+
infoEls:element[] - List of HTML elements with info elements for a table
|
|
212
218
|
}
|
|
213
219
|
```
|
|
214
220
|
|
|
@@ -393,10 +399,10 @@ function enableMouseSelection(dt) {
|
|
|
393
399
|
}
|
|
394
400
|
|
|
395
401
|
var ctx = dt.settings()[0];
|
|
396
|
-
var
|
|
402
|
+
var container = dt.table().container();
|
|
397
403
|
|
|
398
404
|
// Ignore clicks inside a sub-table
|
|
399
|
-
if ($(e.target).closest('div.'
|
|
405
|
+
if ($(e.target).closest('div.dt-container')[0] != container) {
|
|
400
406
|
return;
|
|
401
407
|
}
|
|
402
408
|
|
|
@@ -494,14 +500,8 @@ function eventTrigger(api, type, args, any) {
|
|
|
494
500
|
* @param {DataTable.Api} api DataTable to update
|
|
495
501
|
* @private
|
|
496
502
|
*/
|
|
497
|
-
function info(api) {
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
if (!ctx._select.info || !ctx.aanFeatures.i) {
|
|
501
|
-
return;
|
|
502
|
-
}
|
|
503
|
-
|
|
504
|
-
if (api.select.style() === 'api') {
|
|
503
|
+
function info(api, node) {
|
|
504
|
+
if (api.select.style() === 'api' || api.select.info() === false) {
|
|
505
505
|
return;
|
|
506
506
|
}
|
|
507
507
|
|
|
@@ -521,22 +521,81 @@ function info(api) {
|
|
|
521
521
|
);
|
|
522
522
|
};
|
|
523
523
|
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
el = $(el);
|
|
524
|
+
var el = $(node);
|
|
525
|
+
var output = $('<span class="select-info"/>');
|
|
527
526
|
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
add(output, 'cell', cells);
|
|
527
|
+
add(output, 'row', rows);
|
|
528
|
+
add(output, 'column', columns);
|
|
529
|
+
add(output, 'cell', cells);
|
|
532
530
|
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
531
|
+
var existing = el.children('span.select-info');
|
|
532
|
+
|
|
533
|
+
if (existing.length) {
|
|
534
|
+
existing.remove();
|
|
535
|
+
}
|
|
537
536
|
|
|
538
|
-
|
|
539
|
-
|
|
537
|
+
if (output.text() !== '') {
|
|
538
|
+
el.append(output);
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
/**
|
|
543
|
+
* Add a checkbox to the header for checkbox columns, allowing all rows to
|
|
544
|
+
* be selected, deselected or just to show the state.
|
|
545
|
+
*
|
|
546
|
+
* @param {*} dt API
|
|
547
|
+
*/
|
|
548
|
+
function initCheckboxHeader( dt ) {
|
|
549
|
+
// Find any checkbox column(s)
|
|
550
|
+
dt.columns('.dt-select').every(function () {
|
|
551
|
+
var header = this.header();
|
|
552
|
+
|
|
553
|
+
if (! $('input', header).length) {
|
|
554
|
+
// If no checkbox yet, insert one
|
|
555
|
+
var input = $('<input>')
|
|
556
|
+
.attr({
|
|
557
|
+
class: 'dt-select-checkbox',
|
|
558
|
+
type: 'checkbox',
|
|
559
|
+
'aria-label': dt.i18n('select.aria.headerCheckbox') || 'Select all rows'
|
|
560
|
+
})
|
|
561
|
+
.appendTo(header)
|
|
562
|
+
.on('change', function () {
|
|
563
|
+
if (this.checked) {
|
|
564
|
+
dt.rows({search: 'applied'}).select();
|
|
565
|
+
}
|
|
566
|
+
else {
|
|
567
|
+
dt.rows({selected: true}).deselect();
|
|
568
|
+
}
|
|
569
|
+
})
|
|
570
|
+
.on('click', function (e) {
|
|
571
|
+
e.stopPropagation();
|
|
572
|
+
});
|
|
573
|
+
|
|
574
|
+
// Update the header checkbox's state when the selection in the
|
|
575
|
+
// table changes
|
|
576
|
+
dt.on('draw select deselect', function (e, pass, type) {
|
|
577
|
+
if (type === 'row' || ! type) {
|
|
578
|
+
var count = dt.rows({selected: true}).count();
|
|
579
|
+
var search = dt.rows({search: 'applied', selected: true}).count();
|
|
580
|
+
var available = dt.rows({search: 'applied'}).count();
|
|
581
|
+
|
|
582
|
+
if (search && search <= count && search === available) {
|
|
583
|
+
input
|
|
584
|
+
.prop('checked', true)
|
|
585
|
+
.prop('indeterminate', false);
|
|
586
|
+
}
|
|
587
|
+
else if (search === 0 && count === 0) {
|
|
588
|
+
input
|
|
589
|
+
.prop('checked', false)
|
|
590
|
+
.prop('indeterminate', false);
|
|
591
|
+
}
|
|
592
|
+
else {
|
|
593
|
+
input
|
|
594
|
+
.prop('checked', false)
|
|
595
|
+
.prop('indeterminate', true);
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
});
|
|
540
599
|
}
|
|
541
600
|
});
|
|
542
601
|
}
|
|
@@ -562,8 +621,7 @@ function init(ctx) {
|
|
|
562
621
|
// This method of attaching to `aoRowCreatedCallback` is a hack until
|
|
563
622
|
// DataTables has proper events for row manipulation If you are reviewing
|
|
564
623
|
// this code to create your own plug-ins, please do not do this!
|
|
565
|
-
ctx.aoRowCreatedCallback.push({
|
|
566
|
-
fn: function (row, data, index) {
|
|
624
|
+
ctx.aoRowCreatedCallback.push(function (row, data, index) {
|
|
567
625
|
var i, ien;
|
|
568
626
|
var d = ctx.aoData[index];
|
|
569
627
|
|
|
@@ -582,9 +640,8 @@ function init(ctx) {
|
|
|
582
640
|
$(d.anCells[i]).addClass(ctx._select.className);
|
|
583
641
|
}
|
|
584
642
|
}
|
|
585
|
-
}
|
|
586
|
-
|
|
587
|
-
});
|
|
643
|
+
}
|
|
644
|
+
);
|
|
588
645
|
|
|
589
646
|
// On Ajax reload we want to reselect all rows which are currently selected,
|
|
590
647
|
// if there is an rowId (i.e. a unique value to identify each row with)
|
|
@@ -628,8 +685,20 @@ function init(ctx) {
|
|
|
628
685
|
});
|
|
629
686
|
|
|
630
687
|
// Update the table information element with selected item summary
|
|
631
|
-
api.on('
|
|
632
|
-
info
|
|
688
|
+
api.on('info.dt', function (e, ctx, node) {
|
|
689
|
+
// Store the info node for updating on select / deselect
|
|
690
|
+
if (!ctx._select.infoEls.includes(node)) {
|
|
691
|
+
ctx._select.infoEls.push(node);
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
info(api, node);
|
|
695
|
+
});
|
|
696
|
+
|
|
697
|
+
api.on('select.dtSelect.dt deselect.dtSelect.dt', function () {
|
|
698
|
+
ctx._select.infoEls.forEach(function (el) {
|
|
699
|
+
info(api, el);
|
|
700
|
+
});
|
|
701
|
+
|
|
633
702
|
api.state.save();
|
|
634
703
|
});
|
|
635
704
|
|
|
@@ -657,13 +726,13 @@ function init(ctx) {
|
|
|
657
726
|
function rowColumnRange(dt, type, idx, last) {
|
|
658
727
|
// Add a range of rows from the last selected row to this one
|
|
659
728
|
var indexes = dt[type + 's']({ search: 'applied' }).indexes();
|
|
660
|
-
var idx1 =
|
|
661
|
-
var idx2 =
|
|
729
|
+
var idx1 = indexes.indexOf(last);
|
|
730
|
+
var idx2 = indexes.indexOf(idx);
|
|
662
731
|
|
|
663
732
|
if (!dt[type + 's']({ selected: true }).any() && idx1 === -1) {
|
|
664
733
|
// select from top to here - slightly odd, but both Windows and Mac OS
|
|
665
734
|
// do this
|
|
666
|
-
indexes.splice(
|
|
735
|
+
indexes.splice(indexes.indexOf(idx) + 1, indexes.length);
|
|
667
736
|
}
|
|
668
737
|
else {
|
|
669
738
|
// reverse so we can shift click 'up' as well as down
|
|
@@ -683,7 +752,7 @@ function rowColumnRange(dt, type, idx, last) {
|
|
|
683
752
|
}
|
|
684
753
|
else {
|
|
685
754
|
// Deselect range - need to keep the clicked on row selected
|
|
686
|
-
indexes.splice(
|
|
755
|
+
indexes.splice(indexes.indexOf(idx), 1);
|
|
687
756
|
dt[type + 's'](indexes).deselect();
|
|
688
757
|
}
|
|
689
758
|
}
|
|
@@ -810,8 +879,10 @@ $.each(
|
|
|
810
879
|
data = settings[o.prop][indexes[i]];
|
|
811
880
|
|
|
812
881
|
if (
|
|
813
|
-
|
|
814
|
-
|
|
882
|
+
data && (
|
|
883
|
+
(selected === true && data._select_selected === true) ||
|
|
884
|
+
(selected === false && !data._select_selected)
|
|
885
|
+
)
|
|
815
886
|
) {
|
|
816
887
|
out.push(indexes[i]);
|
|
817
888
|
}
|
|
@@ -835,11 +906,13 @@ DataTable.ext.selector.cell.push(function (settings, opts, cells) {
|
|
|
835
906
|
rowData = settings.aoData[cells[i].row];
|
|
836
907
|
|
|
837
908
|
if (
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
(
|
|
909
|
+
rowData && (
|
|
910
|
+
(selected === true &&
|
|
911
|
+
rowData._selected_cells &&
|
|
912
|
+
rowData._selected_cells[cells[i].column] === true) ||
|
|
913
|
+
(selected === false &&
|
|
914
|
+
(!rowData._selected_cells || !rowData._selected_cells[cells[i].column]))
|
|
915
|
+
)
|
|
843
916
|
) {
|
|
844
917
|
out.push(cells[i]);
|
|
845
918
|
}
|
|
@@ -954,6 +1027,17 @@ apiRegister('select.selector()', function (selector) {
|
|
|
954
1027
|
});
|
|
955
1028
|
});
|
|
956
1029
|
|
|
1030
|
+
apiRegister('select.last()', function (set) {
|
|
1031
|
+
let ctx = this.context[0];
|
|
1032
|
+
|
|
1033
|
+
if (set) {
|
|
1034
|
+
ctx._select_lastCell = set;
|
|
1035
|
+
return this;
|
|
1036
|
+
}
|
|
1037
|
+
|
|
1038
|
+
return ctx._select_lastCell;
|
|
1039
|
+
});
|
|
1040
|
+
|
|
957
1041
|
apiRegisterPlural('rows().select()', 'row().select()', function (select) {
|
|
958
1042
|
var api = this;
|
|
959
1043
|
|
|
@@ -964,8 +1048,26 @@ apiRegisterPlural('rows().select()', 'row().select()', function (select) {
|
|
|
964
1048
|
this.iterator('row', function (ctx, idx) {
|
|
965
1049
|
clear(ctx);
|
|
966
1050
|
|
|
967
|
-
|
|
968
|
-
|
|
1051
|
+
// There is a good amount of knowledge of DataTables internals in
|
|
1052
|
+
// this function. It _could_ be done without that, but it would hurt
|
|
1053
|
+
// performance (or DT would need new APIs for this work)
|
|
1054
|
+
var dtData = ctx.aoData[idx];
|
|
1055
|
+
var dtColumns = ctx.aoColumns;
|
|
1056
|
+
|
|
1057
|
+
$(dtData.nTr).addClass(ctx._select.className);
|
|
1058
|
+
dtData._select_selected = true;
|
|
1059
|
+
|
|
1060
|
+
for (var i=0 ; i<dtColumns.length ; i++) {
|
|
1061
|
+
var col = dtColumns[i];
|
|
1062
|
+
|
|
1063
|
+
if (col.sType === 'select-checkbox') {
|
|
1064
|
+
// Make sure the checkbox shows the right state
|
|
1065
|
+
$('input.dt-select-checkbox', dtData.anCells[i]).prop('checked', true);
|
|
1066
|
+
|
|
1067
|
+
// Invalidate the sort data for this column
|
|
1068
|
+
dtData._aSortData[i] = null;
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
969
1071
|
});
|
|
970
1072
|
|
|
971
1073
|
this.iterator('table', function (ctx, i) {
|
|
@@ -1070,9 +1172,25 @@ apiRegisterPlural('rows().deselect()', 'row().deselect()', function () {
|
|
|
1070
1172
|
var api = this;
|
|
1071
1173
|
|
|
1072
1174
|
this.iterator('row', function (ctx, idx) {
|
|
1073
|
-
|
|
1175
|
+
// Like the select action, this has a lot of knowledge about DT internally
|
|
1176
|
+
var dtData = ctx.aoData[idx];
|
|
1177
|
+
var dtColumns = ctx.aoColumns;
|
|
1178
|
+
|
|
1179
|
+
$(dtData.nTr).removeClass(ctx._select.className);
|
|
1180
|
+
dtData._select_selected = false;
|
|
1074
1181
|
ctx._select_lastCell = null;
|
|
1075
|
-
|
|
1182
|
+
|
|
1183
|
+
for (var i=0 ; i<dtColumns.length ; i++) {
|
|
1184
|
+
var col = dtColumns[i];
|
|
1185
|
+
|
|
1186
|
+
if (col.sType === 'select-checkbox') {
|
|
1187
|
+
// Make sure the checkbox shows the right state
|
|
1188
|
+
$('input.dt-select-checkbox', dtData.anCells[i]).prop('checked', false);
|
|
1189
|
+
|
|
1190
|
+
// Invalidate the sort data for this column
|
|
1191
|
+
dtData._aSortData[i] = null;
|
|
1192
|
+
}
|
|
1193
|
+
}
|
|
1076
1194
|
});
|
|
1077
1195
|
|
|
1078
1196
|
this.iterator('table', function (ctx, i) {
|
|
@@ -1158,15 +1276,15 @@ function namespacedEvents(config) {
|
|
|
1158
1276
|
}
|
|
1159
1277
|
|
|
1160
1278
|
function enabled(dt, config) {
|
|
1161
|
-
if (
|
|
1279
|
+
if (config.limitTo.indexOf('rows') !== -1 && dt.rows({ selected: true }).any()) {
|
|
1162
1280
|
return true;
|
|
1163
1281
|
}
|
|
1164
1282
|
|
|
1165
|
-
if (
|
|
1283
|
+
if (config.limitTo.indexOf('columns') !== -1 && dt.columns({ selected: true }).any()) {
|
|
1166
1284
|
return true;
|
|
1167
1285
|
}
|
|
1168
1286
|
|
|
1169
|
-
if (
|
|
1287
|
+
if (config.limitTo.indexOf('cells') !== -1 && dt.cells({ selected: true }).any()) {
|
|
1170
1288
|
return true;
|
|
1171
1289
|
}
|
|
1172
1290
|
|
|
@@ -1266,34 +1384,23 @@ $.extend(DataTable.ext.buttons, {
|
|
|
1266
1384
|
showSelected: {
|
|
1267
1385
|
text: i18n('showSelected', 'Show only selected'),
|
|
1268
1386
|
className: 'buttons-show-selected',
|
|
1269
|
-
action: function (e, dt
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
if (conf._filter) {
|
|
1274
|
-
var idx = DataTable.ext.search.indexOf(conf._filter);
|
|
1275
|
-
|
|
1276
|
-
if (idx !== -1) {
|
|
1277
|
-
DataTable.ext.search.splice(idx, 1);
|
|
1278
|
-
conf._filter = null;
|
|
1279
|
-
}
|
|
1387
|
+
action: function (e, dt) {
|
|
1388
|
+
if (dt.search.fixed('dt-select')) {
|
|
1389
|
+
// Remove existing function
|
|
1390
|
+
dt.search.fixed('dt-select', null);
|
|
1280
1391
|
|
|
1281
1392
|
this.active(false);
|
|
1282
1393
|
}
|
|
1283
1394
|
else {
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
};
|
|
1294
|
-
|
|
1295
|
-
conf._filter = fn;
|
|
1296
|
-
DataTable.ext.search.push(fn);
|
|
1395
|
+
// Use a fixed filtering function to match on selected rows
|
|
1396
|
+
// This needs to reference the internal aoData since that is
|
|
1397
|
+
// where Select stores its reference for the selected state
|
|
1398
|
+
var dataSrc = dt.settings()[0].aoData;
|
|
1399
|
+
|
|
1400
|
+
dt.search.fixed('dt-select', function (text, data, idx) {
|
|
1401
|
+
// _select_selected is set by Select on the data object for the row
|
|
1402
|
+
return dataSrc[idx]._select_selected;
|
|
1403
|
+
});
|
|
1297
1404
|
|
|
1298
1405
|
this.active(true);
|
|
1299
1406
|
}
|
|
@@ -1322,6 +1429,74 @@ $.each(['Row', 'Column', 'Cell'], function (i, item) {
|
|
|
1322
1429
|
};
|
|
1323
1430
|
});
|
|
1324
1431
|
|
|
1432
|
+
DataTable.type('select-checkbox', {
|
|
1433
|
+
className: 'dt-select',
|
|
1434
|
+
detect: function (data) {
|
|
1435
|
+
// Rendering function will tell us if it is a checkbox type
|
|
1436
|
+
return data === 'select-checkbox' ? data : false;
|
|
1437
|
+
},
|
|
1438
|
+
order: {
|
|
1439
|
+
pre: function (d) {
|
|
1440
|
+
return d === 'X' ? -1 : 0;
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
});
|
|
1444
|
+
|
|
1445
|
+
$.extend(true, DataTable.defaults.oLanguage, {
|
|
1446
|
+
select: {
|
|
1447
|
+
aria: {
|
|
1448
|
+
rowCheckbox: 'Select row'
|
|
1449
|
+
}
|
|
1450
|
+
}
|
|
1451
|
+
});
|
|
1452
|
+
|
|
1453
|
+
DataTable.render.select = function (valueProp, nameProp) {
|
|
1454
|
+
var valueFn = valueProp ? DataTable.util.get(valueProp) : null;
|
|
1455
|
+
var nameFn = nameProp ? DataTable.util.get(nameProp) : null;
|
|
1456
|
+
|
|
1457
|
+
return function (data, type, row, meta) {
|
|
1458
|
+
var dtRow = meta.settings.aoData[meta.row];
|
|
1459
|
+
var selected = dtRow._select_selected;
|
|
1460
|
+
var ariaLabel = meta.settings.oLanguage.select.aria.rowCheckbox;
|
|
1461
|
+
|
|
1462
|
+
if (type === 'display') {
|
|
1463
|
+
return $('<input>')
|
|
1464
|
+
.attr({
|
|
1465
|
+
'aria-label': ariaLabel,
|
|
1466
|
+
class: 'dt-select-checkbox',
|
|
1467
|
+
name: nameFn ? nameFn(row) : null,
|
|
1468
|
+
type: 'checkbox',
|
|
1469
|
+
value: valueFn ? valueFn(row) : null,
|
|
1470
|
+
checked: selected
|
|
1471
|
+
})[0];
|
|
1472
|
+
}
|
|
1473
|
+
else if (type === 'type') {
|
|
1474
|
+
return 'select-checkbox';
|
|
1475
|
+
}
|
|
1476
|
+
else if (type === 'filter') {
|
|
1477
|
+
return '';
|
|
1478
|
+
}
|
|
1479
|
+
|
|
1480
|
+
return selected ? 'X' : '';
|
|
1481
|
+
}
|
|
1482
|
+
}
|
|
1483
|
+
|
|
1484
|
+
// Legacy checkbox ordering
|
|
1485
|
+
DataTable.ext.order['select-checkbox'] = function (settings, col) {
|
|
1486
|
+
return this.api()
|
|
1487
|
+
.column(col, { order: 'index' })
|
|
1488
|
+
.nodes()
|
|
1489
|
+
.map(function (td) {
|
|
1490
|
+
if (settings._select.items === 'row') {
|
|
1491
|
+
return $(td).parent().hasClass(settings._select.className);
|
|
1492
|
+
}
|
|
1493
|
+
else if (settings._select.items === 'cell') {
|
|
1494
|
+
return $(td).hasClass(settings._select.className);
|
|
1495
|
+
}
|
|
1496
|
+
return false;
|
|
1497
|
+
});
|
|
1498
|
+
};
|
|
1499
|
+
|
|
1325
1500
|
$.fn.DataTable.select = DataTable.select;
|
|
1326
1501
|
|
|
1327
1502
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
package/package.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"main": "js/dataTables.select.js",
|
|
5
5
|
"module": "js/dataTables.select.mjs",
|
|
6
6
|
"types": "./types/types.d.ts",
|
|
7
|
-
"version": "
|
|
7
|
+
"version": "2.0.0",
|
|
8
8
|
"files": [
|
|
9
9
|
"js/**/*.js",
|
|
10
10
|
"js/**/*.mjs",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"sort"
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"datatables.net": ">=
|
|
23
|
+
"datatables.net": ">=2.0.0",
|
|
24
24
|
"jquery": ">=1.7"
|
|
25
25
|
},
|
|
26
26
|
"moduleType": [
|
package/types/types.d.ts
CHANGED
|
@@ -80,7 +80,7 @@ declare module 'datatables.net' {
|
|
|
80
80
|
deselect(): Api<T>;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
interface
|
|
83
|
+
interface DataTablesStatic {
|
|
84
84
|
/**
|
|
85
85
|
* Select static methods
|
|
86
86
|
*/
|
|
@@ -152,7 +152,7 @@ interface ApiSelect<Api> {
|
|
|
152
152
|
* @param flag Value to set for the blurable option - true to enable, false to disable.
|
|
153
153
|
* @returns DataTables Api instance for chaining
|
|
154
154
|
*/
|
|
155
|
-
blurable(flag): Api;
|
|
155
|
+
blurable(flag: boolean): Api;
|
|
156
156
|
|
|
157
157
|
/**
|
|
158
158
|
* Get the summary information display state for the table.
|
|
@@ -167,7 +167,7 @@ interface ApiSelect<Api> {
|
|
|
167
167
|
* @param flag Value to set for the information summary display state - true to enable, false to disable.
|
|
168
168
|
* @returns DataTables API instance for chaining.
|
|
169
169
|
*/
|
|
170
|
-
info(flag): Api;
|
|
170
|
+
info(flag: boolean): Api;
|
|
171
171
|
|
|
172
172
|
/**
|
|
173
173
|
* Get the items that will be selected by user interaction (i.e. a click on the table).
|
|
@@ -226,6 +226,6 @@ interface ApiSelect<Api> {
|
|
|
226
226
|
* @param set true to allow item deselection, false to disallow.
|
|
227
227
|
* @returns DataTables API instance for chaining.
|
|
228
228
|
*/
|
|
229
|
-
toggleable(set): Api;
|
|
229
|
+
toggleable(set: boolean): Api;
|
|
230
230
|
}
|
|
231
231
|
|