@openui5/sap.ui.table 1.93.3 → 1.96.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/.reuse/dep5 +6 -11
  2. package/THIRDPARTY.txt +10 -16
  3. package/package.json +3 -3
  4. package/src/sap/ui/table/.library +1 -1
  5. package/src/sap/ui/table/AnalyticalColumn.js +1 -1
  6. package/src/sap/ui/table/AnalyticalColumnMenu.js +1 -1
  7. package/src/sap/ui/table/AnalyticalTable.js +51 -12
  8. package/src/sap/ui/table/Column.js +29 -6
  9. package/src/sap/ui/table/ColumnMenu.js +3 -1
  10. package/src/sap/ui/table/CreationRow.js +1 -1
  11. package/src/sap/ui/table/Row.js +1 -1
  12. package/src/sap/ui/table/RowAction.js +1 -1
  13. package/src/sap/ui/table/RowActionItem.js +1 -1
  14. package/src/sap/ui/table/RowSettings.js +3 -2
  15. package/src/sap/ui/table/Table.js +79 -98
  16. package/src/sap/ui/table/TablePersoController.js +1 -1
  17. package/src/sap/ui/table/TableRenderer.js +9 -3
  18. package/src/sap/ui/table/TreeTable.js +27 -2
  19. package/src/sap/ui/table/extensions/Accessibility.js +45 -26
  20. package/src/sap/ui/table/extensions/AccessibilityRender.js +1 -1
  21. package/src/sap/ui/table/extensions/DragAndDrop.js +1 -1
  22. package/src/sap/ui/table/extensions/ExtensionBase.js +1 -1
  23. package/src/sap/ui/table/extensions/Keyboard.js +25 -45
  24. package/src/sap/ui/table/extensions/KeyboardDelegate.js +67 -46
  25. package/src/sap/ui/table/extensions/Pointer.js +1 -14
  26. package/src/sap/ui/table/extensions/Scrolling.js +133 -126
  27. package/src/sap/ui/table/extensions/ScrollingIOS.js +369 -0
  28. package/src/sap/ui/table/extensions/Synchronization.js +1 -1
  29. package/src/sap/ui/table/library.js +10 -10
  30. package/src/sap/ui/table/messagebundle_fr.properties +1 -1
  31. package/src/sap/ui/table/messagebundle_it.properties +3 -3
  32. package/src/sap/ui/table/plugins/BindingSelection.js +1 -1
  33. package/src/sap/ui/table/plugins/PluginBase.js +1 -1
  34. package/src/sap/ui/table/plugins/SelectionModelSelection.js +17 -28
  35. package/src/sap/ui/table/plugins/SelectionPlugin.js +1 -1
  36. package/src/sap/ui/table/plugins/V4Aggregation.js +9 -2
  37. package/src/sap/ui/table/rowmodes/AutoRowMode.js +16 -1
  38. package/src/sap/ui/table/rowmodes/FixedRowMode.js +16 -1
  39. package/src/sap/ui/table/rowmodes/InteractiveRowMode.js +23 -9
  40. package/src/sap/ui/table/rowmodes/RowMode.js +10 -28
  41. package/src/sap/ui/table/rowmodes/VariableRowMode.js +1 -1
  42. package/src/sap/ui/table/themes/base/Cell.less +1 -10
  43. package/src/sap/ui/table/themes/base/Grouping.less +4 -1
  44. package/src/sap/ui/table/themes/base/ScrollingIOS.less +26 -0
  45. package/src/sap/ui/table/themes/base/Table.less +1 -1
  46. package/src/sap/ui/table/themes/base/library.source.less +1 -0
  47. package/src/sap/ui/table/utils/TableUtils.js +25 -60
  48. package/src/sap/ui/table/utils/_BindingUtils.js +1 -1
  49. package/src/sap/ui/table/utils/_ColumnUtils.js +1 -1
  50. package/src/sap/ui/table/utils/_GroupingUtils.js +5 -1
  51. package/src/sap/ui/table/utils/_HookUtils.js +1 -1
  52. package/src/sap/ui/table/utils/_MenuUtils.js +1 -1
  53. package/ui5.yaml +4 -1
@@ -34,15 +34,13 @@ sap.ui.define([
34
34
  var oIN = oTable._getItemNavigation();
35
35
 
36
36
  if (oIN != null
37
- && !oTable._getKeyboardExtension()._isItemNavigationSuspended()
37
+ && !oTable._getKeyboardExtension().isItemNavigationSuspended()
38
38
  && !oEvent.isMarked("sapUiTableSkipItemNavigation")) {
39
39
 
40
40
  oIN["on" + oEvent.type](oEvent);
41
41
  }
42
42
  },
43
- onfocusin: function(oEvent) {
44
- ItemNavigationDelegate._forward(this, oEvent);
45
- },
43
+ onfocusin: function(oEvent) { ItemNavigationDelegate._forward(this, oEvent); },
46
44
  onsapfocusleave: function(oEvent) { ItemNavigationDelegate._forward(this, oEvent); },
47
45
  onmousedown: function(oEvent) { ItemNavigationDelegate._forward(this, oEvent); },
48
46
  onsapnext: function(oEvent) { ItemNavigationDelegate._forward(this, oEvent); },
@@ -56,7 +54,6 @@ sap.ui.define([
56
54
  onsapend: function(oEvent) { ItemNavigationDelegate._forward(this, oEvent); },
57
55
  onsapendmodifiers: function(oEvent) { ItemNavigationDelegate._forward(this, oEvent); },
58
56
  onsapkeyup: function(oEvent) { ItemNavigationDelegate._forward(this, oEvent); }
59
-
60
57
  };
61
58
 
62
59
  /*
@@ -95,16 +92,17 @@ sap.ui.define([
95
92
  if (bRenderedRows) {
96
93
  this.applyFocusInfo(this._oStoredFocusInfo);
97
94
  } else {
98
- this._getKeyboardExtension().initItemNavigation();
95
+ ExtensionHelper.initItemNavigation(this._getKeyboardExtension(), true);
99
96
  }
100
97
  }
98
+
101
99
  delete this._oStoredFocusInfo;
102
100
  },
103
101
  onfocusin: function(oEvent) {
104
102
  var oExtension = this._getKeyboardExtension();
105
103
 
106
104
  if (!oExtension._bIgnoreFocusIn) {
107
- oExtension.initItemNavigation();
105
+ ExtensionHelper.initItemNavigation(this._getKeyboardExtension());
108
106
  } else {
109
107
  oEvent.setMarked("sapUiTableIgnoreFocusIn");
110
108
  }
@@ -122,11 +120,17 @@ sap.ui.define([
122
120
  * Provides utility functions used this extension
123
121
  */
124
122
  var ExtensionHelper = {
123
+ initItemNavigation: function(oExtension, bSkipInitFocusedIndex) {
124
+ if (ExtensionHelper.isItemNavigationInvalid(oExtension)) {
125
+ ExtensionHelper._initItemNavigation(oExtension, bSkipInitFocusedIndex);
126
+ }
127
+ },
128
+
125
129
  /*
126
130
  * Initialize ItemNavigations (content and header) and transfer relevant dom elements.
127
131
  * TabIndexes are set by the ItemNavigation.
128
132
  */
129
- _initItemNavigation: function(oExtension) {
133
+ _initItemNavigation: function(oExtension, bSkipInitFocusedIndex) {
130
134
  var oTable = oExtension.getTable();
131
135
 
132
136
  if (!oTable) {
@@ -237,7 +241,10 @@ sap.ui.define([
237
241
  oExtension._itemNavigation.setColumns(iColumnCount);
238
242
  oExtension._itemNavigation.setRootDomRef($Table.find(".sapUiTableCnt").get(0));
239
243
  oExtension._itemNavigation.setItemDomRefs(aItemDomRefs);
240
- oExtension._itemNavigation.setFocusedIndex(ExtensionHelper.getInitialItemNavigationIndex(oExtension));
244
+
245
+ if (!bSkipInitFocusedIndex) {
246
+ oExtension._itemNavigation.setFocusedIndex(ExtensionHelper.getInitialItemNavigationIndex(oExtension));
247
+ }
241
248
 
242
249
  // revert invalidation flag
243
250
  oExtension._itemNavigationInvalidated = false;
@@ -260,7 +267,7 @@ sap.ui.define([
260
267
  * @class Extension for sap.ui.table.Table which handles keyboard related things.
261
268
  * @extends sap.ui.table.extensions.ExtensionBase
262
269
  * @author SAP SE
263
- * @version 1.93.3
270
+ * @version 1.96.2
264
271
  * @constructor
265
272
  * @private
266
273
  * @alias sap.ui.table.extensions.Keyboard
@@ -338,19 +345,13 @@ sap.ui.define([
338
345
 
339
346
  /**
340
347
  * Check whether item navigation should be reapplied from scratch and initializes it if needed.
341
- *
342
- * @public
343
348
  */
344
349
  KeyboardExtension.prototype.initItemNavigation = function() {
345
- if (ExtensionHelper.isItemNavigationInvalid(this)) {
346
- ExtensionHelper._initItemNavigation(this);
347
- }
350
+ ExtensionHelper.initItemNavigation(this);
348
351
  };
349
352
 
350
353
  /**
351
354
  * Invalidates the item navigation (forces a re-initialization with the next initItemNavigation call).
352
- *
353
- * @public
354
355
  */
355
356
  KeyboardExtension.prototype.invalidateItemNavigation = function() {
356
357
  this._itemNavigationInvalidated = true;
@@ -369,7 +370,6 @@ sap.ui.define([
369
370
  *
370
371
  * @param {boolean} bEnter If set to <code>true</code>, the table will try to enter the action mode, otherwise the table will leave the action
371
372
  * mode.
372
- * @public (Part of the API for Table control only!)
373
373
  */
374
374
  KeyboardExtension.prototype.setActionMode = function(bEnter) {
375
375
  if (!this._delegate) {
@@ -387,7 +387,6 @@ sap.ui.define([
387
387
  * Returns whether the table is in action mode.
388
388
  *
389
389
  * @returns {boolean} Returns <code>true</code>, if the table is in action mode.
390
- * @public
391
390
  */
392
391
  KeyboardExtension.prototype.isInActionMode = function() {
393
392
  return this._actionMode;
@@ -399,7 +398,6 @@ sap.ui.define([
399
398
  * e.g. see Table.setShowOverlay -> tue to CSS changes the focused element might be hidden which forces a focus change).
400
399
  *
401
400
  * @param {HTMLElement} oPreviousFocusRef The previously focused element.
402
- * @public
403
401
  */
404
402
  KeyboardExtension.prototype.updateNoDataAndOverlayFocus = function() {
405
403
  var oTable = this.getTable();
@@ -472,19 +470,15 @@ sap.ui.define([
472
470
 
473
471
  /**
474
472
  * Suspends the event handling of the item navigation.
475
- *
476
- * @protected
477
473
  */
478
- KeyboardExtension.prototype._suspendItemNavigation = function() {
474
+ KeyboardExtension.prototype.suspendItemNavigation = function() {
479
475
  this._itemNavigationSuspended = true;
480
476
  };
481
477
 
482
478
  /**
483
479
  * Resumes the event handling of the item navigation.
484
- *
485
- * @protected
486
480
  */
487
- KeyboardExtension.prototype._resumeItemNavigation = function() {
481
+ KeyboardExtension.prototype.resumeItemNavigation = function() {
488
482
  this._itemNavigationSuspended = false;
489
483
  };
490
484
 
@@ -492,9 +486,8 @@ sap.ui.define([
492
486
  * Returns whether the item navigation is suspended.
493
487
  *
494
488
  * @returns {boolean} Returns <code>true</code>, if the item navigation is suspended.
495
- * @protected
496
489
  */
497
- KeyboardExtension.prototype._isItemNavigationSuspended = function() {
490
+ KeyboardExtension.prototype.isItemNavigationSuspended = function() {
498
491
  return this._itemNavigationSuspended;
499
492
  };
500
493
 
@@ -502,9 +495,8 @@ sap.ui.define([
502
495
  * Returns the combined info about the last focused data cell (based on the item navigation).
503
496
  *
504
497
  * @returns {sap.ui.table.utils.TableUtils.FocusedItemInfo} The cell info of the last focused cell.
505
- * @protected
506
498
  */
507
- KeyboardExtension.prototype._getLastFocusedCellInfo = function() {
499
+ KeyboardExtension.prototype.getLastFocusedCellInfo = function() {
508
500
  var iHeader = TableUtils.getHeaderRowCount(this.getTable());
509
501
  if (!this._oLastFocusedCellInfo || this._oLastFocusedCellInfo.header != iHeader) {
510
502
  var oInfo = TableUtils.getFocusedItemInfo(this.getTable());
@@ -526,11 +518,10 @@ sap.ui.define([
526
518
  * Sets the focus to the specified element and marks the resulting focus event to be ignored.
527
519
  *
528
520
  * @param {jQuery|HTMLElement} oElement The element to be focused.
529
- * @protected
530
521
  */
531
- KeyboardExtension.prototype._setSilentFocus = function(oElement) {
522
+ KeyboardExtension.prototype.setSilentFocus = function(oElement) {
532
523
  this._bIgnoreFocusIn = true;
533
- this._setFocus(oElement);
524
+ this.setFocus(oElement);
534
525
  this._bIgnoreFocusIn = false;
535
526
  };
536
527
 
@@ -538,9 +529,8 @@ sap.ui.define([
538
529
  * Sets the focus to the specified element.
539
530
  *
540
531
  * @param {jQuery|HTMLElement} oElement The element to be focused.
541
- * @protected
542
532
  */
543
- KeyboardExtension.prototype._setFocus = function(oElement) {
533
+ KeyboardExtension.prototype.setFocus = function(oElement) {
544
534
  if (!oElement) {
545
535
  return;
546
536
  }
@@ -568,16 +558,6 @@ sap.ui.define([
568
558
  oElement.focus();
569
559
  };
570
560
 
571
- /*
572
- * Returns the type of the related table.
573
- *
574
- * @returns {sap.ui.table.extensions.ExtensionBase.TABLETYPES} The type of the table.
575
- * @protected
576
- */
577
- KeyboardExtension.prototype._getTableType = function() {
578
- return this._type;
579
- };
580
-
581
561
  return KeyboardExtension;
582
562
  });
583
563
 
@@ -45,6 +45,18 @@ sap.ui.define([
45
45
  oEvent.setMarked("sapUiTableSkipItemNavigation", bPrevent !== false);
46
46
  }
47
47
 
48
+ /**
49
+ * Prevents the event default and stops propagation if the event target is a table cell.
50
+ *
51
+ * @param {jQuery.Event} oEvent The event object.
52
+ */
53
+ function handleNavigationEvent(oEvent) {
54
+ if (TableUtils.getCellInfo(oEvent.target).isOfType(CellType.ANY)) {
55
+ oEvent.preventDefault();
56
+ oEvent.stopPropagation();
57
+ }
58
+ }
59
+
48
60
  /**
49
61
  * New Delegate for keyboard events of sap.ui.table.Table controls.
50
62
  *
@@ -52,7 +64,7 @@ sap.ui.define([
52
64
  *
53
65
  * @extends sap.ui.base.Object
54
66
  * @author SAP SE
55
- * @version 1.93.3
67
+ * @version 1.96.2
56
68
  * @constructor
57
69
  * @private
58
70
  * @alias sap.ui.table.extensions.KeyboardDelegate
@@ -136,7 +148,7 @@ sap.ui.define([
136
148
  var bScrolled = scrollDown(oTable, oEvent);
137
149
 
138
150
  if (bScrolled) {
139
- oEvent.preventDefault(); // Prevent scrolling the page.
151
+ oEvent.preventDefault(); // Prevent scrolling the page in action mode navigation.
140
152
  return;
141
153
  }
142
154
  }
@@ -158,7 +170,7 @@ sap.ui.define([
158
170
  }
159
171
 
160
172
  focusCell(oTable, oCellInfo.type, oCellInfo.rowIndex + 1, oCellInfo.columnIndex, bActionModeNavigation);
161
- oEvent.preventDefault(); // Prevent positioning the cursor. The text should be selected instead.
173
+ oEvent.preventDefault(); // Prevent positioning the cursor in action mode navigation. The text should be selected instead.
162
174
  }
163
175
 
164
176
  /**
@@ -194,7 +206,7 @@ sap.ui.define([
194
206
  var bScrolled = scrollUp(oTable, oEvent);
195
207
 
196
208
  if (bScrolled) {
197
- oEvent.preventDefault(); // Prevent scrolling the page.
209
+ oEvent.preventDefault(); // Prevent scrolling the page in action mode navigation.
198
210
  return;
199
211
  }
200
212
  }
@@ -214,7 +226,7 @@ sap.ui.define([
214
226
  }
215
227
 
216
228
  focusCell(oTable, oCellInfo.type, oCellInfo.rowIndex - 1, oCellInfo.columnIndex, bActionModeNavigation);
217
- oEvent.preventDefault(); // Prevent positioning the cursor. The text should be selected instead.
229
+ oEvent.preventDefault(); // Prevent positioning the cursor in action mode navigation. The text should be selected instead.
218
230
  }
219
231
 
220
232
  function _canNavigateUpOrDown(oTable, oEvent) {
@@ -285,7 +297,7 @@ sap.ui.define([
285
297
  var bAllowSapFocusLeave = bActionMode && oCellInfo.isOfType(CellType.DATACELL);
286
298
 
287
299
  if (bAllowSapFocusLeave) {
288
- oTable._getKeyboardExtension()._setSilentFocus(oTable.getDomRef("focusDummy"));
300
+ oTable._getKeyboardExtension().setSilentFocus(oTable.getDomRef("focusDummy"));
289
301
  setTimeout(function() {
290
302
  oTable._getScrollExtension().scrollVertically(bDown === true, bPage);
291
303
  }, 0);
@@ -385,7 +397,7 @@ sap.ui.define([
385
397
  */
386
398
  function restoreFocusOnLastFocusedDataCell(oTable, oEvent) {
387
399
  var oCellInfo = TableUtils.getFocusedItemInfo(oTable);
388
- var oLastInfo = oTable._getKeyboardExtension()._getLastFocusedCellInfo();
400
+ var oLastInfo = oTable._getKeyboardExtension().getLastFocusedCellInfo();
389
401
  TableUtils.focusItem(oTable, oCellInfo.cellInRow + (oCellInfo.columnCount * oLastInfo.row), oEvent);
390
402
  }
391
403
 
@@ -409,7 +421,7 @@ sap.ui.define([
409
421
  * @static
410
422
  */
411
423
  function forwardFocusToTabDummy(oTable, sTabDummyCSSClass) {
412
- oTable._getKeyboardExtension()._setSilentFocus(oTable.$().find("." + sTabDummyCSSClass));
424
+ oTable._getKeyboardExtension().setSilentFocus(oTable.$().find("." + sTabDummyCSSClass));
413
425
  }
414
426
 
415
427
  /**
@@ -582,7 +594,7 @@ sap.ui.define([
582
594
  TableUtils.deselectElementText(document.activeElement);
583
595
 
584
596
  if (bSilentFocus) {
585
- oTable._getKeyboardExtension()._setSilentFocus(oElement);
597
+ oTable._getKeyboardExtension().setSilentFocus(oElement);
586
598
  } else {
587
599
  oElement.focus();
588
600
  }
@@ -612,7 +624,7 @@ sap.ui.define([
612
624
  var oCell;
613
625
 
614
626
  if (iCellType === CellType.ROWHEADER) {
615
- oTable._getKeyboardExtension()._setFocus(oTable.getDomRef("rowsel" + iRowIndex));
627
+ oTable._getKeyboardExtension().setFocus(oTable.getDomRef("rowsel" + iRowIndex));
616
628
  return;
617
629
  } else if (iCellType === CellType.ROWACTION) {
618
630
  oCell = oTable.getDomRef("rowact" + iRowIndex);
@@ -641,6 +653,7 @@ sap.ui.define([
641
653
  if (bAllowActionMode) {
642
654
  oTable._getKeyboardExtension()._bStayInActionMode = true;
643
655
  }
656
+
644
657
  oCell.focus();
645
658
  }
646
659
 
@@ -910,13 +923,13 @@ sap.ui.define([
910
923
 
911
924
  if ($InteractiveElements) {
912
925
  // Target is a data cell with interactive elements inside. Focus the first interactive element in the data cell.
913
- oKeyboardExtension._suspendItemNavigation();
926
+ oKeyboardExtension.suspendItemNavigation();
914
927
  oActiveElement.tabIndex = -1;
915
928
  KeyboardDelegate._focusElement(this, $InteractiveElements[0], true);
916
929
  return true;
917
930
  } else if ($Cell) {
918
931
  // Target is an interactive element inside a data cell.
919
- this._getKeyboardExtension()._suspendItemNavigation();
932
+ this._getKeyboardExtension().suspendItemNavigation();
920
933
  return true;
921
934
  }
922
935
 
@@ -936,7 +949,7 @@ sap.ui.define([
936
949
  var oActiveElement = document.activeElement;
937
950
  var $Cell = TableUtils.getParentCell(this, oActiveElement);
938
951
 
939
- oKeyboardExtension._resumeItemNavigation();
952
+ oKeyboardExtension.resumeItemNavigation();
940
953
 
941
954
  if (bAdjustFocus) {
942
955
  if ($Cell) {
@@ -953,7 +966,7 @@ sap.ui.define([
953
966
  }
954
967
  }
955
968
 
956
- oKeyboardExtension._setSilentFocus(oActiveElement);
969
+ oKeyboardExtension.setSilentFocus(oActiveElement);
957
970
  }
958
971
  }
959
972
  };
@@ -974,7 +987,7 @@ sap.ui.define([
974
987
  if (!bNoData || bNoData && this.getColumnHeaderVisible()) {
975
988
  setFocusOnColumnHeaderOfLastFocusedDataCell(this, oEvent);
976
989
  } else {
977
- this._getKeyboardExtension()._setSilentFocus(this.$("noDataCnt"));
990
+ this._getKeyboardExtension().setSilentFocus(this.$("noDataCnt"));
978
991
  }
979
992
 
980
993
  } else if ($Target.hasClass("sapUiTableCtrlAfter")) {
@@ -1257,7 +1270,7 @@ sap.ui.define([
1257
1270
  forwardFocusToTabDummy(this, "sapUiTableCtrlAfter");
1258
1271
 
1259
1272
  } else if (oEvent.target === this.getDomRef("overlay")) {
1260
- oKeyboardExtension._setSilentFocus(this.$().find(".sapUiTableOuterAfter"));
1273
+ oKeyboardExtension.setSilentFocus(this.$().find(".sapUiTableOuterAfter"));
1261
1274
 
1262
1275
  } else if (!oCellInfo.isOfType(CellType.ANY)) {
1263
1276
  $Cell = TableUtils.getParentCell(this, oEvent.target);
@@ -1346,7 +1359,7 @@ sap.ui.define([
1346
1359
  }
1347
1360
 
1348
1361
  } else if (oEvent.target === this.getDomRef("overlay")) {
1349
- this._getKeyboardExtension()._setSilentFocus(this.$().find(".sapUiTableOuterBefore"));
1362
+ this._getKeyboardExtension().setSilentFocus(this.$().find(".sapUiTableOuterBefore"));
1350
1363
 
1351
1364
  } else if (!oCellInfo.isOfType(CellType.ANY)) {
1352
1365
  $Cell = TableUtils.getParentCell(this, oEvent.target);
@@ -1360,10 +1373,13 @@ sap.ui.define([
1360
1373
  };
1361
1374
 
1362
1375
  KeyboardDelegate.prototype.onsapdown = function(oEvent) {
1376
+ handleNavigationEvent(oEvent);
1363
1377
  navigateDown(this, oEvent);
1364
1378
  };
1365
1379
 
1366
1380
  KeyboardDelegate.prototype.onsapdownmodifiers = function(oEvent) {
1381
+ handleNavigationEvent(oEvent);
1382
+
1367
1383
  if (KeyboardDelegate._isKeyCombination(oEvent, null, ModKey.CTRL)) {
1368
1384
  navigateDown(this, oEvent);
1369
1385
  return;
@@ -1386,7 +1402,6 @@ sap.ui.define([
1386
1402
  var oCellInfo = TableUtils.getCellInfo(oEvent.target);
1387
1403
 
1388
1404
  if (KeyboardDelegate._isKeyCombination(oEvent, null, ModKey.SHIFT)) {
1389
- oEvent.preventDefault(); // Avoid text selection flickering.
1390
1405
 
1391
1406
  /* Range Selection */
1392
1407
 
@@ -1438,10 +1453,13 @@ sap.ui.define([
1438
1453
  };
1439
1454
 
1440
1455
  KeyboardDelegate.prototype.onsapup = function(oEvent) {
1456
+ handleNavigationEvent(oEvent);
1441
1457
  navigateUp(this, oEvent);
1442
1458
  };
1443
1459
 
1444
1460
  KeyboardDelegate.prototype.onsapupmodifiers = function(oEvent) {
1461
+ handleNavigationEvent(oEvent);
1462
+
1445
1463
  if (KeyboardDelegate._isKeyCombination(oEvent, null, ModKey.CTRL)) {
1446
1464
  navigateUp(this, oEvent);
1447
1465
  return;
@@ -1464,7 +1482,6 @@ sap.ui.define([
1464
1482
  var oCellInfo = TableUtils.getCellInfo(oEvent.target);
1465
1483
 
1466
1484
  if (KeyboardDelegate._isKeyCombination(oEvent, null, ModKey.SHIFT)) {
1467
- oEvent.preventDefault(); // Avoid text selection flickering.
1468
1485
 
1469
1486
  /* Range Selection */
1470
1487
 
@@ -1517,10 +1534,13 @@ sap.ui.define([
1517
1534
  };
1518
1535
 
1519
1536
  KeyboardDelegate.prototype.onsapleft = function(oEvent) {
1537
+ handleNavigationEvent(oEvent);
1520
1538
  navigateLeft(this, oEvent);
1521
1539
  };
1522
1540
 
1523
1541
  KeyboardDelegate.prototype.onsapleftmodifiers = function(oEvent) {
1542
+ handleNavigationEvent(oEvent);
1543
+
1524
1544
  if (this._getKeyboardExtension().isInActionMode()) {
1525
1545
  return;
1526
1546
  }
@@ -1529,7 +1549,6 @@ sap.ui.define([
1529
1549
  var bIsRTL = sap.ui.getCore().getConfiguration().getRTL();
1530
1550
 
1531
1551
  if (KeyboardDelegate._isKeyCombination(oEvent, null, ModKey.SHIFT)) {
1532
- oEvent.preventDefault(); // Avoid text selection flickering.
1533
1552
 
1534
1553
  /* Range Selection */
1535
1554
 
@@ -1589,16 +1608,18 @@ sap.ui.define([
1589
1608
  /* Column Reordering */
1590
1609
 
1591
1610
  if (oCellInfo.isOfType(CellType.COLUMNHEADER)) {
1592
- oEvent.preventDefault();
1593
- oEvent.stopImmediatePropagation();
1594
-
1595
- var oColumn = this.getColumns()[oCellInfo.columnIndex];
1596
- moveColumn(oColumn, bIsRTL);
1611
+ preventItemNavigation(oEvent);
1612
+ moveColumn(this.getColumns()[oCellInfo.columnIndex], bIsRTL);
1597
1613
  }
1614
+
1615
+ } else if (KeyboardDelegate._isKeyCombination(oEvent, null, ModKey.ALT)) {
1616
+ preventItemNavigation(oEvent);
1598
1617
  }
1599
1618
  };
1600
1619
 
1601
1620
  KeyboardDelegate.prototype.onsaprightmodifiers = function(oEvent) {
1621
+ handleNavigationEvent(oEvent);
1622
+
1602
1623
  if (this._getKeyboardExtension().isInActionMode()) {
1603
1624
  return;
1604
1625
  }
@@ -1607,8 +1628,6 @@ sap.ui.define([
1607
1628
  var bIsRTL = sap.ui.getCore().getConfiguration().getRTL();
1608
1629
 
1609
1630
  if (KeyboardDelegate._isKeyCombination(oEvent, null, ModKey.SHIFT)) {
1610
- oEvent.preventDefault(); // Avoid text selection flickering.
1611
-
1612
1631
  /* Range Selection */
1613
1632
 
1614
1633
  if (oCellInfo.isOfType(CellType.DATACELL)) {
@@ -1658,16 +1677,18 @@ sap.ui.define([
1658
1677
  /* Column Reordering */
1659
1678
 
1660
1679
  if (oCellInfo.isOfType(CellType.COLUMNHEADER)) {
1661
- oEvent.preventDefault();
1662
- oEvent.stopImmediatePropagation();
1663
-
1664
- var oColumn = this.getColumns()[oCellInfo.columnIndex];
1665
- moveColumn(oColumn, !bIsRTL);
1680
+ preventItemNavigation(oEvent);
1681
+ moveColumn(this.getColumns()[oCellInfo.columnIndex], !bIsRTL);
1666
1682
  }
1683
+
1684
+ } else if (KeyboardDelegate._isKeyCombination(oEvent, null, ModKey.ALT)) {
1685
+ preventItemNavigation(oEvent);
1667
1686
  }
1668
1687
  };
1669
1688
 
1670
1689
  KeyboardDelegate.prototype.onsaphome = function(oEvent) {
1690
+ handleNavigationEvent(oEvent);
1691
+
1671
1692
  if (this._getKeyboardExtension().isInActionMode()) {
1672
1693
  return;
1673
1694
  }
@@ -1675,16 +1696,11 @@ sap.ui.define([
1675
1696
  // If focus is on a group header, do nothing.
1676
1697
  if (TableUtils.Grouping.isInGroupHeaderRow(oEvent.target)) {
1677
1698
  preventItemNavigation(oEvent);
1678
- oEvent.preventDefault(); // Prevent scrolling the page.
1679
1699
  return;
1680
1700
  }
1681
1701
 
1682
1702
  var oCellInfo = TableUtils.getCellInfo(oEvent.target);
1683
1703
 
1684
- if (oCellInfo.isOfType(CellType.ANY)) {
1685
- oEvent.preventDefault(); // Prevent scrolling the page.
1686
- }
1687
-
1688
1704
  if (oCellInfo.isOfType(CellType.DATACELL | CellType.ROWACTION | CellType.COLUMNHEADER)) {
1689
1705
  var oFocusedItemInfo = TableUtils.getFocusedItemInfo(this);
1690
1706
  var iFocusedIndex = oFocusedItemInfo.cell;
@@ -1709,13 +1725,14 @@ sap.ui.define([
1709
1725
  };
1710
1726
 
1711
1727
  KeyboardDelegate.prototype.onsapend = function(oEvent) {
1728
+ handleNavigationEvent(oEvent);
1729
+
1712
1730
  if (this._getKeyboardExtension().isInActionMode()) {
1713
1731
  return;
1714
1732
  }
1715
1733
 
1716
1734
  // If focus is on a group header, do nothing.
1717
1735
  if (TableUtils.Grouping.isInGroupHeaderRow(oEvent.target)) {
1718
- oEvent.preventDefault(); // Prevent scrolling the page.
1719
1736
  preventItemNavigation(oEvent);
1720
1737
  return;
1721
1738
  }
@@ -1723,8 +1740,6 @@ sap.ui.define([
1723
1740
  var oCellInfo = TableUtils.getCellInfo(oEvent.target);
1724
1741
 
1725
1742
  if (oCellInfo.isOfType(CellType.ANY)) {
1726
- oEvent.preventDefault(); // Prevent scrolling the page.
1727
-
1728
1743
  var oFocusedItemInfo = TableUtils.getFocusedItemInfo(this);
1729
1744
  var iFocusedIndex = oFocusedItemInfo.cell;
1730
1745
  var iColumnCount = oFocusedItemInfo.columnCount;
@@ -1770,12 +1785,13 @@ sap.ui.define([
1770
1785
  };
1771
1786
 
1772
1787
  KeyboardDelegate.prototype.onsaphomemodifiers = function(oEvent) {
1788
+ handleNavigationEvent(oEvent);
1789
+
1773
1790
  if (this._getKeyboardExtension().isInActionMode()) {
1774
1791
  return;
1775
1792
  }
1776
1793
 
1777
1794
  if (KeyboardDelegate._isKeyCombination(oEvent, null, ModKey.CTRL)) {
1778
- oEvent.preventDefault(); // Prevent scrolling the page.
1779
1795
  var oCellInfo = TableUtils.getCellInfo(oEvent.target);
1780
1796
 
1781
1797
  if (oCellInfo.isOfType(CellType.ANYCONTENTCELL | CellType.COLUMNHEADER)) {
@@ -1827,12 +1843,13 @@ sap.ui.define([
1827
1843
  };
1828
1844
 
1829
1845
  KeyboardDelegate.prototype.onsapendmodifiers = function(oEvent) {
1846
+ handleNavigationEvent(oEvent);
1847
+
1830
1848
  if (this._getKeyboardExtension().isInActionMode()) {
1831
1849
  return;
1832
1850
  }
1833
1851
 
1834
1852
  if (KeyboardDelegate._isKeyCombination(oEvent, null, ModKey.CTRL)) {
1835
- oEvent.preventDefault(); // Prevent scrolling the page.
1836
1853
  var oCellInfo = TableUtils.getCellInfo(oEvent.target);
1837
1854
 
1838
1855
  if (oCellInfo.isOfType(CellType.ANY)) {
@@ -1902,12 +1919,12 @@ sap.ui.define([
1902
1919
  };
1903
1920
 
1904
1921
  KeyboardDelegate.prototype.onsappageup = function(oEvent) {
1922
+ handleNavigationEvent(oEvent);
1923
+
1905
1924
  if (this._getKeyboardExtension().isInActionMode()) {
1906
1925
  return;
1907
1926
  }
1908
1927
 
1909
- oEvent.preventDefault(); // Prevent scrolling the page.
1910
-
1911
1928
  var oCellInfo = TableUtils.getCellInfo(oEvent.target);
1912
1929
 
1913
1930
  if (oCellInfo.isOfType(CellType.ANYCONTENTCELL | CellType.COLUMNHEADER)) {
@@ -1971,12 +1988,12 @@ sap.ui.define([
1971
1988
  };
1972
1989
 
1973
1990
  KeyboardDelegate.prototype.onsappagedown = function(oEvent) {
1991
+ handleNavigationEvent(oEvent);
1992
+
1974
1993
  if (this._getKeyboardExtension().isInActionMode()) {
1975
1994
  return;
1976
1995
  }
1977
1996
 
1978
- oEvent.preventDefault(); // Prevent scrolling the page.
1979
-
1980
1997
  var oCellInfo = TableUtils.getCellInfo(oEvent.target);
1981
1998
 
1982
1999
  if (oCellInfo.isOfType(CellType.ANY)) {
@@ -2044,6 +2061,8 @@ sap.ui.define([
2044
2061
  };
2045
2062
 
2046
2063
  KeyboardDelegate.prototype.onsappageupmodifiers = function(oEvent) {
2064
+ handleNavigationEvent(oEvent);
2065
+
2047
2066
  if (this._getKeyboardExtension().isInActionMode()) {
2048
2067
  return;
2049
2068
  }
@@ -2085,6 +2104,8 @@ sap.ui.define([
2085
2104
  };
2086
2105
 
2087
2106
  KeyboardDelegate.prototype.onsappagedownmodifiers = function(oEvent) {
2107
+ handleNavigationEvent(oEvent);
2108
+
2088
2109
  if (this._getKeyboardExtension().isInActionMode()) {
2089
2110
  return;
2090
2111
  }
@@ -484,20 +484,7 @@ sap.ui.define([
484
484
  this.$().find(".sapUiTableColReorderFade").removeClass("sapUiTableColReorderFade");
485
485
 
486
486
  this._enableTextSelection();
487
-
488
- // Perform Reordering
489
487
  TableUtils.Column.moveColumnTo(this.getColumns()[iOldIndex], iNewIndex);
490
-
491
- // Re-apply focus
492
- if (this._mTimeouts.reApplyFocusTimerId) {
493
- window.clearTimeout(this._mTimeouts.reApplyFocusTimerId);
494
- }
495
- var that = this;
496
- this._mTimeouts.reApplyFocusTimerId = window.setTimeout(function() {
497
- var iOldFocusedIndex = TableUtils.getFocusedItemInfo(that).cell;
498
- TableUtils.focusItem(that, 0, oEvent);
499
- TableUtils.focusItem(that, iOldFocusedIndex, oEvent);
500
- }, 0);
501
488
  },
502
489
 
503
490
  /*
@@ -805,7 +792,7 @@ sap.ui.define([
805
792
  * @class Extension for sap.ui.table.Table which handles mouse and touch related things.
806
793
  * @extends sap.ui.table.extensions.ExtensionBase
807
794
  * @author SAP SE
808
- * @version 1.93.3
795
+ * @version 1.96.2
809
796
  * @constructor
810
797
  * @private
811
798
  * @alias sap.ui.table.extensions.Pointer