tabulator-tables 5.2.0 → 5.2.3

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 (66) hide show
  1. package/bower.json +1 -1
  2. package/dist/css/tabulator.css +5 -0
  3. package/dist/css/tabulator.css.map +1 -1
  4. package/dist/css/tabulator.min.css +1 -1
  5. package/dist/css/tabulator.min.css.map +1 -1
  6. package/dist/css/tabulator_bootstrap3.css +5 -0
  7. package/dist/css/tabulator_bootstrap3.css.map +1 -1
  8. package/dist/css/tabulator_bootstrap3.min.css +1 -1
  9. package/dist/css/tabulator_bootstrap3.min.css.map +1 -1
  10. package/dist/css/tabulator_bootstrap4.css +5 -0
  11. package/dist/css/tabulator_bootstrap4.css.map +1 -1
  12. package/dist/css/tabulator_bootstrap4.min.css +1 -1
  13. package/dist/css/tabulator_bootstrap4.min.css.map +1 -1
  14. package/dist/css/tabulator_bootstrap5.css +21 -0
  15. package/dist/css/tabulator_bootstrap5.css.map +1 -1
  16. package/dist/css/tabulator_bootstrap5.min.css +1 -1
  17. package/dist/css/tabulator_bootstrap5.min.css.map +1 -1
  18. package/dist/css/tabulator_bulma.css +5 -0
  19. package/dist/css/tabulator_bulma.css.map +1 -1
  20. package/dist/css/tabulator_bulma.min.css +1 -1
  21. package/dist/css/tabulator_bulma.min.css.map +1 -1
  22. package/dist/css/tabulator_materialize.css +5 -0
  23. package/dist/css/tabulator_materialize.css.map +1 -1
  24. package/dist/css/tabulator_materialize.min.css +1 -1
  25. package/dist/css/tabulator_materialize.min.css.map +1 -1
  26. package/dist/css/tabulator_midnight.css +5 -0
  27. package/dist/css/tabulator_midnight.css.map +1 -1
  28. package/dist/css/tabulator_midnight.min.css +1 -1
  29. package/dist/css/tabulator_midnight.min.css.map +1 -1
  30. package/dist/css/tabulator_modern.css +5 -0
  31. package/dist/css/tabulator_modern.css.map +1 -1
  32. package/dist/css/tabulator_modern.min.css +1 -1
  33. package/dist/css/tabulator_modern.min.css.map +1 -1
  34. package/dist/css/tabulator_semanticui.css +5 -0
  35. package/dist/css/tabulator_semanticui.css.map +1 -1
  36. package/dist/css/tabulator_semanticui.min.css +1 -1
  37. package/dist/css/tabulator_semanticui.min.css.map +1 -1
  38. package/dist/css/tabulator_simple.css +5 -0
  39. package/dist/css/tabulator_simple.css.map +1 -1
  40. package/dist/css/tabulator_simple.min.css +1 -1
  41. package/dist/css/tabulator_simple.min.css.map +1 -1
  42. package/dist/css/tabulator_site.css +5 -0
  43. package/dist/css/tabulator_site.css.map +1 -1
  44. package/dist/css/tabulator_site.min.css +1 -1
  45. package/dist/css/tabulator_site.min.css.map +1 -1
  46. package/dist/js/tabulator.js +86 -74
  47. package/dist/js/tabulator.js.map +1 -1
  48. package/dist/js/tabulator.min.js +2 -2
  49. package/dist/js/tabulator.min.js.map +1 -1
  50. package/dist/js/tabulator_esm.js +58 -51
  51. package/dist/js/tabulator_esm.js.map +1 -1
  52. package/dist/js/tabulator_esm.min.js +2 -2
  53. package/dist/js/tabulator_esm.min.js.map +1 -1
  54. package/package.json +1 -1
  55. package/src/js/core/RowManager.js +2 -0
  56. package/src/js/core/rendering/Renderer.js +2 -0
  57. package/src/js/modules/DataTree/DataTree.js +13 -0
  58. package/src/js/modules/Edit/List.js +1 -1
  59. package/src/js/modules/FrozenColumns/FrozenColumns.js +29 -39
  60. package/src/js/modules/MoveColumns/MoveColumns.js +1 -1
  61. package/src/js/modules/Persistence/Persistence.js +1 -0
  62. package/src/js/modules/ResizeColumns/ResizeColumns.js +1 -1
  63. package/src/js/modules/Sort/defaults/sorters/datetime.js +5 -5
  64. package/src/js/modules/Validate/Validate.js +3 -3
  65. package/src/scss/tabulator.scss +5 -0
  66. package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +20 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tabulator-tables",
3
- "version": "5.2.0",
3
+ "version": "5.2.3",
4
4
  "description": "Interactive table generation JavaScript library",
5
5
  "style": "dist/css/tabulator.css",
6
6
  "main": "dist/js/tabulator.js",
@@ -848,7 +848,9 @@ export default class RowManager extends CoreFeature{
848
848
  this.redrawBlockRenderInPosition = true;
849
849
  }
850
850
  }else{
851
+ this.dispatchExternal("renderStarted");
851
852
  this.renderer.rerenderRows(callback);
853
+ this.dispatchExternal("renderComplete");
852
854
  }
853
855
  }
854
856
 
@@ -186,6 +186,8 @@ export default class Renderer extends CoreFeature{
186
186
  this.elementVertical.scrollTop = this.elementVertical.scrollTop - this.elementVertical.clientHeight + rowEl.offsetHeight;
187
187
  }
188
188
 
189
+ case "top":
190
+ this.elementVertical.scrollTop = rowEl.offsetTop;
189
191
  break;
190
192
  }
191
193
 
@@ -122,11 +122,24 @@ class DataTree extends Module{
122
122
  this.subscribe("edit-cancelled", this.cellValueChanged.bind(this));
123
123
  this.subscribe("column-moving-rows", this.columnMoving.bind(this));
124
124
  this.subscribe("table-built", this.initializeElementField.bind(this));
125
+ this.subscribe("table-redrawing", this.tableRedrawing.bind(this));
125
126
 
126
127
  this.registerDisplayHandler(this.getRows.bind(this), 30);
127
128
  }
128
129
  }
129
130
 
131
+ tableRedrawing(force){
132
+ var rows;
133
+
134
+ if(force){
135
+ rows = this.table.rowManager.getRows();
136
+
137
+ rows.forEach((row) => {
138
+ this.reinitializeRowChildren(row);
139
+ });
140
+ }
141
+ }
142
+
130
143
  initializeElementField(){
131
144
  var firstCol = this.table.columnManager.getFirstVisibleColumn();
132
145
 
@@ -990,7 +990,7 @@ export default class Edit{
990
990
  this.actions.success(output);
991
991
 
992
992
  if(this.isFilter){
993
- this.initialValues = output;
993
+ this.initialValues = output && !Array.isArray[output] ? [output] : output;
994
994
  }
995
995
  }
996
996
 
@@ -12,7 +12,6 @@ class FrozenColumns extends Module{
12
12
  this.rightPadding = 0;
13
13
  this.initializationMode = "left";
14
14
  this.active = false;
15
- this.scrollEndTimer = false;
16
15
  this.blocked = true;
17
16
 
18
17
  this.registerColumnOption("frozen");
@@ -41,10 +40,10 @@ class FrozenColumns extends Module{
41
40
  this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this));
42
41
  this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this));
43
42
  this.subscribe("columns-loading", this.reset.bind(this));
44
-
43
+
45
44
  this.subscribe("column-add", this.reinitializeColumns.bind(this));
46
45
  this.subscribe("column-delete", this.reinitializeColumns.bind(this));
47
-
46
+
48
47
  this.subscribe("table-redraw", this.layout.bind(this));
49
48
  this.subscribe("layout-refreshing", this.blockLayout.bind(this));
50
49
  this.subscribe("layout-refreshed", this.unblockLayout.bind(this));
@@ -61,10 +60,10 @@ class FrozenColumns extends Module{
61
60
  layoutCell(cell){
62
61
  this.layoutElement(cell.element, cell.column)
63
62
  }
64
-
63
+
65
64
  reinitializeColumns(){
66
65
  this.reset();
67
-
66
+
68
67
  this.table.columnManager.columnsByIndex.forEach((column) => {
69
68
  this.initializeColumn(column);
70
69
  });
@@ -111,22 +110,14 @@ class FrozenColumns extends Module{
111
110
  scrollHorizontal(){
112
111
  var rows;
113
112
 
114
- if(this.active){
115
- clearTimeout(this.scrollEndTimer);
116
-
117
- rows = this.table.rowManager.getVisibleRows();
118
-
113
+ if(this.active){
119
114
  this.calcMargins(true);
120
115
 
121
116
  this.layoutColumnPosition();
122
117
 
123
118
  this.layoutCalcRows();
124
119
 
125
- rows.forEach((row) => {
126
- if(row.type === "row"){
127
- this.layoutRow(row);
128
- }
129
- });
120
+ this.reinitializeRows();
130
121
  }
131
122
  }
132
123
 
@@ -138,7 +129,7 @@ class FrozenColumns extends Module{
138
129
  this.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + "px";
139
130
  this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
140
131
  }
141
-
132
+
142
133
  //calculate right frozen columns
143
134
  this.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;
144
135
  }
@@ -185,10 +176,10 @@ class FrozenColumns extends Module{
185
176
 
186
177
  this.table.columnManager.headersElement.style.marginLeft = this.leftMargin;
187
178
  this.table.columnManager.element.style.paddingRight = this.rightMargin;
188
-
179
+
189
180
  this.leftColumns.forEach((column, i) => {
190
181
  column.modules.frozen.margin = (leftMargin + this.table.columnManager.scrollLeft) + "px";
191
-
182
+
192
183
  if(column.visible){
193
184
  leftMargin += column.getWidth();
194
185
  }
@@ -221,11 +212,11 @@ class FrozenColumns extends Module{
221
212
  });
222
213
 
223
214
  this.rightColumns.forEach((column, i) => {
224
-
215
+
225
216
  if(column.visible){
226
217
  rightMargin += column.getWidth();
227
218
  }
228
-
219
+
229
220
  column.modules.frozen.margin = (this.rightPadding - rightMargin) + "px";
230
221
 
231
222
  if(i == this.rightColumns.length - 1){
@@ -254,36 +245,35 @@ class FrozenColumns extends Module{
254
245
  }
255
246
 
256
247
  //layout columns appropriately
257
- layout(){
258
- var visibleRows = [],
259
- otherRows = [];
260
-
248
+ layout(){
261
249
  if(this.active && !this.blocked){
262
250
  //calculate row padding
263
251
  this.calcMargins();
264
-
252
+
265
253
  //calculate left columns
266
254
  this.layoutColumnPosition();
267
255
 
268
- visibleRows = this.table.rowManager.getVisibleRows();
269
- otherRows = this.table.rowManager.getDisplayRows().filter(row => !visibleRows.includes(row));
270
-
271
- otherRows.forEach((row) =>{
272
- row.deinitialize();
273
- });
274
-
275
- visibleRows.forEach((row) =>{
276
- if(row.type === "row"){
277
- this.layoutRow(row);
278
- }
279
- });
256
+ this.reinitializeRows();
280
257
 
281
258
  this.layoutCalcRows();
282
-
283
-
284
259
  }
285
260
  }
286
261
 
262
+ reinitializeRows(){
263
+ var visibleRows = this.table.rowManager.getVisibleRows();
264
+ var otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));
265
+
266
+ otherRows.forEach((row) =>{
267
+ row.deinitialize();
268
+ });
269
+
270
+ visibleRows.forEach((row) =>{
271
+ if(row.type === "row"){
272
+ this.layoutRow(row);
273
+ }
274
+ });
275
+ }
276
+
287
277
  layoutRow(row){
288
278
  // console.trace("row")
289
279
  var rowEl = row.getElement();
@@ -45,7 +45,7 @@ class MoveColumns extends Module{
45
45
  config = {},
46
46
  colEl;
47
47
 
48
- if(!column.modules.frozen){
48
+ if(!column.modules.frozen && !column.isGroup){
49
49
  colEl = column.getElement();
50
50
 
51
51
  config.mousemove = function(e){
@@ -421,6 +421,7 @@ class Persistence extends Module{
421
421
  if(this.config.columns === true || this.config.columns == undefined){
422
422
  keys = Object.keys(colDef);
423
423
  keys.push("width");
424
+ keys.push("visible");
424
425
  }else{
425
426
  keys = this.config.columns;
426
427
  }
@@ -94,7 +94,7 @@ class ResizeColumns extends Module{
94
94
 
95
95
  if((mode === true || mode == type) && this._checkResizability(nearestColumn)){
96
96
 
97
- var handle = document.createElement('div');
97
+ var handle = document.createElement('span');
98
98
  handle.className = "tabulator-col-resize-handle";
99
99
 
100
100
  handle.addEventListener("click", function(e){
@@ -8,18 +8,18 @@ export default function(a, b, aRow, bRow, column, dir, params){
8
8
  if(typeof DT != "undefined"){
9
9
  if(DT.isDateTime(a)){
10
10
  a = a;
11
- }else if(inputFormat === "iso"){
11
+ }else if(format === "iso"){
12
12
  a = DT.fromISO(String(a));
13
13
  }else{
14
- a = DT.fromFormat(String(a), inputFormat);
14
+ a = DT.fromFormat(String(a), format);
15
15
  }
16
16
 
17
17
  if(DT.isDateTime(b)){
18
18
  b = b;
19
- }else if(inputFormat === "iso"){
20
- a = DT.fromISO(String(b));
19
+ }else if(format === "iso"){
20
+ b = DT.fromISO(String(b));
21
21
  }else{
22
- b = DT.fromFormat(String(b), inputFormat);
22
+ b = DT.fromFormat(String(b), format);
23
23
  }
24
24
 
25
25
  if(!a.isValid){
@@ -89,7 +89,7 @@ class Validate extends Module{
89
89
  var invalid = [];
90
90
 
91
91
  column.cells.forEach((cell) => {
92
- if(!this.cellValidate(cell)){
92
+ if(this.cellValidate(cell) !== true){
93
93
  invalid.push(cell.getComponent());
94
94
  }
95
95
  });
@@ -105,7 +105,7 @@ class Validate extends Module{
105
105
  var invalid = [];
106
106
 
107
107
  row.cells.forEach((cell) => {
108
- if(!this.cellValidate(cell)){
108
+ if(this.cellValidate(cell) !== true){
109
109
  invalid.push(cell.getComponent());
110
110
  }
111
111
  });
@@ -305,4 +305,4 @@ Validate.moduleName = "validate";
305
305
  //load defaults
306
306
  Validate.validators = defaultValidators;
307
307
 
308
- export default Validate;
308
+ export default Validate;
@@ -561,6 +561,11 @@ $footerActiveColor:#d00 !default; //footer bottom active text color
561
561
  &:hover{
562
562
  cursor:ew-resize;
563
563
  }
564
+
565
+ &:last-of-type{
566
+ width:3px;
567
+ margin-right:0;
568
+ }
564
569
  }
565
570
 
566
571
 
@@ -543,4 +543,24 @@ $table-cell-padding-sm: 5px;
543
543
  }
544
544
  }
545
545
  }
546
+ }
547
+
548
+ .tabulator-popup-container{
549
+ background:#fff;
550
+ }
551
+
552
+ .tabulator-edit-list{
553
+ .tabulator-edit-list-item{
554
+ &.active{
555
+ color:#fff;
556
+
557
+ &.focused{
558
+ outline:1px solid rgba(#fff, .5);
559
+ }
560
+ }
561
+
562
+ &:hover{
563
+ color:#fff;
564
+ }
565
+ }
546
566
  }