tabulator-tables 5.2.7 → 5.3.2
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/.eslintignore +3 -0
- package/.eslintrc.js +28 -0
- package/.github/workflows/bad-files-check.yml +39 -0
- package/.github/workflows/lint-and-test.yml +31 -0
- package/README.md +3 -3
- package/bower.json +1 -1
- package/build/Bundler.js +77 -77
- package/dist/css/tabulator.css +12 -7
- 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 +12 -7
- 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 +12 -7
- 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 +12 -7
- 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 +12 -7
- 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 +12 -7
- 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 +12 -7
- 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 +12 -7
- 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 +12 -7
- 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 +12 -7
- 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 +12 -7
- 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 +37 -37
- package/dist/js/tabulator.js +1551 -793
- 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 +4300 -3581
- 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 +4 -1
- package/src/js/builds/jquery_wrapper.js +37 -37
- package/src/js/core/ColumnManager.js +270 -232
- package/src/js/core/CoreFeature.js +16 -2
- package/src/js/core/FooterManager.js +10 -10
- package/src/js/core/Module.js +8 -8
- package/src/js/core/RowManager.js +139 -156
- package/src/js/core/Tabulator.js +88 -74
- package/src/js/core/TabulatorFull.js +1 -1
- package/src/js/core/cell/Cell.js +15 -16
- package/src/js/core/cell/CellComponent.js +2 -2
- package/src/js/core/column/Column.js +81 -68
- package/src/js/core/column/ColumnComponent.js +4 -4
- package/src/js/core/column/defaults/options.js +1 -1
- package/src/js/core/defaults/options.js +4 -2
- package/src/js/core/rendering/Renderer.js +19 -19
- package/src/js/core/rendering/renderers/BasicHorizontal.js +1 -2
- package/src/js/core/rendering/renderers/BasicVertical.js +1 -1
- package/src/js/core/rendering/renderers/VirtualDomHorizontal.js +42 -58
- package/src/js/core/rendering/renderers/VirtualDomVertical.js +31 -22
- package/src/js/core/row/Row.js +32 -8
- package/src/js/core/row/RowComponent.js +8 -4
- package/src/js/core/tools/Alert.js +44 -45
- package/src/js/core/tools/ComponentFunctionBinder.js +4 -2
- package/src/js/core/tools/DataLoader.js +3 -3
- package/src/js/core/tools/DeprecationAdvisor.js +47 -0
- package/src/js/core/tools/ExternalEventBus.js +5 -5
- package/src/js/core/tools/InteractionMonitor.js +41 -39
- package/src/js/core/tools/InternalEventBus.js +5 -5
- package/src/js/core/tools/ModuleBinder.js +6 -6
- package/src/js/core/tools/OptionsList.js +4 -4
- package/src/js/core/tools/Popup.js +211 -202
- package/src/js/modules/Accessor/Accessor.js +16 -16
- package/src/js/modules/Accessor/defaults/accessors.js +1 -1
- package/src/js/modules/Ajax/Ajax.js +7 -7
- package/src/js/modules/Ajax/defaults/loaderPromise.js +19 -19
- package/src/js/modules/Ajax/defaults/urlGenerator.js +1 -1
- package/src/js/modules/Clipboard/Clipboard.js +23 -23
- package/src/js/modules/Clipboard/defaults/pasteParsers.js +0 -2
- package/src/js/modules/ColumnCalcs/CalcComponent.js +2 -2
- package/src/js/modules/ColumnCalcs/ColumnCalcs.js +55 -51
- package/src/js/modules/ColumnCalcs/defaults/calculations.js +1 -1
- package/src/js/modules/DataTree/DataTree.js +24 -15
- package/src/js/modules/Download/Download.js +15 -8
- package/src/js/modules/Download/defaults/downloaders/csv.js +28 -28
- package/src/js/modules/Download/defaults/downloaders/html.js +2 -2
- package/src/js/modules/Download/defaults/downloaders/json.js +14 -14
- package/src/js/modules/Download/defaults/downloaders/jsonLines.js +1 -1
- package/src/js/modules/Download/defaults/downloaders/pdf.js +17 -19
- package/src/js/modules/Download/defaults/downloaders/xlsx.js +2 -2
- package/src/js/modules/Edit/Edit.js +219 -201
- package/src/js/modules/Edit/List.js +1026 -1006
- package/src/js/modules/Edit/defaults/editors/autocomplete.js +3 -3
- package/src/js/modules/Edit/defaults/editors/date.js +110 -0
- package/src/js/modules/Edit/defaults/editors/datetime.js +97 -0
- package/src/js/modules/Edit/defaults/editors/input.js +7 -7
- package/src/js/modules/Edit/defaults/editors/list.js +2 -2
- package/src/js/modules/Edit/defaults/editors/number.js +12 -12
- package/src/js/modules/Edit/defaults/editors/progress.js +11 -11
- package/src/js/modules/Edit/defaults/editors/range.js +5 -5
- package/src/js/modules/Edit/defaults/editors/select.js +3 -3
- package/src/js/modules/Edit/defaults/editors/star.js +9 -9
- package/src/js/modules/Edit/defaults/editors/textarea.js +97 -92
- package/src/js/modules/Edit/defaults/editors/tickCross.js +1 -3
- package/src/js/modules/Edit/defaults/editors/time.js +98 -0
- package/src/js/modules/Edit/defaults/editors.js +8 -2
- package/src/js/modules/Edit/inputMask.js +19 -26
- package/src/js/modules/Export/Export.js +69 -65
- package/src/js/modules/Filter/Filter.js +88 -95
- package/src/js/modules/Format/Format.js +24 -26
- package/src/js/modules/Format/defaults/formatters/buttonCross.js +1 -1
- package/src/js/modules/Format/defaults/formatters/buttonTick.js +1 -1
- package/src/js/modules/Format/defaults/formatters/color.js +1 -1
- package/src/js/modules/Format/defaults/formatters/datetime.js +7 -7
- package/src/js/modules/Format/defaults/formatters/datetimediff.js +7 -7
- package/src/js/modules/Format/defaults/formatters/handle.js +1 -1
- package/src/js/modules/Format/defaults/formatters/html.js +1 -1
- package/src/js/modules/Format/defaults/formatters/image.js +9 -9
- package/src/js/modules/Format/defaults/formatters/link.js +10 -10
- package/src/js/modules/Format/defaults/formatters/lookup.js +1 -1
- package/src/js/modules/Format/defaults/formatters/money.js +1 -1
- package/src/js/modules/Format/defaults/formatters/plaintext.js +1 -1
- package/src/js/modules/Format/defaults/formatters/progress.js +41 -42
- package/src/js/modules/Format/defaults/formatters/responsiveCollapse.js +3 -3
- package/src/js/modules/Format/defaults/formatters/rowSelection.js +1 -1
- package/src/js/modules/Format/defaults/formatters/rownum.js +9 -2
- package/src/js/modules/Format/defaults/formatters/star.js +1 -1
- package/src/js/modules/Format/defaults/formatters/textarea.js +1 -1
- package/src/js/modules/Format/defaults/formatters/tickCross.js +1 -1
- package/src/js/modules/Format/defaults/formatters/traffic.js +14 -14
- package/src/js/modules/FrozenColumns/FrozenColumns.js +6 -8
- package/src/js/modules/FrozenRows/FrozenRows.js +37 -7
- package/src/js/modules/GroupRows/Group.js +7 -7
- package/src/js/modules/GroupRows/GroupComponent.js +2 -2
- package/src/js/modules/GroupRows/GroupRows.js +34 -11
- package/src/js/modules/History/History.js +2 -2
- package/src/js/modules/HtmlTableImport/HtmlTableImport.js +3 -6
- package/src/js/modules/Import/Import.js +158 -159
- package/src/js/modules/Import/defaults/importers/array.js +5 -0
- package/src/js/modules/Import/defaults/importers/csv.js +49 -49
- package/src/js/modules/Import/defaults/importers/json.js +6 -6
- package/src/js/modules/Import/defaults/importers.js +2 -0
- package/src/js/modules/Interaction/Interaction.js +42 -43
- package/src/js/modules/Keybindings/Keybindings.js +14 -14
- package/src/js/modules/Keybindings/defaults/actions.js +1 -2
- package/src/js/modules/Layout/Layout.js +4 -5
- package/src/js/modules/Layout/defaults/modes/fitColumns.js +13 -16
- package/src/js/modules/Layout/defaults/modes/fitData.js +6 -4
- package/src/js/modules/Layout/defaults/modes/fitDataGeneral.js +2 -2
- package/src/js/modules/Layout/defaults/modes/fitDataStretch.js +2 -2
- package/src/js/modules/Localize/Localize.js +7 -7
- package/src/js/modules/Menu/Menu.js +8 -11
- package/src/js/modules/MoveColumns/MoveColumns.js +3 -6
- package/src/js/modules/MoveRows/MoveRows.js +30 -36
- package/src/js/modules/Mutator/Mutator.js +9 -9
- package/src/js/modules/Page/Page.js +73 -80
- package/src/js/modules/Page/defaults/pageCounters/pages.js +2 -2
- package/src/js/modules/Page/defaults/pageCounters/rows.js +1 -1
- package/src/js/modules/Persistence/Persistence.js +40 -44
- package/src/js/modules/Persistence/defaults/readers.js +1 -1
- package/src/js/modules/Popup/Popup.js +4 -5
- package/src/js/modules/Print/Print.js +2 -2
- package/src/js/modules/ReactiveData/ReactiveData.js +178 -115
- package/src/js/modules/ResizeColumns/ResizeColumns.js +3 -3
- package/src/js/modules/ResizeRows/ResizeRows.js +1 -1
- package/src/js/modules/ResizeTable/ResizeTable.js +77 -46
- package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +3 -5
- package/src/js/modules/SelectRow/SelectRow.js +26 -28
- package/src/js/modules/Sort/Sort.js +113 -85
- package/src/js/modules/Sort/defaults/sorters/alphanum.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/array.js +24 -28
- package/src/js/modules/Sort/defaults/sorters/boolean.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/date.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/datetime.js +13 -13
- package/src/js/modules/Sort/defaults/sorters/exists.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/number.js +1 -1
- package/src/js/modules/Sort/defaults/sorters/string.js +7 -7
- package/src/js/modules/Sort/defaults/sorters/time.js +1 -1
- package/src/js/modules/Tooltip/Tooltip.js +5 -7
- package/src/js/modules/Validate/Validate.js +10 -13
- package/src/js/modules/Validate/defaults/validators.js +8 -3
- package/src/scss/tabulator.scss +28 -17
- package/src/scss/themes/bootstrap/functions4.scss +1 -1
- package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +8 -8
- package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +8 -8
- package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +8 -8
- package/src/scss/themes/bulma/tabulator_bulma.scss +7 -7
- package/src/scss/themes/materialize/tabulator_materialize.scss +6 -6
- package/src/scss/themes/materialize/variables.scss +1 -1
- package/src/scss/themes/semanticui/tabulator_semanticui.scss +7 -7
- package/src/scss/themes/tabulator_midnight.scss +7 -7
- package/src/scss/themes/tabulator_modern.scss +14 -14
- package/src/scss/themes/tabulator_simple.scss +8 -8
- package/src/scss/themes/tabulator_site.scss +15 -15
|
@@ -1,129 +1,157 @@
|
|
|
1
1
|
import Module from '../../core/Module.js';
|
|
2
2
|
|
|
3
3
|
class ReactiveData extends Module{
|
|
4
|
-
|
|
4
|
+
|
|
5
5
|
constructor(table){
|
|
6
6
|
super(table);
|
|
7
|
-
|
|
7
|
+
|
|
8
8
|
this.data = false;
|
|
9
9
|
this.blocked = false; //block reactivity while performing update
|
|
10
10
|
this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with
|
|
11
11
|
this.currentVersion = 0;
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
this.registerTableOption("reactiveData", false); //enable data reactivity
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
initialize(){
|
|
17
17
|
if(this.table.options.reactiveData){
|
|
18
|
-
this.subscribe("cell-value-save-before", this.block.bind(this));
|
|
19
|
-
this.subscribe("cell-value-save-after", this.unblock.bind(this));
|
|
20
|
-
this.subscribe("row-data-save-before", this.block.bind(this));
|
|
21
|
-
this.subscribe("row-data-save-after", this.unblock.bind(this));
|
|
18
|
+
this.subscribe("cell-value-save-before", this.block.bind(this, "cellsave"));
|
|
19
|
+
this.subscribe("cell-value-save-after", this.unblock.bind(this, "cellsave"));
|
|
20
|
+
this.subscribe("row-data-save-before", this.block.bind(this, "rowsave"));
|
|
21
|
+
this.subscribe("row-data-save-after", this.unblock.bind(this, "rowsave"));
|
|
22
22
|
this.subscribe("row-data-init-after", this.watchRow.bind(this));
|
|
23
23
|
this.subscribe("data-processing", this.watchData.bind(this));
|
|
24
24
|
this.subscribe("table-destroy", this.unwatchData.bind(this));
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
watchData(data){
|
|
29
29
|
var self = this,
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
version;
|
|
31
|
+
|
|
32
32
|
this.currentVersion ++;
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
version = this.currentVersion;
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
this.unwatchData();
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
this.data = data;
|
|
39
|
-
|
|
39
|
+
|
|
40
40
|
//override array push function
|
|
41
41
|
this.origFuncs.push = data.push;
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
Object.defineProperty(this.data, "push", {
|
|
44
44
|
enumerable: false,
|
|
45
45
|
configurable: true,
|
|
46
46
|
value: function(){
|
|
47
|
-
var args = Array.from(arguments)
|
|
47
|
+
var args = Array.from(arguments),
|
|
48
|
+
result;
|
|
49
|
+
|
|
50
|
+
if(!self.blocked && version === self.currentVersion){
|
|
51
|
+
self.block("data-push");
|
|
48
52
|
|
|
49
|
-
if(!self.blocked && version === self.currentVersion){
|
|
50
53
|
args.forEach((arg) => {
|
|
51
54
|
self.table.rowManager.addRowActual(arg, false);
|
|
52
55
|
});
|
|
56
|
+
|
|
57
|
+
result = self.origFuncs.push.apply(data, arguments);
|
|
58
|
+
|
|
59
|
+
self.unblock("data-push");
|
|
53
60
|
}
|
|
54
|
-
|
|
55
|
-
return
|
|
61
|
+
|
|
62
|
+
return result;
|
|
56
63
|
}
|
|
57
64
|
});
|
|
58
|
-
|
|
65
|
+
|
|
59
66
|
//override array unshift function
|
|
60
67
|
this.origFuncs.unshift = data.unshift;
|
|
61
|
-
|
|
68
|
+
|
|
62
69
|
Object.defineProperty(this.data, "unshift", {
|
|
63
70
|
enumerable: false,
|
|
64
71
|
configurable: true,
|
|
65
72
|
value: function(){
|
|
66
|
-
var args = Array.from(arguments)
|
|
67
|
-
|
|
73
|
+
var args = Array.from(arguments),
|
|
74
|
+
result;
|
|
75
|
+
|
|
68
76
|
if(!self.blocked && version === self.currentVersion){
|
|
77
|
+
self.block("data-unshift");
|
|
78
|
+
|
|
69
79
|
args.forEach((arg) => {
|
|
70
80
|
self.table.rowManager.addRowActual(arg, true);
|
|
71
81
|
});
|
|
82
|
+
|
|
83
|
+
result = self.origFuncs.unshift.apply(data, arguments);
|
|
84
|
+
|
|
85
|
+
self.unblock("data-unshift");
|
|
72
86
|
}
|
|
73
|
-
|
|
74
|
-
return
|
|
87
|
+
|
|
88
|
+
return result;
|
|
75
89
|
}
|
|
76
90
|
});
|
|
77
|
-
|
|
78
|
-
|
|
91
|
+
|
|
92
|
+
|
|
79
93
|
//override array shift function
|
|
80
94
|
this.origFuncs.shift = data.shift;
|
|
81
|
-
|
|
95
|
+
|
|
82
96
|
Object.defineProperty(this.data, "shift", {
|
|
83
97
|
enumerable: false,
|
|
84
98
|
configurable: true,
|
|
85
99
|
value: function(){
|
|
86
|
-
var row;
|
|
87
|
-
|
|
100
|
+
var row, result;
|
|
101
|
+
|
|
88
102
|
if(!self.blocked && version === self.currentVersion){
|
|
103
|
+
self.block("data-shift");
|
|
104
|
+
|
|
89
105
|
if(self.data.length){
|
|
90
106
|
row = self.table.rowManager.getRowFromDataObject(self.data[0]);
|
|
91
|
-
|
|
107
|
+
|
|
92
108
|
if(row){
|
|
93
109
|
row.deleteActual();
|
|
94
110
|
}
|
|
95
111
|
}
|
|
96
|
-
}
|
|
97
112
|
|
|
98
|
-
|
|
113
|
+
result = self.origFuncs.shift.call(data);
|
|
114
|
+
|
|
115
|
+
self.unblock("data-shift");
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
return result;
|
|
99
119
|
}
|
|
100
120
|
});
|
|
101
|
-
|
|
121
|
+
|
|
102
122
|
//override array pop function
|
|
103
123
|
this.origFuncs.pop = data.pop;
|
|
104
|
-
|
|
124
|
+
|
|
105
125
|
Object.defineProperty(this.data, "pop", {
|
|
106
126
|
enumerable: false,
|
|
107
127
|
configurable: true,
|
|
108
128
|
value: function(){
|
|
109
|
-
var row;
|
|
129
|
+
var row, result;
|
|
130
|
+
|
|
110
131
|
if(!self.blocked && version === self.currentVersion){
|
|
132
|
+
self.block("data-pop");
|
|
133
|
+
|
|
111
134
|
if(self.data.length){
|
|
112
135
|
row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);
|
|
113
|
-
|
|
136
|
+
|
|
114
137
|
if(row){
|
|
115
138
|
row.deleteActual();
|
|
116
139
|
}
|
|
117
140
|
}
|
|
141
|
+
|
|
142
|
+
result = self.origFuncs.pop.call(data);
|
|
143
|
+
|
|
144
|
+
self.unblock("data-pop");
|
|
118
145
|
}
|
|
119
|
-
|
|
146
|
+
|
|
147
|
+
return result;
|
|
120
148
|
}
|
|
121
149
|
});
|
|
122
|
-
|
|
123
|
-
|
|
150
|
+
|
|
151
|
+
|
|
124
152
|
//override array splice function
|
|
125
153
|
this.origFuncs.splice = data.splice;
|
|
126
|
-
|
|
154
|
+
|
|
127
155
|
Object.defineProperty(this.data, "splice", {
|
|
128
156
|
enumerable: false,
|
|
129
157
|
configurable: true,
|
|
@@ -132,50 +160,54 @@ class ReactiveData extends Module{
|
|
|
132
160
|
start = args[0] < 0 ? data.length + args[0] : args[0],
|
|
133
161
|
end = args[1],
|
|
134
162
|
newRows = args[2] ? args.slice(2) : false,
|
|
135
|
-
startRow;
|
|
136
|
-
|
|
163
|
+
startRow, result;
|
|
164
|
+
|
|
137
165
|
if(!self.blocked && version === self.currentVersion){
|
|
138
|
-
|
|
166
|
+
self.block("data-splice");
|
|
139
167
|
//add new rows
|
|
140
168
|
if(newRows){
|
|
141
169
|
startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;
|
|
142
|
-
|
|
170
|
+
|
|
143
171
|
if(startRow){
|
|
144
172
|
newRows.forEach((rowData) => {
|
|
145
173
|
self.table.rowManager.addRowActual(rowData, true, startRow, true);
|
|
146
174
|
});
|
|
147
175
|
}else{
|
|
148
176
|
newRows = newRows.slice().reverse();
|
|
149
|
-
|
|
177
|
+
|
|
150
178
|
newRows.forEach((rowData) => {
|
|
151
179
|
self.table.rowManager.addRowActual(rowData, true, false, true);
|
|
152
180
|
});
|
|
153
181
|
}
|
|
154
182
|
}
|
|
155
|
-
|
|
183
|
+
|
|
156
184
|
//delete removed rows
|
|
157
185
|
if(end !== 0){
|
|
158
186
|
var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end);
|
|
159
|
-
|
|
187
|
+
|
|
160
188
|
oldRows.forEach((rowData, i) => {
|
|
161
189
|
var row = self.table.rowManager.getRowFromDataObject(rowData);
|
|
162
|
-
|
|
190
|
+
|
|
163
191
|
if(row){
|
|
164
192
|
row.deleteActual(i !== oldRows.length - 1);
|
|
165
193
|
}
|
|
166
194
|
});
|
|
167
195
|
}
|
|
168
|
-
|
|
196
|
+
|
|
169
197
|
if(newRows || end !== 0){
|
|
170
198
|
self.table.rowManager.reRenderInPosition();
|
|
171
199
|
}
|
|
172
|
-
}
|
|
173
200
|
|
|
174
|
-
|
|
201
|
+
result = self.origFuncs.splice.apply(data, arguments);
|
|
202
|
+
|
|
203
|
+
self.unblock("data-splice");
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
return result ;
|
|
175
207
|
}
|
|
176
208
|
});
|
|
177
209
|
}
|
|
178
|
-
|
|
210
|
+
|
|
179
211
|
unwatchData(){
|
|
180
212
|
if(this.data !== false){
|
|
181
213
|
for(var key in this.origFuncs){
|
|
@@ -188,152 +220,183 @@ class ReactiveData extends Module{
|
|
|
188
220
|
}
|
|
189
221
|
}
|
|
190
222
|
}
|
|
191
|
-
|
|
223
|
+
|
|
192
224
|
watchRow(row){
|
|
193
225
|
var data = row.getData();
|
|
194
|
-
|
|
195
|
-
this.blocked = true;
|
|
196
|
-
|
|
226
|
+
|
|
197
227
|
for(var key in data){
|
|
198
228
|
this.watchKey(row, data, key);
|
|
199
229
|
}
|
|
200
|
-
|
|
230
|
+
|
|
201
231
|
if(this.table.options.dataTree){
|
|
202
232
|
this.watchTreeChildren(row);
|
|
203
233
|
}
|
|
204
|
-
|
|
205
|
-
this.blocked = false;
|
|
206
234
|
}
|
|
207
|
-
|
|
235
|
+
|
|
208
236
|
watchTreeChildren (row){
|
|
209
|
-
var
|
|
237
|
+
var self = this,
|
|
238
|
+
childField = row.getData()[this.table.options.dataTreeChildField],
|
|
210
239
|
origFuncs = {};
|
|
211
|
-
|
|
212
|
-
function rebuildTree(){
|
|
213
|
-
this.table.modules.dataTree.initializeRow(row);
|
|
214
|
-
this.table.modules.dataTree.layoutRow(row);
|
|
215
|
-
this.table.rowManager.refreshActiveData("tree", false, true);
|
|
216
|
-
}
|
|
217
|
-
|
|
240
|
+
|
|
218
241
|
if(childField){
|
|
219
|
-
|
|
242
|
+
|
|
220
243
|
origFuncs.push = childField.push;
|
|
221
|
-
|
|
244
|
+
|
|
222
245
|
Object.defineProperty(childField, "push", {
|
|
223
246
|
enumerable: false,
|
|
224
247
|
configurable: true,
|
|
225
248
|
value: () => {
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
249
|
+
if(!self.blocked){
|
|
250
|
+
self.block("tree-push");
|
|
251
|
+
|
|
252
|
+
var result = origFuncs.push.apply(childField, arguments);
|
|
253
|
+
this.rebuildTree(row);
|
|
254
|
+
|
|
255
|
+
self.unblock("tree-push");
|
|
256
|
+
}
|
|
257
|
+
|
|
230
258
|
return result;
|
|
231
259
|
}
|
|
232
260
|
});
|
|
233
|
-
|
|
261
|
+
|
|
234
262
|
origFuncs.unshift = childField.unshift;
|
|
235
|
-
|
|
263
|
+
|
|
236
264
|
Object.defineProperty(childField, "unshift", {
|
|
237
265
|
enumerable: false,
|
|
238
266
|
configurable: true,
|
|
239
267
|
value: () => {
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
268
|
+
if(!self.blocked){
|
|
269
|
+
self.block("tree-unshift");
|
|
270
|
+
|
|
271
|
+
var result = origFuncs.unshift.apply(childField, arguments);
|
|
272
|
+
this.rebuildTree(row);
|
|
273
|
+
|
|
274
|
+
self.unblock("tree-unshift");
|
|
275
|
+
}
|
|
276
|
+
|
|
244
277
|
return result;
|
|
245
278
|
}
|
|
246
279
|
});
|
|
247
|
-
|
|
280
|
+
|
|
248
281
|
origFuncs.shift = childField.shift;
|
|
249
|
-
|
|
282
|
+
|
|
250
283
|
Object.defineProperty(childField, "shift", {
|
|
251
284
|
enumerable: false,
|
|
252
285
|
configurable: true,
|
|
253
286
|
value: () => {
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
287
|
+
if(!self.blocked){
|
|
288
|
+
self.block("tree-shift");
|
|
289
|
+
|
|
290
|
+
var result = origFuncs.shift.call(childField);
|
|
291
|
+
this.rebuildTree(row);
|
|
292
|
+
|
|
293
|
+
self.unblock("tree-shift");
|
|
294
|
+
}
|
|
295
|
+
|
|
258
296
|
return result;
|
|
259
297
|
}
|
|
260
298
|
});
|
|
261
|
-
|
|
299
|
+
|
|
262
300
|
origFuncs.pop = childField.pop;
|
|
263
|
-
|
|
301
|
+
|
|
264
302
|
Object.defineProperty(childField, "pop", {
|
|
265
303
|
enumerable: false,
|
|
266
304
|
configurable: true,
|
|
267
305
|
value: () => {
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
306
|
+
if(!self.blocked){
|
|
307
|
+
self.block("tree-pop");
|
|
308
|
+
|
|
309
|
+
var result = origFuncs.pop.call(childField);
|
|
310
|
+
this.rebuildTree(row);
|
|
311
|
+
|
|
312
|
+
self.unblock("tree-pop");
|
|
313
|
+
}
|
|
314
|
+
|
|
272
315
|
return result;
|
|
273
316
|
}
|
|
274
317
|
});
|
|
275
|
-
|
|
318
|
+
|
|
276
319
|
origFuncs.splice = childField.splice;
|
|
277
|
-
|
|
320
|
+
|
|
278
321
|
Object.defineProperty(childField, "splice", {
|
|
279
322
|
enumerable: false,
|
|
280
323
|
configurable: true,
|
|
281
324
|
value: () => {
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
325
|
+
if(!self.blocked){
|
|
326
|
+
self.block("tree-splice");
|
|
327
|
+
|
|
328
|
+
var result = origFuncs.splice.apply(childField, arguments);
|
|
329
|
+
this.rebuildTree(row);
|
|
330
|
+
|
|
331
|
+
self.unblock("tree-splice");
|
|
332
|
+
}
|
|
333
|
+
|
|
286
334
|
return result;
|
|
287
335
|
}
|
|
288
336
|
});
|
|
289
337
|
}
|
|
290
338
|
}
|
|
291
|
-
|
|
339
|
+
|
|
340
|
+
rebuildTree(row){
|
|
341
|
+
this.table.modules.dataTree.initializeRow(row);
|
|
342
|
+
this.table.modules.dataTree.layoutRow(row);
|
|
343
|
+
this.table.rowManager.refreshActiveData("tree", false, true);
|
|
344
|
+
}
|
|
345
|
+
|
|
292
346
|
watchKey(row, data, key){
|
|
293
|
-
var
|
|
347
|
+
var self = this,
|
|
348
|
+
props = Object.getOwnPropertyDescriptor(data, key),
|
|
294
349
|
value = data[key],
|
|
295
350
|
version = this.currentVersion;
|
|
296
|
-
|
|
351
|
+
|
|
297
352
|
Object.defineProperty(data, key, {
|
|
298
353
|
set: (newValue) => {
|
|
299
354
|
value = newValue;
|
|
300
|
-
if(!
|
|
355
|
+
if(!self.blocked && version === self.currentVersion){
|
|
356
|
+
self.block("key");
|
|
357
|
+
|
|
301
358
|
var update = {};
|
|
302
359
|
update[key] = newValue;
|
|
303
360
|
row.updateData(update);
|
|
361
|
+
|
|
362
|
+
self.unblock("key");
|
|
304
363
|
}
|
|
305
|
-
|
|
364
|
+
|
|
306
365
|
if(props.set){
|
|
307
366
|
props.set(newValue);
|
|
308
367
|
}
|
|
309
368
|
},
|
|
310
369
|
get:() => {
|
|
311
|
-
|
|
370
|
+
|
|
312
371
|
if(props.get){
|
|
313
372
|
props.get();
|
|
314
373
|
}
|
|
315
|
-
|
|
374
|
+
|
|
316
375
|
return value;
|
|
317
376
|
}
|
|
318
377
|
});
|
|
319
378
|
}
|
|
320
|
-
|
|
379
|
+
|
|
321
380
|
unwatchRow(row){
|
|
322
381
|
var data = row.getData();
|
|
323
|
-
|
|
382
|
+
|
|
324
383
|
for(var key in data){
|
|
325
384
|
Object.defineProperty(data, key, {
|
|
326
385
|
value:data[key],
|
|
327
386
|
});
|
|
328
387
|
}
|
|
329
388
|
}
|
|
330
|
-
|
|
331
|
-
block(){
|
|
332
|
-
this.blocked
|
|
389
|
+
|
|
390
|
+
block(key){
|
|
391
|
+
if(!this.blocked){
|
|
392
|
+
this.blocked = key;
|
|
393
|
+
}
|
|
333
394
|
}
|
|
334
|
-
|
|
335
|
-
unblock(){
|
|
336
|
-
this.blocked
|
|
395
|
+
|
|
396
|
+
unblock(key){
|
|
397
|
+
if(this.blocked === key){
|
|
398
|
+
this.blocked = false;
|
|
399
|
+
}
|
|
337
400
|
}
|
|
338
401
|
}
|
|
339
402
|
|
|
@@ -84,7 +84,7 @@ class ResizeColumns extends Module{
|
|
|
84
84
|
|
|
85
85
|
reinitializeColumn(column){
|
|
86
86
|
var frozenOffset = column.modules.frozen ? (column.modules.frozen.marginValue + column.getWidth() + "px") : false;
|
|
87
|
-
|
|
87
|
+
|
|
88
88
|
|
|
89
89
|
column.cells.forEach((cell) => {
|
|
90
90
|
if(cell.modules.resize && cell.modules.resize.handleEl){
|
|
@@ -236,7 +236,7 @@ class ResizeColumns extends Module{
|
|
|
236
236
|
}
|
|
237
237
|
}
|
|
238
238
|
|
|
239
|
-
self.table.columnManager.
|
|
239
|
+
self.table.columnManager.rerenderColumns(true);
|
|
240
240
|
|
|
241
241
|
if(!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight){
|
|
242
242
|
column.checkCellHeights();
|
|
@@ -268,7 +268,7 @@ class ResizeColumns extends Module{
|
|
|
268
268
|
}
|
|
269
269
|
}
|
|
270
270
|
|
|
271
|
-
e.stopPropagation(); //prevent resize from
|
|
271
|
+
e.stopPropagation(); //prevent resize from interfering with movable columns
|
|
272
272
|
|
|
273
273
|
//block editor from taking action while resizing is taking place
|
|
274
274
|
if(self.startColumn.modules.edit){
|
|
@@ -89,7 +89,7 @@ class ResizeRows extends Module{
|
|
|
89
89
|
self.dispatchExternal("rowResized", row.getComponent());
|
|
90
90
|
}
|
|
91
91
|
|
|
92
|
-
e.stopPropagation(); //prevent resize from
|
|
92
|
+
e.stopPropagation(); //prevent resize from interfering with movable columns
|
|
93
93
|
|
|
94
94
|
//block editor from taking action while resizing is taking place
|
|
95
95
|
// if(self.startColumn.modules.edit){
|