tabulator-tables 5.6.0 → 6.0.0
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.
- package/bower.json +1 -1
- package/build/{Bundler.js → Bundler.mjs} +8 -6
- package/build/rollup.mjs +9 -0
- package/dist/css/tabulator.css +67 -5
- package/dist/css/tabulator.css.map +1 -1
- package/dist/css/tabulator.min.css +1 -1
- package/dist/css/tabulator.min.css.map +1 -1
- package/dist/css/tabulator_bootstrap3.css +77 -5
- package/dist/css/tabulator_bootstrap3.css.map +1 -1
- package/dist/css/tabulator_bootstrap3.min.css +1 -1
- package/dist/css/tabulator_bootstrap3.min.css.map +1 -1
- package/dist/css/tabulator_bootstrap4.css +83 -5
- package/dist/css/tabulator_bootstrap4.css.map +1 -1
- package/dist/css/tabulator_bootstrap4.min.css +1 -1
- package/dist/css/tabulator_bootstrap4.min.css.map +1 -1
- package/dist/css/tabulator_bootstrap5.css +83 -5
- package/dist/css/tabulator_bootstrap5.css.map +1 -1
- package/dist/css/tabulator_bootstrap5.min.css +1 -1
- package/dist/css/tabulator_bootstrap5.min.css.map +1 -1
- package/dist/css/tabulator_bulma.css +89 -5
- package/dist/css/tabulator_bulma.css.map +1 -1
- package/dist/css/tabulator_bulma.min.css +1 -1
- package/dist/css/tabulator_bulma.min.css.map +1 -1
- package/dist/css/tabulator_materialize.css +82 -5
- package/dist/css/tabulator_materialize.css.map +1 -1
- package/dist/css/tabulator_materialize.min.css +1 -1
- package/dist/css/tabulator_materialize.min.css.map +1 -1
- package/dist/css/tabulator_midnight.css +77 -5
- package/dist/css/tabulator_midnight.css.map +1 -1
- package/dist/css/tabulator_midnight.min.css +1 -1
- package/dist/css/tabulator_midnight.min.css.map +1 -1
- package/dist/css/tabulator_modern.css +87 -5
- package/dist/css/tabulator_modern.css.map +1 -1
- package/dist/css/tabulator_modern.min.css +1 -1
- package/dist/css/tabulator_modern.min.css.map +1 -1
- package/dist/css/tabulator_semanticui.css +79 -5
- package/dist/css/tabulator_semanticui.css.map +1 -1
- package/dist/css/tabulator_semanticui.min.css +1 -1
- package/dist/css/tabulator_semanticui.min.css.map +1 -1
- package/dist/css/tabulator_simple.css +80 -5
- package/dist/css/tabulator_simple.css.map +1 -1
- package/dist/css/tabulator_simple.min.css +1 -1
- package/dist/css/tabulator_simple.min.css.map +1 -1
- package/dist/css/tabulator_site.css +90 -5
- package/dist/css/tabulator_site.css.map +1 -1
- package/dist/css/tabulator_site.min.css +1 -1
- package/dist/css/tabulator_site.min.css.map +1 -1
- package/dist/js/tabulator.js +3865 -2755
- package/dist/js/tabulator.js.map +1 -1
- package/dist/js/tabulator.min.js +2 -2
- package/dist/js/tabulator.min.js.map +1 -1
- package/dist/js/tabulator_esm.js +3857 -2745
- package/dist/js/tabulator_esm.js.map +1 -1
- package/dist/js/tabulator_esm.min.js +2 -2
- package/dist/js/tabulator_esm.min.js.map +1 -1
- package/package.json +17 -17
- package/src/js/builds/esm.js +2 -0
- package/src/js/core/ColumnManager.js +15 -0
- package/src/js/core/Module.js +2 -4
- package/src/js/core/RowManager.js +4 -6
- package/src/js/core/Tabulator.js +36 -23
- package/src/js/core/TabulatorFull.js +15 -5
- package/src/js/core/cell/Cell.js +4 -0
- package/src/js/core/column/Column.js +231 -216
- package/src/js/core/column/ColumnComponent.js +1 -3
- package/src/js/core/defaults/options.js +1 -0
- package/src/js/core/modules/optional.js +2 -1
- package/src/js/core/row/Row.js +23 -11
- package/src/js/core/tools/DataLoader.js +1 -1
- package/src/js/core/tools/ModuleBinder.js +123 -75
- package/src/js/core/tools/TableRegistry.js +58 -55
- package/src/js/modules/Accessor/Accessor.js +7 -8
- package/src/js/modules/Accessor/defaults/accessors.js +5 -1
- package/src/js/modules/Ajax/Ajax.js +10 -12
- package/src/js/modules/Clipboard/Clipboard.js +10 -10
- package/src/js/modules/Clipboard/defaults/pasteActions.js +0 -43
- package/src/js/modules/Clipboard/defaults/pasteParsers.js +0 -55
- package/src/js/modules/Clipboard/extensions/extensions.js +9 -0
- package/src/js/modules/Clipboard/extensions/keybindings/actions.js +9 -0
- package/src/js/modules/Clipboard/extensions/keybindings/bindings.js +3 -0
- package/src/js/modules/ColumnCalcs/CalcComponent.js +2 -4
- package/src/js/modules/ColumnCalcs/ColumnCalcs.js +16 -18
- package/src/js/modules/Comms/Comms.js +5 -8
- package/src/js/modules/DataTree/DataTree.js +11 -11
- package/src/js/modules/Download/Download.js +9 -11
- package/src/js/modules/Edit/Edit.js +63 -21
- package/src/js/modules/Edit/List.js +12 -12
- package/src/js/modules/Edit/defaults/editors/datetime.js +1 -1
- package/src/js/modules/Edit/defaults/editors/time.js +1 -1
- package/src/js/modules/Edit/defaults/editors.js +0 -4
- package/src/js/modules/Export/Export.js +70 -62
- package/src/js/modules/Export/ExportColumn.js +2 -4
- package/src/js/modules/Export/ExportRow.js +2 -4
- package/src/js/modules/Export/defaults/columnLookups.js +3 -0
- package/src/js/modules/Export/defaults/rowLookups.js +18 -0
- package/src/js/modules/Filter/Filter.js +7 -9
- package/src/js/modules/Format/Format.js +7 -9
- package/src/js/modules/Format/defaults/formatters.js +0 -4
- package/src/js/modules/FrozenColumns/FrozenColumns.js +9 -6
- package/src/js/modules/FrozenRows/FrozenRows.js +4 -6
- package/src/js/modules/GroupRows/Group.js +2 -4
- package/src/js/modules/GroupRows/GroupComponent.js +2 -4
- package/src/js/modules/GroupRows/GroupRows.js +4 -6
- package/src/js/modules/History/History.js +10 -10
- package/src/js/modules/History/extensions/extensions.js +9 -0
- package/src/js/modules/History/extensions/keybindings/actions.js +27 -0
- package/src/js/modules/History/extensions/keybindings/bindings.js +4 -0
- package/src/js/modules/HtmlTableImport/HtmlTableImport.js +4 -6
- package/src/js/modules/Import/Import.js +7 -9
- package/src/js/modules/Import/defaults/importers/array.js +2 -4
- package/src/js/modules/Import/defaults/importers/csv.js +2 -4
- package/src/js/modules/Interaction/Interaction.js +4 -6
- package/src/js/modules/Keybindings/Keybindings.js +8 -10
- package/src/js/modules/Keybindings/defaults/actions.js +5 -71
- package/src/js/modules/Keybindings/defaults/bindings.js +0 -16
- package/src/js/modules/Layout/Layout.js +7 -9
- package/src/js/modules/Localize/Localize.js +7 -9
- package/src/js/modules/Menu/Menu.js +7 -9
- package/src/js/modules/MoveColumns/MoveColumns.js +6 -8
- package/src/js/modules/MoveRows/MoveRows.js +13 -45
- package/src/js/modules/MoveRows/defaults/receivers.js +30 -0
- package/src/js/modules/MoveRows/defaults/senders.js +5 -0
- package/src/js/modules/Mutator/Mutator.js +7 -9
- package/src/js/modules/Page/Page.js +7 -9
- package/src/js/modules/Persistence/Persistence.js +10 -12
- package/src/js/modules/Popup/Popup.js +4 -8
- package/src/js/modules/Print/Print.js +4 -6
- package/src/js/modules/ReactiveData/ReactiveData.js +4 -9
- package/src/js/modules/ResizeColumns/ResizeColumns.js +91 -53
- package/src/js/modules/ResizeRows/ResizeRows.js +41 -8
- package/src/js/modules/ResizeTable/ResizeTable.js +4 -6
- package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +15 -9
- package/src/js/modules/ResponsiveLayout/extensions/extensions.js +9 -0
- package/src/js/modules/SelectRange/Range.js +40 -21
- package/src/js/modules/SelectRange/RangeComponent.js +2 -4
- package/src/js/modules/SelectRange/SelectRange.js +88 -43
- package/src/js/modules/SelectRange/extensions/clipboard/pasteActions.js +45 -0
- package/src/js/modules/SelectRange/extensions/clipboard/pasteParsers.js +57 -0
- package/src/js/modules/SelectRange/extensions/export/columnLookups.js +11 -0
- package/src/js/modules/SelectRange/extensions/export/rowLookups.js +5 -0
- package/src/js/modules/SelectRange/extensions/extensions.js +21 -0
- package/src/js/modules/SelectRange/extensions/keybindings/actions.js +38 -0
- package/src/js/modules/SelectRange/extensions/keybindings/bindings.js +14 -0
- package/src/js/modules/SelectRow/SelectRow.js +12 -12
- package/src/js/modules/SelectRow/extensions/extensions.js +9 -0
- package/src/js/modules/Sort/Sort.js +16 -13
- package/src/js/modules/Spreadsheet/GridCalculator.js +64 -0
- package/src/js/modules/Spreadsheet/Sheet.js +243 -0
- package/src/js/modules/Spreadsheet/SheetComponent.js +59 -0
- package/src/js/modules/Spreadsheet/Spreadsheet.js +309 -0
- package/src/js/modules/Tooltip/Tooltip.js +6 -8
- package/src/js/modules/Validate/Validate.js +7 -9
- package/src/scss/tabulator.scss +86 -10
- package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +14 -0
- package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +18 -0
- package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +18 -0
- package/src/scss/themes/bulma/tabulator_bulma.scss +24 -0
- package/src/scss/themes/materialize/tabulator_materialize.scss +18 -0
- package/src/scss/themes/semanticui/tabulator_semanticui.scss +14 -0
- package/src/scss/themes/tabulator_midnight.scss +34 -21
- package/src/scss/themes/tabulator_modern.scss +23 -0
- package/src/scss/themes/tabulator_simple.scss +15 -0
- package/src/scss/themes/tabulator_site.scss +25 -0
- package/build/rollup.js +0 -6
- package/src/js/modules/Edit/defaults/editors/autocomplete.js +0 -12
- package/src/js/modules/Edit/defaults/editors/select.js +0 -10
- /package/src/js/modules/{Format/defaults → ResponsiveLayout/extensions}/formatters/responsiveCollapse.js +0 -0
- /package/src/js/modules/{Format/defaults → SelectRow/extensions}/formatters/rowSelection.js +0 -0
|
@@ -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.
|
|
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
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
}
|
|
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
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import CoreFeature from '../../core/CoreFeature.js';
|
|
2
2
|
import RangeComponent from "./RangeComponent";
|
|
3
3
|
|
|
4
|
-
class Range extends CoreFeature{
|
|
4
|
+
export default class Range extends CoreFeature{
|
|
5
5
|
constructor(table, rangeManager, start, end) {
|
|
6
6
|
super(table);
|
|
7
7
|
|
|
@@ -22,6 +22,13 @@ class Range extends CoreFeature{
|
|
|
22
22
|
this.table = table;
|
|
23
23
|
this.start = {row:0, col:0};
|
|
24
24
|
this.end = {row:0, col:0};
|
|
25
|
+
|
|
26
|
+
if(this.rangeManager.rowHeader){
|
|
27
|
+
this.left = 1;
|
|
28
|
+
this.right = 1;
|
|
29
|
+
this.start.col = 1;
|
|
30
|
+
this.end.col = 1;
|
|
31
|
+
}
|
|
25
32
|
|
|
26
33
|
this.initElement();
|
|
27
34
|
|
|
@@ -81,14 +88,14 @@ class Range extends CoreFeature{
|
|
|
81
88
|
|
|
82
89
|
if (element.type === "column") {
|
|
83
90
|
if(this.rangeManager.columnSelection){
|
|
84
|
-
this.setStart(0, element.getPosition() -
|
|
91
|
+
this.setStart(0, element.getPosition() - 1);
|
|
85
92
|
}
|
|
86
93
|
}else{
|
|
87
94
|
row = element.row.position - 1;
|
|
88
|
-
col = element.column.getPosition() -
|
|
95
|
+
col = element.column.getPosition() - 1;
|
|
89
96
|
|
|
90
97
|
if (element.column === this.rangeManager.rowHeader) {
|
|
91
|
-
this.setStart(row,
|
|
98
|
+
this.setStart(row, 1);
|
|
92
99
|
} else {
|
|
93
100
|
this.setStart(row, col);
|
|
94
101
|
}
|
|
@@ -102,18 +109,18 @@ class Range extends CoreFeature{
|
|
|
102
109
|
if (element.type === "column") {
|
|
103
110
|
if(this.rangeManager.columnSelection){
|
|
104
111
|
if (this.rangeManager.selecting === "column") {
|
|
105
|
-
this.setEnd(rowsCount - 1, element.getPosition() -
|
|
112
|
+
this.setEnd(rowsCount - 1, element.getPosition() - 1);
|
|
106
113
|
} else if (this.rangeManager.selecting === "cell") {
|
|
107
|
-
this.setEnd(0, element.getPosition() -
|
|
114
|
+
this.setEnd(0, element.getPosition() - 1);
|
|
108
115
|
}
|
|
109
116
|
}
|
|
110
117
|
}else{
|
|
111
118
|
row = element.row.position - 1;
|
|
112
|
-
col = element.column.getPosition() -
|
|
119
|
+
col = element.column.getPosition() - 1;
|
|
113
120
|
isRowHeader = element.column === this.rangeManager.rowHeader;
|
|
114
121
|
|
|
115
122
|
if (this.rangeManager.selecting === "row") {
|
|
116
|
-
this.setEnd(row, this._getTableColumns().length -
|
|
123
|
+
this.setEnd(row, this._getTableColumns().length - 1);
|
|
117
124
|
} else if (this.rangeManager.selecting !== "row" && isRowHeader) {
|
|
118
125
|
this.setEnd(row, 0);
|
|
119
126
|
} else if (this.rangeManager.selecting === "column") {
|
|
@@ -145,7 +152,7 @@ class Range extends CoreFeature{
|
|
|
145
152
|
}
|
|
146
153
|
|
|
147
154
|
_getTableRows() {
|
|
148
|
-
return this.table.rowManager.getDisplayRows();
|
|
155
|
+
return this.table.rowManager.getDisplayRows().filter(row=> row.type === "row");
|
|
149
156
|
}
|
|
150
157
|
|
|
151
158
|
///////////////////////////////////
|
|
@@ -157,7 +164,11 @@ class Range extends CoreFeature{
|
|
|
157
164
|
_vDomBottom = this.table.rowManager.renderer.vDomBottom,
|
|
158
165
|
_vDomLeft = this.table.columnManager.renderer.leftCol,
|
|
159
166
|
_vDomRight = this.table.columnManager.renderer.rightCol,
|
|
160
|
-
top, bottom, left, right, topLeftCell, bottomRightCell;
|
|
167
|
+
top, bottom, left, right, topLeftCell, bottomRightCell, topLeftCellEl, bottomRightCellEl, topLeftRowEl, bottomRightRowEl;
|
|
168
|
+
|
|
169
|
+
if(this.table.options.renderHorizontal === "virtual" && this.rangeManager.rowHeader) {
|
|
170
|
+
_vDomRight += 1;
|
|
171
|
+
}
|
|
161
172
|
|
|
162
173
|
if (_vDomTop == null) {
|
|
163
174
|
_vDomTop = 0;
|
|
@@ -183,23 +194,33 @@ class Range extends CoreFeature{
|
|
|
183
194
|
|
|
184
195
|
topLeftCell = this.rangeManager.getCell(top, left);
|
|
185
196
|
bottomRightCell = this.rangeManager.getCell(bottom, right);
|
|
197
|
+
topLeftCellEl = topLeftCell.getElement();
|
|
198
|
+
bottomRightCellEl = bottomRightCell.getElement();
|
|
199
|
+
topLeftRowEl = topLeftCell.row.getElement();
|
|
200
|
+
bottomRightRowEl = bottomRightCell.row.getElement();
|
|
186
201
|
|
|
187
202
|
this.element.classList.add("tabulator-range-active");
|
|
188
203
|
// this.element.classList.toggle("tabulator-range-active", this === this.rangeManager.activeRange);
|
|
204
|
+
|
|
205
|
+
if(this.table.rtl){
|
|
206
|
+
this.element.style.right = topLeftRowEl.offsetWidth - topLeftCellEl.offsetLeft - topLeftCellEl.offsetWidth + "px";
|
|
207
|
+
this.element.style.width = topLeftCellEl.offsetLeft + topLeftCellEl.offsetWidth - bottomRightCellEl.offsetLeft + "px";
|
|
208
|
+
}else{
|
|
209
|
+
this.element.style.left = topLeftRowEl.offsetLeft + topLeftCellEl.offsetLeft + "px";
|
|
210
|
+
this.element.style.width = bottomRightCellEl.offsetLeft + bottomRightCellEl.offsetWidth - topLeftCellEl.offsetLeft + "px";
|
|
211
|
+
}
|
|
189
212
|
|
|
190
|
-
this.element.style.
|
|
191
|
-
this.element.style.
|
|
192
|
-
this.element.style.width = bottomRightCell.getElement().offsetLeft + bottomRightCell.getElement().offsetWidth - topLeftCell.getElement().offsetLeft + "px";
|
|
193
|
-
this.element.style.height = bottomRightCell.row.getElement().offsetTop + bottomRightCell.row.getElement().offsetHeight - topLeftCell.row.getElement().offsetTop + "px";
|
|
213
|
+
this.element.style.top = topLeftRowEl.offsetTop + "px";
|
|
214
|
+
this.element.style.height = bottomRightRowEl.offsetTop + bottomRightRowEl.offsetHeight - topLeftRowEl.offsetTop + "px";
|
|
194
215
|
}
|
|
195
216
|
}
|
|
196
217
|
|
|
197
218
|
atTopLeft(cell) {
|
|
198
|
-
return cell.row.position - 1 === this.top && cell.column.getPosition() -
|
|
219
|
+
return cell.row.position - 1 === this.top && cell.column.getPosition() - 1 === this.left;
|
|
199
220
|
}
|
|
200
221
|
|
|
201
222
|
atBottomRight(cell) {
|
|
202
|
-
return cell.row.position - 1 === this.bottom && cell.column.getPosition() -
|
|
223
|
+
return cell.row.position - 1 === this.bottom && cell.column.getPosition() - 1 === this.right;
|
|
203
224
|
}
|
|
204
225
|
|
|
205
226
|
occupies(cell) {
|
|
@@ -211,7 +232,7 @@ class Range extends CoreFeature{
|
|
|
211
232
|
}
|
|
212
233
|
|
|
213
234
|
occupiesColumn(col) {
|
|
214
|
-
return this.left <= col.getPosition() -
|
|
235
|
+
return this.left <= col.getPosition() - 1 && col.getPosition() - 1 <= this.right;
|
|
215
236
|
}
|
|
216
237
|
|
|
217
238
|
overlaps(left, top, right, bottom) {
|
|
@@ -280,7 +301,7 @@ class Range extends CoreFeature{
|
|
|
280
301
|
}
|
|
281
302
|
|
|
282
303
|
getColumns() {
|
|
283
|
-
return this._getTableColumns().slice(this.left
|
|
304
|
+
return this._getTableColumns().slice(this.left, this.right + 1);
|
|
284
305
|
}
|
|
285
306
|
|
|
286
307
|
clearValues(){
|
|
@@ -342,6 +363,4 @@ class Range extends CoreFeature{
|
|
|
342
363
|
|
|
343
364
|
return !this.destroyed;
|
|
344
365
|
}
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
export default Range;
|
|
366
|
+
}
|