@refinitiv-ui/efx-grid 6.0.27 → 6.0.29

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. package/lib/core/dist/core.js +248 -29
  2. package/lib/core/dist/core.min.js +1 -1
  3. package/lib/core/es6/data/DataTable.d.ts +1 -1
  4. package/lib/core/es6/data/DataTable.js +3 -2
  5. package/lib/core/es6/data/DataView.d.ts +1 -1
  6. package/lib/core/es6/data/DataView.js +3 -2
  7. package/lib/core/es6/data/Segment.d.ts +1 -1
  8. package/lib/core/es6/data/Segment.js +12 -3
  9. package/lib/core/es6/data/SegmentCollection.d.ts +1 -1
  10. package/lib/core/es6/data/SegmentCollection.js +3 -2
  11. package/lib/core/es6/grid/Core.d.ts +17 -3
  12. package/lib/core/es6/grid/Core.js +226 -20
  13. package/lib/core/es6/grid/LayoutGrid.js +1 -0
  14. package/lib/grid/index.js +1 -1
  15. package/lib/row-segmenting/es6/RowSegmenting.js +21 -2
  16. package/lib/rt-grid/dist/rt-grid.js +418 -238
  17. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  18. package/lib/rt-grid/es6/ColumnDefinition.d.ts +2 -2
  19. package/lib/rt-grid/es6/ColumnDefinition.js +71 -70
  20. package/lib/rt-grid/es6/Grid.d.ts +9 -2
  21. package/lib/rt-grid/es6/Grid.js +55 -132
  22. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.d.ts +3 -3
  23. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +9 -27
  24. package/lib/tr-grid-column-stack/es6/ColumnStack.d.ts +6 -0
  25. package/lib/tr-grid-column-stack/es6/ColumnStack.js +68 -9
  26. package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.d.ts +30 -23
  27. package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +78 -3
  28. package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +24 -10
  29. package/lib/tr-grid-util/es6/CellPainter.d.ts +2 -1
  30. package/lib/tr-grid-util/es6/CellPainter.js +53 -15
  31. package/lib/tr-grid-util/es6/GridPlugin.d.ts +6 -0
  32. package/lib/tr-grid-util/es6/GridPlugin.js +67 -0
  33. package/lib/types/es6/ColumnGrouping.d.ts +3 -3
  34. package/lib/types/es6/ColumnStack.d.ts +6 -0
  35. package/lib/types/es6/Core/data/DataTable.d.ts +1 -1
  36. package/lib/types/es6/Core/data/DataView.d.ts +1 -1
  37. package/lib/types/es6/Core/data/Segment.d.ts +1 -1
  38. package/lib/types/es6/Core/data/SegmentCollection.d.ts +1 -1
  39. package/lib/types/es6/Core/grid/Core.d.ts +17 -3
  40. package/lib/types/es6/RealtimeGrid/ColumnDefinition.d.ts +2 -2
  41. package/lib/types/es6/RealtimeGrid/Grid.d.ts +9 -2
  42. package/lib/utils/index.d.ts +3 -0
  43. package/lib/utils/index.js +3 -0
  44. package/lib/versions.json +6 -6
  45. package/package.json +6 -2
@@ -85,6 +85,7 @@ import { ElementWrapper } from "../../core/es6/grid/components/ElementWrapper.js
85
85
  * @property {number=} adcPollingInterval=0 Length of polling interval for refreshing ADC data in milliseconds. The default value (0) means no polling.
86
86
  * @property {boolean=} fieldCaching=false If enabled, field definition will be caching internal mechanism
87
87
  * @property {string=} childDataField=CHILD_VALUES The given field will be used to store children's static data, such as row color assignment.
88
+ * @property {boolean=} topSection=true If disabled, title section will not be rendered
88
89
  */
89
90
 
90
91
  /** @typedef {number|string|RowDefinition} Grid~RowReference
@@ -228,26 +229,6 @@ var compareNumber = function(rowDefA, rowDefB, sortOrder, fieldName) { // edit n
228
229
  return (rowDefA.getData(fieldName) - rowDefB.getData(fieldName)) * sortOrder; // for numeric comparison
229
230
  };
230
231
 
231
- /** @private
232
- * @param {ColumnDefinition} colDef
233
- * @return {string}
234
- */
235
- var _getId = function(colDef) {
236
- if(colDef) {
237
- return colDef.getId();
238
- }
239
- return "";
240
- };
241
- /** @private
242
- * @param {ColumnDefinition} colDef
243
- * @return {string}
244
- */
245
- var _getField = function(colDef) {
246
- if(colDef) {
247
- return colDef.getField();
248
- }
249
- return "";
250
- };
251
232
  /** @private
252
233
  * @param {ColumnDefinition} colDef
253
234
  * @return {string}
@@ -336,6 +317,9 @@ var Grid = function(placeholder, config) {
336
317
  if(config["SortableTitle"]) { // Exception for built-in plugin
337
318
  t._stp = config["SortableTitle"];
338
319
  }
320
+ if(config["topSection"] === false) {
321
+ t._topSection = false;
322
+ }
339
323
  }
340
324
  if(!t._sharedDataSource) {
341
325
  t._dc = new DataCache();
@@ -550,7 +534,10 @@ Grid.prototype._fieldCaching = false;
550
534
  * @private
551
535
  */
552
536
  Grid.prototype._childDataField = "";
553
-
537
+ /** @type {boolean}
538
+ * @private
539
+ */
540
+ Grid.prototype._topSection = true;
554
541
 
555
542
  /** @public
556
543
  */
@@ -665,7 +652,11 @@ Grid.prototype.updateRowData = Grid.prototype._updateRowData;
665
652
  */
666
653
  Grid.prototype._addGridSections = function () {
667
654
  var title = this._grid.addSection("title");
668
- title.setRowCount(1);
655
+ if(this._topSection == false){
656
+ title.setRowCount(0);
657
+ } else {
658
+ title.setRowCount(1);
659
+ }
669
660
  this._grid.addSection("content");
670
661
 
671
662
  var titleSettings = this._grid.getSectionSettings("title");
@@ -1617,10 +1608,13 @@ Grid.prototype.setFields = Grid.prototype.setColumns;
1617
1608
  * @param {Object} e
1618
1609
  */
1619
1610
  Grid.prototype._onColumnAdded = function(e) {
1620
- var colDef = e.context[COL_DEF];
1611
+ var colDef = /** @type{ColumnDefinition} */(e.context[COL_DEF]);
1621
1612
  delete e.context[COL_DEF];
1622
1613
  var idx = e.colIndex;
1623
1614
 
1615
+ var coreColDef = this._grid._getColumnDef(idx);
1616
+ colDef._setCoreColumnDef(coreColDef); // For column id and field
1617
+
1624
1618
  var colData = this._grid.getColumnData(idx);
1625
1619
  if(!colData) { // Save column inside grid
1626
1620
  colData = this._grid.setColumnData(idx, {});
@@ -1847,102 +1841,16 @@ Grid.prototype.moveColumn = function (fromColIndex, toColIndex) {
1847
1841
  * grid.moveColumnById("sourceColumnId", ""); // move to the last position
1848
1842
  */
1849
1843
  Grid.prototype.moveColumnById = function (srcCol, destCol) {
1850
- var colCount = this.getColumnCount();
1851
- var srcIndex = this.getColumnIndex(srcCol);
1852
- if(srcIndex < 0 || srcIndex >= colCount) {
1853
- return false;
1854
- }
1855
- var destIndex = this.getColumnIndex(destCol);
1856
- if(destIndex < 0) {
1857
- destIndex = colCount;
1858
- }
1859
- return this._moveColumnByIndex(srcIndex, destIndex);
1860
- };
1861
- /** Move column without verification for better performance
1862
- * @private
1863
- * @param {number} srcIndex Column index
1864
- * @param {number} destIndex Column index of the destination
1865
- * @return {boolean} Return true if there is any change, and false otherwise
1866
- */
1867
- Grid.prototype._moveColumnByIndex = function (srcIndex, destIndex) {
1868
- if(srcIndex < destIndex) { // Ensure that the source column is put in front of the destination index
1869
- --destIndex;
1870
- }
1871
- if(srcIndex === destIndex) {
1872
- return false;
1873
- }
1874
- return this.moveColumn(srcIndex, destIndex);
1844
+ return this._grid.moveColumnById(srcCol, destCol);
1875
1845
  };
1876
1846
 
1877
1847
  /** @public
1878
1848
  * @param {number|string|Array.<number|string>} colRefs List of column index or column id to be moved
1879
- * @param {number|string} destCol Destination position where the moved columns will be placed BEFORE the specified position. This can be column id or index
1849
+ * @param {(number|string)=} destCol Destination position where the moved columns will be placed BEFORE the specified position. This can be column id or index
1880
1850
  * @return {boolean} Return true if there is any change, and false otherwise
1881
1851
  */
1882
1852
  Grid.prototype.reorderColumns = function (colRefs, destCol) {
1883
- var destId = (typeof destCol === "number") ? this.getColumnId(destCol) : destCol;
1884
-
1885
- if(Array.isArray(colRefs)) {
1886
- var srcLen = colRefs.length;
1887
- if(srcLen > 1) {
1888
- var colIds = this.getColumnIds();
1889
- var colCount = colIds.length;
1890
- var srcIds = [];
1891
- var invalidDest = false;
1892
- var i, srcId, srcIdx;
1893
- for(i = 0; i < srcLen; ++i) {
1894
- var colRef = colRefs[i];
1895
- if(typeof colRef === "number") {
1896
- srcIdx = colRef;
1897
- srcId = colIds[colRef] || "";
1898
- } else {
1899
- srcId = colRef;
1900
- srcIdx = colIds.indexOf(srcId);
1901
- }
1902
- if(srcId && srcIdx >= 0) {
1903
- srcIds.push(srcId);
1904
- if(destId === srcId) {
1905
- invalidDest = true; // Destination must not exist in source columns
1906
- }
1907
- }
1908
- }
1909
-
1910
- var destIdx;
1911
- srcLen = srcIds.length;
1912
- if(invalidDest) { // Find the next valid destination where it is not contained in the source columns
1913
- destIdx = this.getColumnIndex(destId);
1914
- if(destIdx >= 0) {
1915
- while(++destIdx < colCount) {
1916
- destId = colIds[destIdx];
1917
- if(srcIds.indexOf(destId) < 0) {
1918
- break;
1919
- }
1920
- }
1921
- }
1922
- if(destIdx < 0 || destIdx >= colCount) {
1923
- destId = "";
1924
- }
1925
- }
1926
-
1927
- var dirty = 0;
1928
- for(i = srcLen; --i >= 0;) {
1929
- srcId = srcIds[i]; // Only valid source columns are left at this point
1930
- srcIdx = this.getColumnIndex(srcId);
1931
- destIdx = this.getColumnIndex(destId);
1932
- if(destIdx < 0) { // Insert to the back when id is not found
1933
- destIdx = colCount;
1934
- }
1935
- dirty |= this._moveColumnByIndex(srcIdx, destIdx);
1936
- destId = srcId;
1937
- }
1938
- return dirty ? true : false;
1939
- } else {
1940
- return this.moveColumnById(colRefs[0], destId);
1941
- }
1942
- }
1943
-
1944
- // colRefs will be a number or string
1945
- return this.moveColumnById(colRefs, destId);
1853
+ return this._grid.reorderColumns(colRefs, destCol);
1946
1854
  };
1947
1855
 
1948
1856
  /** The hidden column still occupies the same index.
@@ -2981,30 +2889,19 @@ Grid.prototype._getRowId = function(rowRef) {
2981
2889
  * @return {number}
2982
2890
  */
2983
2891
  Grid.prototype.getColumnIndex = function(colRef) {
2984
- if(typeof colRef === "number") {
2985
- return colRef;
2986
- }
2987
-
2988
2892
  if(colRef) {
2989
2893
  var colCount = this.getColumnCount();
2990
- var i, colDef;
2991
2894
  if(colRef instanceof ColumnDefinition) {
2992
- for(i = 0; i < colCount; ++i) {
2993
- colDef = this.getColumnDefinition(i);
2895
+ for(var i = 0; i < colCount; ++i) {
2896
+ var colDef = this.getColumnDefinition(i);
2994
2897
  if(colDef === colRef) {
2995
2898
  return i;
2996
2899
  }
2997
2900
  }
2998
- } else if(typeof colRef === "string") {
2999
- for(i = 0; i < colCount; ++i) {
3000
- colDef = this.getColumnDefinition(i);
3001
- if(_hasFieldOrId(colDef, colRef)) {
3002
- return i; // Return the first found field
3003
- }
3004
- }
2901
+ return -1;
3005
2902
  }
3006
2903
  }
3007
- return -1;
2904
+ return this._grid.getColumnIndex(colRef);
3008
2905
  };
3009
2906
  /** Any invalid column reference will be excluded from the output array
3010
2907
  * @public
@@ -3020,7 +2917,7 @@ Grid.prototype.getColumnIndices = function(colRefs) {
3020
2917
  for(var i = 0; i < len; ++i) {
3021
2918
  var colIndex = this.getColumnIndex(inputAry[i]);
3022
2919
  if(colIndex >= 0 && colIndex < colCount) {
3023
- ary.push(colIndex); // WARNING: We have not check for duplication
2920
+ ary.push(colIndex); // WARNING: We have not checked for duplication
3024
2921
  }
3025
2922
  }
3026
2923
  return ary;
@@ -3032,14 +2929,14 @@ Grid.prototype.getColumnIndices = function(colRefs) {
3032
2929
  * @see {@link Grid#getColumnDefinition}
3033
2930
  */
3034
2931
  Grid.prototype.getColumnId = function(colIndex) {
3035
- return _getId(this.getColumnDefinition(colIndex));
2932
+ return this._grid.getColumnId(colIndex);
3036
2933
  };
3037
2934
  /** Get ids from each column definition.
3038
2935
  * @public
3039
2936
  * @return {!Array.<string>} New array is created
3040
2937
  */
3041
2938
  Grid.prototype.getColumnIds = function() {
3042
- return this.getColumnDefinitions().map(_getId);
2939
+ return this._grid.getColumnIds();
3043
2940
  };
3044
2941
  /** Return field defined in the column definition
3045
2942
  * @public
@@ -3048,14 +2945,14 @@ Grid.prototype.getColumnIds = function() {
3048
2945
  * @see {@link Grid#getColumnDefinition}
3049
2946
  */
3050
2947
  Grid.prototype.getColumnField = function(colIndex) {
3051
- return _getField(this.getColumnDefinition(colIndex));
2948
+ return this._grid.getColumnField(colIndex);
3052
2949
  };
3053
2950
  /** Get fields from each column definition. Note that this does not include any required field or data fields. Duplicates may exist.
3054
2951
  * @public
3055
2952
  * @return {!Array.<string>} New array is created
3056
2953
  */
3057
2954
  Grid.prototype.getColumnFields = function() {
3058
- return this.getColumnDefinitions().map(_getField);
2955
+ return this._grid.getColumnFields();
3059
2956
  };
3060
2957
  /** Get column name from each column definition. Note that this does not include any required field or data fields. Duplicates may exist.
3061
2958
  * @public
@@ -3513,6 +3410,32 @@ Grid.prototype.setClassification = function(rowRef, fields) {
3513
3410
  return false;
3514
3411
  };
3515
3412
 
3413
+ /** Check element in the grid element
3414
+ * @public
3415
+ * @param {Element} elem
3416
+ * @return {boolean}=true if an element from the parameter is inside a grid element
3417
+ */
3418
+ Grid.prototype.contains = function(elem) {
3419
+ if(elem) {
3420
+ // This will impact the contents within the rt-grid element, but not those outside of it, such as the wrapper elements atlas-blotter and ef-grid.
3421
+ return this._topNode.contains(elem);
3422
+ }
3423
+ return false;
3424
+ };
3425
+
3426
+ /** Check grid element is focused
3427
+ * @public
3428
+ * @return {boolean}
3429
+ */
3430
+ Grid.prototype.isFocused = function() {
3431
+ var activeElement = document.activeElement;
3432
+ if(!activeElement || !activeElement.shadowRoot) {
3433
+ // active element is not in the shadow DOM. try using contains method to check
3434
+ return this.contains(activeElement);
3435
+ }
3436
+ // For wrapper scenarios, such as atlas-blotter or efx-grid
3437
+ return activeElement.shadowRoot === this._topNode.parentNode;
3438
+ };
3516
3439
  /** @description Focus grid element without moving window scrollbar
3517
3440
  * @public
3518
3441
  */
@@ -79,11 +79,11 @@ declare class ColumnGroupingPlugin extends GridPlugin {
79
79
 
80
80
  public getValidDestinationIndex(id: string, destCol: number|string|null): number;
81
81
 
82
- public moveGroup(id: string, destCol: number|string|null): void;
82
+ public moveGroup(id: string, destCol?: (number|string)|null): void;
83
83
 
84
- public reorderColumns(colList: (number|string)[]|null, destCol: number|string|null): boolean;
84
+ public reorderColumns(colList: (number|string)[]|null, destCol?: (number|string)|null): boolean;
85
85
 
86
- public moveColumnById(srcCol: number|string|null, destCol?: number|string|null): boolean;
86
+ public moveColumnById(srcCol: number|string|null, destCol?: (number|string)|null): boolean;
87
87
 
88
88
  }
89
89
 
@@ -318,16 +318,7 @@ ColumnGroupingPlugin.prototype.config = function (options) {
318
318
  }
319
319
  var columns = options["columns"];
320
320
  if (columns) {
321
- var len = columns.length;
322
- for (var i = 0; i < len; ++i) {
323
- var colData = this._newColumnData(i);
324
- colData["columnGrouping"] = {
325
- // used for columnRemoved event
326
- id: columns[i].id // TODO: This does not work with runtime change
327
- };
328
- }
329
-
330
- groupDefs = this._migrateLegacyStructure(groupDefs, options["columns"]);
321
+ groupDefs = this._migrateLegacyStructure(groupDefs, columns);
331
322
  }
332
323
  if (groupDefs) {
333
324
  ColumnGroupingPlugin._flattenGroupDefs(groupDefs);
@@ -805,9 +796,8 @@ ColumnGroupingPlugin.prototype._onColumnMoved = function (e) {
805
796
  * @param {Object} e
806
797
  */
807
798
  ColumnGroupingPlugin.prototype._onColumnRemoved = function (e) {
808
- var colData = e.columnData;
809
- if (colData && colData.columnGrouping) {
810
- var colId = colData.columnGrouping.id;
799
+ var colId = e.colId;
800
+ if (colId) {
811
801
  if (this._groupDefs.unsetParent(colId)) {
812
802
  this._requestApplyGrouping();
813
803
  }
@@ -1440,7 +1430,7 @@ ColumnGroupingPlugin.prototype.getValidDestinationIndex = function (id, destCol)
1440
1430
  * Group or column can only be moved within the parent group.
1441
1431
  * If the destination is between other column group, the destination will change to the end of that group instead.
1442
1432
  * @param {string} id group id or column id
1443
- * @param {number|string} destCol destination column index / id
1433
+ * @param {(number|string)=} destCol destination column index / id
1444
1434
  */
1445
1435
  ColumnGroupingPlugin.prototype.moveGroup = function (id, destCol) {
1446
1436
  var groupDef;
@@ -1466,7 +1456,7 @@ ColumnGroupingPlugin.prototype.moveGroup = function (id, destCol) {
1466
1456
  /** Move and reorder the specified columns to position before the destination
1467
1457
  * @public
1468
1458
  * @param {Array.<number|string>} colList Column list to be reordered
1469
- * @param {number|string} destCol destination destination column id or index
1459
+ * @param {(number|string)=} destCol Destination column id or index
1470
1460
  * @return {boolean}
1471
1461
  */
1472
1462
  ColumnGroupingPlugin.prototype.reorderColumns = function (colList, destCol) {
@@ -1474,29 +1464,21 @@ ColumnGroupingPlugin.prototype.reorderColumns = function (colList, destCol) {
1474
1464
  // TODO: create method for toggling autoGrouping flag
1475
1465
  this._autoGrouping = false; // Prevent re-grouping in columnMoved event
1476
1466
 
1477
- var gridApi = this.getGridApi();
1478
- if (gridApi && gridApi.reorderColumns) {
1479
- dirty = gridApi.reorderColumns(colList, destCol); // TODO: Support multi-table feature
1480
- }
1481
-
1467
+ this._reorderColumns(colList, destCol);
1482
1468
  this._autoGrouping = true;
1483
1469
  return dirty;
1484
1470
  };
1485
1471
  /** Move the specified column to position before the destination
1486
1472
  * @public
1487
- * @param {number|string} srcCol source column id or index
1488
- * @param {number|string=} destCol destination column id or index
1473
+ * @param {number|string} srcCol Source column id or index
1474
+ * @param {(number|string)=} destCol Destination column id or index
1489
1475
  * @return {boolean}
1490
1476
  */
1491
1477
  ColumnGroupingPlugin.prototype.moveColumnById = function (srcCol, destCol) {
1492
1478
  var dirty = false;
1493
1479
  this._autoGrouping = false; // Prevent re-grouping in columnMoved event
1494
1480
 
1495
- var gridApi = this.getGridApi();
1496
- if (gridApi && gridApi.moveColumnById) {
1497
- dirty = gridApi.moveColumnById(srcCol, destCol); // TODO: Support multi-table feature
1498
- }
1499
-
1481
+ this._moveColumnById(srcCol, destCol);
1500
1482
  this._autoGrouping = true;
1501
1483
  return dirty;
1502
1484
  };
@@ -129,6 +129,12 @@ declare class ColumnStackPlugin extends GridPlugin {
129
129
 
130
130
  public moveColumnById(srcCol: number|string|null, destCol?: (number|string)|null): boolean;
131
131
 
132
+ public hideStack(stackId: string): void;
133
+
134
+ public showStack(stackId: string): void;
135
+
136
+ public isStackHidden(stackId: string): boolean|null|null;
137
+
132
138
  }
133
139
 
134
140
  export default ColumnStackPlugin;
@@ -336,6 +336,7 @@ ColumnStackPlugin.prototype.config = function (options) {
336
336
  */
337
337
  ColumnStackPlugin.prototype.getConfigObject = function (gridOptions) {
338
338
  var obj = gridOptions || {};
339
+ var host = this._host || this._hosts[0];
339
340
 
340
341
  var columnOptions = obj["columns"];
341
342
 
@@ -351,7 +352,7 @@ ColumnStackPlugin.prototype.getConfigObject = function (gridOptions) {
351
352
  for(var i = 0; i < memberIndices.length; i++){
352
353
  var colIndex = memberIndices[i];
353
354
  var colOption = columnOptions[colIndex];
354
- if(colOption){
355
+ if(colOption && host.isColumnVisible(colIndex)){
355
356
  colOption.hidden = colIndex !== activeColIndex;
356
357
  }
357
358
  }
@@ -1850,10 +1851,7 @@ ColumnStackPlugin.prototype.reorderColumns = function(colList, destCol) {
1850
1851
  var dirty = false;
1851
1852
  this._stacking = false;
1852
1853
 
1853
- var gridApi = this.getGridApi();
1854
- if(gridApi && gridApi.reorderColumns) {
1855
- dirty = gridApi.reorderColumns(colList, destCol); // TODO: Support multi-table feature
1856
- }
1854
+ this._reorderColumns(colList, destCol);
1857
1855
 
1858
1856
  this._stacking = true;
1859
1857
  return dirty;
@@ -1868,15 +1866,76 @@ ColumnStackPlugin.prototype.moveColumnById = function(srcCol, destCol) {
1868
1866
  var dirty = false;
1869
1867
  this._stacking = false;
1870
1868
 
1871
- var gridApi = this.getGridApi();
1872
- if(gridApi && gridApi.moveColumnById) {
1873
- dirty = gridApi.moveColumnById(srcCol, destCol); // TODO: Support multi-table feature
1874
- }
1869
+ this._moveColumnById(srcCol, destCol);
1875
1870
 
1876
1871
  this._stacking = true;
1877
1872
  return dirty;
1878
1873
  };
1879
1874
 
1875
+ /** @private
1876
+ * @description Set stack visibility to the specific stack
1877
+ * @param {string} stackId
1878
+ * @param {boolean} visible
1879
+ */
1880
+ ColumnStackPlugin.prototype._setStackVisibility = function(stackId, visible) {
1881
+ var stackOption = this._stacks[stackId];
1882
+ if(!stackOption){
1883
+ return;
1884
+ }
1885
+
1886
+ if(stackOption["spreading"] && !stackOption["collapsed"]){
1887
+ var stackRefs = stackOption["stackRefs"];
1888
+ for(var i = 0; i < stackRefs.length; i++){
1889
+ var colIndex = this._getColumnIndex(stackRefs[i]);
1890
+ this._setColumnVisibility(colIndex, visible);
1891
+ }
1892
+ } else {
1893
+ var activeColIndex = this._getColumnIndex(stackOption.activeColumn);
1894
+ this._setColumnVisibility(activeColIndex, visible);
1895
+ }
1896
+ };
1897
+
1898
+ /** @public
1899
+ * @description Hide specific stack from grid
1900
+ * @param {string} stackId
1901
+ */
1902
+ ColumnStackPlugin.prototype.hideStack = function(stackId) {
1903
+ if(!stackId){
1904
+ return;
1905
+ }
1906
+ this._setStackVisibility(stackId, false);
1907
+ };
1908
+
1909
+ /** @public
1910
+ * @description Show specific stack from grid
1911
+ * @param {string} stackId
1912
+ */
1913
+ ColumnStackPlugin.prototype.showStack = function(stackId) {
1914
+ if(!stackId){
1915
+ return;
1916
+ }
1917
+ this._setStackVisibility(stackId, true);
1918
+ };
1919
+
1920
+ /** @public
1921
+ * @description Get hidden status of specific stack
1922
+ * @param {string} stackId
1923
+ * @return {boolean|null}
1924
+ */
1925
+ ColumnStackPlugin.prototype.isStackHidden = function(stackId) {
1926
+ var stackOption = this._stacks[stackId];
1927
+ var host = this._host || this._hosts[0];
1928
+
1929
+ if(!stackOption || !host){
1930
+ return null;
1931
+ }
1932
+
1933
+ var activeColIndex = this._getColumnIndex(stackOption.activeColumn);
1934
+ var isVisible = host.isColumnVisible(activeColIndex);
1935
+
1936
+ return !isVisible;
1937
+ };
1938
+
1880
1939
 
1881
1940
 
1882
1941
  export default ColumnStackPlugin;
@@ -1,39 +1,44 @@
1
1
  import {Ext} from '../../tr-grid-util/es6/Ext.js';
2
- import { GridPlugin } from '../../tr-grid-util/es6/GridPlugin.js';
3
- import { extendObject } from '../../tr-grid-util/es6/Util.js';
2
+ import {GridPlugin} from '../../tr-grid-util/es6/GridPlugin.js';
3
+ import {extendObject, injectCss, prettifyCss} from '../../tr-grid-util/es6/Util.js';
4
4
  import {CellPainter} from '../../tr-grid-util/es6/CellPainter.js';
5
5
  import {FilterBuilder} from '../../tr-grid-util/es6/FilterBuilder.js';
6
6
  import {ElfUtil} from '../../tr-grid-util/es6/ElfUtil.js';
7
7
 
8
8
  declare namespace ConditionalColoringPlugin {
9
9
 
10
+ type Options = {
11
+ predefinedColors?: any
12
+ };
13
+
10
14
  type ColumnOptions = {
11
- conditions?: (ConditionalColoringPlugin.Condition)[],
12
- colorText?: (string|boolean),
13
- tickColor?: (string|boolean),
14
- blinking?: (ConditionalColoringPlugin.Blinking|boolean),
15
- field?: string
15
+ conditions?: (ConditionalColoringPlugin.Condition)[]|null,
16
+ colorText?: (string|boolean)|null,
17
+ tickColor?: (string|boolean)|null,
18
+ blinking?: (ConditionalColoringPlugin.Blinking|boolean)|null,
19
+ field?: string|null
16
20
  };
17
21
 
18
22
  type ConditionalColoringOptions = {
19
- conditions?: (ConditionalColoringPlugin.Condition)[],
20
- colorText?: (string|boolean),
21
- tickColor?: (string|boolean),
22
- field?: string
23
+ conditions?: (ConditionalColoringPlugin.Condition)[]|null,
24
+ colorText?: (string|boolean)|null,
25
+ tickColor?: (string|boolean)|null,
26
+ field?: string|null
23
27
  };
24
28
 
25
29
  type Condition = {
26
- expression?: (string|((...params: any[]) => any)),
27
- backgroundColor?: string,
28
- color?: string
30
+ expression?: (string|((...params: any[]) => any))|null,
31
+ backgroundColor?: string|null,
32
+ color?: string|null,
33
+ cssClass?: string|null
29
34
  };
30
35
 
31
36
  type Blinking = {
32
- border?: boolean,
33
- field?: string,
34
- up?: string,
35
- down?: string,
36
- level?: (string|boolean)
37
+ border?: boolean|null,
38
+ field?: string|null,
39
+ up?: string|null,
40
+ down?: string|null,
41
+ level?: (string|boolean)|null
37
42
  };
38
43
 
39
44
  }
@@ -56,21 +61,23 @@ declare class ConditionalColoringPlugin extends GridPlugin {
56
61
 
57
62
  public getColumnColoring(colIndex: number, options?: any): ConditionalColoringPlugin.ColumnOptions;
58
63
 
59
- public setColumnColoring(colIndex: number, columnOptions?: (ConditionalColoringPlugin.ColumnOptions|null)): void;
64
+ public setColumnColoring(colIndex: number, columnOptions?: (ConditionalColoringPlugin.ColumnOptions|null)|null): void;
60
65
 
61
- public setConditionalColoring(colIndex: number, coloringOptions?: (ConditionalColoringPlugin.ConditionalColoringOptions|null)): void;
66
+ public setConditionalColoring(colIndex: number, coloringOptions?: (ConditionalColoringPlugin.ConditionalColoringOptions|null)|null): void;
62
67
 
63
- public setColumnBlinking(colIndex: number, blinkingOptions?: (boolean|ConditionalColoringPlugin.Blinking), field?: string): void;
68
+ public setColumnBlinking(colIndex: number, blinkingOptions?: (boolean|ConditionalColoringPlugin.Blinking)|null, field?: string|null): void;
64
69
 
65
70
  public blinkRow(rowIndex: number, blinkSignal: number, host?: any): void;
66
71
 
72
+ public setPredefinedColors(predefinedColors: any): void;
73
+
67
74
  public getColumnPainter(colIndex: number): CellPainter|null;
68
75
 
69
76
  public applyColor(colIndex: number, cell: any, rowData?: any): void;
70
77
 
71
78
  public static cleanUpPrevRows(): void;
72
79
 
73
- public static setThemeColors(colors: { [key: string]: string }): void;
80
+ public static setThemeColors(colors: { [key: string]: string }|null): void;
74
81
 
75
82
  public reloadThemeColors(): Promise<any>|null;
76
83