@refinitiv-ui/efx-grid 6.0.16 → 6.0.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (31) hide show
  1. package/lib/grid/index.js +1 -1
  2. package/lib/rt-grid/dist/rt-grid.js +177 -64
  3. package/lib/rt-grid/dist/rt-grid.min.js +1 -1
  4. package/lib/rt-grid/es6/ColumnDefinition.js +2 -1
  5. package/lib/rt-grid/es6/Grid.d.ts +12 -2
  6. package/lib/rt-grid/es6/Grid.js +152 -54
  7. package/lib/rt-grid/es6/RowDefinition.js +4 -0
  8. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.d.ts +4 -4
  9. package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +344 -185
  10. package/lib/tr-grid-column-stack/es6/ColumnStack.d.ts +7 -1
  11. package/lib/tr-grid-column-stack/es6/ColumnStack.js +164 -147
  12. package/lib/tr-grid-filter-input/es6/FilterInput.d.ts +1 -0
  13. package/lib/tr-grid-filter-input/es6/FilterInput.js +27 -0
  14. package/lib/tr-grid-in-cell-editing/es6/InCellEditing.d.ts +44 -43
  15. package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +202 -497
  16. package/lib/tr-grid-row-grouping/es6/RowGrouping.d.ts +40 -40
  17. package/lib/types/es6/ColumnGrouping.d.ts +4 -4
  18. package/lib/types/es6/ColumnStack.d.ts +7 -1
  19. package/lib/types/es6/Core/data/Segment.d.ts +3 -3
  20. package/lib/types/es6/Core/data/SegmentCollection.d.ts +1 -1
  21. package/lib/types/es6/InCellEditing.d.ts +44 -43
  22. package/lib/types/es6/RealtimeGrid/ColumnDefinition.d.ts +10 -0
  23. package/lib/types/es6/RealtimeGrid/FieldDefinition.d.ts +6 -0
  24. package/lib/types/es6/RealtimeGrid/Grid.d.ts +13 -1
  25. package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +4 -0
  26. package/lib/types/es6/RealtimeGrid/SnapshotFiller.d.ts +1 -0
  27. package/lib/types/es6/RowColoring.d.ts +17 -15
  28. package/lib/types/es6/RowFiltering.d.ts +30 -29
  29. package/lib/types/es6/RowGrouping.d.ts +40 -40
  30. package/lib/versions.json +5 -5
  31. package/package.json +1 -1
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.16" };
3
+ window.EFX_GRID = { version: "6.0.18" };
@@ -9801,6 +9801,7 @@ DataCache_DataCache._proto = DataCache_DataCache.prototype;
9801
9801
 
9802
9802
 
9803
9803
  /** @constructor
9804
+ * @extends {EventDispatcher}
9804
9805
  * @param {string} rid
9805
9806
  * @param {!Object} sharedObj
9806
9807
  */
@@ -10050,7 +10051,6 @@ Segment.prototype.removeChildren = function(rids) {
10050
10051
  return dirty ? true : false;
10051
10052
  };
10052
10053
  /** @public
10053
- * @param {Object=} objMap
10054
10054
  * @return {boolean}
10055
10055
  */
10056
10056
  Segment.prototype.removeAllChildren = function() {
@@ -10171,6 +10171,11 @@ Segment.prototype.classify = function(rows) {
10171
10171
  }
10172
10172
  }
10173
10173
 
10174
+ var sharedObj = this._shared;
10175
+ if(this._collapsed) {
10176
+ sharedObj.dirtyCollapsingState = true;
10177
+ }
10178
+
10174
10179
  // Prepare existing sub segments for checking change in its members
10175
10180
  var i;
10176
10181
  var segmentName = "";
@@ -10189,6 +10194,9 @@ Segment.prototype.classify = function(rows) {
10189
10194
  segment._children = {};
10190
10195
  segment._childCount = 0;
10191
10196
  }
10197
+ if(segment._collapsed) {
10198
+ sharedObj.dirtyCollapsingState = true;
10199
+ }
10192
10200
  }
10193
10201
  }
10194
10202
 
@@ -10209,7 +10217,7 @@ Segment.prototype.classify = function(rows) {
10209
10217
  var record = rows[dataId];
10210
10218
  var val = record ? record[classifier] : null; // WARNING: row could already be removed
10211
10219
 
10212
- this._shared.childToSegment[rid] = this._rid; // Relocate child in case of it has been moved to a non existence group
10220
+ sharedObj.childToSegment[rid] = this._rid; // Relocate child in case of it has been moved to a non existence group
10213
10221
 
10214
10222
  segmentName = "Uncategorized";
10215
10223
  if(val || val === 0 || val === false) { // Check for null, undefined, "", and NaN value
@@ -10222,7 +10230,7 @@ Segment.prototype.classify = function(rows) {
10222
10230
 
10223
10231
  segment = segmentMap[segmentName];
10224
10232
  if(!segment) { // New group is detected
10225
- segment = new Segment(this._rid + "/" + segmentName, this._shared);
10233
+ segment = new Segment(this._rid + "/" + segmentName, sharedObj);
10226
10234
  segment._subSegDef = this._subSegDef;
10227
10235
  segment._subSegLevel = this._subSegLevel + 1;
10228
10236
  segment._subSegName = segmentName;
@@ -10242,7 +10250,7 @@ Segment.prototype.classify = function(rows) {
10242
10250
  }
10243
10251
  } else if(isRootSegment) { // In case of no classification
10244
10252
  for(rid in children) {
10245
- this._shared.childToSegment[rid] = this._rid; // Relocate child in case of it has been moved to a non existence group
10253
+ sharedObj.childToSegment[rid] = this._rid; // Relocate child in case of it has been moved to a non existence group
10246
10254
  }
10247
10255
  }
10248
10256
 
@@ -10342,7 +10350,7 @@ Segment.prototype.getAllSubSegments = function(out_ary) {
10342
10350
  segment.getAllSubSegments(out_ary);
10343
10351
  }
10344
10352
  }
10345
- return out_ary;
10353
+ return out_ary || null;
10346
10354
  };
10347
10355
  /** @public
10348
10356
  * @return {number}
@@ -10422,7 +10430,7 @@ Segment.prototype.isCollapsed = function() {
10422
10430
  /** @public
10423
10431
  * @param {Object=} objMap
10424
10432
  * @param {boolean=} parentState=false Collapsing state from parent segment
10425
- * @return {number}
10433
+ * @return {boolean}
10426
10434
  */
10427
10435
  Segment.prototype.getCollapsingStates = function(objMap, parentState) {
10428
10436
  var segmentNames = this._subSegNames;
@@ -10536,6 +10544,7 @@ Segment.prototype.log = function(lines) {
10536
10544
 
10537
10545
 
10538
10546
  /** @constructor
10547
+ * @extends {EventDispatcher}
10539
10548
  */
10540
10549
  var SegmentCollection = function() {
10541
10550
  this._onSubSegmentAdded = this._onSubSegmentAdded.bind(this);
@@ -10594,6 +10603,7 @@ SegmentCollection.prototype._classifierChanged = false;
10594
10603
  */
10595
10604
  SegmentCollection.prototype.dispose = function() {
10596
10605
  this.removeAllSegments();
10606
+ this.removeAllEventListeners();
10597
10607
  this._collapsedRids = null;
10598
10608
  this._segmentList = this._insertionList = this._removalList = null;
10599
10609
  };
@@ -10871,7 +10881,7 @@ SegmentCollection.prototype.removeAllSegmentChildren = function() {
10871
10881
  }
10872
10882
 
10873
10883
  if(dirty) {
10874
- this.classify();
10884
+ this.classify(null);
10875
10885
  }
10876
10886
 
10877
10887
  return dirty;
@@ -11236,7 +11246,7 @@ DataTable.prototype.dispose = function() {
11236
11246
  this.clearAllData(true);
11237
11247
 
11238
11248
  if(this._classifyingTimer) {
11239
- clearTimeout(this._onClassifyingTimer);
11249
+ clearTimeout(this._classifyingTimer);
11240
11250
  this._classifyingTimer = 0;
11241
11251
  }
11242
11252
 
@@ -13295,6 +13305,10 @@ RowDefinition.prototype.setContent = function(userInput) {
13295
13305
  this._ric = this._userInput.replace("0#", "");
13296
13306
  this._isChain = this._expanded = true; // Only chain can be expanded by 0# TODO: RIC with 0# is not necessarily a chain
13297
13307
  this._chainRic = this._userInput;
13308
+ if(this._view) {
13309
+ this._view.setSegmentSeparator(this._rowId);
13310
+ this.expandChain();
13311
+ }
13298
13312
  } else {
13299
13313
  this._ric = this._userInput;
13300
13314
  this._chainRic = "";
@@ -15346,7 +15360,8 @@ ColumnDefinition.prototype.getConfigObject = function(colOptions) {
15346
15360
  }
15347
15361
 
15348
15362
  value = core.isColumnVisible(colIndex);
15349
- if(!value) {
15363
+ // If "hidden" property already available from core/extensions, don't override this property
15364
+ if(!value && obj["hidden"] == null) {
15350
15365
  obj["hidden"] = true;
15351
15366
  }
15352
15367
 
@@ -34515,7 +34530,7 @@ Core.prototype._rowHeightTimerId = 0;
34515
34530
  * @return {string}
34516
34531
  */
34517
34532
  Core.getVersion = function () {
34518
- return "5.1.26";
34533
+ return "5.1.27";
34519
34534
  };
34520
34535
  /** {@link ElementWrapper#dispose}
34521
34536
  * @override
@@ -42045,6 +42060,45 @@ var compareNumber = function(rowDefA, rowDefB, sortOrder, fieldName) { // edit n
42045
42060
  return (rowDefA.getData(fieldName) - rowDefB.getData(fieldName)) * sortOrder; // for numeric comparison
42046
42061
  };
42047
42062
 
42063
+ /** @private
42064
+ * @param {ColumnDefinition} colDef
42065
+ * @return {string}
42066
+ */
42067
+ var _getId = function(colDef) {
42068
+ if(colDef) {
42069
+ return colDef.getId();
42070
+ }
42071
+ return "";
42072
+ };
42073
+ /** @private
42074
+ * @param {ColumnDefinition} colDef
42075
+ * @return {string}
42076
+ */
42077
+ var _getField = function(colDef) {
42078
+ if(colDef) {
42079
+ return colDef.getField();
42080
+ }
42081
+ return "";
42082
+ };
42083
+ /** @private
42084
+ * @param {ColumnDefinition} colDef
42085
+ * @return {string}
42086
+ */
42087
+ var _getName = function(colDef) {
42088
+ if(colDef) {
42089
+ return colDef.getName();
42090
+ }
42091
+ return "";
42092
+ };
42093
+ /** @private
42094
+ * @param {ColumnDefinition} colDef
42095
+ * @param {string} str
42096
+ * @return {boolean}
42097
+ */
42098
+ var _hasFieldOrId = function(colDef, str) {
42099
+ return (colDef.getField() === str) || (colDef.getId() === str);
42100
+ };
42101
+
42048
42102
  /** @constructor
42049
42103
  * @extends {EventDispatcher}
42050
42104
  * @param {(Element|null)=} placeholder
@@ -43031,7 +43085,7 @@ Grid.prototype._onFieldAdded = function(e) {
43031
43085
 
43032
43086
  // JET
43033
43087
  if (this._subs) {
43034
- var colDefs = this._getAllColumnDefinitions();
43088
+ var colDefs = this.getColumnDefinitions();
43035
43089
  var fields = colDefs.reduce(ColumnDefinition.getRealTimeFields, []);
43036
43090
  this._subs["addFields"](fields);
43037
43091
  }
@@ -43581,16 +43635,49 @@ Grid.prototype.removeAllColumns = function() {
43581
43635
  }
43582
43636
  };
43583
43637
 
43584
- /**
43585
- * Move the column at the specified index to the target index.
43586
- * @public
43587
- * @param {number|Array.<number>} fromColIndex index or array of indices of the column(s) to be moved.
43588
- * @param {number} toColIndex target column index
43589
- * @return {boolean} Return true if there is any change, and false otherwise
43590
- */
43638
+ /** Move the column at the specified index to the target index. When moving multiple columns, the original order of the source columns will be sorted by their index and the position of the columns will not be guaranteed to be exactly at the destination index.
43639
+ * @public
43640
+ * @param {number|Array.<number>} fromColIndex index or array of indices of the column(s) to be moved.
43641
+ * @param {number} toColIndex target column index
43642
+ * @return {boolean} Return true if there is any change, and false otherwise
43643
+ * @see {@link Grid#moveColumnById}
43644
+ */
43591
43645
  Grid.prototype.moveColumn = function (fromColIndex, toColIndex) {
43592
43646
  return this._grid.moveColumn(fromColIndex, toColIndex);
43593
43647
  };
43648
+ /** If source column is not found, no operation is performed. If destination column is not found, the source column will be moved to the last position.<br>
43649
+ * Note: this method behaves slightly different from moveColumn method in that it always put source column at the position before the specified destination column, while moveColumn method will put column at exactly at the destination index.
43650
+ * @public
43651
+ * @param {number|string} srcCol Column Id or index
43652
+ * @param {(number|string)=} destCol Column Id or index of the destination
43653
+ * @return {boolean} Return true if there is any change, and false otherwise
43654
+ * @see {@link Grid#moveColumn}
43655
+ * @example
43656
+ * grid.moveColumnById(3, 1); // Move column 3 to position before column 1
43657
+ * grid.moveColumnById(0, 2); // Move column 0 to position before column 2 (column index 1)
43658
+ * grid.moveColumnById(0, 1); // Nothing is moved
43659
+ * grid.moveColumnById("sourceColumnId", "anotherId");
43660
+ * grid.moveColumnById("sourceColumnId", ""); // move to the last position
43661
+ */
43662
+ Grid.prototype.moveColumnById = function (srcCol, destCol) {
43663
+ var colCount = this.getColumnCount();
43664
+ var srcIndex = this.getColumnIndex(srcCol);
43665
+ if(srcIndex < 0 || srcIndex >= colCount) {
43666
+ return false;
43667
+ }
43668
+ var destIndex = this.getColumnIndex(destCol);
43669
+ if(destIndex < 0) {
43670
+ destIndex = colCount;
43671
+ }
43672
+ if(srcIndex < destIndex) { // Ensure that the source column is put in front of the destination index
43673
+ --destIndex;
43674
+ }
43675
+ if(srcIndex === destIndex) {
43676
+ return false;
43677
+ }
43678
+ return this.moveColumn(srcIndex, destIndex);
43679
+ };
43680
+
43594
43681
 
43595
43682
  /** The hidden column still occupies the same index.
43596
43683
  * @public
@@ -44157,12 +44244,18 @@ Grid.prototype._removeRow = function(rowDef) {
44157
44244
  }
44158
44245
  this._dispatch("beforeRowRemoved", {});
44159
44246
 
44160
- var rowIds = rowDef.getAllDescendantIds(); // TODO: Support nested child
44161
- if(rowIds) { // Remove all children first
44162
- this._dt.removeRows(rowIds);
44247
+ var connector = this._connector;
44248
+ var dt = this._dt;
44249
+ var childRowDefs = rowDef.getDescendants(); // TODO: Support nested child
44250
+ if(childRowDefs) { // Remove all children first
44251
+ for(var i = 0; i < childRowDefs.length; i++) {
44252
+ connector.removeRic(childRowDefs[i]);
44253
+ }
44254
+ var rowIds = childRowDefs.map(RowDefinition.toRowId);
44255
+ dt.removeRows(rowIds);
44163
44256
  }
44164
- this._connector.removeRic(rowDef);
44165
- this._dt.removeRow(rowDef.getRowId()); // TODO: Merge this with the above removeRows() method
44257
+ connector.removeRic(rowDef);
44258
+ dt.removeRow(rowDef.getRowId()); // TODO: Merge this with the above removeRows() method
44166
44259
  rowDef.dispose(); // WARNING: This does not remove child reference from its parent
44167
44260
  };
44168
44261
 
@@ -44217,19 +44310,35 @@ Grid.prototype.hasHiddenRow = function(){
44217
44310
  * @public
44218
44311
  * @param {Grid~RowReference} rowRef
44219
44312
  * @param {string} str
44313
+ * @param {RowDefinition~Options=} options
44220
44314
  */
44221
- Grid.prototype.setRic = function(rowRef, str) {
44315
+ Grid.prototype.setRic = function(rowRef, str, options) {
44222
44316
  if(this._mainGrid) {
44223
44317
  this._mainGrid.setRic(this._toRowId(rowRef), str);
44224
44318
  return;
44225
44319
  }
44226
44320
  var rowDef = this._getRowDefinition(rowRef);
44227
44321
  if(rowDef) {
44228
- var oldRic = rowDef.getRic();
44229
- if(rowDef.setContent(str)) { // The given string may not be a RIC
44230
- this._connector.removeRic(rowDef, oldRic);
44231
- this._initDuplicateRicData(rowDef);
44232
- this._connector.addRic(rowDef);
44322
+ options = options || {};
44323
+ var newChain = false;
44324
+ if(str.indexOf("0#") > 0 || options["asChain"]) {
44325
+ newChain = true;
44326
+ }
44327
+ if(rowDef.isChain() || newChain) {
44328
+ if(rowDef.getRic() !== str.replace("0#", "")) {
44329
+ var rowIndex = this._dv.getRowIndex(rowDef.getRowId());
44330
+ this.removeRow(rowDef);
44331
+
44332
+ options["ric"] = str;
44333
+ this.insertRow(options, rowIndex);
44334
+ }
44335
+ } else {
44336
+ var oldRic = rowDef.getRic();
44337
+ if(rowDef.setContent(str)) { // The given string may not be a RIC
44338
+ this._connector.removeRic(rowDef, oldRic);
44339
+ this._initDuplicateRicData(rowDef);
44340
+ this._connector.addRic(rowDef);
44341
+ }
44233
44342
  }
44234
44343
  }
44235
44344
  };
@@ -44353,6 +44462,17 @@ Grid.prototype.getColumnDefinition = function(colIndex) {
44353
44462
  }
44354
44463
  return null;
44355
44464
  };
44465
+ /** @public
44466
+ * @return {!Array.<ColumnDefinition>}
44467
+ */
44468
+ Grid.prototype.getColumnDefinitions = function() {
44469
+ var colCount = this.getColumnCount();
44470
+ var colDefs = new Array(colCount);
44471
+ for(var i = 0; i < colCount; i++) {
44472
+ colDefs[i] = this.getColumnDefinition(i);
44473
+ }
44474
+ return colDefs;
44475
+ };
44356
44476
 
44357
44477
  /** @public
44358
44478
  * @param {string} colId
@@ -44360,11 +44480,7 @@ Grid.prototype.getColumnDefinition = function(colIndex) {
44360
44480
  */
44361
44481
  Grid.prototype.getColumnDefinitionById = function(colId) {
44362
44482
  if(typeof colId === "string") {
44363
- var colIndex = this.getColumnIndex(colId);
44364
- var colData = this._grid.getColumnData(colIndex);
44365
- if(colData) {
44366
- return /** @type{ColumnDefinition} */(colData[COL_DEF]) || null;
44367
- }
44483
+ return this.getColumnDefinition(this.getColumnIndex(colId));
44368
44484
  }
44369
44485
  return null;
44370
44486
  };
@@ -44400,24 +44516,13 @@ Grid.prototype._getColumnDefinition = function(colRef) {
44400
44516
  var colCount = this.getColumnCount();
44401
44517
  for(var i = 0; i < colCount; ++i) {
44402
44518
  var colDef = this.getColumnDefinition(i);
44403
- if(colDef.getField() === colRef || colDef.getId() === colRef) {
44404
- return colDef; // Return the first found field
44519
+ if(_hasFieldOrId(colDef, colRef)) {
44520
+ return colDef; // Return the first found column
44405
44521
  }
44406
44522
  }
44407
44523
  }
44408
44524
  return null;
44409
44525
  };
44410
- /** @private
44411
- * @return {Array.<ColumnDefinition>}
44412
- */
44413
- Grid.prototype._getAllColumnDefinitions = function() {
44414
- var colCount = this.getColumnCount();
44415
- var colDefs = new Array(colCount);
44416
- for(var i = 0; i < colCount; i++) {
44417
- colDefs[i] = this.getColumnDefinition(i);
44418
- }
44419
- return colDefs;
44420
- };
44421
44526
 
44422
44527
  /** @public
44423
44528
  * @param {number|string} rowRef Row index as shown in the view or row id (string)
@@ -44473,16 +44578,17 @@ Grid.prototype.getRowDefinitions = function() {
44473
44578
  Grid.prototype._getAllRowDefinitions = function() {
44474
44579
  return this._dt.getColumnData(ROW_DEF); // no group header rows
44475
44580
  };
44476
- /** Get all row definitions, including filtered and hidden rows, but without group header rows.
44581
+
44582
+ /** Get all row definitions, including filtered and hidden rows, but without auto generated rows (i.e., group header and chain constituent).
44477
44583
  * @public
44478
- * @param {boolean=} inclAutoGenerate=false means exclude auto generate rows
44584
+ * @param {boolean=} inclAutoGenerated=false Set to true to include auto generated rows. Default value is false (exclude auto generated rows)
44479
44585
  * @return {!Array.<RowDefinition>}
44480
44586
  */
44481
- Grid.prototype.getAllRowDefinitions = function(inclAutoGenerate) {
44482
- if(!inclAutoGenerate) {
44483
- return this._dt.getColumnData(ROW_DEF).filter(excludeAutoGenerated);
44587
+ Grid.prototype.getAllRowDefinitions = function(inclAutoGenerated) {
44588
+ if(inclAutoGenerated) {
44589
+ return this._getAllRowDefinitions();
44484
44590
  }
44485
- return this._getAllRowDefinitions();
44591
+ return this._dt.getColumnData(ROW_DEF).filter(excludeAutoGenerated);
44486
44592
  };
44487
44593
  /** A shorthand to retrieve row data based on index of the specified row.
44488
44594
  * @public
@@ -44619,7 +44725,7 @@ Grid.prototype.getColumnIndex = function(colRef) {
44619
44725
  } else if(typeof colRef === "string") {
44620
44726
  for(i = 0; i < colCount; ++i) {
44621
44727
  colDef = this.getColumnDefinition(i);
44622
- if(colDef.getField() === colRef || colDef.getId() === colRef) {
44728
+ if(_hasFieldOrId(colDef, colRef)) {
44623
44729
  return i; // Return the first found field
44624
44730
  }
44625
44731
  }
@@ -44652,8 +44758,14 @@ Grid.prototype.getColumnIndices = function(colRefs) {
44652
44758
  * @see {@link Grid#getColumnDefinition}
44653
44759
  */
44654
44760
  Grid.prototype.getColumnId = function(colIndex) {
44655
- var colDef = this.getColumnDefinition(colIndex);
44656
- return (colDef) ? colDef.getId() : "";
44761
+ return _getId(this.getColumnDefinition(colIndex));
44762
+ };
44763
+ /** Get ids from each column definition.
44764
+ * @public
44765
+ * @return {!Array.<string>} New array is created
44766
+ */
44767
+ Grid.prototype.getColumnIds = function() {
44768
+ return this.getColumnDefinitions().map(_getId);
44657
44769
  };
44658
44770
  /** Return field defined in the column definition
44659
44771
  * @public
@@ -44662,20 +44774,21 @@ Grid.prototype.getColumnId = function(colIndex) {
44662
44774
  * @see {@link Grid#getColumnDefinition}
44663
44775
  */
44664
44776
  Grid.prototype.getColumnField = function(colIndex) {
44665
- var colDef = this.getColumnDefinition(colIndex);
44666
- return (colDef) ? colDef.getField() : "";
44777
+ return _getField(this.getColumnDefinition(colIndex));
44667
44778
  };
44668
44779
  /** Get fields from each column definition. Note that this does not include any required field or data fields. Duplicates may exist.
44669
44780
  * @public
44670
44781
  * @return {!Array.<string>} New array is created
44671
44782
  */
44672
44783
  Grid.prototype.getColumnFields = function() {
44673
- var colCount = this.getColumnCount();
44674
- var ary = new Array(colCount);
44675
- for(var i = 0; i < colCount; ++i) {
44676
- ary[i] = this.getColumnField(i);
44677
- }
44678
- return ary;
44784
+ return this.getColumnDefinitions().map(_getField);
44785
+ };
44786
+ /** Get column name from each column definition. Note that this does not include any required field or data fields. Duplicates may exist.
44787
+ * @public
44788
+ * @return {!Array.<string>} New array is created
44789
+ */
44790
+ Grid.prototype.getColumnNames = function() {
44791
+ return this.getColumnDefinitions().map(_getName);
44679
44792
  };
44680
44793
  /** Get all fields, including required fields and data fields, with no duplicate
44681
44794
  * @public