tabulator-tables 5.4.1 → 5.4.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.
- package/bower.json +1 -1
- package/dist/css/tabulator.css +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +1 -0
- 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 +323 -241
- 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 +323 -241
- 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 +2 -2
- package/src/js/core/ColumnManager.js +3 -5
- package/src/js/core/RowManager.js +49 -30
- package/src/js/core/Tabulator.js +7 -8
- package/src/js/core/column/Column.js +10 -0
- package/src/js/core/tools/Popup.js +1 -1
- package/src/js/modules/ColumnCalcs/ColumnCalcs.js +10 -0
- package/src/js/modules/Edit/List.js +1 -1
- package/src/js/modules/Edit/inputMask.js +1 -1
- package/src/js/modules/Export/Export.js +151 -145
- package/src/js/modules/Filter/Filter.js +11 -8
- package/src/js/modules/GroupRows/Group.js +23 -18
- package/src/js/modules/GroupRows/GroupRows.js +29 -9
- package/src/js/modules/Localize/Localize.js +0 -9
- package/src/js/modules/MoveColumns/MoveColumns.js +1 -1
- package/src/js/modules/Print/Print.js +15 -2
- package/src/js/modules/SelectRow/SelectRow.js +10 -2
- package/src/scss/tabulator.scss +1 -0
|
@@ -182,11 +182,6 @@ class Filter extends Module{
|
|
|
182
182
|
var def = column.definition;
|
|
183
183
|
|
|
184
184
|
if(def.headerFilter){
|
|
185
|
-
|
|
186
|
-
if(typeof def.headerFilterPlaceholder !== "undefined" && def.field){
|
|
187
|
-
this.module("localize").setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
185
|
this.initializeColumn(column);
|
|
191
186
|
}
|
|
192
187
|
}
|
|
@@ -298,13 +293,17 @@ class Filter extends Module{
|
|
|
298
293
|
var self = this,
|
|
299
294
|
success = column.modules.filter.success,
|
|
300
295
|
field = column.getField(),
|
|
301
|
-
filterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params;
|
|
296
|
+
filterElement, editor, editorElement, cellWrapper, typingTimer, searchTrigger, params, onRenderedCallback;
|
|
302
297
|
|
|
303
298
|
column.modules.filter.value = initialValue;
|
|
304
299
|
|
|
305
300
|
//handle aborted edit
|
|
306
301
|
function cancel(){}
|
|
307
302
|
|
|
303
|
+
function onRendered(callback){
|
|
304
|
+
onRenderedCallback = callback;
|
|
305
|
+
}
|
|
306
|
+
|
|
308
307
|
if(column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode){
|
|
309
308
|
column.contentElement.removeChild(column.modules.filter.headerElement.parentNode);
|
|
310
309
|
}
|
|
@@ -389,7 +388,7 @@ class Filter extends Module{
|
|
|
389
388
|
|
|
390
389
|
params = typeof params === "function" ? params.call(self.table, cellWrapper) : params;
|
|
391
390
|
|
|
392
|
-
editorElement = editor.call(this.table.modules.edit, cellWrapper,
|
|
391
|
+
editorElement = editor.call(this.table.modules.edit, cellWrapper, onRendered, success, cancel, params);
|
|
393
392
|
|
|
394
393
|
if(!editorElement){
|
|
395
394
|
console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false");
|
|
@@ -403,7 +402,7 @@ class Filter extends Module{
|
|
|
403
402
|
|
|
404
403
|
//set Placeholder Text
|
|
405
404
|
self.langBind("headerFilters|columns|" + column.definition.field, function(value){
|
|
406
|
-
editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : self.langText("headerFilters|default"));
|
|
405
|
+
editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : (column.definition.headerFilterPlaceholder || self.langText("headerFilters|default")));
|
|
407
406
|
});
|
|
408
407
|
|
|
409
408
|
//focus on element on click
|
|
@@ -485,6 +484,10 @@ class Filter extends Module{
|
|
|
485
484
|
if(!reinitialize){
|
|
486
485
|
self.headerFilterColumns.push(column);
|
|
487
486
|
}
|
|
487
|
+
|
|
488
|
+
if(onRenderedCallback){
|
|
489
|
+
onRenderedCallback();
|
|
490
|
+
}
|
|
488
491
|
}
|
|
489
492
|
}else{
|
|
490
493
|
console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title);
|
|
@@ -38,17 +38,19 @@ class Group{
|
|
|
38
38
|
this.createValueGroups();
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
wipe(){
|
|
42
|
-
if(
|
|
43
|
-
this.groupList.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
41
|
+
wipe(elementsOnly){
|
|
42
|
+
if(!elementsOnly){
|
|
43
|
+
if(this.groupList.length){
|
|
44
|
+
this.groupList.forEach(function(group){
|
|
45
|
+
group.wipe();
|
|
46
|
+
});
|
|
47
|
+
}else{
|
|
48
|
+
this.rows.forEach((row) => {
|
|
49
|
+
if(row.modules){
|
|
50
|
+
delete row.modules.group;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
}
|
|
52
54
|
}
|
|
53
55
|
|
|
54
56
|
this.element = false;
|
|
@@ -69,7 +71,7 @@ class Group{
|
|
|
69
71
|
this.arrowElement = document.createElement("div");
|
|
70
72
|
this.arrowElement.classList.add("tabulator-group-toggle");
|
|
71
73
|
this.arrowElement.appendChild(arrow);
|
|
72
|
-
|
|
74
|
+
|
|
73
75
|
//setup movable rows
|
|
74
76
|
if(this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")){
|
|
75
77
|
this.groupManager.table.modules.moveRow.initializeGroupHeader(this);
|
|
@@ -207,19 +209,22 @@ class Group{
|
|
|
207
209
|
this.parent.removeGroup(this);
|
|
208
210
|
}else{
|
|
209
211
|
this.groupManager.removeGroup(this);
|
|
210
|
-
}
|
|
212
|
+
}
|
|
211
213
|
|
|
212
214
|
this.groupManager.updateGroupRows(true);
|
|
215
|
+
|
|
213
216
|
}else{
|
|
214
217
|
|
|
215
218
|
if(el.parentNode){
|
|
216
219
|
el.parentNode.removeChild(el);
|
|
217
220
|
}
|
|
218
|
-
|
|
219
|
-
this.
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
this.groupManager.table.
|
|
221
|
+
|
|
222
|
+
if(!this.groupManager.blockRedraw){
|
|
223
|
+
this.generateGroupHeaderContents();
|
|
224
|
+
|
|
225
|
+
if(this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table"){
|
|
226
|
+
this.groupManager.table.modules.columnCalcs.recalcGroup(this);
|
|
227
|
+
}
|
|
223
228
|
}
|
|
224
229
|
|
|
225
230
|
}
|
|
@@ -15,6 +15,8 @@ class GroupRows extends Module{
|
|
|
15
15
|
this.groups = {}; //hold row groups
|
|
16
16
|
|
|
17
17
|
this.displayHandler = this.getRows.bind(this);
|
|
18
|
+
|
|
19
|
+
this.blockRedraw = false;
|
|
18
20
|
|
|
19
21
|
//register table options
|
|
20
22
|
this.registerTableOption("groupBy", false); //enable table grouping and set field to group by
|
|
@@ -43,6 +45,10 @@ class GroupRows extends Module{
|
|
|
43
45
|
|
|
44
46
|
//initialize group configuration
|
|
45
47
|
initialize(){
|
|
48
|
+
this.subscribe("table-destroy", this._blockRedrawing.bind(this));
|
|
49
|
+
this.subscribe("rows-wipe", this._blockRedrawing.bind(this));
|
|
50
|
+
this.subscribe("rows-wiped", this._restore_redrawing.bind(this));
|
|
51
|
+
|
|
46
52
|
if(this.table.options.groupBy){
|
|
47
53
|
if(this.table.options.groupUpdateOnCellEdit){
|
|
48
54
|
this.subscribe("cell-value-updated", this.cellUpdated.bind(this));
|
|
@@ -69,6 +75,14 @@ class GroupRows extends Module{
|
|
|
69
75
|
}
|
|
70
76
|
}
|
|
71
77
|
|
|
78
|
+
_blockRedrawing(){
|
|
79
|
+
this.blockRedraw = true;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
_restore_redrawing(){
|
|
83
|
+
this.blockRedraw = false;
|
|
84
|
+
}
|
|
85
|
+
|
|
72
86
|
configureGroupSetup(){
|
|
73
87
|
if(this.table.options.groupBy){
|
|
74
88
|
var groupBy = this.table.options.groupBy,
|
|
@@ -92,7 +106,7 @@ class GroupRows extends Module{
|
|
|
92
106
|
|
|
93
107
|
this.groupIDLookups = [];
|
|
94
108
|
|
|
95
|
-
if(
|
|
109
|
+
if(groupBy){
|
|
96
110
|
if(this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both"){
|
|
97
111
|
this.table.modules.columnCalcs.removeCalcs();
|
|
98
112
|
}
|
|
@@ -233,6 +247,10 @@ class GroupRows extends Module{
|
|
|
233
247
|
}
|
|
234
248
|
|
|
235
249
|
this.configureGroupSetup();
|
|
250
|
+
|
|
251
|
+
if(!groups && this.table.modExists("columnCalcs") && this.table.options.columnCalcs === true){
|
|
252
|
+
this.table.modules.columnCalcs.reinitializeCalcs();
|
|
253
|
+
}
|
|
236
254
|
|
|
237
255
|
this.refreshData();
|
|
238
256
|
|
|
@@ -479,7 +497,7 @@ class GroupRows extends Module{
|
|
|
479
497
|
}
|
|
480
498
|
|
|
481
499
|
Object.values(oldGroups).forEach((group) => {
|
|
482
|
-
group.wipe();
|
|
500
|
+
group.wipe(true);
|
|
483
501
|
});
|
|
484
502
|
}
|
|
485
503
|
|
|
@@ -551,13 +569,15 @@ class GroupRows extends Module{
|
|
|
551
569
|
|
|
552
570
|
updateGroupRows(force){
|
|
553
571
|
var output = [];
|
|
554
|
-
|
|
555
|
-
this.
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
572
|
+
|
|
573
|
+
if(!this.blockRedraw){
|
|
574
|
+
this.groupList.forEach((group) => {
|
|
575
|
+
output = output.concat(group.getHeadersAndRows());
|
|
576
|
+
});
|
|
577
|
+
|
|
578
|
+
if(force){
|
|
579
|
+
this.refreshData(true);
|
|
580
|
+
}
|
|
561
581
|
}
|
|
562
582
|
|
|
563
583
|
return output;
|
|
@@ -41,15 +41,6 @@ class Localize extends Module{
|
|
|
41
41
|
this.langList.default.headerFilters.default = placeholder;
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
//set header filter placeholder by column
|
|
45
|
-
setHeaderFilterColumnPlaceholder(column, placeholder){
|
|
46
|
-
this.langList.default.headerFilters.columns[column] = placeholder;
|
|
47
|
-
|
|
48
|
-
if(this.lang && !this.lang.headerFilters.columns[column]){
|
|
49
|
-
this.lang.headerFilters.columns[column] = placeholder;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
44
|
//setup a lang description object
|
|
54
45
|
installLang(locale, lang){
|
|
55
46
|
if(this.langList[locale]){
|
|
@@ -50,7 +50,7 @@ class MoveColumns extends Module{
|
|
|
50
50
|
|
|
51
51
|
config.mousemove = function(e){
|
|
52
52
|
if(column.parent === self.moving.parent){
|
|
53
|
-
if((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.
|
|
53
|
+
if((((self.touchMove ? e.touches[0].pageX : e.pageX) - Helpers.elOffset(colEl).left) + self.table.columnManager.contentsElement.scrollLeft) > (column.getWidth() / 2)){
|
|
54
54
|
if(self.toCol !== column || !self.toColAfter){
|
|
55
55
|
colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);
|
|
56
56
|
self.moveColumn(column, true);
|
|
@@ -7,6 +7,8 @@ class Print extends Module{
|
|
|
7
7
|
|
|
8
8
|
this.element = false;
|
|
9
9
|
this.manualBlock = false;
|
|
10
|
+
this.beforeprintEventHandler = null;
|
|
11
|
+
this.afterprintEventHandler = null;
|
|
10
12
|
|
|
11
13
|
this.registerTableOption("printAsHtml", false); //enable print as html
|
|
12
14
|
this.registerTableOption("printFormatter", false); //printing page formatter
|
|
@@ -22,13 +24,24 @@ class Print extends Module{
|
|
|
22
24
|
|
|
23
25
|
initialize(){
|
|
24
26
|
if(this.table.options.printAsHtml){
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
this.beforeprintEventHandler = this.replaceTable.bind(this);
|
|
28
|
+
this.afterprintEventHandler = this.cleanup.bind(this);
|
|
29
|
+
|
|
30
|
+
window.addEventListener("beforeprint", this.beforeprintEventHandler );
|
|
31
|
+
window.addEventListener("afterprint", this.afterprintEventHandler);
|
|
32
|
+
this.subscribe("table-destroy", this.destroy.bind(this));
|
|
27
33
|
}
|
|
28
34
|
|
|
29
35
|
this.registerTableFunction("print", this.printFullscreen.bind(this));
|
|
30
36
|
}
|
|
31
37
|
|
|
38
|
+
destroy(){
|
|
39
|
+
if(this.table.options.printAsHtml){
|
|
40
|
+
window.removeEventListener( "beforeprint", this.beforeprintEventHandler );
|
|
41
|
+
window.removeEventListener( "afterprint", this.afterprintEventHandler );
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
32
45
|
///////////////////////////////////
|
|
33
46
|
///////// Table Functions /////////
|
|
34
47
|
///////////////////////////////////
|
|
@@ -79,7 +79,7 @@ class SelectRow extends Module{
|
|
|
79
79
|
row.modules.select = {selected:false};
|
|
80
80
|
|
|
81
81
|
//set row selection class
|
|
82
|
-
if(self.
|
|
82
|
+
if(self.checkRowSelectability(row)){
|
|
83
83
|
element.classList.add("tabulator-selectable");
|
|
84
84
|
element.classList.remove("tabulator-unselectable");
|
|
85
85
|
|
|
@@ -190,10 +190,18 @@ class SelectRow extends Module{
|
|
|
190
190
|
this.lastClickedRow = row;
|
|
191
191
|
}
|
|
192
192
|
}
|
|
193
|
+
|
|
194
|
+
checkRowSelectability(row){
|
|
195
|
+
if(row.type === "row"){
|
|
196
|
+
return this.table.options.selectableCheck.call(this.table, row.getComponent());
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
193
201
|
|
|
194
202
|
//toggle row selection
|
|
195
203
|
toggleRow(row){
|
|
196
|
-
if(this.
|
|
204
|
+
if(this.checkRowSelectability(row)){
|
|
197
205
|
if(row.modules.select && row.modules.select.selected){
|
|
198
206
|
this._deselectRow(row);
|
|
199
207
|
}else{
|
package/src/scss/tabulator.scss
CHANGED