tabulator-tables 5.4.4 → 5.5.1
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 +7 -3
- package/dist/css/tabulator.css +85 -48
- 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 +94 -53
- 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 +111 -68
- 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 +115 -70
- 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 +100 -57
- 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 +109 -69
- 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 +95 -54
- 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 +101 -57
- 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 +138 -77
- 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 +85 -48
- 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 +93 -52
- 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/jquery_wrapper.js +10 -2
- package/dist/js/tabulator.js +507 -237
- 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 +507 -237
- 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 -2
- package/src/js/builds/jquery_wrapper.js +10 -2
- package/src/js/core/ColumnManager.js +15 -0
- package/src/js/core/RowManager.js +59 -41
- package/src/js/core/cell/CellComponent.js +5 -3
- package/src/js/core/column/ColumnComponent.js +2 -2
- package/src/js/core/rendering/renderers/BasicHorizontal.js +12 -5
- package/src/js/core/rendering/renderers/BasicVertical.js +49 -28
- package/src/js/core/rendering/renderers/VirtualDomHorizontal.js +6 -1
- package/src/js/core/rendering/renderers/VirtualDomVertical.js +87 -30
- package/src/js/core/row/Row.js +9 -3
- package/src/js/core/row/RowComponent.js +2 -2
- package/src/js/core/tools/DataLoader.js +44 -36
- package/src/js/modules/ColumnCalcs/defaults/calculations.js +7 -0
- package/src/js/modules/DataTree/DataTree.js +5 -2
- package/src/js/modules/Download/defaults/downloaders/xlsx.js +5 -2
- package/src/js/modules/Edit/Edit.js +2 -3
- package/src/js/modules/Edit/List.js +14 -3
- package/src/js/modules/Edit/defaults/editors/date.js +1 -1
- package/src/js/modules/Edit/defaults/editors/datetime.js +1 -1
- package/src/js/modules/Edit/defaults/editors/input.js +1 -1
- package/src/js/modules/Edit/defaults/editors/number.js +1 -1
- package/src/js/modules/Edit/defaults/editors/range.js +1 -1
- package/src/js/modules/Edit/defaults/editors/textarea.js +1 -1
- package/src/js/modules/Edit/defaults/editors/tickCross.js +1 -1
- package/src/js/modules/Edit/defaults/editors/time.js +1 -1
- package/src/js/modules/Export/Export.js +3 -0
- package/src/js/modules/Filter/Filter.js +11 -0
- package/src/js/modules/Format/Format.js +3 -0
- package/src/js/modules/Format/defaults/formatters/money.js +9 -2
- package/src/js/modules/FrozenColumns/FrozenColumns.js +1 -1
- package/src/js/modules/GroupRows/Group.js +27 -10
- package/src/js/modules/GroupRows/GroupComponent.js +4 -0
- package/src/js/modules/History/defaults/redoers.js +4 -2
- package/src/js/modules/History/defaults/undoers.js +6 -2
- package/src/js/modules/Interaction/Interaction.js +12 -0
- package/src/js/modules/Persistence/Persistence.js +15 -1
- package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +3 -0
- package/src/js/modules/SelectRow/SelectRow.js +82 -54
- package/src/scss/tabulator.scss +87 -50
- package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +9 -5
- package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +27 -19
- package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +29 -19
- package/src/scss/themes/bulma/tabulator_bulma.scss +15 -9
- package/src/scss/themes/materialize/tabulator_materialize.scss +15 -11
- package/src/scss/themes/materialize/variables.scss +1 -1
- package/src/scss/themes/semanticui/tabulator_semanticui.scss +53 -28
- package/src/scss/themes/semanticui/variables_table.scss +1 -1
- package/src/scss/themes/tabulator_midnight.scss +10 -6
- package/src/scss/themes/tabulator_modern.scss +16 -8
- package/src/scss/themes/tabulator_site.scss +8 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tabulator-tables",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.5.1",
|
|
4
4
|
"description": "Interactive table generation JavaScript library",
|
|
5
5
|
"style": "dist/css/tabulator.css",
|
|
6
6
|
"main": "dist/js/tabulator.js",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"dev": "rollup -c build/rollup.js -w --environment TARGET:dev",
|
|
17
17
|
"dev:css": "rollup -c build/rollup.js -w --environment TARGET:css",
|
|
18
18
|
"dev:esm": "rollup -c build/rollup.js -w --environment TARGET:esm",
|
|
19
|
-
"dev:umd": "rollup -c build/rollup.js -w --environment TARGET:umd"
|
|
19
|
+
"dev:umd": "rollup -c build/rollup.js -w --environment TARGET:umd",
|
|
20
|
+
"dev:wrappers": "rollup -c build/rollup.js -w --environment TARGET:wrappers"
|
|
20
21
|
},
|
|
21
22
|
"repository": {
|
|
22
23
|
"type": "git",
|
|
@@ -30,15 +30,23 @@
|
|
|
30
30
|
$.widget("ui.tabulator", {
|
|
31
31
|
_create:function(){
|
|
32
32
|
var options = Object.assign({}, this.options);
|
|
33
|
+
var props = [];
|
|
33
34
|
|
|
34
35
|
delete options.create;
|
|
35
36
|
delete options.disabled;
|
|
36
37
|
|
|
37
38
|
this.table = new Tabulator(this.element[0], options);
|
|
39
|
+
window.table = this.table;
|
|
40
|
+
|
|
41
|
+
//retrieve properties on prototype
|
|
42
|
+
props = Object.getOwnPropertyNames(Object.getPrototypeOf(Object.getPrototypeOf(this.table)));
|
|
43
|
+
|
|
44
|
+
//retrieve properties added by modules
|
|
45
|
+
props = props.concat(Object.getOwnPropertyNames(this.table));
|
|
38
46
|
|
|
39
47
|
//map tabulator functions to jquery wrapper
|
|
40
|
-
for(
|
|
41
|
-
if(typeof
|
|
48
|
+
for(let key of props){
|
|
49
|
+
if(typeof this.table[key] === "function" && key.charAt(0) !== "_"){
|
|
42
50
|
this[key] = this.table[key].bind(this.table);
|
|
43
51
|
}
|
|
44
52
|
}
|
|
@@ -41,6 +41,8 @@ export default class ColumnManager extends CoreFeature {
|
|
|
41
41
|
|
|
42
42
|
this.contentsElement.insertBefore(this.headersElement, this.contentsElement.firstChild);
|
|
43
43
|
this.element.insertBefore(this.contentsElement, this.element.firstChild);
|
|
44
|
+
|
|
45
|
+
this.initializeScrollWheelWatcher();
|
|
44
46
|
|
|
45
47
|
this.subscribe("scroll-horizontal", this.scrollHorizontal.bind(this));
|
|
46
48
|
this.subscribe("scrollbar-vertical", this.padVerticalScrollbar.bind(this));
|
|
@@ -132,6 +134,19 @@ export default class ColumnManager extends CoreFeature {
|
|
|
132
134
|
|
|
133
135
|
this.renderer.scrollColumns(left);
|
|
134
136
|
}
|
|
137
|
+
|
|
138
|
+
initializeScrollWheelWatcher(){
|
|
139
|
+
this.contentsElement.addEventListener("wheel", (e) => {
|
|
140
|
+
var left;
|
|
141
|
+
|
|
142
|
+
if(e.deltaX){
|
|
143
|
+
left = this.contentsElement.scrollLeft + e.deltaX;
|
|
144
|
+
|
|
145
|
+
this.table.rowManager.scrollHorizontal(left);
|
|
146
|
+
this.table.columnManager.scrollHorizontal(left);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
135
150
|
|
|
136
151
|
///////////// Column Setup Functions /////////////
|
|
137
152
|
generateColumnsFromRowData(data){
|
|
@@ -38,7 +38,7 @@ 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
|
-
|
|
41
|
+
|
|
42
42
|
this.scrollbarWidth = 0;
|
|
43
43
|
|
|
44
44
|
this.renderer = null;
|
|
@@ -67,12 +67,18 @@ export default class RowManager extends CoreFeature{
|
|
|
67
67
|
|
|
68
68
|
initializePlaceholder(){
|
|
69
69
|
var placeholder = this.table.options.placeholder;
|
|
70
|
-
|
|
70
|
+
|
|
71
|
+
if(typeof placeholder === "function"){
|
|
72
|
+
placeholder = placeholder.call(this.table);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
placeholder = this.chain("placeholder", [placeholder], placeholder, placeholder) || placeholder;
|
|
76
|
+
|
|
71
77
|
//configure placeholder element
|
|
72
78
|
if(placeholder){
|
|
73
79
|
let el = document.createElement("div");
|
|
74
80
|
el.classList.add("tabulator-placeholder");
|
|
75
|
-
|
|
81
|
+
|
|
76
82
|
if(typeof placeholder == "string"){
|
|
77
83
|
let contents = document.createElement("div");
|
|
78
84
|
contents.classList.add("tabulator-placeholder-contents");
|
|
@@ -88,10 +94,10 @@ export default class RowManager extends CoreFeature{
|
|
|
88
94
|
this.placeholderContents = placeholder;
|
|
89
95
|
}else{
|
|
90
96
|
console.warn("Invalid placeholder provided, must be string or HTML Element", placeholder);
|
|
91
|
-
|
|
97
|
+
|
|
92
98
|
this.el = null;
|
|
93
99
|
}
|
|
94
|
-
|
|
100
|
+
|
|
95
101
|
this.placeholder = el;
|
|
96
102
|
}
|
|
97
103
|
}
|
|
@@ -252,15 +258,15 @@ export default class RowManager extends CoreFeature{
|
|
|
252
258
|
this.destroy();
|
|
253
259
|
|
|
254
260
|
this.adjustTableSize();
|
|
255
|
-
|
|
261
|
+
|
|
256
262
|
this.dispatch("rows-wiped");
|
|
257
263
|
}
|
|
258
|
-
|
|
264
|
+
|
|
259
265
|
destroy(){
|
|
260
266
|
this.rows.forEach((row) => {
|
|
261
267
|
row.wipe();
|
|
262
268
|
});
|
|
263
|
-
|
|
269
|
+
|
|
264
270
|
this.rows = [];
|
|
265
271
|
this.activeRows = [];
|
|
266
272
|
this.activeRowsPipeline = [];
|
|
@@ -333,7 +339,7 @@ export default class RowManager extends CoreFeature{
|
|
|
333
339
|
rows.push(row);
|
|
334
340
|
this.dispatch("row-added", row, item, pos, index);
|
|
335
341
|
});
|
|
336
|
-
|
|
342
|
+
|
|
337
343
|
this.refreshActiveData(refreshDisplayOnly ? "displayPipeline" : false, false, true);
|
|
338
344
|
|
|
339
345
|
this.regenerateRowPositions();
|
|
@@ -721,28 +727,28 @@ export default class RowManager extends CoreFeature{
|
|
|
721
727
|
|
|
722
728
|
for(let i = index; i < this.dataPipeline.length; i++){
|
|
723
729
|
let result = this.dataPipeline[i].handler(this.activeRowsPipeline[i].slice(0));
|
|
724
|
-
|
|
730
|
+
|
|
725
731
|
this.activeRowsPipeline[i + 1] = result || this.activeRowsPipeline[i].slice(0);
|
|
726
732
|
}
|
|
727
|
-
|
|
733
|
+
|
|
728
734
|
this.setActiveRows(this.activeRowsPipeline[this.dataPipeline.length]);
|
|
729
|
-
|
|
735
|
+
|
|
730
736
|
case "display":
|
|
731
737
|
index = 0;
|
|
732
738
|
this.resetDisplayRows();
|
|
733
|
-
|
|
739
|
+
|
|
734
740
|
case "displayPipeline":
|
|
735
741
|
for(let i = index; i < this.displayPipeline.length; i++){
|
|
736
742
|
let result = this.displayPipeline[i].handler((i ? this.getDisplayRows(i - 1) : this.activeRows).slice(0), renderInPosition);
|
|
737
|
-
|
|
743
|
+
|
|
738
744
|
this.setDisplayRows(result || this.getDisplayRows(i - 1).slice(0), i);
|
|
739
745
|
}
|
|
740
746
|
|
|
741
747
|
case "end":
|
|
742
|
-
|
|
748
|
+
//case to handle scenario when trying to skip past end stage
|
|
743
749
|
this.regenerateRowPositions();
|
|
744
750
|
}
|
|
745
|
-
|
|
751
|
+
|
|
746
752
|
if(this.getDisplayRows().length){
|
|
747
753
|
this._clearPlaceholder();
|
|
748
754
|
}
|
|
@@ -778,7 +784,7 @@ export default class RowManager extends CoreFeature{
|
|
|
778
784
|
//set display row pipeline data
|
|
779
785
|
setDisplayRows(displayRows, index){
|
|
780
786
|
this.displayRows[index] = displayRows;
|
|
781
|
-
|
|
787
|
+
|
|
782
788
|
if(index == this.displayRows.length -1){
|
|
783
789
|
this.displayRowsCount = this.displayRows[this.displayRows.length -1].length;
|
|
784
790
|
}
|
|
@@ -813,7 +819,7 @@ export default class RowManager extends CoreFeature{
|
|
|
813
819
|
//return only actual rows (not group headers etc)
|
|
814
820
|
getRows(type){
|
|
815
821
|
var rows = [];
|
|
816
|
-
|
|
822
|
+
|
|
817
823
|
switch(type){
|
|
818
824
|
case "active":
|
|
819
825
|
rows = this.activeRows;
|
|
@@ -822,11 +828,11 @@ export default class RowManager extends CoreFeature{
|
|
|
822
828
|
case "display":
|
|
823
829
|
rows = this.table.rowManager.getDisplayRows();
|
|
824
830
|
break;
|
|
825
|
-
|
|
831
|
+
|
|
826
832
|
case "visible":
|
|
827
833
|
rows = this.getVisibleRows(false, true);
|
|
828
834
|
break;
|
|
829
|
-
|
|
835
|
+
|
|
830
836
|
default:
|
|
831
837
|
rows = this.chain("rows-retrieve", type, null, this.rows) || this.rows;
|
|
832
838
|
}
|
|
@@ -847,25 +853,25 @@ export default class RowManager extends CoreFeature{
|
|
|
847
853
|
this.dispatchExternal("renderStarted");
|
|
848
854
|
|
|
849
855
|
this.renderer.rerenderRows(callback);
|
|
850
|
-
|
|
856
|
+
|
|
851
857
|
if(!this.fixedHeight){
|
|
852
858
|
this.adjustTableSize();
|
|
853
859
|
}
|
|
854
|
-
|
|
860
|
+
|
|
855
861
|
this.scrollBarCheck();
|
|
856
862
|
|
|
857
863
|
this.dispatchExternal("renderComplete");
|
|
858
864
|
}
|
|
859
865
|
}
|
|
860
|
-
|
|
866
|
+
|
|
861
867
|
scrollBarCheck(){
|
|
862
868
|
var scrollbarWidth = 0;
|
|
863
|
-
|
|
869
|
+
|
|
864
870
|
//adjust for vertical scrollbar moving table when present
|
|
865
871
|
if(this.element.scrollHeight > this.element.clientHeight){
|
|
866
872
|
scrollbarWidth = this.element.offsetWidth - this.element.clientWidth;
|
|
867
873
|
}
|
|
868
|
-
|
|
874
|
+
|
|
869
875
|
if(scrollbarWidth !== this.scrollbarWidth){
|
|
870
876
|
this.scrollbarWidth = scrollbarWidth;
|
|
871
877
|
this.dispatch("scrollbar-vertical", scrollbarWidth);
|
|
@@ -918,7 +924,7 @@ export default class RowManager extends CoreFeature{
|
|
|
918
924
|
|
|
919
925
|
if(this.firstRender){
|
|
920
926
|
this.firstRender = false;
|
|
921
|
-
|
|
927
|
+
|
|
922
928
|
if(!this.fixedHeight){
|
|
923
929
|
this.adjustTableSize();
|
|
924
930
|
}
|
|
@@ -938,7 +944,7 @@ export default class RowManager extends CoreFeature{
|
|
|
938
944
|
if(!this.displayRowsCount){
|
|
939
945
|
this._showPlaceholder();
|
|
940
946
|
}
|
|
941
|
-
|
|
947
|
+
|
|
942
948
|
this.scrollBarCheck();
|
|
943
949
|
|
|
944
950
|
this.dispatchExternal("renderComplete");
|
|
@@ -963,7 +969,7 @@ export default class RowManager extends CoreFeature{
|
|
|
963
969
|
|
|
964
970
|
this.renderer.clearRows();
|
|
965
971
|
}
|
|
966
|
-
|
|
972
|
+
|
|
967
973
|
tableEmpty(){
|
|
968
974
|
this.renderEmptyScroll();
|
|
969
975
|
this._showPlaceholder();
|
|
@@ -971,10 +977,18 @@ export default class RowManager extends CoreFeature{
|
|
|
971
977
|
|
|
972
978
|
_showPlaceholder(){
|
|
973
979
|
if(this.placeholder){
|
|
980
|
+
if(this.placeholder && this.placeholder.parentNode){
|
|
981
|
+
this.placeholder.parentNode.removeChild(this.placeholder);
|
|
982
|
+
}
|
|
983
|
+
|
|
984
|
+
this.initializePlaceholder();
|
|
985
|
+
|
|
974
986
|
this.placeholder.setAttribute("tabulator-render-mode", this.renderMode);
|
|
975
987
|
|
|
976
988
|
this.getElement().appendChild(this.placeholder);
|
|
977
989
|
this._positionPlaceholder();
|
|
990
|
+
|
|
991
|
+
this.adjustTableSize();
|
|
978
992
|
}
|
|
979
993
|
}
|
|
980
994
|
|
|
@@ -982,7 +996,7 @@ export default class RowManager extends CoreFeature{
|
|
|
982
996
|
if(this.placeholder && this.placeholder.parentNode){
|
|
983
997
|
this.placeholder.parentNode.removeChild(this.placeholder);
|
|
984
998
|
}
|
|
985
|
-
|
|
999
|
+
|
|
986
1000
|
// clear empty table placeholder min
|
|
987
1001
|
this.tableElement.style.minWidth = "";
|
|
988
1002
|
this.tableElement.style.display = "";
|
|
@@ -1017,7 +1031,8 @@ export default class RowManager extends CoreFeature{
|
|
|
1017
1031
|
|
|
1018
1032
|
//adjust the height of the table holder to fit in the Tabulator element
|
|
1019
1033
|
adjustTableSize(){
|
|
1020
|
-
|
|
1034
|
+
let initialHeight = this.element.clientHeight, minHeight;
|
|
1035
|
+
let resized = false;
|
|
1021
1036
|
|
|
1022
1037
|
if(this.renderer.verticalFillMode === "fill"){
|
|
1023
1038
|
let otherHeight = Math.floor(this.table.columnManager.getElement().getBoundingClientRect().height + (this.table.footerManager && this.table.footerManager.active && !this.table.footerManager.external ? this.table.footerManager.getElement().getBoundingClientRect().height : 0));
|
|
@@ -1025,12 +1040,14 @@ export default class RowManager extends CoreFeature{
|
|
|
1025
1040
|
if(this.fixedHeight){
|
|
1026
1041
|
minHeight = isNaN(this.table.options.minHeight) ? this.table.options.minHeight : this.table.options.minHeight + "px";
|
|
1027
1042
|
|
|
1043
|
+
const height = "calc(100% - " + otherHeight + "px)";
|
|
1028
1044
|
this.element.style.minHeight = minHeight || "calc(100% - " + otherHeight + "px)";
|
|
1029
|
-
this.element.style.height =
|
|
1030
|
-
this.element.style.maxHeight =
|
|
1031
|
-
}else{
|
|
1045
|
+
this.element.style.height = height;
|
|
1046
|
+
this.element.style.maxHeight = height;
|
|
1047
|
+
} else {
|
|
1032
1048
|
this.element.style.height = "";
|
|
1033
|
-
this.element.style.height =
|
|
1049
|
+
this.element.style.height =
|
|
1050
|
+
this.table.element.clientHeight - otherHeight + "px";
|
|
1034
1051
|
this.element.scrollTop = this.scrollTop;
|
|
1035
1052
|
}
|
|
1036
1053
|
|
|
@@ -1038,17 +1055,19 @@ export default class RowManager extends CoreFeature{
|
|
|
1038
1055
|
|
|
1039
1056
|
//check if the table has changed size when dealing with variable height tables
|
|
1040
1057
|
if(!this.fixedHeight && initialHeight != this.element.clientHeight){
|
|
1058
|
+
resized = true;
|
|
1041
1059
|
if(this.subscribed("table-resize")){
|
|
1042
1060
|
this.dispatch("table-resize");
|
|
1043
1061
|
}else{
|
|
1044
1062
|
this.redraw();
|
|
1045
1063
|
}
|
|
1046
1064
|
}
|
|
1047
|
-
|
|
1065
|
+
|
|
1048
1066
|
this.scrollBarCheck();
|
|
1049
1067
|
}
|
|
1050
1068
|
|
|
1051
1069
|
this._positionPlaceholder();
|
|
1070
|
+
return resized;
|
|
1052
1071
|
}
|
|
1053
1072
|
|
|
1054
1073
|
//reinitialize all rows
|
|
@@ -1083,15 +1102,14 @@ export default class RowManager extends CoreFeature{
|
|
|
1083
1102
|
|
|
1084
1103
|
//redraw table
|
|
1085
1104
|
redraw (force){
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
this.adjustTableSize();
|
|
1089
|
-
|
|
1105
|
+
const resized = this.adjustTableSize();
|
|
1090
1106
|
this.table.tableWidth = this.table.element.clientWidth;
|
|
1091
1107
|
|
|
1092
1108
|
if(!force){
|
|
1093
|
-
|
|
1094
|
-
|
|
1109
|
+
if(resized) {
|
|
1110
|
+
this.reRenderInPosition();
|
|
1111
|
+
}
|
|
1112
|
+
this.scrollHorizontal(this.scrollLeft);
|
|
1095
1113
|
}else{
|
|
1096
1114
|
this.renderTable();
|
|
1097
1115
|
}
|
|
@@ -35,10 +35,12 @@ export default class CellComponent {
|
|
|
35
35
|
return this._cell.row.getComponent();
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
-
getData(){
|
|
39
|
-
return this._cell.row.getData();
|
|
38
|
+
getData(transform){
|
|
39
|
+
return this._cell.row.getData(transform);
|
|
40
|
+
}
|
|
41
|
+
getType(){
|
|
42
|
+
return "cell";
|
|
40
43
|
}
|
|
41
|
-
|
|
42
44
|
getField(){
|
|
43
45
|
return this._cell.column.getField();
|
|
44
46
|
}
|
|
@@ -99,8 +99,8 @@ export default class ColumnComponent {
|
|
|
99
99
|
return this._column;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
|
-
scrollTo(){
|
|
103
|
-
return this._column.table.columnManager.scrollToColumn(this._column);
|
|
102
|
+
scrollTo(position, ifVisible){
|
|
103
|
+
return this._column.table.columnManager.scrollToColumn(this._column, position, ifVisible);
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
getTable(){
|
|
@@ -4,14 +4,21 @@ export default class BasicHorizontal extends Renderer{
|
|
|
4
4
|
constructor(table){
|
|
5
5
|
super(table);
|
|
6
6
|
}
|
|
7
|
-
|
|
8
|
-
renderRowCells(row){
|
|
7
|
+
|
|
8
|
+
renderRowCells(row, inFragment) {
|
|
9
|
+
const rowFrag = document.createDocumentFragment();
|
|
9
10
|
row.cells.forEach((cell) => {
|
|
10
|
-
|
|
11
|
-
cell.cellRendered();
|
|
11
|
+
rowFrag.appendChild(cell.getElement());
|
|
12
12
|
});
|
|
13
|
+
row.element.appendChild(rowFrag);
|
|
14
|
+
|
|
15
|
+
if(!inFragment){
|
|
16
|
+
row.cells.forEach((cell) => {
|
|
17
|
+
cell.cellRendered();
|
|
18
|
+
});
|
|
19
|
+
}
|
|
13
20
|
}
|
|
14
|
-
|
|
21
|
+
|
|
15
22
|
reinitializeColumnWidths(columns){
|
|
16
23
|
columns.forEach(function(column){
|
|
17
24
|
column.reinitializeWidth();
|
|
@@ -4,77 +4,98 @@ import Helpers from '../../tools/Helpers.js';
|
|
|
4
4
|
export default class BasicVertical extends Renderer{
|
|
5
5
|
constructor(table){
|
|
6
6
|
super(table);
|
|
7
|
-
|
|
7
|
+
|
|
8
8
|
this.verticalFillMode = "fill";
|
|
9
|
-
|
|
9
|
+
|
|
10
10
|
this.scrollTop = 0;
|
|
11
11
|
this.scrollLeft = 0;
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
this.scrollTop = 0;
|
|
14
14
|
this.scrollLeft = 0;
|
|
15
15
|
}
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
clearRows(){
|
|
18
18
|
var element = this.tableElement;
|
|
19
|
-
|
|
19
|
+
|
|
20
20
|
// element.children.detach();
|
|
21
21
|
while(element.firstChild) element.removeChild(element.firstChild);
|
|
22
|
-
|
|
22
|
+
|
|
23
23
|
element.scrollTop = 0;
|
|
24
24
|
element.scrollLeft = 0;
|
|
25
|
-
|
|
25
|
+
|
|
26
26
|
element.style.minWidth = "";
|
|
27
27
|
element.style.minHeight = "";
|
|
28
28
|
element.style.display = "";
|
|
29
29
|
element.style.visibility = "";
|
|
30
30
|
}
|
|
31
|
-
|
|
32
|
-
renderRows(){
|
|
31
|
+
|
|
32
|
+
renderRows() {
|
|
33
33
|
var element = this.tableElement,
|
|
34
|
-
onlyGroupHeaders = true
|
|
35
|
-
|
|
36
|
-
this.rows()
|
|
34
|
+
onlyGroupHeaders = true,
|
|
35
|
+
tableFrag = document.createDocumentFragment(),
|
|
36
|
+
rows = this.rows();
|
|
37
|
+
|
|
38
|
+
rows.forEach((row, index) => {
|
|
37
39
|
this.styleRow(row, index);
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
if(row.type !== "group"){
|
|
40
|
+
row.initialize(false, true);
|
|
41
|
+
|
|
42
|
+
if (row.type !== "group") {
|
|
42
43
|
onlyGroupHeaders = false;
|
|
43
44
|
}
|
|
45
|
+
|
|
46
|
+
tableFrag.appendChild(row.getElement());
|
|
44
47
|
});
|
|
45
|
-
|
|
48
|
+
|
|
49
|
+
element.appendChild(tableFrag);
|
|
50
|
+
|
|
51
|
+
rows.forEach((row) => {
|
|
52
|
+
row.rendered();
|
|
53
|
+
|
|
54
|
+
if(!row.heightInitialized) {
|
|
55
|
+
row.calcHeight(true);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
rows.forEach((row) => {
|
|
60
|
+
if(!row.heightInitialized) {
|
|
61
|
+
row.setCellHeight();
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
46
67
|
if(onlyGroupHeaders){
|
|
47
68
|
element.style.minWidth = this.table.columnManager.getWidth() + "px";
|
|
48
69
|
}else{
|
|
49
70
|
element.style.minWidth = "";
|
|
50
71
|
}
|
|
51
72
|
}
|
|
52
|
-
|
|
53
|
-
|
|
73
|
+
|
|
74
|
+
|
|
54
75
|
rerenderRows(callback){
|
|
55
76
|
this.clearRows();
|
|
56
|
-
|
|
77
|
+
|
|
57
78
|
if(callback){
|
|
58
79
|
callback();
|
|
59
80
|
}
|
|
60
|
-
|
|
81
|
+
|
|
61
82
|
this.renderRows();
|
|
62
83
|
}
|
|
63
|
-
|
|
84
|
+
|
|
64
85
|
scrollToRowNearestTop(row){
|
|
65
86
|
var rowTop = Helpers.elOffset(row.getElement()).top;
|
|
66
|
-
|
|
87
|
+
|
|
67
88
|
return !(Math.abs(this.elementVertical.scrollTop - rowTop) > Math.abs(this.elementVertical.scrollTop + this.elementVertical.clientHeight - rowTop));
|
|
68
89
|
}
|
|
69
|
-
|
|
90
|
+
|
|
70
91
|
scrollToRow(row){
|
|
71
92
|
var rowEl = row.getElement();
|
|
72
|
-
|
|
93
|
+
|
|
73
94
|
this.elementVertical.scrollTop = Helpers.elOffset(rowEl).top - Helpers.elOffset(this.elementVertical).top + this.elementVertical.scrollTop;
|
|
74
95
|
}
|
|
75
|
-
|
|
96
|
+
|
|
76
97
|
visibleRows(includingBuffer){
|
|
77
98
|
return this.rows();
|
|
78
99
|
}
|
|
79
|
-
|
|
80
|
-
}
|
|
100
|
+
|
|
101
|
+
}
|
|
@@ -173,8 +173,13 @@ export default class VirtualDomHorizontal extends Renderer{
|
|
|
173
173
|
if(this.initialized){
|
|
174
174
|
this.initializeRow(row);
|
|
175
175
|
}else{
|
|
176
|
+
const rowFrag = document.createDocumentFragment();
|
|
177
|
+
row.cells.forEach((cell) => {
|
|
178
|
+
rowFrag.appendChild(cell.getElement());
|
|
179
|
+
});
|
|
180
|
+
row.element.appendChild(rowFrag);
|
|
181
|
+
|
|
176
182
|
row.cells.forEach((cell) => {
|
|
177
|
-
row.element.appendChild(cell.getElement());
|
|
178
183
|
cell.cellRendered();
|
|
179
184
|
});
|
|
180
185
|
}
|