tabulator-tables 5.1.0 → 5.1.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/build/rollup.js +2 -1
- package/dist/css/tabulator.css +15 -8
- 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 -8
- 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 -8
- 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 -8
- 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 +15 -8
- 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 +15 -8
- 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 -8
- 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 -8
- 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 -8
- 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 +15 -8
- 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 +301 -181
- 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 +820 -721
- 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 +5 -2
- package/src/js/core/FooterManager.js +15 -5
- package/src/js/core/RowManager.js +311 -284
- package/src/js/core/Tabulator.js +12 -29
- package/src/js/core/column/ColumnComponent.js +2 -0
- package/src/js/core/tools/InteractionMonitor.js +31 -23
- package/src/js/core/tools/ModuleBinder.js +15 -3
- package/src/js/modules/ColumnCalcs/ColumnCalcs.js +11 -6
- package/src/js/modules/DataTree/DataTree.js +0 -1
- package/src/js/modules/Edit/Edit.js +2 -2
- package/src/js/modules/Export/Export.js +2 -1
- package/src/js/modules/Filter/Filter.js +1 -2
- package/src/js/modules/Format/defaults/formatters/rowSelection.js +18 -1
- package/src/js/modules/Format/defaults/formatters/rownum.js +1 -1
- package/src/js/modules/FrozenColumns/FrozenColumns.js +17 -3
- package/src/js/modules/GroupRows/Group.js +144 -142
- package/src/js/modules/GroupRows/GroupComponent.js +1 -1
- package/src/js/modules/Import/Import.js +1 -3
- package/src/js/modules/Layout/Layout.js +1 -0
- package/src/js/modules/Page/Page.js +9 -4
- package/src/js/modules/Persistence/Persistence.js +6 -4
- package/src/js/modules/Persistence/defaults/readers.js +3 -3
- package/src/js/modules/ResizeColumns/ResizeColumns.js +61 -51
- package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +5 -5
- package/src/js/modules/SelectRow/SelectRow.js +130 -128
- package/src/scss/tabulator.scss +17 -12
|
@@ -123,9 +123,7 @@ class Import extends Module{
|
|
|
123
123
|
|
|
124
124
|
structureData(parsedData){
|
|
125
125
|
var data = [];
|
|
126
|
-
|
|
127
|
-
console.log("structure", parsedData)
|
|
128
|
-
|
|
126
|
+
|
|
129
127
|
if(Array.isArray(parsedData) && parsedData.length && Array.isArray(parsedData[0])){
|
|
130
128
|
if(this.table.options.autoColumns){
|
|
131
129
|
data = this.structureArrayToObject(parsedData);
|
|
@@ -62,10 +62,13 @@ class Page extends Module{
|
|
|
62
62
|
initialize(){
|
|
63
63
|
if(this.table.options.pagination){
|
|
64
64
|
this.subscribe("row-deleted", this.rowsUpdated.bind(this));
|
|
65
|
-
this.subscribe("row-adding-position", this.rowAddingPosition.bind(this));
|
|
66
65
|
this.subscribe("row-added", this.rowsUpdated.bind(this));
|
|
67
66
|
this.subscribe("data-processed", this.initialLoadComplete.bind(this));
|
|
68
67
|
this.subscribe("table-built", this.calculatePageSizes.bind(this));
|
|
68
|
+
|
|
69
|
+
if(this.table.options.paginationAddRow == "page"){
|
|
70
|
+
this.subscribe("row-adding-position", this.rowAddingPosition.bind(this));
|
|
71
|
+
}
|
|
69
72
|
|
|
70
73
|
if(this.table.options.paginationMode === "remote"){
|
|
71
74
|
this.subscribe("data-params", this.remotePageParams.bind(this));
|
|
@@ -828,9 +831,11 @@ class Page extends Module{
|
|
|
828
831
|
margin = this.table.options.progressiveLoadScrollMargin || (this.table.rowManager.element.clientHeight * 2);
|
|
829
832
|
|
|
830
833
|
if(this.table.rowManager.element.scrollHeight <= (this.table.rowManager.element.clientHeight + margin)){
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
+
if(this.page < this.max){
|
|
835
|
+
setTimeout(() => {
|
|
836
|
+
this.nextPage();
|
|
837
|
+
});
|
|
838
|
+
}
|
|
834
839
|
}
|
|
835
840
|
break;
|
|
836
841
|
}
|
|
@@ -131,11 +131,11 @@ class Persistence extends Module{
|
|
|
131
131
|
this.subscribe("column-show", this.save.bind(this, "columns"));
|
|
132
132
|
this.subscribe("column-hide", this.save.bind(this, "columns"));
|
|
133
133
|
this.subscribe("column-moved", this.save.bind(this, "columns"));
|
|
134
|
-
this.subscribe("table-built", this.tableBuilt.bind(this), 0);
|
|
135
134
|
}
|
|
136
135
|
|
|
137
|
-
this.subscribe("table-
|
|
136
|
+
this.subscribe("table-built", this.tableBuilt.bind(this), 0);
|
|
138
137
|
|
|
138
|
+
this.subscribe("table-redraw", this.tableRedraw.bind(this));
|
|
139
139
|
|
|
140
140
|
this.subscribe("filter-changed", this.eventSave.bind(this, "filter"));
|
|
141
141
|
this.subscribe("sort-changed", this.eventSave.bind(this, "sort"));
|
|
@@ -163,7 +163,7 @@ class Persistence extends Module{
|
|
|
163
163
|
sorters = this.load("sort");
|
|
164
164
|
|
|
165
165
|
if(!sorters === false){
|
|
166
|
-
this.table.initialSort = sorters;
|
|
166
|
+
this.table.options.initialSort = sorters;
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
|
|
@@ -171,7 +171,7 @@ class Persistence extends Module{
|
|
|
171
171
|
filters = this.load("filter");
|
|
172
172
|
|
|
173
173
|
if(!filters === false){
|
|
174
|
-
this.table.initialFilter = filters;
|
|
174
|
+
this.table.options.initialFilter = filters;
|
|
175
175
|
}
|
|
176
176
|
}
|
|
177
177
|
}
|
|
@@ -451,6 +451,8 @@ class Persistence extends Module{
|
|
|
451
451
|
|
|
452
452
|
Persistence.moduleName = "persistence";
|
|
453
453
|
|
|
454
|
+
Persistence.moduleInitOrder = 1;
|
|
455
|
+
|
|
454
456
|
//load defaults
|
|
455
457
|
Persistence.readers = defaultReaders;
|
|
456
458
|
Persistence.writers = defaultWriters;
|
|
@@ -13,12 +13,12 @@ export default {
|
|
|
13
13
|
|
|
14
14
|
//if cookie exists, decode and load column data into tabulator
|
|
15
15
|
if(cookiePos > -1){
|
|
16
|
-
cookie = cookie.
|
|
16
|
+
cookie = cookie.slice(cookiePos);
|
|
17
17
|
|
|
18
18
|
end = cookie.indexOf(";");
|
|
19
19
|
|
|
20
20
|
if(end > -1){
|
|
21
|
-
cookie = cookie.
|
|
21
|
+
cookie = cookie.slice(0, end);
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
data = cookie.replace(key + "=", "");
|
|
@@ -26,4 +26,4 @@ export default {
|
|
|
26
26
|
|
|
27
27
|
return data ? JSON.parse(data) : false;
|
|
28
28
|
}
|
|
29
|
-
};
|
|
29
|
+
};
|
|
@@ -1,186 +1,196 @@
|
|
|
1
1
|
import Module from '../../core/Module.js';
|
|
2
2
|
|
|
3
3
|
class ResizeColumns extends Module{
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
constructor(table){
|
|
6
6
|
super(table);
|
|
7
|
-
|
|
7
|
+
|
|
8
8
|
this.startColumn = false;
|
|
9
9
|
this.startX = false;
|
|
10
10
|
this.startWidth = false;
|
|
11
11
|
this.handle = null;
|
|
12
12
|
this.prevHandle = null;
|
|
13
|
-
|
|
13
|
+
|
|
14
14
|
this.registerColumnOption("resizable", true);
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
initialize(){
|
|
18
18
|
// if(this.table.options.resizableColumns){
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
this.subscribe("cell-layout", this.layoutCellHandles.bind(this));
|
|
20
|
+
this.subscribe("column-init", this.layoutColumnHeader.bind(this));
|
|
21
21
|
// }
|
|
22
22
|
}
|
|
23
|
-
|
|
23
|
+
|
|
24
24
|
layoutCellHandles(cell){
|
|
25
25
|
if(cell.row.type === "row"){
|
|
26
26
|
this.initializeColumn("cell", cell.column, cell.element);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
layoutColumnHeader(column){
|
|
31
31
|
this.initializeColumn("header", column, column.element);
|
|
32
32
|
}
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
initializeColumn(type, column, element){
|
|
35
35
|
var self = this,
|
|
36
36
|
variableHeight = false,
|
|
37
37
|
mode = column.definition.resizable;
|
|
38
|
-
|
|
38
|
+
|
|
39
39
|
//set column resize mode
|
|
40
40
|
if(type === "header"){
|
|
41
41
|
variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight;
|
|
42
42
|
column.modules.resize = {variableHeight:variableHeight};
|
|
43
43
|
}
|
|
44
|
-
|
|
44
|
+
|
|
45
45
|
if(mode === true || mode == type){
|
|
46
|
-
|
|
46
|
+
|
|
47
47
|
var handle = document.createElement('div');
|
|
48
48
|
handle.className = "tabulator-col-resize-handle";
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
|
|
50
|
+
|
|
51
51
|
var prevHandle = document.createElement('div');
|
|
52
52
|
prevHandle.className = "tabulator-col-resize-handle prev";
|
|
53
|
-
|
|
53
|
+
|
|
54
54
|
handle.addEventListener("click", function(e){
|
|
55
55
|
e.stopPropagation();
|
|
56
56
|
});
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
var handleDown = function(e){
|
|
59
59
|
var nearestColumn = column.getLastColumn();
|
|
60
|
-
|
|
60
|
+
|
|
61
61
|
if(nearestColumn && self._checkResizability(nearestColumn)){
|
|
62
62
|
self.startColumn = column;
|
|
63
63
|
self._mouseDown(e, nearestColumn, handle);
|
|
64
64
|
}
|
|
65
65
|
};
|
|
66
|
-
|
|
66
|
+
|
|
67
67
|
handle.addEventListener("mousedown", handleDown);
|
|
68
68
|
handle.addEventListener("touchstart", handleDown, {passive: true});
|
|
69
|
-
|
|
69
|
+
|
|
70
70
|
//reszie column on double click
|
|
71
71
|
handle.addEventListener("dblclick", function(e){
|
|
72
|
-
var col = column.getLastColumn()
|
|
73
|
-
|
|
72
|
+
var col = column.getLastColumn(),
|
|
73
|
+
oldWidth;
|
|
74
|
+
|
|
74
75
|
if(col && self._checkResizability(col)){
|
|
76
|
+
oldWidth = col.getWidth();
|
|
77
|
+
|
|
75
78
|
e.stopPropagation();
|
|
76
79
|
col.reinitializeWidth(true);
|
|
80
|
+
|
|
81
|
+
if(oldWidth !== col.getWidth()){
|
|
82
|
+
self.dispatch("column-resized", col);
|
|
83
|
+
self.table.externalEvents.dispatch("columnResized", col.getComponent());
|
|
84
|
+
}
|
|
77
85
|
}
|
|
78
86
|
});
|
|
79
|
-
|
|
80
|
-
|
|
87
|
+
|
|
88
|
+
|
|
81
89
|
prevHandle.addEventListener("click", function(e){
|
|
82
90
|
e.stopPropagation();
|
|
83
91
|
});
|
|
84
|
-
|
|
92
|
+
|
|
85
93
|
var prevHandleDown = function(e){
|
|
86
94
|
var nearestColumn, colIndex, prevColumn;
|
|
87
|
-
|
|
95
|
+
|
|
88
96
|
nearestColumn = column.getFirstColumn();
|
|
89
|
-
|
|
97
|
+
|
|
90
98
|
if(nearestColumn){
|
|
91
99
|
colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
|
|
92
100
|
prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
|
|
93
|
-
|
|
101
|
+
|
|
94
102
|
if(prevColumn && self._checkResizability(prevColumn)){
|
|
95
103
|
self.startColumn = column;
|
|
96
104
|
self._mouseDown(e, prevColumn, prevHandle);
|
|
97
105
|
}
|
|
98
106
|
}
|
|
99
107
|
};
|
|
100
|
-
|
|
108
|
+
|
|
101
109
|
prevHandle.addEventListener("mousedown", prevHandleDown);
|
|
102
110
|
prevHandle.addEventListener("touchstart", prevHandleDown, {passive: true});
|
|
103
|
-
|
|
111
|
+
|
|
104
112
|
//resize column on double click
|
|
105
113
|
prevHandle.addEventListener("dblclick", function(e){
|
|
106
114
|
var nearestColumn, colIndex, prevColumn;
|
|
107
|
-
|
|
115
|
+
|
|
108
116
|
nearestColumn = column.getFirstColumn();
|
|
109
|
-
|
|
117
|
+
|
|
110
118
|
if(nearestColumn){
|
|
111
119
|
colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
|
|
112
120
|
prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
|
|
113
|
-
|
|
121
|
+
|
|
114
122
|
if(prevColumn && self._checkResizability(prevColumn)){
|
|
115
123
|
e.stopPropagation();
|
|
116
124
|
prevColumn.reinitializeWidth(true);
|
|
117
125
|
}
|
|
118
126
|
}
|
|
119
127
|
});
|
|
120
|
-
|
|
128
|
+
|
|
121
129
|
element.appendChild(handle);
|
|
122
130
|
element.appendChild(prevHandle);
|
|
123
131
|
}
|
|
124
132
|
}
|
|
125
|
-
|
|
133
|
+
|
|
126
134
|
_checkResizability(column){
|
|
127
135
|
return column.definition.resizable;
|
|
128
136
|
}
|
|
129
|
-
|
|
137
|
+
|
|
130
138
|
_mouseDown(e, column, handle){
|
|
131
139
|
var self = this;
|
|
132
|
-
|
|
140
|
+
|
|
133
141
|
self.table.element.classList.add("tabulator-block-select");
|
|
134
142
|
|
|
135
143
|
function mouseMove(e){
|
|
136
144
|
// self.table.columnManager.tempScrollBlock();
|
|
137
|
-
|
|
145
|
+
|
|
138
146
|
if(self.table.rtl){
|
|
139
147
|
column.setWidth(self.startWidth - ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
|
|
140
148
|
}else{
|
|
141
149
|
column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
|
|
142
150
|
}
|
|
143
|
-
|
|
151
|
+
|
|
144
152
|
self.table.columnManager.renderer.rerenderColumns(true);
|
|
145
|
-
|
|
153
|
+
|
|
146
154
|
if(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){
|
|
147
155
|
column.checkCellHeights();
|
|
148
156
|
}
|
|
149
157
|
}
|
|
150
|
-
|
|
158
|
+
|
|
151
159
|
function mouseUp(e){
|
|
152
|
-
|
|
160
|
+
|
|
153
161
|
//block editor from taking action while resizing is taking place
|
|
154
162
|
if(self.startColumn.modules.edit){
|
|
155
163
|
self.startColumn.modules.edit.blocked = false;
|
|
156
164
|
}
|
|
157
|
-
|
|
165
|
+
|
|
158
166
|
if(self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){
|
|
159
167
|
column.checkCellHeights();
|
|
160
168
|
}
|
|
161
|
-
|
|
169
|
+
|
|
162
170
|
document.body.removeEventListener("mouseup", mouseUp);
|
|
163
171
|
document.body.removeEventListener("mousemove", mouseMove);
|
|
164
|
-
|
|
172
|
+
|
|
165
173
|
handle.removeEventListener("touchmove", mouseMove);
|
|
166
174
|
handle.removeEventListener("touchend", mouseUp);
|
|
167
|
-
|
|
175
|
+
|
|
168
176
|
self.table.element.classList.remove("tabulator-block-select");
|
|
169
177
|
|
|
170
|
-
self.
|
|
171
|
-
|
|
178
|
+
if(self.startWidth !== column.getWidth()){
|
|
179
|
+
self.dispatch("column-resized", column);
|
|
180
|
+
self.table.externalEvents.dispatch("columnResized", column.getComponent());
|
|
181
|
+
}
|
|
172
182
|
}
|
|
173
|
-
|
|
183
|
+
|
|
174
184
|
e.stopPropagation(); //prevent resize from interfereing with movable columns
|
|
175
|
-
|
|
185
|
+
|
|
176
186
|
//block editor from taking action while resizing is taking place
|
|
177
187
|
if(self.startColumn.modules.edit){
|
|
178
188
|
self.startColumn.modules.edit.blocked = true;
|
|
179
189
|
}
|
|
180
|
-
|
|
190
|
+
|
|
181
191
|
self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX;
|
|
182
192
|
self.startWidth = column.getWidth();
|
|
183
|
-
|
|
193
|
+
|
|
184
194
|
document.body.addEventListener("mousemove", mouseMove);
|
|
185
195
|
document.body.addEventListener("mouseup", mouseUp);
|
|
186
196
|
handle.addEventListener("touchmove", mouseMove, {passive: true});
|
|
@@ -61,14 +61,14 @@ class ResponsiveLayout extends Module{
|
|
|
61
61
|
this.hiddenColumns = [];
|
|
62
62
|
|
|
63
63
|
//determine level of responsivity for each column
|
|
64
|
-
this.table.columnManager.columnsByIndex.forEach(
|
|
64
|
+
this.table.columnManager.columnsByIndex.forEach((column, i) => {
|
|
65
65
|
if(column.modules.responsive){
|
|
66
66
|
if(column.modules.responsive.order && column.modules.responsive.visible){
|
|
67
67
|
column.modules.responsive.index = i;
|
|
68
68
|
columns.push(column);
|
|
69
69
|
|
|
70
|
-
if(!column.visible &&
|
|
71
|
-
|
|
70
|
+
if(!column.visible && this.mode === "collapse"){
|
|
71
|
+
this.hiddenColumns.push(column);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
}
|
|
@@ -76,7 +76,7 @@ class ResponsiveLayout extends Module{
|
|
|
76
76
|
|
|
77
77
|
//sort list by responsivity
|
|
78
78
|
columns = columns.reverse();
|
|
79
|
-
columns = columns.sort(
|
|
79
|
+
columns = columns.sort((a, b) => {
|
|
80
80
|
var diff = b.modules.responsive.order - a.modules.responsive.order;
|
|
81
81
|
return diff || (b.modules.responsive.index - a.modules.responsive.index);
|
|
82
82
|
});
|
|
@@ -322,7 +322,7 @@ class ResponsiveLayout extends Module{
|
|
|
322
322
|
var titleHighlight = document.createElement("strong");
|
|
323
323
|
titleData.appendChild(titleHighlight);
|
|
324
324
|
this.langBind("columns|" + item.field, function(text){
|
|
325
|
-
titleHighlight.
|
|
325
|
+
titleHighlight.innerHTML = text || item.title;
|
|
326
326
|
});
|
|
327
327
|
|
|
328
328
|
if(item.value instanceof Node){
|