@refinitiv-ui/efx-grid 6.0.34 → 6.0.36

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. package/lib/column-dragging/es6/ColumnDragging.js +50 -40
  2. package/lib/core/dist/core.css +1 -1
  3. package/lib/core/dist/core.js +248 -8
  4. package/lib/core/dist/core.min.js +1 -1
  5. package/lib/core/es6/data/DataCache.js +20 -1
  6. package/lib/core/es6/data/DataTable.d.ts +2 -0
  7. package/lib/core/es6/data/DataTable.js +18 -1
  8. package/lib/core/es6/data/DataView.d.ts +2 -0
  9. package/lib/core/es6/data/DataView.js +11 -0
  10. package/lib/core/es6/grid/Core.d.ts +12 -0
  11. package/lib/core/es6/grid/Core.js +88 -3
  12. package/lib/core/es6/grid/ILayoutGrid.js +4 -0
  13. package/lib/core/es6/grid/LayoutGrid.d.ts +4 -0
  14. package/lib/core/es6/grid/LayoutGrid.js +95 -3
  15. package/lib/core/es6/grid/VirtualizedLayoutGrid.js +6 -0
  16. package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +6 -0
  17. package/lib/core/es6/tr-grid-theme.js +1 -1
  18. package/lib/grid/index.js +1 -1
  19. package/lib/grid/themes/halo/dark/efx-grid.js +1 -1
  20. package/lib/grid/themes/halo/dark/es5/all-elements.js +1 -1
  21. package/lib/grid/themes/halo/efx-grid.less +1 -1
  22. package/lib/grid/themes/halo/light/efx-grid.js +1 -1
  23. package/lib/grid/themes/halo/light/es5/all-elements.js +1 -1
  24. package/lib/rt-grid/dist/rt-grid.js +367 -148
  25. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  26. package/lib/rt-grid/es6/Grid.js +37 -31
  27. package/lib/rt-grid/es6/RowDefSorter.d.ts +5 -5
  28. package/lib/rt-grid/es6/RowDefSorter.js +165 -71
  29. package/lib/tr-grid-column-selection/es6/ColumnSelection.js +66 -0
  30. package/lib/tr-grid-column-stack/es6/ColumnStack.d.ts +3 -0
  31. package/lib/tr-grid-column-stack/es6/ColumnStack.js +566 -607
  32. package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +1 -1
  33. package/lib/tr-grid-range-bar/es6/RangeBar.d.ts +4 -1
  34. package/lib/tr-grid-range-bar/es6/RangeBar.js +99 -39
  35. package/lib/tr-grid-row-dragging/es6/RowDragging.js +14 -3
  36. package/lib/tr-grid-rowcoloring/es6/RowColoring.js +3 -2
  37. package/lib/tr-grid-util/es6/DragUI.js +7 -3
  38. package/lib/tr-grid-util/es6/GroupDefinitions.d.ts +7 -1
  39. package/lib/tr-grid-util/es6/GroupDefinitions.js +39 -3
  40. package/lib/tr-grid-util/es6/jet/DataGenerator.js +36 -33
  41. package/lib/types/es6/ColumnStack.d.ts +2 -0
  42. package/lib/types/es6/Core/data/DataTable.d.ts +3 -1
  43. package/lib/types/es6/Core/data/DataView.d.ts +2 -0
  44. package/lib/types/es6/Core/grid/Core.d.ts +12 -0
  45. package/lib/types/es6/RealtimeGrid/RowDefSorter.d.ts +5 -5
  46. package/lib/versions.json +8 -8
  47. package/package.json +1 -1
@@ -326,6 +326,7 @@ var Grid = function(placeholder, config) {
326
326
  t._dc = new DataCache();
327
327
  t._dc.listen("dataChanged", t._onDataChanged);
328
328
  t._dc.listen("dataComposed", t._onDataComposed);
329
+ t._dc.addStaticFields([ROW_DEF, SUB_ID]); // Static fields are deprecated, set fields to be ignore during clone in DataCache
329
330
 
330
331
  t._dt = new DataTable();
331
332
  t._dt.setSortingLogic(/** @type{Function} */(t._mainSorter));
@@ -1526,8 +1527,11 @@ Grid.prototype.replaceColumn = function (columnOption, colRef) {
1526
1527
  if(colDef.getChildren()) { // Parent time series field doesn't provide hidden property
1527
1528
  colConfig["hidden"] = false;
1528
1529
  }
1530
+
1531
+ this._grid.startBatch("reset");
1529
1532
  this.insertColumn(colConfig, colIndex);
1530
1533
  this.removeColumn(colIndex + 1); // remove existing column after insert
1534
+ this._grid.stopBatch("reset");
1531
1535
  };
1532
1536
 
1533
1537
  /** to update column name when field info is loaded
@@ -1620,21 +1624,24 @@ Grid.prototype._shouldLoadFieldInfo = function (field) {
1620
1624
  * @param {Array.<Object>} columns Array of column options
1621
1625
  */
1622
1626
  Grid.prototype.setColumns = function(columns) {
1627
+ var grid = this._grid;
1623
1628
  var colCount = (columns) ? columns.length : 0;
1624
1629
 
1630
+ grid.startBatch("reset");
1625
1631
  this.removeAllColumns();
1626
1632
  if(colCount > 0) {
1627
1633
  var prevState = false;
1628
1634
  if(colCount > 1) {
1629
- prevState = this._grid.freezeLayout(true); // Insert multiple columns can be a huge time consuming
1635
+ prevState = grid.freezeLayout(true); // Insert multiple columns can be a huge time consuming
1630
1636
  }
1631
1637
  for(var i = 0; i < colCount; ++i) {
1632
1638
  this.insertColumn(columns[i], i);
1633
1639
  }
1634
1640
  if(colCount > 1) {
1635
- this._grid.freezeLayout(prevState);
1641
+ grid.freezeLayout(prevState);
1636
1642
  }
1637
1643
  }
1644
+ grid.stopBatch("reset");
1638
1645
  };
1639
1646
 
1640
1647
 
@@ -1643,6 +1650,8 @@ Grid.prototype.setColumns = function(columns) {
1643
1650
  * @param {Array.<Object>} columns Array of column options
1644
1651
  */
1645
1652
  Grid.prototype.restoreColumns = function(columns) {
1653
+ var grid = this._grid;
1654
+ grid.startBatch("reset");
1646
1655
  var configObj = this.getConfigObject();
1647
1656
  var previousColumns = configObj.columns;
1648
1657
 
@@ -1706,7 +1715,8 @@ Grid.prototype.restoreColumns = function(columns) {
1706
1715
  this._stp.sortColumns(sortingStates);
1707
1716
  }
1708
1717
 
1709
- this._grid.reorderColumns(columnOrdering);
1718
+ grid.reorderColumns(columnOrdering);
1719
+ grid.stopBatch("reset");
1710
1720
  };
1711
1721
 
1712
1722
  /** Remove all existing columns and add new columns based on the given texts/fields
@@ -1782,11 +1792,6 @@ Grid.prototype._onColumnAdded = function(e) {
1782
1792
  this._grid.enableColumnClass(idx, classes[i]);
1783
1793
  }
1784
1794
  var colField = colDef.getField();
1785
- if (!colDef.isRealTimeField()) {
1786
- if(this._dc) {
1787
- this._dc.addStaticFields([colField]);
1788
- }
1789
- }
1790
1795
  this._grid.setDataColumnName(idx, ROW_DEF); // This make ColumnDefinition renderer work
1791
1796
  var fields = colDef.getAllFields();
1792
1797
  var referrer = colDef.getId();
@@ -3399,33 +3404,34 @@ Grid.prototype._updateStreamingData = function() {
3399
3404
  * @param {Object} e
3400
3405
  */
3401
3406
  Grid.prototype._onPreDataSorting = function (e) {
3402
- var field = "";
3403
- var rowSorting = false;
3404
- var sortLogic = null;
3405
-
3406
- var states = this._stp.getSortingStates(); // WARNING: Use of deprecated function
3407
- var state = states ? states[0] : null; // TODO: Support multi-column sorting
3408
-
3409
- if(state) {
3410
- field = state["field"] || "";
3411
- var colIndex = this._stp.getSortedColumnIndex(0);
3412
- var colDef = (colIndex >= 0) ? this.getColumnDefinition(colIndex) : null;
3413
- this._sorter.setContext("colIndex", colIndex);
3414
- this._sorter.setContext("colDef", colDef);
3407
+ var objs = this._stp.getSortedColumns();
3408
+
3409
+ this._sorter.reset();
3410
+ if(Array.isArray(objs)) {
3411
+ var sortCount = objs.length;
3412
+ for(var i = 0; i < sortCount; ++i) {
3413
+ var obj = objs[i];
3414
+ var field = obj["field"] || "";
3415
+ var colIndex = obj["colIndex"];
3416
+ var colDef = (colIndex >= 0) ? this.getColumnDefinition(colIndex) : null;
3417
+
3418
+ var rowSorting = false;
3419
+ var sortLogic = null;
3420
+ if(colDef) {
3421
+ field = colDef.getField(); // WARNING: Field and logic could be out of sync
3422
+ rowSorting = colDef.isRowSorting();
3423
+ sortLogic = colDef.getSorter();
3424
+ }
3425
+ // TODO: get sortLogic from DataView
3426
+ // if(!sortLogic && field) {
3427
+ // sortLogic = state["sortLogic"];
3428
+ // }
3415
3429
 
3416
- if(colDef) {
3417
- field = colDef.getField(); // WARNING: Field and logic could be out of sync
3418
- sortLogic = colDef.getSorter();
3419
- rowSorting = colDef.isRowSorting();
3430
+ this._sorter.addColumnContext(field, sortLogic, rowSorting, obj["sortOrder"], colIndex, colDef);
3420
3431
  }
3421
3432
  }
3422
- if(!sortLogic && field) {
3423
- sortLogic = state["sortLogic"];
3424
- }
3425
3433
 
3426
- this._sorter.setField(field);
3427
- this._sorter.setSortLogic(sortLogic);
3428
- this._columnSorter = this._sorter.getSorter(rowSorting);
3434
+ this._columnSorter = this._sorter.getSorter();
3429
3435
  };
3430
3436
  /** @private
3431
3437
  * @param {RowDefinition} rowDefA
@@ -1,4 +1,4 @@
1
-
1
+ import { cloneObject } from "../../tr-grid-util/es6/Util.js";
2
2
 
3
3
  declare class RowDefSorter {
4
4
 
@@ -6,14 +6,14 @@ declare class RowDefSorter {
6
6
 
7
7
  public dispose(): void;
8
8
 
9
- public getSorter(rowSorting?: boolean|null): ((...params: any[]) => any)|null;
10
-
11
- public setSortLogic(func?: ((...params: any[]) => any)|null): void;
9
+ public getSorter(): ((...params: any[]) => any)|null;
12
10
 
13
- public setField(field: string): void;
11
+ public reset(key: string, value: any): void;
14
12
 
15
13
  public setContext(key: string, value: any): void;
16
14
 
15
+ public addColumnContext(field: string, logic: ((...params: any[]) => any)|null, rowSorting: boolean, order: string, colIndex: number, colDef: any): void;
16
+
17
17
  }
18
18
 
19
19
  export default RowDefSorter;
@@ -1,70 +1,147 @@
1
+ import { cloneObject } from "../../tr-grid-util/es6/Util.js";
2
+
3
+ /** @private
4
+ * @param {*} a
5
+ * @param {*} b
6
+ * @param {number} order
7
+ * @return {number}
8
+ */
9
+ var _defaultCompare = function(a, b, order) {
10
+ if(a == null || a !== a) {
11
+ if(b == null || b !== b) {
12
+ return 0;
13
+ }
14
+ return 1;
15
+ }
16
+ if(b == null || b !== b) {
17
+ return -1;
18
+ }
19
+
20
+ if(a < b) {
21
+ return -order;
22
+ }
23
+ if(b < a) {
24
+ return order;
25
+ }
26
+ return 0;
27
+ };
28
+
1
29
  /** @constructor
2
30
  */
3
31
  var RowDefSorter = function() {
4
32
  this._defaultSorter = this._defaultSorter.bind(this);
5
33
  this._dataSorter = this._dataSorter.bind(this);
6
34
  this._rowDefSorter = this._rowDefSorter.bind(this);
35
+ this._multiColumnsSorter = this._multiColumnsSorter.bind(this);
7
36
 
8
- this._sortContext = {};
37
+ this._globalContext = {};
38
+ this._sortParams = [];
39
+ this._ctxCaches = [];
9
40
  };
10
41
 
11
-
12
- /** @type {string}
42
+ /** @type {!Object}
13
43
  * @private
14
44
  */
15
- RowDefSorter.prototype._field = "";
16
- /** @type {!Object}
45
+ RowDefSorter.prototype._globalContext;
46
+ /** @type {!Array.<Array>}
47
+ * @private
48
+ */
49
+ RowDefSorter.prototype._sortParams;
50
+ /** @type {!Array.<Object>}
17
51
  * @private
18
52
  */
19
- RowDefSorter.prototype._sortContext;
20
- /** @type {Function}
53
+ RowDefSorter.prototype._ctxCaches;
54
+ /** @type {Array}
21
55
  * @private
22
56
  */
23
- RowDefSorter.prototype._sortLogic = null;
57
+ RowDefSorter.prototype._primaryParams;
24
58
 
25
59
 
26
60
  /** @public
27
61
  */
28
62
  RowDefSorter.prototype.dispose = function() {
29
- this._sortLogic = null;
30
- this._sortContext = {}; // Clear any existing reference
63
+ this._globalContext = {}; // Clear any existing reference
64
+ this._sortParams.length = 0;
65
+ this._ctxCaches.length = 0;
66
+ this._primaryParams = null;
31
67
  };
32
68
 
33
69
  /** @public
34
- * @param {boolean=} rowSorting=false
35
70
  * @return {Function}
36
71
  */
37
- RowDefSorter.prototype.getSorter = function(rowSorting) {
38
- if(this._sortLogic) {
39
- return rowSorting ? this._rowDefSorter : this._dataSorter;
40
- } else {
41
- return this._defaultSorter;
72
+ RowDefSorter.prototype.getSorter = function() {
73
+ this._primaryParams = null;
74
+ var sortCount = this._sortParams.length;
75
+ if(sortCount === 1) {
76
+ var params = this._primaryParams = this._sortParams[0];
77
+ var sortLogic = params[1];
78
+ if(sortLogic) {
79
+ var rowSorting = params[3];
80
+ return rowSorting ? this._rowDefSorter : this._dataSorter;
81
+ } else {
82
+ return this._defaultSorter;
83
+ }
84
+ } else if(sortCount > 1) {
85
+ return this._multiColumnsSorter;
42
86
  }
43
- };
44
- /** @public
45
- * @param {Function=} func
46
- */
47
- RowDefSorter.prototype.setSortLogic = function(func) {
48
- this._sortLogic = (typeof func === "function") ? func : null;
49
- };
50
87
 
88
+ return RowDefSorter._noSorting;
89
+ };
51
90
 
52
91
  /** @public
53
- * @param {string} field
92
+ * @param {string} key
93
+ * @param {*} value
54
94
  */
55
- RowDefSorter.prototype.setField = function(field) {
56
- if(!field) {
57
- field = "";
95
+ RowDefSorter.prototype.reset = function() {
96
+ if(this._sortParams.length) {
97
+ this._sortParams.length = 0;
58
98
  }
59
- this._sortContext["field"] = this._field = field;
60
- this._sortContext["formattedField"] = field + "_FORMATTED";
61
99
  };
62
100
  /** @public
63
101
  * @param {string} key
64
102
  * @param {*} value
65
103
  */
66
104
  RowDefSorter.prototype.setContext = function(key, value) {
67
- this._sortContext[key] = value;
105
+ this._globalContext[key] = value;
106
+ };
107
+ /** @public
108
+ * @param {string} field
109
+ * @param {Function} logic
110
+ * @param {boolean} rowSorting
111
+ * @param {string} order
112
+ * @param {number} colIndex
113
+ * @param {*} colDef
114
+ */
115
+ RowDefSorter.prototype.addColumnContext = function(field, logic, rowSorting, order, colIndex, colDef) {
116
+ if(!field) {
117
+ field = "";
118
+ }
119
+ var sortPriority = this._sortParams.length;
120
+ var ctx = this._ctxCaches[sortPriority];
121
+ if(!ctx) {
122
+ ctx = this._ctxCaches[sortPriority] = cloneObject(this._globalContext);
123
+ }
124
+ var orderNum = 0;
125
+ if(order === "a") {
126
+ orderNum = 1;
127
+ } else if(order === "d") {
128
+ orderNum = -1;
129
+ }
130
+
131
+ var params = [
132
+ field, // 0
133
+ (typeof logic === "function") ? logic : null, // 1
134
+ ctx, // 2
135
+ rowSorting, // 3
136
+ orderNum // 4
137
+ ];
138
+
139
+ ctx["colIndex"] = colIndex;
140
+ ctx["field"] = field;
141
+ ctx["formattedField"] = field + "_FORMATTED";
142
+ ctx["colDef"] = colDef;
143
+
144
+ this._sortParams.push(params);
68
145
  };
69
146
 
70
147
  /** @private
@@ -73,32 +150,7 @@ RowDefSorter.prototype.setContext = function(key, value) {
73
150
  * @param {number} order
74
151
  * @return {number}
75
152
  */
76
- RowDefSorter.prototype._defaultSorter = function(rowDefA, rowDefB, order) {
77
- var orderA = rowDefA.getGroupOrder();
78
- var orderB = rowDefB.getGroupOrder();
79
- if(orderA !== orderB) {
80
- return orderA - orderB; // Regardless of sort order
81
- }
82
-
83
- var a = rowDefA.getData(this._field);
84
- var b = rowDefB.getData(this._field);
85
-
86
- if(a == null || a !== a) {
87
- if(b == null || b !== b) {
88
- return 0;
89
- }
90
- return 1;
91
- }
92
- if(b == null || b !== b) {
93
- return -1;
94
- }
95
-
96
- if(a < b) {
97
- return -order;
98
- }
99
- if(b < a) {
100
- return order;
101
- }
153
+ RowDefSorter._noSorting = function(rowDefA, rowDefB, order) {
102
154
  return 0;
103
155
  };
104
156
  /** @private
@@ -107,16 +159,30 @@ RowDefSorter.prototype._defaultSorter = function(rowDefA, rowDefB, order) {
107
159
  * @param {number} order
108
160
  * @return {number}
109
161
  */
162
+ RowDefSorter.prototype._defaultSorter = function(rowDefA, rowDefB, order) {
163
+ var field = this._primaryParams[0];
164
+ return _defaultCompare(
165
+ rowDefA.getData(field),
166
+ rowDefB.getData(field),
167
+ order
168
+ );
169
+ };
170
+ /** @private
171
+ * @param {RowDefinition} rowDefA
172
+ * @param {RowDefinition} rowDefB
173
+ * @param {number} order
174
+ * @return {number}
175
+ */
110
176
  RowDefSorter.prototype._dataSorter = function(rowDefA, rowDefB, order) {
111
- var orderA = rowDefA.getGroupOrder();
112
- var orderB = rowDefB.getGroupOrder();
113
- if(orderA !== orderB) {
114
- return orderA - orderB; // Regardless of sort order
115
- }
116
-
117
- var a = rowDefA.getData(this._field);
118
- var b = rowDefB.getData(this._field);
119
- return this._sortLogic(a, b, order, this._sortContext);
177
+ var params = this._primaryParams;
178
+ var field = params[0];
179
+ var sortLogic = params[1];
180
+ return sortLogic(
181
+ rowDefA.getData(field),
182
+ rowDefB.getData(field),
183
+ order,
184
+ params[2]
185
+ );
120
186
  };
121
187
  /** @private
122
188
  * @param {RowDefinition} rowDefA
@@ -125,13 +191,41 @@ RowDefSorter.prototype._dataSorter = function(rowDefA, rowDefB, order) {
125
191
  * @return {number}
126
192
  */
127
193
  RowDefSorter.prototype._rowDefSorter = function(rowDefA, rowDefB, order) {
128
- var orderA = rowDefA.getGroupOrder();
129
- var orderB = rowDefB.getGroupOrder();
130
- if(orderA !== orderB) {
131
- return orderA - orderB; // Regardless of sort order
194
+ var params = this._primaryParams;
195
+ var sortLogic = params[1];
196
+ return sortLogic(rowDefA, rowDefB, order, params[2]);
197
+ };
198
+ /** @private
199
+ * @param {RowDefinition} rowDefA
200
+ * @param {RowDefinition} rowDefB
201
+ * @param {number} primaryOrder
202
+ * @return {number}
203
+ */
204
+ RowDefSorter.prototype._multiColumnsSorter = function(rowDefA, rowDefB, primaryOrder) {
205
+ var sortParams = this._sortParams;
206
+ var sortCount = sortParams.length;
207
+ for(var i = 0; i < sortCount; ++i) {
208
+ var params = sortParams[i];
209
+ var field = params[0];
210
+ var sortLogic = params[1];
211
+ var ctx = params[2];
212
+ var rowSorting = params[3];
213
+ var orderNum = params[4];
214
+ var ret = 0;
215
+ if(sortLogic) {
216
+ if(rowSorting) {
217
+ ret = sortLogic(rowDefA, rowDefB, orderNum, ctx);
218
+ } else {
219
+ ret = sortLogic(rowDefA.getData(field), rowDefB.getData(field), orderNum, ctx);
220
+ }
221
+ } else {
222
+ ret = _defaultCompare(rowDefA.getData(field), rowDefB.getData(field), orderNum);
223
+ }
224
+ if(ret) {
225
+ return ret;
226
+ }
132
227
  }
133
-
134
- return this._sortLogic(rowDefA, rowDefB, order, this._sortContext);
228
+ return 0;
135
229
  };
136
230
 
137
231
  export default RowDefSorter;
@@ -38,6 +38,8 @@ var ColumnSelectionPlugin = function ColumnSelectionPlugin(options) {
38
38
  t._onReselection = t._onReselection.bind(t);
39
39
  t._onThemeLoaded = t._onThemeLoaded.bind(t);
40
40
  t._onColumnPositionChanged = t._onColumnPositionChanged.bind(t);
41
+ t._onBeforeBatchOperation = t._onBeforeBatchOperation.bind(t);
42
+ t._onAfterBatchOperation = t._onAfterBatchOperation.bind(t);
41
43
  t._updateMenuIcon = t._updateMenuIcon.bind(t);
42
44
  t._hosts = [];
43
45
 
@@ -121,6 +123,12 @@ ColumnSelectionPlugin.prototype._menuPosition = "outside";
121
123
 
122
124
  ColumnSelectionPlugin.prototype._cgp = null; // Column grouping extension
123
125
 
126
+ /** @type {Array.<string>}
127
+ * @private
128
+ */
129
+
130
+ ColumnSelectionPlugin.prototype._prevSelectedCols = {}; // previous selected columns during batch operation
131
+
124
132
  /** @public
125
133
  * @return {string}
126
134
  */
@@ -156,6 +164,8 @@ ColumnSelectionPlugin.prototype.initialize = function (host, options) {
156
164
  host.listen("columnRemoved", this._onColumnRemoved);
157
165
  host.listen("columnAdded", this._onColumnAdded);
158
166
  host.listen("columnPositionChanged", this._onColumnPositionChanged);
167
+ host.listen("beforeBatchOperation", this._onBeforeBatchOperation);
168
+ host.listen("afterBatchOperation", this._onAfterBatchOperation);
159
169
  this.config(options);
160
170
 
161
171
  if (ColumnSelectionPlugin._stylePromise) {
@@ -1098,6 +1108,62 @@ ColumnSelectionPlugin.prototype._onReselection = function (e) {
1098
1108
  this._activeGrid.focus();
1099
1109
  };
1100
1110
  /** @private
1111
+ * @param {Object} e
1112
+ */
1113
+
1114
+
1115
+ ColumnSelectionPlugin.prototype._onBeforeBatchOperation = function (e) {
1116
+ var host = this._activeGrid;
1117
+
1118
+ if (this._hasSelection && e["batchType"] === "reset") {
1119
+ var colCount = this.getColumnCount();
1120
+
1121
+ for (var i = 0; i < colCount; ++i) {
1122
+ if (this.isSelectedColumn(i)) {
1123
+ var colId = host.getColumnId(i);
1124
+ var field = host.getColumnField(i);
1125
+
1126
+ if (colId) {
1127
+ this._prevSelectedCols[colId] = field;
1128
+ } else {
1129
+ this._prevSelectedCols[field] = "";
1130
+ }
1131
+ }
1132
+ }
1133
+
1134
+ this.clearAllSelections(); //clear all to improve performance during add/remove operation
1135
+ }
1136
+ };
1137
+ /** @private
1138
+ * @param {Object} e
1139
+ */
1140
+
1141
+
1142
+ ColumnSelectionPlugin.prototype._onAfterBatchOperation = function (e) {
1143
+ if (e["batchType"] === "reset") {
1144
+ var prevSelectedCols = Object.keys(this._prevSelectedCols);
1145
+ var prevSelectedCount = prevSelectedCols.length;
1146
+
1147
+ if (prevSelectedCount) {
1148
+ this.clearAllSelections();
1149
+
1150
+ for (var i = 0; i < prevSelectedCount; i++) {
1151
+ var colId = prevSelectedCols[i];
1152
+ var field = this._prevSelectedCols[colId];
1153
+ var prevSelectedIndex = this.getColumnIndex(colId);
1154
+
1155
+ if (prevSelectedIndex < 0) {
1156
+ prevSelectedIndex = this.getColumnIndex(field);
1157
+ }
1158
+
1159
+ this.setSelectedColumn(prevSelectedIndex, true);
1160
+ }
1161
+
1162
+ this._prevSelectedCols = {};
1163
+ }
1164
+ }
1165
+ };
1166
+ /** @private
1101
1167
  * @param {KeyboardEvent} e
1102
1168
  * @return {boolean}
1103
1169
  */
@@ -3,6 +3,7 @@ import { GridPlugin } from "../../tr-grid-util/es6/GridPlugin.js";
3
3
  import { Conflator } from "../../tr-grid-util/es6/Conflator.js";
4
4
  import { Icon } from "../../tr-grid-util/es6/Icon.js";
5
5
  import { ElfUtil } from "../../tr-grid-util/es6/ElfUtil.js";
6
+ import { GroupDefinitions } from "../../tr-grid-util/es6/GroupDefinitions.js";
6
7
  import { Dom } from "../../tr-grid-util/es6/Dom.js";
7
8
  import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
8
9
  import { preventDefault } from "../../tr-grid-util/es6/EventDispatcher.js";
@@ -137,6 +138,8 @@ declare class ColumnStackPlugin extends GridPlugin {
137
138
 
138
139
  public isStackHidden(stackId: string): boolean|null|null;
139
140
 
141
+ public moveStack(stackId: string, destCol?: (number|string)|null): boolean;
142
+
140
143
  }
141
144
 
142
145
  export default ColumnStackPlugin;