@refinitiv-ui/efx-grid 6.0.100 → 6.0.102
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/core/dist/core.js +289 -532
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/data/DataCache.d.ts +0 -12
- package/lib/core/es6/data/DataCache.js +11 -371
- package/lib/core/es6/data/WrappedView.d.ts +1 -0
- package/lib/core/es6/data/WrappedView.js +1 -0
- package/lib/core/es6/grid/Core.js +1 -1
- package/lib/core/es6/grid/LayoutGrid.d.ts +1 -0
- package/lib/core/es6/grid/LayoutGrid.js +25 -2
- package/lib/core/es6/grid/VirtualizedLayoutGrid.d.ts +1 -0
- package/lib/core/es6/grid/VirtualizedLayoutGrid.js +24 -104
- package/lib/core/es6/grid/util/CellBoundPainter.d.ts +16 -0
- package/lib/core/es6/grid/util/CellBoundPainter.js +171 -0
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +10 -1
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/ColumnDefinition.d.ts +1 -1
- package/lib/rt-grid/es6/ColumnDefinition.js +1 -1
- package/lib/rt-grid/es6/RowDefinition.js +9 -0
- package/lib/tr-grid-cell-selection/es6/CellSelection.js +22 -8
- package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +6 -3
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +79 -18
- package/lib/types/es6/Core/grid/Core.d.ts +2 -0
- package/lib/types/es6/Core/grid/LayoutGrid.d.ts +1 -0
- package/lib/types/es6/Core/grid/VirtualizedLayoutGrid.d.ts +1 -0
- package/lib/types/es6/Core/grid/util/CellBoundPainter.d.ts +16 -0
- package/lib/types/es6/RealtimeGrid/ColumnDefinition.d.ts +4 -1
- package/lib/versions.json +3 -3
- package/package.json +1 -1
@@ -50,7 +50,7 @@ import Engine from "../../tr-grid-util/es6/formula/Engine.js";
|
|
50
50
|
* @property {boolean=} leftPinned=false If enabled, the column will not be part of the scrollable area and is pinned to the left side
|
51
51
|
* @property {boolean=} rightPinned=false If enabled, the column will not be part of the scrollable area and is pinned to the right side
|
52
52
|
* @property {Object=} info=null For storing any additional information to the column
|
53
|
-
* @property {boolean} focusable=false If enabled, the column will be used to find focusable element when pressing tab key
|
53
|
+
* @property {boolean=} focusable=false If enabled, the column will be used to find focusable element when pressing tab key
|
54
54
|
*/
|
55
55
|
|
56
56
|
/** mapping of field type to javascript type
|
@@ -1130,6 +1130,11 @@ RowDefinition.prototype._toRealTimeRow = function() {
|
|
1130
1130
|
this._parent = null;
|
1131
1131
|
this._depthLevel = 0;
|
1132
1132
|
|
1133
|
+
// Add static value to the new allocated row
|
1134
|
+
if(this._staticValues) {
|
1135
|
+
this.setRowData(this._staticValues);
|
1136
|
+
}
|
1137
|
+
|
1133
1138
|
this.subscribeForUpdates();
|
1134
1139
|
};
|
1135
1140
|
|
@@ -1148,8 +1153,12 @@ RowDefinition.prototype.unlinkChain = function() {
|
|
1148
1153
|
}
|
1149
1154
|
}
|
1150
1155
|
|
1156
|
+
let staticData = this._getStaticRowData();
|
1151
1157
|
this.unsubscribeForUpdates();
|
1152
1158
|
|
1159
|
+
// Restore static data
|
1160
|
+
this.setStaticRowData(staticData);
|
1161
|
+
|
1153
1162
|
let view = this._view;
|
1154
1163
|
if(view) {
|
1155
1164
|
let rid = this.getRowId();
|
@@ -474,8 +474,11 @@ CellSelectionPlugin.prototype._onMouseMove = function (e) {
|
|
474
474
|
}
|
475
475
|
var activeGrid = this._getActiveGrid();
|
476
476
|
var newMouse = activeGrid.getRelativePosition(e);
|
477
|
-
|
478
|
-
|
477
|
+
|
478
|
+
// Avoid cross section selection but scrolling is still working
|
479
|
+
if (this._anchor["sectionType"] === "title" && newMouse["sectionType"] !== "title") {
|
480
|
+
return;
|
481
|
+
} else if (this._anchor["sectionType"] === "content" && newMouse["sectionType"] === "title") {
|
479
482
|
return;
|
480
483
|
}
|
481
484
|
if (!newMouse['hit']) {
|
@@ -1158,17 +1161,24 @@ CellSelectionPlugin.prototype._updateSelection = function (tgtRect) {
|
|
1158
1161
|
var x = this._curRect.left;
|
1159
1162
|
var y = this._curRect.top;
|
1160
1163
|
var mapInfo = this._map[y];
|
1161
|
-
var contentType = mapInfo ? mapInfo.type === "content" : false;
|
1162
1164
|
var w = 0;
|
1163
1165
|
var h = 0;
|
1164
|
-
if (
|
1166
|
+
if (mapInfo) {
|
1165
1167
|
w = this._curRect.right - x;
|
1166
1168
|
h = this._curRect.bottom - y;
|
1167
1169
|
y -= mapInfo.rowOffset;
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1170
|
+
var contentType = mapInfo.type;
|
1171
|
+
if (contentType === "content") {
|
1172
|
+
var contentSect = activeGrid.getSection("content");
|
1173
|
+
if (contentSect) {
|
1174
|
+
contentSect.setCellBounds(x, y, w, h);
|
1175
|
+
}
|
1176
|
+
} else {
|
1177
|
+
var titleSect = activeGrid.getSection("title");
|
1178
|
+
if (titleSect) {
|
1179
|
+
titleSect.setCellBounds(x, y, w, h);
|
1180
|
+
}
|
1181
|
+
}
|
1172
1182
|
}
|
1173
1183
|
}
|
1174
1184
|
};
|
@@ -1359,6 +1369,10 @@ CellSelectionPlugin.prototype.deselectAll = function () {
|
|
1359
1369
|
if (contentSect) {
|
1360
1370
|
contentSect.setCellBounds(0, 0, 0, 0);
|
1361
1371
|
}
|
1372
|
+
var titleSect = activeGrid.getSection("title");
|
1373
|
+
if (titleSect) {
|
1374
|
+
titleSect.setCellBounds(0, 0, 0, 0);
|
1375
|
+
}
|
1362
1376
|
}
|
1363
1377
|
this._lastSelection = this.getSelectionBounds();
|
1364
1378
|
this._anchor = null;
|
@@ -884,10 +884,13 @@ InCellEditingPlugin.prototype.unload = function (host) {
|
|
884
884
|
clearTimeout(this._editorTimerId);
|
885
885
|
}
|
886
886
|
window.removeEventListener("scroll", this._onScroll);
|
887
|
+
if(this._starterTextPopup) {
|
888
|
+
this._starterTextPopup.dispose();
|
889
|
+
}
|
887
890
|
}
|
888
|
-
|
889
|
-
|
890
|
-
this.
|
891
|
+
if(this.isEditing()) {
|
892
|
+
this.closeRowEditor(false);
|
893
|
+
this.closeCellEditor(false);
|
891
894
|
}
|
892
895
|
this._dispose();
|
893
896
|
};
|
@@ -136,6 +136,42 @@ let _arrayConcat = function(ary, val) {
|
|
136
136
|
}
|
137
137
|
return ary;
|
138
138
|
};
|
139
|
+
|
140
|
+
/** @type {Object}
|
141
|
+
* @private
|
142
|
+
* @const
|
143
|
+
*/
|
144
|
+
const BlankValues = {
|
145
|
+
"": true,
|
146
|
+
"null": true,
|
147
|
+
"undefined": true,
|
148
|
+
"NaN": true
|
149
|
+
};
|
150
|
+
/** @private
|
151
|
+
* @function
|
152
|
+
* @param {Array} ary
|
153
|
+
* @param {string} str
|
154
|
+
* @returns {boolean} Returns true if there is any change
|
155
|
+
*/
|
156
|
+
let _pushRawValue = function(ary, str) {
|
157
|
+
if(str) {
|
158
|
+
if(!BlankValues[str]) {
|
159
|
+
let dateObj = stringToDateObject(str);
|
160
|
+
if(dateObj !== str) {
|
161
|
+
ary.push(dateObj);
|
162
|
+
} else {
|
163
|
+
try {
|
164
|
+
ary.push(JSON.parse(str));
|
165
|
+
} catch (err) {
|
166
|
+
ary.push(str);
|
167
|
+
}
|
168
|
+
}
|
169
|
+
return true;
|
170
|
+
}
|
171
|
+
}
|
172
|
+
return false;
|
173
|
+
};
|
174
|
+
|
139
175
|
/** @private
|
140
176
|
* @function
|
141
177
|
* @param {Object} obj
|
@@ -670,8 +706,8 @@ RowFilteringPlugin.prototype._parseFilter = function(exp, colIndex, ctx) {
|
|
670
706
|
rawDataAccessor = ctx.rawDataAccessor || null;
|
671
707
|
formattedDataAccessor = ctx.formattedDataAccessor || null;
|
672
708
|
}
|
673
|
-
if(!Array.isArray(exp)) {
|
674
|
-
if(exp[BLANKS] || (ctx && ctx.blankValues)) {
|
709
|
+
if(!Array.isArray(exp)) { // If exp is an object
|
710
|
+
if(exp[BLANKS] || (ctx && ctx.blankValues)) { // it contains BLANKS key or context object has blank option
|
675
711
|
exp[""] = exp["null"] = exp["undefined"] = exp["NaN"] = true;
|
676
712
|
delete exp[BLANKS];
|
677
713
|
}
|
@@ -1485,7 +1521,7 @@ let _valueToString = function(formattedVal, rawVal) {
|
|
1485
1521
|
} else if(formattedVal instanceof Date) {
|
1486
1522
|
return formattedVal.toLocaleString("en-GB");
|
1487
1523
|
} else { // Object type cannot be converted to string
|
1488
|
-
return"";
|
1524
|
+
return "";
|
1489
1525
|
}
|
1490
1526
|
} else if(formattedVal === 0) {
|
1491
1527
|
return "0";
|
@@ -1650,23 +1686,34 @@ RowFilteringPlugin._formatArrayExpression = function(exp, field, formatter) {
|
|
1650
1686
|
ary.rawValue = val;
|
1651
1687
|
ary.formattedValue = formattedVal;
|
1652
1688
|
}
|
1653
|
-
if(
|
1654
|
-
if(
|
1689
|
+
if(typeof val !== "string" && val != null) {
|
1690
|
+
if(field && formatter) {
|
1655
1691
|
let dummyRow = {};
|
1656
1692
|
dummyRow[field] = val;
|
1657
1693
|
formattedVal = formatter(dummyRow);
|
1658
|
-
|
1659
|
-
|
1660
|
-
|
1661
|
-
|
1662
|
-
|
1694
|
+
} else {
|
1695
|
+
formattedVal = _valueToString(val, val);
|
1696
|
+
}
|
1697
|
+
if(formattedVal) {
|
1698
|
+
ary.rawValue = val;
|
1699
|
+
ary.formattedValue = formattedVal;
|
1700
|
+
} else {
|
1701
|
+
formattedVal = val;
|
1663
1702
|
}
|
1664
1703
|
}
|
1665
|
-
ary[1] =
|
1704
|
+
ary[1] = formattedVal;
|
1666
1705
|
return ary;
|
1667
1706
|
}
|
1668
1707
|
return null;
|
1669
1708
|
};
|
1709
|
+
/** For mocking dialog instance
|
1710
|
+
* @public
|
1711
|
+
* @ignore
|
1712
|
+
* @param {*} dialog
|
1713
|
+
*/
|
1714
|
+
RowFilteringPlugin.prototype.setDialog = function(dialog) {
|
1715
|
+
this._filterDialog = dialog;
|
1716
|
+
};
|
1670
1717
|
/** @public
|
1671
1718
|
* @param {number} colIndex
|
1672
1719
|
* @param {RowFilteringPlugin~FilterDialogOptions=} runtimeDialogOptions
|
@@ -1802,22 +1849,36 @@ RowFilteringPlugin.prototype.openDialog = function(colIndex, runtimeDialogOption
|
|
1802
1849
|
let filterFuncs = null;
|
1803
1850
|
let exp = colSettings.expression;
|
1804
1851
|
if(exp) {
|
1852
|
+
let userInputs = [];
|
1853
|
+
if(cfo._filters && cfo._filters.length) {
|
1854
|
+
filterFuncs = cfo._filters;
|
1855
|
+
}
|
1805
1856
|
if(Array.isArray(exp)) {
|
1806
1857
|
if(exp.length) {
|
1807
1858
|
condition2D = Array.isArray(exp[0]) ? exp.slice() : [exp]; // Guaranteed condition2D to be a 2D array
|
1808
|
-
|
1809
|
-
|
1859
|
+
let conditionAry = null;
|
1860
|
+
conditionAry = RowFilteringPlugin._formatArrayExpression(condition2D[0], field, formatter);
|
1861
|
+
condition2D[0] = conditionAry;
|
1862
|
+
if(conditionAry) {
|
1863
|
+
_pushRawValue(userInputs, conditionAry.rawValue != null ? conditionAry.rawValue : conditionAry[1]);
|
1864
|
+
}
|
1865
|
+
|
1866
|
+
conditionAry = RowFilteringPlugin._formatArrayExpression(condition2D[1], field, formatter);
|
1867
|
+
condition2D[1] = conditionAry;
|
1868
|
+
if(conditionAry) {
|
1869
|
+
_pushRawValue(userInputs, conditionAry.rawValue != null ? conditionAry.rawValue : conditionAry[1]);
|
1870
|
+
}
|
1871
|
+
|
1810
1872
|
filterMode = "advanced";
|
1811
1873
|
}
|
1812
1874
|
} else if(typeof exp === "function" || typeof exp === "string" || typeof exp === "object") {
|
1813
|
-
if(cfo._filters && cfo._filters.length) {
|
1814
|
-
filterFuncs = cfo._filters;
|
1815
|
-
}
|
1816
1875
|
if(typeof exp === "object") {
|
1817
|
-
|
1818
|
-
|
1876
|
+
for(let expKey in exp) {
|
1877
|
+
_pushRawValue(userInputs, expKey);
|
1878
|
+
}
|
1819
1879
|
}
|
1820
1880
|
}
|
1881
|
+
dialogConfig.additionalItems = _arrayConcat(dialogConfig.additionalItems, userInputs);
|
1821
1882
|
}
|
1822
1883
|
|
1823
1884
|
let selectedItems = {};
|
@@ -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;
|
@@ -11,6 +11,7 @@ import SelectionList from "./util/SelectionList.js";
|
|
11
11
|
import ILayoutGrid from "./ILayoutGrid.js";
|
12
12
|
import ElementWrapper from "./components/ElementWrapper.js";
|
13
13
|
import HScrollbar from "./components/HScrollbar.js";
|
14
|
+
import CellBoundPainter from "./util/CellBoundPainter.js";
|
14
15
|
|
15
16
|
declare class LayoutGrid extends ElementWrapper {
|
16
17
|
|
@@ -6,6 +6,7 @@ import ILayoutGrid from "./ILayoutGrid.js";
|
|
6
6
|
import LayoutGrid from "./LayoutGrid.js";
|
7
7
|
import ElementWrapper from "./components/ElementWrapper.js";
|
8
8
|
import HScrollbar from "./components/HScrollbar.js";
|
9
|
+
import CellBoundPainter from "./util/CellBoundPainter.js";
|
9
10
|
|
10
11
|
declare class VirtualizedLayoutGrid extends ElementWrapper {
|
11
12
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
declare class CellBoundPainter {
|
4
|
+
|
5
|
+
constructor(ctx: any);
|
6
|
+
|
7
|
+
public dispose(): void;
|
8
|
+
|
9
|
+
public setCellBounds(colIndex: number, rowIndex: number, width: number, height: number, colCount: number): void;
|
10
|
+
|
11
|
+
public updateCellBounds(): void;
|
12
|
+
|
13
|
+
}
|
14
|
+
|
15
|
+
export default CellBoundPainter;
|
16
|
+
export { CellBoundPainter };
|
@@ -45,7 +45,8 @@ declare namespace ColumnDefinition {
|
|
45
45
|
stationary?: boolean|null,
|
46
46
|
leftPinned?: boolean|null,
|
47
47
|
rightPinned?: boolean|null,
|
48
|
-
info?: any
|
48
|
+
info?: any,
|
49
|
+
focusable?: boolean|null
|
49
50
|
};
|
50
51
|
|
51
52
|
}
|
@@ -160,6 +161,8 @@ declare class ColumnDefinition {
|
|
160
161
|
|
161
162
|
public getColumnInfo(): any;
|
162
163
|
|
164
|
+
public isFocusable(): boolean;
|
165
|
+
|
163
166
|
}
|
164
167
|
|
165
168
|
declare const COL_DEF: string;
|
package/lib/versions.json
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
"@grid/statistics-row": "1.0.17",
|
7
7
|
"@grid/zoom": "1.0.11",
|
8
8
|
"tr-grid-auto-tooltip": "1.1.6",
|
9
|
-
"tr-grid-cell-selection": "1.0.
|
9
|
+
"tr-grid-cell-selection": "1.0.38",
|
10
10
|
"tr-grid-checkbox": "1.0.67",
|
11
11
|
"tr-grid-column-fitter": "1.0.40",
|
12
12
|
"tr-grid-column-formatting": "0.9.36",
|
@@ -19,12 +19,12 @@
|
|
19
19
|
"tr-grid-contextmenu": "1.0.41",
|
20
20
|
"tr-grid-filter-input": "0.9.39",
|
21
21
|
"tr-grid-heat-map": "1.0.29",
|
22
|
-
"tr-grid-in-cell-editing": "1.0.
|
22
|
+
"tr-grid-in-cell-editing": "1.0.86",
|
23
23
|
"tr-grid-pagination": "1.0.24",
|
24
24
|
"tr-grid-percent-bar": "1.0.24",
|
25
25
|
"tr-grid-range-bar": "2.0.8",
|
26
26
|
"tr-grid-row-dragging": "1.0.35",
|
27
|
-
"tr-grid-row-filtering": "1.0.
|
27
|
+
"tr-grid-row-filtering": "1.0.76",
|
28
28
|
"tr-grid-row-grouping": "1.0.87",
|
29
29
|
"tr-grid-row-selection": "1.0.30",
|
30
30
|
"tr-grid-rowcoloring": "1.0.25",
|
package/package.json
CHANGED