tabulator-tables 5.3.3 → 5.4.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 +64 -38
- package/dist/css/tabulator.css +69 -19
- 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 +69 -19
- 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 +69 -19
- 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 +69 -19
- 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 +69 -19
- 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 +69 -19
- 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 +69 -19
- 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 +69 -19
- 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 +69 -19
- 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 +69 -19
- 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 +69 -19
- 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 +25819 -27493
- 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 +706 -508
- 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 +3 -6
- package/src/js/core/ColumnManager.js +32 -17
- package/src/js/core/RowManager.js +30 -4
- package/src/js/core/column/Column.js +4 -0
- package/src/js/core/column/defaults/options.js +1 -0
- package/src/js/core/rendering/renderers/VirtualDomHorizontal.js +76 -77
- package/src/js/core/row/Row.js +1 -1
- package/src/js/core/tools/InteractionMonitor.js +2 -0
- package/src/js/core/tools/Popup.js +98 -76
- package/src/js/modules/ColumnCalcs/ColumnCalcs.js +185 -146
- package/src/js/modules/Download/defaults/downloaders/xlsx.js +2 -1
- package/src/js/modules/Edit/Edit.js +13 -2
- package/src/js/modules/Format/Format.js +46 -40
- package/src/js/modules/Format/defaults/formatters/responsiveCollapse.js +9 -1
- package/src/js/modules/FrozenColumns/FrozenColumns.js +24 -57
- package/src/js/modules/FrozenRows/FrozenRows.js +4 -3
- package/src/js/modules/GroupRows/Group.js +20 -28
- package/src/js/modules/GroupRows/GroupComponent.js +1 -1
- package/src/js/modules/GroupRows/GroupRows.js +1 -2
- package/src/js/modules/Interaction/Interaction.js +12 -0
- package/src/js/modules/Menu/Menu.js +31 -7
- package/src/js/modules/MoveColumns/MoveColumns.js +3 -3
- package/src/js/modules/Persistence/Persistence.js +1 -0
- package/src/js/modules/Popup/Popup.js +42 -4
- package/src/js/modules/ResizeColumns/ResizeColumns.js +25 -6
- package/src/js/modules/ResizeTable/ResizeTable.js +7 -8
- package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +21 -21
- package/src/js/modules/Sort/Sort.js +14 -2
- package/src/scss/tabulator.scss +92 -31
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tabulator-tables",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.4.0",
|
|
4
4
|
"description": "Interactive table generation JavaScript library",
|
|
5
5
|
"style": "dist/css/tabulator.css",
|
|
6
6
|
"main": "dist/js/tabulator.js",
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
"**/*.scss"
|
|
11
11
|
],
|
|
12
12
|
"scripts": {
|
|
13
|
-
"lint": "eslint src",
|
|
13
|
+
"lint": "eslint src --fix",
|
|
14
|
+
"prebuild": "eslint src --fix",
|
|
14
15
|
"build": "rollup -c build/rollup.js",
|
|
15
16
|
"dev": "rollup -c build/rollup.js -w --environment TARGET:dev",
|
|
16
17
|
"dev:css": "rollup -c build/rollup.js -w --environment TARGET:css",
|
|
@@ -47,10 +48,6 @@
|
|
|
47
48
|
},
|
|
48
49
|
"homepage": "http://tabulator.info/",
|
|
49
50
|
"devDependencies": {
|
|
50
|
-
"@babel/core": "^7.12.10",
|
|
51
|
-
"@babel/plugin-proposal-class-properties": "^7.12.1",
|
|
52
|
-
"@babel/preset-env": "^7.12.11",
|
|
53
|
-
"@rollup/plugin-babel": "^5.2.2",
|
|
54
51
|
"@rollup/plugin-node-resolve": "^11.0.1",
|
|
55
52
|
"eslint": "^8.10.0",
|
|
56
53
|
"eslint-plugin-only-warn": "^1.0.3",
|
|
@@ -16,6 +16,7 @@ export default class ColumnManager extends CoreFeature {
|
|
|
16
16
|
|
|
17
17
|
this.blockHozScrollEvent = false;
|
|
18
18
|
this.headersElement = null;
|
|
19
|
+
this.contentsElement = null;
|
|
19
20
|
this.element = null ; //containing element
|
|
20
21
|
this.columns = []; // column definition object
|
|
21
22
|
this.columnsByIndex = []; //columns by index
|
|
@@ -35,11 +36,22 @@ export default class ColumnManager extends CoreFeature {
|
|
|
35
36
|
this.initializeRenderer();
|
|
36
37
|
|
|
37
38
|
this.headersElement = this.createHeadersElement();
|
|
39
|
+
this.contentsElement = this.createHeaderContentsElement();
|
|
38
40
|
this.element = this.createHeaderElement();
|
|
39
41
|
|
|
40
|
-
this.
|
|
42
|
+
this.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild);
|
|
43
|
+
this.element.insertBefore(this.contentsElement, this.element.firstChild);
|
|
41
44
|
|
|
42
45
|
this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this));
|
|
46
|
+
this.subscribe("scrollbar-vertical", this.padVerticalScrollbar.bind(this));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
padVerticalScrollbar(width){
|
|
50
|
+
if(this.table.rtl){
|
|
51
|
+
this.headersElement.style.marginLeft = width + "px";
|
|
52
|
+
}else{
|
|
53
|
+
this.headersElement.style.marginRight = width + "px";
|
|
54
|
+
}
|
|
43
55
|
}
|
|
44
56
|
|
|
45
57
|
initializeRenderer(){
|
|
@@ -73,6 +85,15 @@ export default class ColumnManager extends CoreFeature {
|
|
|
73
85
|
|
|
74
86
|
return el;
|
|
75
87
|
}
|
|
88
|
+
|
|
89
|
+
createHeaderContentsElement (){
|
|
90
|
+
var el = document.createElement("div");
|
|
91
|
+
|
|
92
|
+
el.classList.add("tabulator-header-contents");
|
|
93
|
+
el.setAttribute("role", "rowgroup");
|
|
94
|
+
|
|
95
|
+
return el;
|
|
96
|
+
}
|
|
76
97
|
|
|
77
98
|
createHeaderElement (){
|
|
78
99
|
var el = document.createElement("div");
|
|
@@ -91,6 +112,12 @@ export default class ColumnManager extends CoreFeature {
|
|
|
91
112
|
getElement(){
|
|
92
113
|
return this.element;
|
|
93
114
|
}
|
|
115
|
+
|
|
116
|
+
//return containing contents element
|
|
117
|
+
getContentsElement(){
|
|
118
|
+
return this.contentsElement;
|
|
119
|
+
}
|
|
120
|
+
|
|
94
121
|
|
|
95
122
|
//return header containing element
|
|
96
123
|
getHeadersElement(){
|
|
@@ -99,20 +126,8 @@ export default class ColumnManager extends CoreFeature {
|
|
|
99
126
|
|
|
100
127
|
//scroll horizontally to match table body
|
|
101
128
|
scrollHorizontal(left){
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
// this.tempScrollBlock();
|
|
106
|
-
this.element.scrollLeft = left;
|
|
107
|
-
|
|
108
|
-
//adjust for vertical scrollbar moving table when present
|
|
109
|
-
if(left > scrollWidth){
|
|
110
|
-
hozAdjust = left - scrollWidth;
|
|
111
|
-
this.element.style.marginLeft = (-(hozAdjust)) + "px";
|
|
112
|
-
}else{
|
|
113
|
-
this.element.style.marginLeft = 0;
|
|
114
|
-
}
|
|
115
|
-
|
|
129
|
+
this.contentsElement.scrollLeft = left;
|
|
130
|
+
|
|
116
131
|
this.scrollLeft = left;
|
|
117
132
|
|
|
118
133
|
this.renderer.scrollColumns(left);
|
|
@@ -287,7 +302,7 @@ export default class ColumnManager extends CoreFeature {
|
|
|
287
302
|
|
|
288
303
|
if(!this.redrawBlock){
|
|
289
304
|
|
|
290
|
-
this.
|
|
305
|
+
this.headersElement.style.height="";
|
|
291
306
|
|
|
292
307
|
this.columns.forEach((column) => {
|
|
293
308
|
column.clearVerticalAlign();
|
|
@@ -301,7 +316,7 @@ export default class ColumnManager extends CoreFeature {
|
|
|
301
316
|
}
|
|
302
317
|
});
|
|
303
318
|
|
|
304
|
-
this.
|
|
319
|
+
this.headersElement.style.height = minHeight + "px";
|
|
305
320
|
|
|
306
321
|
this.columns.forEach((column) => {
|
|
307
322
|
column.verticalAlign(this.table.options.columnHeaderVertAlign, minHeight);
|
|
@@ -38,6 +38,8 @@ export default class RowManager extends CoreFeature{
|
|
|
38
38
|
|
|
39
39
|
this.dataPipeline = []; //hold data pipeline tasks
|
|
40
40
|
this.displayPipeline = []; //hold data display pipeline tasks
|
|
41
|
+
|
|
42
|
+
this.scrollbarWidth = 0;
|
|
41
43
|
|
|
42
44
|
this.renderer = null;
|
|
43
45
|
}
|
|
@@ -720,6 +722,10 @@ export default class RowManager extends CoreFeature{
|
|
|
720
722
|
//case to handle scenario when trying to skip past end stage
|
|
721
723
|
this.regenerateRowPositions();
|
|
722
724
|
}
|
|
725
|
+
|
|
726
|
+
if(this.getDisplayRows().length){
|
|
727
|
+
this._clearPlaceholder();
|
|
728
|
+
}
|
|
723
729
|
}
|
|
724
730
|
|
|
725
731
|
//regenerate row positions
|
|
@@ -788,7 +794,7 @@ export default class RowManager extends CoreFeature{
|
|
|
788
794
|
getRows(type){
|
|
789
795
|
var rows = [];
|
|
790
796
|
|
|
791
|
-
if(!type){
|
|
797
|
+
if(!type || type === true){
|
|
792
798
|
rows = this.chain("rows-retrieve", type, null, this.rows) || this.rows;
|
|
793
799
|
}else{
|
|
794
800
|
switch(type){
|
|
@@ -826,10 +832,26 @@ export default class RowManager extends CoreFeature{
|
|
|
826
832
|
if(!this.fixedHeight){
|
|
827
833
|
this.adjustTableSize();
|
|
828
834
|
}
|
|
835
|
+
|
|
836
|
+
this.scrollBarCheck();
|
|
829
837
|
|
|
830
838
|
this.dispatchExternal("renderComplete");
|
|
831
839
|
}
|
|
832
840
|
}
|
|
841
|
+
|
|
842
|
+
scrollBarCheck(){
|
|
843
|
+
var scrollbarWidth = 0;
|
|
844
|
+
|
|
845
|
+
//adjust for vertical scrollbar moving table when present
|
|
846
|
+
if(this.element.scrollHeight > this.element.clientHeight){
|
|
847
|
+
scrollbarWidth = this.element.offsetWidth - this.element.clientWidth;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
if(scrollbarWidth !== this.scrollbarWidth){
|
|
851
|
+
this.scrollbarWidth = scrollbarWidth;
|
|
852
|
+
this.dispatch("scrollbar-vertical", scrollbarWidth);
|
|
853
|
+
}
|
|
854
|
+
}
|
|
833
855
|
|
|
834
856
|
initializeRenderer(){
|
|
835
857
|
var renderClass;
|
|
@@ -892,6 +914,8 @@ export default class RowManager extends CoreFeature{
|
|
|
892
914
|
if(!this.displayRowsCount){
|
|
893
915
|
this._showPlaceholder();
|
|
894
916
|
}
|
|
917
|
+
|
|
918
|
+
this.scrollBarCheck();
|
|
895
919
|
|
|
896
920
|
this.dispatchExternal("renderComplete");
|
|
897
921
|
}
|
|
@@ -928,10 +952,10 @@ export default class RowManager extends CoreFeature{
|
|
|
928
952
|
_clearPlaceholder(){
|
|
929
953
|
if(this.placeholder && this.placeholder.parentNode){
|
|
930
954
|
this.placeholder.parentNode.removeChild(this.placeholder);
|
|
931
|
-
|
|
932
|
-
// clear empty table placeholder min
|
|
933
|
-
this.tableElement.style.minWidth = "";
|
|
934
955
|
}
|
|
956
|
+
|
|
957
|
+
// clear empty table placeholder min
|
|
958
|
+
this.tableElement.style.minWidth = "";
|
|
935
959
|
}
|
|
936
960
|
|
|
937
961
|
_positionPlaceholder(){
|
|
@@ -990,6 +1014,8 @@ export default class RowManager extends CoreFeature{
|
|
|
990
1014
|
this.redraw();
|
|
991
1015
|
}
|
|
992
1016
|
}
|
|
1017
|
+
|
|
1018
|
+
this.scrollBarCheck();
|
|
993
1019
|
}
|
|
994
1020
|
|
|
995
1021
|
this._positionPlaceholder();
|
|
@@ -243,6 +243,10 @@ class Column extends CoreFeature{
|
|
|
243
243
|
|
|
244
244
|
var titleHolderElement = document.createElement("div");
|
|
245
245
|
titleHolderElement.classList.add("tabulator-col-title");
|
|
246
|
+
|
|
247
|
+
if(def.headerWordWrap){
|
|
248
|
+
titleHolderElement.classList.add("tabulator-col-title-wrap");
|
|
249
|
+
}
|
|
246
250
|
|
|
247
251
|
if(def.editableTitle){
|
|
248
252
|
var titleElement = document.createElement("input");
|
|
@@ -19,7 +19,7 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
19
19
|
this.windowBuffer = 200; //pixel margin to make column visible before it is shown on screen
|
|
20
20
|
|
|
21
21
|
this.visibleRows = null;
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
this.initialized = false;
|
|
24
24
|
this.isFitData = false;
|
|
25
25
|
|
|
@@ -32,53 +32,29 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
32
32
|
this.vertScrollListen();
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
compatibilityCheck(){
|
|
36
|
-
var columns = this.options("columns"),
|
|
37
|
-
frozen = false,
|
|
38
|
-
ok = true;
|
|
39
|
-
|
|
35
|
+
compatibilityCheck(){
|
|
40
36
|
if(this.options("layout") == "fitDataTable"){
|
|
41
37
|
console.warn("Horizontal Virtual DOM is not compatible with fitDataTable layout mode");
|
|
42
|
-
ok = false;
|
|
43
38
|
}
|
|
44
39
|
|
|
45
40
|
if(this.options("responsiveLayout")){
|
|
46
41
|
console.warn("Horizontal Virtual DOM is not compatible with responsive columns");
|
|
47
|
-
ok = false;
|
|
48
42
|
}
|
|
49
43
|
|
|
50
44
|
if(this.options("rtl")){
|
|
51
45
|
console.warn("Horizontal Virtual DOM is not currently compatible with RTL text direction");
|
|
52
|
-
ok = false;
|
|
53
46
|
}
|
|
54
|
-
|
|
55
|
-
if(columns){
|
|
56
|
-
frozen = columns.find((col) => {
|
|
57
|
-
return col.frozen;
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
if(frozen){
|
|
61
|
-
console.warn("Horizontal Virtual DOM is not compatible with frozen columns");
|
|
62
|
-
ok = false;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// if(!ok){
|
|
67
|
-
// options.virtualDomHoz = false;
|
|
68
|
-
// }
|
|
69
|
-
|
|
70
|
-
return ok;
|
|
71
47
|
}
|
|
72
48
|
|
|
73
49
|
layoutCheck(){
|
|
74
50
|
this.isFitData = this.options("layout").startsWith('fitData');
|
|
75
51
|
}
|
|
76
|
-
|
|
52
|
+
|
|
77
53
|
vertScrollListen(){
|
|
78
54
|
this.subscribe("scroll-vertical", this.clearVisRowCache.bind(this));
|
|
79
55
|
this.subscribe("data-refreshed", this.clearVisRowCache.bind(this));
|
|
80
56
|
}
|
|
81
|
-
|
|
57
|
+
|
|
82
58
|
clearVisRowCache(){
|
|
83
59
|
this.visibleRows = null;
|
|
84
60
|
}
|
|
@@ -90,7 +66,7 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
90
66
|
renderColumns(row, force){
|
|
91
67
|
this.dataChange();
|
|
92
68
|
}
|
|
93
|
-
|
|
69
|
+
|
|
94
70
|
|
|
95
71
|
scrollColumns(left, dir){
|
|
96
72
|
if(this.scrollLeft != left){
|
|
@@ -124,7 +100,6 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
124
100
|
},
|
|
125
101
|
colPos = 0;
|
|
126
102
|
|
|
127
|
-
|
|
128
103
|
if(update && !this.initialized){
|
|
129
104
|
return;
|
|
130
105
|
}
|
|
@@ -139,41 +114,44 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
139
114
|
this.vDomScrollPosRight = this.scrollLeft + this.elementVertical.clientWidth + this.windowBuffer;
|
|
140
115
|
|
|
141
116
|
this.table.columnManager.columnsByIndex.forEach((column) => {
|
|
142
|
-
var config = {}
|
|
117
|
+
var config = {},
|
|
118
|
+
width;
|
|
143
119
|
|
|
144
120
|
if(column.visible){
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
if (this.isFitData) {
|
|
153
|
-
config.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
if((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){
|
|
157
|
-
//column is visible
|
|
121
|
+
if(!column.modules.frozen){
|
|
122
|
+
width = column.getWidth();
|
|
123
|
+
|
|
124
|
+
config.leftPos = colPos;
|
|
125
|
+
config.rightPos = colPos + width;
|
|
126
|
+
|
|
127
|
+
config.width = width;
|
|
158
128
|
|
|
159
|
-
if(this.
|
|
160
|
-
|
|
161
|
-
this.vDomPadLeft = colPos;
|
|
129
|
+
if (this.isFitData) {
|
|
130
|
+
config.fitDataCheck = column.modules.vdomHoz ? column.modules.vdomHoz.fitDataCheck : true;
|
|
162
131
|
}
|
|
163
132
|
|
|
164
|
-
this.
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
133
|
+
if((colPos + width > this.vDomScrollPosLeft) && (colPos < this.vDomScrollPosRight)){
|
|
134
|
+
//column is visible
|
|
135
|
+
|
|
136
|
+
if(this.leftCol == -1){
|
|
137
|
+
this.leftCol = this.columns.length;
|
|
138
|
+
this.vDomPadLeft = colPos;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
this.rightCol = this.columns.length;
|
|
142
|
+
}else{
|
|
143
|
+
// column is hidden
|
|
144
|
+
if(this.leftCol !== -1){
|
|
145
|
+
this.vDomPadRight += width;
|
|
146
|
+
}
|
|
169
147
|
}
|
|
148
|
+
|
|
149
|
+
this.columns.push(column);
|
|
150
|
+
|
|
151
|
+
column.modules.vdomHoz = config;
|
|
152
|
+
|
|
153
|
+
colPos += width;
|
|
170
154
|
}
|
|
171
|
-
|
|
172
|
-
this.columns.push(column);
|
|
173
|
-
|
|
174
|
-
column.modules.vdomHoz = config;
|
|
175
|
-
|
|
176
|
-
colPos += width;
|
|
177
155
|
}
|
|
178
156
|
});
|
|
179
157
|
|
|
@@ -265,7 +243,7 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
265
243
|
}
|
|
266
244
|
|
|
267
245
|
rowEl.parentNode.removeChild(rowEl);
|
|
268
|
-
|
|
246
|
+
|
|
269
247
|
this.rerenderColumns(false, true);
|
|
270
248
|
}
|
|
271
249
|
}
|
|
@@ -294,24 +272,30 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
294
272
|
}
|
|
295
273
|
|
|
296
274
|
reinitializeRows(){
|
|
297
|
-
var
|
|
298
|
-
|
|
275
|
+
var visibleRows = this.getVisibleRows(),
|
|
276
|
+
otherRows = this.table.rowManager.getRows().filter(row => !visibleRows.includes(row));
|
|
277
|
+
|
|
278
|
+
visibleRows.forEach((row) => {
|
|
299
279
|
this.reinitializeRow(row, true);
|
|
300
280
|
});
|
|
281
|
+
|
|
282
|
+
otherRows.forEach((row) =>{
|
|
283
|
+
row.deinitialize();
|
|
284
|
+
});
|
|
301
285
|
}
|
|
302
286
|
|
|
303
287
|
getVisibleRows(){
|
|
304
288
|
if (!this.visibleRows){
|
|
305
289
|
this.visibleRows = this.table.rowManager.getVisibleRows();
|
|
306
290
|
}
|
|
307
|
-
|
|
291
|
+
|
|
308
292
|
return this.visibleRows;
|
|
309
293
|
}
|
|
310
294
|
|
|
311
295
|
scroll(diff){
|
|
312
296
|
this.vDomScrollPosLeft += diff;
|
|
313
297
|
this.vDomScrollPosRight += diff;
|
|
314
|
-
|
|
298
|
+
|
|
315
299
|
if(Math.abs(diff) > (this.windowBuffer / 2)){
|
|
316
300
|
this.rerenderColumns();
|
|
317
301
|
}else{
|
|
@@ -341,7 +325,7 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
341
325
|
working = true;
|
|
342
326
|
|
|
343
327
|
while(working){
|
|
344
|
-
|
|
328
|
+
|
|
345
329
|
let column = this.columns[this.rightCol + 1];
|
|
346
330
|
|
|
347
331
|
if(column){
|
|
@@ -351,7 +335,7 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
351
335
|
this.getVisibleRows().forEach((row) => {
|
|
352
336
|
if(row.type !== "group"){
|
|
353
337
|
var cell = row.getCell(column);
|
|
354
|
-
row.getElement().
|
|
338
|
+
row.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.rightCol]).getElement().nextSibling);
|
|
355
339
|
cell.cellRendered();
|
|
356
340
|
}
|
|
357
341
|
});
|
|
@@ -392,7 +376,7 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
392
376
|
this.getVisibleRows().forEach((row) => {
|
|
393
377
|
if(row.type !== "group"){
|
|
394
378
|
var cell = row.getCell(column);
|
|
395
|
-
row.getElement().
|
|
379
|
+
row.getElement().insertBefore(cell.getElement(), row.getCell(this.columns[this.leftCol]).getElement());
|
|
396
380
|
cell.cellRendered();
|
|
397
381
|
}
|
|
398
382
|
});
|
|
@@ -466,7 +450,7 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
466
450
|
removeColLeft(){
|
|
467
451
|
var changes = false,
|
|
468
452
|
working = true;
|
|
469
|
-
|
|
453
|
+
|
|
470
454
|
while(working){
|
|
471
455
|
let column = this.columns[this.leftCol];
|
|
472
456
|
|
|
@@ -528,26 +512,41 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
528
512
|
leftCol:this.leftCol,
|
|
529
513
|
rightCol:this.rightCol,
|
|
530
514
|
};
|
|
531
|
-
|
|
515
|
+
|
|
516
|
+
if(this.table.modules.frozenColumns){
|
|
517
|
+
this.table.modules.frozenColumns.leftColumns.forEach((column) => {
|
|
518
|
+
this.appendCell(row, column);
|
|
519
|
+
});
|
|
520
|
+
}
|
|
521
|
+
|
|
532
522
|
for(let i = this.leftCol; i <= this.rightCol; i++){
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
}
|
|
523
|
+
this.appendCell(row, this.columns[i]);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
if(this.table.modules.frozenColumns){
|
|
527
|
+
this.table.modules.frozenColumns.rightColumns.forEach((column) => {
|
|
528
|
+
this.appendCell(row, column);
|
|
529
|
+
});
|
|
541
530
|
}
|
|
542
531
|
}
|
|
543
532
|
}
|
|
544
533
|
|
|
534
|
+
appendCell(row, column){
|
|
535
|
+
if(column && column.visible){
|
|
536
|
+
let cell = row.getCell(column);
|
|
537
|
+
|
|
538
|
+
row.getElement().appendChild(cell.getElement());
|
|
539
|
+
cell.cellRendered();
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
|
|
545
543
|
reinitializeRow(row, force){
|
|
546
544
|
if(row.type !== "group"){
|
|
547
545
|
if(force || !row.modules.vdomHoz || row.modules.vdomHoz.leftCol !== this.leftCol || row.modules.vdomHoz.rightCol !== this.rightCol){
|
|
546
|
+
|
|
548
547
|
var rowEl = row.getElement();
|
|
549
548
|
while(rowEl.firstChild) rowEl.removeChild(rowEl.firstChild);
|
|
550
|
-
|
|
549
|
+
|
|
551
550
|
this.initializeRow(row);
|
|
552
551
|
}
|
|
553
552
|
}
|
package/src/js/core/row/Row.js
CHANGED