tabulator-tables 5.6.1 → 6.0.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 (167) hide show
  1. package/bower.json +1 -1
  2. package/build/{Bundler.js → Bundler.mjs} +8 -6
  3. package/build/rollup.mjs +9 -0
  4. package/dist/css/tabulator.css +62 -0
  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 +72 -0
  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 +78 -0
  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 +78 -0
  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 +84 -0
  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 +77 -0
  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 +72 -0
  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 +82 -0
  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 +74 -0
  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 +75 -0
  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 +85 -0
  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/tabulator.js +3882 -2809
  49. package/dist/js/tabulator.js.map +1 -1
  50. package/dist/js/tabulator.min.js +2 -2
  51. package/dist/js/tabulator.min.js.map +1 -1
  52. package/dist/js/tabulator_esm.js +3843 -2768
  53. package/dist/js/tabulator_esm.js.map +1 -1
  54. package/dist/js/tabulator_esm.min.js +2 -2
  55. package/dist/js/tabulator_esm.min.js.map +1 -1
  56. package/package.json +17 -17
  57. package/src/js/builds/esm.js +2 -0
  58. package/src/js/core/ColumnManager.js +15 -0
  59. package/src/js/core/Module.js +2 -4
  60. package/src/js/core/RowManager.js +1 -1
  61. package/src/js/core/Tabulator.js +34 -21
  62. package/src/js/core/TabulatorFull.js +15 -5
  63. package/src/js/core/cell/Cell.js +4 -0
  64. package/src/js/core/column/Column.js +228 -217
  65. package/src/js/core/column/ColumnComponent.js +1 -3
  66. package/src/js/core/defaults/options.js +1 -0
  67. package/src/js/core/modules/optional.js +2 -1
  68. package/src/js/core/row/Row.js +23 -11
  69. package/src/js/core/tools/DataLoader.js +1 -1
  70. package/src/js/core/tools/ModuleBinder.js +123 -75
  71. package/src/js/core/tools/TableRegistry.js +58 -55
  72. package/src/js/modules/Accessor/Accessor.js +7 -8
  73. package/src/js/modules/Accessor/defaults/accessors.js +5 -1
  74. package/src/js/modules/Ajax/Ajax.js +10 -12
  75. package/src/js/modules/Clipboard/Clipboard.js +10 -10
  76. package/src/js/modules/Clipboard/defaults/pasteActions.js +0 -43
  77. package/src/js/modules/Clipboard/defaults/pasteParsers.js +0 -55
  78. package/src/js/modules/Clipboard/extensions/extensions.js +9 -0
  79. package/src/js/modules/Clipboard/extensions/keybindings/actions.js +9 -0
  80. package/src/js/modules/Clipboard/extensions/keybindings/bindings.js +3 -0
  81. package/src/js/modules/ColumnCalcs/CalcComponent.js +2 -4
  82. package/src/js/modules/ColumnCalcs/ColumnCalcs.js +16 -18
  83. package/src/js/modules/Comms/Comms.js +5 -8
  84. package/src/js/modules/DataTree/DataTree.js +11 -11
  85. package/src/js/modules/Download/Download.js +9 -11
  86. package/src/js/modules/Edit/Edit.js +47 -15
  87. package/src/js/modules/Edit/List.js +12 -12
  88. package/src/js/modules/Edit/defaults/editors/time.js +0 -2
  89. package/src/js/modules/Edit/defaults/editors.js +0 -4
  90. package/src/js/modules/Export/Export.js +70 -62
  91. package/src/js/modules/Export/ExportColumn.js +2 -4
  92. package/src/js/modules/Export/ExportRow.js +2 -4
  93. package/src/js/modules/Export/defaults/columnLookups.js +3 -0
  94. package/src/js/modules/Export/defaults/rowLookups.js +18 -0
  95. package/src/js/modules/Filter/Filter.js +7 -9
  96. package/src/js/modules/Format/Format.js +7 -9
  97. package/src/js/modules/Format/defaults/formatters.js +0 -4
  98. package/src/js/modules/FrozenColumns/FrozenColumns.js +8 -6
  99. package/src/js/modules/FrozenRows/FrozenRows.js +4 -6
  100. package/src/js/modules/GroupRows/Group.js +2 -4
  101. package/src/js/modules/GroupRows/GroupComponent.js +2 -4
  102. package/src/js/modules/GroupRows/GroupRows.js +4 -6
  103. package/src/js/modules/History/History.js +10 -10
  104. package/src/js/modules/History/extensions/extensions.js +9 -0
  105. package/src/js/modules/History/extensions/keybindings/actions.js +27 -0
  106. package/src/js/modules/History/extensions/keybindings/bindings.js +4 -0
  107. package/src/js/modules/HtmlTableImport/HtmlTableImport.js +4 -6
  108. package/src/js/modules/Import/Import.js +7 -9
  109. package/src/js/modules/Import/defaults/importers/array.js +2 -4
  110. package/src/js/modules/Import/defaults/importers/csv.js +2 -4
  111. package/src/js/modules/Interaction/Interaction.js +4 -6
  112. package/src/js/modules/Keybindings/Keybindings.js +8 -10
  113. package/src/js/modules/Keybindings/defaults/actions.js +5 -71
  114. package/src/js/modules/Keybindings/defaults/bindings.js +0 -16
  115. package/src/js/modules/Layout/Layout.js +7 -9
  116. package/src/js/modules/Localize/Localize.js +7 -9
  117. package/src/js/modules/Menu/Menu.js +7 -9
  118. package/src/js/modules/MoveColumns/MoveColumns.js +6 -8
  119. package/src/js/modules/MoveRows/MoveRows.js +13 -45
  120. package/src/js/modules/MoveRows/defaults/receivers.js +30 -0
  121. package/src/js/modules/MoveRows/defaults/senders.js +5 -0
  122. package/src/js/modules/Mutator/Mutator.js +7 -9
  123. package/src/js/modules/Page/Page.js +7 -9
  124. package/src/js/modules/Persistence/Persistence.js +10 -12
  125. package/src/js/modules/Popup/Popup.js +4 -8
  126. package/src/js/modules/Print/Print.js +4 -6
  127. package/src/js/modules/ReactiveData/ReactiveData.js +4 -9
  128. package/src/js/modules/ResizeColumns/ResizeColumns.js +91 -53
  129. package/src/js/modules/ResizeRows/ResizeRows.js +41 -8
  130. package/src/js/modules/ResizeTable/ResizeTable.js +4 -6
  131. package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +15 -9
  132. package/src/js/modules/ResponsiveLayout/extensions/extensions.js +9 -0
  133. package/src/js/modules/SelectRange/Range.js +22 -10
  134. package/src/js/modules/SelectRange/RangeComponent.js +2 -4
  135. package/src/js/modules/SelectRange/SelectRange.js +58 -28
  136. package/src/js/modules/SelectRange/extensions/clipboard/pasteActions.js +45 -0
  137. package/src/js/modules/SelectRange/extensions/clipboard/pasteParsers.js +57 -0
  138. package/src/js/modules/SelectRange/extensions/export/columnLookups.js +11 -0
  139. package/src/js/modules/SelectRange/extensions/export/rowLookups.js +5 -0
  140. package/src/js/modules/SelectRange/extensions/extensions.js +21 -0
  141. package/src/js/modules/SelectRange/extensions/keybindings/actions.js +38 -0
  142. package/src/js/modules/SelectRange/extensions/keybindings/bindings.js +14 -0
  143. package/src/js/modules/SelectRow/SelectRow.js +12 -12
  144. package/src/js/modules/SelectRow/extensions/extensions.js +9 -0
  145. package/src/js/modules/Sort/Sort.js +16 -13
  146. package/src/js/modules/Spreadsheet/GridCalculator.js +64 -0
  147. package/src/js/modules/Spreadsheet/Sheet.js +243 -0
  148. package/src/js/modules/Spreadsheet/SheetComponent.js +59 -0
  149. package/src/js/modules/Spreadsheet/Spreadsheet.js +309 -0
  150. package/src/js/modules/Tooltip/Tooltip.js +6 -8
  151. package/src/js/modules/Validate/Validate.js +7 -9
  152. package/src/scss/tabulator.scss +79 -3
  153. package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +14 -0
  154. package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +18 -0
  155. package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +18 -0
  156. package/src/scss/themes/bulma/tabulator_bulma.scss +24 -0
  157. package/src/scss/themes/materialize/tabulator_materialize.scss +18 -0
  158. package/src/scss/themes/semanticui/tabulator_semanticui.scss +14 -0
  159. package/src/scss/themes/tabulator_midnight.scss +34 -21
  160. package/src/scss/themes/tabulator_modern.scss +23 -0
  161. package/src/scss/themes/tabulator_simple.scss +15 -0
  162. package/src/scss/themes/tabulator_site.scss +25 -0
  163. package/build/rollup.js +0 -6
  164. package/src/js/modules/Edit/defaults/editors/autocomplete.js +0 -12
  165. package/src/js/modules/Edit/defaults/editors/select.js +0 -10
  166. /package/src/js/modules/{Format/defaults → ResponsiveLayout/extensions}/formatters/responsiveCollapse.js +0 -0
  167. /package/src/js/modules/{Format/defaults → SelectRow/extensions}/formatters/rowSelection.js +0 -0
@@ -1,7 +1,16 @@
1
1
  import Module from '../../core/Module.js';
2
2
  import Helpers from '../../core/tools/Helpers.js';
3
3
 
4
- class MoveRows extends Module{
4
+ import defaultSenders from './defaults/senders.js';
5
+ import defaultReceivers from './defaults/receivers.js';
6
+
7
+ export default class MoveRows extends Module{
8
+
9
+ static moduleName = "moveRow";
10
+
11
+ //load defaults
12
+ static senders = defaultSenders;
13
+ static receivers = defaultReceivers;
5
14
 
6
15
  constructor(table){
7
16
  super(table);
@@ -522,7 +531,7 @@ class MoveRows extends Module{
522
531
 
523
532
  switch(typeof this.table.options.movableRowsSender){
524
533
  case "string":
525
- sender = this.senders[this.table.options.movableRowsSender];
534
+ sender = MoveRows.senders[this.table.options.movableRowsSender];
526
535
  break;
527
536
 
528
537
  case "function":
@@ -554,7 +563,7 @@ class MoveRows extends Module{
554
563
 
555
564
  switch(typeof this.table.options.movableRowsReceiver){
556
565
  case "string":
557
- receiver = this.receivers[this.table.options.movableRowsReceiver];
566
+ receiver = MoveRows.receivers[this.table.options.movableRowsReceiver];
558
567
  break;
559
568
 
560
569
  case "function":
@@ -592,45 +601,4 @@ class MoveRows extends Module{
592
601
  return this.dropComplete(table, data.row, data.success);
593
602
  }
594
603
  }
595
- }
596
-
597
- MoveRows.prototype.receivers = {
598
- insert:function(fromRow, toRow, fromTable){
599
- this.table.addRow(fromRow.getData(), undefined, toRow);
600
- return true;
601
- },
602
-
603
- add:function(fromRow, toRow, fromTable){
604
- this.table.addRow(fromRow.getData());
605
- return true;
606
- },
607
-
608
- update:function(fromRow, toRow, fromTable){
609
- if(toRow){
610
- toRow.update(fromRow.getData());
611
- return true;
612
- }
613
-
614
- return false;
615
- },
616
-
617
- replace:function(fromRow, toRow, fromTable){
618
- if(toRow){
619
- this.table.addRow(fromRow.getData(), undefined, toRow);
620
- toRow.delete();
621
- return true;
622
- }
623
-
624
- return false;
625
- },
626
- };
627
-
628
- MoveRows.prototype.senders = {
629
- delete:function(fromRow, toRow, toTable){
630
- fromRow.delete();
631
- }
632
- };
633
-
634
- MoveRows.moduleName = "moveRow";
635
-
636
- export default MoveRows;
604
+ }
@@ -0,0 +1,30 @@
1
+ export default{
2
+ insert:function(fromRow, toRow, fromTable){
3
+ this.table.addRow(fromRow.getData(), undefined, toRow);
4
+ return true;
5
+ },
6
+
7
+ add:function(fromRow, toRow, fromTable){
8
+ this.table.addRow(fromRow.getData());
9
+ return true;
10
+ },
11
+
12
+ update:function(fromRow, toRow, fromTable){
13
+ if(toRow){
14
+ toRow.update(fromRow.getData());
15
+ return true;
16
+ }
17
+
18
+ return false;
19
+ },
20
+
21
+ replace:function(fromRow, toRow, fromTable){
22
+ if(toRow){
23
+ this.table.addRow(fromRow.getData(), undefined, toRow);
24
+ toRow.delete();
25
+ return true;
26
+ }
27
+
28
+ return false;
29
+ },
30
+ };
@@ -0,0 +1,5 @@
1
+ export default {
2
+ delete:function(fromRow, toRow, toTable){
3
+ fromRow.delete();
4
+ }
5
+ };
@@ -2,7 +2,12 @@ import Module from '../../core/Module.js';
2
2
 
3
3
  import defaultMutators from './defaults/mutators.js';
4
4
 
5
- class Mutator extends Module{
5
+ export default class Mutator extends Module{
6
+
7
+ static moduleName = "mutator";
8
+
9
+ //load defaults
10
+ static mutators = defaultMutators;
6
11
 
7
12
  constructor(table){
8
13
  super(table);
@@ -152,11 +157,4 @@ class Mutator extends Module{
152
157
  disable(){
153
158
  this.enabled = false;
154
159
  }
155
- }
156
-
157
- Mutator.moduleName = "mutator";
158
-
159
- //load defaults
160
- Mutator.mutators = defaultMutators;
161
-
162
- export default Mutator;
160
+ }
@@ -2,7 +2,12 @@ import Module from '../../core/Module.js';
2
2
 
3
3
  import defaultPageCounters from './defaults/pageCounters.js';
4
4
 
5
- class Page extends Module{
5
+ export default class Page extends Module{
6
+
7
+ static moduleName = "page";
8
+
9
+ //load defaults
10
+ static pageCounters = defaultPageCounters;
6
11
 
7
12
  constructor(table){
8
13
  super(table);
@@ -871,11 +876,4 @@ class Page extends Module{
871
876
  }
872
877
  }
873
878
  }
874
- }
875
-
876
- Page.moduleName = "page";
877
-
878
- //load defaults
879
- Page.pageCounters = defaultPageCounters;
880
-
881
- export default Page;
879
+ }
@@ -3,7 +3,15 @@ import Module from '../../core/Module.js';
3
3
  import defaultReaders from './defaults/readers.js';
4
4
  import defaultWriters from './defaults/writers.js';
5
5
 
6
- class Persistence extends Module{
6
+ export default class Persistence extends Module{
7
+
8
+ static moduleName = "persistence";
9
+
10
+ static moduleInitOrder = -10;
11
+
12
+ //load defaults
13
+ static readers = defaultReaders;
14
+ static writers = defaultWriters;
7
15
 
8
16
  constructor(table){
9
17
  super(table);
@@ -462,14 +470,4 @@ class Persistence extends Module{
462
470
 
463
471
  return definitions;
464
472
  }
465
- }
466
-
467
- Persistence.moduleName = "persistence";
468
-
469
- Persistence.moduleInitOrder = -10;
470
-
471
- //load defaults
472
- Persistence.readers = defaultReaders;
473
- Persistence.writers = defaultWriters;
474
-
475
- export default Persistence;
473
+ }
@@ -1,6 +1,8 @@
1
1
  import Module from '../../core/Module.js';
2
2
 
3
- class Popup extends Module{
3
+ export default class Popup extends Module{
4
+
5
+ static moduleName = "popup";
4
6
 
5
7
  constructor(table){
6
8
  super(table);
@@ -220,12 +222,6 @@ class Popup extends Module{
220
222
  this.dispatchExternal("popupClosed", component.getComponent());
221
223
  });
222
224
 
223
-
224
-
225
225
  this.dispatchExternal("popupOpened", component.getComponent());
226
226
  }
227
- }
228
-
229
- Popup.moduleName = "popup";
230
-
231
- export default Popup;
227
+ }
@@ -1,6 +1,8 @@
1
1
  import Module from '../../core/Module.js';
2
2
 
3
- class Print extends Module{
3
+ export default class Print extends Module{
4
+
5
+ static moduleName = "print";
4
6
 
5
7
  constructor(table){
6
8
  super(table);
@@ -131,8 +133,4 @@ class Print extends Module{
131
133
 
132
134
  this.manualBlock = false;
133
135
  }
134
- }
135
-
136
- Print.moduleName = "print";
137
-
138
- export default Print;
136
+ }
@@ -1,6 +1,8 @@
1
1
  import Module from '../../core/Module.js';
2
2
 
3
- class ReactiveData extends Module{
3
+ export default class ReactiveData extends Module{
4
+
5
+ static moduleName = "reactiveData";
4
6
 
5
7
  constructor(table){
6
8
  super(table);
@@ -398,11 +400,4 @@ class ReactiveData extends Module{
398
400
  this.blocked = false;
399
401
  }
400
402
  }
401
- }
402
-
403
- ReactiveData.moduleName = "reactiveData";
404
-
405
- export default ReactiveData;
406
-
407
-
408
-
403
+ }
@@ -1,7 +1,9 @@
1
1
  import Module from '../../core/Module.js';
2
2
 
3
- class ResizeColumns extends Module{
4
-
3
+ export default class ResizeColumns extends Module{
4
+
5
+ static moduleName = "resizeColumns";
6
+
5
7
  constructor(table){
6
8
  super(table);
7
9
 
@@ -16,6 +18,7 @@ class ResizeColumns extends Module{
16
18
  this.initialized = false;
17
19
  this.registerColumnOption("resizable", true);
18
20
  this.registerTableOption("resizableColumnFit", false);
21
+ this.registerTableOption("resizableColumnGuide", false);
19
22
  }
20
23
 
21
24
  initialize(){
@@ -163,7 +166,7 @@ class ResizeColumns extends Module{
163
166
 
164
167
  if(oldWidth !== nearestColumn.getWidth()){
165
168
  self.dispatch("column-resized", nearestColumn);
166
- self.table.externalEvents.dispatch("columnResized", nearestColumn.getComponent());
169
+ self.dispatchExternal("columnResized", nearestColumn.getComponent());
167
170
  }
168
171
  });
169
172
 
@@ -208,60 +211,99 @@ class ResizeColumns extends Module{
208
211
  }
209
212
  }
210
213
 
214
+ resize(e, column){
215
+ var x = typeof e.clientX === "undefined" ? e.touches[0].clientX : e.clientX,
216
+ startDiff = x - this.startX,
217
+ moveDiff = x - this.latestX,
218
+ blockedBefore, blockedAfter;
219
+
220
+ this.latestX = x;
221
+
222
+ if(this.table.rtl){
223
+ startDiff = -startDiff;
224
+ moveDiff = -moveDiff;
225
+ }
226
+
227
+ blockedBefore = column.width == column.minWidth || column.width == column.maxWidth;
228
+
229
+ column.setWidth(this.startWidth + startDiff);
230
+
231
+ blockedAfter = column.width == column.minWidth || column.width == column.maxWidth;
232
+
233
+ if(moveDiff < 0){
234
+ this.nextColumn = this.initialNextColumn;
235
+ }
236
+
237
+ if(this.table.options.resizableColumnFit && this.nextColumn && !(blockedBefore && blockedAfter)){
238
+ let colWidth = this.nextColumn.getWidth();
239
+
240
+ if(moveDiff > 0){
241
+ if(colWidth <= this.nextColumn.minWidth){
242
+ this.nextColumn = this.nextColumn.nextColumn();
243
+ }
244
+ }
245
+
246
+ if(this.nextColumn){
247
+ this.nextColumn.setWidth(this.nextColumn.getWidth() - moveDiff);
248
+ }
249
+ }
250
+
251
+ this.table.columnManager.rerenderColumns(true);
252
+
253
+ if(!this.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){
254
+ column.checkCellHeights();
255
+ }
256
+ }
257
+
258
+ calcGuidePosition(e, column, handle) {
259
+ var mouseX = typeof e.clientX === "undefined" ? e.touches[0].clientX : e.clientX,
260
+ handleX = handle.getBoundingClientRect().x - this.table.element.getBoundingClientRect().x,
261
+ tableX = this.table.element.getBoundingClientRect().x,
262
+ columnX = column.element.getBoundingClientRect().left - tableX,
263
+ mouseDiff = mouseX - this.startX,
264
+ pos = Math.max(handleX + mouseDiff, columnX + column.minWidth);
265
+
266
+ if(column.maxWidth){
267
+ pos = Math.min(pos, columnX + column.maxWidth);
268
+ }
269
+
270
+ return pos;
271
+ }
272
+
211
273
  _checkResizability(column){
212
274
  return column.definition.resizable;
213
275
  }
214
276
 
215
277
  _mouseDown(e, column, handle){
216
- var self = this;
217
-
278
+ var self = this,
279
+ guideEl;
280
+
281
+ this.dispatchExternal("columnResizing", column.getComponent());
282
+
283
+ if(self.table.options.resizableColumnGuide){
284
+ guideEl = document.createElement("span");
285
+ guideEl.classList.add('tabulator-col-resize-guide');
286
+ self.table.element.appendChild(guideEl);
287
+ setTimeout(() => {
288
+ guideEl.style.left = self.calcGuidePosition(e, column, handle) + "px";
289
+ });
290
+ }
291
+
218
292
  self.table.element.classList.add("tabulator-block-select");
219
-
293
+
220
294
  function mouseMove(e){
221
- var x = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX,
222
- startDiff = x - self.startX,
223
- moveDiff = x - self.latestX,
224
- blockedBefore, blockedAfter;
225
-
226
- self.latestX = x;
227
-
228
- if(self.table.rtl){
229
- startDiff = -startDiff;
230
- moveDiff = -moveDiff;
231
- }
232
-
233
- blockedBefore = column.width == column.minWidth || column.width == column.maxWidth;
234
-
235
- column.setWidth(self.startWidth + startDiff);
236
-
237
- blockedAfter = column.width == column.minWidth || column.width == column.maxWidth;
238
-
239
- if(moveDiff < 0){
240
- self.nextColumn = self.initialNextColumn;
241
- }
242
-
243
- if(self.table.options.resizableColumnFit && self.nextColumn && !(blockedBefore && blockedAfter)){
244
- let colWidth = self.nextColumn.getWidth();
245
-
246
- if(moveDiff > 0){
247
- if(colWidth <= self.nextColumn.minWidth){
248
- self.nextColumn = self.nextColumn.nextColumn();
249
- }
250
- }
251
-
252
- if(self.nextColumn){
253
- self.nextColumn.setWidth(self.nextColumn.getWidth() - moveDiff);
254
- }
255
- }
256
-
257
- self.table.columnManager.rerenderColumns(true);
258
-
259
- if(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){
260
- column.checkCellHeights();
295
+ if(self.table.options.resizableColumnGuide){
296
+ guideEl.style.left = self.calcGuidePosition(e, column, handle) + "px";
297
+ }else{
298
+ self.resize(e, column);
261
299
  }
262
300
  }
263
301
 
264
302
  function mouseUp(e){
303
+ if(self.table.options.resizableColumnGuide){
304
+ self.resize(e, column);
305
+ guideEl.remove();
306
+ }
265
307
 
266
308
  //block editor from taking action while resizing is taking place
267
309
  if(self.startColumn.modules.edit){
@@ -284,7 +326,7 @@ class ResizeColumns extends Module{
284
326
  self.table.columnManager.verticalAlignHeaders();
285
327
 
286
328
  self.dispatch("column-resized", column);
287
- self.table.externalEvents.dispatch("columnResized", column.getComponent());
329
+ self.dispatchExternal("columnResized", column.getComponent());
288
330
  }
289
331
  }
290
332
 
@@ -295,7 +337,7 @@ class ResizeColumns extends Module{
295
337
  self.startColumn.modules.edit.blocked = true;
296
338
  }
297
339
 
298
- self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX;
340
+ self.startX = typeof e.clientX === "undefined" ? e.touches[0].clientX : e.clientX;
299
341
  self.latestX = self.startX;
300
342
  self.startWidth = column.getWidth();
301
343
 
@@ -304,8 +346,4 @@ class ResizeColumns extends Module{
304
346
  handle.addEventListener("touchmove", mouseMove, {passive: true});
305
347
  handle.addEventListener("touchend", mouseUp);
306
348
  }
307
- }
308
-
309
- ResizeColumns.moduleName = "resizeColumns";
310
-
311
- export default ResizeColumns;
349
+ }
@@ -1,6 +1,8 @@
1
1
  import Module from '../../core/Module.js';
2
2
 
3
- class ResizeRows extends Module{
3
+ export default class ResizeRows extends Module{
4
+
5
+ static moduleName = "resizeRows";
4
6
 
5
7
  constructor(table){
6
8
  super(table);
@@ -12,6 +14,7 @@ class ResizeRows extends Module{
12
14
  this.prevHandle = null;
13
15
 
14
16
  this.registerTableOption("resizableRows", false); //resizable rows
17
+ this.registerTableOption("resizableRowGuide", false);
15
18
  }
16
19
 
17
20
  initialize(){
@@ -62,16 +65,50 @@ class ResizeRows extends Module{
62
65
  rowEl.appendChild(prevHandle);
63
66
  }
64
67
 
68
+ resize(e, row) {
69
+ row.setHeight(this.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - this.startY));
70
+ }
71
+
72
+ calcGuidePosition(e, row, handle) {
73
+ var mouseY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY,
74
+ handleY = handle.getBoundingClientRect().y - this.table.element.getBoundingClientRect().y,
75
+ tableY = this.table.element.getBoundingClientRect().y,
76
+ rowY = row.element.getBoundingClientRect().top - tableY,
77
+ mouseDiff = mouseY - this.startY;
78
+
79
+ return Math.max(handleY + mouseDiff, rowY);
80
+ }
81
+
65
82
  _mouseDown(e, row, handle){
66
- var self = this;
83
+ var self = this,
84
+ guideEl;
85
+
86
+ self.dispatchExternal("rowResizing", row.getComponent());
87
+
88
+ if(self.table.options.resizableRowGuide){
89
+ guideEl = document.createElement("span");
90
+ guideEl.classList.add('tabulator-row-resize-guide');
91
+ self.table.element.appendChild(guideEl);
92
+ setTimeout(() => {
93
+ guideEl.style.top = self.calcGuidePosition(e, row, handle) + "px";
94
+ });
95
+ }
67
96
 
68
97
  self.table.element.classList.add("tabulator-block-select");
69
98
 
70
99
  function mouseMove(e){
71
- row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY));
100
+ if(self.table.options.resizableRowGuide){
101
+ guideEl.style.top = self.calcGuidePosition(e, row, handle) + "px";
102
+ }else{
103
+ self.resize(e, row);
104
+ }
72
105
  }
73
106
 
74
107
  function mouseUp(e){
108
+ if(self.table.options.resizableRowGuide){
109
+ self.resize(e, row);
110
+ guideEl.remove();
111
+ }
75
112
 
76
113
  // //block editor from taking action while resizing is taking place
77
114
  // if(self.startColumn.modules.edit){
@@ -105,8 +142,4 @@ class ResizeRows extends Module{
105
142
  handle.addEventListener("touchmove", mouseMove, {passive: true});
106
143
  handle.addEventListener("touchend", mouseUp);
107
144
  }
108
- }
109
-
110
- ResizeRows.moduleName = "resizeRows";
111
-
112
- export default ResizeRows;
145
+ }
@@ -1,6 +1,8 @@
1
1
  import Module from '../../core/Module.js';
2
2
 
3
- class ResizeTable extends Module{
3
+ export default class ResizeTable extends Module{
4
+
5
+ static moduleName = "resizeTable";
4
6
 
5
7
  constructor(table){
6
8
  super(table);
@@ -153,8 +155,4 @@ class ResizeTable extends Module{
153
155
  this.containerObserver.unobserve(this.table.element.parentNode);
154
156
  }
155
157
  }
156
- }
157
-
158
- ResizeTable.moduleName = "resizeTable";
159
-
160
- export default ResizeTable;
158
+ }
@@ -1,6 +1,10 @@
1
1
  import Module from '../../core/Module.js';
2
+ import extensions from './extensions/extensions.js';
2
3
 
3
- class ResponsiveLayout extends Module{
4
+ export default class ResponsiveLayout extends Module{
5
+
6
+ static moduleName = "responsiveLayout";
7
+ static moduleExtensions = extensions;
4
8
 
5
9
  constructor(table){
6
10
  super(table);
@@ -58,6 +62,10 @@ class ResponsiveLayout extends Module{
58
62
  this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;
59
63
  this.hiddenColumns = [];
60
64
 
65
+ if(this.collapseFormatter){
66
+ this.collapseFormatter = this.collapseFormatter.bind(this.table);
67
+ }
68
+
61
69
  //determine level of responsivity for each column
62
70
  this.table.columnManager.columnsByIndex.forEach((column, i) => {
63
71
  if(column.modules.responsive){
@@ -249,6 +257,7 @@ class ResponsiveLayout extends Module{
249
257
  if(contents){
250
258
  el.appendChild(contents);
251
259
  }
260
+ row.calcHeight(true);
252
261
  }
253
262
  }
254
263
 
@@ -314,7 +323,7 @@ class ResponsiveLayout extends Module{
314
323
  formatCollapsedData(data){
315
324
  var list = document.createElement("table");
316
325
 
317
- data.forEach(function(item){
326
+ data.forEach((item) => {
318
327
  var row = document.createElement("tr");
319
328
  var titleData = document.createElement("td");
320
329
  var valueData = document.createElement("td");
@@ -322,7 +331,8 @@ class ResponsiveLayout extends Module{
322
331
 
323
332
  var titleHighlight = document.createElement("strong");
324
333
  titleData.appendChild(titleHighlight);
325
- this.langBind("columns|" + item.field, function(text){
334
+
335
+ this.modules.localize.bind("columns|" + item.field, function(text){
326
336
  titleHighlight.innerHTML = text || item.title;
327
337
  });
328
338
 
@@ -337,12 +347,8 @@ class ResponsiveLayout extends Module{
337
347
  row.appendChild(titleData);
338
348
  row.appendChild(valueData);
339
349
  list.appendChild(row);
340
- }, this);
350
+ });
341
351
 
342
352
  return Object.keys(data).length ? list : "";
343
353
  }
344
- }
345
-
346
- ResponsiveLayout.moduleName = "responsiveLayout";
347
-
348
- export default ResponsiveLayout;
354
+ }
@@ -0,0 +1,9 @@
1
+ import responsiveCollapse from './formatters/responsiveCollapse.js';
2
+
3
+ export default {
4
+ format:{
5
+ formatters:{
6
+ responsiveCollapse:responsiveCollapse,
7
+ }
8
+ }
9
+ };