datatables.net-select 2.0.5 → 2.1.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.
@@ -1,4 +1,4 @@
1
- /*! Select for DataTables 2.0.5
1
+ /*! Select for DataTables 2.1.0
2
2
  * © SpryMedia Ltd - datatables.net/license/mit
3
3
  */
4
4
 
@@ -56,7 +56,7 @@ DataTable.select.classes = {
56
56
  checkbox: 'dt-select-checkbox'
57
57
  };
58
58
 
59
- DataTable.select.version = '2.0.5';
59
+ DataTable.select.version = '2.1.0';
60
60
 
61
61
  DataTable.select.init = function (dt) {
62
62
  var ctx = dt.settings()[0];
@@ -126,6 +126,7 @@ DataTable.select.init = function (dt) {
126
126
  var style = 'api';
127
127
  var blurable = false;
128
128
  var toggleable = true;
129
+ var selectable = null;
129
130
  var info = true;
130
131
  var selector = 'td, th';
131
132
  var className = 'selected';
@@ -182,6 +183,10 @@ DataTable.select.init = function (dt) {
182
183
  if (opts.headerCheckbox !== undefined) {
183
184
  headerCheckbox = opts.headerCheckbox;
184
185
  }
186
+
187
+ if (opts.selectable !== undefined) {
188
+ selectable = opts.selectable;
189
+ }
185
190
  }
186
191
 
187
192
  dt.select.selector(selector);
@@ -190,6 +195,7 @@ DataTable.select.init = function (dt) {
190
195
  dt.select.blurable(blurable);
191
196
  dt.select.toggleable(toggleable);
192
197
  dt.select.info(info);
198
+ dt.select.selectable(selectable);
193
199
  ctx._select.className = className;
194
200
 
195
201
  // If the init options haven't enabled select, but there is a selectable
@@ -199,11 +205,9 @@ DataTable.select.init = function (dt) {
199
205
  }
200
206
 
201
207
  // Insert a checkbox into the header if needed - might need to wait
202
- // for init complete, or it might already be done
208
+ // for init complete
203
209
  if (headerCheckbox || headerCheckbox === 'select-page' || headerCheckbox === 'select-all') {
204
- initCheckboxHeader(dt, headerCheckbox);
205
-
206
- dt.on('init', function () {
210
+ dt.ready(function () {
207
211
  initCheckboxHeader(dt, headerCheckbox);
208
212
  });
209
213
  }
@@ -570,9 +574,13 @@ function info(api, node) {
570
574
  return;
571
575
  }
572
576
 
573
- var rows = api.rows({ selected: true }).flatten().length;
574
- var columns = api.columns({ selected: true }).flatten().length;
575
- var cells = api.cells({ selected: true }).flatten().length;
577
+ // If _select_set has any length, then ids are available and should be used
578
+ // as the counter. Otherwise use the API to workout how many rows are
579
+ // selected.
580
+ var rowSetLength = api.settings()[0]._select_set.length;
581
+ var rows = rowSetLength ? rowSetLength : api.rows({ selected: true }).count();
582
+ var columns = api.columns({ selected: true }).count();
583
+ var cells = api.cells({ selected: true }).count();
576
584
 
577
585
  var add = function (el, name, num) {
578
586
  el.append(
@@ -612,7 +620,8 @@ function info(api, node) {
612
620
  * @param {*} headerCheckbox the header checkbox option
613
621
  */
614
622
  function initCheckboxHeader( dt, headerCheckbox ) {
615
- var dtInternalColumns = dt.settings()[0].aoColumns;
623
+ var dtSettings = dt.settings()[0];
624
+ var dtInternalColumns = dtSettings.aoColumns;
616
625
 
617
626
  // Find any checkbox column(s)
618
627
  dt.columns().iterator('column', function (s, idx) {
@@ -636,33 +645,36 @@ function initCheckboxHeader( dt, headerCheckbox ) {
636
645
  .on('change', function () {
637
646
  if (this.checked) {
638
647
  if (headerCheckbox == 'select-page') {
639
- dt.rows({page: 'current'}).select()
648
+ dt.rows({page: 'current'}).select();
640
649
  } else {
641
650
  dt.rows({search: 'applied'}).select();
642
651
  }
643
652
  }
644
653
  else {
645
- dt.rows({selected: true}).deselect();
654
+ if (headerCheckbox == 'select-page') {
655
+ dt.rows({page: 'current', selected: true}).deselect();
656
+ }
657
+ else {
658
+ dt.rows({selected: true}).deselect();
659
+ }
646
660
  }
647
661
  })
648
662
  .on('click', function (e) {
649
663
  e.stopPropagation();
650
664
  });
651
-
665
+
652
666
  // Update the header checkbox's state when the selection in the
653
667
  // table changes
654
668
  dt.on('draw select deselect', function (e, pass, type) {
655
669
  if (type === 'row' || ! type) {
656
- var count = dt.rows({selected: true}).count();
657
- var search = dt.rows({search: 'applied', selected: true}).count();
658
- var available = headerCheckbox == 'select-page' ? dt.rows({page: 'current'}).count() : dt.rows({search: 'applied'}).count();
670
+ var nums = headerCheckboxState(dt, headerCheckbox);
659
671
 
660
- if (search && search <= count && search === available) {
672
+ if (nums.search && nums.search <= nums.count && nums.search === nums.available) {
661
673
  input
662
674
  .prop('checked', true)
663
675
  .prop('indeterminate', false);
664
676
  }
665
- else if (search === 0 && count === 0) {
677
+ else if (nums.search === 0 && nums.count === 0) {
666
678
  input
667
679
  .prop('checked', false)
668
680
  .prop('indeterminate', false);
@@ -678,6 +690,54 @@ function initCheckboxHeader( dt, headerCheckbox ) {
678
690
  });
679
691
  }
680
692
 
693
+ /**
694
+ * Determine the counts used to define the header checkbox's state
695
+ *
696
+ * @param {*} dt DT API
697
+ * @param {*} headerCheckbox Configuration for what the header checkbox does
698
+ * @returns Counts object
699
+ */
700
+ function headerCheckboxState(dt, headerCheckbox) {
701
+ var ctx = dt.settings()[0];
702
+ var selectable = ctx._select.selectable;
703
+ var available = 0;
704
+ var count = headerCheckbox == 'select-page'
705
+ ? dt.rows({page: 'current', selected: true}).count()
706
+ : dt.rows({selected: true}).count();
707
+ var search = headerCheckbox == 'select-page'
708
+ ? dt.rows({page: 'current', selected: true}).count()
709
+ : dt.rows({search: 'applied', selected: true}).count();
710
+
711
+ if (! selectable) {
712
+ available = headerCheckbox == 'select-page'
713
+ ? dt.rows({page: 'current'}).count()
714
+ : dt.rows({search: 'applied'}).count();
715
+ }
716
+ else {
717
+ // Need to count how many rows are actually selectable to know if all selectable
718
+ // rows are selected or not
719
+ var indexes = headerCheckbox == 'select-page'
720
+ ? dt.rows({page: 'current'}).indexes()
721
+ : dt.rows({search: 'applied'}).indexes();
722
+
723
+ for (var i=0 ; i<indexes.length ; i++) {
724
+ // For speed I use the internal DataTables object.
725
+ var rowInternal = ctx.aoData[indexes[i]];
726
+ var result = selectable(rowInternal._aData, rowInternal.nTr, indexes[i]);
727
+
728
+ if (result) {
729
+ available++;
730
+ }
731
+ }
732
+ }
733
+
734
+ return {
735
+ available: available,
736
+ count: count,
737
+ search: search
738
+ }
739
+ }
740
+
681
741
  /**
682
742
  * Initialisation of a new table. Attach event handlers and callbacks to allow
683
743
  * Select to operate correctly.
@@ -692,6 +752,9 @@ function init(ctx) {
692
752
  var api = new DataTable.Api(ctx);
693
753
  ctx._select_init = true;
694
754
 
755
+ // _select_set contains a list of the ids of all rows that are selected
756
+ ctx._select_set = [];
757
+
695
758
  // Row callback so that classes can be added to rows and cells if the item
696
759
  // was selected before the element was created. This will happen with the
697
760
  // `deferRender` option enabled.
@@ -702,9 +765,15 @@ function init(ctx) {
702
765
  ctx.aoRowCreatedCallback.push(function (row, data, index) {
703
766
  var i, ien;
704
767
  var d = ctx.aoData[index];
768
+ var id = api.row(index).id();
705
769
 
706
770
  // Row
707
- if (d._select_selected) {
771
+ if (
772
+ d._select_selected ||
773
+ (id !== 'undefined' && ctx._select_set.includes(id))
774
+ ) {
775
+ d._select_selected = true;
776
+
708
777
  $(row)
709
778
  .addClass(ctx._select.className)
710
779
  .find('input.' + checkboxClass(true)).prop('checked', true);
@@ -723,46 +792,7 @@ function init(ctx) {
723
792
  }
724
793
  );
725
794
 
726
- // On Ajax reload we want to reselect all rows which are currently selected,
727
- // if there is an rowId (i.e. a unique value to identify each row with)
728
- api.on('preXhr.dt.dtSelect', function (e, settings) {
729
- if (settings !== api.settings()[0]) {
730
- // Not triggered by our DataTable!
731
- return;
732
- }
733
-
734
- // note that column selection doesn't need to be cached and then
735
- // reselected, as they are already selected
736
- var rows = api
737
- .rows({ selected: true })
738
- .ids(true)
739
- .filter(function (d) {
740
- return d !== undefined;
741
- });
742
-
743
- var cells = api
744
- .cells({ selected: true })
745
- .eq(0)
746
- .map(function (cellIdx) {
747
- var id = api.row(cellIdx.row).id(true);
748
- return id ? { row: id, column: cellIdx.column } : undefined;
749
- })
750
- .filter(function (d) {
751
- return d !== undefined;
752
- });
753
-
754
- // On the next draw, reselect the currently selected items
755
- api.one('draw.dt.dtSelect', function () {
756
- api.rows(rows).select();
757
-
758
- // `cells` is not a cell index selector, so it needs a loop
759
- if (cells.any()) {
760
- cells.each(function (id) {
761
- api.cells(id.row, id.column).select();
762
- });
763
- }
764
- });
765
- });
795
+ _cumulativeEvents(api);
766
796
 
767
797
  // Update the table information element with selected item summary
768
798
  api.on('info.dt', function (e, ctx, node) {
@@ -935,6 +965,57 @@ function _safeId(node) {
935
965
  return node.id.replace(/[^a-zA-Z0-9\-\_]/g, '-');
936
966
  }
937
967
 
968
+ /**
969
+ * Set up event handlers for cumulative selection
970
+ *
971
+ * @param {*} api DT API instance
972
+ */
973
+ function _cumulativeEvents(api) {
974
+ // Add event listeners to add / remove from the _select_set
975
+ api.on('select', function (e, dt, type, indexes) {
976
+ // Only support for rows at the moment
977
+ if (type !== 'row') {
978
+ return;
979
+ }
980
+
981
+ var ctx = api.settings()[0];
982
+
983
+ _add(api, ctx._select_set, indexes);
984
+ });
985
+
986
+ api.on('deselect', function (e, dt, type, indexes) {
987
+ // Only support for rows at the moment
988
+ if (type !== 'row') {
989
+ return;
990
+ }
991
+
992
+ var ctx = api.settings()[0];
993
+
994
+ _remove(api, ctx._select_set, indexes);
995
+ });
996
+ }
997
+
998
+ function _add(api, arr, indexes) {
999
+ for (var i=0 ; i<indexes.length ; i++) {
1000
+ var id = api.row(indexes[i]).id();
1001
+
1002
+ if (id && id !== 'undefined' && ! arr.includes(id)) {
1003
+ arr.push(id);
1004
+ }
1005
+ }
1006
+ }
1007
+
1008
+ function _remove(api, arr, indexes) {
1009
+ for (var i=0 ; i<indexes.length ; i++) {
1010
+ var id = api.row(indexes[i]).id();
1011
+ var idx = arr.indexOf(id);
1012
+
1013
+ if (idx !== -1) {
1014
+ arr.splice(idx, 1);
1015
+ }
1016
+ }
1017
+ }
1018
+
938
1019
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
939
1020
  * DataTables selectors
940
1021
  */
@@ -1083,10 +1164,15 @@ apiRegister('select.style()', function (style) {
1083
1164
  // Add / remove mouse event handlers. They aren't required when only
1084
1165
  // API selection is available
1085
1166
  var dt = new DataTable.Api(ctx);
1086
- disableMouseSelection(dt);
1087
1167
 
1088
1168
  if (style !== 'api') {
1089
- enableMouseSelection(dt);
1169
+ dt.ready(function () {
1170
+ disableMouseSelection(dt);
1171
+ enableMouseSelection(dt);
1172
+ });
1173
+ }
1174
+ else {
1175
+ disableMouseSelection(dt);
1090
1176
  }
1091
1177
 
1092
1178
  eventTrigger(new DataTable.Api(ctx), 'selectStyle', [style]);
@@ -1099,16 +1185,36 @@ apiRegister('select.selector()', function (selector) {
1099
1185
  }
1100
1186
 
1101
1187
  return this.iterator('table', function (ctx) {
1102
- disableMouseSelection(new DataTable.Api(ctx));
1188
+ var dt = new DataTable.Api(ctx);
1189
+ var style = ctx._select.style;
1190
+
1191
+ disableMouseSelection(dt);
1103
1192
 
1104
1193
  ctx._select.selector = selector;
1105
1194
 
1106
- if (ctx._select.style !== 'api') {
1107
- enableMouseSelection(new DataTable.Api(ctx));
1195
+ if (style && style !== 'api') {
1196
+ dt.ready(function () {
1197
+ disableMouseSelection(dt);
1198
+ enableMouseSelection(dt);
1199
+ });
1200
+ }
1201
+ else {
1202
+ disableMouseSelection(dt);
1108
1203
  }
1109
1204
  });
1110
1205
  });
1111
1206
 
1207
+ apiRegister('select.selectable()', function (set) {
1208
+ let ctx = this.context[0];
1209
+
1210
+ if (set) {
1211
+ ctx._select.selectable = set;
1212
+ return this;
1213
+ }
1214
+
1215
+ return ctx._select.selectable;
1216
+ });
1217
+
1112
1218
  apiRegister('select.last()', function (set) {
1113
1219
  let ctx = this.context[0];
1114
1220
 
@@ -1120,8 +1226,17 @@ apiRegister('select.last()', function (set) {
1120
1226
  return ctx._select_lastCell;
1121
1227
  });
1122
1228
 
1229
+ apiRegister('select.cumulative()', function () {
1230
+ let ctx = this.context[0];
1231
+
1232
+ return ctx && ctx._select_set
1233
+ ? ctx._select_set
1234
+ : [];
1235
+ });
1236
+
1123
1237
  apiRegisterPlural('rows().select()', 'row().select()', function (select) {
1124
1238
  var api = this;
1239
+ var selectedIndexes = [];
1125
1240
 
1126
1241
  if (select === false) {
1127
1242
  return this.deselect();
@@ -1136,9 +1251,20 @@ apiRegisterPlural('rows().select()', 'row().select()', function (select) {
1136
1251
  var dtData = ctx.aoData[idx];
1137
1252
  var dtColumns = ctx.aoColumns;
1138
1253
 
1254
+ if (ctx._select.selectable) {
1255
+ var result = ctx._select.selectable(dtData._aData, dtData.nTr, idx);
1256
+
1257
+ if (result === false) {
1258
+ // Not selectable - do nothing
1259
+ return;
1260
+ }
1261
+ }
1262
+
1139
1263
  $(dtData.nTr).addClass(ctx._select.className);
1140
1264
  dtData._select_selected = true;
1141
1265
 
1266
+ selectedIndexes.push(idx);
1267
+
1142
1268
  for (var i=0 ; i<dtColumns.length ; i++) {
1143
1269
  var col = dtColumns[i];
1144
1270
 
@@ -1163,8 +1289,8 @@ apiRegisterPlural('rows().select()', 'row().select()', function (select) {
1163
1289
  }
1164
1290
  });
1165
1291
 
1166
- this.iterator('table', function (ctx, i) {
1167
- eventTrigger(api, 'select', ['row', api[i]], true);
1292
+ this.iterator('table', function (ct) {
1293
+ eventTrigger(api, 'select', ['row', selectedIndexes], true);
1168
1294
  });
1169
1295
 
1170
1296
  return this;
@@ -1526,6 +1652,8 @@ $.each(['Row', 'Column', 'Cell'], function (i, item) {
1526
1652
  init: function (dt) {
1527
1653
  var that = this;
1528
1654
 
1655
+ this.active(dt.select.items() === lc);
1656
+
1529
1657
  dt.on('selectItems.dt.DT', function (e, ctx, items) {
1530
1658
  that.active(items === lc);
1531
1659
  });
@@ -1576,8 +1704,18 @@ DataTable.render.select = function (valueProp, nameProp) {
1576
1704
  var dtRow = meta.settings.aoData[meta.row];
1577
1705
  var selected = dtRow._select_selected;
1578
1706
  var ariaLabel = meta.settings.oLanguage.select.aria.rowCheckbox;
1707
+ var selectable = meta.settings._select.selectable;
1579
1708
 
1580
1709
  if (type === 'display') {
1710
+ // Check if the row is selectable before showing the checkbox
1711
+ if (selectable) {
1712
+ var result = selectable(row, dtRow.nTr, meta.row);
1713
+
1714
+ if (result === false) {
1715
+ return '';
1716
+ }
1717
+ }
1718
+
1581
1719
  return $('<input>')
1582
1720
  .attr({
1583
1721
  'aria-label': ariaLabel,
@@ -1636,11 +1774,10 @@ $.fn.DataTable.select = DataTable.select;
1636
1774
  * Initialisation
1637
1775
  */
1638
1776
 
1639
- // DataTables creation - check if select has been defined in the options. Note
1640
- // this required that the table be in the document! If it isn't then something
1641
- // needs to trigger this method unfortunately. The next major release of
1642
- // DataTables will rework the events and address this.
1643
- $(document).on('preInit.dt.dtSelect', function (e, ctx) {
1777
+ // DataTables creation - we need this to run _before_ data is read in, but
1778
+ // for backwards compat. we also run again on preInit. If it happens twice
1779
+ // it will simply do nothing the second time around.
1780
+ $(document).on('i18n.dt.dtSelect preInit.dt.dtSelect', function (e, ctx) {
1644
1781
  if (e.namespace !== 'dt') {
1645
1782
  return;
1646
1783
  }
@@ -1,4 +1,4 @@
1
- /*! Select for DataTables 2.0.5
1
+ /*! Select for DataTables 2.1.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){"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 u(e){var t=_.select.classes.checkbox;return e?t.replace(/ /g,"."):t}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"+b(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,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"+b(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())||v(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 f(e){return e.mRender&&"selectCheckbox"===e.mRender._name}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,a){var l=o.settings()[0].aoColumns;o.columns().iterator("column",function(e,t){var n;f(l[t])&&(t=o.column(t).header(),m("input",t).length||(n=m("<input>").attr({class:u(!0),type:"checkbox","aria-label":o.i18n("select.aria.headerCheckbox")||"Select all rows"}).appendTo(t).on("change",function(){this.checked?("select-page"==a?o.rows({page:"current"}):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=("select-page"==a?o.rows({page:"current"}):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 h(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 v(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):h(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):h(t,s,c,l._select_lastCell?l._select_lastCell[s]:null):t[s](c).select(!a))}function b(e){return e.id.replace(/[^a-zA-Z0-9\-\_]/g,"-")}_.select={},_.select.classes={checkbox:"dt-select-checkbox"},_.select.version="2.0.5",_.select.init=function(c){var e,t,l,s,n,o,a,i,r,u,d,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",u="selected",f=!(d=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&&(u=l.className),void 0!==l.headerCheckbox)&&(d=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=u,!f&&m(c.table().node()).hasClass("selectable")&&c.select.style("os"),d||"select-page"===d||"select-all"===d)&&(p(c,d),c.on("init",function(){p(c,d)}))},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 g(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).find("input."+u(!0)).prop("checked",!0),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),m("input."+u(!0),c.table().header()).remove(),s(c),c.off(".dtSelect"),m("body").off(".dtSelect"+b(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 o=this;return!1===e?this.deselect():(this.iterator("row",function(e,t){v(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++){var n=s[c];null===n.sType&&o.columns().types(),f(n)&&((n=l.anCells)&&n[c]&&m("input."+u(!0),n[c]).prop("checked",!0),null!==l._aSortData)&&(l._aSortData[c]=null)}}),this.iterator("table",function(e,t){d(o,"select",["row",o[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){v(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){v(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 o=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++){var n=s[c];null===n.sType&&o.columns().types(),f(n)&&((n=l.anCells)&&n[c]&&m("input."+u(!0),l.anCells[c]).prop("checked",!1),null!==l._aSortData)&&(l._aSortData[c]=null)}}),this.iterator("table",function(e,t){d(o,"deselect",["row",o[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 x=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"+x++,l.on(g(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"+x++,t.on(g(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(){v(this.settings()[0],!0)},init:function(t,e,l){var s=this;l._eventNamespace=".select"+x++,t.on(g(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:_.versionCheck("2.1")?{oneOf:function(){return!1},allOf:function(){return!1},init:function(e,t,l){return f(t)}}: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){function l(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:u(),name:o?o(l):null,type:"checkbox",value:n?n(l):null,checked:c}).on("input",function(e){e.preventDefault(),this.checked=m(this).closest("tr").hasClass("selected")})[0]:"type"===t?"select-checkbox":"filter"!==t&&c?"X":""}var n=e?_.util.get(e):null,o=t?_.util.get(t):null;return l._name="selectCheckbox",l},_.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).toString():"cell"===t._select.items&&m(e).hasClass(t._select.className).toString()})},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 p=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 v(e){var t=p.select.classes.checkbox;return e?t.replace(/ /g,"."):t}function c(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"+_(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"),u(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"+_(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 b(e){return e.mRender&&"selectCheckbox"===e.mRender._name}function s(s,e){var t,l,c,n,o;"api"!==s.select.style()&&!1!==s.select.info()&&(o=s.settings()[0]._select_set.length||s.rows({selected:!0}).count(),t=s.columns({selected:!0}).count(),l=s.cells({selected:!0}).count(),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 o(o){var r,a=new p.Api(o);o._select_init=!0,o._select_set=[],o.aoRowCreatedCallback.push(function(e,t,l){var s,c,n=o.aoData[l],l=a.row(l).id();for((n._select_selected||"undefined"!==l&&o._select_set.includes(l))&&(n._select_selected=!0,m(e).addClass(o._select.className).find("input."+v(!0)).prop("checked",!0)),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)}),(r=a).on("select",function(e,t,l,s){if("row"===l)for(var l=r.settings()[0],c=r,n=l._select_set,o=s,a=0;a<o.length;a++){var i=c.row(o[a]).id();i&&"undefined"!==i&&!n.includes(i)&&n.push(i)}}),r.on("deselect",function(e,t,l,s){if("row"===l)for(var l=r.settings()[0],c=r,n=l._select_set,o=s,a=0;a<o.length;a++){var i=c.row(o[a]).id(),i=n.indexOf(i);-1!==i&&n.splice(i,1)}}),a.on("info.dt",function(e,t,l){t._select.infoEls.includes(l)||t._select.infoEls.push(l),s(a,l)}),a.on("select.dtSelect.dt deselect.dtSelect.dt",function(){o._select.infoEls.forEach(function(e){s(a,e)}),a.state.save()}),a.on("destroy.dtSelect",function(){m(a.rows({selected:!0}).nodes()).removeClass(a.settings()[0]._select.className),m("input."+v(!0),a.table().header()).remove(),c(a),a.off(".dtSelect"),m("body").off(".dtSelect"+_(a.table().node()))})}function d(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 p.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):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 _(e){return e.id.replace(/[^a-zA-Z0-9\-\_]/g,"-")}p.select={},p.select.classes={checkbox:"dt-select-checkbox"},p.select.version="2.1.0",p.select.init=function(o){var e,t,l,s,c,n,a,i,r,u,d,f,h,_=o.settings()[0];if(!p.versionCheck("2"))throw"Warning: Select requires DataTables 2 or newer";!_._select&&(e=o.state.loaded(),t=function(e,t,l){if(null!==l&&void 0!==l.select){if(o.rows({selected:!0}).any()&&o.rows().deselect(),void 0!==l.select.rows&&o.rows(l.select.rows).select(),o.columns({selected:!0}).any()&&o.columns().deselect(),void 0!==l.select.columns&&o.columns(l.select.columns).select(),o.cells({selected:!0}).any()&&o.cells().deselect(),void 0!==l.select.cells)for(var s=0;s<l.select.cells.length;s++)o.cell(l.select.cells[s].row,l.select.cells[s].column).select();o.state.save()}},o.on("stateSaveParams",function(e,t,l){l.select={},l.select.rows=o.rows({selected:!0}).ids(!0).toArray(),l.select.columns=o.columns({selected:!0})[0],l.select.cells=o.cells({selected:!0})[0].map(function(e){return{row:o.row(e.row).id(!0),column:e.column}})}).on("stateLoadParams",t).one("init",function(){t(0,0,e)}),s=_.oInit.select,l=p.defaults.select,l=void 0===s?l:s,s="row",a=!(n=!(c="api")),u="td, th",d="selected",h=!(f=r=!(i=null)),_._select={infoEls:[]},!0===l?(c="os",h=!0):"string"==typeof l?(c=l,h=!0):m.isPlainObject(l)&&(void 0!==l.blurable&&(n=l.blurable),void 0!==l.toggleable&&(a=l.toggleable),void 0!==l.info&&(r=l.info),void 0!==l.items&&(s=l.items),h=(c=void 0!==l.style?l.style:"os",!0),void 0!==l.selector&&(u=l.selector),void 0!==l.className&&(d=l.className),void 0!==l.headerCheckbox&&(f=l.headerCheckbox),void 0!==l.selectable)&&(i=l.selectable),o.select.selector(u),o.select.items(s),o.select.style(c),o.select.blurable(n),o.select.toggleable(a),o.select.info(r),o.select.selectable(i),_._select.className=d,!h&&m(o.table().node()).hasClass("selectable")&&o.select.style("os"),f||"select-page"===f||"select-all"===f)&&o.ready(function(){var c,n,l;n=f,l=(c=o).settings()[0].aoColumns,c.columns().iterator("column",function(e,t){var s;b(l[t])&&(t=c.column(t).header(),m("input",t).length||(s=m("<input>").attr({class:v(!0),type:"checkbox","aria-label":c.i18n("select.aria.headerCheckbox")||"Select all rows"}).appendTo(t).on("change",function(){this.checked?("select-page"==n?c.rows({page:"current"}):c.rows({search:"applied"})).select():("select-page"==n?c.rows({page:"current",selected:!0}):c.rows({selected:!0})).deselect()}).on("click",function(e){e.stopPropagation()}),c.on("draw select deselect",function(e,t,l){"row"!==l&&l||((l=function(e,t){var l=e.settings()[0],s=l._select.selectable,c=0,n=("select-page"==t?e.rows({page:"current",selected:!0}):e.rows({selected:!0})).count(),o=("select-page"==t?e.rows({page:"current",selected:!0}):e.rows({search:"applied",selected:!0})).count();if(s)for(var a=("select-page"==t?e.rows({page:"current"}):e.rows({search:"applied"})).indexes(),i=0;i<a.length;i++){var r=l.aoData[a[i]];s(r._aData,r.nTr,a[i])&&c++}else c=("select-page"==t?e.rows({page:"current"}):e.rows({search:"applied"})).count();return{available:c,count:n,search:o}}(c,n)).search&&l.search<=l.count&&l.search===l.available?s.prop("checked",!0).prop("indeterminate",!1):0===l.search&&0===l.count?s.prop("checked",!1).prop("indeterminate",!1):s.prop("checked",!1).prop("indeterminate",!0))})))})})},m.each([{type:"row",prop:"aoData"},{type:"column",prop:"aoColumns"}],function(e,i){p.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})}),p.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=p.Api.register,l=p.Api.registerPlural;function a(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){p.select.init(new p.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,u(new p.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||p.select.init(new p.Api(e)),e._select_init||o(e),e._select.style=l;var t=new p.Api(e);"api"!==l?t.ready(function(){c(t),n(t)}):c(t),u(new p.Api(e),"selectStyle",[l])})}),t("select.selector()",function(s){return void 0===s?this.context[0]._select.selector:this.iterator("table",function(e){var t=new p.Api(e),l=e._select.style;c(t),e._select.selector=s,l&&"api"!==l?t.ready(function(){c(t),n(t)}):c(t)})}),t("select.selectable()",function(e){var t=this.context[0];return e?(t._select.selectable=e,this):t._select.selectable}),t("select.last()",function(e){var t=this.context[0];return e?(t._select_lastCell=e,this):t._select_lastCell}),t("select.cumulative()",function(){var e=this.context[0];return e&&e._select_set?e._select_set:[]}),l("rows().select()","row().select()",function(e){var o=this,a=[];return!1===e?this.deselect():(this.iterator("row",function(e,t){f(e);var l=e.aoData[t],s=e.aoColumns;if(e._select.selectable&&!1===e._select.selectable(l._aData,l.nTr,t))return;m(l.nTr).addClass(e._select.className),l._select_selected=!0,a.push(t);for(var c=0;c<s.length;c++){var n=s[c];null===n.sType&&o.columns().types(),b(n)&&((n=l.anCells)&&n[c]&&m("input."+v(!0),n[c]).prop("checked",!0),null!==l._aSortData)&&(l._aSortData[c]=null)}}),this.iterator("table",function(e){u(o,"select",["row",a],!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 p.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];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){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 o=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++){var n=s[c];null===n.sType&&o.columns().types(),b(n)&&((n=l.anCells)&&n[c]&&m("input."+v(!0),l.anCells[c]).prop("checked",!1),null!==l._aSortData)&&(l._aSortData[c]=null)}}),this.iterator("table",function(e,t){u(o,"deselect",["row",o[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 p.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];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){u(l,"deselect",["cell",l[t]],!0)}),this});var g=0;return m.extend(p.ext.buttons,{selected:{text:a("selected","Selected"),className:"buttons-selected",limitTo:["rows","columns","cells"],init:function(l,e,s){var c=this;s._eventNamespace=".select"+g++,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:a("selectedSingle","Selected single"),className:"buttons-selected-single",init:function(t,e,l){var s=this;l._eventNamespace=".select"+g++,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:a("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:a("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"+g++,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:a("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();p.ext.buttons["select"+t+"s"]={text:a("select"+t+"s","Select "+c+"s"),className:"buttons-select-"+c+"s",action:function(){this.select.items(c)},init:function(e){var s=this;this.active(e.select.items()===c),e.on("selectItems.dt.DT",function(e,t,l){s.active(l===c)})}}}),p.type("select-checkbox",{className:"dt-select",detect:p.versionCheck("2.1")?{oneOf:function(){return!1},allOf:function(){return!1},init:function(e,t,l){return b(t)}}:function(e){return"select-checkbox"===e&&e},order:{pre:function(e){return"X"===e?-1:0}}}),m.extend(!0,p.defaults.oLanguage,{select:{aria:{rowCheckbox:"Select row"}}}),p.render.select=function(e,t){function l(e,t,l,s){var c=s.settings.aoData[s.row],n=c._select_selected,o=s.settings.oLanguage.select.aria.rowCheckbox,a=s.settings._select.selectable;return"display"!==t?"type"===t?"select-checkbox":"filter"!==t&&n?"X":"":a&&!1===a(l,c.nTr,s.row)?"":m("<input>").attr({"aria-label":o,class:v(),name:r?r(l):null,type:"checkbox",value:i?i(l):null,checked:n}).on("input",function(e){e.preventDefault(),this.checked=m(this).closest("tr").hasClass("selected")})[0]}var i=e?p.util.get(e):null,r=t?p.util.get(t):null;return l._name="selectCheckbox",l},p.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).toString():"cell"===t._select.items&&m(e).hasClass(t._select.className).toString()})},m.fn.DataTable.select=p.select,m(e).on("i18n.dt.dtSelect preInit.dt.dtSelect",function(e,t){"dt"===e.namespace&&p.select.init(new p.Api(t))}),p});
@@ -1,4 +1,4 @@
1
- /*! Select for DataTables 2.0.5
1
+ /*! Select for DataTables 2.1.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 checkboxClass(e){var t=DataTable.select.classes.checkbox;return e?t.replace(/ /g,"."):t}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 isCheckboxColumn(e){return e.mRender&&"selectCheckbox"===e.mRender._name}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,o){var l=a.settings()[0].aoColumns;a.columns().iterator("column",function(e,t){var n;isCheckboxColumn(l[t])&&(t=a.column(t).header(),$("input",t).length||(n=$("<input>").attr({class:checkboxClass(!0),type:"checkbox","aria-label":a.i18n("select.aria.headerCheckbox")||"Select all rows"}).appendTo(t).on("change",function(){this.checked?("select-page"==o?a.rows({page:"current"}):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=("select-page"==o?a.rows({page:"current"}):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).find("input."+checkboxClass(!0)).prop("checked",!0),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),$("input."+checkboxClass(!0),c.table().header()).remove(),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.classes={checkbox:"dt-select-checkbox"},DataTable.select.version="2.0.5",DataTable.select.init=function(c){var e,t,l,s,n,a,o,i,r,u,d,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",u="selected",f=!(d=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&&(u=l.className),void 0!==l.headerCheckbox)&&(d=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=u,!f&&$(c.table().node()).hasClass("selectable")&&c.select.style("os"),d||"select-page"===d||"select-all"===d)&&(initCheckboxHeader(c,d),c.on("init",function(){initCheckboxHeader(c,d)}))},$.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 a=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++){var n=s[c];null===n.sType&&a.columns().types(),isCheckboxColumn(n)&&((n=l.anCells)&&n[c]&&$("input."+checkboxClass(!0),n[c]).prop("checked",!0),null!==l._aSortData)&&(l._aSortData[c]=null)}}),this.iterator("table",function(e,t){eventTrigger(a,"select",["row",a[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 a=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++){var n=s[c];null===n.sType&&a.columns().types(),isCheckboxColumn(n)&&((n=l.anCells)&&n[c]&&$("input."+checkboxClass(!0),l.anCells[c]).prop("checked",!1),null!==l._aSortData)&&(l._aSortData[c]=null)}}),this.iterator("table",function(e,t){eventTrigger(a,"deselect",["row",a[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:DataTable.versionCheck("2.1")?{oneOf:function(){return!1},allOf:function(){return!1},init:function(e,t,l){return isCheckboxColumn(t)}}: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){function l(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:checkboxClass(),name:a?a(l):null,type:"checkbox",value:n?n(l):null,checked:c}).on("input",function(e){e.preventDefault(),this.checked=$(this).closest("tr").hasClass("selected")})[0]:"type"===t?"select-checkbox":"filter"!==t&&c?"X":""}var n=e?DataTable.util.get(e):null,a=t?DataTable.util.get(t):null;return l._name="selectCheckbox",l},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).toString():"cell"===t._select.items&&$(e).hasClass(t._select.className).toString()})},$.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 checkboxClass(e){var t=DataTable.select.classes.checkbox;return e?t.replace(/ /g,"."):t}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 isCheckboxColumn(e){return e.mRender&&"selectCheckbox"===e.mRender._name}function info(s,e){var t,l,c,n,a;"api"!==s.select.style()&&!1!==s.select.info()&&(a=s.settings()[0]._select_set.length||s.rows({selected:!0}).count(),t=s.columns({selected:!0}).count(),l=s.cells({selected:!0}).count(),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(c,n){var l=c.settings()[0].aoColumns;c.columns().iterator("column",function(e,t){var s;isCheckboxColumn(l[t])&&(t=c.column(t).header(),$("input",t).length||(s=$("<input>").attr({class:checkboxClass(!0),type:"checkbox","aria-label":c.i18n("select.aria.headerCheckbox")||"Select all rows"}).appendTo(t).on("change",function(){this.checked?("select-page"==n?c.rows({page:"current"}):c.rows({search:"applied"})).select():("select-page"==n?c.rows({page:"current",selected:!0}):c.rows({selected:!0})).deselect()}).on("click",function(e){e.stopPropagation()}),c.on("draw select deselect",function(e,t,l){"row"!==l&&l||((l=headerCheckboxState(c,n)).search&&l.search<=l.count&&l.search===l.available?s.prop("checked",!0).prop("indeterminate",!1):0===l.search&&0===l.count?s.prop("checked",!1).prop("indeterminate",!1):s.prop("checked",!1).prop("indeterminate",!0))})))})}function headerCheckboxState(e,t){var l=e.settings()[0],s=l._select.selectable,c=0,n=("select-page"==t?e.rows({page:"current",selected:!0}):e.rows({selected:!0})).count(),a=("select-page"==t?e.rows({page:"current",selected:!0}):e.rows({search:"applied",selected:!0})).count();if(s)for(var o=("select-page"==t?e.rows({page:"current"}):e.rows({search:"applied"})).indexes(),i=0;i<o.length;i++){var r=l.aoData[o[i]];s(r._aData,r.nTr,o[i])&&c++}else c=("select-page"==t?e.rows({page:"current"}):e.rows({search:"applied"})).count();return{available:c,count:n,search:a}}function init(a){var o=new DataTable.Api(a);a._select_init=!0,a._select_set=[],a.aoRowCreatedCallback.push(function(e,t,l){var s,c,n=a.aoData[l],l=o.row(l).id();for((n._select_selected||"undefined"!==l&&a._select_set.includes(l))&&(n._select_selected=!0,$(e).addClass(a._select.className).find("input."+checkboxClass(!0)).prop("checked",!0)),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)}),_cumulativeEvents(o),o.on("info.dt",function(e,t,l){t._select.infoEls.includes(l)||t._select.infoEls.push(l),info(o,l)}),o.on("select.dtSelect.dt deselect.dtSelect.dt",function(){a._select.infoEls.forEach(function(e){info(o,e)}),o.state.save()}),o.on("destroy.dtSelect",function(){$(o.rows({selected:!0}).nodes()).removeClass(o.settings()[0]._select.className),$("input."+checkboxClass(!0),o.table().header()).remove(),disableMouseSelection(o),o.off(".dtSelect"),$("body").off(".dtSelect"+_safeId(o.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,"-")}function _cumulativeEvents(c){c.on("select",function(e,t,l,s){"row"===l&&(l=c.settings()[0],_add(c,l._select_set,s))}),c.on("deselect",function(e,t,l,s){"row"===l&&(l=c.settings()[0],_remove(c,l._select_set,s))})}function _add(e,t,l){for(var s=0;s<l.length;s++){var c=e.row(l[s]).id();c&&"undefined"!==c&&!t.includes(c)&&t.push(c)}}function _remove(e,t,l){for(var s=0;s<l.length;s++){var c=e.row(l[s]).id(),c=t.indexOf(c);-1!==c&&t.splice(c,1)}}DataTable.select={},DataTable.select.classes={checkbox:"dt-select-checkbox"},DataTable.select.version="2.1.0",DataTable.select.init=function(c){var e,t,l,s,n,a,o,i,r,u,d,f,h,p=c.settings()[0];if(!DataTable.versionCheck("2"))throw"Warning: Select requires DataTables 2 or newer";!p._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=p.oInit.select,l=DataTable.defaults.select,l=void 0===s?l:s,s="row",o=!(a=!(n="api")),u="td, th",d="selected",h=!(f=r=!(i=null)),p._select={infoEls:[]},!0===l?(n="os",h=!0):"string"==typeof l?(n=l,h=!0):$.isPlainObject(l)&&(void 0!==l.blurable&&(a=l.blurable),void 0!==l.toggleable&&(o=l.toggleable),void 0!==l.info&&(r=l.info),void 0!==l.items&&(s=l.items),h=(n=void 0!==l.style?l.style:"os",!0),void 0!==l.selector&&(u=l.selector),void 0!==l.className&&(d=l.className),void 0!==l.headerCheckbox&&(f=l.headerCheckbox),void 0!==l.selectable)&&(i=l.selectable),c.select.selector(u),c.select.items(s),c.select.style(n),c.select.blurable(a),c.select.toggleable(o),c.select.info(r),c.select.selectable(i),p._select.className=d,!h&&$(c.table().node()).hasClass("selectable")&&c.select.style("os"),f||"select-page"===f||"select-all"===f)&&c.ready(function(){initCheckboxHeader(c,f)})},$.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);"api"!==l?t.ready(function(){disableMouseSelection(t),enableMouseSelection(t)}):disableMouseSelection(t),eventTrigger(new DataTable.Api(e),"selectStyle",[l])})}),apiRegister("select.selector()",function(s){return void 0===s?this.context[0]._select.selector:this.iterator("table",function(e){var t=new DataTable.Api(e),l=e._select.style;disableMouseSelection(t),e._select.selector=s,l&&"api"!==l?t.ready(function(){disableMouseSelection(t),enableMouseSelection(t)}):disableMouseSelection(t)})}),apiRegister("select.selectable()",function(e){var t=this.context[0];return e?(t._select.selectable=e,this):t._select.selectable}),apiRegister("select.last()",function(e){var t=this.context[0];return e?(t._select_lastCell=e,this):t._select_lastCell}),apiRegister("select.cumulative()",function(){var e=this.context[0];return e&&e._select_set?e._select_set:[]}),apiRegisterPlural("rows().select()","row().select()",function(e){var a=this,o=[];return!1===e?this.deselect():(this.iterator("row",function(e,t){clear(e);var l=e.aoData[t],s=e.aoColumns;if(e._select.selectable&&!1===e._select.selectable(l._aData,l.nTr,t))return;$(l.nTr).addClass(e._select.className),l._select_selected=!0,o.push(t);for(var c=0;c<s.length;c++){var n=s[c];null===n.sType&&a.columns().types(),isCheckboxColumn(n)&&((n=l.anCells)&&n[c]&&$("input."+checkboxClass(!0),n[c]).prop("checked",!0),null!==l._aSortData)&&(l._aSortData[c]=null)}}),this.iterator("table",function(e){eventTrigger(a,"select",["row",o],!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 a=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++){var n=s[c];null===n.sType&&a.columns().types(),isCheckboxColumn(n)&&((n=l.anCells)&&n[c]&&$("input."+checkboxClass(!0),l.anCells[c]).prop("checked",!1),null!==l._aSortData)&&(l._aSortData[c]=null)}}),this.iterator("table",function(e,t){eventTrigger(a,"deselect",["row",a[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;this.active(e.select.items()===c),e.on("selectItems.dt.DT",function(e,t,l){s.active(l===c)})}}}),DataTable.type("select-checkbox",{className:"dt-select",detect:DataTable.versionCheck("2.1")?{oneOf:function(){return!1},allOf:function(){return!1},init:function(e,t,l){return isCheckboxColumn(t)}}: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){function l(e,t,l,s){var c=s.settings.aoData[s.row],n=c._select_selected,a=s.settings.oLanguage.select.aria.rowCheckbox,o=s.settings._select.selectable;return"display"!==t?"type"===t?"select-checkbox":"filter"!==t&&n?"X":"":o&&!1===o(l,c.nTr,s.row)?"":$("<input>").attr({"aria-label":a,class:checkboxClass(),name:r?r(l):null,type:"checkbox",value:i?i(l):null,checked:n}).on("input",function(e){e.preventDefault(),this.checked=$(this).closest("tr").hasClass("selected")})[0]}var i=e?DataTable.util.get(e):null,r=t?DataTable.util.get(t):null;return l._name="selectCheckbox",l},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).toString():"cell"===t._select.items&&$(e).hasClass(t._select.className).toString()})},$.fn.DataTable.select=DataTable.select,$(document).on("i18n.dt.dtSelect preInit.dt.dtSelect",function(e,t){"dt"===e.namespace&&DataTable.select.init(new DataTable.Api(t))});export default DataTable;
@@ -1,4 +1,4 @@
1
- /*! Select for DataTables 2.0.5
1
+ /*! Select for DataTables 2.1.0
2
2
  * © SpryMedia Ltd - datatables.net/license/mit
3
3
  */
4
4
 
@@ -16,7 +16,7 @@ DataTable.select.classes = {
16
16
  checkbox: 'dt-select-checkbox'
17
17
  };
18
18
 
19
- DataTable.select.version = '2.0.5';
19
+ DataTable.select.version = '2.1.0';
20
20
 
21
21
  DataTable.select.init = function (dt) {
22
22
  var ctx = dt.settings()[0];
@@ -86,6 +86,7 @@ DataTable.select.init = function (dt) {
86
86
  var style = 'api';
87
87
  var blurable = false;
88
88
  var toggleable = true;
89
+ var selectable = null;
89
90
  var info = true;
90
91
  var selector = 'td, th';
91
92
  var className = 'selected';
@@ -142,6 +143,10 @@ DataTable.select.init = function (dt) {
142
143
  if (opts.headerCheckbox !== undefined) {
143
144
  headerCheckbox = opts.headerCheckbox;
144
145
  }
146
+
147
+ if (opts.selectable !== undefined) {
148
+ selectable = opts.selectable;
149
+ }
145
150
  }
146
151
 
147
152
  dt.select.selector(selector);
@@ -150,6 +155,7 @@ DataTable.select.init = function (dt) {
150
155
  dt.select.blurable(blurable);
151
156
  dt.select.toggleable(toggleable);
152
157
  dt.select.info(info);
158
+ dt.select.selectable(selectable);
153
159
  ctx._select.className = className;
154
160
 
155
161
  // If the init options haven't enabled select, but there is a selectable
@@ -159,11 +165,9 @@ DataTable.select.init = function (dt) {
159
165
  }
160
166
 
161
167
  // Insert a checkbox into the header if needed - might need to wait
162
- // for init complete, or it might already be done
168
+ // for init complete
163
169
  if (headerCheckbox || headerCheckbox === 'select-page' || headerCheckbox === 'select-all') {
164
- initCheckboxHeader(dt, headerCheckbox);
165
-
166
- dt.on('init', function () {
170
+ dt.ready(function () {
167
171
  initCheckboxHeader(dt, headerCheckbox);
168
172
  });
169
173
  }
@@ -530,9 +534,13 @@ function info(api, node) {
530
534
  return;
531
535
  }
532
536
 
533
- var rows = api.rows({ selected: true }).flatten().length;
534
- var columns = api.columns({ selected: true }).flatten().length;
535
- var cells = api.cells({ selected: true }).flatten().length;
537
+ // If _select_set has any length, then ids are available and should be used
538
+ // as the counter. Otherwise use the API to workout how many rows are
539
+ // selected.
540
+ var rowSetLength = api.settings()[0]._select_set.length;
541
+ var rows = rowSetLength ? rowSetLength : api.rows({ selected: true }).count();
542
+ var columns = api.columns({ selected: true }).count();
543
+ var cells = api.cells({ selected: true }).count();
536
544
 
537
545
  var add = function (el, name, num) {
538
546
  el.append(
@@ -572,7 +580,8 @@ function info(api, node) {
572
580
  * @param {*} headerCheckbox the header checkbox option
573
581
  */
574
582
  function initCheckboxHeader( dt, headerCheckbox ) {
575
- var dtInternalColumns = dt.settings()[0].aoColumns;
583
+ var dtSettings = dt.settings()[0];
584
+ var dtInternalColumns = dtSettings.aoColumns;
576
585
 
577
586
  // Find any checkbox column(s)
578
587
  dt.columns().iterator('column', function (s, idx) {
@@ -596,33 +605,36 @@ function initCheckboxHeader( dt, headerCheckbox ) {
596
605
  .on('change', function () {
597
606
  if (this.checked) {
598
607
  if (headerCheckbox == 'select-page') {
599
- dt.rows({page: 'current'}).select()
608
+ dt.rows({page: 'current'}).select();
600
609
  } else {
601
610
  dt.rows({search: 'applied'}).select();
602
611
  }
603
612
  }
604
613
  else {
605
- dt.rows({selected: true}).deselect();
614
+ if (headerCheckbox == 'select-page') {
615
+ dt.rows({page: 'current', selected: true}).deselect();
616
+ }
617
+ else {
618
+ dt.rows({selected: true}).deselect();
619
+ }
606
620
  }
607
621
  })
608
622
  .on('click', function (e) {
609
623
  e.stopPropagation();
610
624
  });
611
-
625
+
612
626
  // Update the header checkbox's state when the selection in the
613
627
  // table changes
614
628
  dt.on('draw select deselect', function (e, pass, type) {
615
629
  if (type === 'row' || ! type) {
616
- var count = dt.rows({selected: true}).count();
617
- var search = dt.rows({search: 'applied', selected: true}).count();
618
- var available = headerCheckbox == 'select-page' ? dt.rows({page: 'current'}).count() : dt.rows({search: 'applied'}).count();
630
+ var nums = headerCheckboxState(dt, headerCheckbox);
619
631
 
620
- if (search && search <= count && search === available) {
632
+ if (nums.search && nums.search <= nums.count && nums.search === nums.available) {
621
633
  input
622
634
  .prop('checked', true)
623
635
  .prop('indeterminate', false);
624
636
  }
625
- else if (search === 0 && count === 0) {
637
+ else if (nums.search === 0 && nums.count === 0) {
626
638
  input
627
639
  .prop('checked', false)
628
640
  .prop('indeterminate', false);
@@ -638,6 +650,54 @@ function initCheckboxHeader( dt, headerCheckbox ) {
638
650
  });
639
651
  }
640
652
 
653
+ /**
654
+ * Determine the counts used to define the header checkbox's state
655
+ *
656
+ * @param {*} dt DT API
657
+ * @param {*} headerCheckbox Configuration for what the header checkbox does
658
+ * @returns Counts object
659
+ */
660
+ function headerCheckboxState(dt, headerCheckbox) {
661
+ var ctx = dt.settings()[0];
662
+ var selectable = ctx._select.selectable;
663
+ var available = 0;
664
+ var count = headerCheckbox == 'select-page'
665
+ ? dt.rows({page: 'current', selected: true}).count()
666
+ : dt.rows({selected: true}).count();
667
+ var search = headerCheckbox == 'select-page'
668
+ ? dt.rows({page: 'current', selected: true}).count()
669
+ : dt.rows({search: 'applied', selected: true}).count();
670
+
671
+ if (! selectable) {
672
+ available = headerCheckbox == 'select-page'
673
+ ? dt.rows({page: 'current'}).count()
674
+ : dt.rows({search: 'applied'}).count();
675
+ }
676
+ else {
677
+ // Need to count how many rows are actually selectable to know if all selectable
678
+ // rows are selected or not
679
+ var indexes = headerCheckbox == 'select-page'
680
+ ? dt.rows({page: 'current'}).indexes()
681
+ : dt.rows({search: 'applied'}).indexes();
682
+
683
+ for (var i=0 ; i<indexes.length ; i++) {
684
+ // For speed I use the internal DataTables object.
685
+ var rowInternal = ctx.aoData[indexes[i]];
686
+ var result = selectable(rowInternal._aData, rowInternal.nTr, indexes[i]);
687
+
688
+ if (result) {
689
+ available++;
690
+ }
691
+ }
692
+ }
693
+
694
+ return {
695
+ available: available,
696
+ count: count,
697
+ search: search
698
+ }
699
+ }
700
+
641
701
  /**
642
702
  * Initialisation of a new table. Attach event handlers and callbacks to allow
643
703
  * Select to operate correctly.
@@ -652,6 +712,9 @@ function init(ctx) {
652
712
  var api = new DataTable.Api(ctx);
653
713
  ctx._select_init = true;
654
714
 
715
+ // _select_set contains a list of the ids of all rows that are selected
716
+ ctx._select_set = [];
717
+
655
718
  // Row callback so that classes can be added to rows and cells if the item
656
719
  // was selected before the element was created. This will happen with the
657
720
  // `deferRender` option enabled.
@@ -662,9 +725,15 @@ function init(ctx) {
662
725
  ctx.aoRowCreatedCallback.push(function (row, data, index) {
663
726
  var i, ien;
664
727
  var d = ctx.aoData[index];
728
+ var id = api.row(index).id();
665
729
 
666
730
  // Row
667
- if (d._select_selected) {
731
+ if (
732
+ d._select_selected ||
733
+ (id !== 'undefined' && ctx._select_set.includes(id))
734
+ ) {
735
+ d._select_selected = true;
736
+
668
737
  $(row)
669
738
  .addClass(ctx._select.className)
670
739
  .find('input.' + checkboxClass(true)).prop('checked', true);
@@ -683,46 +752,7 @@ function init(ctx) {
683
752
  }
684
753
  );
685
754
 
686
- // On Ajax reload we want to reselect all rows which are currently selected,
687
- // if there is an rowId (i.e. a unique value to identify each row with)
688
- api.on('preXhr.dt.dtSelect', function (e, settings) {
689
- if (settings !== api.settings()[0]) {
690
- // Not triggered by our DataTable!
691
- return;
692
- }
693
-
694
- // note that column selection doesn't need to be cached and then
695
- // reselected, as they are already selected
696
- var rows = api
697
- .rows({ selected: true })
698
- .ids(true)
699
- .filter(function (d) {
700
- return d !== undefined;
701
- });
702
-
703
- var cells = api
704
- .cells({ selected: true })
705
- .eq(0)
706
- .map(function (cellIdx) {
707
- var id = api.row(cellIdx.row).id(true);
708
- return id ? { row: id, column: cellIdx.column } : undefined;
709
- })
710
- .filter(function (d) {
711
- return d !== undefined;
712
- });
713
-
714
- // On the next draw, reselect the currently selected items
715
- api.one('draw.dt.dtSelect', function () {
716
- api.rows(rows).select();
717
-
718
- // `cells` is not a cell index selector, so it needs a loop
719
- if (cells.any()) {
720
- cells.each(function (id) {
721
- api.cells(id.row, id.column).select();
722
- });
723
- }
724
- });
725
- });
755
+ _cumulativeEvents(api);
726
756
 
727
757
  // Update the table information element with selected item summary
728
758
  api.on('info.dt', function (e, ctx, node) {
@@ -895,6 +925,57 @@ function _safeId(node) {
895
925
  return node.id.replace(/[^a-zA-Z0-9\-\_]/g, '-');
896
926
  }
897
927
 
928
+ /**
929
+ * Set up event handlers for cumulative selection
930
+ *
931
+ * @param {*} api DT API instance
932
+ */
933
+ function _cumulativeEvents(api) {
934
+ // Add event listeners to add / remove from the _select_set
935
+ api.on('select', function (e, dt, type, indexes) {
936
+ // Only support for rows at the moment
937
+ if (type !== 'row') {
938
+ return;
939
+ }
940
+
941
+ var ctx = api.settings()[0];
942
+
943
+ _add(api, ctx._select_set, indexes);
944
+ });
945
+
946
+ api.on('deselect', function (e, dt, type, indexes) {
947
+ // Only support for rows at the moment
948
+ if (type !== 'row') {
949
+ return;
950
+ }
951
+
952
+ var ctx = api.settings()[0];
953
+
954
+ _remove(api, ctx._select_set, indexes);
955
+ });
956
+ }
957
+
958
+ function _add(api, arr, indexes) {
959
+ for (var i=0 ; i<indexes.length ; i++) {
960
+ var id = api.row(indexes[i]).id();
961
+
962
+ if (id && id !== 'undefined' && ! arr.includes(id)) {
963
+ arr.push(id);
964
+ }
965
+ }
966
+ }
967
+
968
+ function _remove(api, arr, indexes) {
969
+ for (var i=0 ; i<indexes.length ; i++) {
970
+ var id = api.row(indexes[i]).id();
971
+ var idx = arr.indexOf(id);
972
+
973
+ if (idx !== -1) {
974
+ arr.splice(idx, 1);
975
+ }
976
+ }
977
+ }
978
+
898
979
  /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
899
980
  * DataTables selectors
900
981
  */
@@ -1043,10 +1124,15 @@ apiRegister('select.style()', function (style) {
1043
1124
  // Add / remove mouse event handlers. They aren't required when only
1044
1125
  // API selection is available
1045
1126
  var dt = new DataTable.Api(ctx);
1046
- disableMouseSelection(dt);
1047
1127
 
1048
1128
  if (style !== 'api') {
1049
- enableMouseSelection(dt);
1129
+ dt.ready(function () {
1130
+ disableMouseSelection(dt);
1131
+ enableMouseSelection(dt);
1132
+ });
1133
+ }
1134
+ else {
1135
+ disableMouseSelection(dt);
1050
1136
  }
1051
1137
 
1052
1138
  eventTrigger(new DataTable.Api(ctx), 'selectStyle', [style]);
@@ -1059,16 +1145,36 @@ apiRegister('select.selector()', function (selector) {
1059
1145
  }
1060
1146
 
1061
1147
  return this.iterator('table', function (ctx) {
1062
- disableMouseSelection(new DataTable.Api(ctx));
1148
+ var dt = new DataTable.Api(ctx);
1149
+ var style = ctx._select.style;
1150
+
1151
+ disableMouseSelection(dt);
1063
1152
 
1064
1153
  ctx._select.selector = selector;
1065
1154
 
1066
- if (ctx._select.style !== 'api') {
1067
- enableMouseSelection(new DataTable.Api(ctx));
1155
+ if (style && style !== 'api') {
1156
+ dt.ready(function () {
1157
+ disableMouseSelection(dt);
1158
+ enableMouseSelection(dt);
1159
+ });
1160
+ }
1161
+ else {
1162
+ disableMouseSelection(dt);
1068
1163
  }
1069
1164
  });
1070
1165
  });
1071
1166
 
1167
+ apiRegister('select.selectable()', function (set) {
1168
+ let ctx = this.context[0];
1169
+
1170
+ if (set) {
1171
+ ctx._select.selectable = set;
1172
+ return this;
1173
+ }
1174
+
1175
+ return ctx._select.selectable;
1176
+ });
1177
+
1072
1178
  apiRegister('select.last()', function (set) {
1073
1179
  let ctx = this.context[0];
1074
1180
 
@@ -1080,8 +1186,17 @@ apiRegister('select.last()', function (set) {
1080
1186
  return ctx._select_lastCell;
1081
1187
  });
1082
1188
 
1189
+ apiRegister('select.cumulative()', function () {
1190
+ let ctx = this.context[0];
1191
+
1192
+ return ctx && ctx._select_set
1193
+ ? ctx._select_set
1194
+ : [];
1195
+ });
1196
+
1083
1197
  apiRegisterPlural('rows().select()', 'row().select()', function (select) {
1084
1198
  var api = this;
1199
+ var selectedIndexes = [];
1085
1200
 
1086
1201
  if (select === false) {
1087
1202
  return this.deselect();
@@ -1096,9 +1211,20 @@ apiRegisterPlural('rows().select()', 'row().select()', function (select) {
1096
1211
  var dtData = ctx.aoData[idx];
1097
1212
  var dtColumns = ctx.aoColumns;
1098
1213
 
1214
+ if (ctx._select.selectable) {
1215
+ var result = ctx._select.selectable(dtData._aData, dtData.nTr, idx);
1216
+
1217
+ if (result === false) {
1218
+ // Not selectable - do nothing
1219
+ return;
1220
+ }
1221
+ }
1222
+
1099
1223
  $(dtData.nTr).addClass(ctx._select.className);
1100
1224
  dtData._select_selected = true;
1101
1225
 
1226
+ selectedIndexes.push(idx);
1227
+
1102
1228
  for (var i=0 ; i<dtColumns.length ; i++) {
1103
1229
  var col = dtColumns[i];
1104
1230
 
@@ -1123,8 +1249,8 @@ apiRegisterPlural('rows().select()', 'row().select()', function (select) {
1123
1249
  }
1124
1250
  });
1125
1251
 
1126
- this.iterator('table', function (ctx, i) {
1127
- eventTrigger(api, 'select', ['row', api[i]], true);
1252
+ this.iterator('table', function (ct) {
1253
+ eventTrigger(api, 'select', ['row', selectedIndexes], true);
1128
1254
  });
1129
1255
 
1130
1256
  return this;
@@ -1486,6 +1612,8 @@ $.each(['Row', 'Column', 'Cell'], function (i, item) {
1486
1612
  init: function (dt) {
1487
1613
  var that = this;
1488
1614
 
1615
+ this.active(dt.select.items() === lc);
1616
+
1489
1617
  dt.on('selectItems.dt.DT', function (e, ctx, items) {
1490
1618
  that.active(items === lc);
1491
1619
  });
@@ -1536,8 +1664,18 @@ DataTable.render.select = function (valueProp, nameProp) {
1536
1664
  var dtRow = meta.settings.aoData[meta.row];
1537
1665
  var selected = dtRow._select_selected;
1538
1666
  var ariaLabel = meta.settings.oLanguage.select.aria.rowCheckbox;
1667
+ var selectable = meta.settings._select.selectable;
1539
1668
 
1540
1669
  if (type === 'display') {
1670
+ // Check if the row is selectable before showing the checkbox
1671
+ if (selectable) {
1672
+ var result = selectable(row, dtRow.nTr, meta.row);
1673
+
1674
+ if (result === false) {
1675
+ return '';
1676
+ }
1677
+ }
1678
+
1541
1679
  return $('<input>')
1542
1680
  .attr({
1543
1681
  'aria-label': ariaLabel,
@@ -1596,11 +1734,10 @@ $.fn.DataTable.select = DataTable.select;
1596
1734
  * Initialisation
1597
1735
  */
1598
1736
 
1599
- // DataTables creation - check if select has been defined in the options. Note
1600
- // this required that the table be in the document! If it isn't then something
1601
- // needs to trigger this method unfortunately. The next major release of
1602
- // DataTables will rework the events and address this.
1603
- $(document).on('preInit.dt.dtSelect', function (e, ctx) {
1737
+ // DataTables creation - we need this to run _before_ data is read in, but
1738
+ // for backwards compat. we also run again on preInit. If it happens twice
1739
+ // it will simply do nothing the second time around.
1740
+ $(document).on('i18n.dt.dtSelect preInit.dt.dtSelect', function (e, ctx) {
1604
1741
  if (e.namespace !== 'dt') {
1605
1742
  return;
1606
1743
  }
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": "2.0.5",
7
+ "version": "2.1.0",
8
8
  "files": [
9
9
  "js/**/*.js",
10
10
  "js/**/*.mjs",
package/types/types.d.ts CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  /// <reference types="jquery" />
9
9
 
10
- import DataTables from 'datatables.net';
10
+ import DataTables, {ObjectColumnRender} from 'datatables.net';
11
11
 
12
12
  export default DataTables;
13
13
 
@@ -107,6 +107,26 @@ declare module 'datatables.net' {
107
107
  version: string;
108
108
  }
109
109
  }
110
+
111
+ interface DataTablesStaticRender {
112
+ /**
113
+ * Display a checkbox in the column's cells to be used for and represent
114
+ * row selection.
115
+ */
116
+ select(): ObjectColumnRender;
117
+
118
+ /**
119
+ * Display a checkbox in the column's cells to be used for and represent
120
+ * row selection, with the `value` and `name` attributes for the checkbox
121
+ * `input` being set by properties from the row's data object.
122
+ *
123
+ * @param valueProp Name of the data property where the `value` for the
124
+ * checkbox is.
125
+ * @param nameProp Name of the data property where the `name` for the
126
+ * checkbox is.
127
+ */
128
+ select(valueProp: string, nameProp: string): ObjectColumnRender;
129
+ }
110
130
  }
111
131
 
112
132
  interface ConfigSelect {