@refinitiv-ui/efx-grid 6.0.49 → 6.0.51

Sign up to get free protection for your applications and to get access to all the features.
@@ -112,7 +112,7 @@ declare class DataTable extends DataCache {
112
112
 
113
113
  public getSegmentChildIds(segmentId: string): (string)[]|null;
114
114
 
115
- public sortSeparators(sortLogics: ((...params: any[]) => any)|(((...params: any[]) => any))[]|null, sortOrders: (number)[]|null, cids: (string)[]|null): boolean;
115
+ public sortSeparators(sortLogics: ((...params: any[]) => any)|(((...params: any[]) => any))[]|any|null, sortOrders?: (number)[]|null, cids?: (string)[]|null): boolean;
116
116
 
117
117
  public sortSegments(compare: ((...params: any[]) => any)|null): boolean;
118
118
 
@@ -1258,9 +1258,9 @@ DataTable.prototype.getSegmentChildIds = function(segmentId) {
1258
1258
  };
1259
1259
  /** Sort all of existing segments by multiple sort logics
1260
1260
  * @public
1261
- * @param {Function|Array.<Function>} sortLogics
1262
- * @param {Array.<number>} sortOrders
1263
- * @param {Array.<string>} cids
1261
+ * @param {Function|Array.<Function>|Object} sortLogics
1262
+ * @param {Array.<number>=} sortOrders
1263
+ * @param {Array.<string>=} cids
1264
1264
  * @return {boolean}
1265
1265
  */
1266
1266
  DataTable.prototype.sortSeparators = function (sortLogics, sortOrders, cids) {
@@ -272,10 +272,12 @@ declare class DataView extends EventDispatcher {
272
272
 
273
273
  public getSegmentChildIds(segmentRef: string|number|null): (string)[]|null;
274
274
 
275
- public sortSeparators(sortLogics: (((...params: any[]) => any))[]|null, sortOrders: (number)[]|null, cids: (string)[]|null): void;
275
+ public sortSeparators(sortLogics: ((...params: any[]) => any)|(((...params: any[]) => any))[]|any|null, sortOrders?: (number)[]|null, cids?: (string)[]|null): void;
276
276
 
277
277
  public sortSegments(compare: ((...params: any[]) => any)|null): void;
278
278
 
279
+ public enableEmptySegmentFiltering(enabled?: boolean|null): void;
280
+
279
281
  public setSegmentClassification(segmentRef: string|number|null, fields: string|(string)[]|null): boolean;
280
282
 
281
283
  public getWrapSize(): number;
@@ -68,6 +68,8 @@ var DataView = function(source) {
68
68
  t._onRefreshTimeout = t._onRefreshTimeout.bind(t);
69
69
  t._updateWrapCount = t._updateWrapCount.bind(t);
70
70
 
71
+ t._byRemovalMap = t._byRemovalMap.bind(t);
72
+
71
73
  t._rids = [];
72
74
  t._sortingDefs = [];
73
75
  t._columnStats = {};
@@ -121,6 +123,15 @@ DataView.prototype._hiddenRids = null;
121
123
  * @type {Object.<string, boolean>}
122
124
  */
123
125
  DataView.prototype._collapsedRids = null; // for segmentation
126
+ /** @private
127
+ * @type {Object.<string, number>}
128
+ */
129
+ DataView.prototype._excludedRids = null;
130
+ /** @private
131
+ * @type {boolean}
132
+ */
133
+ DataView.prototype._emptySegmentFiltering = false;
134
+
124
135
  /** @private
125
136
  * @type {Object.<string, number>}
126
137
  */
@@ -817,8 +828,6 @@ DataView.prototype.hideRow = function(rId, hidden) {
817
828
  */
818
829
  DataView.prototype.hideRows = function(rowRefs, hidden) {
819
830
  hidden = hidden !== false;
820
- var dirty = false;
821
- var rids = this._toRowIds(rowRefs);
822
831
  var hiddenRids = this._hiddenRids;
823
832
 
824
833
  if(hidden){
@@ -829,11 +838,19 @@ DataView.prototype.hideRows = function(rowRefs, hidden) {
829
838
  return; // All rows are visible
830
839
  }
831
840
 
841
+ var rids = this._toRowIds(rowRefs);
842
+ var dirty = false;
843
+
832
844
  for(var i = rids.length; --i >= 0;) {
833
845
  var rid = rids[i];
834
846
  if(rid) { // undefined, null, and an empty string value are not a valid row id
835
- if(!!hiddenRids[rid] !== hidden) {
836
- hiddenRids[rid] = hidden;
847
+ if(hidden) {
848
+ if(!hiddenRids[rid]) {
849
+ hiddenRids[rid] = true;
850
+ dirty = true;
851
+ }
852
+ } else if(hiddenRids[rid]) {
853
+ delete hiddenRids[rid];
837
854
  dirty = true;
838
855
  }
839
856
  }
@@ -842,11 +859,9 @@ DataView.prototype.hideRows = function(rowRefs, hidden) {
842
859
  if(dirty) {
843
860
  if(!hidden) {
844
861
  var hasHiddenRow = false;
845
- for(var key in hiddenRids) {
846
- if(hiddenRids[key]) {
847
- hasHiddenRow = true;
848
- break;
849
- }
862
+ for(var key in hiddenRids) { // eslint-disable-line
863
+ hasHiddenRow = true;
864
+ break;
850
865
  }
851
866
  if(!hasHiddenRow) {
852
867
  hiddenRids = this._hiddenRids = null;
@@ -854,6 +869,7 @@ DataView.prototype.hideRows = function(rowRefs, hidden) {
854
869
  }
855
870
  this._refreshAndNotify(); // Very slow
856
871
  }
872
+
857
873
  };
858
874
  /**
859
875
  * Show/hide rows in the data view
@@ -935,23 +951,14 @@ DataView.prototype.filterOut = function(cid, value) {
935
951
  */
936
952
  DataView.prototype.filterInOnce = function(cid, value, opt_filteringOut) {
937
953
  var checker = this._getFilterLogic(cid, value);
938
- if(!checker) { return; }
939
-
940
- var filteringOut = (opt_filteringOut === true);
941
- var rids = this._rids;
942
- var dt = this._dt;
943
954
  var removalMap = {};
944
- var totalRem = 0;
945
- var len = rids.length;
946
- for(var i = len; --i >= 0;) {
947
- var rid = rids[i];
948
- var values = dt.getRowData(rid);
949
- if (!values || checker(rid, values) === filteringOut) {
950
- removalMap[rid] = true;
951
- ++totalRem;
952
- }
955
+ if(!this._getRemovalMap(
956
+ removalMap,
957
+ checker,
958
+ (opt_filteringOut === true)
959
+ )) {
960
+ return;
953
961
  }
954
- if(totalRem <= 0) { return; }
955
962
 
956
963
  var firstChange = this._removeRowIds(removalMap);
957
964
 
@@ -974,13 +981,13 @@ DataView.prototype.filterOutOnce = function(cid, value) {
974
981
  this.filterInOnce(cid, value, true);
975
982
  };
976
983
  /** @private
977
- * @param {!Object.<string, *>} removalMap
984
+ * @param {!Object} removalMap
978
985
  * @return {number}
979
986
  */
980
987
  DataView.prototype._removeRowIds = function(removalMap) {
981
- var firstChange = this._removeArrayItems(this._rids, removalMap);
988
+ var firstChange = DataView._removeArrayItems(this._rids, removalMap);
982
989
  if(this._groupView) {
983
- firstChange = this._removeArrayItems(this._groupView, removalMap);
990
+ firstChange = DataView._removeArrayItems(this._groupView, removalMap);
984
991
  }
985
992
 
986
993
  if(this._groupMembers) {
@@ -991,6 +998,7 @@ DataView.prototype._removeRowIds = function(removalMap) {
991
998
  }
992
999
  }
993
1000
  return firstChange;
1001
+
994
1002
  };
995
1003
  /** @public
996
1004
  * @fires DataView#pageCountChanged
@@ -2544,9 +2552,9 @@ DataView.prototype.getSegmentChildIds = function(segmentRef) {
2544
2552
  };
2545
2553
  /** Sort all of existing segments by multiple sort logics
2546
2554
  * @public
2547
- * @param {Array.<Function>} sortLogics
2548
- * @param {Array.<number>} sortOrders
2549
- * @param {Array.<string>} cids
2555
+ * @param {Function|Array.<Function>|Object} sortLogics
2556
+ * @param {Array.<number>=} sortOrders
2557
+ * @param {Array.<string>=} cids
2550
2558
  */
2551
2559
  DataView.prototype.sortSeparators = function (sortLogics, sortOrders, cids) {
2552
2560
  this._dt.sortSeparators(sortLogics, sortOrders, cids);
@@ -2558,7 +2566,19 @@ DataView.prototype.sortSeparators = function (sortLogics, sortOrders, cids) {
2558
2566
  DataView.prototype.sortSegments = function (compare) {
2559
2567
  this._dt.sortSegments(compare);
2560
2568
  };
2561
-
2569
+ /** Automatically hide empty segment when all of its member are filtered out. An empty segment will not be hidden, if there is no active filter. Collapsed segment does not count as filtering.
2570
+ * @public
2571
+ * @param {boolean=} enabled
2572
+ */
2573
+ DataView.prototype.enableEmptySegmentFiltering = function (enabled) {
2574
+ enabled = enabled !== false;
2575
+ if(this._emptySegmentFiltering !== enabled) {
2576
+ this._emptySegmentFiltering = enabled;
2577
+ if(this._userFilter) {
2578
+ this._refreshAndNotify();
2579
+ }
2580
+ }
2581
+ };
2562
2582
  /**
2563
2583
  * @public
2564
2584
  * @param {string|number} segmentRef Row id or row index
@@ -2718,26 +2738,35 @@ DataView.prototype._updateRowIds = function(opt_rowIds) {
2718
2738
  // Perform the following sequences: parent view cloning >> row hiding >> row filtering >> row grouping >> sorting >> paging
2719
2739
  this._rids = opt_rowIds || this._parent.getAllRowIds(); // Get all data ids
2720
2740
 
2721
- if(this._hiddenRids) {
2722
- this._removeArrayItems(this._rids, this._hiddenRids);
2723
- }
2741
+ this._dispatch("beforeFiltering", {});
2742
+
2743
+ this._excludedRids = {};
2744
+ var exclusionCount = 0;
2745
+ exclusionCount += DataView._copyObjectKeys(this._excludedRids, this._hiddenRids);
2746
+
2747
+ // Segment separators should not be filtered out (hidden)
2724
2748
  var segments = this._dt._getSegmentSeparators();
2749
+ var filterExceptions = segments ? segments.getSegments() : null;
2750
+ var userRemoval = this._getRemovalMap(this._excludedRids, this._userFilter, this._filteringOut, filterExceptions);
2751
+ exclusionCount += userRemoval;
2752
+
2725
2753
  this._collapsedRids = null;
2726
- var filterExceptions = null;
2727
2754
  if(segments) {
2728
- filterExceptions = segments.getSegments(); // Segment separators should not be filtered out (hidden)
2729
- var collapsedRows = this._collapsedRids = segments.getCollapsedRows(); // Children of collapsed segments must be filtered out (hidden)
2730
- if(collapsedRows) {
2731
- this._removeArrayItems(this._rids, collapsedRows);
2755
+ if(userRemoval && this._emptySegmentFiltering) {
2756
+ exclusionCount += this._getEmptySegments(this._excludedRids, filterExceptions);
2732
2757
  }
2758
+ this._collapsedRids = segments.getCollapsedRows();
2759
+ // Children of collapsed segments must be filtered out (hidden)
2760
+ exclusionCount += DataView._copyObjectKeys(this._excludedRids, this._collapsedRids);
2733
2761
  }
2734
2762
 
2735
- this._dispatch("beforeFiltering", {});
2736
- this._quickFilter(this._userFilter, this._filteringOut, filterExceptions);
2737
-
2738
- if(this._groupLevel > 0 && !opt_rowIds) {
2739
- this._quickFilter(this._groupFilterLogic, false); // Filter In
2763
+ if(this._groupLevel > 0 && !opt_rowIds) { // WARNING: The line below is quite slow
2764
+ exclusionCount += this._getRemovalMap(this._excludedRids, this._groupFilterLogic, false); // Filter In
2765
+ }
2766
+ if(exclusionCount) {
2767
+ this._rids = this._rids.filter(this._byRemovalMap);
2740
2768
  }
2769
+ this._excludedRids = null;
2741
2770
 
2742
2771
  if(this._groupMembers) { // Has grouping
2743
2772
  this._populateGroups(); // View will be properly re-populate inside _populateGroups()
@@ -3009,9 +3038,9 @@ DataView.prototype._onRowUpdated = function(e) { // onUpdate
3009
3038
 
3010
3039
  if(this._groupLevel > 0) {
3011
3040
  if(processingFlag === 1) { // The row is moved to the other group
3012
- if(this._removeArrayItem(this._rids, rid) >= 0) {
3041
+ if(DataView._removeArrayItem(this._rids, rid) >= 0) {
3013
3042
  if(this._groupView) {
3014
- this._removeArrayItem(this._groupView, rid);
3043
+ DataView._removeArrayItem(this._groupView, rid);
3015
3044
  }
3016
3045
  }
3017
3046
  if(this._shared.multiGroupRow) {
@@ -3211,34 +3240,31 @@ DataView.prototype._getRowIndex = function(rids, opt_nextRid, opt_fallback) {
3211
3240
  * @returns {number}
3212
3241
  */
3213
3242
  DataView.prototype._removeDataRow = function(rid) {
3214
- var at = this._removeArrayItem(this._rids, rid);
3243
+ var at = DataView._removeArrayItem(this._rids, rid);
3215
3244
  if(this._groupView && at >= 0) {
3216
- at = this._removeArrayItem(this._groupView, rid);
3245
+ at = DataView._removeArrayItem(this._groupView, rid);
3217
3246
  }
3218
3247
  return at;
3219
3248
  };
3220
3249
  /** @private
3221
- * @param {Array} ary
3250
+ * @param {!Array} ary
3222
3251
  * @param {*} item
3223
3252
  * @return {number} Index of the removed item
3224
3253
  */
3225
- DataView.prototype._removeArrayItem = function(ary, item) {
3226
- var len = ary.length;
3227
- for(var i = 0; i < len; ++i) {
3228
- if(ary[i] === item) {
3229
- ary.splice(i, 1);
3230
- return i;
3231
- }
3254
+ DataView._removeArrayItem = function(ary, item) {
3255
+ var at = ary.indexOf(item);
3256
+ if(at >= 0) {
3257
+ ary.splice(at, 1);
3232
3258
  }
3233
- return -1;
3259
+ return at;
3234
3260
  };
3235
3261
  /** Remove multiple array items
3236
3262
  * @private
3237
3263
  * @param {Array.<string>} ary
3238
- * @param {Object.<string, *>} items
3264
+ * @param {Object} items
3239
3265
  * @return {number} First item index that is being removed. NaN if no item is removed
3240
3266
  */
3241
- DataView.prototype._removeArrayItems = function(ary, items) {
3267
+ DataView._removeArrayItems = function(ary, items) {
3242
3268
  var f = NaN;
3243
3269
  var c = 0;
3244
3270
  for(var i = ary.length; --i >= 0;) {
@@ -3256,6 +3282,24 @@ DataView.prototype._removeArrayItems = function(ary, items) {
3256
3282
  }
3257
3283
  return f;
3258
3284
  };
3285
+ /** @private
3286
+ * @param {Object} baseObj
3287
+ * @param {Object} masterObj
3288
+ * @returns {number}
3289
+ */
3290
+ DataView._copyObjectKeys = function(baseObj, masterObj) {
3291
+ if(masterObj) {
3292
+ var count = 0;
3293
+
3294
+ for(var key in masterObj) {
3295
+ baseObj[key] = 1;
3296
+ ++count; // WARNING: duplicated key can be counted more than once
3297
+ }
3298
+ return count;
3299
+ }
3300
+ return 0;
3301
+ };
3302
+
3259
3303
  /** @private
3260
3304
  * @param {string|null} rid
3261
3305
  * @param {Object} rowData
@@ -3290,9 +3334,6 @@ DataView.prototype.isRowFiltered = function(rid, rowData) {
3290
3334
  return true;
3291
3335
  }
3292
3336
  }
3293
- if(this.isSegmentSeparator(rid)) {
3294
- return false; // Segment separator cannot be filtered
3295
- }
3296
3337
  if(this._collapsedRids) {
3297
3338
  if(this._collapsedRids[rid]) {
3298
3339
  return true;
@@ -3334,41 +3375,92 @@ DataView.prototype._sort = function() {
3334
3375
  };
3335
3376
 
3336
3377
  /** @private
3378
+ * @param {string} rid
3379
+ * @returns {boolean}
3380
+ */
3381
+ DataView.prototype._byRemovalMap = function(rid) {
3382
+ return !this._excludedRids[rid];
3383
+ };
3384
+ /** @private
3385
+ * @param {Object} removalMap
3337
3386
  * @param {Function} checker
3338
3387
  * @param {boolean} filteringOut
3339
3388
  * @param {Object=} exceptions
3389
+ * @returns {number} Number of rids that would be filtered out
3340
3390
  */
3341
- DataView.prototype._quickFilter = function(checker, filteringOut, exceptions) {
3391
+ DataView.prototype._getRemovalMap = function(removalMap, checker, filteringOut, exceptions) {
3342
3392
  if(!checker) {
3343
- return;
3393
+ return 0;
3344
3394
  }
3345
3395
 
3346
3396
  var rids = this._rids; // Make local variable to speed up the process
3347
- var len = rids.length;
3348
3397
  var dt = this._dt;
3349
- var spliceCount = 0;
3350
- for(var i = len; --i >= 0;) {
3351
- var rid = rids[i];
3352
- var removed = false;
3353
- if(!exceptions || !exceptions[rid]) {
3354
- var values = dt.getRowData(rid);
3398
+ var count = 0;
3399
+ var rid, i, values;
3400
+ var len = rids.length;
3401
+
3402
+ if(exceptions) {
3403
+ for(i = len; --i >= 0;) {
3404
+ rid = rids[i];
3405
+ if(!exceptions[rid]) {
3406
+ values = dt.getRowData(rid);
3407
+ if (values) {
3408
+ if(checker(rid, values) === filteringOut) {
3409
+ removalMap[rid] = 1;
3410
+ ++count;
3411
+ }
3412
+ } else {
3413
+ removalMap[rid] = 1;
3414
+ ++count;
3415
+ }
3416
+ }
3417
+ }
3418
+ } else {
3419
+ for(i = len; --i >= 0;) {
3420
+ rid = rids[i];
3421
+ values = dt.getRowData(rid);
3355
3422
  if (values) {
3356
- removed = checker(rid, values) === filteringOut;
3423
+ if(checker(rid, values) === filteringOut) {
3424
+ removalMap[rid] = 1;
3425
+ ++count;
3426
+ }
3357
3427
  } else {
3358
- removed = true;
3428
+ removalMap[rid] = 1;
3429
+ ++count;
3359
3430
  }
3360
3431
  }
3361
- if(removed) {
3362
- ++spliceCount;
3363
- } else if(spliceCount > 0) {
3364
- rids.splice(i + 1, spliceCount);
3365
- spliceCount = 0;
3366
- }
3367
3432
  }
3368
- if(spliceCount > 0) {
3369
- rids.splice(0, spliceCount);
3433
+ return count;
3434
+ };
3435
+ /** @private
3436
+ * @param {Object} removalMap
3437
+ * @param {Object} segmentRids
3438
+ * @returns {number} Number of rids that would be filtered out
3439
+ */
3440
+ DataView.prototype._getEmptySegments = function(removalMap, segmentRids) {
3441
+ var segments = this._dt._getSegmentSeparators();
3442
+ var count = 0;
3443
+ for(var segmentId in segmentRids) {
3444
+ var segment = segments.getSegment(segmentId);
3445
+ if(segment) {
3446
+ var chdr = segment.getChildren();
3447
+ var emptySegment = true;
3448
+ for(var childId in chdr) {
3449
+ if(!removalMap[childId]) {
3450
+ emptySegment = false;
3451
+ break;
3452
+ }
3453
+ }
3454
+ if(emptySegment) {
3455
+ removalMap[segmentId] = 1;
3456
+ ++count;
3457
+ }
3458
+ }
3370
3459
  }
3460
+
3461
+ return count;
3371
3462
  };
3463
+
3372
3464
  /** @private
3373
3465
  * @param {string|Function|undefined} cid
3374
3466
  * @param {*} value
@@ -3647,13 +3739,13 @@ DataView.prototype._removeGroupMember = function (groupIndex, groupId) {
3647
3739
  };
3648
3740
  /** @private
3649
3741
  * @param {string} cid
3650
- * @param {Object.<string, *>} values
3742
+ * @param {Object} values
3651
3743
  * @return {Array.<string>}
3652
3744
  */
3653
3745
  DataView.prototype._defaultGroupCriteria = function(cid, values) {
3654
3746
  var val = values[cid];
3655
3747
  if(Array.isArray(val)) {
3656
- return val.map(function(data) {
3748
+ return val.map(function(data) { // TODO: this is very slow
3657
3749
  return data + "";
3658
3750
  });
3659
3751
  } else {
@@ -3662,11 +3754,11 @@ DataView.prototype._defaultGroupCriteria = function(cid, values) {
3662
3754
  };
3663
3755
  /** @private
3664
3756
  * @param {string|null} rid
3665
- * @param {Object.<string, *>} values
3757
+ * @param {Object} values
3666
3758
  * @return {boolean}
3667
3759
  */
3668
3760
  DataView.prototype._groupFilterLogic = function(rid, values) {
3669
- var gids = this._groupCriteria[this._groupLevel - 1](values);
3761
+ var gids = this._groupCriteria[this._groupLevel - 1](values); // TODO: this is very slow
3670
3762
  return gids.indexOf(this._groupId) >= 0;
3671
3763
  };
3672
3764
 
@@ -27,6 +27,8 @@ declare class Segment extends EventDispatcher {
27
27
 
28
28
  public getChildIds(): (string)[];
29
29
 
30
+ public getChildren(): any;
31
+
30
32
  public getChildCount(): number;
31
33
 
32
34
  public getClassification(): (string)[]|null;
@@ -292,6 +292,12 @@ Segment.prototype.getChildIds = function() {
292
292
  return this._childCount ? Object.keys(this._children) : [];
293
293
  };
294
294
  /** @public
295
+ * @return {!Object}
296
+ */
297
+ Segment.prototype.getChildren = function() {
298
+ return this._children;
299
+ };
300
+ /** @public
295
301
  * @return {number}
296
302
  */
297
303
  Segment.prototype.getChildCount = function() {
@@ -562,7 +562,7 @@ Core.prototype._batches = null;
562
562
  * @return {string}
563
563
  */
564
564
  Core.getVersion = function () {
565
- return "5.1.67";
565
+ return "5.1.70";
566
566
  };
567
567
  /** {@link ElementWrapper#dispose}
568
568
  * @override
@@ -4956,13 +4956,10 @@ Core.prototype._onSectionDataChanged = function (e) {
4956
4956
  for (var r = fromR; r < toR; ++r) {
4957
4957
  if(hasDataView) {
4958
4958
  var rowData = rowDataCollection[r];
4959
- if(!rowData) { // This is a header row
4960
- continue;
4961
- }
4962
4959
 
4963
4960
  e["rowData"] = rowData;
4964
4961
  e["rowId"] = rids[r];
4965
- e["dataValue"] = rowData[cid];
4962
+ e["dataValue"] = rowData ? rowData[cid] : null;
4966
4963
  }
4967
4964
  e["rowIndex"] = r;
4968
4965
  e["cell"] = section["getCell"](c, r, false); // Accessing cell by using bracket allows extenal object to mock Section
@@ -790,7 +790,7 @@ SortableTitlePlugin.prototype.sortColumns = function (sortOptions, opt_arg) {
790
790
  opt["sortOrder"] || opt["order"]
791
791
  );
792
792
  if (state) {
793
- states[i] = state;
793
+ states.push(state);
794
794
  }
795
795
  }
796
796
  this._sortColumn(states, opt_arg);
@@ -1372,10 +1372,12 @@ SortableTitlePlugin.prototype.sortSeparators = function (comparer) {
1372
1372
  var sortOrders = [];
1373
1373
  var sortFields = [];
1374
1374
  var sortStateCount = this._sortStates.length;
1375
+ var rowDefField = SortableTitlePlugin._toRowDefField();
1375
1376
  for(var i = 0; i < sortStateCount; i++){
1376
1377
  var sortState = this._sortStates[i];
1378
+ var field = this._rowDefMode ? rowDefField : sortState["field"];
1377
1379
  sortOrders.push(sortState["sortOrder"]);
1378
- sortFields.push(sortState["field"]);
1380
+ sortFields.push(field);
1379
1381
  }
1380
1382
  dv.sortSeparators(sortLogics, sortOrders, sortFields);
1381
1383
  }
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.49" };
3
+ window.EFX_GRID = { version: "6.0.51" };