tabulator-tables 5.5.0 → 5.5.2

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 (77) hide show
  1. package/LICENSE +1 -1
  2. package/bower.json +1 -1
  3. package/build/Bundler.js +7 -3
  4. package/dist/css/tabulator.css +7 -2
  5. package/dist/css/tabulator.css.map +1 -1
  6. package/dist/css/tabulator.min.css +1 -1
  7. package/dist/css/tabulator.min.css.map +1 -1
  8. package/dist/css/tabulator_bootstrap3.css +7 -2
  9. package/dist/css/tabulator_bootstrap3.css.map +1 -1
  10. package/dist/css/tabulator_bootstrap3.min.css +1 -1
  11. package/dist/css/tabulator_bootstrap3.min.css.map +1 -1
  12. package/dist/css/tabulator_bootstrap4.css +7 -2
  13. package/dist/css/tabulator_bootstrap4.css.map +1 -1
  14. package/dist/css/tabulator_bootstrap4.min.css +1 -1
  15. package/dist/css/tabulator_bootstrap4.min.css.map +1 -1
  16. package/dist/css/tabulator_bootstrap5.css +7 -2
  17. package/dist/css/tabulator_bootstrap5.css.map +1 -1
  18. package/dist/css/tabulator_bootstrap5.min.css +1 -1
  19. package/dist/css/tabulator_bootstrap5.min.css.map +1 -1
  20. package/dist/css/tabulator_bulma.css +7 -2
  21. package/dist/css/tabulator_bulma.css.map +1 -1
  22. package/dist/css/tabulator_bulma.min.css +1 -1
  23. package/dist/css/tabulator_bulma.min.css.map +1 -1
  24. package/dist/css/tabulator_materialize.css +22 -17
  25. package/dist/css/tabulator_materialize.css.map +1 -1
  26. package/dist/css/tabulator_materialize.min.css +1 -1
  27. package/dist/css/tabulator_materialize.min.css.map +1 -1
  28. package/dist/css/tabulator_midnight.css +7 -2
  29. package/dist/css/tabulator_midnight.css.map +1 -1
  30. package/dist/css/tabulator_midnight.min.css +1 -1
  31. package/dist/css/tabulator_midnight.min.css.map +1 -1
  32. package/dist/css/tabulator_modern.css +7 -2
  33. package/dist/css/tabulator_modern.css.map +1 -1
  34. package/dist/css/tabulator_modern.min.css +1 -1
  35. package/dist/css/tabulator_modern.min.css.map +1 -1
  36. package/dist/css/tabulator_semanticui.css +9 -4
  37. package/dist/css/tabulator_semanticui.css.map +1 -1
  38. package/dist/css/tabulator_semanticui.min.css +1 -1
  39. package/dist/css/tabulator_semanticui.min.css.map +1 -1
  40. package/dist/css/tabulator_simple.css +7 -2
  41. package/dist/css/tabulator_simple.css.map +1 -1
  42. package/dist/css/tabulator_simple.min.css +1 -1
  43. package/dist/css/tabulator_simple.min.css.map +1 -1
  44. package/dist/css/tabulator_site.css +7 -2
  45. package/dist/css/tabulator_site.css.map +1 -1
  46. package/dist/css/tabulator_site.min.css +1 -1
  47. package/dist/css/tabulator_site.min.css.map +1 -1
  48. package/dist/js/jquery_wrapper.js +10 -2
  49. package/dist/js/tabulator.js +168 -92
  50. package/dist/js/tabulator.js.map +1 -1
  51. package/dist/js/tabulator.min.js +2 -2
  52. package/dist/js/tabulator.min.js.map +1 -1
  53. package/dist/js/tabulator_esm.js +168 -92
  54. package/dist/js/tabulator_esm.js.map +1 -1
  55. package/dist/js/tabulator_esm.min.js +2 -2
  56. package/dist/js/tabulator_esm.min.js.map +1 -1
  57. package/package.json +3 -2
  58. package/src/js/builds/jquery_wrapper.js +10 -2
  59. package/src/js/core/RowManager.js +2 -0
  60. package/src/js/core/rendering/renderers/BasicHorizontal.js +9 -7
  61. package/src/js/core/rendering/renderers/BasicVertical.js +43 -25
  62. package/src/js/core/rendering/renderers/VirtualDomVertical.js +6 -3
  63. package/src/js/core/row/Row.js +9 -3
  64. package/src/js/core/tools/DataLoader.js +44 -36
  65. package/src/js/modules/DataTree/DataTree.js +4 -1
  66. package/src/js/modules/GroupRows/Group.js +27 -10
  67. package/src/js/modules/History/defaults/redoers.js +4 -2
  68. package/src/js/modules/History/defaults/undoers.js +6 -2
  69. package/src/js/modules/HtmlTableImport/HtmlTableImport.js +2 -2
  70. package/src/js/modules/Keybindings/defaults/bindings.js +1 -1
  71. package/src/js/modules/Layout/Layout.js +10 -0
  72. package/src/js/modules/ResizeColumns/ResizeColumns.js +1 -0
  73. package/src/scss/tabulator.scss +7 -2
  74. package/src/scss/themes/materialize/tabulator_materialize.scss +2 -2
  75. package/src/scss/themes/materialize/variables.scss +1 -1
  76. package/src/scss/themes/semanticui/tabulator_semanticui.scss +1 -1
  77. package/src/scss/themes/semanticui/variables_table.scss +1 -1
@@ -1,4 +1,4 @@
1
- /* Tabulator v5.5.0 (c) Oliver Folkerd 2023 */
1
+ /* Tabulator v5.5.2 (c) Oliver Folkerd 2023 */
2
2
  class CoreFeature{
3
3
 
4
4
  constructor(table){
@@ -3112,7 +3112,7 @@ class Row extends CoreFeature{
3112
3112
  }
3113
3113
 
3114
3114
  //functions to setup on first render
3115
- initialize(force){
3115
+ initialize(force, inFragment){
3116
3116
  this.create();
3117
3117
 
3118
3118
  if(!this.initialized || force){
@@ -3127,7 +3127,7 @@ class Row extends CoreFeature{
3127
3127
 
3128
3128
  this.initialized = true;
3129
3129
 
3130
- this.table.columnManager.renderer.renderRowCells(this);
3130
+ this.table.columnManager.renderer.renderRowCells(this, inFragment);
3131
3131
 
3132
3132
  if(force){
3133
3133
  this.normalizeHeight();
@@ -3141,9 +3141,15 @@ class Row extends CoreFeature{
3141
3141
 
3142
3142
  this.dispatch("row-layout-after", this);
3143
3143
  }else {
3144
- this.table.columnManager.renderer.rerenderRowCells(this);
3144
+ this.table.columnManager.renderer.rerenderRowCells(this, inFragment);
3145
3145
  }
3146
3146
  }
3147
+
3148
+ rendered(){
3149
+ this.cells.forEach((cell) => {
3150
+ cell.cellRendered();
3151
+ });
3152
+ }
3147
3153
 
3148
3154
  reinitializeHeight(){
3149
3155
  this.heightInitialized = false;
@@ -4231,6 +4237,9 @@ class DataTree extends Module{
4231
4237
  this.branchEl = options.dataTreeBranchElement;
4232
4238
  }
4233
4239
  }
4240
+ }else {
4241
+ this.branchEl = document.createElement("div");
4242
+ this.branchEl.classList.add("tabulator-data-tree-branch-empty");
4234
4243
  }
4235
4244
 
4236
4245
  if(options.dataTreeCollapseElement){
@@ -4734,7 +4743,7 @@ class DataTree extends Module{
4734
4743
  var config = row.modules.dataTree,
4735
4744
  output = [];
4736
4745
 
4737
- if(config.children){
4746
+ if(config && config.children){
4738
4747
 
4739
4748
  if(!Array.isArray(config.children)){
4740
4749
  config.children = this.generateChildren(row);
@@ -11434,7 +11443,7 @@ class Group{
11434
11443
  this.arrowElement = document.createElement("div");
11435
11444
  this.arrowElement.classList.add("tabulator-group-toggle");
11436
11445
  this.arrowElement.appendChild(arrow);
11437
-
11446
+
11438
11447
  //setup movable rows
11439
11448
  if(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")){
11440
11449
  this.groupManager.table.modules.moveRow.initializeGroupHeader(this);
@@ -11457,9 +11466,15 @@ class Group{
11457
11466
  toggleElement = this.groupManager.table.options.groupToggleElement == "arrow" ? this.arrowElement : this.element;
11458
11467
 
11459
11468
  toggleElement.addEventListener("click", (e) => {
11460
- e.stopPropagation();
11461
- e.stopImmediatePropagation();
11462
- this.toggleVisibility();
11469
+ if(this.groupManager.table.options.groupToggleElement === "arrow"){
11470
+ e.stopPropagation();
11471
+ e.stopImmediatePropagation();
11472
+ }
11473
+
11474
+ //allow click event to propagate before toggling visibility
11475
+ setTimeout(() => {
11476
+ this.toggleVisibility();
11477
+ });
11463
11478
  });
11464
11479
  }
11465
11480
  }
@@ -11580,7 +11595,7 @@ class Group{
11580
11595
  if(el.parentNode){
11581
11596
  el.parentNode.removeChild(el);
11582
11597
  }
11583
-
11598
+
11584
11599
  if(!this.groupManager.blockRedraw){
11585
11600
  this.generateGroupHeaderContents();
11586
11601
 
@@ -11705,6 +11720,7 @@ class Group{
11705
11720
  }
11706
11721
  return count;
11707
11722
  }
11723
+
11708
11724
 
11709
11725
  toggleVisibility(){
11710
11726
  if(this.visible){
@@ -11829,12 +11845,18 @@ class Group{
11829
11845
  return output;
11830
11846
  }
11831
11847
 
11832
- getRows(component){
11848
+ getRows(component, includeChildren){
11833
11849
  var output = [];
11834
11850
 
11835
- this.rows.forEach(function(row){
11836
- output.push(component ? row.getComponent() : row);
11837
- });
11851
+ if(includeChildren && this.groupList.length){
11852
+ this.groupList.forEach((group) => {
11853
+ output = output.concat(group.getRows(component, includeChildren));
11854
+ });
11855
+ }else {
11856
+ this.rows.forEach(function(row){
11857
+ output.push(component ? row.getComponent() : row);
11858
+ });
11859
+ }
11838
11860
 
11839
11861
  return output;
11840
11862
  }
@@ -11842,7 +11864,9 @@ class Group{
11842
11864
  generateGroupHeaderContents(){
11843
11865
  var data = [];
11844
11866
 
11845
- this.rows.forEach(function(row){
11867
+ var rows = this.getRows(false, true);
11868
+
11869
+ rows.forEach(function(row){
11846
11870
  data.push(row.getData());
11847
11871
  });
11848
11872
 
@@ -11947,6 +11971,8 @@ class Group{
11947
11971
  clearCellHeight(){}
11948
11972
 
11949
11973
  deinitializeHeight(){}
11974
+
11975
+ rendered(){}
11950
11976
 
11951
11977
  //////////////// Object Generation /////////////////
11952
11978
  getComponent(){
@@ -12613,8 +12639,12 @@ var defaultUndoers = {
12613
12639
  },
12614
12640
 
12615
12641
  rowMove: function(action){
12616
- this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posFrom], !action.data.after);
12617
- this.table.rowManager.redraw();
12642
+ var after = (action.data.posFrom - action.data.posTo) > 0;
12643
+
12644
+ this.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posFrom), after);
12645
+
12646
+ this.table.rowManager.regenerateRowPositions();
12647
+ this.table.rowManager.reRenderInPosition();
12618
12648
  },
12619
12649
  };
12620
12650
 
@@ -12639,8 +12669,10 @@ var defaultRedoers = {
12639
12669
  },
12640
12670
 
12641
12671
  rowMove: function(action){
12642
- this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.posTo], action.data.after);
12643
- this.table.rowManager.redraw();
12672
+ this.table.rowManager.moveRowActual(action.component, this.table.rowManager.getRowFromPosition(action.data.posTo), action.data.after);
12673
+
12674
+ this.table.rowManager.regenerateRowPositions();
12675
+ this.table.rowManager.reRenderInPosition();
12644
12676
  },
12645
12677
  };
12646
12678
 
@@ -12941,7 +12973,7 @@ class HtmlTableImport extends Module{
12941
12973
  }
12942
12974
 
12943
12975
  if(!col.field) {
12944
- col.field = header.textContent.trim().toLowerCase().replace(" ", "_");
12976
+ col.field = header.textContent.trim().toLowerCase().replaceAll(" ", "_");
12945
12977
  }
12946
12978
 
12947
12979
  width = header.getAttribute("width");
@@ -13599,7 +13631,7 @@ var defaultBindings = {
13599
13631
  scrollToEnd:35,
13600
13632
  undo:["ctrl + 90", "meta + 90"],
13601
13633
  redo:["ctrl + 89", "meta + 89"],
13602
- copyToClipboard:["ctrl + 67", "meta + 89"],
13634
+ copyToClipboard:["ctrl + 67", "meta + 67"],
13603
13635
  };
13604
13636
 
13605
13637
  var defaultActions = {
@@ -17611,6 +17643,7 @@ class ResizeColumns extends Module{
17611
17643
  if(cell.modules.resize && cell.modules.resize.handleEl){
17612
17644
  if(frozenOffset){
17613
17645
  cell.modules.resize.handleEl.style[column.modules.frozen.position] = frozenOffset;
17646
+ cell.modules.resize.handleEl.style["z-index"] = 11;
17614
17647
  }
17615
17648
 
17616
17649
  cell.element.after(cell.modules.resize.handleEl);
@@ -20550,19 +20583,21 @@ class BasicHorizontal extends Renderer{
20550
20583
  constructor(table){
20551
20584
  super(table);
20552
20585
  }
20553
-
20554
- renderRowCells(row) {
20586
+
20587
+ renderRowCells(row, inFragment) {
20555
20588
  const rowFrag = document.createDocumentFragment();
20556
20589
  row.cells.forEach((cell) => {
20557
20590
  rowFrag.appendChild(cell.getElement());
20558
20591
  });
20559
20592
  row.element.appendChild(rowFrag);
20560
-
20561
- row.cells.forEach((cell) => {
20562
- cell.cellRendered();
20563
- });
20593
+
20594
+ if(!inFragment){
20595
+ row.cells.forEach((cell) => {
20596
+ cell.cellRendered();
20597
+ });
20598
+ }
20564
20599
  }
20565
-
20600
+
20566
20601
  reinitializeColumnWidths(columns){
20567
20602
  columns.forEach(function(column){
20568
20603
  column.reinitializeWidth();
@@ -21891,82 +21926,100 @@ class ColumnManager extends CoreFeature {
21891
21926
  class BasicVertical extends Renderer{
21892
21927
  constructor(table){
21893
21928
  super(table);
21894
-
21929
+
21895
21930
  this.verticalFillMode = "fill";
21896
-
21931
+
21897
21932
  this.scrollTop = 0;
21898
21933
  this.scrollLeft = 0;
21899
-
21934
+
21900
21935
  this.scrollTop = 0;
21901
21936
  this.scrollLeft = 0;
21902
21937
  }
21903
-
21938
+
21904
21939
  clearRows(){
21905
21940
  var element = this.tableElement;
21906
-
21941
+
21907
21942
  // element.children.detach();
21908
21943
  while(element.firstChild) element.removeChild(element.firstChild);
21909
-
21944
+
21910
21945
  element.scrollTop = 0;
21911
21946
  element.scrollLeft = 0;
21912
-
21947
+
21913
21948
  element.style.minWidth = "";
21914
21949
  element.style.minHeight = "";
21915
21950
  element.style.display = "";
21916
21951
  element.style.visibility = "";
21917
21952
  }
21918
-
21953
+
21919
21954
  renderRows() {
21920
21955
  var element = this.tableElement,
21921
21956
  onlyGroupHeaders = true,
21922
- tableFrag = document.createDocumentFragment();
21923
-
21924
- this.rows().forEach((row, index) => {
21957
+ tableFrag = document.createDocumentFragment(),
21958
+ rows = this.rows();
21959
+
21960
+ rows.forEach((row, index) => {
21925
21961
  this.styleRow(row, index);
21926
- row.initialize(true);
21927
-
21962
+ row.initialize(false, true);
21963
+
21928
21964
  if (row.type !== "group") {
21929
21965
  onlyGroupHeaders = false;
21930
21966
  }
21931
-
21967
+
21932
21968
  tableFrag.appendChild(row.getElement());
21933
21969
  });
21970
+
21934
21971
  element.appendChild(tableFrag);
21935
-
21972
+
21973
+ rows.forEach((row) => {
21974
+ row.rendered();
21975
+
21976
+ if(!row.heightInitialized) {
21977
+ row.calcHeight(true);
21978
+ }
21979
+ });
21980
+
21981
+ rows.forEach((row) => {
21982
+ if(!row.heightInitialized) {
21983
+ row.setCellHeight();
21984
+ }
21985
+ });
21986
+
21987
+
21988
+
21936
21989
  if(onlyGroupHeaders){
21937
21990
  element.style.minWidth = this.table.columnManager.getWidth() + "px";
21938
21991
  }else {
21939
21992
  element.style.minWidth = "";
21940
21993
  }
21941
21994
  }
21942
-
21943
-
21995
+
21996
+
21944
21997
  rerenderRows(callback){
21945
21998
  this.clearRows();
21946
-
21999
+
21947
22000
  if(callback){
21948
22001
  callback();
21949
22002
  }
21950
-
22003
+
21951
22004
  this.renderRows();
21952
22005
  }
21953
-
22006
+
21954
22007
  scrollToRowNearestTop(row){
21955
22008
  var rowTop = Helpers.elOffset(row.getElement()).top;
21956
-
22009
+
21957
22010
  return !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));
21958
22011
  }
21959
-
22012
+
21960
22013
  scrollToRow(row){
21961
22014
  var rowEl = row.getElement();
21962
-
22015
+
21963
22016
  this.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;
21964
22017
  }
21965
-
22018
+
21966
22019
  visibleRows(includingBuffer){
21967
22020
  return this.rows();
21968
22021
  }
21969
-
22022
+
21970
22023
  }
21971
22024
 
21972
22025
  class VirtualDomVertical extends Renderer{
@@ -22255,13 +22308,14 @@ class VirtualDomVertical extends Renderer{
22255
22308
  rowFragment = document.createDocumentFragment();
22256
22309
 
22257
22310
  i = 0;
22311
+
22258
22312
  while ((i < rowsToRender) && this.vDomBottom < rowsCount -1) {
22259
22313
  index = this.vDomBottom + 1,
22260
22314
  row = rows[index];
22261
22315
 
22262
22316
  this.styleRow(row, index);
22263
22317
 
22264
- row.initialize();
22318
+ row.initialize(false, true);
22265
22319
  if(!row.heightInitialized && !this.table.options.rowHeight){
22266
22320
  row.clearCellHeight();
22267
22321
  }
@@ -22275,21 +22329,23 @@ class VirtualDomVertical extends Renderer{
22275
22329
  if(!renderedRows.length){
22276
22330
  break;
22277
22331
  }
22332
+
22278
22333
  element.appendChild(rowFragment);
22279
22334
 
22280
22335
  // NOTE: The next 3 loops are separate on purpose
22281
22336
  // This is to batch up the dom writes and reads which drastically improves performance
22337
+
22282
22338
  renderedRows.forEach((row) => {
22339
+ row.rendered();
22340
+
22283
22341
  if(!row.heightInitialized) {
22284
22342
  row.calcHeight(true);
22285
-
22286
22343
  }
22287
22344
  });
22288
22345
 
22289
22346
  renderedRows.forEach((row) => {
22290
22347
  if(!row.heightInitialized) {
22291
22348
  row.setCellHeight();
22292
-
22293
22349
  }
22294
22350
  });
22295
22351
 
@@ -23582,6 +23638,8 @@ class RowManager extends CoreFeature{
23582
23638
 
23583
23639
  this.getElement().appendChild(this.placeholder);
23584
23640
  this._positionPlaceholder();
23641
+
23642
+ this.adjustTableSize();
23585
23643
  }
23586
23644
  }
23587
23645
 
@@ -24179,58 +24237,66 @@ class ComponentFunctionBinder{
24179
24237
  class DataLoader extends CoreFeature{
24180
24238
  constructor(table){
24181
24239
  super(table);
24182
-
24240
+
24183
24241
  this.requestOrder = 0; //prevent requests coming out of sequence if overridden by another load request
24184
24242
  this.loading = false;
24185
24243
  }
24186
-
24244
+
24187
24245
  initialize(){}
24188
-
24246
+
24189
24247
  load(data, params, config, replace, silent, columnsChanged){
24190
24248
  var requestNo = ++this.requestOrder;
24191
24249
 
24250
+ if(this.table.destroyed){
24251
+ return Promise.resolve();
24252
+ }
24253
+
24192
24254
  this.dispatchExternal("dataLoading", data);
24193
-
24255
+
24194
24256
  //parse json data to array
24195
24257
  if (data && (data.indexOf("{") == 0 || data.indexOf("[") == 0)){
24196
24258
  data = JSON.parse(data);
24197
24259
  }
24198
-
24260
+
24199
24261
  if(this.confirm("data-loading", [data, params, config, silent])){
24200
24262
  this.loading = true;
24201
-
24263
+
24202
24264
  if(!silent){
24203
24265
  this.alertLoader();
24204
24266
  }
24205
-
24267
+
24206
24268
  //get params for request
24207
24269
  params = this.chain("data-params", [data, config, silent], params || {}, params || {});
24208
-
24270
+
24209
24271
  params = this.mapParams(params, this.table.options.dataSendParams);
24210
-
24272
+
24211
24273
  var result = this.chain("data-load", [data, params, config, silent], false, Promise.resolve([]));
24212
24274
 
24213
24275
  return result.then((response) => {
24214
- if(!Array.isArray(response) && typeof response == "object"){
24215
- response = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));
24216
- }
24217
-
24218
- var rowData = this.chain("data-loaded", response, null, response);
24219
-
24220
- if(requestNo == this.requestOrder){
24221
- this.clearAlert();
24222
-
24223
- if(rowData !== false){
24224
- this.dispatchExternal("dataLoaded", rowData);
24225
- this.table.rowManager.setData(rowData, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged);
24276
+ if(!this.table.destroyed){
24277
+ if(!Array.isArray(response) && typeof response == "object"){
24278
+ response = this.mapParams(response, this.objectInvert(this.table.options.dataReceiveParams));
24279
+ }
24280
+
24281
+ var rowData = this.chain("data-loaded", response, null, response);
24282
+
24283
+ if(requestNo == this.requestOrder){
24284
+ this.clearAlert();
24285
+
24286
+ if(rowData !== false){
24287
+ this.dispatchExternal("dataLoaded", rowData);
24288
+ this.table.rowManager.setData(rowData, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged);
24289
+ }
24290
+ }else {
24291
+ 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");
24226
24292
  }
24227
24293
  }else {
24228
- 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");
24294
+ console.warn("Data Load Response Blocked - Table has been destroyed");
24229
24295
  }
24230
24296
  }).catch((error) => {
24231
24297
  console.error("Data Load Error: ", error);
24232
24298
  this.dispatchExternal("dataLoadError", error);
24233
-
24299
+
24234
24300
  if(!silent){
24235
24301
  this.alertError();
24236
24302
  }
@@ -24244,52 +24310,52 @@ class DataLoader extends CoreFeature{
24244
24310
  });
24245
24311
  }else {
24246
24312
  this.dispatchExternal("dataLoaded", data);
24247
-
24313
+
24248
24314
  if(!data){
24249
24315
  data = [];
24250
24316
  }
24251
-
24317
+
24252
24318
  this.table.rowManager.setData(data, replace, typeof columnsChanged === "undefined" ? !replace : columnsChanged);
24253
24319
  return Promise.resolve();
24254
24320
  }
24255
24321
  }
24256
-
24322
+
24257
24323
  mapParams(params, map){
24258
24324
  var output = {};
24259
-
24325
+
24260
24326
  for(let key in params){
24261
24327
  output[map.hasOwnProperty(key) ? map[key] : key] = params[key];
24262
24328
  }
24263
-
24329
+
24264
24330
  return output;
24265
24331
  }
24266
-
24332
+
24267
24333
  objectInvert(obj){
24268
24334
  var output = {};
24269
-
24335
+
24270
24336
  for(let key in obj){
24271
24337
  output[obj[key]] = key;
24272
24338
  }
24273
-
24339
+
24274
24340
  return output;
24275
24341
  }
24276
-
24342
+
24277
24343
  blockActiveLoad(){
24278
24344
  this.requestOrder++;
24279
24345
  }
24280
-
24346
+
24281
24347
  alertLoader(){
24282
24348
  var shouldLoad = typeof this.table.options.dataLoader === "function" ? this.table.options.dataLoader() : this.table.options.dataLoader;
24283
-
24349
+
24284
24350
  if(shouldLoad){
24285
24351
  this.table.alertManager.alert(this.table.options.dataLoaderLoading || this.langText("data|loading"));
24286
24352
  }
24287
24353
  }
24288
-
24354
+
24289
24355
  alertError(){
24290
24356
  this.table.alertManager.alert(this.table.options.dataLoaderError || this.langText("data|error"), "error");
24291
24357
  }
24292
-
24358
+
24293
24359
  clearAlert(){
24294
24360
  this.table.alertManager.clear();
24295
24361
  }
@@ -24938,6 +25004,16 @@ class Layout extends Module{
24938
25004
  }
24939
25005
 
24940
25006
  this.table.element.setAttribute("tabulator-layout", this.mode);
25007
+ this.subscribe("column-init", this.initializeColumn.bind(this));
25008
+ }
25009
+
25010
+ initializeColumn(column){
25011
+ if(column.definition.widthGrow){
25012
+ column.definition.widthGrow = Number(column.definition.widthGrow);
25013
+ }
25014
+ if(column.definition.widthShrink){
25015
+ column.definition.widthShrink = Number(column.definition.widthShrink);
25016
+ }
24941
25017
  }
24942
25018
 
24943
25019
  getMode(){