@refinitiv-ui/efx-grid 6.0.98 → 6.0.100
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/core/dist/core.js +223 -185
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/data/DataView.js +2 -1
- package/lib/core/es6/grid/Core.d.ts +2 -0
- package/lib/core/es6/grid/Core.js +43 -17
- package/lib/core/es6/grid/plugins/SortableTitlePlugin.js +11 -0
- package/lib/core/es6/grid/util/Virtualizer.js +5 -5
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +2805 -2440
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/ColumnDefinition.d.ts +4 -1
- package/lib/rt-grid/es6/ColumnDefinition.js +20 -0
- package/lib/rt-grid/es6/Grid.d.ts +4 -0
- package/lib/rt-grid/es6/Grid.js +238 -1
- package/lib/rt-grid/es6/RowDefinition.d.ts +0 -2
- package/lib/rt-grid/es6/RowDefinition.js +85 -44
- package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +12 -1
- package/lib/tr-grid-in-cell-editing/es6/InCellEditing.d.ts +9 -1
- package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +203 -1
- package/lib/tr-grid-row-dragging/es6/RowDragging.js +18 -6
- package/lib/tr-grid-row-selection/es6/RowSelection.d.ts +1 -3
- package/lib/tr-grid-row-selection/es6/RowSelection.js +39 -58
- package/lib/types/es6/Core/data/DataView.d.ts +3 -1
- package/lib/types/es6/InCellEditing.d.ts +9 -1
- package/lib/types/es6/RealtimeGrid/Grid.d.ts +4 -0
- package/lib/types/es6/RealtimeGrid/RowDefinition.d.ts +0 -2
- package/lib/types/es6/RowSelection.d.ts +1 -3
- package/lib/versions.json +5 -5
- package/package.json +1 -1
@@ -2384,8 +2384,9 @@ DataView.prototype.stallSorting = function(bool) {
|
|
2384
2384
|
this._dispatchDataChange(DataTable._positionChangeArg);
|
2385
2385
|
}
|
2386
2386
|
}
|
2387
|
+
return true;
|
2387
2388
|
}
|
2388
|
-
return
|
2389
|
+
return false;
|
2389
2390
|
};
|
2390
2391
|
|
2391
2392
|
/** Automatically and asyncronuosly remove group that has no member or no content. Predefined groups will not be removed in this way.
|
@@ -327,6 +327,8 @@ declare class Core extends ElementWrapper {
|
|
327
327
|
|
328
328
|
public scrollToRow(sectionRef: Core.SectionReference|null, rowIndex: number, topOfView?: boolean|null): void;
|
329
329
|
|
330
|
+
public getVerticalViewInfo(): any;
|
331
|
+
|
330
332
|
public getVScrollView(): any;
|
331
333
|
|
332
334
|
public getScrollTop(): number;
|
@@ -574,7 +574,7 @@ Core.prototype._hasPendingRowChange = false;
|
|
574
574
|
* @return {string}
|
575
575
|
*/
|
576
576
|
Core.getVersion = function () {
|
577
|
-
return "5.1.
|
577
|
+
return "5.1.103";
|
578
578
|
};
|
579
579
|
/** {@link ElementWrapper#dispose}
|
580
580
|
* @override
|
@@ -1775,6 +1775,16 @@ Core.prototype._moveColumn = function (fromCol, destCol) {
|
|
1775
1775
|
}
|
1776
1776
|
}
|
1777
1777
|
|
1778
|
+
// The deactivated column may be moved directly or indirectly to the current view. It's necessary to make all columns in view activated.
|
1779
|
+
if(!this._frozenLayout) {
|
1780
|
+
if(this._colVirtualizer.isEnabled()) {
|
1781
|
+
let vBegin = this._colVirtualizer.getFirstIndexInView();
|
1782
|
+
if(!((fromCol < vBegin && destCol < vBegin) || (fromCol > vEnd && destCol > vEnd))) { // Columns does not move between hidden columns
|
1783
|
+
this._activateColumns(vBegin, vEnd, vBegin, vEnd); // To confirm that all columns in view are activated
|
1784
|
+
}
|
1785
|
+
}
|
1786
|
+
}
|
1787
|
+
|
1778
1788
|
// no need to invoke because moving column does not change column-width
|
1779
1789
|
// this._syncLayoutToColumns(minColumn, this.getColumnCount());
|
1780
1790
|
|
@@ -3573,33 +3583,24 @@ Core.prototype.getYScrollVal = function (sectionRef, rowIndex, topOfView) {
|
|
3573
3583
|
}
|
3574
3584
|
|
3575
3585
|
let rowCount = this._layoutY.getLaneCount();
|
3576
|
-
let rowIndexOffset = (section) ? section.getRowOffset() : this._sectionStarts[this._startVScrollbarIndex];
|
3577
|
-
|
3578
|
-
if(rowIndexOffset) {
|
3579
|
-
rowIndex += rowIndexOffset;
|
3580
|
-
}
|
3581
3586
|
if (rowIndex <= 0) { rowIndex = 0; }
|
3582
3587
|
else if (rowIndex >= rowCount) { rowIndex = rowCount - 1; }
|
3583
3588
|
|
3584
|
-
let
|
3585
|
-
let
|
3586
|
-
let viewTop = scrollTop + heightOffset;
|
3587
|
-
let viewTopIndex = section ? section.getFirstIndexInView() : this._layoutY.hitTest(viewTop); // TODO: Make it work in zooming mode
|
3589
|
+
let viewInfo = this.getVerticalViewInfo();
|
3590
|
+
let viewTopIndex = viewInfo.topRowIndex; // TODO: Make it work in zooming mode
|
3588
3591
|
|
3589
3592
|
let scrollIndex = -1;
|
3590
3593
|
if (topOfView) {
|
3591
3594
|
scrollIndex = rowIndex;
|
3592
3595
|
} else {
|
3593
|
-
if(rowIndex
|
3596
|
+
if(rowIndex < viewTopIndex) { // Scroll up
|
3594
3597
|
scrollIndex = rowIndex - 3; // Have some spaces at the top for more appealing visual
|
3595
3598
|
if(scrollIndex < 0) {
|
3596
3599
|
scrollIndex = 0;
|
3597
3600
|
}
|
3598
3601
|
} else { // Scroll down
|
3599
|
-
let
|
3600
|
-
|
3601
|
-
let viewBottomIndex = section ? section.getLastIndexInView() : this._layoutY.hitTest(viewBottom - 0.1);
|
3602
|
-
if (rowIndex >= viewBottomIndex) {
|
3602
|
+
let viewBottomIndex = viewInfo.bottomRowIndex;
|
3603
|
+
if (rowIndex > viewBottomIndex) {
|
3603
3604
|
let viewIndexSize = viewBottomIndex - viewTopIndex;
|
3604
3605
|
scrollIndex = rowIndex - viewIndexSize + 3;
|
3605
3606
|
if(scrollIndex < 0) {
|
@@ -3609,7 +3610,9 @@ Core.prototype.getYScrollVal = function (sectionRef, rowIndex, topOfView) {
|
|
3609
3610
|
}
|
3610
3611
|
}
|
3611
3612
|
|
3612
|
-
|
3613
|
+
let rowIndexOffset = (section) ? section.getRowOffset() : this._sectionStarts[this._startVScrollbarIndex];
|
3614
|
+
let heightOffset = this._layoutY.getLaneStart(this._startVScrollbarIndex);
|
3615
|
+
return (scrollIndex >= 0) ? (this._layoutY.getLaneStart(scrollIndex + rowIndexOffset) - heightOffset) : null;
|
3613
3616
|
};
|
3614
3617
|
/** Scroll up or down to make specified row visible in the view
|
3615
3618
|
* @public
|
@@ -3624,6 +3627,21 @@ Core.prototype.scrollToRow = function (sectionRef, rowIndex, topOfView) {
|
|
3624
3627
|
}
|
3625
3628
|
};
|
3626
3629
|
/** @public
|
3630
|
+
* @return {Object}
|
3631
|
+
*/
|
3632
|
+
Core.prototype.getVerticalViewInfo = function() {
|
3633
|
+
let rowIndexOffset = this._sectionStarts[this._startVScrollbarIndex];
|
3634
|
+
let heightOffset = this._layoutY.getLaneStart(rowIndexOffset);
|
3635
|
+
let viewHeight = this._vscrollbar.getHeight();
|
3636
|
+
let viewTop = this._vscrollbar.getScrollTop() + heightOffset;
|
3637
|
+
let viewBottom = viewTop + viewHeight;
|
3638
|
+
|
3639
|
+
return {
|
3640
|
+
topRowIndex: this._layoutY.hitTest(viewTop) - rowIndexOffset,
|
3641
|
+
bottomRowIndex: this._layoutY.hitTest(viewBottom - 0.1) - rowIndexOffset
|
3642
|
+
};
|
3643
|
+
};
|
3644
|
+
/** @public
|
3627
3645
|
* @return {Object} Returns null if vscrollbar does not exists
|
3628
3646
|
*/
|
3629
3647
|
Core.prototype.getVScrollView = function () {
|
@@ -5721,7 +5739,15 @@ Core.prototype._updateScrollbarHeight = function (paneChanged, contentChanged, n
|
|
5721
5739
|
// HACK: Due to fixed layout size we need to scale view size instead of content size, when zooming
|
5722
5740
|
// TODO: Check if zoom factor is used for virtualization correctly
|
5723
5741
|
this._rowVirtualizer.setViewSize(viewSize / this._zoomFactor);
|
5724
|
-
|
5742
|
+
|
5743
|
+
let offsetRowCount = this._sectionStarts[this._startVScrollbarIndex];
|
5744
|
+
let footerCount = this.getFooterCount();
|
5745
|
+
let footerRowCount = 0;
|
5746
|
+
if(footerCount) {
|
5747
|
+
let sectionCount = this.getSectionCount();
|
5748
|
+
footerRowCount = this._sectionStarts[sectionCount] - this._sectionStarts[sectionCount - footerCount];
|
5749
|
+
}
|
5750
|
+
this._rowVirtualizer.setViewBounds(offsetRowCount, footerRowCount);
|
5725
5751
|
} else {
|
5726
5752
|
this._rowVirtualizer.validateVirtualization(); // Content height may be changed
|
5727
5753
|
}
|
@@ -1229,6 +1229,17 @@ SortableTitlePlugin.prototype._getPlugin = function(pluginName) {
|
|
1229
1229
|
let host = this._hosts[0];
|
1230
1230
|
return (host) ? host.getPlugin(pluginName) : null;
|
1231
1231
|
};
|
1232
|
+
|
1233
|
+
/** @public
|
1234
|
+
* @description Click title to sort with mouse event. This is for testing purpose.
|
1235
|
+
* @ignore
|
1236
|
+
* @param {Core} grid
|
1237
|
+
* @param {Object=} mouseEvt
|
1238
|
+
*/
|
1239
|
+
SortableTitlePlugin.prototype.clickTitleByMouse = function (grid, mouseEvt) {
|
1240
|
+
this._onClickTitle(grid, mouseEvt);
|
1241
|
+
};
|
1242
|
+
|
1232
1243
|
/** @private
|
1233
1244
|
* @param {Core} grid
|
1234
1245
|
* @param {MouseEvent} e
|
@@ -299,12 +299,12 @@ Virtualizer.prototype.setViewOffset = function (px) {
|
|
299
299
|
};
|
300
300
|
/** @public
|
301
301
|
* @ignore
|
302
|
-
* @param {number}
|
303
|
-
* @param {number}
|
302
|
+
* @param {number} startItemCount
|
303
|
+
* @param {number} endItemCount
|
304
304
|
*/
|
305
|
-
Virtualizer.prototype.setViewBounds = function (
|
306
|
-
this._startOffsetCount =
|
307
|
-
this._endOffsetCount =
|
305
|
+
Virtualizer.prototype.setViewBounds = function (startItemCount, endItemCount) {
|
306
|
+
this._startOffsetCount = startItemCount > 0 ? startItemCount : 0;
|
307
|
+
this._endOffsetCount = endItemCount > 0 ? endItemCount : 0;
|
308
308
|
this.validateVirtualization(); // Everytime row height is changed
|
309
309
|
};
|
310
310
|
/** @public
|
package/lib/grid/index.js
CHANGED