tabulator-tables 5.2.2 → 5.2.5

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.
Files changed (42) hide show
  1. package/bower.json +1 -1
  2. package/dist/css/tabulator_bootstrap5.css +57 -32
  3. package/dist/css/tabulator_bootstrap5.css.map +1 -1
  4. package/dist/css/tabulator_bootstrap5.min.css +1 -1
  5. package/dist/css/tabulator_bootstrap5.min.css.map +1 -1
  6. package/dist/css/tabulator_bulma.css +12 -0
  7. package/dist/css/tabulator_bulma.css.map +1 -1
  8. package/dist/css/tabulator_bulma.min.css +1 -1
  9. package/dist/css/tabulator_bulma.min.css.map +1 -1
  10. package/dist/js/tabulator.js +175 -199
  11. package/dist/js/tabulator.js.map +1 -1
  12. package/dist/js/tabulator.min.js +2 -2
  13. package/dist/js/tabulator.min.js.map +1 -1
  14. package/dist/js/tabulator_esm.js +122 -152
  15. package/dist/js/tabulator_esm.js.map +1 -1
  16. package/dist/js/tabulator_esm.min.js +2 -2
  17. package/dist/js/tabulator_esm.min.js.map +1 -1
  18. package/package.json +1 -1
  19. package/src/js/core/CoreFeature.js +2 -2
  20. package/src/js/core/RowManager.js +3 -1
  21. package/src/js/core/cell/Cell.js +1 -2
  22. package/src/js/core/column/Column.js +1 -81
  23. package/src/js/core/rendering/Renderer.js +4 -0
  24. package/src/js/core/tools/DataLoader.js +3 -3
  25. package/src/js/core/tools/Popup.js +6 -0
  26. package/src/js/modules/DataTree/DataTree.js +17 -0
  27. package/src/js/modules/Download/defaults/downloaders/csv.js +2 -3
  28. package/src/js/modules/Download/defaults/downloaders/pdf.js +2 -3
  29. package/src/js/modules/Edit/List.js +3 -3
  30. package/src/js/modules/Export/Export.js +1 -2
  31. package/src/js/modules/Filter/Filter.js +1 -1
  32. package/src/js/modules/FrozenColumns/FrozenColumns.js +33 -41
  33. package/src/js/modules/GroupRows/GroupRows.js +4 -0
  34. package/src/js/modules/Interaction/Interaction.js +3 -3
  35. package/src/js/modules/MoveColumns/MoveColumns.js +1 -1
  36. package/src/js/modules/Page/Page.js +1 -2
  37. package/src/js/modules/Persistence/Persistence.js +1 -0
  38. package/src/js/modules/ResizeColumns/ResizeColumns.js +38 -7
  39. package/src/js/modules/Sort/Sort.js +2 -2
  40. package/src/js/modules/Validate/Validate.js +3 -3
  41. package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +61 -32
  42. package/src/scss/themes/bulma/tabulator_bulma.scss +47 -32
@@ -1,4 +1,4 @@
1
- /* Tabulator v5.2.2 (c) Oliver Folkerd 2022 */
1
+ /* Tabulator v5.2.5 (c) Oliver Folkerd 2022 */
2
2
  (function (global, factory) {
3
3
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
4
4
  typeof define === 'function' && define.amd ? define(factory) :
@@ -323,8 +323,8 @@
323
323
 
324
324
  _createClass(CoreFeature, [{
325
325
  key: "reloadData",
326
- value: function reloadData(data, silent) {
327
- return this.table.dataLoader.load(data, undefined, undefined, undefined, silent);
326
+ value: function reloadData(data, silent, columnsChanged) {
327
+ return this.table.dataLoader.load(data, undefined, undefined, undefined, silent, columnsChanged);
328
328
  } //////////////////////////////////////////
329
329
  ///////////// Localization ///////////////
330
330
  //////////////////////////////////////////
@@ -897,7 +897,6 @@
897
897
  break;
898
898
 
899
899
  case "undefined":
900
- case "null":
901
900
  this.element.innerHTML = "";
902
901
  break;
903
902
 
@@ -1277,7 +1276,6 @@
1277
1276
  }
1278
1277
  }
1279
1278
 
1280
- this.contentElement = this._bindEvents();
1281
1279
  this.contentElement = this._buildColumnHeaderContent();
1282
1280
  this.element.appendChild(this.contentElement);
1283
1281
 
@@ -1288,92 +1286,12 @@
1288
1286
  }
1289
1287
 
1290
1288
  this.dispatch("column-init", this);
1291
- }
1292
- }, {
1293
- key: "_bindEvents",
1294
- value: function _bindEvents() {
1295
- var _this3 = this;
1296
-
1297
- var def = this.definition,
1298
- dblTap,
1299
- tapHold,
1300
- tap; //setup header click event bindings
1301
-
1302
- if (typeof def.headerClick == "function") {
1303
- this.element.addEventListener("click", function (e) {
1304
- def.headerClick(e, _this3.getComponent());
1305
- });
1306
- }
1307
-
1308
- if (typeof def.headerDblClick == "function") {
1309
- this.element.addEventListener("dblclick", function (e) {
1310
- def.headerDblClick(e, _this3.getComponent());
1311
- });
1312
- }
1313
-
1314
- if (typeof def.headerContext == "function") {
1315
- this.element.addEventListener("contextmenu", function (e) {
1316
- def.headerContext(e, _this3.getComponent());
1317
- });
1318
- } //setup header tap event bindings
1319
-
1320
-
1321
- if (typeof def.headerTap == "function") {
1322
- tap = false;
1323
- this.element.addEventListener("touchstart", function (e) {
1324
- tap = true;
1325
- }, {
1326
- passive: true
1327
- });
1328
- this.element.addEventListener("touchend", function (e) {
1329
- if (tap) {
1330
- def.headerTap(e, _this3.getComponent());
1331
- }
1332
-
1333
- tap = false;
1334
- });
1335
- }
1336
-
1337
- if (typeof def.headerDblTap == "function") {
1338
- dblTap = null;
1339
- this.element.addEventListener("touchend", function (e) {
1340
- if (dblTap) {
1341
- clearTimeout(dblTap);
1342
- dblTap = null;
1343
- def.headerDblTap(e, _this3.getComponent());
1344
- } else {
1345
- dblTap = setTimeout(function () {
1346
- clearTimeout(dblTap);
1347
- dblTap = null;
1348
- }, 300);
1349
- }
1350
- });
1351
- }
1352
-
1353
- if (typeof def.headerTapHold == "function") {
1354
- tapHold = null;
1355
- this.element.addEventListener("touchstart", function (e) {
1356
- clearTimeout(tapHold);
1357
- tapHold = setTimeout(function () {
1358
- clearTimeout(tapHold);
1359
- tapHold = null;
1360
- tap = false;
1361
- def.headerTapHold(e, this.getComponent());
1362
- }, 1000);
1363
- }, {
1364
- passive: true
1365
- });
1366
- this.element.addEventListener("touchend", function (e) {
1367
- clearTimeout(tapHold);
1368
- tapHold = null;
1369
- });
1370
- }
1371
1289
  } //build header element for header
1372
1290
 
1373
1291
  }, {
1374
1292
  key: "_buildColumnHeader",
1375
1293
  value: function _buildColumnHeader() {
1376
- var _this4 = this;
1294
+ var _this3 = this;
1377
1295
 
1378
1296
  var def = this.definition,
1379
1297
  table = this.table;
@@ -1391,7 +1309,7 @@
1391
1309
  if (def.cssClass) {
1392
1310
  var classeNames = def.cssClass.split(" ");
1393
1311
  classeNames.forEach(function (className) {
1394
- _this4.element.classList.add(className);
1312
+ _this3.element.classList.add(className);
1395
1313
  });
1396
1314
  }
1397
1315
 
@@ -1434,7 +1352,7 @@
1434
1352
  }, {
1435
1353
  key: "_buildColumnHeaderTitle",
1436
1354
  value: function _buildColumnHeaderTitle() {
1437
- var _this5 = this;
1355
+ var _this4 = this;
1438
1356
 
1439
1357
  var def = this.definition;
1440
1358
  var titleHolderElement = document.createElement("div");
@@ -1450,7 +1368,7 @@
1450
1368
  titleElement.addEventListener("change", function () {
1451
1369
  def.title = titleElement.value;
1452
1370
 
1453
- _this5.dispatchExternal("columnTitleChanged", _this5.getComponent());
1371
+ _this4.dispatchExternal("columnTitleChanged", _this4.getComponent());
1454
1372
  });
1455
1373
  titleHolderElement.appendChild(titleElement);
1456
1374
 
@@ -1464,7 +1382,7 @@
1464
1382
  } else {
1465
1383
  if (def.field) {
1466
1384
  this.langBind("columns|" + def.field, function (text) {
1467
- _this5._formatColumnHeaderTitle(titleHolderElement, text || def.title || " ");
1385
+ _this4._formatColumnHeaderTitle(titleHolderElement, text || def.title || " ");
1468
1386
  });
1469
1387
  } else {
1470
1388
  this._formatColumnHeaderTitle(titleHolderElement, def.title || " ");
@@ -1492,7 +1410,6 @@
1492
1410
  break;
1493
1411
 
1494
1412
  case "undefined":
1495
- case "null":
1496
1413
  el.innerHTML = "";
1497
1414
  break;
1498
1415
 
@@ -1504,7 +1421,7 @@
1504
1421
  }, {
1505
1422
  key: "_buildGroupHeader",
1506
1423
  value: function _buildGroupHeader() {
1507
- var _this6 = this;
1424
+ var _this5 = this;
1508
1425
 
1509
1426
  this.element.classList.add("tabulator-col-group");
1510
1427
  this.element.setAttribute("role", "columngroup");
@@ -1513,7 +1430,7 @@
1513
1430
  if (this.definition.cssClass) {
1514
1431
  var classeNames = this.definition.cssClass.split(" ");
1515
1432
  classeNames.forEach(function (className) {
1516
- _this6.element.classList.add(className);
1433
+ _this5.element.classList.add(className);
1517
1434
  });
1518
1435
  }
1519
1436
 
@@ -1944,40 +1861,40 @@
1944
1861
  }, {
1945
1862
  key: "delete",
1946
1863
  value: function _delete() {
1947
- var _this7 = this;
1864
+ var _this6 = this;
1948
1865
 
1949
1866
  return new Promise(function (resolve, reject) {
1950
1867
 
1951
- if (_this7.isGroup) {
1952
- _this7.columns.forEach(function (column) {
1868
+ if (_this6.isGroup) {
1869
+ _this6.columns.forEach(function (column) {
1953
1870
  column["delete"]();
1954
1871
  });
1955
1872
  }
1956
1873
 
1957
- _this7.dispatch("column-delete", _this7);
1874
+ _this6.dispatch("column-delete", _this6);
1958
1875
 
1959
- var cellCount = _this7.cells.length;
1876
+ var cellCount = _this6.cells.length;
1960
1877
 
1961
1878
  for (var i = 0; i < cellCount; i++) {
1962
- _this7.cells[0]["delete"]();
1879
+ _this6.cells[0]["delete"]();
1963
1880
  }
1964
1881
 
1965
- if (_this7.element.parentNode) {
1966
- _this7.element.parentNode.removeChild(_this7.element);
1882
+ if (_this6.element.parentNode) {
1883
+ _this6.element.parentNode.removeChild(_this6.element);
1967
1884
  }
1968
1885
 
1969
- _this7.element = false;
1970
- _this7.contentElement = false;
1971
- _this7.titleElement = false;
1972
- _this7.groupElement = false;
1886
+ _this6.element = false;
1887
+ _this6.contentElement = false;
1888
+ _this6.titleElement = false;
1889
+ _this6.groupElement = false;
1973
1890
 
1974
- if (_this7.parent.isGroup) {
1975
- _this7.parent.removeChild(_this7);
1891
+ if (_this6.parent.isGroup) {
1892
+ _this6.parent.removeChild(_this6);
1976
1893
  }
1977
1894
 
1978
- _this7.table.columnManager.deregisterColumn(_this7);
1895
+ _this6.table.columnManager.deregisterColumn(_this6);
1979
1896
 
1980
- _this7.table.columnManager.renderer.rerenderColumns(true);
1897
+ _this6.table.columnManager.renderer.rerenderColumns(true);
1981
1898
 
1982
1899
  resolve();
1983
1900
  });
@@ -2078,7 +1995,7 @@
2078
1995
  }, {
2079
1996
  key: "updateDefinition",
2080
1997
  value: function updateDefinition(updates) {
2081
- var _this8 = this;
1998
+ var _this7 = this;
2082
1999
 
2083
2000
  var definition;
2084
2001
 
@@ -2087,11 +2004,11 @@
2087
2004
  definition = Object.assign({}, this.getDefinition());
2088
2005
  definition = Object.assign(definition, updates);
2089
2006
  return this.table.columnManager.addColumn(definition, false, this).then(function (column) {
2090
- if (definition.field == _this8.field) {
2091
- _this8.field = false; //cleair field name to prevent deletion of duplicate column from arrays
2007
+ if (definition.field == _this7.field) {
2008
+ _this7.field = false; //cleair field name to prevent deletion of duplicate column from arrays
2092
2009
  }
2093
2010
 
2094
- return _this8["delete"]().then(function () {
2011
+ return _this7["delete"]().then(function () {
2095
2012
  return column.getComponent();
2096
2013
  });
2097
2014
  });
@@ -2443,6 +2360,10 @@
2443
2360
  }
2444
2361
 
2445
2362
  break;
2363
+
2364
+ case "top":
2365
+ _this2.elementVertical.scrollTop = rowEl.offsetTop;
2366
+ break;
2446
2367
  }
2447
2368
 
2448
2369
  resolve();
@@ -5101,8 +5022,8 @@
5101
5022
  value: function createHolderElement() {
5102
5023
  var el = document.createElement("div");
5103
5024
  el.classList.add("tabulator-tableholder");
5104
- el.setAttribute("tabindex", 0);
5105
- el.setAttribute("role", "rowgroup");
5025
+ el.setAttribute("tabindex", 0); // el.setAttribute("role", "rowgroup");
5026
+
5106
5027
  return el;
5107
5028
  }
5108
5029
  }, {
@@ -5913,7 +5834,9 @@
5913
5834
  this.redrawBlockRenderInPosition = true;
5914
5835
  }
5915
5836
  } else {
5837
+ this.dispatchExternal("renderStarted");
5916
5838
  this.renderer.rerenderRows(callback);
5839
+ this.dispatchExternal("renderComplete");
5917
5840
  }
5918
5841
  }
5919
5842
  }, {
@@ -6687,7 +6610,7 @@
6687
6610
  value: function initialize() {}
6688
6611
  }, {
6689
6612
  key: "load",
6690
- value: function load(data, params, config, replace, silent) {
6613
+ value: function load(data, params, config, replace, silent, columnsChanged) {
6691
6614
  var _this2 = this;
6692
6615
 
6693
6616
  var requestNo = ++this.requestOrder;
@@ -6721,7 +6644,7 @@
6721
6644
  if (rowData !== false) {
6722
6645
  _this2.dispatchExternal("dataLoaded", rowData);
6723
6646
 
6724
- _this2.table.rowManager.setData(rowData, replace, !replace);
6647
+ _this2.table.rowManager.setData(rowData, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged);
6725
6648
  }
6726
6649
  } else {
6727
6650
  console.warn("Data Load Response Blocked - An active data load request was blocked by an attempt to change table data while the request was being made");
@@ -6748,7 +6671,7 @@
6748
6671
  data = [];
6749
6672
  }
6750
6673
 
6751
- this.table.rowManager.setData(data, replace, !replace);
6674
+ this.table.rowManager.setData(data, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged);
6752
6675
  return Promise.resolve();
6753
6676
  }
6754
6677
  }
@@ -7208,6 +7131,7 @@
7208
7131
 
7209
7132
  _this.blurEvent = _this.hide.bind(_assertThisInitialized(_this), false);
7210
7133
  _this.escEvent = _this._escapeCheck.bind(_assertThisInitialized(_this));
7134
+ _this.destroyBinding = _this.hide.bind(_assertThisInitialized(_this), true);
7211
7135
  return _this;
7212
7136
  }
7213
7137
 
@@ -7340,6 +7264,7 @@
7340
7264
  this._fitToScreen(x, y, parentEl, parentOffset, position);
7341
7265
 
7342
7266
  this.visible = true;
7267
+ this.subscribe("table-destroy", this.destroyBinding);
7343
7268
  return this;
7344
7269
  }
7345
7270
  }, {
@@ -7442,6 +7367,8 @@
7442
7367
  if (this.blurCallback && !silent) {
7443
7368
  this.blurCallback();
7444
7369
  }
7370
+
7371
+ this.unsubscribe("table-destroy", this.destroyBinding);
7445
7372
  }
7446
7373
 
7447
7374
  return this;
@@ -10997,9 +10924,24 @@
10997
10924
  this.subscribe("edit-cancelled", this.cellValueChanged.bind(this));
10998
10925
  this.subscribe("column-moving-rows", this.columnMoving.bind(this));
10999
10926
  this.subscribe("table-built", this.initializeElementField.bind(this));
10927
+ this.subscribe("table-redrawing", this.tableRedrawing.bind(this));
11000
10928
  this.registerDisplayHandler(this.getRows.bind(this), 30);
11001
10929
  }
11002
10930
  }
10931
+ }, {
10932
+ key: "tableRedrawing",
10933
+ value: function tableRedrawing(force) {
10934
+ var _this2 = this;
10935
+
10936
+ var rows;
10937
+
10938
+ if (force) {
10939
+ rows = this.table.rowManager.getRows();
10940
+ rows.forEach(function (row) {
10941
+ _this2.reinitializeRowChildren(row);
10942
+ });
10943
+ }
10944
+ }
11003
10945
  }, {
11004
10946
  key: "initializeElementField",
11005
10947
  value: function initializeElementField() {
@@ -11014,11 +10956,11 @@
11014
10956
  }, {
11015
10957
  key: "columnMoving",
11016
10958
  value: function columnMoving() {
11017
- var _this2 = this;
10959
+ var _this3 = this;
11018
10960
 
11019
10961
  var rows = [];
11020
10962
  this.table.rowManager.rows.forEach(function (row) {
11021
- rows = rows.concat(_this2.getTreeChildren(row, false, true));
10963
+ rows = rows.concat(_this3.getTreeChildren(row, false, true));
11022
10964
  });
11023
10965
  return rows;
11024
10966
  }
@@ -11123,7 +11065,7 @@
11123
11065
  }, {
11124
11066
  key: "generateControlElement",
11125
11067
  value: function generateControlElement(row, el) {
11126
- var _this3 = this;
11068
+ var _this4 = this;
11127
11069
 
11128
11070
  var config = row.modules.dataTree,
11129
11071
  el = el || row.getCells()[0].getElement(),
@@ -11135,14 +11077,14 @@
11135
11077
  config.controlEl.addEventListener("click", function (e) {
11136
11078
  e.stopPropagation();
11137
11079
 
11138
- _this3.collapseRow(row);
11080
+ _this4.collapseRow(row);
11139
11081
  });
11140
11082
  } else {
11141
11083
  config.controlEl = this.expandEl.cloneNode(true);
11142
11084
  config.controlEl.addEventListener("click", function (e) {
11143
11085
  e.stopPropagation();
11144
11086
 
11145
- _this3.expandRow(row);
11087
+ _this4.expandRow(row);
11146
11088
  });
11147
11089
  }
11148
11090
 
@@ -11170,7 +11112,7 @@
11170
11112
  }, {
11171
11113
  key: "getRows",
11172
11114
  value: function getRows(rows) {
11173
- var _this4 = this;
11115
+ var _this5 = this;
11174
11116
 
11175
11117
  var output = [];
11176
11118
  rows.forEach(function (row, i) {
@@ -11182,7 +11124,7 @@
11182
11124
  config = row.modules.dataTree.children;
11183
11125
 
11184
11126
  if (!config.index && config.children !== false) {
11185
- children = _this4.getChildren(row);
11127
+ children = _this5.getChildren(row);
11186
11128
  children.forEach(function (child) {
11187
11129
  child.create();
11188
11130
  output.push(child);
@@ -11195,7 +11137,7 @@
11195
11137
  }, {
11196
11138
  key: "getChildren",
11197
11139
  value: function getChildren(row, allChildren) {
11198
- var _this5 = this;
11140
+ var _this6 = this;
11199
11141
 
11200
11142
  var config = row.modules.dataTree,
11201
11143
  children = [],
@@ -11219,7 +11161,7 @@
11219
11161
  children.forEach(function (child) {
11220
11162
  output.push(child);
11221
11163
 
11222
- var subChildren = _this5.getChildren(child);
11164
+ var subChildren = _this6.getChildren(child);
11223
11165
 
11224
11166
  subChildren.forEach(function (sub) {
11225
11167
  output.push(sub);
@@ -11232,7 +11174,7 @@
11232
11174
  }, {
11233
11175
  key: "generateChildren",
11234
11176
  value: function generateChildren(row) {
11235
- var _this6 = this;
11177
+ var _this7 = this;
11236
11178
 
11237
11179
  var children = [];
11238
11180
  var childArray = row.getData()[this.field];
@@ -11242,13 +11184,13 @@
11242
11184
  }
11243
11185
 
11244
11186
  childArray.forEach(function (childData) {
11245
- var childRow = new Row(childData || {}, _this6.table.rowManager);
11187
+ var childRow = new Row(childData || {}, _this7.table.rowManager);
11246
11188
  childRow.create();
11247
11189
  childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
11248
11190
  childRow.modules.dataTree.parent = row;
11249
11191
 
11250
11192
  if (childRow.modules.dataTree.children) {
11251
- childRow.modules.dataTree.open = _this6.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
11193
+ childRow.modules.dataTree.open = _this7.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
11252
11194
  }
11253
11195
 
11254
11196
  children.push(childRow);
@@ -11302,6 +11244,11 @@
11302
11244
  value: function getTreeParent(row) {
11303
11245
  return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;
11304
11246
  }
11247
+ }, {
11248
+ key: "getTreeParentRoot",
11249
+ value: function getTreeParentRoot(row) {
11250
+ return row.modules.dataTree.parent ? this.getTreeParentRoot(row.modules.dataTree.parent) : row;
11251
+ }
11305
11252
  }, {
11306
11253
  key: "getFilteredTreeChildren",
11307
11254
  value: function getFilteredTreeChildren(row) {
@@ -11389,7 +11336,7 @@
11389
11336
  }, {
11390
11337
  key: "findChildIndex",
11391
11338
  value: function findChildIndex(subject, parent) {
11392
- var _this7 = this;
11339
+ var _this8 = this;
11393
11340
 
11394
11341
  var match = false;
11395
11342
 
@@ -11416,7 +11363,7 @@
11416
11363
  } else {
11417
11364
  //subject should be treated as the index of the row
11418
11365
  match = parent.data[this.field].find(function (row) {
11419
- return row.data[_this7.table.options.index] == subject;
11366
+ return row.data[_this8.table.options.index] == subject;
11420
11367
  });
11421
11368
  }
11422
11369
 
@@ -11436,7 +11383,7 @@
11436
11383
  }, {
11437
11384
  key: "getTreeChildren",
11438
11385
  value: function getTreeChildren(row, component, recurse) {
11439
- var _this8 = this;
11386
+ var _this9 = this;
11440
11387
 
11441
11388
  var config = row.modules.dataTree,
11442
11389
  output = [];
@@ -11451,7 +11398,7 @@
11451
11398
  output.push(component ? childRow.getComponent() : childRow);
11452
11399
 
11453
11400
  if (recurse) {
11454
- output = output.concat(_this8.getTreeChildren(childRow, component, recurse));
11401
+ output = output.concat(_this9.getTreeChildren(childRow, component, recurse));
11455
11402
  }
11456
11403
  }
11457
11404
  });
@@ -11505,11 +11452,10 @@
11505
11452
  if (col) {
11506
11453
  switch (_typeof(col.value)) {
11507
11454
  case "object":
11508
- col.value = JSON.stringify(col.value);
11455
+ col.value = col.value !== null ? JSON.stringify(col.value) : "";
11509
11456
  break;
11510
11457
 
11511
11458
  case "undefined":
11512
- case "null":
11513
11459
  col.value = "";
11514
11460
  break;
11515
11461
  }
@@ -11623,11 +11569,10 @@
11623
11569
  if (col) {
11624
11570
  switch (_typeof(col.value)) {
11625
11571
  case "object":
11626
- col.value = JSON.stringify(col.value);
11572
+ col.value = col.value !== null ? JSON.stringify(col.value) : "";
11627
11573
  break;
11628
11574
 
11629
11575
  case "undefined":
11630
- case "null":
11631
11576
  col.value = "";
11632
11577
  break;
11633
11578
  }
@@ -12498,7 +12443,7 @@
12498
12443
  this.initialValues = this.params.multiselect ? initialValue : [initialValue];
12499
12444
 
12500
12445
  if (this.isFilter) {
12501
- this.input.value = this.initialValues.join(",");
12446
+ this.input.value = this.initialValues ? this.initialValues.join(",") : "";
12502
12447
  this.headerFilterInitialListGen();
12503
12448
  }
12504
12449
  }
@@ -12942,7 +12887,7 @@
12942
12887
  values = this._ajaxRequest(this.params.valuesURL, this.input.value);
12943
12888
  } else {
12944
12889
  if (typeof this.params.valuesLookup === "function") {
12945
- values = this.params.valuesLookup(cell, this.input.value);
12890
+ values = this.params.valuesLookup(this.cell, this.input.value);
12946
12891
  } else if (this.params.valuesLookup) {
12947
12892
  values = this._uniqueColumnValues(this.params.valuesLookupField);
12948
12893
  }
@@ -15146,11 +15091,10 @@
15146
15091
  } else {
15147
15092
  switch (_typeof(value)) {
15148
15093
  case "object":
15149
- value = JSON.stringify(value);
15094
+ value = value !== null ? JSON.stringify(value) : "";
15150
15095
  break;
15151
15096
 
15152
15097
  case "undefined":
15153
- case "null":
15154
15098
  value = "";
15155
15099
  break;
15156
15100
 
@@ -15935,7 +15879,7 @@
15935
15879
  value: function refreshFilter() {
15936
15880
  if (this.tableInitialized) {
15937
15881
  if (this.table.options.filterMode === "remote") {
15938
- this.reloadData();
15882
+ this.reloadData(null, false, false);
15939
15883
  } else {
15940
15884
  this.refreshData(true);
15941
15885
  }
@@ -17189,7 +17133,6 @@
17189
17133
  _this.rightPadding = 0;
17190
17134
  _this.initializationMode = "left";
17191
17135
  _this.active = false;
17192
- _this.scrollEndTimer = false;
17193
17136
  _this.blocked = true;
17194
17137
 
17195
17138
  _this.registerColumnOption("frozen");
@@ -17296,21 +17239,12 @@
17296
17239
  }, {
17297
17240
  key: "scrollHorizontal",
17298
17241
  value: function scrollHorizontal() {
17299
- var _this3 = this;
17300
-
17301
- var rows;
17302
17242
 
17303
17243
  if (this.active) {
17304
- clearTimeout(this.scrollEndTimer);
17305
- rows = this.table.rowManager.getVisibleRows();
17306
17244
  this.calcMargins(true);
17307
17245
  this.layoutColumnPosition();
17308
17246
  this.layoutCalcRows();
17309
- rows.forEach(function (row) {
17310
- if (row.type === "row") {
17311
- _this3.layoutRow(row);
17312
- }
17313
- });
17247
+ this.reinitializeRows();
17314
17248
  }
17315
17249
  } //calculate margins for rows
17316
17250
 
@@ -17347,19 +17281,19 @@
17347
17281
  }, {
17348
17282
  key: "layoutGroupCalcs",
17349
17283
  value: function layoutGroupCalcs(groups) {
17350
- var _this4 = this;
17284
+ var _this3 = this;
17351
17285
 
17352
17286
  groups.forEach(function (group) {
17353
17287
  if (group.calcs.top) {
17354
- _this4.layoutRow(group.calcs.top);
17288
+ _this3.layoutRow(group.calcs.top);
17355
17289
  }
17356
17290
 
17357
17291
  if (group.calcs.bottom) {
17358
- _this4.layoutRow(group.calcs.bottom);
17292
+ _this3.layoutRow(group.calcs.bottom);
17359
17293
  }
17360
17294
 
17361
17295
  if (group.groupList && group.groupList.length) {
17362
- _this4.layoutGroupCalcs(group.groupList && group.groupList);
17296
+ _this3.layoutGroupCalcs(group.groupList && group.groupList);
17363
17297
  }
17364
17298
  });
17365
17299
  } //calculate column positions and layout headers
@@ -17367,7 +17301,7 @@
17367
17301
  }, {
17368
17302
  key: "layoutColumnPosition",
17369
17303
  value: function layoutColumnPosition(allCells) {
17370
- var _this5 = this;
17304
+ var _this4 = this;
17371
17305
 
17372
17306
  var leftParents = [];
17373
17307
  var leftMargin = 0;
@@ -17375,23 +17309,24 @@
17375
17309
  this.table.columnManager.headersElement.style.marginLeft = this.leftMargin;
17376
17310
  this.table.columnManager.element.style.paddingRight = this.rightMargin;
17377
17311
  this.leftColumns.forEach(function (column, i) {
17378
- column.modules.frozen.margin = leftMargin + _this5.table.columnManager.scrollLeft + "px";
17312
+ column.modules.frozen.marginValue = leftMargin + _this4.table.columnManager.scrollLeft;
17313
+ column.modules.frozen.margin = column.modules.frozen.marginValue + "px";
17379
17314
 
17380
17315
  if (column.visible) {
17381
17316
  leftMargin += column.getWidth();
17382
17317
  }
17383
17318
 
17384
- if (i == _this5.leftColumns.length - 1) {
17319
+ if (i == _this4.leftColumns.length - 1) {
17385
17320
  column.modules.frozen.edge = true;
17386
17321
  } else {
17387
17322
  column.modules.frozen.edge = false;
17388
17323
  }
17389
17324
 
17390
17325
  if (column.parent.isGroup) {
17391
- var parentEl = _this5.getColGroupParentElement(column);
17326
+ var parentEl = _this4.getColGroupParentElement(column);
17392
17327
 
17393
17328
  if (!leftParents.includes(parentEl)) {
17394
- _this5.layoutElement(parentEl, column);
17329
+ _this4.layoutElement(parentEl, column);
17395
17330
 
17396
17331
  leftParents.push(parentEl);
17397
17332
  }
@@ -17400,12 +17335,12 @@
17400
17335
  parentEl.classList.add("tabulator-frozen-" + column.modules.frozen.position);
17401
17336
  }
17402
17337
  } else {
17403
- _this5.layoutElement(column.getElement(), column);
17338
+ _this4.layoutElement(column.getElement(), column);
17404
17339
  }
17405
17340
 
17406
17341
  if (allCells) {
17407
17342
  column.cells.forEach(function (cell) {
17408
- _this5.layoutElement(cell.getElement(true), column);
17343
+ _this4.layoutElement(cell.getElement(true), column);
17409
17344
  });
17410
17345
  }
17411
17346
  });
@@ -17414,23 +17349,24 @@
17414
17349
  rightMargin += column.getWidth();
17415
17350
  }
17416
17351
 
17417
- column.modules.frozen.margin = _this5.rightPadding - rightMargin + "px";
17352
+ column.modules.frozen.marginValue = _this4.rightPadding - rightMargin;
17353
+ column.modules.frozen.margin = column.modules.frozen.marginValue + "px";
17418
17354
 
17419
- if (i == _this5.rightColumns.length - 1) {
17355
+ if (i == _this4.rightColumns.length - 1) {
17420
17356
  column.modules.frozen.edge = true;
17421
17357
  } else {
17422
17358
  column.modules.frozen.edge = false;
17423
17359
  }
17424
17360
 
17425
17361
  if (column.parent.isGroup) {
17426
- _this5.layoutElement(_this5.getColGroupParentElement(column), column);
17362
+ _this4.layoutElement(_this4.getColGroupParentElement(column), column);
17427
17363
  } else {
17428
- _this5.layoutElement(column.getElement(), column);
17364
+ _this4.layoutElement(column.getElement(), column);
17429
17365
  }
17430
17366
 
17431
17367
  if (allCells) {
17432
17368
  column.cells.forEach(function (cell) {
17433
- _this5.layoutElement(cell.getElement(true), column);
17369
+ _this4.layoutElement(cell.getElement(true), column);
17434
17370
  });
17435
17371
  }
17436
17372
  });
@@ -17444,35 +17380,37 @@
17444
17380
  }, {
17445
17381
  key: "layout",
17446
17382
  value: function layout() {
17447
- var _this6 = this;
17448
-
17449
- var visibleRows = [],
17450
- otherRows = [];
17451
-
17452
17383
  if (this.active && !this.blocked) {
17453
17384
  //calculate row padding
17454
17385
  this.calcMargins(); //calculate left columns
17455
17386
 
17456
17387
  this.layoutColumnPosition();
17457
- visibleRows = this.table.rowManager.getVisibleRows();
17458
- otherRows = this.table.rowManager.getDisplayRows().filter(function (row) {
17459
- return !visibleRows.includes(row);
17460
- });
17461
- otherRows.forEach(function (row) {
17462
- row.deinitialize();
17463
- });
17464
- visibleRows.forEach(function (row) {
17465
- if (row.type === "row") {
17466
- _this6.layoutRow(row);
17467
- }
17468
- });
17388
+ this.reinitializeRows();
17469
17389
  this.layoutCalcRows();
17470
17390
  }
17471
17391
  }
17392
+ }, {
17393
+ key: "reinitializeRows",
17394
+ value: function reinitializeRows() {
17395
+ var _this5 = this;
17396
+
17397
+ var visibleRows = this.table.rowManager.getVisibleRows();
17398
+ var otherRows = this.table.rowManager.getRows().filter(function (row) {
17399
+ return !visibleRows.includes(row);
17400
+ });
17401
+ otherRows.forEach(function (row) {
17402
+ row.deinitialize();
17403
+ });
17404
+ visibleRows.forEach(function (row) {
17405
+ if (row.type === "row") {
17406
+ _this5.layoutRow(row);
17407
+ }
17408
+ });
17409
+ }
17472
17410
  }, {
17473
17411
  key: "layoutRow",
17474
17412
  value: function layoutRow(row) {
17475
- var _this7 = this;
17413
+ var _this6 = this;
17476
17414
 
17477
17415
  // console.trace("row")
17478
17416
  var rowEl = row.getElement();
@@ -17486,14 +17424,14 @@
17486
17424
  var cell = row.getCell(column);
17487
17425
 
17488
17426
  if (cell) {
17489
- _this7.layoutElement(cell.getElement(true), column);
17427
+ _this6.layoutElement(cell.getElement(true), column);
17490
17428
  }
17491
17429
  });
17492
17430
  this.rightColumns.forEach(function (column) {
17493
17431
  var cell = row.getCell(column);
17494
17432
 
17495
17433
  if (cell) {
17496
- _this7.layoutElement(cell.getElement(true), column);
17434
+ _this6.layoutElement(cell.getElement(true), column);
17497
17435
  }
17498
17436
  });
17499
17437
  }
@@ -18819,6 +18757,11 @@
18819
18757
  key: "getRowGroup",
18820
18758
  value: function getRowGroup(row) {
18821
18759
  var match = false;
18760
+
18761
+ if (this.options("dataTree")) {
18762
+ row = this.table.modules.dataTree.getTreeParentRoot(row);
18763
+ }
18764
+
18822
18765
  this.groupList.forEach(function (group) {
18823
18766
  var result = group.getRowGroup(row);
18824
18767
 
@@ -20679,7 +20622,7 @@
20679
20622
  config = {},
20680
20623
  colEl;
20681
20624
 
20682
- if (!column.modules.frozen) {
20625
+ if (!column.modules.frozen && !column.isGroup) {
20683
20626
  colEl = column.getElement();
20684
20627
 
20685
20628
  config.mousemove = function (e) {
@@ -22476,7 +22419,6 @@
22476
22419
  break;
22477
22420
 
22478
22421
  case "undefined":
22479
- case "null":
22480
22422
  this.pageCounterElement.innerHTML = "";
22481
22423
  break;
22482
22424
 
@@ -23245,6 +23187,7 @@
23245
23187
  if (_this3.config.columns === true || _this3.config.columns == undefined) {
23246
23188
  keys = Object.keys(colDef);
23247
23189
  keys.push("width");
23190
+ keys.push("visible");
23248
23191
  } else {
23249
23192
  keys = _this3.config.columns;
23250
23193
  }
@@ -24006,6 +23949,7 @@
24006
23949
  this.subscribe("column-moved", this.columnLayoutUpdated.bind(this));
24007
23950
  this.subscribe("column-hide", this.deInitializeColumn.bind(this));
24008
23951
  this.subscribe("column-show", this.columnLayoutUpdated.bind(this));
23952
+ this.subscribe("column-width", this.columnWidthUpdated.bind(this));
24009
23953
  this.subscribe("column-delete", this.deInitializeComponent.bind(this));
24010
23954
  this.subscribe("column-height", this.resizeHandle.bind(this));
24011
23955
  this.initialized = true;
@@ -24038,16 +23982,42 @@
24038
23982
  this.reinitializeColumn(prev);
24039
23983
  }
24040
23984
  }
23985
+ }, {
23986
+ key: "columnWidthUpdated",
23987
+ value: function columnWidthUpdated(column) {
23988
+ var _this2 = this;
23989
+
23990
+ if (column.modules.frozen) {
23991
+ if (this.table.modules.frozenColumns.leftColumns.includes(column)) {
23992
+ this.table.modules.frozenColumns.leftColumns.forEach(function (col) {
23993
+ _this2.reinitializeColumn(col);
23994
+ });
23995
+ } else if (this.table.modules.frozenColumns.rightColumns.includes(column)) {
23996
+ this.table.modules.frozenColumns.rightColumns.forEach(function (col) {
23997
+ _this2.reinitializeColumn(col);
23998
+ });
23999
+ }
24000
+ }
24001
+ }
24041
24002
  }, {
24042
24003
  key: "reinitializeColumn",
24043
24004
  value: function reinitializeColumn(column) {
24005
+ var frozenOffset = column.modules.frozen ? column.modules.frozen.marginValue + column.getWidth() + "px" : false;
24044
24006
  column.cells.forEach(function (cell) {
24045
24007
  if (cell.modules.resize && cell.modules.resize.handleEl) {
24008
+ if (frozenOffset) {
24009
+ cell.modules.resize.handleEl.style.left = frozenOffset;
24010
+ }
24011
+
24046
24012
  cell.element.after(cell.modules.resize.handleEl);
24047
24013
  }
24048
24014
  });
24049
24015
 
24050
24016
  if (column.modules.resize && column.modules.resize.handleEl) {
24017
+ if (frozenOffset) {
24018
+ column.modules.resize.handleEl.style.left = frozenOffset;
24019
+ }
24020
+
24051
24021
  column.element.after(column.modules.resize.handleEl);
24052
24022
  }
24053
24023
  }
@@ -24096,9 +24066,15 @@
24096
24066
  self.table.externalEvents.dispatch("columnResized", nearestColumn.getComponent());
24097
24067
  }
24098
24068
  });
24069
+
24070
+ if (column.modules.frozen) {
24071
+ handle.style.position = "absolute";
24072
+ handle.style.left = column.modules.frozen.marginValue + column.getWidth() + "px";
24073
+ }
24074
+
24099
24075
  config.handleEl = handle;
24100
24076
 
24101
- if (element.parentNode) {
24077
+ if (element.parentNode && column.visible) {
24102
24078
  element.after(handle);
24103
24079
  }
24104
24080
  }
@@ -24108,11 +24084,11 @@
24108
24084
  }, {
24109
24085
  key: "deInitializeColumn",
24110
24086
  value: function deInitializeColumn(column) {
24111
- var _this2 = this;
24087
+ var _this3 = this;
24112
24088
 
24113
24089
  this.deInitializeComponent(column);
24114
24090
  column.cells.forEach(function (cell) {
24115
- _this2.deInitializeComponent(cell);
24091
+ _this3.deInitializeComponent(cell);
24116
24092
  });
24117
24093
  }
24118
24094
  }, {
@@ -25834,7 +25810,7 @@
25834
25810
  key: "refreshSort",
25835
25811
  value: function refreshSort() {
25836
25812
  if (this.table.options.sortMode === "remote") {
25837
- this.reloadData();
25813
+ this.reloadData(null, false, false);
25838
25814
  } else {
25839
25815
  this.refreshData(true);
25840
25816
  } //TODO - Persist left position of row manager
@@ -26010,7 +25986,7 @@
26010
25986
  key: "setColumnHeader",
26011
25987
  value: function setColumnHeader(column, dir) {
26012
25988
  column.modules.sort.dir = dir;
26013
- column.getElement().setAttribute("aria-sort", dir);
25989
+ column.getElement().setAttribute("aria-sort", dir === "asc" ? "ascending" : "descending");
26014
25990
  } //sort each item in sort list
26015
25991
 
26016
25992
  }, {
@@ -26442,7 +26418,7 @@
26442
26418
 
26443
26419
  var invalid = [];
26444
26420
  column.cells.forEach(function (cell) {
26445
- if (!_this3.cellValidate(cell)) {
26421
+ if (_this3.cellValidate(cell) !== true) {
26446
26422
  invalid.push(cell.getComponent());
26447
26423
  }
26448
26424
  });
@@ -26458,7 +26434,7 @@
26458
26434
 
26459
26435
  var invalid = [];
26460
26436
  row.cells.forEach(function (cell) {
26461
- if (!_this4.cellValidate(cell)) {
26437
+ if (_this4.cellValidate(cell) !== true) {
26462
26438
  invalid.push(cell.getComponent());
26463
26439
  }
26464
26440
  });