@refinitiv-ui/efx-grid 6.0.26 → 6.0.27

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.
@@ -536,7 +536,7 @@ Core.prototype._groupDefs = null;
536
536
  * @return {string}
537
537
  */
538
538
  Core.getVersion = function () {
539
- return "5.1.34";
539
+ return "5.1.35";
540
540
  };
541
541
  /** {@link ElementWrapper#dispose}
542
542
  * @override
@@ -1317,6 +1317,12 @@ Scrollbar.prototype.getDefaultMouseWheelLogic = function () {
1317
1317
  * @param {Event} e
1318
1318
  */
1319
1319
  Scrollbar.prototype._onMouseWheel = function (e) {
1320
+
1321
+ // Blacklist for prevent triggering the scrollbar when the dialog is opened.
1322
+ if(e.target.opened) { // get attribute method doesn't work in elf element
1323
+ return;
1324
+ }
1325
+
1320
1326
  if (this._isFrozen) {
1321
1327
  Util._preventDefault(e);
1322
1328
  return;
package/lib/grid/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  import {Grid} from "./lib/efx-grid.js";
2
2
  export {Grid}
3
- window.EFX_GRID = { version: "6.0.26" };
3
+ window.EFX_GRID = { version: "6.0.27" };
@@ -69,12 +69,22 @@ declare class ColumnGroupingPlugin extends GridPlugin {
69
69
 
70
70
  public moveColumnIntoGroup(colRef: number|string|null, to: number, groupId: string): void;
71
71
 
72
- public setColumnParent(colRef: number|string|null, groupId: string): void;
72
+ public setColumnParent(colRef: number|string|null, groupId: string): boolean;
73
+
74
+ public addGroupChild(parentId: string, childRef: number|string|null): boolean;
75
+
76
+ public removeGroupChild(parentId: string, childRef: number|string|null): boolean;
77
+
78
+ public unsetParent(childRef: number|string|null): boolean;
73
79
 
74
80
  public getValidDestinationIndex(id: string, destCol: number|string|null): number;
75
81
 
76
82
  public moveGroup(id: string, destCol: number|string|null): void;
77
83
 
84
+ public reorderColumns(colList: (number|string)[]|null, destCol: number|string|null): boolean;
85
+
86
+ public moveColumnById(srcCol: number|string|null, destCol?: number|string|null): boolean;
87
+
78
88
  }
79
89
 
80
90
  export default ColumnGroupingPlugin;
@@ -591,7 +591,7 @@ ColumnGroupingPlugin.prototype._applyNearestGrouping = function (colIndex) {
591
591
  }
592
592
  }
593
593
  // The current column is no longer close to its parent
594
- if (this._groupDefs.removeGroupChild(colId)) {
594
+ if (this._groupDefs.unsetParent(colId)) {
595
595
  chdr = this._groupDefs.getGroupChildren(parentId);
596
596
  childCount = chdr ? chdr.length : 0;
597
597
  if (childCount === 1) {
@@ -808,7 +808,7 @@ ColumnGroupingPlugin.prototype._onColumnRemoved = function (e) {
808
808
  var colData = e.columnData;
809
809
  if (colData && colData.columnGrouping) {
810
810
  var colId = colData.columnGrouping.id;
811
- if (this._groupDefs.removeGroupChild(colId)) {
811
+ if (this._groupDefs.unsetParent(colId)) {
812
812
  this._requestApplyGrouping();
813
813
  }
814
814
  }
@@ -1002,11 +1002,7 @@ ColumnGroupingPlugin.prototype.setGroupDefinition = function (groupId, groupDef)
1002
1002
  var len = chdr.length;
1003
1003
  // TODO: Filter out group id
1004
1004
  if (len > 1) {
1005
- var gridApi = this.getGridApi();
1006
- if (gridApi && gridApi.reorderColumns) {
1007
- // TODO: Support multi-table feature
1008
- gridApi.reorderColumns(chdr, chdr[0]); // WARNING: group id doesn't work
1009
- }
1005
+ this.reorderColumns(chdr, chdr[0]); // WARNING: group id doesn't work
1010
1006
  }
1011
1007
  }
1012
1008
 
@@ -1086,10 +1082,10 @@ ColumnGroupingPlugin.prototype.getChildColumnIndices = function (groupId) {
1086
1082
  var colIds = this._groupDefs.getLeafDescendants(groupId);
1087
1083
  if (colIds) {
1088
1084
  var colIndices = [];
1089
- var index;
1090
- for (var i = 0; i < colIds.length; i++) {
1091
- index = this.getColumnIndex(colIds[i]);
1092
- if (index > -1) {
1085
+ var leafCount = colIds.length;
1086
+ for (var i = 0; i < leafCount; i++) {
1087
+ var index = this.getColumnIndex(colIds[i]);
1088
+ if (index >= 0) {
1093
1089
  colIndices.push(index);
1094
1090
  }
1095
1091
  }
@@ -1268,31 +1264,114 @@ ColumnGroupingPlugin.prototype.moveColumnIntoGroup = function (colRef, to, group
1268
1264
  }
1269
1265
  }
1270
1266
  };
1271
- /** @public
1267
+ /**
1268
+ * @public
1272
1269
  * @param {number|string} colRef Column index or id that should be moved
1273
1270
  * @param {string} groupId
1271
+ * @return {boolean}
1274
1272
  */
1275
1273
  ColumnGroupingPlugin.prototype.setColumnParent = function (colRef, groupId) {
1276
- var api = this.getGridApi();
1277
- if (!api) {
1278
- return;
1274
+ if (groupId) {
1275
+ return this.addGroupChild(groupId, colRef);
1279
1276
  }
1280
- var colCount = this.getColumnCount();
1281
- var toIndex = -1;
1282
- var childIndices = this.getChildColumnIndices(groupId);
1283
-
1284
- // When group has at least one child, move column to last index within a group
1285
- // Otherwise, column will not be moved
1286
- if (childIndices && childIndices.length) {
1287
- toIndex = colCount;
1277
+ return this.unsetParent(colRef);
1278
+ };
1279
+ /** If a column is added as a new child in a group, the column will be moved to the last position in the group. If the column is already a child of the group, nothing happens.
1280
+ * @public
1281
+ * @param {string} parentId
1282
+ * @param {number|string} childRef Column index, column id, group id to be added
1283
+ * @return {boolean}
1284
+ */
1285
+ ColumnGroupingPlugin.prototype.addGroupChild = function (parentId, childRef) {
1286
+ var parentDef = this._groupDefs.getGroup(parentId);
1287
+ if (!parentDef) {
1288
+ return false;
1289
+ }
1290
+ var colId = "";
1291
+ if (typeof childRef === "string") {
1292
+ var groupDef = this._groupDefs.getGroup(childRef);
1293
+ if (groupDef) {
1294
+ if (this._groupDefs.addGroupChild(parentId, childRef)) {
1295
+ this._applyGrouping();
1296
+ return true;
1297
+ }
1298
+ } else {
1299
+ colId = childRef;
1300
+ }
1301
+ } else {
1302
+ colId = this.getColumnId(childRef);
1303
+ }
1304
+ if (!colId) {
1305
+ return false;
1306
+ }
1307
+ var leafIndices = this.getChildColumnIndices(parentId);
1308
+ if (this._groupDefs.addGroupChild(parentId, colId)) {
1309
+ if (leafIndices && leafIndices.length) {
1310
+ if (this.moveColumnById(colId, leafIndices[leafIndices.length - 1] + 1)) {
1311
+ return true;
1312
+ }
1313
+ }
1314
+ this._applyGrouping();
1315
+ return true;
1316
+ }
1317
+ return false;
1318
+ };
1319
+ /**
1320
+ * @public
1321
+ * @param {string} parentId
1322
+ * @param {number|string} childRef Column index, column id, group id to be added
1323
+ * @return {boolean}
1324
+ */
1325
+ ColumnGroupingPlugin.prototype.removeGroupChild = function (parentId, childRef) {
1326
+ var parentDef = this._groupDefs.getGroup(parentId);
1327
+ if (!parentDef) {
1328
+ return false;
1329
+ }
1330
+ var colId = "";
1331
+ if (typeof childRef === "string") {
1332
+ var groupDef = this._groupDefs.getGroup(childRef);
1333
+ if (groupDef) {
1334
+ if (this._groupDefs.unsetParent(childRef)) {
1335
+ this._applyGrouping();
1336
+ return true;
1337
+ }
1338
+ } else {
1339
+ colId = childRef;
1340
+ }
1288
1341
  } else {
1289
- toIndex = this.getColumnIndex(colRef);
1342
+ colId = this.getColumnId(childRef);
1343
+ }
1344
+ if (!colId) {
1345
+ return false;
1346
+ }
1347
+ var leafIndices = this.getChildColumnIndices(parentId);
1348
+ if (this._groupDefs.removeGroupChild(parentId, colId)) {
1349
+ if (leafIndices && leafIndices.length > 1) {
1350
+ if (this.moveColumnById(colId, leafIndices[leafIndices.length - 1] + 1)) {
1351
+ return true;
1352
+ }
1353
+ }
1354
+ this._applyGrouping();
1355
+ return true;
1356
+ }
1357
+ return false;
1358
+ };
1359
+ /**
1360
+ * @public
1361
+ * @param {number|string} childRef Column index, column id, group id to be removed from its own parent
1362
+ * @return {boolean}
1363
+ */
1364
+ ColumnGroupingPlugin.prototype.unsetParent = function (childRef) {
1365
+ var refId = typeof childRef === "string" ? childRef : this.getColumnId(childRef);
1366
+ var parentId = this._groupDefs.getParentId(refId);
1367
+ if (parentId) {
1368
+ return this.removeGroupChild(parentId, refId);
1290
1369
  }
1291
- this.moveColumnIntoGroup(colRef, toIndex, groupId);
1370
+ return false;
1292
1371
  };
1293
1372
 
1294
1373
  /** @public
1295
- * Get a valid index for moving group/column to specific index
1374
+ * @description Get a valid index for moving group/column to specific index.
1296
1375
  * @param {string} id group id or column id
1297
1376
  * @param {number|string} destCol destination column index / id
1298
1377
  * @returns {number} destination index
@@ -1357,7 +1436,7 @@ ColumnGroupingPlugin.prototype.getValidDestinationIndex = function (id, destCol)
1357
1436
  };
1358
1437
 
1359
1438
  /** @public
1360
- * Move group or column to left side of the destination column.
1439
+ * @description Move group or column to left side of the destination column.
1361
1440
  * Group or column can only be moved within the parent group.
1362
1441
  * If the destination is between other column group, the destination will change to the end of that group instead.
1363
1442
  * @param {string} id group id or column id
@@ -1380,16 +1459,46 @@ ColumnGroupingPlugin.prototype.moveGroup = function (id, destCol) {
1380
1459
  return;
1381
1460
  }
1382
1461
  var destColIndex = this.getValidDestinationIndex(id, destCol);
1383
- var destColId = this.getColumnId(destColIndex);
1462
+ var destColId = this.getColumnId(destColIndex); // TODO: This may not necessary
1384
1463
 
1464
+ this.reorderColumns(members, destColId);
1465
+ };
1466
+ /** Move and reorder the specified columns to position before the destination
1467
+ * @public
1468
+ * @param {Array.<number|string>} colList Column list to be reordered
1469
+ * @param {number|string} destCol destination destination column id or index
1470
+ * @return {boolean}
1471
+ */
1472
+ ColumnGroupingPlugin.prototype.reorderColumns = function (colList, destCol) {
1473
+ var dirty = false;
1385
1474
  // TODO: create method for toggling autoGrouping flag
1386
- this._autoGrouping = false;
1475
+ this._autoGrouping = false; // Prevent re-grouping in columnMoved event
1476
+
1387
1477
  var gridApi = this.getGridApi();
1388
1478
  if (gridApi && gridApi.reorderColumns) {
1389
- gridApi.reorderColumns(members, destColId); // TODO: Support multi-table feature
1479
+ dirty = gridApi.reorderColumns(colList, destCol); // TODO: Support multi-table feature
1480
+ }
1481
+
1482
+ this._autoGrouping = true;
1483
+ return dirty;
1484
+ };
1485
+ /** Move the specified column to position before the destination
1486
+ * @public
1487
+ * @param {number|string} srcCol source column id or index
1488
+ * @param {number|string=} destCol destination column id or index
1489
+ * @return {boolean}
1490
+ */
1491
+ ColumnGroupingPlugin.prototype.moveColumnById = function (srcCol, destCol) {
1492
+ var dirty = false;
1493
+ this._autoGrouping = false; // Prevent re-grouping in columnMoved event
1494
+
1495
+ var gridApi = this.getGridApi();
1496
+ if (gridApi && gridApi.moveColumnById) {
1497
+ dirty = gridApi.moveColumnById(srcCol, destCol); // TODO: Support multi-table feature
1390
1498
  }
1391
1499
 
1392
1500
  this._autoGrouping = true;
1501
+ return dirty;
1393
1502
  };
1394
1503
  export default ColumnGroupingPlugin;
1395
1504
  export { ColumnGroupingPlugin, ColumnGroupingPlugin as ColumnGrouping, ColumnGroupingPlugin as ColumnGroupingExtension };
@@ -12,7 +12,8 @@ declare namespace ColumnStackPlugin {
12
12
  type Options = {
13
13
  fields: (string)[]|null,
14
14
  stacks: (ColumnStackPlugin.StackDefinition)[]|null,
15
- autoStacking?: boolean|null
15
+ autoStacking?: boolean|null,
16
+ clicked?: ((...params: any[]) => any)|null
16
17
  };
17
18
 
18
19
  type ColumnOptions = {
@@ -90,6 +91,8 @@ declare class ColumnStackPlugin extends GridPlugin {
90
91
 
91
92
  public unstackColumns(colIndices?: (number)[]|null): boolean;
92
93
 
94
+ public removeStack(stackId: string): boolean;
95
+
93
96
  public removeAllStacks(enableUpdateUI?: boolean|null): boolean;
94
97
 
95
98
  public swapColumn(colRef: number|Event|null, swappingIndex: number): boolean;
@@ -116,6 +119,16 @@ declare class ColumnStackPlugin extends GridPlugin {
116
119
 
117
120
  public getActiveColumnField(stackId: string): string;
118
121
 
122
+ public addStackChild(stackId: string, colRef: number|string|null): void;
123
+
124
+ public removeStackChild(stackId: string, colRef: number|string|null): void;
125
+
126
+ public unsetParent(colRef: number|string|null): void;
127
+
128
+ public reorderColumns(colList: (number|string)[]|null, destCol?: (number|string)|null): boolean;
129
+
130
+ public moveColumnById(srcCol: number|string|null, destCol?: (number|string)|null): boolean;
131
+
119
132
  }
120
133
 
121
134
  export default ColumnStackPlugin;