@refinitiv-ui/efx-grid 6.0.37 → 6.0.39
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/core/dist/core.js +165 -20
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/grid/Core.d.ts +2 -0
- package/lib/core/es6/grid/Core.js +62 -5
- package/lib/core/es6/grid/plugins/SortableTitlePlugin.d.ts +3 -0
- package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +41 -7
- package/lib/core/es6/grid/util/TrackLayout.d.ts +3 -1
- package/lib/core/es6/grid/util/TrackLayout.js +23 -5
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +158 -48
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/ColumnDefinition.js +4 -3
- package/lib/rt-grid/es6/Grid.d.ts +1 -1
- package/lib/rt-grid/es6/Grid.js +63 -29
- package/lib/rt-grid/es6/RowDefinition.js +6 -6
- package/lib/tr-grid-cell-selection/es6/CellSelection.js +180 -421
- package/lib/tr-grid-column-grouping/es6/ColumnGrouping.d.ts +4 -0
- package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +221 -2
- package/lib/tr-grid-column-stack/es6/ColumnStack.d.ts +7 -1
- package/lib/tr-grid-column-stack/es6/ColumnStack.js +281 -69
- package/lib/tr-grid-row-dragging/es6/RowDragging.js +83 -3
- package/lib/tr-grid-row-selection/es6/RowSelection.js +18 -40
- package/lib/tr-grid-util/es6/GridPlugin.js +91 -42
- package/lib/types/es6/ColumnGrouping.d.ts +4 -0
- package/lib/types/es6/ColumnStack.d.ts +7 -1
- package/lib/types/es6/Core/grid/Core.d.ts +2 -0
- package/lib/types/es6/Core/grid/util/TrackLayout.d.ts +3 -1
- package/lib/types/es6/RealtimeGrid/Grid.d.ts +1 -1
- package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +2 -2
- package/lib/versions.json +6 -6
- package/package.json +1 -1
@@ -89,6 +89,10 @@ declare class ColumnGroupingPlugin extends GridPlugin {
|
|
89
89
|
|
90
90
|
public moveColumnById(srcCol: number|string|null, destCol?: (number|string)|null): boolean;
|
91
91
|
|
92
|
+
public pinGroup(groupId: string, side?: string|null): void;
|
93
|
+
|
94
|
+
public unpinGroup(groupId: string, dest?: (number|string)|null): void;
|
95
|
+
|
92
96
|
}
|
93
97
|
|
94
98
|
export default ColumnGroupingPlugin;
|
@@ -36,6 +36,7 @@ var ColumnGroupingPlugin = function ColumnGroupingPlugin(options) {
|
|
36
36
|
t._requestApplyAddChildGroup = t._requestApplyAddChildGroup.bind(this);
|
37
37
|
t._onPostSectionRender = t._onPostSectionRender.bind(t);
|
38
38
|
t._onBeforeColumnBoundUpdate = t._onBeforeColumnBoundUpdate.bind(t);
|
39
|
+
t._onPinningChanged = t._onPinningChanged.bind(this);
|
39
40
|
t._groupDefs = new GroupDefinitions();
|
40
41
|
if (options) {
|
41
42
|
t.config({
|
@@ -83,6 +84,10 @@ ColumnGroupingPlugin.prototype._addingEvents = null;
|
|
83
84
|
* @private
|
84
85
|
*/
|
85
86
|
ColumnGroupingPlugin.prototype._legacyColumnGroups = null;
|
87
|
+
/** @type {boolean}
|
88
|
+
* @private
|
89
|
+
*/
|
90
|
+
ColumnGroupingPlugin.prototype._inPinning = false;
|
86
91
|
|
87
92
|
/** @private
|
88
93
|
* @param {number} a
|
@@ -237,6 +242,7 @@ ColumnGroupingPlugin.prototype.initialize = function (host, options) {
|
|
237
242
|
host.listen("columnVisibilityChanged", this._onColumnChanged);
|
238
243
|
host.listen("postSectionRender", this._onPostSectionRender);
|
239
244
|
host.listen("beforeColumnBoundUpdate", this._onBeforeColumnBoundUpdate);
|
245
|
+
host.listen("pinningChanged", this._onPinningChanged);
|
240
246
|
}
|
241
247
|
this.config(options);
|
242
248
|
this._legacyColumnGroups = null;
|
@@ -290,6 +296,7 @@ ColumnGroupingPlugin.prototype.unload = function (host) {
|
|
290
296
|
host.unlisten("columnRemoved", this._onColumnRemoved);
|
291
297
|
host.unlisten("postSectionRender", this._onPostSectionRender);
|
292
298
|
host.unlisten("beforeColumnBoundUpdate", this._onBeforeColumnBoundUpdate);
|
299
|
+
host.unlisten("pinningChanged", this._onPinningChanged);
|
293
300
|
if (!this._hosts.length) {
|
294
301
|
if (this._rerenderTimerId) {
|
295
302
|
clearTimeout(this._rerenderTimerId);
|
@@ -408,7 +415,50 @@ ColumnGroupingPlugin.prototype._migrateLegacyStructure = function (groupDefs, co
|
|
408
415
|
}
|
409
416
|
return groupDefs.filter(ColumnGroupingPlugin._hasGroupId);
|
410
417
|
};
|
411
|
-
|
418
|
+
/** @private
|
419
|
+
* @param {number} frozenColIndex
|
420
|
+
* @param {number=} numRightColumn
|
421
|
+
*/
|
422
|
+
ColumnGroupingPlugin.prototype._freezeColumn = function (frozenColIndex, numRightColumn) {
|
423
|
+
this._inPinning = true;
|
424
|
+
var hosts = this._hosts;
|
425
|
+
for (var i = 0; i < hosts.length; i++) {
|
426
|
+
hosts[i].freezeColumn(frozenColIndex, numRightColumn);
|
427
|
+
}
|
428
|
+
this._inPinning = false;
|
429
|
+
};
|
430
|
+
/** @private
|
431
|
+
*/
|
432
|
+
ColumnGroupingPlugin.prototype._applyPinning = function () {
|
433
|
+
var colCount = this.getColumnCount();
|
434
|
+
var columnIds = this.getColumnIds();
|
435
|
+
var leftPinnedIndex = this._hosts[0].getFrozenColumnCount() - 1;
|
436
|
+
var rightPinnedIndex = this._hosts[0].getFirstPinnedRightIndex();
|
437
|
+
var i, groupId, groupDef;
|
438
|
+
var dirty = false;
|
439
|
+
for (i = colCount; i > leftPinnedIndex; i--) {
|
440
|
+
groupId = this._groupDefs.getParentId(columnIds[i]);
|
441
|
+
groupDef = this._visibleGroupMap[groupId];
|
442
|
+
if (groupDef && groupDef.leftPinned) {
|
443
|
+
leftPinnedIndex = i;
|
444
|
+
dirty = true;
|
445
|
+
break;
|
446
|
+
}
|
447
|
+
}
|
448
|
+
for (i = leftPinnedIndex; i < rightPinnedIndex; i++) {
|
449
|
+
groupId = this._groupDefs.getParentId(columnIds[i]);
|
450
|
+
groupDef = this._visibleGroupMap[groupId];
|
451
|
+
if (groupDef && groupDef.rightPinned) {
|
452
|
+
rightPinnedIndex = i;
|
453
|
+
dirty = true;
|
454
|
+
break;
|
455
|
+
}
|
456
|
+
}
|
457
|
+
if (dirty) {
|
458
|
+
var rightPinnedCount = colCount - rightPinnedIndex;
|
459
|
+
this._freezeColumn(leftPinnedIndex, rightPinnedCount);
|
460
|
+
}
|
461
|
+
};
|
412
462
|
/** Consolidate and process configuration. Force rerendering on column adding, removing, moving, initializaing, and run-time API execution.
|
413
463
|
* @private
|
414
464
|
*/
|
@@ -419,6 +469,9 @@ ColumnGroupingPlugin.prototype._applyGrouping = function () {
|
|
419
469
|
}
|
420
470
|
this._restructuring = true;
|
421
471
|
this._evaluateGroupStructure();
|
472
|
+
|
473
|
+
// Apply column pinning
|
474
|
+
this._applyPinning();
|
422
475
|
var i, c, r, cell, section, colCount;
|
423
476
|
var rowCount = this._maxDepth + 1;
|
424
477
|
var hostCount = this._hosts.length;
|
@@ -462,6 +515,7 @@ ColumnGroupingPlugin.prototype._evaluateGroupStructure = function () {
|
|
462
515
|
// Clone group definitions for rendering
|
463
516
|
var visibleGroupMap = this._visibleGroupMap = this._groupDefs.cloneGroupMap();
|
464
517
|
this._verifySingleChild(visibleGroupMap);
|
518
|
+
this._verifyColumnPinning(visibleGroupMap);
|
465
519
|
|
466
520
|
// Update depth (onRow) and parentId
|
467
521
|
var maxDepth = this._maxDepth = -1;
|
@@ -483,6 +537,65 @@ ColumnGroupingPlugin.prototype._evaluateGroupStructure = function () {
|
|
483
537
|
this._maxDepth = maxDepth + 1; // Column header depth = maximum group depth + 1
|
484
538
|
};
|
485
539
|
|
540
|
+
/** @private Add pinning state to group definition for further verification.
|
541
|
+
* @param {Object} groupDef
|
542
|
+
* @param {string} side
|
543
|
+
*/
|
544
|
+
ColumnGroupingPlugin.prototype._setGroupPinning = function (groupDef, side) {
|
545
|
+
if (!groupDef || groupDef.leftPinned || groupDef.rightPinned) {
|
546
|
+
return;
|
547
|
+
}
|
548
|
+
if (side === "left") {
|
549
|
+
groupDef.leftPinned = true;
|
550
|
+
} else {
|
551
|
+
groupDef.rightPinned = true;
|
552
|
+
}
|
553
|
+
var children = groupDef["children"];
|
554
|
+
for (var i = 0; i < children.length; i++) {
|
555
|
+
var child = children[i];
|
556
|
+
var group = this._visibleGroupMap[child];
|
557
|
+
if (group) {
|
558
|
+
this._setGroupPinning(group, side);
|
559
|
+
}
|
560
|
+
}
|
561
|
+
};
|
562
|
+
|
563
|
+
/** @private
|
564
|
+
* @param {Object} groupMap
|
565
|
+
*/
|
566
|
+
ColumnGroupingPlugin.prototype._verifyColumnPinning = function (groupMap) {
|
567
|
+
var host = this._hosts[0];
|
568
|
+
var leftPinnedIndex = host.getFrozenColumnCount() - 1;
|
569
|
+
var rightPinnedIndex = host.getFirstPinnedRightIndex();
|
570
|
+
var colCount = this.getColumnCount();
|
571
|
+
var i, groupId, rootGroup, colId;
|
572
|
+
var groupDefs = this._groupDefs;
|
573
|
+
var visibleGroupMap = this._visibleGroupMap;
|
574
|
+
if (leftPinnedIndex >= 0) {
|
575
|
+
for (i = leftPinnedIndex; i >= 0; i--) {
|
576
|
+
colId = this.getColumnId(i);
|
577
|
+
groupId = groupDefs.getParentId(colId);
|
578
|
+
if (groupId && visibleGroupMap[groupId]) {
|
579
|
+
rootGroup = groupDefs.getRootGroup(groupId);
|
580
|
+
if (rootGroup) {
|
581
|
+
this._setGroupPinning(visibleGroupMap[rootGroup["id"]], "left");
|
582
|
+
}
|
583
|
+
}
|
584
|
+
}
|
585
|
+
}
|
586
|
+
if (rightPinnedIndex < colCount) {
|
587
|
+
for (i = rightPinnedIndex; i < colCount; i++) {
|
588
|
+
colId = this.getColumnId(i);
|
589
|
+
groupId = groupDefs.getParentId(colId);
|
590
|
+
if (groupId && visibleGroupMap[groupId]) {
|
591
|
+
rootGroup = groupDefs.getRootGroup(groupId);
|
592
|
+
if (rootGroup) {
|
593
|
+
this._setGroupPinning(visibleGroupMap[rootGroup["id"]], "right");
|
594
|
+
}
|
595
|
+
}
|
596
|
+
}
|
597
|
+
}
|
598
|
+
};
|
486
599
|
/** @private
|
487
600
|
* @param {Object} groupMap
|
488
601
|
*/
|
@@ -814,6 +927,22 @@ ColumnGroupingPlugin.prototype._onColumnRemoved = function (e) {
|
|
814
927
|
/** @private
|
815
928
|
* @param {Object} e
|
816
929
|
*/
|
930
|
+
ColumnGroupingPlugin.prototype._onPinningChanged = function (e) {
|
931
|
+
if (!this._inPinning) {
|
932
|
+
// Clear current pinning states
|
933
|
+
var groupMap = this._visibleGroupMap;
|
934
|
+
for (var groupId in groupMap) {
|
935
|
+
var groupDef = groupMap[groupId];
|
936
|
+
groupDef.leftPinned = false;
|
937
|
+
groupDef.rightPinned = false;
|
938
|
+
}
|
939
|
+
this._verifyColumnPinning();
|
940
|
+
this._applyPinning();
|
941
|
+
}
|
942
|
+
};
|
943
|
+
/** @private
|
944
|
+
* @param {Object} e
|
945
|
+
*/
|
817
946
|
ColumnGroupingPlugin.prototype._onBeforeColumnBoundUpdate = function (e) {
|
818
947
|
var selectedColumns = e.selectedColumns; // Hidden columns are included
|
819
948
|
|
@@ -1362,7 +1491,12 @@ ColumnGroupingPlugin.prototype.removeGroupChild = function (parentId, childRef)
|
|
1362
1491
|
if (!colId) {
|
1363
1492
|
return false;
|
1364
1493
|
}
|
1365
|
-
var
|
1494
|
+
var rootId = parentId;
|
1495
|
+
var group = this._visibleGroupMap[parentId];
|
1496
|
+
if (group.onRow !== 0) {
|
1497
|
+
rootId = this._groupDefs.getParentId(parentId, 0);
|
1498
|
+
}
|
1499
|
+
var leafIndices = this.getChildColumnIndices(rootId);
|
1366
1500
|
if (this._groupDefs.removeGroupChild(parentId, colId)) {
|
1367
1501
|
if (leafIndices && leafIndices.length > 1) {
|
1368
1502
|
if (this.moveColumnById(colId, leafIndices[leafIndices.length - 1] + 1)) {
|
@@ -1510,5 +1644,90 @@ ColumnGroupingPlugin.prototype.moveColumnById = function (srcCol, destCol) {
|
|
1510
1644
|
this._autoGrouping = true;
|
1511
1645
|
return dirty;
|
1512
1646
|
};
|
1647
|
+
/** @public
|
1648
|
+
* @param {string} groupId
|
1649
|
+
* @param {string=} side Available values are: left|right. If no value is supplied, all columns will be pinned to the left.
|
1650
|
+
*/
|
1651
|
+
ColumnGroupingPlugin.prototype.pinGroup = function (groupId, side) {
|
1652
|
+
if (!groupId) {
|
1653
|
+
return;
|
1654
|
+
}
|
1655
|
+
var groupDef = this._visibleGroupMap[groupId];
|
1656
|
+
if (!groupDef) {
|
1657
|
+
return;
|
1658
|
+
}
|
1659
|
+
var host = this._hosts[0];
|
1660
|
+
var leftPinnedIndex = host.getFrozenColumnCount() - 1;
|
1661
|
+
var rightPinnedCount = host.getPinnedRightColumnCount();
|
1662
|
+
var colCount = this.getColumnCount();
|
1663
|
+
var colList = this.getChildColumnIndices(groupId);
|
1664
|
+
var len = colList.length;
|
1665
|
+
var dest;
|
1666
|
+
if (side === "right") {
|
1667
|
+
if (groupDef.rightPinned) {
|
1668
|
+
return;
|
1669
|
+
}
|
1670
|
+
if (groupDef.leftPinned) {
|
1671
|
+
this.unpinGroup(groupId);
|
1672
|
+
leftPinnedIndex = host.getFrozenColumnCount() - 1;
|
1673
|
+
}
|
1674
|
+
groupDef.rightPinned = true;
|
1675
|
+
dest = colCount - rightPinnedCount;
|
1676
|
+
rightPinnedCount = rightPinnedCount + len;
|
1677
|
+
} else {
|
1678
|
+
if (groupDef.leftPinned) {
|
1679
|
+
return;
|
1680
|
+
}
|
1681
|
+
if (groupDef.rightPinned) {
|
1682
|
+
this.unpinGroup(groupId);
|
1683
|
+
rightPinnedCount = host.getPinnedRightColumnCount();
|
1684
|
+
}
|
1685
|
+
groupDef.leftPinned = true;
|
1686
|
+
dest = leftPinnedIndex === -1 ? 0 : leftPinnedIndex + 1;
|
1687
|
+
leftPinnedIndex = leftPinnedIndex + len;
|
1688
|
+
}
|
1689
|
+
this.moveGroup(groupId, dest);
|
1690
|
+
this._freezeColumn(leftPinnedIndex, rightPinnedCount);
|
1691
|
+
};
|
1692
|
+
/** @public
|
1693
|
+
* @param {string} groupId
|
1694
|
+
* @param {(number|string)=} dest The unpinned group will be placed before the destination position after the operation
|
1695
|
+
*/
|
1696
|
+
ColumnGroupingPlugin.prototype.unpinGroup = function (groupId, dest) {
|
1697
|
+
if (!groupId) {
|
1698
|
+
return;
|
1699
|
+
}
|
1700
|
+
var groupDef = this._visibleGroupMap[groupId];
|
1701
|
+
if (!groupDef) {
|
1702
|
+
return;
|
1703
|
+
}
|
1704
|
+
if (!groupDef.leftPinned && !groupDef.rightPinned) {
|
1705
|
+
return;
|
1706
|
+
}
|
1707
|
+
var host = this._hosts[0];
|
1708
|
+
var leftPinnedCount = host.getFrozenColumnCount();
|
1709
|
+
var rightPinnedCount = host.getPinnedRightColumnCount();
|
1710
|
+
var colCount = this.getColumnCount();
|
1711
|
+
var firstRightPinnedIndex = colCount - rightPinnedCount;
|
1712
|
+
var colList = this.getChildColumnIndices(groupId);
|
1713
|
+
var len = colList.length;
|
1714
|
+
var destId = null;
|
1715
|
+
if (dest != null) {
|
1716
|
+
var destIdx = this.getColumnIndex(dest);
|
1717
|
+
destId = this.getColumnId(destIdx);
|
1718
|
+
}
|
1719
|
+
if (groupDef.leftPinned) {
|
1720
|
+
groupDef.leftPinned = false;
|
1721
|
+
this.moveGroup(groupId, leftPinnedCount);
|
1722
|
+
this._freezeColumn(leftPinnedCount - (1 + len));
|
1723
|
+
} else if (groupDef.rightPinned) {
|
1724
|
+
groupDef.rightPinned = false;
|
1725
|
+
this.moveGroup(groupId, firstRightPinnedIndex);
|
1726
|
+
this._freezeColumn(leftPinnedCount - 1, rightPinnedCount - len);
|
1727
|
+
}
|
1728
|
+
if (destId != null) {
|
1729
|
+
this.moveGroup(groupId, destId);
|
1730
|
+
}
|
1731
|
+
};
|
1513
1732
|
export default ColumnGroupingPlugin;
|
1514
1733
|
export { ColumnGroupingPlugin, ColumnGroupingPlugin as ColumnGrouping, ColumnGroupingPlugin as ColumnGroupingExtension };
|
@@ -84,7 +84,7 @@ declare class ColumnStackPlugin extends GridPlugin {
|
|
84
84
|
|
85
85
|
public isColumnActive(colIndex: number): boolean;
|
86
86
|
|
87
|
-
public getStackId(
|
87
|
+
public getStackId(colRef: number|string|null): string;
|
88
88
|
|
89
89
|
public stackColumns(colRefs?: (number|string)[]|null, stackId?: string|null, options?: ColumnStackPlugin.StackConfiguration|null): boolean;
|
90
90
|
|
@@ -96,6 +96,8 @@ declare class ColumnStackPlugin extends GridPlugin {
|
|
96
96
|
|
97
97
|
public removeAllStacks(enableUpdateUI?: boolean|null): boolean;
|
98
98
|
|
99
|
+
public setActiveColumn(activeColumn: number|string|null): boolean;
|
100
|
+
|
99
101
|
public swapColumn(colRef: number|Event|null, swappingIndex: number): boolean;
|
100
102
|
|
101
103
|
public getStackMemberIndices(stackId: string): (number)[];
|
@@ -140,6 +142,10 @@ declare class ColumnStackPlugin extends GridPlugin {
|
|
140
142
|
|
141
143
|
public moveStack(stackId: string, destCol?: (number|string)|null): boolean;
|
142
144
|
|
145
|
+
public pinStack(stackId: string, side?: string|null): void;
|
146
|
+
|
147
|
+
public unpinStack(stackId: string, dest?: (number|string)|null): void;
|
148
|
+
|
143
149
|
}
|
144
150
|
|
145
151
|
export default ColumnStackPlugin;
|