@refinitiv-ui/efx-grid 6.0.25 → 6.0.26

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.
@@ -224,6 +224,8 @@ declare class Grid extends EventDispatcher {
224
224
 
225
225
  public getColumnDefinitionsById(colIds: (string)[]|null): ColumnDefinition|null;
226
226
 
227
+ public getRowType(rowRef: number|string|null): string;
228
+
227
229
  public getRowDefinition(rowRef: number|string|null): RowDefinition|null;
228
230
 
229
231
  public getRowDefinitions(): (RowDefinition)[];
@@ -312,7 +314,7 @@ declare class Grid extends EventDispatcher {
312
314
 
313
315
  declare function borders(gridOptions?: any): any;
314
316
 
315
- declare function colCount(rowRef: number|string|null): RowDefinition|null;
317
+ declare function colCount(rowRef: number|string|null): string;
316
318
 
317
319
  export { Grid };
318
320
  export default Grid;
@@ -2788,7 +2788,14 @@ Grid.prototype._getColumnDefinition = function(colRef) {
2788
2788
  }
2789
2789
  return null;
2790
2790
  };
2791
-
2791
+ /** @public
2792
+ * @param {number|string} rowRef Row index as shown in the view or row id (string)
2793
+ * @return {string}
2794
+ */
2795
+ Grid.prototype.getRowType = function(rowRef) {
2796
+ var rowDef = this.getRowDefinition(rowRef);
2797
+ return rowDef ? rowDef.getType() : "";
2798
+ };
2792
2799
  /** @public
2793
2800
  * @param {number|string} rowRef Row index as shown in the view or row id (string)
2794
2801
  * @return {RowDefinition}
@@ -15,6 +15,15 @@ declare namespace RowDefinition {
15
15
  hidden?: boolean|null
16
16
  };
17
17
 
18
+ type RowTypes = {
19
+ CONTENT: string,
20
+ CHAIN: string,
21
+ CONSTITUENT: string,
22
+ GROUP_HEADER: string,
23
+ SUBGROUP_HEADER: string,
24
+ GROUP_MEMBER: string
25
+ };
26
+
18
27
  }
19
28
 
20
29
  declare class RowDefinition {
@@ -35,6 +44,8 @@ declare class RowDefinition {
35
44
 
36
45
  public getDataId(): string;
37
46
 
47
+ public getType(): string;
48
+
38
49
  public setDataSource(dataSource: DataCache|null): void;
39
50
 
40
51
  public getDataSource(): DataCache|null;
@@ -125,7 +136,9 @@ declare class RowDefinition {
125
136
 
126
137
  declare const ROW_DEF: string;
127
138
 
139
+ declare const ROW_TYPES: RowDefinition.RowTypes|null;
140
+
128
141
  declare function rowData(userInput: string): boolean;
129
142
 
130
- export {RowDefinition, ROW_DEF};
143
+ export {RowDefinition, ROW_DEF, ROW_TYPES};
131
144
  export default RowDefinition;
@@ -16,12 +16,34 @@ import { DataTable } from "../../core/es6/data/DataTable.js";
16
16
  * @property {boolean=} hidden=true When this row is hidden
17
17
  */
18
18
 
19
+ /** @typedef {Object} RowDefinition~RowTypes
20
+ * @property {string} CONTENT="CONTENT"
21
+ * @property {string} CHAIN="CHAIN"
22
+ * @property {string} CONSTITUENT="CONSTITUENT"
23
+ * @property {string} GROUP_HEADER="GROUP_HEADER"
24
+ * @property {string} SUBGROUP_HEADER="SUBGROUP_HEADER"
25
+ * @property {string} GROUP_MEMBER="GROUP_MEMBER"
26
+ */
27
+
19
28
  /** @type {string}
20
29
  * @public
21
30
  * @const
22
31
  */
23
32
  var ROW_DEF = "ROW_DEF";
24
33
 
34
+ /** @type {RowDefinition~RowTypes}
35
+ * @public
36
+ * @const
37
+ */
38
+ var ROW_TYPES = {
39
+ CONTENT: "CONTENT",
40
+ CHAIN: "CHAIN",
41
+ CONSTITUENT: "CONSTITUENT",
42
+ GROUP_HEADER: "GROUP_HEADER",
43
+ SUBGROUP_HEADER: "SUBGROUP_HEADER",
44
+ GROUP_MEMBER: "GROUP_MEMBER"
45
+ };
46
+
25
47
  /** @constructor
26
48
  * @param {RowDefinition~Options=} rowOptions
27
49
  */
@@ -394,7 +416,37 @@ RowDefinition.prototype.getConfigObject = function(rowOptions) {
394
416
  RowDefinition.prototype.getDataId = function() {
395
417
  return this._dataId;
396
418
  };
397
-
419
+ /** @public
420
+ * @return {string}
421
+ */
422
+ RowDefinition.prototype.getType = function() {
423
+ if(this._isChain) {
424
+ return ROW_TYPES.CHAIN;
425
+ } else if(this._parent) {
426
+ return ROW_TYPES.CONSTITUENT;
427
+ } else {
428
+ var dv = this._view;
429
+ if(dv) {
430
+ var rid = this.getRowId();
431
+ var separator = dv.isSegmentSeparator(rid);
432
+ var level = dv.getSegmentLevel(rid);
433
+ if(separator) {
434
+ if(level === 1) {
435
+ return ROW_TYPES.GROUP_HEADER;
436
+ } else {
437
+ return ROW_TYPES.SUBGROUP_HEADER;
438
+ }
439
+ } else {
440
+ if(dv.getSegmentParentRowId(rid)) {
441
+ return ROW_TYPES.GROUP_MEMBER;
442
+ }
443
+ }
444
+ } else {
445
+ return "";
446
+ }
447
+ }
448
+ return ROW_TYPES.CONTENT;
449
+ };
398
450
  /** This method should always be called right after the initialization
399
451
  * @public
400
452
  * @param {DataCache} dataSource
@@ -1079,5 +1131,5 @@ RowDefinition.dispose = function(rowDef) {
1079
1131
  rowDef.dispose();
1080
1132
  };
1081
1133
 
1082
- export {RowDefinition, ROW_DEF};
1134
+ export {RowDefinition, ROW_DEF, ROW_TYPES};
1083
1135
  export default RowDefinition;
@@ -7,22 +7,22 @@ import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
7
7
  declare namespace ColumnSelectionPlugin {
8
8
 
9
9
  type Options = {
10
- singleSelection?: boolean,
11
- clickToggle?: boolean,
12
- selectionChanged?: ((...params: any[]) => any),
13
- menuClicked?: ((...params: any[]) => any),
14
- menuPosition?: string
10
+ singleSelection?: boolean|null,
11
+ clickToggle?: boolean|null,
12
+ selectionChanged?: ((...params: any[]) => any)|null,
13
+ menuClicked?: ((...params: any[]) => any)|null,
14
+ menuPosition?: string|null
15
15
  };
16
16
 
17
17
  type ColumnOptions = {
18
- unselectable?: boolean
18
+ unselectable?: boolean|null
19
19
  };
20
20
 
21
21
  }
22
22
 
23
23
  declare class ColumnSelectionPlugin extends GridPlugin {
24
24
 
25
- constructor(options?: ColumnSelectionPlugin.Options);
25
+ constructor(options?: ColumnSelectionPlugin.Options|null);
26
26
 
27
27
  public getName(): string;
28
28
 
@@ -34,7 +34,7 @@ declare class ColumnSelectionPlugin extends GridPlugin {
34
34
 
35
35
  public getConfigObject(gridOptions?: any): any;
36
36
 
37
- public disable(opt_bool?: boolean): void;
37
+ public disable(opt_bool?: boolean|null): void;
38
38
 
39
39
  public isEnabled(): boolean;
40
40
 
@@ -46,9 +46,11 @@ declare class ColumnSelectionPlugin extends GridPlugin {
46
46
 
47
47
  public getLastSelectedColumn(): number;
48
48
 
49
- public setSelectedColumn(colIndex: number, opt_select?: boolean, opt_grid?: any): boolean;
49
+ public setSelectedColumn(colIndex: number, opt_select?: boolean|null, opt_grid?: any): boolean;
50
50
 
51
- public selectSingleColumn(opt_colIndex?: (number|null), opt_grid?: any): void;
51
+ public selectSingleColumn(opt_colIndex?: (number|null)|null, opt_grid?: any): void;
52
+
53
+ public selectSingleGroup(groupId: string, opt_grid?: any): void;
52
54
 
53
55
  public selectRange(anchorIndex: number, len: number, opt_grid?: any): void;
54
56
 
@@ -58,7 +60,7 @@ declare class ColumnSelectionPlugin extends GridPlugin {
58
60
 
59
61
  public clearSelectedColumns(): void;
60
62
 
61
- public clearSelection(cols?: (number|(number)[])): void;
63
+ public clearSelection(cols?: (number|(number)[])|null): void;
62
64
 
63
65
  public selectAll(): void;
64
66
 
@@ -115,6 +115,12 @@ ColumnSelectionPlugin.prototype._menuButton = null;
115
115
  */
116
116
 
117
117
  ColumnSelectionPlugin.prototype._menuPosition = "outside";
118
+ /** @type {Object}
119
+ * @private
120
+ */
121
+
122
+ ColumnSelectionPlugin.prototype._cgp = null; // Column grouping extension
123
+
118
124
  /** @public
119
125
  * @return {string}
120
126
  */
@@ -152,15 +158,12 @@ ColumnSelectionPlugin.prototype.initialize = function (host, options) {
152
158
  host.listen("columnPositionChanged", this._onColumnPositionChanged);
153
159
  this.config(options);
154
160
 
155
- if (this._onMenuClicked) {
156
- // use styles menu icon only when want to use icon menu
157
- if (ColumnSelectionPlugin._stylePromise) {
158
- ColumnSelectionPlugin._applyThemeColor(host);
159
- } else {
160
- ColumnSelectionPlugin._stylePromise = ElfUtil.getThemeColors();
161
+ if (ColumnSelectionPlugin._stylePromise) {
162
+ ColumnSelectionPlugin._applyThemeColor(host);
163
+ } else {
164
+ ColumnSelectionPlugin._stylePromise = ElfUtil.getThemeColors();
161
165
 
162
- ColumnSelectionPlugin._stylePromise.then(this._onThemeLoaded)["catch"](this._onThemeLoaded);
163
- }
166
+ ColumnSelectionPlugin._stylePromise.then(this._onThemeLoaded)["catch"](this._onThemeLoaded);
164
167
  }
165
168
  };
166
169
  /** @private
@@ -170,7 +173,7 @@ ColumnSelectionPlugin.prototype.initialize = function (host, options) {
170
173
  ColumnSelectionPlugin.prototype._onThemeLoaded = function () {
171
174
  if (!ColumnSelectionPlugin._styles) {
172
175
  var styles = [".column-selection-menu", ["position: absolute;", "background-color: var(--grid-column-menu-icon-bgcolor);", "color: var(--grid-column-menu-icon-color);", "z-index: 1;", "cursor: pointer;", "text-align: center;", "width: 16px;", "height: 16px;", "padding: 6px;"], ".column-selection-menu:hover", ["background-color: var(--grid-column-menu-icon-hover-bgcolor);"], ".column-selection-menu-inside", ["padding: 4px;" // if not outside icon, move to inside
173
- ]];
176
+ ], ".selected-column .cell.selected-group", ["background-color: var(--grid-selection-bgcolor);"]];
174
177
  ColumnSelectionPlugin._styles = prettifyCss(styles);
175
178
  }
176
179
 
@@ -194,6 +197,15 @@ ColumnSelectionPlugin._applyThemeColor = function (grid) {
194
197
  injectCss(ColumnSelectionPlugin._styles, grid.getParent());
195
198
  }
196
199
  };
200
+ /**
201
+ * @protected
202
+ * @ignore
203
+ */
204
+
205
+
206
+ ColumnSelectionPlugin.prototype._afterInit = function () {
207
+ this._cgp = this._getPlugin("ColumnGroupingPlugin");
208
+ };
197
209
  /** @public
198
210
  * @param {Object=} host core grid object
199
211
  */
@@ -436,48 +448,13 @@ ColumnSelectionPlugin.prototype.getLastSelectedColumn = function () {
436
448
 
437
449
 
438
450
  ColumnSelectionPlugin.prototype.setSelectedColumn = function (colIndex, opt_select, opt_grid) {
439
- if (!(colIndex >= 0)) {
440
- return false;
441
- }
442
-
443
- if (opt_grid) {
444
- if (opt_grid !== this._activeGrid) {
445
- this._activeGrid = opt_grid; // TODO: Check if the grid is one of the hosts
446
- }
447
- }
448
-
449
- if (!this._activeGrid) {
450
- this._activeGrid = this._hosts[0]; // Select the first grid
451
-
452
- if (!this._activeGrid) {
453
- return false;
454
- }
455
- }
456
-
457
- if (colIndex >= this.getColumnCount()) {
458
- return false;
459
- }
460
-
461
- var selection = opt_select ? true : false;
462
-
463
- if (selection && this._getColumnOption(colIndex, "unselectable")) {
464
- return false;
465
- }
466
-
467
- this._hasSelection = selection ? true : null;
468
- this._pendingSelectionOnAdded = -1; // New selection happens before resolving the pending selection
451
+ var dirty = this._setSelectedColumn(colIndex, opt_select, opt_grid);
469
452
 
470
- this._pendingSelectionOnRemoved = -1; // New selection happens before resolving the pending selection
471
-
472
- var len = this._hosts.length;
473
-
474
- for (var i = 0; i < len; ++i) {
475
- this._hosts[i].selectColumn(colIndex, selection);
453
+ if (dirty) {
454
+ this._updateGroupSelection();
476
455
  }
477
456
 
478
- this._updateMenuIcon();
479
-
480
- return true;
457
+ return dirty;
481
458
  };
482
459
  /** Select the specified column on an active grid, and clear all other column selections
483
460
  * @public
@@ -499,9 +476,42 @@ ColumnSelectionPlugin.prototype.selectSingleColumn = function (opt_colIndex, opt
499
476
  var activeGrid = opt_grid || this._activeGrid;
500
477
  this.clearAllSelections();
501
478
 
502
- if (this.setSelectedColumn(opt_colIndex, true, activeGrid)) {
479
+ if (this._setSelectedColumn(opt_colIndex, true, activeGrid)) {
503
480
  this._anchorCol = opt_colIndex; // Update the anchor
504
481
  }
482
+
483
+ this._updateGroupSelection();
484
+ };
485
+ /**
486
+ * Select the columns in a group on an active grid, and clear all other column selections
487
+ * This does not working with single selection mode
488
+ * @public
489
+ * @param {string} groupId
490
+ * @param {Object=} opt_grid core grid object
491
+ */
492
+
493
+
494
+ ColumnSelectionPlugin.prototype.selectSingleGroup = function (groupId, opt_grid) {
495
+ var activeGrid = opt_grid || this._activeGrid;
496
+ var cgp = this._cgp;
497
+
498
+ if (!cgp || !groupId) {
499
+ return;
500
+ }
501
+
502
+ var childIndices = cgp.getChildColumnIndices(groupId);
503
+ var dirty = false;
504
+ this.clearAllSelections();
505
+
506
+ for (var i = 0; i <= childIndices.length; i++) {
507
+ dirty |= this._setSelectedColumn(childIndices[i], true, activeGrid);
508
+ }
509
+
510
+ if (dirty) {
511
+ this._anchorCol = childIndices[0];
512
+ }
513
+
514
+ this._updateGroupSelection();
505
515
  };
506
516
  /** Select from the anchorIndex to the target by length
507
517
  * @public
@@ -724,6 +734,116 @@ ColumnSelectionPlugin.prototype.isSelectedColumn = function (colIndex) {
724
734
  ColumnSelectionPlugin.prototype.getActiveGrid = function () {
725
735
  return this._activeGrid;
726
736
  };
737
+ /** Select or deselect a column on the active grid
738
+ * @private
739
+ * @param {number} colIndex
740
+ * @param {boolean=} opt_select=false Null or undefined value will be treated as false value
741
+ * @param {Object=} opt_grid core grid object
742
+ * @return {boolean} Return true for successful selection, otherwise false
743
+ */
744
+
745
+
746
+ ColumnSelectionPlugin.prototype._setSelectedColumn = function (colIndex, opt_select, opt_grid) {
747
+ if (!(colIndex >= 0)) {
748
+ return false;
749
+ }
750
+
751
+ if (opt_grid) {
752
+ if (opt_grid !== this._activeGrid) {
753
+ this._activeGrid = opt_grid; // TODO: Check if the grid is one of the hosts
754
+ }
755
+ }
756
+
757
+ if (!this._activeGrid) {
758
+ this._activeGrid = this._hosts[0]; // Select the first grid
759
+
760
+ if (!this._activeGrid) {
761
+ return false;
762
+ }
763
+ }
764
+
765
+ if (colIndex >= this.getColumnCount()) {
766
+ return false;
767
+ }
768
+
769
+ var selection = opt_select ? true : false;
770
+
771
+ if (selection && this._getColumnOption(colIndex, "unselectable")) {
772
+ return false;
773
+ }
774
+
775
+ this._hasSelection = selection ? true : null;
776
+ this._pendingSelectionOnAdded = -1; // New selection happens before resolving the pending selection
777
+
778
+ this._pendingSelectionOnRemoved = -1; // New selection happens before resolving the pending selection
779
+
780
+ var len = this._hosts.length;
781
+
782
+ for (var i = 0; i < len; ++i) {
783
+ this._hosts[i].selectColumn(colIndex, selection);
784
+ }
785
+
786
+ this._updateMenuIcon();
787
+
788
+ return true;
789
+ };
790
+ /**
791
+ * @private
792
+ * @param {Array<number>} colIndices
793
+ * @return {boolean}
794
+ */
795
+
796
+
797
+ ColumnSelectionPlugin.prototype._isSelectedColumns = function (colIndices) {
798
+ var isAllSelected = false;
799
+ var count = colIndices.length;
800
+
801
+ if (this._activeGrid) {
802
+ for (var i = 0; i < count; i++) {
803
+ var colIndex = colIndices[i];
804
+ isAllSelected = this._activeGrid.isSelectedColumn(colIndex);
805
+
806
+ if (!isAllSelected) {
807
+ break;
808
+ }
809
+ }
810
+ }
811
+
812
+ return isAllSelected;
813
+ };
814
+ /**
815
+ * @private
816
+ * @param {Array<number>} colIndices
817
+ */
818
+
819
+
820
+ ColumnSelectionPlugin.prototype._updateGroupSelection = function () {
821
+ var cgp = this._cgp;
822
+ var grid = this._activeGrid;
823
+
824
+ if (!cgp || !grid) {
825
+ return;
826
+ }
827
+
828
+ var section = grid.getSection("title");
829
+ var groupDefs = cgp.getGroupDefinitions();
830
+ var count = groupDefs.length;
831
+
832
+ for (var i = 0; i < count; i++) {
833
+ var groupDef = groupDefs[i];
834
+ var groupId = groupDef["id"];
835
+ var childIndices = cgp.getChildColumnIndices(groupId);
836
+ var rowIndex = cgp.getGroupLevel(groupId);
837
+ var colIndex = childIndices[0];
838
+ var cell = section.getCell(colIndex, rowIndex);
839
+
840
+ if (this._isSelectedColumns(childIndices)) {
841
+ cell.addClass("selected-group");
842
+ } else {
843
+ cell.removeClass("selected-group");
844
+ }
845
+ }
846
+ };
727
847
  /** Left click on title causes selection change. <br>
728
848
  * Ctrl/Shift left click on title causes multi selection. <br>
729
849
  * Left click anywhere, not title, causes deselection.
@@ -743,7 +863,8 @@ ColumnSelectionPlugin.prototype._onClick = function (e) {
743
863
  return;
744
864
  }
745
865
 
746
- var info = host.getRelativePosition(e);
866
+ var cgp = this._cgp;
867
+ var info = cgp ? cgp.getCellInfo(e) : host.getRelativePosition(e);
747
868
 
748
869
  if (!info["hit"] || info["sectionType"] !== "title") {
749
870
  return;
@@ -763,43 +884,72 @@ ColumnSelectionPlugin.prototype._onClick = function (e) {
763
884
  }
764
885
 
765
886
  var cIndex = info["colIndex"];
766
- var singleSelection = !this._activeGrid || this._activeGrid !== host; // New grid is clicked
887
+ var isNewGridClicked = !this._activeGrid || this._activeGrid !== host;
888
+ var groupId = info["groupId"];
889
+ var childIndices, childCount;
890
+
891
+ if (groupId) {
892
+ childIndices = cgp.getChildColumnIndices(groupId);
893
+ childCount = childIndices.length;
894
+ }
767
895
 
768
- if (singleSelection || this._singleSelMode) {
896
+ if (isNewGridClicked) {
769
897
  this.clearAllSelections();
770
898
  this._activeGrid = host;
771
- this.setSelectedColumn(cIndex, true);
772
- this._anchorCol = cIndex;
773
- } else {
774
- // The same active grid case
775
- if (e.ctrlKey) {
776
- var newState = !this.isSelectedColumn(cIndex); // toggle
899
+ this._anchorCol = -1;
900
+ }
777
901
 
778
- this.setSelectedColumn(cIndex, newState);
902
+ if (e.ctrlKey || e.metaKey) {
903
+ if (!groupId && (!this._singleSelMode || this.isSelectedColumn(cIndex))) {
904
+ this.setSelectedColumn(cIndex, !this.isSelectedColumn(cIndex));
905
+ this._anchorCol = this.isSelectedColumn(cIndex) ? cIndex : this.getFirstSelectedColumn();
906
+ } else {
907
+ var newState = !this._isSelectedColumns(childIndices);
779
908
 
780
- if (newState) {
781
- this._anchorCol = cIndex;
782
- } else if (this._anchorCol === cIndex) {
783
- this._anchorCol = this.getFirstSelectedColumn();
909
+ for (var i = 0; i < childCount; i++) {
910
+ this.setSelectedColumn(childIndices[i], newState, host);
784
911
  }
912
+
913
+ this._anchorCol = newState ? childIndices[0] : this.getFirstSelectedColumn();
914
+ }
915
+ } else if (e.shiftKey && !this._singleSelMode) {
916
+ if (groupId) {
917
+ var firstGroupCol = childIndices[0];
918
+ var lastGroupCol = childIndices[childCount - 1];
919
+
920
+ if (this._anchorCol >= firstGroupCol && this._anchorCol <= lastGroupCol) {
921
+ this._anchorCol = firstGroupCol;
922
+ cIndex = lastGroupCol;
923
+ } else if (this._anchorCol > firstGroupCol) {
924
+ cIndex = firstGroupCol;
925
+ } else if (this._anchorCol < lastGroupCol) {
926
+ cIndex = lastGroupCol;
927
+ }
928
+ }
929
+
930
+ this._selectFromAnchorToTarget(cIndex);
931
+ } else if (this._clickToggleMode) {
932
+ var cols = this.getSelectedColumns();
933
+
934
+ if (cols.length === 1 && cols[0] === cIndex) {
935
+ this.setSelectedColumn(cIndex, false); // toggle
936
+
937
+ this._anchorCol = -1;
938
+ } else if (childIndices && cols.length == childCount && this._isSelectedColumns(childIndices)) {
939
+ this.clearAllSelections();
940
+ this._anchorCol = -1;
785
941
  } else {
786
- if (e.shiftKey) {
787
- this._selectFromAnchorToTarget(cIndex);
788
- } else {
789
- if (this._clickToggleMode) {
790
- var cols = this.getSelectedColumns();
791
-
792
- if (cols.length === 1 && cols[0] === cIndex) {
793
- this.setSelectedColumn(cIndex, false); // toggle
794
-
795
- this._anchorCol = -1;
796
- } else {
797
- this.selectSingleColumn(cIndex);
798
- }
799
- } else {
800
- this.selectSingleColumn(cIndex);
801
- }
942
+ groupId ? this.selectSingleGroup(groupId) : this.selectSingleColumn(cIndex);
943
+ }
944
+ } else {
945
+ if (this._singleSelMode) {
946
+ if (groupId) {
947
+ return;
802
948
  }
949
+
950
+ this.selectSingleColumn(cIndex);
951
+ } else {
952
+ groupId ? this.selectSingleGroup(groupId) : this.selectSingleColumn(cIndex);
803
953
  }
804
954
  }
805
955
 
@@ -1139,13 +1289,15 @@ ColumnSelectionPlugin.prototype._selectFromAnchorToTarget = function (targetInde
1139
1289
 
1140
1290
  if (targetIndex <= this._anchorCol) {
1141
1291
  for (i = targetIndex; i <= this._anchorCol; ++i) {
1142
- this.setSelectedColumn(i, true, grid);
1292
+ this._setSelectedColumn(i, true, grid);
1143
1293
  }
1144
1294
  } else {
1145
1295
  for (i = this._anchorCol; i <= targetIndex; ++i) {
1146
- this.setSelectedColumn(i, true, grid);
1296
+ this._setSelectedColumn(i, true, grid);
1147
1297
  }
1148
1298
  }
1299
+
1300
+ this._updateGroupSelection();
1149
1301
  };
1150
1302
  /** @private
1151
1303
  * @param {Event} e
@@ -433,17 +433,19 @@ ColumnStackPlugin.prototype._transformStackConfig = function(stackConfig) {
433
433
  var colIndex = this.getColumnIndex(children[j]);
434
434
  if(colIndex !== -1){
435
435
  field = this._getField(colIndex);
436
- stackConfig.colRefs.push(field);
436
+ if(field) {
437
+ stackConfig.colRefs.push(field);
438
+ }
437
439
  }
438
440
  }
439
441
  } else if(fields) {
440
442
  stackConfig.colRefs = fields;
441
443
  }
442
444
  var activeColumn = stackConfig.activeColumn;
443
- if(activeColumn && !this._autoStacking){
445
+ if(activeColumn != null && !this._autoStacking){
444
446
  var activeColIndex = this.getColumnIndex(activeColumn);
445
447
  if(activeColIndex !== -1){
446
- field = this._getField(colIndex);
448
+ field = this._getField(activeColIndex);
447
449
  if(field){
448
450
  stackConfig.activeColumn = field;
449
451
  }
@@ -1,22 +1,25 @@
1
1
  import {Ext} from '../../tr-grid-util/es6/Ext.js';
2
2
  import {GridPlugin} from '../../tr-grid-util/es6/GridPlugin.js';
3
- import {RangeBar} from '../../tr-grid-util/es6/RangeBar.js';
4
- import {Dom} from '../../tr-grid-util/es6/Dom.js';
5
3
  import {ElfUtil} from '../../tr-grid-util/es6/ElfUtil.js';
4
+ import { injectCss, prettifyCss } from "../../tr-grid-util/es6/Util.js";
6
5
 
7
6
  declare namespace RangeBarPlugin {
8
7
 
9
8
  type ColumnOptions = {
10
- rangeBar?: RangeBarPlugin.RangeDefinition
9
+ rangeBar?: RangeBarPlugin.RangeDefinition|null
11
10
  };
12
11
 
13
12
  type RangeDefinition = {
14
- field?: string,
15
- start?: number,
16
- end?: number,
17
- low?: string,
18
- high?: string,
19
- last?: string
13
+ field?: string|null,
14
+ start?: number|null,
15
+ end?: number|null,
16
+ low?: string|null,
17
+ high?: string|null,
18
+ last?: string|null
19
+ };
20
+
21
+ type Options = {
22
+ tooltip?: boolean|null
20
23
  };
21
24
 
22
25
  }
@@ -33,6 +36,12 @@ declare class RangeBarPlugin extends GridPlugin {
33
36
 
34
37
  public getConfigObject(out_obj?: any): any;
35
38
 
39
+ public getColumnConfigObject(colIndex: number, out_obj?: any): any;
40
+
41
+ public getValue(colRef: number|string|null, rowRef: number|string|null): any;
42
+
43
+ public getTooltipText(colRef: number|string|null, rowRef: number|string|null): string;
44
+
36
45
  }
37
46
 
38
47
  export default RangeBarPlugin;