@refinitiv-ui/efx-grid 6.0.121 → 6.0.123
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +41 -22
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/Grid.js +34 -11
- package/lib/rt-grid/es6/RowDefinition.js +7 -11
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.d.ts +1 -1
- package/lib/tr-grid-conditional-coloring/es6/ConditionalColoring.js +10 -8
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +9 -1
- package/lib/tr-grid-util/es6/CellPainter.d.ts +1 -1
- package/lib/tr-grid-util/es6/CellPainter.js +35 -41
- package/lib/tr-grid-util/es6/Popup.d.ts +8 -3
- package/lib/tr-grid-util/es6/Popup.js +135 -35
- package/lib/versions.json +3 -3
- package/package.json +1 -1
package/lib/rt-grid/es6/Grid.js
CHANGED
@@ -2708,21 +2708,31 @@ Grid.prototype._removeRow = function(rowDef) {
|
|
2708
2708
|
}
|
2709
2709
|
this._dispatch("beforeRowRemoved", {});
|
2710
2710
|
|
2711
|
-
let connector = this._connector;
|
2712
|
-
let dt = this._dt;
|
2713
2711
|
let childRowDefs = rowDef.getDescendants(); // TODO: Support nested child
|
2714
|
-
if(childRowDefs) {
|
2715
|
-
|
2716
|
-
connector.removeRic(childRowDefs[i]);
|
2717
|
-
}
|
2718
|
-
let rowIds = childRowDefs.map(RowDefinition.toRowId);
|
2719
|
-
dt.removeRows(rowIds);
|
2712
|
+
if(childRowDefs) {
|
2713
|
+
this._removeConstituentRows(childRowDefs);
|
2720
2714
|
}
|
2721
|
-
|
2722
|
-
|
2715
|
+
this._connector.removeRic(rowDef);
|
2716
|
+
this._dt.removeRow(rowDef.getRowId()); // TODO: Merge this with the above removeRows() method
|
2723
2717
|
rowDef.dispose(); // WARNING: This does not remove child reference from its parent
|
2724
2718
|
};
|
2725
2719
|
|
2720
|
+
/** @private
|
2721
|
+
* @param {Array.<RowDefinition>} rowDefs
|
2722
|
+
*/
|
2723
|
+
Grid.prototype._removeConstituentRows = function(rowDefs) {
|
2724
|
+
let connector = this._connector;
|
2725
|
+
let rowIds = [];
|
2726
|
+
for(let i = 0; i < rowDefs.length; i++) {
|
2727
|
+
let childRowDef = rowDefs[i];
|
2728
|
+
rowIds.push(childRowDef.getRowId());
|
2729
|
+
connector.removeRic(childRowDef);
|
2730
|
+
childRowDef.dispose();
|
2731
|
+
}
|
2732
|
+
|
2733
|
+
this._dt.removeRows(rowIds);
|
2734
|
+
};
|
2735
|
+
|
2726
2736
|
/** @public
|
2727
2737
|
* @param {Grid~RowReference} rowRef
|
2728
2738
|
* @param {boolean=} hidden if false, show instead of hide
|
@@ -2827,7 +2837,20 @@ Grid.prototype.unlinkChain = function(rowRef) {
|
|
2827
2837
|
}
|
2828
2838
|
|
2829
2839
|
this._unlinking = true;
|
2840
|
+
|
2841
|
+
let childRowDefs = rowDef.getDescendants(); // TODO: Support nested child
|
2842
|
+
if(childRowDefs) {
|
2843
|
+
if(rowDef.isChainExpanded()) {
|
2844
|
+
for(let i = 0; i < childRowDefs.length; i++) {
|
2845
|
+
childRowDefs[i].toRealTimeRow();
|
2846
|
+
}
|
2847
|
+
} else {
|
2848
|
+
this._removeConstituentRows(childRowDefs);
|
2849
|
+
}
|
2850
|
+
}
|
2851
|
+
|
2830
2852
|
rowDef.unlinkChain();
|
2853
|
+
|
2831
2854
|
this._unlinking = false;
|
2832
2855
|
};
|
2833
2856
|
|
@@ -3596,7 +3619,7 @@ Grid.prototype._onDataChanged = function(e) {
|
|
3596
3619
|
let subId = rowData[SUB_ID]; // The constituent will share the same sub id as its parent
|
3597
3620
|
if(subId) {
|
3598
3621
|
let parentDef = this._getRowDefinitionById(subId);
|
3599
|
-
if(parentDef && parentDef.getRic() !== rowData["RIC"]) { // TODO: Check for delayed ric
|
3622
|
+
if(parentDef && parentDef.isChain() && parentDef.getRic() !== rowData["RIC"]) { // TODO: Check for delayed ric
|
3600
3623
|
if(!this._chainMembers) {
|
3601
3624
|
this._chainMembers = {};
|
3602
3625
|
}
|
@@ -286,7 +286,7 @@ RowDefinition.prototype.initialize = function(rowOptions) {
|
|
286
286
|
this._asSegment = val ? true : false;
|
287
287
|
}
|
288
288
|
|
289
|
-
if(this._isChain) {
|
289
|
+
if(this._isChain || this._asSegment) {
|
290
290
|
this._collapsed = extractedOptions["collapsed"]; // Temporary state
|
291
291
|
}
|
292
292
|
|
@@ -1158,9 +1158,10 @@ RowDefinition.prototype.addConstituent = function(ric) {
|
|
1158
1158
|
};
|
1159
1159
|
|
1160
1160
|
/** Used to convert autogenerated row to regular real-time row
|
1161
|
-
* @
|
1161
|
+
* @public
|
1162
|
+
* @ignore
|
1162
1163
|
*/
|
1163
|
-
RowDefinition.prototype.
|
1164
|
+
RowDefinition.prototype.toRealTimeRow = function() {
|
1164
1165
|
if(!this._ric) { // Empty row
|
1165
1166
|
return;
|
1166
1167
|
}
|
@@ -1189,14 +1190,6 @@ RowDefinition.prototype.unlinkChain = function() {
|
|
1189
1190
|
return;
|
1190
1191
|
}
|
1191
1192
|
|
1192
|
-
if(this.isChainExpanded()) {
|
1193
|
-
let rowDefs = this.getDescendants();
|
1194
|
-
let len = rowDefs.length;
|
1195
|
-
for(let i = 0; i < len; i++) {
|
1196
|
-
rowDefs[i]._toRealTimeRow();
|
1197
|
-
}
|
1198
|
-
}
|
1199
|
-
|
1200
1193
|
let staticData = this._cloneStaticRowData();
|
1201
1194
|
this.unsubscribeForUpdates();
|
1202
1195
|
|
@@ -1424,6 +1417,7 @@ RowDefinition.extractRowOptions = function(rowOptions) {
|
|
1424
1417
|
let permId = rowOptions["permId"];
|
1425
1418
|
let chainRic = rowOptions["chainRic"];
|
1426
1419
|
let collapsed = rowOptions["collapsed"];
|
1420
|
+
let asSegment = rowOptions["asSegment"];
|
1427
1421
|
let asChain = rowOptions["asChain"];
|
1428
1422
|
if(asChain == null && chainRic){
|
1429
1423
|
asChain = true;
|
@@ -1436,6 +1430,8 @@ RowDefinition.extractRowOptions = function(rowOptions) {
|
|
1436
1430
|
expanded = true;
|
1437
1431
|
} else if(asChain) {
|
1438
1432
|
expanded = false;
|
1433
|
+
} else if(asSegment) {
|
1434
|
+
expanded = true;
|
1439
1435
|
}
|
1440
1436
|
|
1441
1437
|
let extractedOptions = {};
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import {Ext} from '../../tr-grid-util/es6/Ext.js';
|
2
2
|
import {GridPlugin} from '../../tr-grid-util/es6/GridPlugin.js';
|
3
|
-
import {extendObject, injectCss, prettifyCss} from '../../tr-grid-util/es6/Util.js';
|
3
|
+
import {extendObject, injectCss, prettifyCss, isEmptyObject} from '../../tr-grid-util/es6/Util.js';
|
4
4
|
import {CellPainter} from '../../tr-grid-util/es6/CellPainter.js';
|
5
5
|
import {FilterBuilder} from '../../tr-grid-util/es6/FilterBuilder.js';
|
6
6
|
import {ElfUtil} from '../../tr-grid-util/es6/ElfUtil.js';
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import {Ext} from '../../tr-grid-util/es6/Ext.js';
|
2
2
|
import {GridPlugin} from '../../tr-grid-util/es6/GridPlugin.js';
|
3
|
-
import {extendObject, injectCss, prettifyCss} from '../../tr-grid-util/es6/Util.js';
|
3
|
+
import {extendObject, injectCss, prettifyCss, isEmptyObject} from '../../tr-grid-util/es6/Util.js';
|
4
4
|
import {CellPainter} from '../../tr-grid-util/es6/CellPainter.js';
|
5
5
|
import {FilterBuilder} from '../../tr-grid-util/es6/FilterBuilder.js';
|
6
6
|
import {ElfUtil} from '../../tr-grid-util/es6/ElfUtil.js';
|
@@ -762,7 +762,7 @@ ConditionalColoringPlugin.prototype.setColumnBlinking = function (colIndex, blin
|
|
762
762
|
}
|
763
763
|
let blinkDuration = bOptions.duration || this._blinkingDuration;
|
764
764
|
painter.setBlinkingDuration(blinkDuration);
|
765
|
-
|
765
|
+
colData.levelBlinkingDisabled = bOptions.level === false; // Used in _onSectionBinding
|
766
766
|
if (bOptions.customColor) {
|
767
767
|
painter.addBlink(newBlinkingField, bOptions.up, bOptions.down, bOptions.level, bOptions.border);
|
768
768
|
} else {
|
@@ -1198,8 +1198,7 @@ ConditionalColoringPlugin.prototype._onSectionBinding = function (e) {
|
|
1198
1198
|
}
|
1199
1199
|
|
1200
1200
|
let prevDataRow, prevDataRows = host._prevDataRows;
|
1201
|
-
let
|
1202
|
-
let prevRowCount = prevIds.length;
|
1201
|
+
let isPrevRowExisted = !isEmptyObject(prevDataRows);
|
1203
1202
|
for (r = fromR; r < toR; ++r) {
|
1204
1203
|
dataRow = this._rowGetter(dataRows[r]);
|
1205
1204
|
if (!dataRow) continue; // prevent from null value access when using with RowGroupingExtension
|
@@ -1259,14 +1258,17 @@ ConditionalColoringPlugin.prototype._onSectionBinding = function (e) {
|
|
1259
1258
|
let prevValue = prevDataRow[field];
|
1260
1259
|
if (prevValue != null) {
|
1261
1260
|
if (changedCols && changedCols[field]) {
|
1262
|
-
|
1263
|
-
|
1261
|
+
let blinkSignal = painter.calcBlinkSignal(newValue, prevValue);
|
1262
|
+
if(blinkSignal !== 0 || (blinkSignal === 0 && !colData.levelBlinkingDisabled)) {
|
1263
|
+
blinking = true;
|
1264
|
+
bgBlinking = painter.blink(cell, blinkSignal, dataRow);
|
1265
|
+
}
|
1264
1266
|
}
|
1265
1267
|
}
|
1266
1268
|
} else {
|
1267
|
-
if(
|
1269
|
+
if(isPrevRowExisted && insertedRow){
|
1268
1270
|
blinking = true;
|
1269
|
-
bgBlinking = painter.
|
1271
|
+
bgBlinking = painter.blink(cell, 0, dataRow);
|
1270
1272
|
}
|
1271
1273
|
}
|
1272
1274
|
}
|
@@ -1607,6 +1607,7 @@ RowFilteringPlugin.prototype._getUniqueValues = function(field, dialogConfig, fo
|
|
1607
1607
|
let uniqueValues = {};
|
1608
1608
|
let formattedVal = null;
|
1609
1609
|
let rawVal = null;
|
1610
|
+
let blankAtLeastOne = false;
|
1610
1611
|
if(!Array.isArray(userItemList)) {
|
1611
1612
|
userItemList = null;
|
1612
1613
|
let dvs = this._getAvailableDataViews();
|
@@ -1631,6 +1632,10 @@ RowFilteringPlugin.prototype._getUniqueValues = function(field, dialogConfig, fo
|
|
1631
1632
|
|
1632
1633
|
if(!rawVal) { // Only valid values are accepted
|
1633
1634
|
if(rawVal !== 0 && rawVal !== false) {
|
1635
|
+
if(!blankAtLeastOne && BlankValues[rawVal]) {
|
1636
|
+
blankAtLeastOne = true;
|
1637
|
+
_collectUniqueValue(uniqueValues, BLANKS, rawVal);
|
1638
|
+
}
|
1634
1639
|
continue;
|
1635
1640
|
}
|
1636
1641
|
}
|
@@ -1914,7 +1919,6 @@ RowFilteringPlugin.prototype.openDialog = function(colIndex, runtimeDialogOption
|
|
1914
1919
|
);
|
1915
1920
|
|
1916
1921
|
if(dialogConfig.blankValues) {
|
1917
|
-
delete uniqueValues[BLANKS];
|
1918
1922
|
let dunmmySelectItem = {};
|
1919
1923
|
let blkVals = ["", null, undefined, NaN]; // eslint-disable-line
|
1920
1924
|
let dummyRow = {};
|
@@ -1927,7 +1931,11 @@ RowFilteringPlugin.prototype.openDialog = function(colIndex, runtimeDialogOption
|
|
1927
1931
|
break;
|
1928
1932
|
}
|
1929
1933
|
}
|
1934
|
+
if(!dialogConfig.blankValuesChecked && !uniqueValues[BLANKS]) {
|
1935
|
+
dialogConfig.blankValues = false; // doesn't display a blank item when the checkbox for it is unchecked and there's no blank value at least one item.
|
1936
|
+
}
|
1930
1937
|
}
|
1938
|
+
delete uniqueValues[BLANKS];
|
1931
1939
|
|
1932
1940
|
let keys = Object.keys(uniqueValues);
|
1933
1941
|
if(sortLogic) {
|
@@ -128,7 +128,7 @@ declare class CellPainter {
|
|
128
128
|
|
129
129
|
public renderColoring(cell: any, rowData: any): void;
|
130
130
|
|
131
|
-
public blink(cell: any, blinkSignal: number, rowData: any):
|
131
|
+
public blink(cell: any, blinkSignal: number, rowData: any): boolean;
|
132
132
|
|
133
133
|
public blinkCell(cell: any, newValue: number, oldValue: number, rowData: any): boolean;
|
134
134
|
|
@@ -77,10 +77,6 @@ CellPainter.prototype._scopes;
|
|
77
77
|
* @private
|
78
78
|
*/
|
79
79
|
CellPainter.prototype._columnStats = null;
|
80
|
-
/** @type {boolean}
|
81
|
-
* @private
|
82
|
-
*/
|
83
|
-
CellPainter.prototype._levelColorDisabled = false;
|
84
80
|
/** @type {number}
|
85
81
|
* @private
|
86
82
|
*/
|
@@ -729,7 +725,7 @@ CellPainter.prototype._getStyles = function(rowData, min, max) {
|
|
729
725
|
} else if(ret < 0) {
|
730
726
|
curCond["cssClass"] = curCond["downClass"];
|
731
727
|
} else {
|
732
|
-
curCond["cssClass"] =
|
728
|
+
curCond["cssClass"] = curCond["levelClass"];
|
733
729
|
}
|
734
730
|
curCond["cssClass"] = curCond["cssClass"] || "";
|
735
731
|
return curCond;
|
@@ -1029,42 +1025,11 @@ CellPainter.prototype._paintCell = function(cell, rowData, min, max) {
|
|
1029
1025
|
* @param {tr.grid.Cell} cell
|
1030
1026
|
* @param {number} blinkSignal
|
1031
1027
|
* @param {Object} rowData to calculate original style e.g. { PCTCHNG: 0.53, CF_NETCHNG: 0.75 }
|
1032
|
-
*/
|
1033
|
-
CellPainter.prototype.blink = function (cell, blinkSignal, rowData) {
|
1034
|
-
this._blinkCell(cell, rowData, blinkSignal);
|
1035
|
-
};
|
1036
|
-
|
1037
|
-
/**
|
1038
|
-
* @public
|
1039
|
-
* @param {tr.grid.Cell} cell
|
1040
|
-
* @param {number} newValue
|
1041
|
-
* @param {number} oldValue
|
1042
|
-
* @param {Object} rowData e.g. { PCTCHNG: 0.53, CF_NETCHNG: 0.75 }
|
1043
|
-
* @return {boolean}
|
1044
|
-
*/
|
1045
|
-
CellPainter.prototype.blinkCell = function(cell, newValue, oldValue, rowData) {
|
1046
|
-
let bc = this._blinkCondition;
|
1047
|
-
if (!bc) return false;
|
1048
|
-
|
1049
|
-
let blinkSignal = this._blinkCondition._fn(newValue, oldValue);
|
1050
|
-
return this._blinkCell(cell, rowData, blinkSignal);
|
1051
|
-
};
|
1052
|
-
|
1053
|
-
/** @private
|
1054
|
-
* @param {tr.grid.Cell} cell
|
1055
|
-
* @param {Object} rowData e.g. { PCTCHNG: 0.53, CF_NETCHNG: 0.75 }
|
1056
|
-
* @param {number} blinkSignal
|
1057
1028
|
* @return {boolean}
|
1058
1029
|
*/
|
1059
|
-
CellPainter.prototype.
|
1030
|
+
CellPainter.prototype.blink = function (cell, blinkSignal, rowData) {
|
1060
1031
|
if (!cell) return false;
|
1061
1032
|
|
1062
|
-
if (this._levelColorDisabled) {
|
1063
|
-
if(!blinkSignal) { // Disabled level color equivalent to no blinking for blink signal 0
|
1064
|
-
return false;
|
1065
|
-
}
|
1066
|
-
}
|
1067
|
-
|
1068
1033
|
let elem = cell.getElement();
|
1069
1034
|
if (!elem) return false; // Cell has been disposed
|
1070
1035
|
|
@@ -1117,6 +1082,36 @@ CellPainter.prototype._blinkCell = function(cell, rowData, blinkSignal) {
|
|
1117
1082
|
return bgBlinking;
|
1118
1083
|
};
|
1119
1084
|
|
1085
|
+
/**
|
1086
|
+
* @public
|
1087
|
+
* @param {tr.grid.Cell} cell
|
1088
|
+
* @param {number} newValue
|
1089
|
+
* @param {number} oldValue
|
1090
|
+
* @param {Object} rowData e.g. { PCTCHNG: 0.53, CF_NETCHNG: 0.75 }
|
1091
|
+
* @return {boolean}
|
1092
|
+
*/
|
1093
|
+
CellPainter.prototype.blinkCell = function(cell, newValue, oldValue, rowData) {
|
1094
|
+
let bc = this._blinkCondition;
|
1095
|
+
if (!bc) return false;
|
1096
|
+
|
1097
|
+
let blinkSignal = this._blinkCondition._fn(newValue, oldValue);
|
1098
|
+
return this.blink(cell, blinkSignal, rowData);
|
1099
|
+
};
|
1100
|
+
|
1101
|
+
/**
|
1102
|
+
* @public
|
1103
|
+
* @ignore
|
1104
|
+
* @param {number} newValue
|
1105
|
+
* @param {number} oldValue
|
1106
|
+
* @return {number}
|
1107
|
+
*/
|
1108
|
+
CellPainter.prototype.calcBlinkSignal = function(newValue, oldValue) {
|
1109
|
+
if (this._blinkCondition) {
|
1110
|
+
return this._blinkCondition._fn(newValue, oldValue);
|
1111
|
+
}
|
1112
|
+
return 0;
|
1113
|
+
};
|
1114
|
+
|
1120
1115
|
/**
|
1121
1116
|
* @public
|
1122
1117
|
* @param {tr.grid.Cell} cell
|
@@ -1133,13 +1128,12 @@ CellPainter.prototype.verifyBlinking = function(cell, rowData) {
|
|
1133
1128
|
}
|
1134
1129
|
}
|
1135
1130
|
};
|
1136
|
-
/**
|
1131
|
+
/** Deprecated, the state has been moved out to support prioritization.
|
1137
1132
|
* @public
|
1133
|
+
* @deprecated
|
1138
1134
|
* @param {boolean=} disabled
|
1139
1135
|
*/
|
1140
|
-
CellPainter.prototype.disableLevelColor = function(disabled) {
|
1141
|
-
this._levelColorDisabled = disabled !== false;
|
1142
|
-
};
|
1136
|
+
CellPainter.prototype.disableLevelColor = function(disabled) {};
|
1143
1137
|
/**
|
1144
1138
|
* @public
|
1145
1139
|
* @param {number} duration
|
@@ -16,7 +16,8 @@ declare namespace Popup {
|
|
16
16
|
contentElement?: Element|null,
|
17
17
|
popupChild?: Popup|null,
|
18
18
|
uiBlocking?: boolean|null,
|
19
|
-
hideOnScroll?: boolean|null
|
19
|
+
hideOnScroll?: boolean|null,
|
20
|
+
zIndexReference?: Element|null
|
20
21
|
};
|
21
22
|
|
22
23
|
type Positioning = string;
|
@@ -41,6 +42,8 @@ declare class Popup extends EventDispatcher {
|
|
41
42
|
|
42
43
|
public attachTo(elem: Element|null, positioning?: Popup.Positioning|null): void;
|
43
44
|
|
45
|
+
public getAttachedElement(): Element|null;
|
46
|
+
|
44
47
|
public setAttachedElement(elem: Element|null, positioning?: Popup.Positioning|null): void;
|
45
48
|
|
46
49
|
public addFocusElement(elem: Element|null): void;
|
@@ -53,6 +56,10 @@ declare class Popup extends EventDispatcher {
|
|
53
56
|
|
54
57
|
public setParentElement(parentElement: Element|null): Element|null;
|
55
58
|
|
59
|
+
public getZIndexReference(): Element|null;
|
60
|
+
|
61
|
+
public setZIndexReference(elem: Element|null): void;
|
62
|
+
|
56
63
|
public show(opt_shown?: boolean|null, parentElement?: Element|null): void;
|
57
64
|
|
58
65
|
public hide(opt_hidden?: boolean|null): void;
|
@@ -85,7 +92,5 @@ declare class Popup extends EventDispatcher {
|
|
85
92
|
|
86
93
|
declare function containElements(parentElem: Element|null, e: MouseEvent|null): boolean;
|
87
94
|
|
88
|
-
declare function fe(elem: Element|null, positioning?: Popup.Positioning|null): void;
|
89
|
-
|
90
95
|
export { Popup, containElements };
|
91
96
|
export default Popup;
|
@@ -4,7 +4,7 @@ import { Dom } from './Dom.js';
|
|
4
4
|
|
5
5
|
/** @typedef {Object} Popup~Options
|
6
6
|
* @description Popup options
|
7
|
-
* @property {Popup~Positioning=} positioning="under"
|
7
|
+
* @property {Popup~Positioning=} positioning="under" Avialable value are under, right, over, fixed, custom
|
8
8
|
* @property {boolean=} autoHiding=true Hide on blur or clicking outside of popup elements
|
9
9
|
* @property {boolean=} hoverToShow=false Show popup when mouse is over the attached element.
|
10
10
|
* @property {boolean=} autoClipping=true Clip popup element when there is not enough space to show popup
|
@@ -16,16 +16,17 @@ import { Dom } from './Dom.js';
|
|
16
16
|
* @property {Popup=} popupChild=null Popup instance that will be hidden when its parent is hidden
|
17
17
|
* @property {boolean=} uiBlocking=false To attach overlay to block user from interact with ui behind popup
|
18
18
|
* @property {boolean=} hideOnScroll=true If disabled, popup will not be hidden when scrolling
|
19
|
+
* @property {Element=} zIndexReference=null Popup will be opened with zIndex greater than the given element
|
19
20
|
*/
|
20
21
|
|
21
22
|
/** @typedef {string} Popup~Positioning
|
22
23
|
* @description Available positioning type are: <br>
|
23
|
-
* <b>under</b>
|
24
|
-
* <b>right</b>
|
25
|
-
* <b>over</b>
|
26
|
-
* <b>center</b
|
27
|
-
* <b>fixed</b>
|
28
|
-
* <b>custom</b
|
24
|
+
* <b>under</b> : Popup appears under the attached element (Default) <br>
|
25
|
+
* <b>right</b> : Popup appears on the right side of the attached element <br>
|
26
|
+
* <b>over</b> : Popup appears on the top left of the attached element (i.e. over the element) <br>
|
27
|
+
* <b>center</b>: Deprecated. Popup appears at the center of the screen. No element should be supplied <br>
|
28
|
+
* <b>fixed</b> : Popup appears without any positioning <br>
|
29
|
+
* <b>custom</b>: Popup appears without any positioning <br>
|
29
30
|
*
|
30
31
|
*/
|
31
32
|
|
@@ -167,6 +168,10 @@ Popup.prototype._resizeTimer = 0;
|
|
167
168
|
* @private
|
168
169
|
*/
|
169
170
|
Popup.prototype._attachedElem = null;
|
171
|
+
/** @type {Element}
|
172
|
+
* @private
|
173
|
+
*/
|
174
|
+
Popup.prototype._zIndexRef = null;
|
170
175
|
/** @type {string}
|
171
176
|
* @private
|
172
177
|
*/
|
@@ -178,7 +183,7 @@ Popup.prototype._focusElements;
|
|
178
183
|
/** @type {Element}
|
179
184
|
* @private
|
180
185
|
*/
|
181
|
-
Popup.prototype._parentElement;
|
186
|
+
Popup.prototype._parentElement = null;
|
182
187
|
/** @type {!Array.<Popup>}
|
183
188
|
* @private
|
184
189
|
*/
|
@@ -238,7 +243,7 @@ Popup.prototype.dispose = function () {
|
|
238
243
|
this._inDoc = false;
|
239
244
|
Dom.removeParent(this._elem);
|
240
245
|
Dom.removeParent(this._overlay);
|
241
|
-
this._elem = null;
|
246
|
+
this._elem = this._parentElement = this._attachedElem = this._zIndexRef = null;
|
242
247
|
};
|
243
248
|
/** @public
|
244
249
|
* @return {Element}
|
@@ -274,41 +279,53 @@ Popup.prototype.enable = function (opt_bool) {
|
|
274
279
|
Popup.prototype.init = function (options) {
|
275
280
|
if (!options) { return; }
|
276
281
|
|
277
|
-
|
278
|
-
|
282
|
+
let val = options["positioning"];
|
283
|
+
if (val) {
|
284
|
+
this._positioning = val;
|
279
285
|
}
|
280
|
-
|
281
|
-
|
286
|
+
val = options["autoHiding"];
|
287
|
+
if (val != null) {
|
288
|
+
this._autoHiding = val ? true : false;
|
282
289
|
}
|
283
|
-
|
284
|
-
|
290
|
+
val = options["uiBlocking"];
|
291
|
+
if (val != null) {
|
292
|
+
this.enableUIBlocking(val);
|
285
293
|
}
|
286
|
-
|
287
|
-
|
294
|
+
val = options["hoverToShow"];
|
295
|
+
if (val != null) {
|
296
|
+
this._hoverToShow = val ? true : false;
|
288
297
|
}
|
289
|
-
|
290
|
-
|
298
|
+
val = options["autoClipping"];
|
299
|
+
if (val != null) {
|
300
|
+
this._autoClipping = val ? true : false;
|
291
301
|
}
|
292
|
-
|
293
|
-
|
302
|
+
val = options["attachedElement"];
|
303
|
+
if (val !== undefined) { // eslint-disable-line
|
304
|
+
this.attachTo(val);
|
294
305
|
}
|
295
|
-
|
296
|
-
|
306
|
+
val = options["contentElement"];
|
307
|
+
if (val instanceof Element) {
|
308
|
+
this.appendChild(val);
|
297
309
|
}
|
298
|
-
|
299
|
-
|
310
|
+
val = options["parentElement"];
|
311
|
+
if (val !== undefined) { // eslint-disable-line
|
312
|
+
this.setParentElement(val);
|
300
313
|
}
|
301
|
-
|
302
|
-
if (
|
303
|
-
this.addPopupChild(
|
314
|
+
val = options["popupChild"];
|
315
|
+
if (val) {
|
316
|
+
this.addPopupChild(val);
|
304
317
|
}
|
305
|
-
|
306
|
-
if (
|
307
|
-
this._hideOnScroll = false;
|
318
|
+
val = options["hideOnScroll"];
|
319
|
+
if (val != null) {
|
320
|
+
this._hideOnScroll = val ? true : false;
|
308
321
|
}
|
309
|
-
|
310
|
-
if (
|
311
|
-
this._autoRepositioning = false;
|
322
|
+
val = options["autoRepositioning"];
|
323
|
+
if (val != null) {
|
324
|
+
this._autoRepositioning = val ? true : false;
|
325
|
+
}
|
326
|
+
val = options["zIndexReference"];
|
327
|
+
if (val !== undefined) { // eslint-disable-line
|
328
|
+
this.setZIndexReference(val);
|
312
329
|
}
|
313
330
|
|
314
331
|
this.addListener(options, "show");
|
@@ -358,6 +375,13 @@ Popup.prototype.attachTo = function (elem, positioning) {
|
|
358
375
|
};
|
359
376
|
/** @public
|
360
377
|
* @function
|
378
|
+
* @returns {Element}
|
379
|
+
*/
|
380
|
+
Popup.prototype.getAttachedElement = function() {
|
381
|
+
return this._attachedElem;
|
382
|
+
};
|
383
|
+
/** @public
|
384
|
+
* @function
|
361
385
|
* @param {Element} elem
|
362
386
|
* @param {Popup~Positioning=} positioning
|
363
387
|
*/
|
@@ -417,12 +441,73 @@ Popup.prototype.setPopupGap = function (gap) {
|
|
417
441
|
Popup.prototype.setParentElement = function (parentElement) {
|
418
442
|
if (parentElement instanceof Element) {
|
419
443
|
this._parentElement = parentElement;
|
420
|
-
} else
|
444
|
+
} else {
|
421
445
|
this._parentElement = document.body;
|
422
446
|
}
|
423
447
|
return this._parentElement;
|
424
448
|
};
|
425
449
|
|
450
|
+
/** @public
|
451
|
+
* @returns {Element}
|
452
|
+
*/
|
453
|
+
Popup.prototype.getZIndexReference = function () {
|
454
|
+
return this._zIndexRef;
|
455
|
+
};
|
456
|
+
/** @public
|
457
|
+
* @param {Element} elem
|
458
|
+
*/
|
459
|
+
Popup.prototype.setZIndexReference = function (elem) {
|
460
|
+
this._zIndexRef = elem || null;
|
461
|
+
};
|
462
|
+
/** @private
|
463
|
+
* @param {Element} elem
|
464
|
+
* @returns {number}
|
465
|
+
*/
|
466
|
+
let _getComputedZIndex = function (elem) {
|
467
|
+
if(elem) {
|
468
|
+
try {
|
469
|
+
let comp = getComputedStyle(elem);
|
470
|
+
let zIndex = comp.getPropertyValue("z-index");
|
471
|
+
if(zIndex) {
|
472
|
+
return (+zIndex) || 0;
|
473
|
+
}
|
474
|
+
} catch(err) {}
|
475
|
+
}
|
476
|
+
return 0;
|
477
|
+
};
|
478
|
+
/** @private
|
479
|
+
* @param {Element} elem
|
480
|
+
* @returns {number}
|
481
|
+
*/
|
482
|
+
let _getElementZIndex = function (elem) {
|
483
|
+
if(!elem) {
|
484
|
+
return 0;
|
485
|
+
}
|
486
|
+
|
487
|
+
let zIndex = _getComputedZIndex(elem);
|
488
|
+
if(elem.getRootNode) {
|
489
|
+
let rn = elem.getRootNode();
|
490
|
+
let host = rn ? rn.host : null;
|
491
|
+
if(host) {
|
492
|
+
let rnZIndex = _getComputedZIndex(host);
|
493
|
+
return zIndex >= rnZIndex ? zIndex : rnZIndex;
|
494
|
+
}
|
495
|
+
}
|
496
|
+
return zIndex;
|
497
|
+
};
|
498
|
+
/** @private
|
499
|
+
* @param {Element} elem
|
500
|
+
* @param {number} zIndex
|
501
|
+
*/
|
502
|
+
let _setElementZIndex = function (elem, zIndex) {
|
503
|
+
if(elem) {
|
504
|
+
if(zIndex) {
|
505
|
+
elem.style.zIndex = zIndex + "";
|
506
|
+
} else if(elem.style.zIndex) {
|
507
|
+
elem.style.zIndex = "";
|
508
|
+
}
|
509
|
+
}
|
510
|
+
};
|
426
511
|
/** @public
|
427
512
|
* @param {boolean=} opt_shown
|
428
513
|
* @param {Element=} parentElement
|
@@ -454,12 +539,27 @@ Popup.prototype.show = function (opt_shown, parentElement) {
|
|
454
539
|
|
455
540
|
if (shown) {
|
456
541
|
t._inDoc = true;
|
542
|
+
|
543
|
+
let zIndex = _getElementZIndex(parentElement);
|
457
544
|
if (!(parentElement instanceof Element)) {
|
458
545
|
parentElement = t._parentElement;
|
459
546
|
}
|
460
547
|
if (t._uiBlocking) {
|
461
548
|
t._attachOverlay(parentElement);
|
462
549
|
}
|
550
|
+
let aez = _getElementZIndex(t._attachedElem);
|
551
|
+
let rez = _getElementZIndex(t._zIndexRef);
|
552
|
+
if(zIndex < aez) {
|
553
|
+
zIndex = aez;
|
554
|
+
}
|
555
|
+
if(zIndex < rez) {
|
556
|
+
zIndex = rez;
|
557
|
+
}
|
558
|
+
if(zIndex) {
|
559
|
+
++zIndex;
|
560
|
+
}
|
561
|
+
_setElementZIndex(t._elem, zIndex);
|
562
|
+
_setElementZIndex(t._overlay, zIndex);
|
463
563
|
|
464
564
|
parentElement.appendChild(t._elem);
|
465
565
|
parentElement.addEventListener("scroll", t._onScroll, true); // TODO: Remove the listener
|
package/lib/versions.json
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
{
|
2
|
-
"tr-grid-util": "1.3.
|
2
|
+
"tr-grid-util": "1.3.159",
|
3
3
|
"tr-grid-printer": "1.0.18",
|
4
4
|
"@grid/column-dragging": "1.0.21",
|
5
5
|
"@grid/row-segmenting": "1.0.33",
|
@@ -14,7 +14,7 @@
|
|
14
14
|
"tr-grid-column-resizing": "1.0.29",
|
15
15
|
"tr-grid-column-selection": "1.0.33",
|
16
16
|
"tr-grid-column-stack": "1.0.76",
|
17
|
-
"tr-grid-conditional-coloring": "1.0.
|
17
|
+
"tr-grid-conditional-coloring": "1.0.71",
|
18
18
|
"tr-grid-content-wrap": "1.0.20",
|
19
19
|
"tr-grid-contextmenu": "1.0.44",
|
20
20
|
"tr-grid-filter-input": "0.9.42",
|
@@ -24,7 +24,7 @@
|
|
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.36",
|
27
|
-
"tr-grid-row-filtering": "1.0.
|
27
|
+
"tr-grid-row-filtering": "1.0.81",
|
28
28
|
"tr-grid-row-grouping": "1.0.88",
|
29
29
|
"tr-grid-row-selection": "1.0.32",
|
30
30
|
"tr-grid-rowcoloring": "1.0.25",
|
package/package.json
CHANGED