tabulator-tables 5.0.7 → 5.1.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/.editorconfig +6 -0
- package/LICENSE +1 -1
- package/bower.json +1 -1
- package/build/rollup.js +1 -1
- package/dist/css/tabulator.css +15 -2
- 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 +15 -2
- 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 +15 -2
- 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_bulma.css +15 -2
- 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 +22 -6
- 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 +19 -2
- 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 +15 -2
- 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 +15 -2
- 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 +15 -2
- 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 +19 -2
- 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 +1121 -533
- 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 +1566 -991
- 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 +1 -1
- package/src/js/core/ColumnManager.js +4 -2
- package/src/js/core/CoreFeature.js +1 -5
- package/src/js/core/RowManager.js +15 -9
- package/src/js/core/Tabulator.js +14 -59
- package/src/js/core/cell/Cell.js +5 -1
- package/src/js/core/column/Column.js +21 -6
- package/src/js/core/column/ColumnComponent.js +4 -0
- package/src/js/core/column/defaults/options.js +1 -0
- package/src/js/core/defaults/options.js +3 -3
- package/src/js/core/modules/optional.js +1 -0
- package/src/js/core/rendering/Renderer.js +3 -2
- package/src/js/core/rendering/renderers/BasicVertical.js +2 -1
- package/src/js/core/rendering/renderers/VirtualDomHorizontal.js +165 -151
- package/src/js/core/rendering/renderers/VirtualDomVertical.js +1 -1
- package/src/js/core/row/Row.js +2 -2
- package/src/js/core/tools/{ComponentFuctionBinder.js → ComponentFunctionBinder.js} +1 -1
- package/src/js/core/tools/DataLoader.js +6 -6
- package/src/js/core/tools/InteractionMonitor.js +149 -49
- package/src/js/core/tools/OptionsList.js +2 -2
- package/src/js/modules/Ajax/Ajax.js +62 -82
- package/src/js/modules/ColumnCalcs/ColumnCalcs.js +15 -2
- package/src/js/modules/DataTree/DataTree.js +23 -9
- package/src/js/modules/Download/defaults/downloaders/json.js +1 -1
- package/src/js/modules/Download/defaults/downloaders/jsonLines.js +32 -0
- package/src/js/modules/Download/defaults/downloaders/pdf.js +0 -2
- package/src/js/modules/Download/defaults/downloaders/xlsx.js +3 -2
- package/src/js/modules/Download/defaults/downloaders.js +2 -0
- package/src/js/modules/Edit/Edit.js +27 -39
- package/src/js/modules/Edit/defaults/editors/progress.js +2 -2
- package/src/js/modules/Export/Export.js +1 -1
- package/src/js/modules/Filter/Filter.js +2 -2
- package/src/js/modules/Format/defaults/formatters/datetime.js +2 -2
- package/src/js/modules/Format/defaults/formatters/datetimediff.js +2 -1
- package/src/js/modules/FrozenColumns/FrozenColumns.js +1 -1
- package/src/js/modules/FrozenRows/FrozenRows.js +9 -0
- package/src/js/modules/GroupRows/Group.js +18 -67
- package/src/js/modules/GroupRows/GroupRows.js +8 -3
- package/src/js/modules/HtmlTableImport/HtmlTableImport.js +4 -7
- package/src/js/modules/Import/Import.js +197 -0
- package/src/js/modules/Import/defaults/importers/csv.js +63 -0
- package/src/js/modules/Import/defaults/importers/json.js +8 -0
- package/src/js/modules/Import/defaults/importers.js +7 -0
- package/src/js/modules/Interaction/Interaction.js +5 -0
- package/src/js/modules/Keybindings/Keybindings.js +9 -14
- package/src/js/modules/Keybindings/defaults/bindings.js +3 -3
- package/src/js/modules/Localize/defaults/langs.js +6 -0
- package/src/js/modules/Menu/Menu.js +200 -155
- package/src/js/modules/MoveColumns/MoveColumns.js +58 -57
- package/src/js/modules/MoveRows/MoveRows.js +4 -0
- package/src/js/modules/Page/Page.js +279 -183
- package/src/js/modules/Page/defaults/pageCounters/pages.js +33 -0
- package/src/js/modules/Page/defaults/pageCounters/rows.js +32 -0
- package/src/js/modules/Page/defaults/pageCounters.js +8 -0
- package/src/js/modules/ResizeRows/ResizeRows.js +1 -1
- package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +3 -5
- package/src/js/modules/SelectRow/SelectRow.js +4 -8
- package/src/js/modules/Sort/Sort.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/datetime.js +3 -2
- package/src/js/modules/Validate/Validate.js +7 -5
- package/src/scss/tabulator.scss +20 -2
- package/src/scss/themes/materialize/tabulator_materialize.scss +5 -4
- package/src/scss/themes/tabulator_midnight.scss +4 -0
- package/src/scss/themes/tabulator_site.scss +4 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export default function (list, options, setFileContents) {
|
|
2
|
+
const fileContents = [];
|
|
3
|
+
|
|
4
|
+
list.forEach((row) => {
|
|
5
|
+
const item = {};
|
|
6
|
+
|
|
7
|
+
switch (row.type) {
|
|
8
|
+
case "header":
|
|
9
|
+
break;
|
|
10
|
+
|
|
11
|
+
case "group":
|
|
12
|
+
console.warn("Download Warning - JSON downloader cannot process row groups");
|
|
13
|
+
break;
|
|
14
|
+
|
|
15
|
+
case "calc":
|
|
16
|
+
console.warn("Download Warning - JSON downloader cannot process column calculations");
|
|
17
|
+
break;
|
|
18
|
+
|
|
19
|
+
case "row":
|
|
20
|
+
row.columns.forEach((col) => {
|
|
21
|
+
if (col) {
|
|
22
|
+
item[col.component.getTitleDownload() || col.component.getField()] = col.value;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
fileContents.push(JSON.stringify(item));
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
setFileContents(fileContents.join("\n"), "application/x-ndjson");
|
|
32
|
+
};
|
|
@@ -26,7 +26,9 @@ export default function(list, options, setFileContents){
|
|
|
26
26
|
rowData.push(!(col.value instanceof Date) && typeof col.value === "object" ? JSON.stringify(col.value) : col.value);
|
|
27
27
|
|
|
28
28
|
if(col.width > 1 || col.height > -1){
|
|
29
|
-
|
|
29
|
+
if(col.height > 1 || col.width > 1){
|
|
30
|
+
merges.push({s:{r:i,c:j},e:{r:i + col.height - 1,c:j + col.width - 1}});
|
|
31
|
+
}
|
|
30
32
|
}
|
|
31
33
|
}else{
|
|
32
34
|
rowData.push("");
|
|
@@ -36,7 +38,6 @@ export default function(list, options, setFileContents){
|
|
|
36
38
|
rows.push(rowData);
|
|
37
39
|
});
|
|
38
40
|
|
|
39
|
-
|
|
40
41
|
//convert rows to worksheet
|
|
41
42
|
XLSX.utils.sheet_add_aoa(worksheet, rows);
|
|
42
43
|
|
|
@@ -3,10 +3,12 @@ import json from './downloaders/json.js';
|
|
|
3
3
|
import pdf from './downloaders/pdf.js';
|
|
4
4
|
import xlsx from './downloaders/xlsx.js';
|
|
5
5
|
import html from './downloaders/html.js';
|
|
6
|
+
import jsonLines from './downloaders/jsonLines.js';
|
|
6
7
|
|
|
7
8
|
export default {
|
|
8
9
|
csv:csv,
|
|
9
10
|
json:json,
|
|
11
|
+
jsonLines:jsonLines,
|
|
10
12
|
pdf:pdf,
|
|
11
13
|
xlsx:xlsx,
|
|
12
14
|
html:html,
|
|
@@ -54,12 +54,12 @@ class Edit extends Module{
|
|
|
54
54
|
this.subscribe("row-deleting", this.rowDeleteCheck.bind(this));
|
|
55
55
|
this.subscribe("data-refeshing", this.cancelEdit.bind(this));
|
|
56
56
|
|
|
57
|
-
this.subscribe("keybinding-nav-prev", this.navigatePrev.bind(this));
|
|
57
|
+
this.subscribe("keybinding-nav-prev", this.navigatePrev.bind(this, undefined));
|
|
58
58
|
this.subscribe("keybinding-nav-next", this.keybindingNavigateNext.bind(this));
|
|
59
|
-
this.subscribe("keybinding-nav-left", this.navigateLeft.bind(this));
|
|
60
|
-
this.subscribe("keybinding-nav-right", this.navigateRight.bind(this));
|
|
61
|
-
this.subscribe("keybinding-nav-up", this.navigateUp.bind(this));
|
|
62
|
-
this.subscribe("keybinding-nav-down", this.navigateDown.bind(this));
|
|
59
|
+
this.subscribe("keybinding-nav-left", this.navigateLeft.bind(this, undefined));
|
|
60
|
+
this.subscribe("keybinding-nav-right", this.navigateRight.bind(this, undefined));
|
|
61
|
+
this.subscribe("keybinding-nav-up", this.navigateUp.bind(this, undefined));
|
|
62
|
+
this.subscribe("keybinding-nav-down", this.navigateDown.bind(this, undefined));
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
|
|
@@ -72,9 +72,9 @@ class Edit extends Module{
|
|
|
72
72
|
newRow = this.options("tabEndNewRow");
|
|
73
73
|
|
|
74
74
|
if(cell){
|
|
75
|
-
if(!this.navigateNext(e)){
|
|
75
|
+
if(!this.navigateNext(cell, e)){
|
|
76
76
|
if(newRow){
|
|
77
|
-
cell.getElement().firstChild.blur();
|
|
77
|
+
// cell.getElement().firstChild.blur();
|
|
78
78
|
|
|
79
79
|
if(newRow === true){
|
|
80
80
|
newRow = this.table.addRow({})
|
|
@@ -88,7 +88,7 @@ class Edit extends Module{
|
|
|
88
88
|
|
|
89
89
|
newRow.then(() => {
|
|
90
90
|
setTimeout(() => {
|
|
91
|
-
|
|
91
|
+
cell.getComponent().navigateNext();
|
|
92
92
|
})
|
|
93
93
|
});
|
|
94
94
|
}
|
|
@@ -118,7 +118,7 @@ class Edit extends Module{
|
|
|
118
118
|
///////////////////////////////////
|
|
119
119
|
clearCellEdited(cells){
|
|
120
120
|
if(!cells){
|
|
121
|
-
cells = this.modules.edit.getEditedCells();
|
|
121
|
+
cells = this.table.modules.edit.getEditedCells();
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
if(!Array.isArray(cells)){
|
|
@@ -126,13 +126,12 @@ class Edit extends Module{
|
|
|
126
126
|
}
|
|
127
127
|
|
|
128
128
|
cells.forEach((cell) => {
|
|
129
|
-
this.modules.edit.clearEdited(cell._getSelf());
|
|
129
|
+
this.table.modules.edit.clearEdited(cell._getSelf());
|
|
130
130
|
});
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
navigatePrev(e){
|
|
134
|
-
var
|
|
135
|
-
nextCell, prevRow;
|
|
133
|
+
navigatePrev(cell = this.currentCell, e){
|
|
134
|
+
var nextCell, prevRow;
|
|
136
135
|
|
|
137
136
|
if(cell){
|
|
138
137
|
|
|
@@ -161,9 +160,8 @@ class Edit extends Module{
|
|
|
161
160
|
return false;
|
|
162
161
|
}
|
|
163
162
|
|
|
164
|
-
navigateNext(e){
|
|
165
|
-
var
|
|
166
|
-
nextCell, nextRow;
|
|
163
|
+
navigateNext(cell = this.currentCell, e){
|
|
164
|
+
var nextCell, nextRow;
|
|
167
165
|
|
|
168
166
|
if(cell){
|
|
169
167
|
|
|
@@ -192,9 +190,8 @@ class Edit extends Module{
|
|
|
192
190
|
return false;
|
|
193
191
|
}
|
|
194
192
|
|
|
195
|
-
navigateLeft(e){
|
|
196
|
-
var
|
|
197
|
-
index, nextCell;
|
|
193
|
+
navigateLeft(cell = this.currentCell, e){
|
|
194
|
+
var index, nextCell;
|
|
198
195
|
|
|
199
196
|
if(cell){
|
|
200
197
|
|
|
@@ -214,9 +211,8 @@ class Edit extends Module{
|
|
|
214
211
|
return false;
|
|
215
212
|
}
|
|
216
213
|
|
|
217
|
-
navigateRight(e){
|
|
218
|
-
var
|
|
219
|
-
index, nextCell;
|
|
214
|
+
navigateRight(cell = this.currentCell, e){
|
|
215
|
+
var index, nextCell;
|
|
220
216
|
|
|
221
217
|
if(cell){
|
|
222
218
|
|
|
@@ -236,9 +232,8 @@ class Edit extends Module{
|
|
|
236
232
|
return false;
|
|
237
233
|
}
|
|
238
234
|
|
|
239
|
-
navigateUp(e){
|
|
240
|
-
var
|
|
241
|
-
index, nextRow;
|
|
235
|
+
navigateUp(cell = this.currentCell, e){
|
|
236
|
+
var index, nextRow;
|
|
242
237
|
|
|
243
238
|
if(cell){
|
|
244
239
|
|
|
@@ -258,9 +253,8 @@ class Edit extends Module{
|
|
|
258
253
|
return false;
|
|
259
254
|
}
|
|
260
255
|
|
|
261
|
-
navigateDown(e){
|
|
262
|
-
var
|
|
263
|
-
index, nextRow;
|
|
256
|
+
navigateDown(cell = this.currentCell, e){
|
|
257
|
+
var index, nextRow;
|
|
264
258
|
|
|
265
259
|
if(cell){
|
|
266
260
|
|
|
@@ -411,14 +405,15 @@ class Edit extends Module{
|
|
|
411
405
|
cellEl = cell.getElement();
|
|
412
406
|
|
|
413
407
|
if(cancel){
|
|
414
|
-
if(cell.validate){
|
|
415
|
-
|
|
408
|
+
if(cell.column.modules.validate && this.table.modExists("validate")){
|
|
409
|
+
this.table.modules.validate.cellValidate(cell);
|
|
416
410
|
}
|
|
417
411
|
}else{
|
|
418
412
|
cellEl.classList.remove("tabulator-validation-fail");
|
|
419
413
|
}
|
|
420
414
|
|
|
421
415
|
cellEl.classList.remove("tabulator-editing");
|
|
416
|
+
|
|
422
417
|
while(cellEl.firstChild) cellEl.removeChild(cellEl.firstChild);
|
|
423
418
|
|
|
424
419
|
cell.row.getElement().classList.remove("tabulator-row-editing");
|
|
@@ -442,6 +437,7 @@ class Edit extends Module{
|
|
|
442
437
|
cell.column.definition.cellEditCancelled.call(this.table, component);
|
|
443
438
|
}
|
|
444
439
|
|
|
440
|
+
this.dispatch("edit-cancelled", cell);
|
|
445
441
|
this.dispatchExternal("cellEditCancelled", component);
|
|
446
442
|
}
|
|
447
443
|
}
|
|
@@ -572,10 +568,6 @@ class Edit extends Module{
|
|
|
572
568
|
|
|
573
569
|
cell.setValue(value, true);
|
|
574
570
|
|
|
575
|
-
if(self.table.options.dataTree && self.table.modExists("dataTree")){
|
|
576
|
-
self.table.modules.dataTree.checkForRestyle(cell);
|
|
577
|
-
}
|
|
578
|
-
|
|
579
571
|
if(valid !== true){
|
|
580
572
|
element.classList.add("tabulator-validation-fail");
|
|
581
573
|
self.table.externalEvents.dispatch("validationFailed", cell.getComponent(), value, valid);
|
|
@@ -600,10 +592,6 @@ class Edit extends Module{
|
|
|
600
592
|
function cancel(){
|
|
601
593
|
if(self.currentCell === cell){
|
|
602
594
|
self.cancelEdit();
|
|
603
|
-
|
|
604
|
-
if(self.table.options.dataTree && self.table.modExists("dataTree")){
|
|
605
|
-
self.table.modules.dataTree.checkForRestyle(cell);
|
|
606
|
-
}
|
|
607
595
|
}else{
|
|
608
596
|
// console.warn("Edit Success Error - cannot call cancel on a cell that is no longer being edited");
|
|
609
597
|
}
|
|
@@ -735,4 +723,4 @@ Edit.moduleName = "edit";
|
|
|
735
723
|
Edit.editors = defaultEditors;
|
|
736
724
|
|
|
737
725
|
|
|
738
|
-
export default Edit;
|
|
726
|
+
export default Edit;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
//draggable progress bar
|
|
2
2
|
export default function(cell, onRendered, success, cancel, editorParams){
|
|
3
3
|
var element = cell.getElement(),
|
|
4
|
-
max = typeof editorParams.max === "undefined" ? ( element.getElementsByTagName("div")[0]
|
|
5
|
-
min = typeof editorParams.min === "undefined" ? ( element.getElementsByTagName("div")[0]
|
|
4
|
+
max = typeof editorParams.max === "undefined" ? ((element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("max")) || 100) : editorParams.max,
|
|
5
|
+
min = typeof editorParams.min === "undefined" ? ((element.getElementsByTagName("div")[0] && element.getElementsByTagName("div")[0].getAttribute("min")) || 0) : editorParams.min,
|
|
6
6
|
percent = (max - min) / 100,
|
|
7
7
|
value = cell.getValue() || 0,
|
|
8
8
|
handle = document.createElement("div"),
|
|
@@ -382,7 +382,7 @@ class Filter extends Module{
|
|
|
382
382
|
|
|
383
383
|
params = column.definition.headerFilterParams || {};
|
|
384
384
|
|
|
385
|
-
params = typeof params === "function" ? params.call(self.table) : params;
|
|
385
|
+
params = typeof params === "function" ? params.call(self.table, cellWrapper) : params;
|
|
386
386
|
|
|
387
387
|
editorElement = editor.call(this.table.modules.edit, cellWrapper, function(){}, success, cancel, params);
|
|
388
388
|
|
|
@@ -553,7 +553,7 @@ class Filter extends Module{
|
|
|
553
553
|
if(this.table.options.filterMode === "remote"){
|
|
554
554
|
this.reloadData();
|
|
555
555
|
}else{
|
|
556
|
-
this.refreshData();
|
|
556
|
+
this.refreshData(true);
|
|
557
557
|
}
|
|
558
558
|
}
|
|
559
559
|
|
|
@@ -6,7 +6,7 @@ export default function(cell, formatterParams, onRendered){
|
|
|
6
6
|
var value = cell.getValue();
|
|
7
7
|
|
|
8
8
|
if(typeof DT != "undefined"){
|
|
9
|
-
var newDatetime =
|
|
9
|
+
var newDatetime = inputFormat === "iso" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat);
|
|
10
10
|
|
|
11
11
|
if(newDatetime.isValid){
|
|
12
12
|
|
|
@@ -17,7 +17,7 @@ export default function(cell, formatterParams, onRendered){
|
|
|
17
17
|
return newDatetime.toFormat(outputFormat);
|
|
18
18
|
}else{
|
|
19
19
|
|
|
20
|
-
if(invalid === true){
|
|
20
|
+
if(invalid === true || !value){
|
|
21
21
|
return value;
|
|
22
22
|
}else if(typeof invalid === "function"){
|
|
23
23
|
return invalid(value);
|
|
@@ -9,7 +9,8 @@ export default function (cell, formatterParams, onRendered) {
|
|
|
9
9
|
var value = cell.getValue();
|
|
10
10
|
|
|
11
11
|
if(typeof DT != "undefined"){
|
|
12
|
-
|
|
12
|
+
|
|
13
|
+
var newDatetime = inputFormat === "iso" ? DT.fromISO(String(value)) : DT.fromFormat(String(value), inputFormat);
|
|
13
14
|
|
|
14
15
|
if (newDatetime.isValid){
|
|
15
16
|
if(humanize){
|
|
@@ -35,7 +35,7 @@ class FrozenColumns extends Module{
|
|
|
35
35
|
this.subscribe("cell-layout", this.layoutCell.bind(this));
|
|
36
36
|
this.subscribe("column-init", this.initializeColumn.bind(this));
|
|
37
37
|
this.subscribe("column-width", this.layout.bind(this));
|
|
38
|
-
this.subscribe("row-layout-
|
|
38
|
+
this.subscribe("row-layout-after", this.layoutRow.bind(this));
|
|
39
39
|
this.subscribe("table-layout", this.layout.bind(this));
|
|
40
40
|
this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this));
|
|
41
41
|
this.subscribe("columns-loading", this.reset.bind(this));
|
|
@@ -23,6 +23,7 @@ class FrozenRows extends Module{
|
|
|
23
23
|
this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
|
|
24
24
|
|
|
25
25
|
this.subscribe("row-deleting", this.detachRow.bind(this));
|
|
26
|
+
this.subscribe("rows-visible", this.visibleRows.bind(this));
|
|
26
27
|
|
|
27
28
|
this.registerDisplayHandler(this.getRows.bind(this), 10);
|
|
28
29
|
}
|
|
@@ -36,6 +37,14 @@ class FrozenRows extends Module{
|
|
|
36
37
|
return !!this.rows.length;
|
|
37
38
|
}
|
|
38
39
|
|
|
40
|
+
visibleRows(viewable, rows){
|
|
41
|
+
this.rows.forEach((row) => {
|
|
42
|
+
rows.push(row);
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
return rows;
|
|
46
|
+
}
|
|
47
|
+
|
|
39
48
|
//filter frozen rows out of display data
|
|
40
49
|
getRows(rows){
|
|
41
50
|
var self = this,
|
|
@@ -18,6 +18,7 @@ class Group{
|
|
|
18
18
|
this.groups = [];
|
|
19
19
|
this.groupList = [];
|
|
20
20
|
this.generator = generator;
|
|
21
|
+
this.element = false;
|
|
21
22
|
this.elementContents = false;
|
|
22
23
|
this.height = 0;
|
|
23
24
|
this.outerHeight = 0;
|
|
@@ -43,10 +44,16 @@ class Group{
|
|
|
43
44
|
group.wipe();
|
|
44
45
|
});
|
|
45
46
|
}else{
|
|
46
|
-
this.
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
this.rows.forEach((row) => {
|
|
48
|
+
if(row.modules){
|
|
49
|
+
delete row.modules.group;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
49
52
|
}
|
|
53
|
+
|
|
54
|
+
this.element = false;
|
|
55
|
+
this.arrowElement = false;
|
|
56
|
+
this.elementContents = false;
|
|
50
57
|
}
|
|
51
58
|
|
|
52
59
|
createElements(){
|
|
@@ -79,67 +86,7 @@ class Group{
|
|
|
79
86
|
}
|
|
80
87
|
|
|
81
88
|
addBindings(){
|
|
82
|
-
var
|
|
83
|
-
|
|
84
|
-
if ((this.groupManager.table.options.groupContextMenu || this.groupManager.table.options.groupClickMenu) && this.groupManager.table.modExists("menu")){
|
|
85
|
-
this.groupManager.table.modules.menu.initializeGroup.call(this.groupManager.table.modules.menu, this);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
if (this.groupManager.table.options.groupTap){
|
|
89
|
-
tap = false;
|
|
90
|
-
|
|
91
|
-
this.element.addEventListener("touchstart", (e) => {
|
|
92
|
-
tap = true;
|
|
93
|
-
}, {passive: true});
|
|
94
|
-
|
|
95
|
-
this.element.addEventListener("touchend", (e) => {
|
|
96
|
-
if(tap){
|
|
97
|
-
this.groupManager.table.options.groupTap(e, this.getComponent());
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
tap = false;
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
if (this.groupManager.table.options.groupDblTap){
|
|
105
|
-
dblTap = null;
|
|
106
|
-
|
|
107
|
-
this.element.addEventListener("touchend", (e) => {
|
|
108
|
-
if(dblTap){
|
|
109
|
-
clearTimeout(dblTap);
|
|
110
|
-
dblTap = null;
|
|
111
|
-
|
|
112
|
-
this.groupManager.table.options.groupDblTap(e, this.getComponent());
|
|
113
|
-
}else{
|
|
114
|
-
|
|
115
|
-
dblTap = setTimeout(() => {
|
|
116
|
-
clearTimeout(dblTap);
|
|
117
|
-
dblTap = null;
|
|
118
|
-
}, 300);
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
if (this.groupManager.table.options.groupTapHold){
|
|
124
|
-
tapHold = null;
|
|
125
|
-
|
|
126
|
-
this.element.addEventListener("touchstart", (e) => {
|
|
127
|
-
clearTimeout(tapHold);
|
|
128
|
-
|
|
129
|
-
tapHold = setTimeout(() => {
|
|
130
|
-
clearTimeout(tapHold);
|
|
131
|
-
tapHold = null;
|
|
132
|
-
tap = false;
|
|
133
|
-
this.groupManager.table.options.groupTapHold(e, this.getComponent());
|
|
134
|
-
}, 1000);
|
|
135
|
-
|
|
136
|
-
}, {passive: true});
|
|
137
|
-
|
|
138
|
-
this.element.addEventListener("touchend", (e) => {
|
|
139
|
-
clearTimeout(tapHold);
|
|
140
|
-
tapHold = null;
|
|
141
|
-
});
|
|
142
|
-
}
|
|
89
|
+
var toggleElement;
|
|
143
90
|
|
|
144
91
|
if(this.groupManager.table.options.groupToggleElement){
|
|
145
92
|
toggleElement = this.groupManager.table.options.groupToggleElement == "arrow" ? this.arrowElement : this.element;
|
|
@@ -268,7 +215,7 @@ class Group{
|
|
|
268
215
|
}
|
|
269
216
|
|
|
270
217
|
this.generateGroupHeaderContents();
|
|
271
|
-
|
|
218
|
+
|
|
272
219
|
if(this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table"){
|
|
273
220
|
this.groupManager.table.modules.columnCalcs.recalcGroup(this);
|
|
274
221
|
}
|
|
@@ -448,7 +395,7 @@ class Group{
|
|
|
448
395
|
|
|
449
396
|
this.element.classList.add("tabulator-group-visible");
|
|
450
397
|
|
|
451
|
-
var prev = this.
|
|
398
|
+
var prev = this.generateElement();
|
|
452
399
|
|
|
453
400
|
if(this.groupList.length){
|
|
454
401
|
this.groupList.forEach((group) => {
|
|
@@ -566,7 +513,11 @@ class Group{
|
|
|
566
513
|
////////////// Standard Row Functions //////////////
|
|
567
514
|
|
|
568
515
|
getElement(){
|
|
569
|
-
this.
|
|
516
|
+
return this.elementContents ? this.element : this.generateElement();
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
generateElement(){
|
|
520
|
+
this.addBindings = false;
|
|
570
521
|
|
|
571
522
|
this._visSet();
|
|
572
523
|
|
|
@@ -47,13 +47,13 @@ class GroupRows extends Module{
|
|
|
47
47
|
initialize(){
|
|
48
48
|
if(this.table.options.groupBy){
|
|
49
49
|
|
|
50
|
-
this.configureGroupSetup();
|
|
51
|
-
|
|
52
50
|
if(this.table.options.groupUpdateOnCellEdit){
|
|
53
51
|
this.subscribe("cell-value-updated", this.cellUpdated.bind(this));
|
|
54
52
|
this.subscribe("row-data-changed", this.reassignRowToGroup.bind(this), 0);
|
|
55
53
|
}
|
|
56
54
|
|
|
55
|
+
this.subscribe("table-built", this.configureGroupSetup.bind(this));
|
|
56
|
+
|
|
57
57
|
this.subscribe("row-deleting", this.rowDeleting.bind(this));
|
|
58
58
|
this.subscribe("row-deleted", this.rowsUpdated.bind(this));
|
|
59
59
|
this.subscribe("scroll-horizontal", this.scrollHeaders.bind(this));
|
|
@@ -225,7 +225,12 @@ class GroupRows extends Module{
|
|
|
225
225
|
|
|
226
226
|
setGroupBy(groups){
|
|
227
227
|
this.table.options.groupBy = groups;
|
|
228
|
-
this.
|
|
228
|
+
if(!this.initialized){
|
|
229
|
+
this.initialize();
|
|
230
|
+
}else{
|
|
231
|
+
this.configureGroupSetup();
|
|
232
|
+
}
|
|
233
|
+
|
|
229
234
|
this.refreshData();
|
|
230
235
|
|
|
231
236
|
this.trackChanges();
|
|
@@ -35,7 +35,7 @@ class HtmlTableImport extends Module{
|
|
|
35
35
|
|
|
36
36
|
rows = rows ? rows.getElementsByTagName("tr") : [];
|
|
37
37
|
|
|
38
|
-
//check for
|
|
38
|
+
//check for Tabulator inline options
|
|
39
39
|
this._extractOptions(element, options);
|
|
40
40
|
|
|
41
41
|
if(headers.length){
|
|
@@ -74,7 +74,7 @@ class HtmlTableImport extends Module{
|
|
|
74
74
|
//extract tabulator attribute options
|
|
75
75
|
_extractOptions(element, options, defaultOptions){
|
|
76
76
|
var attributes = element.attributes;
|
|
77
|
-
var optionsArr = defaultOptions ? Object.
|
|
77
|
+
var optionsArr = defaultOptions ? Object.keys(defaultOptions) : Object.keys(options);
|
|
78
78
|
var optionsList = {};
|
|
79
79
|
|
|
80
80
|
optionsArr.forEach((item) => {
|
|
@@ -141,11 +141,8 @@ class HtmlTableImport extends Module{
|
|
|
141
141
|
col.width = width;
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
//check for
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
// //check for tablator inline options
|
|
148
|
-
this._extractOptions(header, col, Column.prototype.defaultOptionList);
|
|
144
|
+
//check for Tabulator inline options
|
|
145
|
+
this._extractOptions(header, col, this.table.columnManager.optionsList.registeredDefaults);
|
|
149
146
|
|
|
150
147
|
this.fieldIndex[index] = col.field;
|
|
151
148
|
|