tabulator-tables 5.1.2 → 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/dist/js/tabulator.js +133 -73
- 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 +386 -337
- 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 +1 -3
- package/src/js/core/Tabulator.js +4 -4
- package/src/js/modules/ColumnCalcs/ColumnCalcs.js +9 -4
- package/src/js/modules/Format/defaults/formatters/rowSelection.js +18 -1
- package/src/js/modules/FrozenColumns/FrozenColumns.js +17 -3
- package/src/js/modules/GroupRows/Group.js +144 -142
- package/src/js/modules/Layout/Layout.js +1 -0
- package/src/js/modules/Persistence/defaults/readers.js +3 -3
- package/src/js/modules/ResizeColumns/ResizeColumns.js +61 -51
- package/src/js/modules/SelectRow/SelectRow.js +129 -127
package/package.json
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tabulator-tables",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.3",
|
|
4
4
|
"description": "Interactive table generation JavaScript library",
|
|
5
5
|
"style": "dist/css/tabulator.css",
|
|
6
6
|
"main": "dist/js/tabulator.js",
|
|
7
7
|
"module": "dist/js/tabulator_esm.js",
|
|
8
|
-
"sideEffects":
|
|
8
|
+
"sideEffects": [
|
|
9
|
+
"**/*.css",
|
|
10
|
+
"**/*.scss"
|
|
11
|
+
],
|
|
9
12
|
"scripts": {
|
|
10
13
|
"build": "rollup -c build/rollup.js",
|
|
11
14
|
"dev": "rollup -c build/rollup.js -w --environment TARGET:dev",
|
|
@@ -10,8 +10,6 @@ export default class FooterManager extends CoreFeature{
|
|
|
10
10
|
this.containerElement = this.createContainerElement(); //containing element
|
|
11
11
|
this.external = false;
|
|
12
12
|
this.links = [];
|
|
13
|
-
|
|
14
|
-
this.initializeElement();
|
|
15
13
|
}
|
|
16
14
|
|
|
17
15
|
initialize(){
|
|
@@ -43,7 +41,7 @@ export default class FooterManager extends CoreFeature{
|
|
|
43
41
|
switch(typeof this.table.options.footerElement){
|
|
44
42
|
case "string":
|
|
45
43
|
if(this.table.options.footerElement[0] === "<"){
|
|
46
|
-
this.
|
|
44
|
+
this.containerElement.innerHTML = this.table.options.footerElement;
|
|
47
45
|
}else{
|
|
48
46
|
this.external = true;
|
|
49
47
|
this.element = document.querySelector(this.table.options.footerElement);
|
package/src/js/core/Tabulator.js
CHANGED
|
@@ -50,7 +50,7 @@ class Tabulator {
|
|
|
50
50
|
|
|
51
51
|
if(this.initializeElement(element)){
|
|
52
52
|
|
|
53
|
-
this.
|
|
53
|
+
this.initializeCoreSystems(options);
|
|
54
54
|
|
|
55
55
|
//delay table creation to allow event bindings immediately after the constructor
|
|
56
56
|
setTimeout(() => {
|
|
@@ -80,7 +80,7 @@ class Tabulator {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
initializeCoreSystems(options){
|
|
84
84
|
this.columnManager = new ColumnManager(this);
|
|
85
85
|
this.rowManager = new RowManager(this);
|
|
86
86
|
this.footerManager = new FooterManager(this);
|
|
@@ -310,7 +310,7 @@ class Tabulator {
|
|
|
310
310
|
this.browserSlow = false;
|
|
311
311
|
}
|
|
312
312
|
|
|
313
|
-
this.browserMobile = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(ua.
|
|
313
|
+
this.browserMobile = /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(ua)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(ua.slice(0,4));
|
|
314
314
|
}
|
|
315
315
|
|
|
316
316
|
////////////////// Data Handling //////////////////
|
|
@@ -821,4 +821,4 @@ Tabulator.defaultOptions = defaultOptions;
|
|
|
821
821
|
//bind modules and static functionality
|
|
822
822
|
new ModuleBinder(Tabulator);
|
|
823
823
|
|
|
824
|
-
export default Tabulator;
|
|
824
|
+
export default Tabulator;
|
|
@@ -51,7 +51,7 @@ class ColumnCalcs extends Module{
|
|
|
51
51
|
this.subscribe("row-added", this.rowsUpdated.bind(this));
|
|
52
52
|
this.subscribe("column-moved", this.recalcActiveRows.bind(this));
|
|
53
53
|
this.subscribe("column-add", this.recalcActiveRows.bind(this));
|
|
54
|
-
this.subscribe("data-refreshed", this.
|
|
54
|
+
this.subscribe("data-refreshed", this.recalcActiveRowsRefresh.bind(this));
|
|
55
55
|
this.subscribe("table-redraw", this.tableRedraw.bind(this));
|
|
56
56
|
this.subscribe("rows-visible", this.visibleRows.bind(this));
|
|
57
57
|
|
|
@@ -99,6 +99,14 @@ class ColumnCalcs extends Module{
|
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
+
recalcActiveRowsRefresh(){
|
|
103
|
+
if(this.table.options.groupBy && this.table.options.dataTreeStartExpanded && this.table.options.dataTree){
|
|
104
|
+
this.recalcAll();
|
|
105
|
+
}else{
|
|
106
|
+
this.recalcActiveRows();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
102
110
|
recalcActiveRows(){
|
|
103
111
|
this.recalc(this.table.rowManager.activeRows);
|
|
104
112
|
}
|
|
@@ -106,7 +114,6 @@ class ColumnCalcs extends Module{
|
|
|
106
114
|
cellValueChanged(cell){
|
|
107
115
|
if(cell.column.definition.topCalc || cell.column.definition.bottomCalc){
|
|
108
116
|
if(this.table.options.groupBy){
|
|
109
|
-
|
|
110
117
|
if(this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both"){
|
|
111
118
|
this.recalcActiveRows();
|
|
112
119
|
}
|
|
@@ -114,7 +121,6 @@ class ColumnCalcs extends Module{
|
|
|
114
121
|
if(this.table.options.columnCalcs != "table"){
|
|
115
122
|
this.recalcRowGroup(cell.row);
|
|
116
123
|
}
|
|
117
|
-
|
|
118
124
|
}else{
|
|
119
125
|
this.recalcActiveRows();
|
|
120
126
|
}
|
|
@@ -286,7 +292,6 @@ class ColumnCalcs extends Module{
|
|
|
286
292
|
|
|
287
293
|
if(this.table.options.groupBy && this.table.options.columnCalcs !== "table"){
|
|
288
294
|
|
|
289
|
-
|
|
290
295
|
var groups = this.table.modules.groupRows.getChildGroups();
|
|
291
296
|
|
|
292
297
|
groups.forEach((group) => {
|
|
@@ -2,8 +2,10 @@ import RowComponent from '../../../../core/row/RowComponent.js';
|
|
|
2
2
|
|
|
3
3
|
export default function(cell, formatterParams, onRendered){
|
|
4
4
|
var checkbox = document.createElement("input");
|
|
5
|
+
var blocked = false;
|
|
5
6
|
|
|
6
7
|
checkbox.type = 'checkbox';
|
|
8
|
+
|
|
7
9
|
|
|
8
10
|
if(this.table.modExists("selectRow", true)){
|
|
9
11
|
|
|
@@ -17,9 +19,24 @@ export default function(cell, formatterParams, onRendered){
|
|
|
17
19
|
if(row instanceof RowComponent){
|
|
18
20
|
|
|
19
21
|
checkbox.addEventListener("change", (e) => {
|
|
20
|
-
|
|
22
|
+
if(this.table.options.selectableRangeMode === "click"){
|
|
23
|
+
if(!blocked){
|
|
24
|
+
row.toggleSelect();
|
|
25
|
+
}else{
|
|
26
|
+
blocked = false;
|
|
27
|
+
}
|
|
28
|
+
}else{
|
|
29
|
+
row.toggleSelect();
|
|
30
|
+
}
|
|
21
31
|
});
|
|
22
32
|
|
|
33
|
+
if(this.table.options.selectableRangeMode === "click"){
|
|
34
|
+
checkbox.addEventListener("click", (e) => {
|
|
35
|
+
blocked = true;
|
|
36
|
+
this.table.modules.selectRow.handleComplexRowClick(row._row, e);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
|
|
23
40
|
checkbox.checked = row.isSelected && row.isSelected();
|
|
24
41
|
this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
|
|
25
42
|
}else{
|
|
@@ -13,6 +13,7 @@ class FrozenColumns extends Module{
|
|
|
13
13
|
this.initializationMode = "left";
|
|
14
14
|
this.active = false;
|
|
15
15
|
this.scrollEndTimer = false;
|
|
16
|
+
this.blocked = true;
|
|
16
17
|
|
|
17
18
|
this.registerColumnOption("frozen");
|
|
18
19
|
}
|
|
@@ -40,6 +41,16 @@ class FrozenColumns extends Module{
|
|
|
40
41
|
this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this));
|
|
41
42
|
this.subscribe("columns-loading", this.reset.bind(this));
|
|
42
43
|
this.subscribe("table-redraw", this.layout.bind(this));
|
|
44
|
+
this.subscribe("layout-refreshing", this.blockLayout.bind(this));
|
|
45
|
+
this.subscribe("layout-refreshed", this.unblockLayout.bind(this));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
blockLayout(){
|
|
49
|
+
this.blocked = true;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
unblockLayout(){
|
|
53
|
+
this.blocked = false;
|
|
43
54
|
}
|
|
44
55
|
|
|
45
56
|
layoutCell(cell){
|
|
@@ -225,12 +236,11 @@ class FrozenColumns extends Module{
|
|
|
225
236
|
return column.parent.isGroup ? this.getColGroupParentElement(column.parent) : column.getElement();
|
|
226
237
|
}
|
|
227
238
|
|
|
228
|
-
//layout columns
|
|
239
|
+
//layout columns appropriately
|
|
229
240
|
layout(){
|
|
230
241
|
var rightMargin = 0;
|
|
231
242
|
|
|
232
|
-
if(this.active){
|
|
233
|
-
|
|
243
|
+
if(this.active && !this.blocked){
|
|
234
244
|
//calculate row padding
|
|
235
245
|
this.calcMargins();
|
|
236
246
|
|
|
@@ -254,6 +264,10 @@ class FrozenColumns extends Module{
|
|
|
254
264
|
|
|
255
265
|
rowEl.style.paddingLeft = this.leftMargin;
|
|
256
266
|
|
|
267
|
+
if(this.table.options.layout === "fitDataFill" && this.rightColumns.length){
|
|
268
|
+
this.table.rowManager.getTableElement().style.minWidth = "calc(100% - " + this.rightMargin + ")";
|
|
269
|
+
}
|
|
270
|
+
|
|
257
271
|
this.leftColumns.forEach((column) => {
|
|
258
272
|
var cell = row.getCell(column);
|
|
259
273
|
|