tabulator-tables 5.0.3 → 5.0.8

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 (57) hide show
  1. package/bower.json +1 -1
  2. package/build/rollup.js +1 -1
  3. package/dist/css/tabulator_bootstrap3.css +9 -0
  4. package/dist/css/tabulator_bootstrap3.css.map +1 -1
  5. package/dist/css/tabulator_bootstrap3.min.css +1 -1
  6. package/dist/css/tabulator_bootstrap3.min.css.map +1 -1
  7. package/dist/css/tabulator_bulma.css +5 -1
  8. package/dist/css/tabulator_bulma.css.map +1 -1
  9. package/dist/css/tabulator_bulma.min.css +1 -1
  10. package/dist/css/tabulator_bulma.min.css.map +1 -1
  11. package/dist/css/tabulator_semanticui.css +11 -2
  12. package/dist/css/tabulator_semanticui.css.map +1 -1
  13. package/dist/css/tabulator_semanticui.min.css +1 -1
  14. package/dist/css/tabulator_semanticui.min.css.map +1 -1
  15. package/dist/js/tabulator.js +456 -307
  16. package/dist/js/tabulator.js.map +1 -1
  17. package/dist/js/tabulator.min.js +2 -2
  18. package/dist/js/tabulator.min.js.map +1 -1
  19. package/dist/js/tabulator_esm.js +483 -354
  20. package/dist/js/tabulator_esm.js.map +1 -1
  21. package/dist/js/tabulator_esm.min.js +2 -2
  22. package/dist/js/tabulator_esm.min.js.map +1 -1
  23. package/package.json +1 -1
  24. package/src/js/core/ColumnManager.js +18 -17
  25. package/src/js/core/RowManager.js +5 -3
  26. package/src/js/core/Tabulator.js +180 -125
  27. package/src/js/core/column/Column.js +2 -2
  28. package/src/js/core/tools/{ComponentFuctionBinder.js → ComponentFunctionBinder.js} +1 -1
  29. package/src/js/core/tools/Helpers.js +19 -13
  30. package/src/js/core/tools/InteractionMonitor.js +4 -1
  31. package/src/js/core/tools/OptionsList.js +2 -2
  32. package/src/js/modules/Ajax/defaults/contentTypeFormatters.js +22 -1
  33. package/src/js/modules/ColumnCalcs/ColumnCalcs.js +1 -1
  34. package/src/js/modules/DataTree/DataTree.js +1 -1
  35. package/src/js/modules/Edit/Edit.js +7 -6
  36. package/src/js/modules/Edit/defaults/editors/progress.js +2 -2
  37. package/src/js/modules/Filter/Filter.js +9 -4
  38. package/src/js/modules/Format/defaults/formatters/datetime.js +2 -2
  39. package/src/js/modules/Format/defaults/formatters/datetimediff.js +1 -1
  40. package/src/js/modules/Format/defaults/formatters/money.js +8 -1
  41. package/src/js/modules/FrozenColumns/FrozenColumns.js +21 -0
  42. package/src/js/modules/FrozenRows/FrozenRows.js +4 -1
  43. package/src/js/modules/GroupRows/Group.js +10 -4
  44. package/src/js/modules/GroupRows/GroupRows.js +41 -29
  45. package/src/js/modules/History/History.js +3 -1
  46. package/src/js/modules/History/defaults/redoers.js +1 -0
  47. package/src/js/modules/History/defaults/undoers.js +1 -0
  48. package/src/js/modules/HtmlTableImport/HtmlTableImport.js +8 -29
  49. package/src/js/modules/MoveColumns/MoveColumns.js +64 -61
  50. package/src/js/modules/Page/Page.js +2 -1
  51. package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +5 -1
  52. package/src/js/modules/SelectRow/SelectRow.js +3 -3
  53. package/src/js/modules/Sort/Sort.js +1 -1
  54. package/src/js/modules/Sort/defaults/sorters/datetime.js +3 -2
  55. package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +9 -0
  56. package/src/scss/themes/bulma/tabulator_bulma.scss +5 -1
  57. package/src/scss/themes/semanticui/tabulator_semanticui.scss +12 -7
@@ -1,4 +1,4 @@
1
- /* Tabulator v5.0.3 (c) Oliver Folkerd 2021 */
1
+ /* Tabulator v5.0.8 (c) Oliver Folkerd 2021 */
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) :
@@ -616,7 +616,7 @@
616
616
  return ColumnComponent;
617
617
  }();
618
618
 
619
- var defaultOptions$1 = {
619
+ var defaultColumnOptions = {
620
620
  "title": undefined,
621
621
  "field": undefined,
622
622
  "columns": undefined,
@@ -731,7 +731,7 @@
731
731
  return CellComponent;
732
732
  }();
733
733
 
734
- var Cell$1 = /*#__PURE__*/function (_CoreFeature) {
734
+ var Cell = /*#__PURE__*/function (_CoreFeature) {
735
735
  _inherits(Cell, _CoreFeature);
736
736
 
737
737
  var _super = _createSuper(Cell);
@@ -1786,8 +1786,7 @@
1786
1786
  this.reinitializeWidth();
1787
1787
  }
1788
1788
 
1789
- this.table.columnManager._verticalAlignHeaders();
1790
-
1789
+ this.table.columnManager.verticalAlignHeaders();
1791
1790
  this.dispatch("column-show", this, responsiveToggle);
1792
1791
 
1793
1792
  if (!silent) {
@@ -1810,8 +1809,7 @@
1810
1809
  if (this.visible) {
1811
1810
  this.visible = false;
1812
1811
  this.element.style.display = "none";
1813
-
1814
- this.table.columnManager._verticalAlignHeaders();
1812
+ this.table.columnManager.verticalAlignHeaders();
1815
1813
 
1816
1814
  if (this.parent.isGroup) {
1817
1815
  this.parent.checkColumnVisibility();
@@ -2017,7 +2015,7 @@
2017
2015
  }, {
2018
2016
  key: "generateCell",
2019
2017
  value: function generateCell(row) {
2020
- var cell = new Cell$1(this, row);
2018
+ var cell = new Cell(this, row);
2021
2019
  this.cells.push(cell);
2022
2020
  return cell;
2023
2021
  }
@@ -2142,9 +2140,9 @@
2142
2140
  return Column;
2143
2141
  }(CoreFeature);
2144
2142
 
2145
- Column$1.defaultOptionList = defaultOptions$1;
2143
+ Column$1.defaultOptionList = defaultColumnOptions;
2146
2144
 
2147
- var Helpers$1 = /*#__PURE__*/function () {
2145
+ var Helpers = /*#__PURE__*/function () {
2148
2146
  function Helpers() {
2149
2147
  _classCallCheck(this, Helpers);
2150
2148
  }
@@ -2166,27 +2164,41 @@
2166
2164
  }, {
2167
2165
  key: "deepClone",
2168
2166
  value: function deepClone(obj, clone) {
2169
- var list = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
2167
+ var _this = this;
2168
+
2169
+ var list = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
2170
+ var objectProto = {}.__proto__,
2171
+ arrayProto = [].__proto__;
2170
2172
 
2171
2173
  if (!clone) {
2172
2174
  clone = Object.assign(Array.isArray(obj) ? [] : {}, obj);
2173
2175
  }
2174
2176
 
2175
- for (var i in obj) {
2176
- var subject = obj[i];
2177
+ var _loop = function _loop() {
2178
+ var subject = obj[i],
2179
+ match = void 0,
2180
+ copy = void 0;
2177
2181
 
2178
- if (subject != null && _typeof(subject) === "object") {
2179
- if (subject instanceof Date) {
2180
- clone[i] = new Date(subject);
2182
+ if (subject != null && _typeof(subject) === "object" && (subject.__proto__ === objectProto || subject.__proto__ === arrayProto)) {
2183
+ match = list.findIndex(function (item) {
2184
+ return item.subject === subject;
2185
+ });
2186
+
2187
+ if (match > -1) {
2188
+ clone[i] = list[match].copy;
2181
2189
  } else {
2182
- if (list[subject]) {
2183
- clone[i] = list[subject];
2184
- } else {
2185
- list[subject] = Object.assign(Array.isArray(obj) ? [] : {}, obj);
2186
- clone[i] = this.deepClone(subject, list[subject], list);
2187
- }
2190
+ copy = Object.assign(Array.isArray(subject) ? [] : {}, subject);
2191
+ list.unshift({
2192
+ subject: subject,
2193
+ copy: copy
2194
+ });
2195
+ clone[i] = _this.deepClone(subject, copy, list);
2188
2196
  }
2189
2197
  }
2198
+ };
2199
+
2200
+ for (var i in obj) {
2201
+ _loop();
2190
2202
  }
2191
2203
 
2192
2204
  return clone;
@@ -2198,11 +2210,13 @@
2198
2210
 
2199
2211
  var OptionsList = /*#__PURE__*/function () {
2200
2212
  function OptionsList(table, msgType) {
2213
+ var defaults = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
2214
+
2201
2215
  _classCallCheck(this, OptionsList);
2202
2216
 
2203
2217
  this.table = table;
2204
2218
  this.msgType = msgType;
2205
- this.registeredDefaults = {};
2219
+ this.registeredDefaults = Object.assign({}, defaults);
2206
2220
  }
2207
2221
 
2208
2222
  _createClass(OptionsList, [{
@@ -2400,8 +2414,8 @@
2400
2414
 
2401
2415
 
2402
2416
  if (!ifVisible) {
2403
- if (Helpers$1.elVisible(rowEl)) {
2404
- offset = Helpers$1.elOffset(rowEl).top - Helpers$1.elOffset(_this2.elementVertical).top;
2417
+ if (Helpers.elVisible(rowEl)) {
2418
+ offset = Helpers.elOffset(rowEl).top - Helpers.elOffset(_this2.elementVertical).top;
2405
2419
 
2406
2420
  if (offset > 0 && offset < _this2.elementVertical.clientHeight - rowEl.offsetHeight) {
2407
2421
  return false;
@@ -2976,7 +2990,7 @@
2976
2990
  _this.columnsByField = {}; //columns by field
2977
2991
 
2978
2992
  _this.scrollLeft = 0;
2979
- _this.optionsList = new OptionsList(_this.table, "column definition");
2993
+ _this.optionsList = new OptionsList(_this.table, "column definition", defaultColumnOptions);
2980
2994
  _this.renderer = null;
2981
2995
  return _this;
2982
2996
  } ////////////// Setup Functions /////////////////
@@ -3018,6 +3032,7 @@
3018
3032
  value: function createHeadersElement() {
3019
3033
  var el = document.createElement("div");
3020
3034
  el.classList.add("tabulator-headers");
3035
+ el.setAttribute("role", "row");
3021
3036
  return el;
3022
3037
  }
3023
3038
  }, {
@@ -3025,6 +3040,7 @@
3025
3040
  value: function createHeaderElement() {
3026
3041
  var el = document.createElement("div");
3027
3042
  el.classList.add("tabulator-header");
3043
+ el.setAttribute("role", "rowgroup");
3028
3044
 
3029
3045
  if (!this.table.options.headerVisible) {
3030
3046
  el.classList.add("tabulator-header-hidden");
@@ -3184,8 +3200,9 @@
3184
3200
  index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;
3185
3201
 
3186
3202
  if (nextToColumn && index > -1) {
3187
- var parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());
3188
- var nextEl = nextToColumn.getElement();
3203
+ var topColumn = nextToColumn.getTopColumn();
3204
+ var parentIndex = this.columns.indexOf(topColumn);
3205
+ var nextEl = topColumn.getElement();
3189
3206
 
3190
3207
  if (before) {
3191
3208
  this.columns.splice(parentIndex, 0, column);
@@ -3202,10 +3219,9 @@
3202
3219
  this.columns.push(column);
3203
3220
  this.headersElement.appendChild(column.getElement());
3204
3221
  }
3205
-
3206
- column.columnRendered();
3207
3222
  }
3208
3223
 
3224
+ column.columnRendered();
3209
3225
  return column;
3210
3226
  }
3211
3227
  }, {
@@ -3230,8 +3246,8 @@
3230
3246
  } //ensure column headers take up the correct amount of space in column groups
3231
3247
 
3232
3248
  }, {
3233
- key: "_verticalAlignHeaders",
3234
- value: function _verticalAlignHeaders() {
3249
+ key: "verticalAlignHeaders",
3250
+ value: function verticalAlignHeaders() {
3235
3251
  var _this3 = this;
3236
3252
 
3237
3253
  var minHeight = 0;
@@ -3387,8 +3403,7 @@
3387
3403
  to.element.parentNode.insertBefore(to.element, from.element);
3388
3404
  }
3389
3405
 
3390
- this._verticalAlignHeaders();
3391
-
3406
+ this.verticalAlignHeaders();
3392
3407
  this.table.rowManager.reinitialize();
3393
3408
  }
3394
3409
  }, {
@@ -3553,13 +3568,11 @@
3553
3568
 
3554
3569
  _this6.dispatch("column-add", definition, before, nextToColumn);
3555
3570
 
3556
- _this6.redraw(true);
3557
-
3558
3571
  if (_this6.layoutMode() != "fitColumns") {
3559
3572
  column.reinitializeWidth();
3560
3573
  }
3561
3574
 
3562
- _this6._verticalAlignHeaders();
3575
+ _this6.redraw(true);
3563
3576
 
3564
3577
  _this6.table.rowManager.reinitialize();
3565
3578
 
@@ -3593,19 +3606,18 @@
3593
3606
  this.columns.splice(index, 1);
3594
3607
  }
3595
3608
 
3596
- this._verticalAlignHeaders();
3597
-
3609
+ this.verticalAlignHeaders();
3598
3610
  this.redraw();
3599
3611
  } //redraw columns
3600
3612
 
3601
3613
  }, {
3602
3614
  key: "redraw",
3603
3615
  value: function redraw(force) {
3604
- if (force) {
3605
- if (Helpers$1.elVisible(this.element)) {
3606
- this._verticalAlignHeaders();
3607
- }
3616
+ if (Helpers.elVisible(this.element)) {
3617
+ this.verticalAlignHeaders();
3618
+ }
3608
3619
 
3620
+ if (force) {
3609
3621
  this.table.rowManager.resetScroll();
3610
3622
  this.table.rowManager.reinitialize();
3611
3623
  }
@@ -3736,7 +3748,7 @@
3736
3748
  return RowComponent;
3737
3749
  }();
3738
3750
 
3739
- var Row$1 = /*#__PURE__*/function (_CoreFeature) {
3751
+ var Row = /*#__PURE__*/function (_CoreFeature) {
3740
3752
  _inherits(Row, _CoreFeature);
3741
3753
 
3742
3754
  var _super = _createSuper(Row);
@@ -3979,7 +3991,7 @@
3979
3991
  value: function updateData(updatedData) {
3980
3992
  var _this2 = this;
3981
3993
 
3982
- var visible = this.element && Helpers$1.elVisible(this.element),
3994
+ var visible = this.element && Helpers.elVisible(this.element),
3983
3995
  tempData = {},
3984
3996
  newRowData;
3985
3997
  return new Promise(function (resolve, reject) {
@@ -4263,14 +4275,14 @@
4263
4275
  }, {
4264
4276
  key: "scrollToRowNearestTop",
4265
4277
  value: function scrollToRowNearestTop(row) {
4266
- var rowTop = Helpers$1.elOffset(row.getElement()).top;
4278
+ var rowTop = Helpers.elOffset(row.getElement()).top;
4267
4279
  return !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));
4268
4280
  }
4269
4281
  }, {
4270
4282
  key: "scrollToRow",
4271
4283
  value: function scrollToRow(row) {
4272
4284
  var rowEl = row.getElement();
4273
- this.elementVertical.scrollTop = Helpers$1.elOffset(rowEl).top - Helpers$1.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;
4285
+ this.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;
4274
4286
  }
4275
4287
  }, {
4276
4288
  key: "visibleRows",
@@ -4550,7 +4562,7 @@
4550
4562
  position -= topPad;
4551
4563
  }
4552
4564
 
4553
- if (rowsCount && Helpers$1.elVisible(this.elementVertical)) {
4565
+ if (rowsCount && Helpers.elVisible(this.elementVertical)) {
4554
4566
  this.vDomTop = position;
4555
4567
  this.vDomBottom = position - 1;
4556
4568
 
@@ -4946,6 +4958,7 @@
4946
4958
  var el = document.createElement("div");
4947
4959
  el.classList.add("tabulator-tableholder");
4948
4960
  el.setAttribute("tabindex", 0);
4961
+ el.setAttribute("role", "rowgroup");
4949
4962
  return el;
4950
4963
  }
4951
4964
  }, {
@@ -4953,6 +4966,7 @@
4953
4966
  value: function createTableElement() {
4954
4967
  var el = document.createElement("div");
4955
4968
  el.classList.add("tabulator-table");
4969
+ el.setAttribute("role", "rowgroup");
4956
4970
  return el;
4957
4971
  } //return containing element
4958
4972
 
@@ -5020,7 +5034,7 @@
5020
5034
  var _this3 = this;
5021
5035
 
5022
5036
  if (_typeof(subject) == "object") {
5023
- if (subject instanceof Row$1) {
5037
+ if (subject instanceof Row) {
5024
5038
  //subject is row element
5025
5039
  return subject;
5026
5040
  } else if (subject instanceof RowComponent$1) {
@@ -5110,7 +5124,7 @@
5110
5124
  this.dispatch("data-processing", data);
5111
5125
  data.forEach(function (def, i) {
5112
5126
  if (def && _typeof(def) === "object") {
5113
- var row = new Row$1(def, _this5);
5127
+ var row = new Row(def, _this5);
5114
5128
 
5115
5129
  _this5.rows.push(row);
5116
5130
  } else {
@@ -5212,7 +5226,7 @@
5212
5226
  _this6.dispatch("row-added", row, data, pos, index);
5213
5227
  });
5214
5228
 
5215
- _this6.reRenderInPosition();
5229
+ _this6.refreshActiveData(false, false, true);
5216
5230
 
5217
5231
  _this6.regenerateRowNumbers();
5218
5232
 
@@ -5243,7 +5257,7 @@
5243
5257
  }, {
5244
5258
  key: "addRowActual",
5245
5259
  value: function addRowActual(data, pos, index, blockRedraw) {
5246
- var row = data instanceof Row$1 ? data : new Row$1(data || {}, this),
5260
+ var row = data instanceof Row ? data : new Row(data || {}, this),
5247
5261
  top = this.findAddRowPos(pos),
5248
5262
  allIndex = -1,
5249
5263
  activeIndex,
@@ -5395,7 +5409,7 @@
5395
5409
  nextRow = this.getDisplayRows()[index + 1];
5396
5410
  }
5397
5411
 
5398
- if (nextRow && (!(nextRow instanceof Row$1) || nextRow.type != "row")) {
5412
+ if (nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")) {
5399
5413
  return this.nextDisplayRow(nextRow, rowOnly);
5400
5414
  }
5401
5415
 
@@ -5411,7 +5425,7 @@
5411
5425
  prevRow = this.getDisplayRows()[index - 1];
5412
5426
  }
5413
5427
 
5414
- if (rowOnly && prevRow && (!(prevRow instanceof Row$1) || prevRow.type != "row")) {
5428
+ if (rowOnly && prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")) {
5415
5429
  return this.prevDisplayRow(prevRow, rowOnly);
5416
5430
  }
5417
5431
 
@@ -5592,7 +5606,7 @@
5592
5606
 
5593
5607
  }
5594
5608
 
5595
- if (Helpers$1.elVisible(this.element)) {
5609
+ if (Helpers.elVisible(this.element)) {
5596
5610
  if (renderInPosition) {
5597
5611
  this.reRenderInPosition();
5598
5612
  } else {
@@ -5767,9 +5781,9 @@
5767
5781
  this.dispatchExternal("renderStarted");
5768
5782
  this.element.scrollTop = 0;
5769
5783
 
5770
- if (this.displayRowsCount) {
5771
- this._clearTable();
5784
+ this._clearTable();
5772
5785
 
5786
+ if (this.displayRowsCount) {
5773
5787
  this.renderer.renderRows();
5774
5788
 
5775
5789
  if (this.firstRender) {
@@ -6083,7 +6097,7 @@
6083
6097
  _classCallCheck(this, InteractionManager);
6084
6098
 
6085
6099
  _this = _super.call(this, table);
6086
- _this.el = _this.table.element;
6100
+ _this.el = null;
6087
6101
  _this.abortClasses = ["tabulator-headers", "tabulator-table"];
6088
6102
  _this.previousTargets = {};
6089
6103
  _this.listeners = ["click", "dblclick", "contextmenu", "mouseenter", "mouseleave", "mouseover", "mouseout", "mousemove", "touchstart", "touchend"];
@@ -6093,15 +6107,17 @@
6093
6107
  "tabulator-group": "group",
6094
6108
  "tabulator-col": "column"
6095
6109
  };
6096
-
6097
- _this.buildListenerMap();
6098
-
6099
- _this.bindSubscriptionWatchers();
6100
-
6101
6110
  return _this;
6102
6111
  }
6103
6112
 
6104
6113
  _createClass(InteractionManager, [{
6114
+ key: "initialize",
6115
+ value: function initialize() {
6116
+ this.el = this.table.element;
6117
+ this.buildListenerMap();
6118
+ this.bindSubscriptionWatchers();
6119
+ }
6120
+ }, {
6105
6121
  key: "buildListenerMap",
6106
6122
  value: function buildListenerMap() {
6107
6123
  var listenerMap = {};
@@ -6332,15 +6348,15 @@
6332
6348
  return InteractionManager;
6333
6349
  }(CoreFeature);
6334
6350
 
6335
- var ComponentFuctionBinder = /*#__PURE__*/function () {
6336
- function ComponentFuctionBinder(table) {
6337
- _classCallCheck(this, ComponentFuctionBinder);
6351
+ var ComponentFunctionBinder = /*#__PURE__*/function () {
6352
+ function ComponentFunctionBinder(table) {
6353
+ _classCallCheck(this, ComponentFunctionBinder);
6338
6354
 
6339
6355
  this.table = table;
6340
6356
  this.bindings = {};
6341
6357
  }
6342
6358
 
6343
- _createClass(ComponentFuctionBinder, [{
6359
+ _createClass(ComponentFunctionBinder, [{
6344
6360
  key: "bind",
6345
6361
  value: function bind(type, funcName, handler) {
6346
6362
  if (!this.bindings[type]) {
@@ -6366,7 +6382,7 @@
6366
6382
  }
6367
6383
  }]);
6368
6384
 
6369
- return ComponentFuctionBinder;
6385
+ return ComponentFunctionBinder;
6370
6386
  }();
6371
6387
 
6372
6388
  var DataLoader = /*#__PURE__*/function (_CoreFeature) {
@@ -7404,7 +7420,7 @@
7404
7420
  _createClass(Localize, [{
7405
7421
  key: "initialize",
7406
7422
  value: function initialize() {
7407
- this.langList = Helpers$1.deepClone(Localize.langs);
7423
+ this.langList = Helpers.deepClone(Localize.langs);
7408
7424
 
7409
7425
  if (this.table.options.columnDefaults.headerFilterPlaceholder !== false) {
7410
7426
  this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);
@@ -7499,7 +7515,7 @@
7499
7515
 
7500
7516
  this.locale = desiredLocale; //load default lang template
7501
7517
 
7502
- this.lang = Helpers$1.deepClone(this.langList["default"] || {});
7518
+ this.lang = Helpers.deepClone(this.langList["default"] || {});
7503
7519
 
7504
7520
  if (desiredLocale != "default") {
7505
7521
  traverseLang(this.langList[desiredLocale], this.lang);
@@ -7773,11 +7789,13 @@
7773
7789
 
7774
7790
  this.browserSlow = false; //handle reduced functionality for slower browsers
7775
7791
 
7776
- this.browserMobile = false; //check if running on moble, prevent resize cancelling edit on keyboard appearence
7792
+ this.browserMobile = false; //check if running on mobile, prevent resize cancelling edit on keyboard appearance
7777
7793
 
7778
7794
  this.rtl = false; //check if the table is in RTL mode
7779
7795
 
7780
- this.componentFunctionBinder = new ComponentFuctionBinder(this); //bind component functions
7796
+ this.originalElement = null; //hold original table element if it has been replaced
7797
+
7798
+ this.componentFunctionBinder = new ComponentFunctionBinder(this); //bind component functions
7781
7799
 
7782
7800
  this.dataLoader = false; //bind component functions
7783
7801
 
@@ -7791,14 +7809,14 @@
7791
7809
  this.initialized = false;
7792
7810
 
7793
7811
  if (this.initializeElement(element)) {
7794
- this.initialzeCoreSystems(options); //delay table creation to allow event bindings immediatly after the constructor
7812
+ this.initialzeCoreSystems(options); //delay table creation to allow event bindings immediately after the constructor
7795
7813
 
7796
7814
  setTimeout(function () {
7797
7815
  _this._create();
7798
7816
  });
7799
7817
  }
7800
7818
 
7801
- TableRegistry.register(this); //register table for inderdevice communication
7819
+ TableRegistry.register(this); //register table for inter-device communication
7802
7820
  }
7803
7821
 
7804
7822
  _createClass(Tabulator, [{
@@ -7833,7 +7851,7 @@
7833
7851
 
7834
7852
  this._clearObjectPointers();
7835
7853
 
7836
- this._mapDepricatedFunctionality();
7854
+ this._mapDeprecatedFunctionality();
7837
7855
 
7838
7856
  this.externalEvents = new ExternalEventBus(this, this.options, this.options.debugEventsExternal);
7839
7857
  this.eventBus = new InternalEventBus(this.options.debugEventsInternal);
@@ -7842,34 +7860,11 @@
7842
7860
  this.columnManager.initialize();
7843
7861
  this.rowManager.initialize();
7844
7862
  this.footerManager.initialize();
7845
- }
7846
- }, {
7847
- key: "rtlCheck",
7848
- value: function rtlCheck() {
7849
- var style = window.getComputedStyle(this.element);
7850
-
7851
- switch (this.options.textDirection) {
7852
- case "auto":
7853
- if (style.direction !== "rtl") {
7854
- break;
7855
- }
7856
-
7857
- case "rtl":
7858
- this.element.classList.add("tabulator-rtl");
7859
- this.rtl = true;
7860
- break;
7861
-
7862
- case "ltr":
7863
- this.element.classList.add("tabulator-ltr");
7864
-
7865
- default:
7866
- this.rtl = false;
7867
- }
7868
- } //convert depricated functionality to new functions
7863
+ } //convert deprecated functionality to new functions
7869
7864
 
7870
7865
  }, {
7871
- key: "_mapDepricatedFunctionality",
7872
- value: function _mapDepricatedFunctionality() {//all previously deprecated functionality removed in the 5.0 release
7866
+ key: "_mapDeprecatedFunctionality",
7867
+ value: function _mapDeprecatedFunctionality() {//all previously deprecated functionality removed in the 5.0 release
7873
7868
  }
7874
7869
  }, {
7875
7870
  key: "_clearSelection",
@@ -7890,21 +7885,47 @@
7890
7885
  }
7891
7886
 
7892
7887
  this.element.classList.remove("tabulator-block-select");
7893
- } //concreate table
7888
+ } //create table
7894
7889
 
7895
7890
  }, {
7896
7891
  key: "_create",
7897
7892
  value: function _create() {
7898
7893
  this.externalEvents.dispatch("tableBuilding");
7899
7894
  this.eventBus.dispatch("table-building");
7900
- this.rtlCheck();
7895
+
7896
+ this._rtlCheck();
7901
7897
 
7902
7898
  this._buildElement();
7903
7899
 
7900
+ this._initializeTable();
7901
+
7904
7902
  this._loadInitialData();
7905
7903
 
7906
7904
  this.initialized = true;
7907
7905
  this.externalEvents.dispatch("tableBuilt");
7906
+ }
7907
+ }, {
7908
+ key: "_rtlCheck",
7909
+ value: function _rtlCheck() {
7910
+ var style = window.getComputedStyle(this.element);
7911
+
7912
+ switch (this.options.textDirection) {
7913
+ case "auto":
7914
+ if (style.direction !== "rtl") {
7915
+ break;
7916
+ }
7917
+
7918
+ case "rtl":
7919
+ this.element.classList.add("tabulator-rtl");
7920
+ this.rtl = true;
7921
+ break;
7922
+
7923
+ case "ltr":
7924
+ this.element.classList.add("tabulator-ltr");
7925
+
7926
+ default:
7927
+ this.rtl = false;
7928
+ }
7908
7929
  } //clear pointers to objects in default config object
7909
7930
 
7910
7931
  }, {
@@ -7921,7 +7942,26 @@
7921
7942
  key: "_buildElement",
7922
7943
  value: function _buildElement() {
7923
7944
  var element = this.element,
7924
- options = this.options;
7945
+ options = this.options,
7946
+ newElement;
7947
+
7948
+ if (element.tagName === "TABLE") {
7949
+ this.originalElement = this.element;
7950
+ newElement = document.createElement("div"); //transfer attributes to new element
7951
+
7952
+ var attributes = element.attributes; // loop through attributes and apply them on div
7953
+
7954
+ for (var i in attributes) {
7955
+ if (_typeof(attributes[i]) == "object") {
7956
+ newElement.setAttribute(attributes[i].name, attributes[i].value);
7957
+ }
7958
+ } // replace table with div element
7959
+
7960
+
7961
+ element.parentNode.replaceChild(newElement, element);
7962
+ this.element = element = newElement;
7963
+ }
7964
+
7925
7965
  element.classList.add("tabulator");
7926
7966
  element.setAttribute("role", "grid"); //empty element
7927
7967
 
@@ -7946,7 +7986,14 @@
7946
7986
  options.maxHeight = isNaN(options.maxHeight) ? options.maxHeight : options.maxHeight + "px";
7947
7987
  element.style.maxHeight = options.maxHeight;
7948
7988
  }
7989
+ } //initialize core systems and modules
7949
7990
 
7991
+ }, {
7992
+ key: "_initializeTable",
7993
+ value: function _initializeTable() {
7994
+ var element = this.element,
7995
+ options = this.options;
7996
+ this.interactionMonitor.initialize();
7950
7997
  this.columnManager.initialize();
7951
7998
  this.rowManager.initialize();
7952
7999
 
@@ -8000,7 +8047,7 @@
8000
8047
  key: "destroy",
8001
8048
  value: function destroy() {
8002
8049
  var element = this.element;
8003
- TableRegistry.deregister(this); //deregister table from inderdevice communication
8050
+ TableRegistry.deregister(this); //deregister table from inter-device communication
8004
8051
 
8005
8052
  this.eventBus.dispatch("table-destroy"); //clear row data
8006
8053
 
@@ -8124,7 +8171,11 @@
8124
8171
  }, {
8125
8172
  key: "replaceData",
8126
8173
  value: function replaceData(data, params, config) {
8127
- return this.dataLoader.load(data, params, config, true, true);
8174
+ if (this.initialized) {
8175
+ return this.dataLoader.load(data, params, config, true, true);
8176
+ } else {
8177
+ console.warn("replaceData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.");
8178
+ }
8128
8179
  } //update table data
8129
8180
 
8130
8181
  }, {
@@ -8133,59 +8184,68 @@
8133
8184
  var _this3 = this;
8134
8185
 
8135
8186
  var responses = 0;
8136
- return new Promise(function (resolve, reject) {
8137
- _this3.dataLoader.blockActiveLoad();
8138
8187
 
8139
- if (typeof data === "string") {
8140
- data = JSON.parse(data);
8141
- }
8188
+ if (this.initialized) {
8189
+ return new Promise(function (resolve, reject) {
8190
+ _this3.dataLoader.blockActiveLoad();
8142
8191
 
8143
- if (data) {
8144
- data.forEach(function (item) {
8145
- var row = _this3.rowManager.findRow(item[_this3.options.index]);
8192
+ if (typeof data === "string") {
8193
+ data = JSON.parse(data);
8194
+ }
8146
8195
 
8147
- if (row) {
8148
- responses++;
8149
- row.updateData(item).then(function () {
8150
- responses--;
8196
+ if (data) {
8197
+ data.forEach(function (item) {
8198
+ var row = _this3.rowManager.findRow(item[_this3.options.index]);
8151
8199
 
8152
- if (!responses) {
8153
- resolve();
8154
- }
8155
- });
8156
- }
8157
- });
8158
- } else {
8159
- console.warn("Update Error - No data provided");
8160
- reject("Update Error - No data provided");
8161
- }
8162
- });
8200
+ if (row) {
8201
+ responses++;
8202
+ row.updateData(item).then(function () {
8203
+ responses--;
8204
+
8205
+ if (!responses) {
8206
+ resolve();
8207
+ }
8208
+ });
8209
+ }
8210
+ });
8211
+ } else {
8212
+ console.warn("Update Error - No data provided");
8213
+ reject("Update Error - No data provided");
8214
+ }
8215
+ });
8216
+ } else {
8217
+ console.warn("updateData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.");
8218
+ }
8163
8219
  }
8164
8220
  }, {
8165
8221
  key: "addData",
8166
8222
  value: function addData(data, pos, index) {
8167
8223
  var _this4 = this;
8168
8224
 
8169
- return new Promise(function (resolve, reject) {
8170
- _this4.dataLoader.blockActiveLoad();
8225
+ if (this.initialized) {
8226
+ return new Promise(function (resolve, reject) {
8227
+ _this4.dataLoader.blockActiveLoad();
8171
8228
 
8172
- if (typeof data === "string") {
8173
- data = JSON.parse(data);
8174
- }
8229
+ if (typeof data === "string") {
8230
+ data = JSON.parse(data);
8231
+ }
8175
8232
 
8176
- if (data) {
8177
- _this4.rowManager.addRows(data, pos, index).then(function (rows) {
8178
- var output = [];
8179
- rows.forEach(function (row) {
8180
- output.push(row.getComponent());
8233
+ if (data) {
8234
+ _this4.rowManager.addRows(data, pos, index).then(function (rows) {
8235
+ var output = [];
8236
+ rows.forEach(function (row) {
8237
+ output.push(row.getComponent());
8238
+ });
8239
+ resolve(output);
8181
8240
  });
8182
- resolve(output);
8183
- });
8184
- } else {
8185
- console.warn("Update Error - No data provided");
8186
- reject("Update Error - No data provided");
8187
- }
8188
- });
8241
+ } else {
8242
+ console.warn("Update Error - No data provided");
8243
+ reject("Update Error - No data provided");
8244
+ }
8245
+ });
8246
+ } else {
8247
+ console.warn("addData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.");
8248
+ }
8189
8249
  } //update table data
8190
8250
 
8191
8251
  }, {
@@ -8195,44 +8255,49 @@
8195
8255
 
8196
8256
  var rows = [],
8197
8257
  responses = 0;
8198
- return new Promise(function (resolve, reject) {
8199
- _this5.dataLoader.blockActiveLoad();
8200
8258
 
8201
- if (typeof data === "string") {
8202
- data = JSON.parse(data);
8203
- }
8259
+ if (this.initialized) {
8260
+ return new Promise(function (resolve, reject) {
8261
+ _this5.dataLoader.blockActiveLoad();
8204
8262
 
8205
- if (data) {
8206
- data.forEach(function (item) {
8207
- var row = _this5.rowManager.findRow(item[_this5.options.index]);
8263
+ if (typeof data === "string") {
8264
+ data = JSON.parse(data);
8265
+ }
8208
8266
 
8209
- responses++;
8267
+ if (data) {
8268
+ data.forEach(function (item) {
8269
+ var row = _this5.rowManager.findRow(item[_this5.options.index]);
8210
8270
 
8211
- if (row) {
8212
- row.updateData(item).then(function () {
8213
- responses--;
8214
- rows.push(row.getComponent());
8271
+ responses++;
8215
8272
 
8216
- if (!responses) {
8217
- resolve(rows);
8218
- }
8219
- });
8220
- } else {
8221
- _this5.rowManager.addRows(item).then(function (newRows) {
8222
- responses--;
8223
- rows.push(newRows[0].getComponent());
8273
+ if (row) {
8274
+ row.updateData(item).then(function () {
8275
+ responses--;
8276
+ rows.push(row.getComponent());
8224
8277
 
8225
- if (!responses) {
8226
- resolve(rows);
8227
- }
8228
- });
8229
- }
8230
- });
8231
- } else {
8232
- console.warn("Update Error - No data provided");
8233
- reject("Update Error - No data provided");
8234
- }
8235
- });
8278
+ if (!responses) {
8279
+ resolve(rows);
8280
+ }
8281
+ });
8282
+ } else {
8283
+ _this5.rowManager.addRows(item).then(function (newRows) {
8284
+ responses--;
8285
+ rows.push(newRows[0].getComponent());
8286
+
8287
+ if (!responses) {
8288
+ resolve(rows);
8289
+ }
8290
+ });
8291
+ }
8292
+ });
8293
+ } else {
8294
+ console.warn("Update Error - No data provided");
8295
+ reject("Update Error - No data provided");
8296
+ }
8297
+ });
8298
+ } else {
8299
+ console.warn("updateOrAddData failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.");
8300
+ }
8236
8301
  } //get row object
8237
8302
 
8238
8303
  }, {
@@ -8310,13 +8375,17 @@
8310
8375
  }, {
8311
8376
  key: "addRow",
8312
8377
  value: function addRow(data, pos, index) {
8313
- if (typeof data === "string") {
8314
- data = JSON.parse(data);
8315
- }
8378
+ if (this.initialized) {
8379
+ if (typeof data === "string") {
8380
+ data = JSON.parse(data);
8381
+ }
8316
8382
 
8317
- return this.rowManager.addRows(data, pos, index).then(function (rows) {
8318
- return rows[0].getComponent();
8319
- });
8383
+ return this.rowManager.addRows(data, pos, index).then(function (rows) {
8384
+ return rows[0].getComponent();
8385
+ });
8386
+ } else {
8387
+ console.warn("addRow failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.");
8388
+ }
8320
8389
  } //update a row if it exitsts otherwise create it
8321
8390
 
8322
8391
  }, {
@@ -8350,7 +8419,7 @@
8350
8419
 
8351
8420
  if (row) {
8352
8421
  return row.updateData(data).then(function () {
8353
- resolve(row.getComponent());
8422
+ return Promise.resolve(row.getComponent());
8354
8423
  });
8355
8424
  } else {
8356
8425
  console.warn("Update Error - No matching row found:", index);
@@ -8541,8 +8610,12 @@
8541
8610
  }, {
8542
8611
  key: "redraw",
8543
8612
  value: function redraw(force) {
8544
- this.columnManager.redraw(force);
8545
- this.rowManager.redraw(force);
8613
+ if (this.initialized) {
8614
+ this.columnManager.redraw(force);
8615
+ this.rowManager.redraw(force);
8616
+ } else {
8617
+ console.warn("redraw failed - table not yet initialized. Please wait for the `tableBuilt` event before calling this function.");
8618
+ }
8546
8619
  }
8547
8620
  }, {
8548
8621
  key: "setHeight",
@@ -8714,7 +8787,7 @@
8714
8787
  var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
8715
8788
  rowComponent = row.getComponent(); //clone data object with deep copy to isolate internal data from returned result
8716
8789
 
8717
- var data = Helpers$1.deepClone(row.data || {});
8790
+ var data = Helpers.deepClone(row.data || {});
8718
8791
  this.table.columnManager.traverse(function (column) {
8719
8792
  var value, accessor, params, colCompnent;
8720
8793
 
@@ -8875,6 +8948,28 @@
8875
8948
  });
8876
8949
  }
8877
8950
 
8951
+ function generateParamsList$1(data, prefix) {
8952
+ var output = [];
8953
+ prefix = prefix || "";
8954
+
8955
+ if (Array.isArray(data)) {
8956
+ data.forEach(function (item, i) {
8957
+ output = output.concat(generateParamsList$1(item, prefix ? prefix + "[" + i + "]" : i));
8958
+ });
8959
+ } else if (_typeof(data) === "object") {
8960
+ for (var key in data) {
8961
+ output = output.concat(generateParamsList$1(data[key], prefix ? prefix + "[" + key + "]" : key));
8962
+ }
8963
+ } else {
8964
+ output.push({
8965
+ key: prefix,
8966
+ value: data
8967
+ });
8968
+ }
8969
+
8970
+ return output;
8971
+ }
8972
+
8878
8973
  var defaultContentTypeFormatters = {
8879
8974
  "json": {
8880
8975
  headers: {
@@ -8887,7 +8982,7 @@
8887
8982
  "form": {
8888
8983
  headers: {},
8889
8984
  body: function body(url, config, params) {
8890
- var output = this.generateParamsList(params),
8985
+ var output = generateParamsList$1(params),
8891
8986
  form = new FormData();
8892
8987
  output.forEach(function (item) {
8893
8988
  form.append(item.key, item.value);
@@ -9977,7 +10072,7 @@
9977
10072
  this.table.modules.mutator.disable();
9978
10073
  }
9979
10074
 
9980
- row = new Row$1(rowData, this, "calc");
10075
+ row = new Row(rowData, this, "calc");
9981
10076
 
9982
10077
  if (this.table.modExists("mutator")) {
9983
10078
  this.table.modules.mutator.enable();
@@ -9988,7 +10083,7 @@
9988
10083
 
9989
10084
  row.getComponent = function () {
9990
10085
  if (!row.component) {
9991
- row.component = new CalcComponent(_this4);
10086
+ row.component = new CalcComponent(row);
9992
10087
  }
9993
10088
 
9994
10089
  return row.component;
@@ -10018,7 +10113,7 @@
10018
10113
 
10019
10114
  _this4.genColumn.definition.cssClass = column.definition.cssClass; //generate cell and assign to correct column
10020
10115
 
10021
- var cell = new Cell$1(_this4.genColumn, row);
10116
+ var cell = new Cell(_this4.genColumn, row);
10022
10117
  cell.getElement();
10023
10118
  cell.column = column;
10024
10119
  cell.setWidth();
@@ -10452,7 +10547,7 @@
10452
10547
  var config, children;
10453
10548
  output.push(row);
10454
10549
 
10455
- if (row instanceof Row$1) {
10550
+ if (row instanceof Row) {
10456
10551
  row.create();
10457
10552
  config = row.modules.dataTree.children;
10458
10553
 
@@ -10517,7 +10612,7 @@
10517
10612
  }
10518
10613
 
10519
10614
  childArray.forEach(function (childData) {
10520
- var childRow = new Row$1(childData || {}, _this6.table.rowManager);
10615
+ var childRow = new Row(childData || {}, _this6.table.rowManager);
10521
10616
  childRow.create();
10522
10617
  childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
10523
10618
  childRow.modules.dataTree.parent = row;
@@ -10591,7 +10686,7 @@
10591
10686
  }
10592
10687
 
10593
10688
  children.forEach(function (childRow) {
10594
- if (childRow instanceof Row$1) {
10689
+ if (childRow instanceof Row) {
10595
10690
  output.push(childRow);
10596
10691
  }
10597
10692
  });
@@ -10664,7 +10759,7 @@
10664
10759
  var match = false;
10665
10760
 
10666
10761
  if (_typeof(subject) == "object") {
10667
- if (subject instanceof Row$1) {
10762
+ if (subject instanceof Row) {
10668
10763
  //subject is row element
10669
10764
  match = subject.data;
10670
10765
  } else if (subject instanceof RowComponent) {
@@ -10673,7 +10768,7 @@
10673
10768
  } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
10674
10769
  if (parent.modules.dataTree) {
10675
10770
  match = parent.modules.dataTree.children.find(function (childRow) {
10676
- return childRow instanceof Row$1 ? childRow.element === subject : false;
10771
+ return childRow instanceof Row ? childRow.element === subject : false;
10677
10772
  });
10678
10773
 
10679
10774
  if (match) {
@@ -10717,7 +10812,7 @@
10717
10812
  }
10718
10813
 
10719
10814
  config.children.forEach(function (childRow) {
10720
- if (childRow instanceof Row$1) {
10815
+ if (childRow instanceof Row) {
10721
10816
  output.push(component ? childRow.getComponent() : childRow);
10722
10817
 
10723
10818
  if (recurse) {
@@ -10733,7 +10828,7 @@
10733
10828
  key: "checkForRestyle",
10734
10829
  value: function checkForRestyle(cell) {
10735
10830
  if (!cell.row.cells.indexOf(cell)) {
10736
- cell.row.reinitialize();
10831
+ this.layoutRow(cell.row);
10737
10832
  }
10738
10833
  }
10739
10834
  }, {
@@ -12033,7 +12128,7 @@
12033
12128
  parseItems(editorParams.values || [], initialDisplayValue);
12034
12129
  }
12035
12130
 
12036
- var offset = Helpers$1.elOffset(cellEl);
12131
+ var offset = Helpers.elOffset(cellEl);
12037
12132
  listEl.style.minWidth = cellEl.offsetWidth + "px";
12038
12133
  listEl.style.top = offset.top + cellEl.offsetHeight + "px";
12039
12134
  listEl.style.left = offset.left + "px";
@@ -12489,7 +12584,7 @@
12489
12584
  listEl.removeChild(listEl.firstChild);
12490
12585
  }
12491
12586
 
12492
- var offset = Helpers$1.elOffset(cellEl);
12587
+ var offset = Helpers.elOffset(cellEl);
12493
12588
  listEl.style.minWidth = cellEl.offsetWidth + "px";
12494
12589
  listEl.style.top = offset.top + cellEl.offsetHeight + "px";
12495
12590
  listEl.style.left = offset.left + "px";
@@ -12797,8 +12892,8 @@
12797
12892
  //draggable progress bar
12798
12893
  function progress (cell, onRendered, success, cancel, editorParams) {
12799
12894
  var element = cell.getElement(),
12800
- max = typeof editorParams.max === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("max") || 100 : editorParams.max,
12801
- min = typeof editorParams.min === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("min") || 0 : editorParams.min,
12895
+ max = typeof editorParams.max === "undefined" ? element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("max") || 100 : editorParams.max,
12896
+ min = typeof editorParams.min === "undefined" ? element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("min") || 0 : editorParams.min,
12802
12897
  percent = (max - min) / 100,
12803
12898
  value = cell.getValue() || 0,
12804
12899
  handle = document.createElement("div"),
@@ -13191,7 +13286,7 @@
13191
13286
  nextCell = this.findNextEditableCell(prevRow, prevRow.cells.length);
13192
13287
 
13193
13288
  if (nextCell) {
13194
- nextCell.edit();
13289
+ nextCell.getComponent().edit();
13195
13290
  return true;
13196
13291
  }
13197
13292
  }
@@ -13223,7 +13318,7 @@
13223
13318
  nextCell = this.findNextEditableCell(nextRow, -1);
13224
13319
 
13225
13320
  if (nextCell) {
13226
- nextCell.edit();
13321
+ nextCell.getComponent().edit();
13227
13322
  return true;
13228
13323
  }
13229
13324
  }
@@ -13248,7 +13343,7 @@
13248
13343
  nextCell = this.findPrevEditableCell(cell.row, index);
13249
13344
 
13250
13345
  if (nextCell) {
13251
- nextCell.edit();
13346
+ nextCell.getComponent().edit();
13252
13347
  return true;
13253
13348
  }
13254
13349
  }
@@ -13271,7 +13366,7 @@
13271
13366
  nextCell = this.findNextEditableCell(cell.row, index);
13272
13367
 
13273
13368
  if (nextCell) {
13274
- nextCell.edit();
13369
+ nextCell.getComponent().edit();
13275
13370
  return true;
13276
13371
  }
13277
13372
  }
@@ -13294,7 +13389,7 @@
13294
13389
  nextRow = this.table.rowManager.prevDisplayRow(cell.row, true);
13295
13390
 
13296
13391
  if (nextRow) {
13297
- nextRow.cells[index].edit();
13392
+ nextRow.cells[index].getComponent().edit();
13298
13393
  return true;
13299
13394
  }
13300
13395
  }
@@ -13317,7 +13412,7 @@
13317
13412
  nextRow = this.table.rowManager.nextDisplayRow(cell.row, true);
13318
13413
 
13319
13414
  if (nextRow) {
13320
- nextRow.cells[index].edit();
13415
+ nextRow.cells[index].getComponent().edit();
13321
13416
  return true;
13322
13417
  }
13323
13418
  }
@@ -14518,6 +14613,8 @@
14518
14613
  _this.prevHeaderFilterChangeCheck = "{}";
14519
14614
  _this.changed = false; //has filtering changed since last render
14520
14615
 
14616
+ _this.tableInitialized = false;
14617
+
14521
14618
  _this.registerTableOption("filterMode", "local"); //local or remote filtering
14522
14619
 
14523
14620
 
@@ -14616,6 +14713,8 @@
14616
14713
  }
14617
14714
  });
14618
14715
  }
14716
+
14717
+ this.tableInitialized = true;
14619
14718
  }
14620
14719
  }, {
14621
14720
  key: "remoteFilterParams",
@@ -15084,10 +15183,12 @@
15084
15183
  }, {
15085
15184
  key: "refreshFilter",
15086
15185
  value: function refreshFilter() {
15087
- if (this.table.options.filterMode === "remote") {
15088
- this.reloadData();
15089
- } else {
15090
- this.refreshData();
15186
+ if (this.tableInitialized) {
15187
+ if (this.table.options.filterMode === "remote") {
15188
+ this.reloadData();
15189
+ } else {
15190
+ this.refreshData(true);
15191
+ }
15091
15192
  } //TODO - Persist left position of row manager
15092
15193
  // left = this.scrollLeft;
15093
15194
  // this.scrollHorizontal(left);
@@ -15469,12 +15570,14 @@
15469
15570
 
15470
15571
  function money (cell, formatterParams, onRendered) {
15471
15572
  var floatVal = parseFloat(cell.getValue()),
15573
+ sign = "",
15472
15574
  number,
15473
15575
  integer,
15474
15576
  decimal,
15475
15577
  rgx;
15476
15578
  var decimalSym = formatterParams.decimal || ".";
15477
15579
  var thousandSym = formatterParams.thousand || ",";
15580
+ var negativeSign = formatterParams.negativeSign || "-";
15478
15581
  var symbol = formatterParams.symbol || "";
15479
15582
  var after = !!formatterParams.symbolAfter;
15480
15583
  var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2;
@@ -15483,6 +15586,11 @@
15483
15586
  return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
15484
15587
  }
15485
15588
 
15589
+ if (floatVal < 0) {
15590
+ floatVal = Math.abs(floatVal);
15591
+ sign = negativeSign;
15592
+ }
15593
+
15486
15594
  number = precision !== false ? floatVal.toFixed(precision) : floatVal;
15487
15595
  number = String(number).split(".");
15488
15596
  integer = number[0];
@@ -15493,7 +15601,7 @@
15493
15601
  integer = integer.replace(rgx, "$1" + thousandSym + "$2");
15494
15602
  }
15495
15603
 
15496
- return after ? integer + decimal + symbol : symbol + integer + decimal;
15604
+ return after ? sign + integer + decimal + symbol : sign + symbol + integer + decimal;
15497
15605
  }
15498
15606
 
15499
15607
  function link (cell, formatterParams, onRendered) {
@@ -15632,7 +15740,7 @@
15632
15740
  var value = cell.getValue();
15633
15741
 
15634
15742
  if (typeof DT != "undefined") {
15635
- var newDatetime = (window.DateTime || luxon.DateTime).fromFormat(value, inputFormat);
15743
+ var newDatetime = DT.fromFormat(String(value), inputFormat);
15636
15744
 
15637
15745
  if (newDatetime.isValid) {
15638
15746
  if (formatterParams.timezone) {
@@ -15641,7 +15749,7 @@
15641
15749
 
15642
15750
  return newDatetime.toFormat(outputFormat);
15643
15751
  } else {
15644
- if (invalid === true) {
15752
+ if (invalid === true || !value) {
15645
15753
  return value;
15646
15754
  } else if (typeof invalid === "function") {
15647
15755
  return invalid(value);
@@ -15665,7 +15773,7 @@
15665
15773
  var value = cell.getValue();
15666
15774
 
15667
15775
  if (typeof DT != "undefined") {
15668
- var newDatetime = DT.fromFormat(value, inputFormat);
15776
+ var newDatetime = DT.fromFormat(String(value), inputFormat);
15669
15777
 
15670
15778
  if (newDatetime.isValid) {
15671
15779
  if (humanize) ; else {
@@ -16400,29 +16508,52 @@
16400
16508
  if (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {
16401
16509
  this.layoutRow(this.table.modules.columnCalcs.botRow);
16402
16510
  }
16511
+
16512
+ if (this.table.modExists("groupRows")) {
16513
+ this.layoutGroupCalcs(this.table.modules.groupRows.getGroups());
16514
+ }
16403
16515
  }
16516
+ }
16517
+ }, {
16518
+ key: "layoutGroupCalcs",
16519
+ value: function layoutGroupCalcs(groups) {
16520
+ var _this3 = this;
16521
+
16522
+ groups.forEach(function (group) {
16523
+ if (group.calcs.top) {
16524
+ _this3.layoutRow(group.calcs.top);
16525
+ }
16526
+
16527
+ if (group.calcs.bottom) {
16528
+ _this3.layoutRow(group.calcs.bottom);
16529
+ }
16530
+
16531
+ if (group.groupList && group.groupList.length) {
16532
+ _this3.layoutGroupCalcs(group.groupList && group.groupList);
16533
+ }
16534
+ });
16404
16535
  } //calculate column positions and layout headers
16405
16536
 
16406
16537
  }, {
16407
16538
  key: "layoutColumnPosition",
16408
16539
  value: function layoutColumnPosition(allCells) {
16409
- var _this3 = this;
16540
+ var _this4 = this;
16410
16541
 
16411
16542
  var leftParents = [];
16412
16543
  this.leftColumns.forEach(function (column, i) {
16413
- column.modules.frozen.margin = _this3._calcSpace(_this3.leftColumns, i) + _this3.table.columnManager.scrollLeft + "px";
16544
+ column.modules.frozen.margin = _this4._calcSpace(_this4.leftColumns, i) + _this4.table.columnManager.scrollLeft + "px";
16414
16545
 
16415
- if (i == _this3.leftColumns.length - 1) {
16546
+ if (i == _this4.leftColumns.length - 1) {
16416
16547
  column.modules.frozen.edge = true;
16417
16548
  } else {
16418
16549
  column.modules.frozen.edge = false;
16419
16550
  }
16420
16551
 
16421
16552
  if (column.parent.isGroup) {
16422
- var parentEl = _this3.getColGroupParentElement(column);
16553
+ var parentEl = _this4.getColGroupParentElement(column);
16423
16554
 
16424
16555
  if (!leftParents.includes(parentEl)) {
16425
- _this3.layoutElement(parentEl, column);
16556
+ _this4.layoutElement(parentEl, column);
16426
16557
 
16427
16558
  leftParents.push(parentEl);
16428
16559
  }
@@ -16431,33 +16562,33 @@
16431
16562
  parentEl.classList.add("tabulator-frozen-" + column.modules.frozen.position);
16432
16563
  }
16433
16564
  } else {
16434
- _this3.layoutElement(column.getElement(), column);
16565
+ _this4.layoutElement(column.getElement(), column);
16435
16566
  }
16436
16567
 
16437
16568
  if (allCells) {
16438
16569
  column.cells.forEach(function (cell) {
16439
- _this3.layoutElement(cell.getElement(true), column);
16570
+ _this4.layoutElement(cell.getElement(true), column);
16440
16571
  });
16441
16572
  }
16442
16573
  });
16443
16574
  this.rightColumns.forEach(function (column, i) {
16444
- column.modules.frozen.margin = _this3.rightPadding - _this3._calcSpace(_this3.rightColumns, i + 1) + "px";
16575
+ column.modules.frozen.margin = _this4.rightPadding - _this4._calcSpace(_this4.rightColumns, i + 1) + "px";
16445
16576
 
16446
- if (i == _this3.rightColumns.length - 1) {
16577
+ if (i == _this4.rightColumns.length - 1) {
16447
16578
  column.modules.frozen.edge = true;
16448
16579
  } else {
16449
16580
  column.modules.frozen.edge = false;
16450
16581
  }
16451
16582
 
16452
16583
  if (column.parent.isGroup) {
16453
- _this3.layoutElement(_this3.getColGroupParentElement(column), column);
16584
+ _this4.layoutElement(_this4.getColGroupParentElement(column), column);
16454
16585
  } else {
16455
- _this3.layoutElement(column.getElement(), column);
16586
+ _this4.layoutElement(column.getElement(), column);
16456
16587
  }
16457
16588
 
16458
16589
  if (allCells) {
16459
16590
  column.cells.forEach(function (cell) {
16460
- _this3.layoutElement(cell.getElement(true), column);
16591
+ _this4.layoutElement(cell.getElement(true), column);
16461
16592
  });
16462
16593
  }
16463
16594
  });
@@ -16471,14 +16602,14 @@
16471
16602
  }, {
16472
16603
  key: "layout",
16473
16604
  value: function layout() {
16474
- var _this4 = this;
16605
+ var _this5 = this;
16475
16606
 
16476
16607
  if (this.active) {
16477
16608
  //calculate row padding
16478
16609
  this.calcMargins();
16479
16610
  this.table.rowManager.getDisplayRows().forEach(function (row) {
16480
16611
  if (row.type === "row") {
16481
- _this4.layoutRow(row);
16612
+ _this5.layoutRow(row);
16482
16613
  }
16483
16614
  });
16484
16615
  this.layoutCalcRows(); //calculate left columns
@@ -16490,7 +16621,7 @@
16490
16621
  }, {
16491
16622
  key: "layoutRow",
16492
16623
  value: function layoutRow(row) {
16493
- var _this5 = this;
16624
+ var _this6 = this;
16494
16625
 
16495
16626
  var rowEl = row.getElement();
16496
16627
  rowEl.style.paddingLeft = this.leftMargin;
@@ -16498,14 +16629,14 @@
16498
16629
  var cell = row.getCell(column);
16499
16630
 
16500
16631
  if (cell) {
16501
- _this5.layoutElement(cell.getElement(true), column);
16632
+ _this6.layoutElement(cell.getElement(true), column);
16502
16633
  }
16503
16634
  });
16504
16635
  this.rightColumns.forEach(function (column) {
16505
16636
  var cell = row.getCell(column);
16506
16637
 
16507
16638
  if (cell) {
16508
- _this5.layoutElement(cell.getElement(true), column);
16639
+ _this6.layoutElement(cell.getElement(true), column);
16509
16640
  }
16510
16641
  });
16511
16642
  }
@@ -16641,7 +16772,11 @@
16641
16772
 
16642
16773
  if (index > -1) {
16643
16774
  var rowEl = row.getElement();
16644
- rowEl.parentNode.removeChild(rowEl);
16775
+
16776
+ if (rowEl.parentNode) {
16777
+ rowEl.parentNode.removeChild(rowEl);
16778
+ }
16779
+
16645
16780
  this.rows.splice(index, 1);
16646
16781
  }
16647
16782
  }
@@ -16785,10 +16920,16 @@
16785
16920
  group.wipe();
16786
16921
  });
16787
16922
  } else {
16788
- this.element = false;
16789
- this.arrowElement = false;
16790
- this.elementContents = false;
16923
+ this.rows.forEach(function (row) {
16924
+ if (row.modules) {
16925
+ delete row.modules.group;
16926
+ }
16927
+ });
16791
16928
  }
16929
+
16930
+ this.element = false;
16931
+ this.arrowElement = false;
16932
+ this.elementContents = false;
16792
16933
  }
16793
16934
  }, {
16794
16935
  key: "createElements",
@@ -17349,7 +17490,7 @@
17349
17490
  this.initialized = false;
17350
17491
  this.height = 0;
17351
17492
 
17352
- if (Helpers$1.elVisible(this.element)) {
17493
+ if (Helpers.elVisible(this.element)) {
17353
17494
  this.initialize(true);
17354
17495
  }
17355
17496
  }
@@ -17479,6 +17620,30 @@
17479
17620
  _createClass(GroupRows, [{
17480
17621
  key: "initialize",
17481
17622
  value: function initialize() {
17623
+ if (this.table.options.groupBy) {
17624
+ this.configureGroupSetup();
17625
+
17626
+ if (this.table.options.groupUpdateOnCellEdit) {
17627
+ this.subscribe("cell-value-updated", this.cellUpdated.bind(this));
17628
+ this.subscribe("row-data-changed", this.reassignRowToGroup.bind(this), 0);
17629
+ }
17630
+
17631
+ this.subscribe("row-deleting", this.rowDeleting.bind(this));
17632
+ this.subscribe("row-deleted", this.rowsUpdated.bind(this));
17633
+ this.subscribe("scroll-horizontal", this.scrollHeaders.bind(this));
17634
+ this.subscribe("rows-wipe", this.wipe.bind(this));
17635
+ this.subscribe("rows-added", this.rowsUpdated.bind(this));
17636
+ this.subscribe("row-moving", this.rowMoving.bind(this));
17637
+ this.subscribe("row-adding-index", this.rowAddingIndex.bind(this));
17638
+ this.subscribe("rows-sample", this.rowSample.bind(this));
17639
+ this.subscribe("render-virtual-fill", this.virtualRenderFill.bind(this));
17640
+ this.registerDisplayHandler(this.displayHandler, 20);
17641
+ this.initialized = true;
17642
+ }
17643
+ }
17644
+ }, {
17645
+ key: "configureGroupSetup",
17646
+ value: function configureGroupSetup() {
17482
17647
  var _this2 = this;
17483
17648
 
17484
17649
  if (this.table.options.groupBy) {
@@ -17568,23 +17733,6 @@
17568
17733
  if (groupHeader) {
17569
17734
  this.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];
17570
17735
  }
17571
-
17572
- if (this.table.options.groupUpdateOnCellEdit) {
17573
- this.subscribe("cell-value-updated", this.cellUpdated.bind(this));
17574
- this.subscribe("row-data-changed", this.reassignRowToGroup.bind(this), 0);
17575
- }
17576
-
17577
- this.subscribe("row-deleting", this.rowDeleting.bind(this));
17578
- this.subscribe("row-deleted", this.rowsUpdated.bind(this));
17579
- this.subscribe("scroll-horizontal", this.scrollHeaders.bind(this));
17580
- this.subscribe("rows-wipe", this.wipe.bind(this));
17581
- this.subscribe("rows-added", this.rowsUpdated.bind(this));
17582
- this.subscribe("row-moving", this.rowMoving.bind(this));
17583
- this.subscribe("row-adding-index", this.rowAddingIndex.bind(this));
17584
- this.subscribe("rows-sample", this.rowSample.bind(this));
17585
- this.subscribe("render-virtual-fill", this.virtualRenderFill.bind(this));
17586
- this.registerDisplayHandler(this.displayHandler, 20);
17587
- this.initialized = true;
17588
17736
  }
17589
17737
  }
17590
17738
  }, {
@@ -17646,23 +17794,29 @@
17646
17794
  key: "setGroupBy",
17647
17795
  value: function setGroupBy(groups) {
17648
17796
  this.table.options.groupBy = groups;
17649
- this.initialize();
17650
- this.refreshData(false, "display");
17797
+
17798
+ if (!this.initialized) {
17799
+ this.initialize();
17800
+ } else {
17801
+ this.configureGroupSetup();
17802
+ }
17803
+
17804
+ this.refreshData();
17651
17805
  this.trackChanges();
17652
17806
  }
17653
17807
  }, {
17654
17808
  key: "setGroupValues",
17655
17809
  value: function setGroupValues(groupValues) {
17656
17810
  this.table.options.groupValues = groupValues;
17657
- this.initialize();
17658
- this.refreshData(false, "display");
17811
+ this.configureGroupSetup();
17812
+ this.refreshData();
17659
17813
  this.trackChanges();
17660
17814
  }
17661
17815
  }, {
17662
17816
  key: "setGroupStartOpen",
17663
17817
  value: function setGroupStartOpen(values) {
17664
17818
  this.table.options.groupStartOpen = values;
17665
- this.initialize();
17819
+ this.configureGroupSetup();
17666
17820
 
17667
17821
  if (this.table.options.groupBy) {
17668
17822
  this.refreshData();
@@ -17675,7 +17829,7 @@
17675
17829
  key: "setGroupHeader",
17676
17830
  value: function setGroupHeader(values) {
17677
17831
  this.table.options.groupHeader = values;
17678
- this.initialize();
17832
+ this.configureGroupSetup();
17679
17833
 
17680
17834
  if (this.table.options.groupBy) {
17681
17835
  this.refreshData();
@@ -17758,7 +17912,7 @@
17758
17912
  }, {
17759
17913
  key: "getRows",
17760
17914
  value: function getRows(rows) {
17761
- if (this.groupIDLookups.length) {
17915
+ if (this.table.options.groupBy && this.groupIDLookups.length) {
17762
17916
  this.dispatchExternal("dataGrouping");
17763
17917
  this.generateGroups(rows);
17764
17918
 
@@ -17999,6 +18153,7 @@
17999
18153
  var defaultUndoers = {
18000
18154
  cellEdit: function cellEdit(action) {
18001
18155
  action.component.setValueProcessData(action.data.oldValue);
18156
+ action.component.cellRendered();
18002
18157
  },
18003
18158
  rowAdd: function rowAdd(action) {
18004
18159
  action.component.deleteActual();
@@ -18021,6 +18176,7 @@
18021
18176
  var defaultRedoers = {
18022
18177
  cellEdit: function cellEdit(action) {
18023
18178
  action.component.setValueProcessData(action.data.newValue);
18179
+ action.component.cellRendered();
18024
18180
  },
18025
18181
  rowAdd: function rowAdd(action) {
18026
18182
  var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
@@ -18117,7 +18273,7 @@
18117
18273
  }
18118
18274
  }
18119
18275
 
18120
- this.history.action("rowDelete", row, {
18276
+ this.action("rowDelete", row, {
18121
18277
  data: row.getData(),
18122
18278
  pos: !index,
18123
18279
  index: index
@@ -18252,19 +18408,19 @@
18252
18408
  _createClass(HtmlTableImport, [{
18253
18409
  key: "initialize",
18254
18410
  value: function initialize() {
18255
- this.subscribe("table-building", this.tableElementCheck.bind(this));
18411
+ this.tableElementCheck();
18256
18412
  }
18257
18413
  }, {
18258
18414
  key: "tableElementCheck",
18259
18415
  value: function tableElementCheck() {
18260
- if (this.table.element.tagName === "TABLE") {
18416
+ if (this.table.originalElement && this.table.originalElement.tagName === "TABLE") {
18261
18417
  this.parseTable();
18262
18418
  }
18263
18419
  }
18264
18420
  }, {
18265
18421
  key: "parseTable",
18266
18422
  value: function parseTable() {
18267
- var element = this.table.element,
18423
+ var element = this.table.originalElement,
18268
18424
  options = this.table.options,
18269
18425
  columns = options.columns,
18270
18426
  headers = element.getElementsByTagName("th"),
@@ -18272,7 +18428,7 @@
18272
18428
  data = [];
18273
18429
  this.hasIndex = false;
18274
18430
  this.dispatchExternal("htmlImporting");
18275
- rows = rows ? rows.getElementsByTagName("tr") : []; //check for tablator inline options
18431
+ rows = rows ? rows.getElementsByTagName("tr") : []; //check for Tabulator inline options
18276
18432
 
18277
18433
  this._extractOptions(element, options);
18278
18434
 
@@ -18302,31 +18458,17 @@
18302
18458
 
18303
18459
 
18304
18460
  data.push(item);
18305
- } //create new element
18306
-
18307
-
18308
- var newElement = document.createElement("div"); //transfer attributes to new element
18309
-
18310
- var attributes = element.attributes; // loop through attributes and apply them on div
18311
-
18312
- for (var i in attributes) {
18313
- if (_typeof(attributes[i]) == "object") {
18314
- newElement.setAttribute(attributes[i].name, attributes[i].value);
18315
- }
18316
- } // replace table with div element
18317
-
18461
+ }
18318
18462
 
18319
- element.parentNode.replaceChild(newElement, element);
18320
18463
  options.data = data;
18321
18464
  this.dispatchExternal("htmlImported");
18322
- this.table.element = newElement;
18323
18465
  } //extract tabulator attribute options
18324
18466
 
18325
18467
  }, {
18326
18468
  key: "_extractOptions",
18327
18469
  value: function _extractOptions(element, options, defaultOptions) {
18328
18470
  var attributes = element.attributes;
18329
- var optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);
18471
+ var optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);
18330
18472
  var optionsList = {};
18331
18473
  optionsArr.forEach(function (item) {
18332
18474
  optionsList[item.toLowerCase()] = item;
@@ -18394,12 +18536,10 @@
18394
18536
 
18395
18537
  if (width && !col.width) {
18396
18538
  col.width = width;
18397
- } //check for tablator inline options
18398
-
18539
+ } //check for Tabulator inline options
18399
18540
 
18400
- header.attributes; // //check for tablator inline options
18401
18541
 
18402
- this._extractOptions(header, col, Column.prototype.defaultOptionList);
18542
+ this._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);
18403
18543
 
18404
18544
  this.fieldIndex[index] = col.field;
18405
18545
 
@@ -18747,7 +18887,7 @@
18747
18887
  callback;
18748
18888
 
18749
18889
  if (this.columnSubscribers[action]) {
18750
- if (component instanceof Cell$1) {
18890
+ if (component instanceof Cell) {
18751
18891
  callback = component.column.definition[action];
18752
18892
  } else if (component instanceof Column$1) {
18753
18893
  callback = component.definition[action];
@@ -19371,7 +19511,7 @@
19371
19511
  y = touch ? e.touches[0].pageY : e.pageY;
19372
19512
  this.positionReversedX = false;
19373
19513
  } else {
19374
- parentOffset = Helpers$1.elOffset(parentEl);
19514
+ parentOffset = Helpers.elOffset(parentEl);
19375
19515
  x = parentOffset.left + parentEl.offsetWidth;
19376
19516
  y = parentOffset.top - 1;
19377
19517
  }
@@ -19497,7 +19637,9 @@
19497
19637
  }, {
19498
19638
  key: "initialize",
19499
19639
  value: function initialize() {
19500
- this.subscribe("column-init", this.initializeColumn.bind(this));
19640
+ if (this.table.options.movableColumns) {
19641
+ this.subscribe("column-init", this.initializeColumn.bind(this));
19642
+ }
19501
19643
  }
19502
19644
  }, {
19503
19645
  key: "initializeColumn",
@@ -19511,7 +19653,7 @@
19511
19653
 
19512
19654
  config.mousemove = function (e) {
19513
19655
  if (column.parent === self.moving.parent) {
19514
- if ((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers$1.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) {
19656
+ if ((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) {
19515
19657
  if (self.toCol !== column || !self.toColAfter) {
19516
19658
  colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);
19517
19659
  self.moveColumn(column, true);
@@ -19636,9 +19778,11 @@
19636
19778
  }, {
19637
19779
  key: "startMove",
19638
19780
  value: function startMove(e, column) {
19639
- var element = column.getElement();
19781
+ var element = column.getElement(),
19782
+ headerElement = this.table.columnManager.getElement(),
19783
+ headersElement = this.table.columnManager.getHeadersElement();
19640
19784
  this.moving = column;
19641
- this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers$1.elOffset(element).left;
19785
+ this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(element).left;
19642
19786
  this.table.element.classList.add("tabulator-block-select"); //create placeholder
19643
19787
 
19644
19788
  this.placeholderElement.style.width = column.getWidth() + "px";
@@ -19650,7 +19794,7 @@
19650
19794
  this.hoverElement.classList.add("tabulator-moving");
19651
19795
  this.table.columnManager.getElement().appendChild(this.hoverElement);
19652
19796
  this.hoverElement.style.left = "0";
19653
- this.hoverElement.style.bottom = "0";
19797
+ this.hoverElement.style.bottom = headerElement.clientHeight - headersElement.offsetHeight + "px";
19654
19798
 
19655
19799
  if (!this.touchMove) {
19656
19800
  this._bindMouseMove();
@@ -19690,7 +19834,7 @@
19690
19834
  column.getCells().forEach(function (cell, i) {
19691
19835
  var cellEl = cell.getElement(true);
19692
19836
 
19693
- if (cellEl.parentNode) {
19837
+ if (cellEl.parentNode && movingCells[i]) {
19694
19838
  cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);
19695
19839
  }
19696
19840
  });
@@ -19698,7 +19842,7 @@
19698
19842
  column.getCells().forEach(function (cell, i) {
19699
19843
  var cellEl = cell.getElement(true);
19700
19844
 
19701
- if (cellEl.parentNode) {
19845
+ if (cellEl.parentNode && movingCells[i]) {
19702
19846
  cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);
19703
19847
  }
19704
19848
  });
@@ -19736,7 +19880,7 @@
19736
19880
 
19737
19881
  var columnHolder = this.table.columnManager.getElement(),
19738
19882
  scrollLeft = columnHolder.scrollLeft,
19739
- xPos = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers$1.elOffset(columnHolder).left + scrollLeft,
19883
+ xPos = (this.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(columnHolder).left + scrollLeft,
19740
19884
  scrollPos;
19741
19885
  this.hoverElement.style.left = xPos - this.startX + "px";
19742
19886
 
@@ -19860,7 +20004,7 @@
19860
20004
 
19861
20005
 
19862
20006
  config.mousemove = function (e) {
19863
- if (e.pageY - Helpers$1.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) {
20007
+ if (e.pageY - Helpers.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) {
19864
20008
  if (self.toRow !== group || !self.toRowAfter) {
19865
20009
  var rowEl = group.getElement();
19866
20010
  rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
@@ -19895,7 +20039,7 @@
19895
20039
  config.mousemove = function (e) {
19896
20040
  var rowEl = row.getElement();
19897
20041
 
19898
- if (e.pageY - Helpers$1.elOffset(rowEl).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {
20042
+ if (e.pageY - Helpers.elOffset(rowEl).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {
19899
20043
  if (self.toRow !== row || !self.toRowAfter) {
19900
20044
  rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
19901
20045
  self.moveRow(row, true);
@@ -20806,7 +20950,7 @@
20806
20950
  margin = this.table.options.progressiveLoadScrollMargin || element.clientHeight * 2;
20807
20951
 
20808
20952
  if (diff < margin) {
20809
- this.nextPage();
20953
+ this.nextPage()["catch"](function () {}); //consume the exception thrown when on the last page
20810
20954
  }
20811
20955
  }
20812
20956
  }
@@ -23101,6 +23245,10 @@
23101
23245
 
23102
23246
  if (column.definition.title && column.field) {
23103
23247
  if (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {
23248
+ var onRendered = function onRendered(callback) {
23249
+ callback();
23250
+ };
23251
+
23104
23252
  mockCellComponent = {
23105
23253
  value: false,
23106
23254
  data: {},
@@ -23123,7 +23271,7 @@
23123
23271
  output.push({
23124
23272
  field: column.field,
23125
23273
  title: column.definition.title,
23126
- value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)
23274
+ value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params, onRendered)
23127
23275
  });
23128
23276
  } else {
23129
23277
  output.push({
@@ -23239,9 +23387,9 @@
23239
23387
  this.subscribe("row-init", this.initializeRow.bind(this));
23240
23388
  this.subscribe("row-deleting", this.rowDeleted.bind(this));
23241
23389
  this.subscribe("rows-wipe", this.clearSelectionData.bind(this));
23242
- this.subscribe("rows-retrieve", this.clearSelectionData.bind(this));
23390
+ this.subscribe("rows-retrieve", this.rowRetrieve.bind(this));
23243
23391
 
23244
- if (this.table.options.selectable && this.table.options.selectablePersistence) {
23392
+ if (this.table.options.selectable && !this.table.options.selectablePersistence) {
23245
23393
  this.subscribe("data-refeshing", this.deselectRows.bind(this));
23246
23394
  }
23247
23395
  }
@@ -23504,6 +23652,7 @@
23504
23652
  value: function deselectRows(rows, silent) {
23505
23653
  var self = this,
23506
23654
  rowCount;
23655
+ console.trace("deselect");
23507
23656
 
23508
23657
  if (typeof rows == "undefined") {
23509
23658
  rowCount = self.selectedRows.length;
@@ -23748,8 +23897,8 @@
23748
23897
  emptyAlign = 0;
23749
23898
 
23750
23899
  if (typeof DT != "undefined") {
23751
- a = DT.fromFormat(a, format);
23752
- b = DT.fromFormat(b, format);
23900
+ a = DT.fromFormat(String(a), format);
23901
+ b = DT.fromFormat(String(b), format);
23753
23902
 
23754
23903
  if (!a.isValid) {
23755
23904
  emptyAlign = !b.isValid ? 0 : -1;
@@ -24137,7 +24286,7 @@
24137
24286
  if (this.table.options.sortMode === "remote") {
24138
24287
  this.reloadData();
24139
24288
  } else {
24140
- this.refreshData();
24289
+ this.refreshData(true);
24141
24290
  } //TODO - Persist left position of row manager
24142
24291
  // left = this.scrollLeft;
24143
24292
  // this.scrollHorizontal(left);