tabulator-tables 5.0.8 → 5.1.1

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 (112) hide show
  1. package/.editorconfig +6 -0
  2. package/LICENSE +1 -1
  3. package/bower.json +1 -1
  4. package/build/rollup.js +2 -1
  5. package/dist/css/tabulator.css +26 -6
  6. package/dist/css/tabulator.css.map +1 -1
  7. package/dist/css/tabulator.min.css +1 -1
  8. package/dist/css/tabulator.min.css.map +1 -1
  9. package/dist/css/tabulator_bootstrap3.css +26 -6
  10. package/dist/css/tabulator_bootstrap3.css.map +1 -1
  11. package/dist/css/tabulator_bootstrap3.min.css +1 -1
  12. package/dist/css/tabulator_bootstrap3.min.css.map +1 -1
  13. package/dist/css/tabulator_bootstrap4.css +26 -6
  14. package/dist/css/tabulator_bootstrap4.css.map +1 -1
  15. package/dist/css/tabulator_bootstrap4.min.css +1 -1
  16. package/dist/css/tabulator_bootstrap4.min.css.map +1 -1
  17. package/dist/css/tabulator_bulma.css +26 -6
  18. package/dist/css/tabulator_bulma.css.map +1 -1
  19. package/dist/css/tabulator_bulma.min.css +1 -1
  20. package/dist/css/tabulator_bulma.min.css.map +1 -1
  21. package/dist/css/tabulator_materialize.css +33 -10
  22. package/dist/css/tabulator_materialize.css.map +1 -1
  23. package/dist/css/tabulator_materialize.min.css +1 -1
  24. package/dist/css/tabulator_materialize.min.css.map +1 -1
  25. package/dist/css/tabulator_midnight.css +30 -6
  26. package/dist/css/tabulator_midnight.css.map +1 -1
  27. package/dist/css/tabulator_midnight.min.css +1 -1
  28. package/dist/css/tabulator_midnight.min.css.map +1 -1
  29. package/dist/css/tabulator_modern.css +26 -6
  30. package/dist/css/tabulator_modern.css.map +1 -1
  31. package/dist/css/tabulator_modern.min.css +1 -1
  32. package/dist/css/tabulator_modern.min.css.map +1 -1
  33. package/dist/css/tabulator_semanticui.css +26 -6
  34. package/dist/css/tabulator_semanticui.css.map +1 -1
  35. package/dist/css/tabulator_semanticui.min.css +1 -1
  36. package/dist/css/tabulator_semanticui.min.css.map +1 -1
  37. package/dist/css/tabulator_simple.css +26 -6
  38. package/dist/css/tabulator_simple.css.map +1 -1
  39. package/dist/css/tabulator_simple.min.css +1 -1
  40. package/dist/css/tabulator_simple.min.css.map +1 -1
  41. package/dist/css/tabulator_site.css +30 -6
  42. package/dist/css/tabulator_site.css.map +1 -1
  43. package/dist/css/tabulator_site.min.css +1 -1
  44. package/dist/css/tabulator_site.min.css.map +1 -1
  45. package/dist/js/tabulator.js +1182 -548
  46. package/dist/js/tabulator.js.map +1 -1
  47. package/dist/js/tabulator.min.js +2 -2
  48. package/dist/js/tabulator.min.js.map +1 -1
  49. package/dist/js/tabulator_esm.js +1797 -1184
  50. package/dist/js/tabulator_esm.js.map +1 -1
  51. package/dist/js/tabulator_esm.min.js +2 -2
  52. package/dist/js/tabulator_esm.min.js.map +1 -1
  53. package/package.json +1 -1
  54. package/src/js/core/ColumnManager.js +1 -1
  55. package/src/js/core/CoreFeature.js +1 -5
  56. package/src/js/core/FooterManager.js +14 -2
  57. package/src/js/core/RowManager.js +325 -286
  58. package/src/js/core/Tabulator.js +0 -43
  59. package/src/js/core/cell/Cell.js +5 -1
  60. package/src/js/core/column/Column.js +21 -6
  61. package/src/js/core/column/ColumnComponent.js +6 -0
  62. package/src/js/core/column/defaults/options.js +1 -0
  63. package/src/js/core/defaults/options.js +3 -3
  64. package/src/js/core/modules/optional.js +1 -0
  65. package/src/js/core/rendering/Renderer.js +3 -2
  66. package/src/js/core/rendering/renderers/BasicVertical.js +2 -1
  67. package/src/js/core/rendering/renderers/VirtualDomHorizontal.js +165 -151
  68. package/src/js/core/rendering/renderers/VirtualDomVertical.js +1 -1
  69. package/src/js/core/row/Row.js +2 -2
  70. package/src/js/core/tools/DataLoader.js +6 -6
  71. package/src/js/core/tools/InteractionMonitor.js +157 -52
  72. package/src/js/modules/Ajax/Ajax.js +62 -82
  73. package/src/js/modules/ColumnCalcs/ColumnCalcs.js +16 -3
  74. package/src/js/modules/DataTree/DataTree.js +22 -9
  75. package/src/js/modules/Download/defaults/downloaders/json.js +1 -1
  76. package/src/js/modules/Download/defaults/downloaders/jsonLines.js +32 -0
  77. package/src/js/modules/Download/defaults/downloaders/pdf.js +0 -2
  78. package/src/js/modules/Download/defaults/downloaders/xlsx.js +3 -2
  79. package/src/js/modules/Download/defaults/downloaders.js +2 -0
  80. package/src/js/modules/Edit/Edit.js +27 -39
  81. package/src/js/modules/Export/Export.js +1 -1
  82. package/src/js/modules/Filter/Filter.js +1 -1
  83. package/src/js/modules/Format/defaults/formatters/datetime.js +1 -1
  84. package/src/js/modules/Format/defaults/formatters/datetimediff.js +2 -1
  85. package/src/js/modules/FrozenColumns/FrozenColumns.js +1 -1
  86. package/src/js/modules/FrozenRows/FrozenRows.js +9 -0
  87. package/src/js/modules/GroupRows/Group.js +8 -63
  88. package/src/js/modules/GroupRows/GroupComponent.js +1 -1
  89. package/src/js/modules/GroupRows/GroupRows.js +2 -2
  90. package/src/js/modules/Import/Import.js +195 -0
  91. package/src/js/modules/Import/defaults/importers/csv.js +63 -0
  92. package/src/js/modules/Import/defaults/importers/json.js +8 -0
  93. package/src/js/modules/Import/defaults/importers.js +7 -0
  94. package/src/js/modules/Interaction/Interaction.js +5 -0
  95. package/src/js/modules/Keybindings/Keybindings.js +9 -14
  96. package/src/js/modules/Keybindings/defaults/bindings.js +3 -3
  97. package/src/js/modules/Localize/defaults/langs.js +6 -0
  98. package/src/js/modules/Menu/Menu.js +200 -155
  99. package/src/js/modules/MoveRows/MoveRows.js +4 -0
  100. package/src/js/modules/Page/Page.js +282 -185
  101. package/src/js/modules/Page/defaults/pageCounters/pages.js +33 -0
  102. package/src/js/modules/Page/defaults/pageCounters/rows.js +32 -0
  103. package/src/js/modules/Page/defaults/pageCounters.js +8 -0
  104. package/src/js/modules/ResizeRows/ResizeRows.js +1 -1
  105. package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +7 -9
  106. package/src/js/modules/SelectRow/SelectRow.js +4 -9
  107. package/src/js/modules/Sort/defaults/sorters/datetime.js +2 -2
  108. package/src/js/modules/Validate/Validate.js +7 -5
  109. package/src/scss/tabulator.scss +31 -8
  110. package/src/scss/themes/materialize/tabulator_materialize.scss +5 -4
  111. package/src/scss/themes/tabulator_midnight.scss +4 -0
  112. package/src/scss/themes/tabulator_site.scss +4 -0
@@ -341,49 +341,6 @@ class Tabulator {
341
341
  return this.rowManager.restoreRedraw();
342
342
  }
343
343
 
344
- //local data from local file
345
- setDataFromLocalFile(extensions){
346
- return new Promise((resolve, reject) => {
347
- var input = document.createElement("input");
348
- input.type = "file";
349
- input.accept = extensions || ".json,application/json";
350
-
351
- input.addEventListener("change", (e) => {
352
- var file = input.files[0],
353
- reader = new FileReader(),
354
- data;
355
-
356
- reader.readAsText(file);
357
-
358
- reader.onload = (e) => {
359
-
360
- try {
361
- data = JSON.parse(reader.result);
362
- } catch(e) {
363
- console.warn("File Load Error - File contents is invalid JSON", e);
364
- reject(e);
365
- return;
366
- }
367
-
368
- this.setData(data)
369
- .then((data) => {
370
- resolve(data);
371
- })
372
- .catch((err) => {
373
- resolve(err);
374
- });
375
- };
376
-
377
- reader.onerror = (e) => {
378
- console.warn("File Load Error - Unable to read file");
379
- reject();
380
- };
381
- });
382
-
383
- input.click();
384
- });
385
- }
386
-
387
344
  //load data
388
345
  setData(data, params, config){
389
346
  if(this.initialized){
@@ -191,6 +191,10 @@ export default class Cell extends CoreFeature{
191
191
 
192
192
  this.cellRendered();
193
193
 
194
+ if(this.column.definition.cellEdited){
195
+ this.column.definition.cellEdited.call(this.table, this.getComponent());
196
+ }
197
+
194
198
  this.dispatchExternal("cellEdited", this.getComponent());
195
199
 
196
200
  if(this.subscribedExternal("dataChanged")){
@@ -202,7 +206,7 @@ export default class Cell extends CoreFeature{
202
206
  setValueProcessData(value, mutate){
203
207
  var changed = false;
204
208
 
205
- if(this.value != value){
209
+ if(this.value !== value){
206
210
 
207
211
  changed = true;
208
212
 
@@ -30,6 +30,7 @@ class Column extends CoreFeature{
30
30
  this.getFieldValue = "";
31
31
  this.setFieldValue = "";
32
32
 
33
+ this.titleDownload = null;
33
34
  this.titleFormatterRendered = false;
34
35
 
35
36
  this.mapDefinitions();
@@ -42,6 +43,7 @@ class Column extends CoreFeature{
42
43
  this.widthStyled = ""; //column width prestyled to improve render efficiency
43
44
  this.maxWidth = null; //column maximum width
44
45
  this.maxWidthStyled = ""; //column maximum prestyled to improve render efficiency
46
+ this.maxInitialWidth = null;
45
47
  this.minWidth = null; //column minimum width
46
48
  this.minWidthStyled = ""; //column minimum prestyled to improve render efficiency
47
49
  this.widthFixed = false; //user has specified a width for this column
@@ -147,7 +149,7 @@ class Column extends CoreFeature{
147
149
  var def = this.definition;
148
150
 
149
151
  //set header tooltips
150
- var tooltip = typeof def.headerTooltip === "undefined" ? def.tooltip : def.headerTooltip;
152
+ var tooltip = def.headerTooltip;
151
153
 
152
154
  if(tooltip){
153
155
  if(tooltip === true){
@@ -320,6 +322,10 @@ class Column extends CoreFeature{
320
322
  //set min width if present
321
323
  this.setMinWidth(parseInt(def.minWidth));
322
324
 
325
+ if (def.maxInitialWidth) {
326
+ this.maxInitialWidth = parseInt(def.maxInitialWidth);
327
+ }
328
+
323
329
  if(def.maxWidth){
324
330
  this.setMaxWidth(parseInt(def.maxWidth));
325
331
  }
@@ -571,6 +577,10 @@ class Column extends CoreFeature{
571
577
  return this.field;
572
578
  }
573
579
 
580
+ getTitleDownload() {
581
+ return this.titleDownload;
582
+ }
583
+
574
584
  //return the first column in a group
575
585
  getFirstColumn(){
576
586
  if(!this.isGroup){
@@ -703,7 +713,7 @@ class Column extends CoreFeature{
703
713
  cell.hide();
704
714
  });
705
715
 
706
- this.dispatch("column-hide", this);
716
+ this.dispatch("column-hide", this, responsiveToggle);
707
717
 
708
718
  if(!silent){
709
719
  this.dispatchExternal("columnVisibilityChanged", this.getComponent(), false);
@@ -823,7 +833,7 @@ class Column extends CoreFeature{
823
833
  }
824
834
 
825
835
  getHeight(){
826
- return this.element.offsetHeight;
836
+ return Math.ceil(this.element.getBoundingClientRect().height);
827
837
  }
828
838
 
829
839
  setMinWidth(minWidth){
@@ -928,18 +938,19 @@ class Column extends CoreFeature{
928
938
 
929
939
  //set width if present
930
940
  if(typeof this.definition.width !== "undefined" && !force){
941
+ // maxInitialWidth ignored here as width specified
931
942
  this.setWidth(this.definition.width);
932
943
  }
933
944
 
934
945
  this.dispatch("column-width-fit-before", this);
935
946
 
936
- this.fitToData();
947
+ this.fitToData(force);
937
948
 
938
949
  this.dispatch("column-width-fit-after", this);
939
950
  }
940
951
 
941
952
  //set column width to maximum cell width for non group columns
942
- fitToData(){
953
+ fitToData(force){
943
954
  if(this.isGroup){
944
955
  return;
945
956
  }
@@ -964,7 +975,11 @@ class Column extends CoreFeature{
964
975
  });
965
976
 
966
977
  if(maxWidth){
967
- this.setWidthActual(maxWidth + 1);
978
+ var setTo = maxWidth + 1;
979
+ if (this.maxInitialWidth && !force) {
980
+ setTo = Math.min(setTo, this.maxInitialWidth);
981
+ }
982
+ this.setWidthActual(setTo);
968
983
  }
969
984
  }
970
985
  }
@@ -1,3 +1,5 @@
1
+ import Column from './Column.js';
2
+
1
3
  //public column object
2
4
  export default class ColumnComponent {
3
5
  constructor (column){
@@ -27,6 +29,10 @@ export default class ColumnComponent {
27
29
  return this._column.getField();
28
30
  }
29
31
 
32
+ getTitleDownload() {
33
+ return this._column.getTitleDownload();
34
+ }
35
+
30
36
  getCells(){
31
37
  var cells = [];
32
38
 
@@ -8,6 +8,7 @@ export default {
8
8
  "width": undefined,
9
9
  "minWidth": 40,
10
10
  "maxWidth": undefined,
11
+ "maxInitialWidth": undefined,
11
12
  "tooltip": undefined,
12
13
  "cssClass": undefined,
13
14
  "variableHeight": undefined,
@@ -8,7 +8,6 @@ export default {
8
8
  minHeight:false, //minimum height of tabulator
9
9
  maxHeight:false, //maximum height of tabulator
10
10
 
11
- columnMaxWidth:false, //minimum global width for a column
12
11
  columnHeaderVertAlign:"top", //vertical alignment of column headers
13
12
 
14
13
  columns:[],//store for colum header info
@@ -19,7 +18,7 @@ export default {
19
18
  autoColumns:false, //build columns from data row structure
20
19
  autoColumnsDefinitions:false,
21
20
 
22
- nestedFieldSeparator:".", //seperatpr for nested data
21
+ nestedFieldSeparator:".", //separator for nested data
23
22
 
24
23
  tooltipGenerationMode:"load", //when to generate tooltips
25
24
 
@@ -53,8 +52,9 @@ export default {
53
52
  dataLoader:true,
54
53
  dataLoaderLoading:false,
55
54
  dataLoaderError:false,
55
+ dataLoaderErrorTimeout:3000,
56
56
 
57
57
  dataSendParams:{},
58
58
 
59
59
  dataReceiveParams:{},
60
- }
60
+ }
@@ -13,6 +13,7 @@ export {default as FrozenRowsModule} from '../../modules/FrozenRows/FrozenRows.j
13
13
  export {default as GroupRowsModule} from '../../modules/GroupRows/GroupRows.js';
14
14
  export {default as HistoryModule} from '../../modules/History/History.js';
15
15
  export {default as HtmlTableImportModule} from '../../modules/HtmlTableImport/HtmlTableImport.js';
16
+ export {default as ImportModule} from '../../modules/Import/Import.js';
16
17
  export {default as InteractionModule} from '../../modules/Interaction/Interaction.js';
17
18
  export {default as KeybindingsModule} from '../../modules/Keybindings/Keybindings.js';
18
19
  export {default as MenuModule} from '../../modules/Menu/Menu.js';
@@ -79,7 +79,7 @@ export default class Renderer extends CoreFeature{
79
79
  }
80
80
 
81
81
  scrollToRowNearestTop(row){
82
- //determin weather the row is nearest the top or bottom of the table, retur true for top or false for bottom
82
+ //determine weather the row is nearest the top or bottom of the table, retur true for top or false for bottom
83
83
  }
84
84
 
85
85
  visibleRows(includingBuffer){
@@ -146,8 +146,9 @@ export default class Renderer extends CoreFeature{
146
146
  if(!ifVisible){
147
147
  if(Helpers.elVisible(rowEl)){
148
148
  offset = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top;
149
-
149
+
150
150
  if(offset > 0 && offset < this.elementVertical.clientHeight - rowEl.offsetHeight){
151
+ resolve();
151
152
  return false;
152
153
  }
153
154
  }
@@ -52,7 +52,8 @@ export default class BaiscVertical extends Renderer{
52
52
 
53
53
 
54
54
  rerenderRows(callback){
55
- this.render();
55
+ this.clearRows();
56
+ this.renderRows();
56
57
 
57
58
  if(callback){
58
59
  callback();