@refinitiv-ui/efx-grid 6.0.106 → 6.0.108
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/core/dist/core.js +162 -59
- package/lib/core/dist/core.min.js +1 -1
- package/lib/core/es6/grid/Core.d.ts +2 -2
- package/lib/core/es6/grid/Core.js +156 -55
- package/lib/core/es6/grid/ILayoutGrid.js +1 -1
- package/lib/core/es6/grid/components/Scrollbar.js +5 -3
- package/lib/filter-dialog/lib/filter-dialog.d.ts +2 -0
- package/lib/filter-dialog/lib/filter-dialog.js +23 -1
- package/lib/filter-dialog/themes/base-checkbox.less +1 -2
- package/lib/filter-dialog/themes/elemental/dark/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/elemental/dark/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/elemental/light/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/elemental/light/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/halo/dark/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/halo/dark/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/halo/light/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/halo/light/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/solar/charcoal/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/solar/charcoal/es5/all-elements.js +1 -1
- package/lib/filter-dialog/themes/solar/pearl/checkbox-list.js +1 -1
- package/lib/filter-dialog/themes/solar/pearl/es5/all-elements.js +1 -1
- package/lib/formatters/es6/index.d.ts +22 -1
- package/lib/formatters/es6/index.js +22 -1
- package/lib/grid/index.js +1 -1
- package/lib/rt-grid/dist/rt-grid.js +13 -12
- package/lib/rt-grid/dist/rt-grid.min.js +1 -1
- package/lib/rt-grid/es6/FieldDefinition.js +1 -1
- package/lib/tr-grid-column-grouping/es6/ColumnGrouping.js +1452 -1304
- package/lib/tr-grid-in-cell-editing/es6/InCellEditing.js +128 -89
- package/lib/tr-grid-row-filtering/es6/RowFiltering.d.ts +2 -0
- package/lib/tr-grid-row-filtering/es6/RowFiltering.js +14 -0
- package/lib/tr-grid-util/es6/GroupDefinitions.js +3 -3
- package/lib/types/es6/Core/grid/Core.d.ts +2 -2
- package/lib/types/es6/RowFiltering.d.ts +2 -0
- package/lib/types/es6/SimpleTickerFormatter.d.ts +0 -2
- package/lib/versions.json +6 -6
- package/package.json +1 -1
package/lib/core/dist/core.js
CHANGED
@@ -3783,7 +3783,7 @@ ILayoutGrid.prototype.setRowOffset = function (index) { };
|
|
3783
3783
|
ILayoutGrid.prototype.updateLayout = function () { };
|
3784
3784
|
|
3785
3785
|
/** This will make the specified cell horizontally span to fit entire row regardless of position of the cell -- cell will shift to the left most of the section.<br>
|
3786
|
-
* If
|
3786
|
+
* If onlyToTheRight is true, the cell will not extend to the left most position<br>
|
3787
3787
|
* This is different from cell colSpan, which the cell remain in the same position. tr-stretched class will also be added to the cell
|
3788
3788
|
* @public
|
3789
3789
|
* @param {number|Cell} cellRef Either column index or cell reference is acceptable
|
@@ -6391,7 +6391,6 @@ Scrollbar.updateTrackThickness = function () {
|
|
6391
6391
|
|
6392
6392
|
/** @override */
|
6393
6393
|
Scrollbar.prototype.dispose = function () {
|
6394
|
-
|
6395
6394
|
let sbListeners = Scrollbar._listeners;
|
6396
6395
|
if(sbListeners) {
|
6397
6396
|
let idx = sbListeners.indexOf(this._onThicknessChanged);
|
@@ -6855,7 +6854,7 @@ Scrollbar.prototype._clearAllPanes = function() {
|
|
6855
6854
|
*/
|
6856
6855
|
Scrollbar.prototype.disableKeyboardInput = function (opt_disabled) {
|
6857
6856
|
if(opt_disabled === false) {
|
6858
|
-
this._element.setAttribute("tabindex", "
|
6857
|
+
this._element.setAttribute("tabindex", "-1"); // tabindex makes the element focusable. The negative value exclude it from tab key navigation
|
6859
6858
|
this._element.addEventListener("keydown", this._onKeyDown, false);
|
6860
6859
|
} else {
|
6861
6860
|
this._element.removeAttribute("tabindex");
|
@@ -7050,8 +7049,11 @@ Scrollbar.prototype._onStartFading = function (e) {
|
|
7050
7049
|
* @param {Object} e
|
7051
7050
|
*/
|
7052
7051
|
Scrollbar.prototype._onTrackScroll = function (e) {
|
7053
|
-
|
7052
|
+
if(!this._element) {
|
7053
|
+
return; // Element has been disposed
|
7054
|
+
}
|
7054
7055
|
|
7056
|
+
let tScrollVal = (this._vertical) ? e.target["scrollTop"] : e.target["scrollLeft"];
|
7055
7057
|
let pScrollVal = this._convertTrackToPane(tScrollVal);
|
7056
7058
|
|
7057
7059
|
pScrollVal = this._calcProperScrollValue(pScrollVal);
|
@@ -25140,6 +25142,9 @@ VirtualizedLayoutGrid._proto = VirtualizedLayoutGrid.prototype;
|
|
25140
25142
|
/** @event Core#preForcedUpdate
|
25141
25143
|
* @ignore
|
25142
25144
|
*/
|
25145
|
+
/** @event Core#tabNavigation
|
25146
|
+
* @ignore
|
25147
|
+
*/
|
25143
25148
|
//#endregion Events
|
25144
25149
|
|
25145
25150
|
/** @private
|
@@ -25150,6 +25155,44 @@ VirtualizedLayoutGrid._proto = VirtualizedLayoutGrid.prototype;
|
|
25150
25155
|
let ascNumberSorter = function (a, b) {
|
25151
25156
|
return a - b;
|
25152
25157
|
};
|
25158
|
+
/** @private
|
25159
|
+
* @return {!Element}
|
25160
|
+
*/
|
25161
|
+
let _createHiddenInput = function () {
|
25162
|
+
let hiddenInput = document.createElement("input");
|
25163
|
+
let styleObj = hiddenInput.style;
|
25164
|
+
styleObj.position = "absolute";
|
25165
|
+
styleObj.width = styleObj.height = styleObj.padding = styleObj.border = "0";
|
25166
|
+
hiddenInput.value = "0";
|
25167
|
+
return hiddenInput;
|
25168
|
+
};
|
25169
|
+
/** @private
|
25170
|
+
* @param {Object} e
|
25171
|
+
* @return {boolean}
|
25172
|
+
*/
|
25173
|
+
let _isTabCommand = function (e) {
|
25174
|
+
if(e.keyCode === 9) {
|
25175
|
+
return !e.ctrlKey && !e.altKey && !e.metaKey;
|
25176
|
+
}
|
25177
|
+
return false;
|
25178
|
+
};
|
25179
|
+
/** @private
|
25180
|
+
* @param {Element} elem
|
25181
|
+
* @return {Element}
|
25182
|
+
*/
|
25183
|
+
let _getActiveElement = function (elem) {
|
25184
|
+
if(elem) {
|
25185
|
+
if(elem.getRootNode) {
|
25186
|
+
let rootNode = elem.getRootNode(); // Get uncomposed root node
|
25187
|
+
if(rootNode && rootNode !== elem) { // The root node could be the element itself, if it is not attached to the DOM tree
|
25188
|
+
return rootNode.activeElement || null;
|
25189
|
+
}
|
25190
|
+
} else { // Older browser does not support getRootNode
|
25191
|
+
return document.activeElement;
|
25192
|
+
}
|
25193
|
+
}
|
25194
|
+
return null;
|
25195
|
+
};
|
25153
25196
|
|
25154
25197
|
/** @constructor
|
25155
25198
|
* @param {Element=} opt_initializer this can be either element id (string) or DOM element.
|
@@ -25173,6 +25216,8 @@ let Core_Core = function (opt_initializer) {
|
|
25173
25216
|
_t._onMouseMove = _t._onMouseMove.bind(_t);
|
25174
25217
|
_t._onRowHightlighted = _t._onRowHightlighted.bind(_t);
|
25175
25218
|
_t._onGridClicked = _t._onGridClicked.bind(_t);
|
25219
|
+
_t._onKeyDown = _t._onKeyDown.bind(_t);
|
25220
|
+
_t._onKeyUp = _t._onKeyUp.bind(_t);
|
25176
25221
|
|
25177
25222
|
_t._onWindowResize = _t._onWindowResize.bind(_t);
|
25178
25223
|
_t._onSectionDataChanged = _t._onSectionDataChanged.bind(_t);
|
@@ -25193,7 +25238,7 @@ let Core_Core = function (opt_initializer) {
|
|
25193
25238
|
_t._onColInViewChanged = _t._onColInViewChanged.bind(_t);
|
25194
25239
|
|
25195
25240
|
_t._updateVScrollbar = _t._updateVScrollbar.bind(_t);
|
25196
|
-
_t.
|
25241
|
+
_t.updateColumnBounds = _t.updateColumnBounds.bind(_t);
|
25197
25242
|
_t._dispatchColumnPositionChanged = _t._dispatchColumnPositionChanged.bind(_t);
|
25198
25243
|
_t._dispatchRowPositionChanged = _t._dispatchRowPositionChanged.bind(_t);
|
25199
25244
|
_t._requestScrollbarUpdate = _t._requestScrollbarUpdate.bind(_t);
|
@@ -25234,7 +25279,7 @@ let Core_Core = function (opt_initializer) {
|
|
25234
25279
|
// Initialize vertical scrollbar
|
25235
25280
|
_t._vscrollbar = new components_VScrollbar();
|
25236
25281
|
_t._vscrollbar.disable();
|
25237
|
-
_t._vscrollbar.setParent(
|
25282
|
+
_t._vscrollbar.setParent(_t.getParent() || _t.getElement());
|
25238
25283
|
|
25239
25284
|
_t._vscrollbar.listen("scroll", _t._onVScroll);
|
25240
25285
|
_t._vscrollbar.listen("layoutChanged", _t._onVScroll);
|
@@ -25247,25 +25292,28 @@ let Core_Core = function (opt_initializer) {
|
|
25247
25292
|
// Initialize horizontal scrollbars
|
25248
25293
|
_t._hscrollbar = new components_HScrollbar();
|
25249
25294
|
_t._hscrollbar.disable();
|
25250
|
-
_t._hscrollbar.setParent(
|
25295
|
+
_t._hscrollbar.setParent(_t.getParent() || _t.getElement());
|
25251
25296
|
|
25252
|
-
_t._hscrollbar.listen("scroll",
|
25253
|
-
_t._hscrollbar.listen("layoutChanged",
|
25254
|
-
_t._hscrollbar.listen("activated",
|
25255
|
-
_t._hscrollbar.listen("deactivated",
|
25297
|
+
_t._hscrollbar.listen("scroll", _t._onHScroll);
|
25298
|
+
_t._hscrollbar.listen("layoutChanged", _t._onHScroll);
|
25299
|
+
_t._hscrollbar.listen("activated", _t.updateLayout);
|
25300
|
+
_t._hscrollbar.listen("deactivated", _t.updateLayout);
|
25256
25301
|
|
25257
25302
|
// cross-reference scrollbars
|
25258
25303
|
_t._hscrollbar.setOtherScrollbar(_t._vscrollbar);
|
25259
25304
|
_t._vscrollbar.setOtherScrollbar(_t._hscrollbar);
|
25260
25305
|
|
25306
|
+
|
25307
|
+
_t._element.addEventListener("keydown", _t._onKeyDown);
|
25308
|
+
_t._element.addEventListener("keyup", _t._onKeyUp);
|
25261
25309
|
if (util.isMobile || util.isTouchDevice) {
|
25262
|
-
_t._element.addEventListener("touchmove",
|
25310
|
+
_t._element.addEventListener("touchmove", _t._onMouseMove, false);
|
25263
25311
|
} else {
|
25264
|
-
_t._element.addEventListener("mousemove",
|
25312
|
+
_t._element.addEventListener("mousemove", _t._onMouseMove, false);
|
25265
25313
|
}
|
25266
25314
|
|
25267
25315
|
if(util.isSafari){
|
25268
|
-
_t._element.addEventListener("click",
|
25316
|
+
_t._element.addEventListener("click", _t._onGridClicked);
|
25269
25317
|
}
|
25270
25318
|
|
25271
25319
|
window.addEventListener("resize", _t._onWindowResize, false); // Should be unlistened after destroyed
|
@@ -25273,10 +25321,17 @@ let Core_Core = function (opt_initializer) {
|
|
25273
25321
|
_t._colVirtualizer.listen("indexChanged", _t._onColInViewChanged);
|
25274
25322
|
_t._rowHeightConflator = new util_Conflator(_t._onRowHeightChanged, 50);
|
25275
25323
|
_t._vScrollbarConflator = new util_Conflator(_t._updateVScrollbar, 200);
|
25276
|
-
_t._columnBoundConflator = new util_Conflator(_t.
|
25324
|
+
_t._columnBoundConflator = new util_Conflator(_t.updateColumnBounds, 10);
|
25277
25325
|
_t._columnPositionConflator = new util_Conflator(_t._dispatchColumnPositionChanged, 10);
|
25278
25326
|
_t._rowPositionConflator = new util_Conflator(_t._dispatchRowPositionChanged, 10);
|
25279
25327
|
|
25328
|
+
_t._firstHiddenInput = _createHiddenInput();
|
25329
|
+
_t._firstHiddenInput.className = "first-input";
|
25330
|
+
_t._lastHiddenInput = _createHiddenInput();
|
25331
|
+
_t._lastHiddenInput.className = "last-input";
|
25332
|
+
_t._element.insertBefore(_t._firstHiddenInput, _t._element.firstChild);
|
25333
|
+
_t._element.appendChild(_t._lastHiddenInput);
|
25334
|
+
|
25280
25335
|
// Initialize events for external users
|
25281
25336
|
_t._addEvents(
|
25282
25337
|
"sectionAdded",
|
@@ -25305,7 +25360,8 @@ let Core_Core = function (opt_initializer) {
|
|
25305
25360
|
"beforeColumnBoundUpdate",
|
25306
25361
|
"beforeBatchOperation",
|
25307
25362
|
"afterBatchOperation",
|
25308
|
-
"pinningChanged"
|
25363
|
+
"pinningChanged",
|
25364
|
+
"tabNavigation"
|
25309
25365
|
);
|
25310
25366
|
|
25311
25367
|
// For debugging in advanced optimization mode
|
@@ -25314,9 +25370,9 @@ let Core_Core = function (opt_initializer) {
|
|
25314
25370
|
map = {};
|
25315
25371
|
Core_Core["map"] = map;
|
25316
25372
|
}
|
25317
|
-
|
25318
|
-
|
25319
|
-
let id =
|
25373
|
+
|
25374
|
+
_t._element["_control"] = _t;
|
25375
|
+
let id = _t._element.id || _t._element.name;
|
25320
25376
|
if(!id || map[id]) {
|
25321
25377
|
id = "_grid" + Core_Core._runningGridId;
|
25322
25378
|
}
|
@@ -25324,17 +25380,6 @@ let Core_Core = function (opt_initializer) {
|
|
25324
25380
|
map[id] = _t;
|
25325
25381
|
Core_Core._runningGridId++;
|
25326
25382
|
|
25327
|
-
// init hiddenInput for retrieve copy and cut event
|
25328
|
-
let hiddenInput = document.createElement("input");
|
25329
|
-
hiddenInput.style.position = "absolute";
|
25330
|
-
hiddenInput.style.width = "0";
|
25331
|
-
hiddenInput.style.height = "0";
|
25332
|
-
hiddenInput.style.padding = "0";
|
25333
|
-
hiddenInput.style.border = "0";
|
25334
|
-
hiddenInput.value = "0";
|
25335
|
-
_t._hiddenInput = hiddenInput;
|
25336
|
-
elem.insertBefore(hiddenInput, elem.firstChild);
|
25337
|
-
|
25338
25383
|
// Ensure all affected plugins are loaded prior zoom plugin
|
25339
25384
|
// use as entity to trigger updateLayout once zoom is changed
|
25340
25385
|
Object.defineProperty(_t, "zoomFactor", {
|
@@ -25614,11 +25659,16 @@ Core_Core.prototype._rowRefreshTimer = 0;
|
|
25614
25659
|
* @private
|
25615
25660
|
*/
|
25616
25661
|
Core_Core.prototype._layoutUpdating = false;
|
25617
|
-
/** A
|
25618
|
-
* @type {Element}
|
25662
|
+
/** A hidden input that allows grid to receive keyboard input and focus
|
25663
|
+
* @type {!Element}
|
25619
25664
|
* @private
|
25620
25665
|
*/
|
25621
|
-
Core_Core.prototype.
|
25666
|
+
Core_Core.prototype._firstHiddenInput;
|
25667
|
+
/** A hidden input that allows grid to receive keyboard input and focus
|
25668
|
+
* @type {!Element}
|
25669
|
+
* @private
|
25670
|
+
*/
|
25671
|
+
Core_Core.prototype._lastHiddenInput;
|
25622
25672
|
/** @type {number}
|
25623
25673
|
* @private
|
25624
25674
|
*/
|
@@ -25662,7 +25712,7 @@ Core_Core.prototype._hasPendingRowChange = false;
|
|
25662
25712
|
* @return {string}
|
25663
25713
|
*/
|
25664
25714
|
Core_Core.getVersion = function () {
|
25665
|
-
return "5.1.
|
25715
|
+
return "5.1.110";
|
25666
25716
|
};
|
25667
25717
|
/** {@link ElementWrapper#dispose}
|
25668
25718
|
* @override
|
@@ -25723,11 +25773,12 @@ Core_Core.prototype.dispose = function () {
|
|
25723
25773
|
|
25724
25774
|
// Clean Top node
|
25725
25775
|
let elem = this._element;
|
25726
|
-
if (elem
|
25776
|
+
if (elem) {
|
25727
25777
|
if (elem["_control"]) {
|
25728
25778
|
delete elem["_control"];
|
25729
25779
|
}
|
25730
|
-
elem.removeChild(this.
|
25780
|
+
elem.removeChild(this._firstHiddenInput);
|
25781
|
+
elem.removeChild(this._lastHiddenInput);
|
25731
25782
|
}
|
25732
25783
|
this._dispose();
|
25733
25784
|
|
@@ -26892,7 +26943,7 @@ Core_Core.prototype._moveColumn = function (fromCol, destCol) {
|
|
26892
26943
|
this._colVirtualizer.update();
|
26893
26944
|
}
|
26894
26945
|
}
|
26895
|
-
this.
|
26946
|
+
this.updateColumnBounds();
|
26896
26947
|
this._updateColumnSeparators();
|
26897
26948
|
return true;
|
26898
26949
|
};
|
@@ -29125,15 +29176,14 @@ Core_Core.prototype.reserveRightSpace = function (size) {
|
|
29125
29176
|
return false;
|
29126
29177
|
};
|
29127
29178
|
|
29128
|
-
/** Get hidden input
|
29129
|
-
* this input for make grid can copy <br>
|
29130
|
-
* normal user should not touch it <br>
|
29131
|
-
* but sometime grid extension will have to use this element
|
29179
|
+
/** Get the hidden input. This input allows grid to receive keyboard input
|
29132
29180
|
* @public
|
29133
|
-
* @
|
29181
|
+
* @ignore
|
29182
|
+
* @param {boolean} firstInput
|
29183
|
+
* @return {!Element}
|
29134
29184
|
*/
|
29135
|
-
Core_Core.prototype.getHiddenInput = function () {
|
29136
|
-
return this.
|
29185
|
+
Core_Core.prototype.getHiddenInput = function (firstInput) {
|
29186
|
+
return firstInput ? this._firstHiddenInput : this._lastHiddenInput;
|
29137
29187
|
};
|
29138
29188
|
|
29139
29189
|
/** Focus grid element without bringing grid into window's view. This is useful when grid is very wide or tall, since window can be scrolled to focused element by default in some browsers.
|
@@ -29142,8 +29192,8 @@ Core_Core.prototype.getHiddenInput = function () {
|
|
29142
29192
|
* @see {@link http://help.dottoro.com/ljqmdirr.php}
|
29143
29193
|
*/
|
29144
29194
|
Core_Core.prototype.focus = function () {
|
29145
|
-
let elem = this.
|
29146
|
-
let activeElem =
|
29195
|
+
let elem = this._lastHiddenInput;
|
29196
|
+
let activeElem = _getActiveElement(elem);
|
29147
29197
|
if(elem && elem !== activeElem) {
|
29148
29198
|
let x = window.pageXOffset;
|
29149
29199
|
let y = window.pageYOffset;
|
@@ -29274,7 +29324,7 @@ Core_Core.prototype.selectColumn = function (colIndex, selected) {
|
|
29274
29324
|
for (let i = this._settings.length; --i >= 0; ) {
|
29275
29325
|
this._settings[i].getSection().selectColumn(colIndex, selected);
|
29276
29326
|
}
|
29277
|
-
this.
|
29327
|
+
this.updateColumnBounds();
|
29278
29328
|
};
|
29279
29329
|
/** @public
|
29280
29330
|
* @param {number} colIndex
|
@@ -29288,9 +29338,9 @@ Core_Core.prototype.isSelectedColumn = function (colIndex) {
|
|
29288
29338
|
return false;
|
29289
29339
|
};
|
29290
29340
|
|
29291
|
-
/** @
|
29341
|
+
/** @public
|
29292
29342
|
*/
|
29293
|
-
Core_Core.prototype.
|
29343
|
+
Core_Core.prototype.updateColumnBounds = function () {
|
29294
29344
|
if(this._columnBoundConflator.conflate()) {
|
29295
29345
|
return;
|
29296
29346
|
}
|
@@ -29777,14 +29827,14 @@ Core_Core.prototype._newSection = function (opt_type, sectionName) {
|
|
29777
29827
|
Core_Core.prototype._putToLast = function(section) {
|
29778
29828
|
let sectionCount = this._settings.length;
|
29779
29829
|
if (sectionCount === 0) {
|
29780
|
-
section.
|
29830
|
+
section.insertBefore(this._lastHiddenInput);
|
29781
29831
|
} else {
|
29782
29832
|
let lastGrid = this.getLastSection();
|
29783
29833
|
let nextSibling = lastGrid.getElement().nextSibling;
|
29784
29834
|
if (nextSibling !== null) {
|
29785
29835
|
section.insertBefore(nextSibling);
|
29786
29836
|
} else {
|
29787
|
-
section.
|
29837
|
+
section.insertBefore(this._lastHiddenInput);
|
29788
29838
|
}
|
29789
29839
|
}
|
29790
29840
|
};
|
@@ -30170,7 +30220,7 @@ Core_Core.prototype._onVScroll = function (e) {
|
|
30170
30220
|
Core_Core.prototype._onHScroll = function (e) {
|
30171
30221
|
let scrollVal = this._hscrollbar.getScrollLeft();
|
30172
30222
|
this._colVirtualizer.setViewOffset(scrollVal); // Trigger virtualization event
|
30173
|
-
this.
|
30223
|
+
this.updateColumnBounds();
|
30174
30224
|
this._dispatchColumnPositionChanged();
|
30175
30225
|
};
|
30176
30226
|
/** @private
|
@@ -30469,14 +30519,66 @@ Core_Core.prototype._onMouseMove = function () {
|
|
30469
30519
|
};
|
30470
30520
|
/** @private */
|
30471
30521
|
Core_Core.prototype._onGridClicked = function () {
|
30472
|
-
// research for dragging
|
30473
30522
|
let selection = window.getSelection();
|
30474
|
-
if(selection.toString()){
|
30523
|
+
if(!selection.toString()){
|
30524
|
+
if(!this._element.contains(_getActiveElement(this._element))){
|
30525
|
+
this.focus();
|
30526
|
+
}
|
30527
|
+
}
|
30528
|
+
};
|
30529
|
+
|
30530
|
+
/** @private
|
30531
|
+
* @param {Object} e
|
30532
|
+
*/
|
30533
|
+
Core_Core.prototype._onKeyDown = function (e) {
|
30534
|
+
if(!_isTabCommand(e)) {
|
30475
30535
|
return;
|
30476
30536
|
}
|
30477
|
-
let
|
30478
|
-
|
30479
|
-
|
30537
|
+
let activeElement = _getActiveElement(this._element);
|
30538
|
+
let onTheEdge = false;
|
30539
|
+
if(this._firstHiddenInput === activeElement) {
|
30540
|
+
onTheEdge = -1;
|
30541
|
+
} else if(this._lastHiddenInput === activeElement) {
|
30542
|
+
onTheEdge = 1;
|
30543
|
+
}
|
30544
|
+
|
30545
|
+
this._dispatch("tabNavigation", {
|
30546
|
+
"activeElement": activeElement,
|
30547
|
+
"firstHiddenInput": this._firstHiddenInput,
|
30548
|
+
"lastHiddenInput": this._lastHiddenInput,
|
30549
|
+
"onTheEdge": onTheEdge,
|
30550
|
+
"shiftKey": e.shiftKey,
|
30551
|
+
"event": e
|
30552
|
+
});
|
30553
|
+
|
30554
|
+
if(onTheEdge && !e.defaultPrevented) {
|
30555
|
+
if(onTheEdge > 0 && e.shiftKey) {
|
30556
|
+
this._firstHiddenInput.focus(); // jump to the top
|
30557
|
+
e.preventDefault();
|
30558
|
+
} else if(onTheEdge < 0 && !e.shiftKey) {
|
30559
|
+
this._lastHiddenInput.focus(); // skip to the end
|
30560
|
+
e.preventDefault();
|
30561
|
+
}
|
30562
|
+
}
|
30563
|
+
};
|
30564
|
+
/** @private
|
30565
|
+
* @param {Object} e
|
30566
|
+
*/
|
30567
|
+
Core_Core.prototype._onKeyUp = function (e) {
|
30568
|
+
if(!_isTabCommand(e)) {
|
30569
|
+
return;
|
30570
|
+
}
|
30571
|
+
var activeElem = _getActiveElement(this._element);
|
30572
|
+
if(e.shiftKey) {
|
30573
|
+
if(activeElem === this._lastHiddenInput) {
|
30574
|
+
this._firstHiddenInput.focus();
|
30575
|
+
e.preventDefault();
|
30576
|
+
}
|
30577
|
+
} else {
|
30578
|
+
if(activeElem === this._firstHiddenInput) {
|
30579
|
+
this._lastHiddenInput.focus();
|
30580
|
+
e.preventDefault();
|
30581
|
+
}
|
30480
30582
|
}
|
30481
30583
|
};
|
30482
30584
|
|
@@ -30659,6 +30761,7 @@ Core_Core.prototype._onSectionCountChanged = function (opt_suppressLayout) {
|
|
30659
30761
|
|
30660
30762
|
// Reinsert sections
|
30661
30763
|
this._vscrollbar.setScrollContent(this, this._getAllSections(), this._startVScrollbarIndex);
|
30764
|
+
this._element.appendChild(this._lastHiddenInput); // Ensure that the hidden input is always at the last position
|
30662
30765
|
|
30663
30766
|
if(!opt_suppressLayout) {
|
30664
30767
|
this._updateScrollbarHeight(true, true);
|
@@ -30676,7 +30779,7 @@ Core_Core.prototype._onColumnCountChanged = function () {
|
|
30676
30779
|
let pinnedLeft = this._countPinnedLeftColumns();
|
30677
30780
|
let pinnedRight = this._countPinnedRightColumns();
|
30678
30781
|
|
30679
|
-
this.
|
30782
|
+
this.updateColumnBounds();
|
30680
30783
|
this._updateColumnSeparators();
|
30681
30784
|
|
30682
30785
|
if (this._hScrollbarEnabled && pinnedLeft + pinnedRight < this.getColumnCount()) {
|
@@ -30972,7 +31075,7 @@ Core_Core.prototype._syncLayoutToColumns = function (from, to, opt_forceDispatch
|
|
30972
31075
|
// TODO: Check if "to" should be greater than or equal to first pinnied right index
|
30973
31076
|
let paneChanged = forceUpdate || (from < this.getHScrollStartIndex()) || (to > this.getFirstPinnedRightIndex());
|
30974
31077
|
this._updateScrollbarWidth(paneChanged, true /* contentChanged */);
|
30975
|
-
this.
|
31078
|
+
this.updateColumnBounds();
|
30976
31079
|
this._updateColumnSeparators();
|
30977
31080
|
this._dispatchColumnPositionChanged();
|
30978
31081
|
|