@openui5/sap.ui.table 1.127.0 → 1.128.0

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 (48) hide show
  1. package/package.json +3 -3
  2. package/src/sap/ui/table/.library +1 -1
  3. package/src/sap/ui/table/AnalyticalColumn.js +1 -1
  4. package/src/sap/ui/table/AnalyticalColumnMenu.js +1 -1
  5. package/src/sap/ui/table/AnalyticalTable.js +1 -1
  6. package/src/sap/ui/table/Column.js +6 -3
  7. package/src/sap/ui/table/ColumnMenu.js +1 -1
  8. package/src/sap/ui/table/CreationRow.js +1 -1
  9. package/src/sap/ui/table/Row.js +1 -1
  10. package/src/sap/ui/table/RowAction.js +1 -1
  11. package/src/sap/ui/table/RowActionItem.js +1 -1
  12. package/src/sap/ui/table/RowSettings.js +1 -1
  13. package/src/sap/ui/table/Table.js +73 -9
  14. package/src/sap/ui/table/TablePersoController.js +1 -1
  15. package/src/sap/ui/table/TableRenderer.js +7 -7
  16. package/src/sap/ui/table/TreeTable.js +1 -1
  17. package/src/sap/ui/table/extensions/Accessibility.js +1 -1
  18. package/src/sap/ui/table/extensions/AccessibilityRender.js +1 -1
  19. package/src/sap/ui/table/extensions/DragAndDrop.js +1 -1
  20. package/src/sap/ui/table/extensions/ExtensionBase.js +1 -1
  21. package/src/sap/ui/table/extensions/Keyboard.js +1 -1
  22. package/src/sap/ui/table/extensions/KeyboardDelegate.js +25 -5
  23. package/src/sap/ui/table/extensions/Pointer.js +1 -1
  24. package/src/sap/ui/table/extensions/Scrolling.js +1 -1
  25. package/src/sap/ui/table/extensions/ScrollingIOS.js +1 -1
  26. package/src/sap/ui/table/extensions/Synchronization.js +1 -1
  27. package/src/sap/ui/table/library.js +11 -11
  28. package/src/sap/ui/table/menus/ColumnHeaderMenuAdapter.js +1 -1
  29. package/src/sap/ui/table/menus/MobileColumnHeaderMenuAdapter.js +1 -1
  30. package/src/sap/ui/table/plugins/BindingSelection.js +3 -3
  31. package/src/sap/ui/table/plugins/MultiSelectionPlugin.js +2 -2
  32. package/src/sap/ui/table/plugins/ODataV4Selection.js +132 -96
  33. package/src/sap/ui/table/plugins/PluginBase.js +1 -1
  34. package/src/sap/ui/table/plugins/SelectionModelSelection.js +3 -3
  35. package/src/sap/ui/table/plugins/SelectionPlugin.js +1 -1
  36. package/src/sap/ui/table/plugins/V4Aggregation.js +1 -1
  37. package/src/sap/ui/table/rowmodes/Auto.js +1 -1
  38. package/src/sap/ui/table/rowmodes/Fixed.js +1 -1
  39. package/src/sap/ui/table/rowmodes/Interactive.js +1 -1
  40. package/src/sap/ui/table/rowmodes/RowMode.js +1 -1
  41. package/src/sap/ui/table/rowmodes/Variable.js +1 -1
  42. package/src/sap/ui/table/themes/base/Table.less +4 -0
  43. package/src/sap/ui/table/utils/TableUtils.js +1 -1
  44. package/src/sap/ui/table/utils/_BindingUtils.js +1 -1
  45. package/src/sap/ui/table/utils/_ColumnUtils.js +1 -1
  46. package/src/sap/ui/table/utils/_GroupingUtils.js +1 -1
  47. package/src/sap/ui/table/utils/_HookUtils.js +1 -1
  48. package/src/sap/ui/table/utils/_MenuUtils.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.ui.table",
3
- "version": "1.127.0",
3
+ "version": "1.128.0",
4
4
  "description": "OpenUI5 UI Library sap.ui.table",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -14,7 +14,7 @@
14
14
  "url": "https://github.com/SAP/openui5.git"
15
15
  },
16
16
  "dependencies": {
17
- "@openui5/sap.ui.core": "1.127.0",
18
- "@openui5/sap.ui.unified": "1.127.0"
17
+ "@openui5/sap.ui.core": "1.128.0",
18
+ "@openui5/sap.ui.unified": "1.128.0"
19
19
  }
20
20
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>OpenUI5
7
7
  * (c) Copyright 2009-2024 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.127.0</version>
9
+ <version>1.128.0</version>
10
10
 
11
11
  <documentation>Table-like controls, mainly for desktop scenarios.</documentation>
12
12
 
@@ -47,7 +47,7 @@ sap.ui.define([
47
47
  * @extends sap.ui.table.Column
48
48
  *
49
49
  * @author SAP SE
50
- * @version 1.127.0
50
+ * @version 1.128.0
51
51
  *
52
52
  * @constructor
53
53
  * @public
@@ -20,7 +20,7 @@ sap.ui.define(['./ColumnMenu', "sap/ui/unified/MenuRenderer", './utils/TableUtil
20
20
  * @extends sap.ui.table.ColumnMenu
21
21
  *
22
22
  * @author SAP SE
23
- * @version 1.127.0
23
+ * @version 1.128.0
24
24
  *
25
25
  * @constructor
26
26
  * @public
@@ -55,7 +55,7 @@ sap.ui.define([
55
55
  * @see https://github.com/SAP/odata-vocabularies/blob/main/docs/v2-annotations.md
56
56
  *
57
57
  * @extends sap.ui.table.Table
58
- * @version 1.127.0
58
+ * @version 1.128.0
59
59
  *
60
60
  * @constructor
61
61
  * @public
@@ -63,7 +63,7 @@ sap.ui.define([
63
63
  * @class
64
64
  * The column allows you to define column specific properties that will be applied when rendering the table.
65
65
  * @extends sap.ui.core.Element
66
- * @version 1.127.0
66
+ * @version 1.128.0
67
67
  *
68
68
  * @constructor
69
69
  * @public
@@ -290,15 +290,18 @@ sap.ui.define([
290
290
 
291
291
  /**
292
292
  * Template (cell renderer) of this column.
293
+ *
293
294
  * A template is decoupled from the column. Each time the template's properties or aggregations have been changed, the template has to be
294
295
  * applied again via <code>setTemplate</code> for the changes to take effect.
295
- * If a string is defined, a default text control will be created with its text property bound to the value of the string. The default
296
- * template depends on the libraries loaded.
296
+ *
297
297
  * If there is no template, the column will not be rendered in the table.
298
+ *
298
299
  * The set of supported controls is limited. See section "{@link topic:148892ff9aea4a18b912829791e38f3e Tables: Which One Should I
299
300
  * Choose?}" in the documentation for more details. While it is technically possible to also use other controls, doing so might lead to
300
301
  * issues with regards to scrolling, alignment, condensed mode, screen reader support, and keyboard support.
301
302
  *
303
+ * If a string is defined, this string is interpreted as the binding path. Internally, a default text control will be created with its <code>text</code> property
304
+ * bound to the value of the string. The default template depends on the libraries loaded.
302
305
  * <b>Note:</b> The <code>altType</code> string is deprecated as of version 1.118. Use a <code>Control</code> instead.
303
306
  */
304
307
  template: {type: "sap.ui.core.Control", altTypes: ["string"], multiple: false},
@@ -40,7 +40,7 @@ sap.ui.define([
40
40
  * @class
41
41
  * The column menu provides all common actions that can be performed on a column.
42
42
  * @extends sap.ui.unified.Menu
43
- * @version 1.127.0
43
+ * @version 1.128.0
44
44
  *
45
45
  * @constructor
46
46
  * @public
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * <code>sap.ui.commons</code> library.
33
33
  * @extends sap.ui.core.Control
34
34
  * @author SAP SE
35
- * @version 1.127.0
35
+ * @version 1.128.0
36
36
  *
37
37
  * @constructor
38
38
  * @private
@@ -135,7 +135,7 @@ sap.ui.define([
135
135
  * @class
136
136
  * The row.
137
137
  * @extends sap.ui.core.Element
138
- * @version 1.127.0
138
+ * @version 1.128.0
139
139
  *
140
140
  * @constructor
141
141
  * @public
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  * If more action items are available as the available space allows to display an overflow mechanism is provided.
36
36
  * This control must only be used in the context of the <code>sap.ui.table.Table</code> control to define row actions.
37
37
  * @extends sap.ui.core.Control
38
- * @version 1.127.0
38
+ * @version 1.128.0
39
39
  *
40
40
  * @constructor
41
41
  * @public
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @extends sap.ui.core.Element
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.127.0
27
+ * @version 1.128.0
28
28
  * @since 1.45
29
29
  *
30
30
  * @constructor
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * The <code>RowSettings</code> control allows you to configure a row.
28
28
  * You can only use this control in the context of the <code>sap.ui.table.Table</code> control to define row settings.
29
29
  * @extends sap.ui.core.Element
30
- * @version 1.127.0
30
+ * @version 1.128.0
31
31
  *
32
32
  * @constructor
33
33
  * @public
@@ -102,7 +102,7 @@ sap.ui.define([
102
102
  * the data model and binding being used.
103
103
  * </p>
104
104
  * @extends sap.ui.core.Control
105
- * @version 1.127.0
105
+ * @version 1.128.0
106
106
  *
107
107
  * @constructor
108
108
  * @public
@@ -218,14 +218,34 @@ sap.ui.define([
218
218
  navigationMode: {type: "sap.ui.table.NavigationMode", group: "Behavior", defaultValue: "Scrollbar", deprecated: true},
219
219
 
220
220
  /**
221
- * Defines how many additional (not yet visible) data records from the back-end system are pre-fetched to enable smooth scrolling.
222
- * The threshold is always added to the <code>visibleRowCount</code>. If the <code>visibleRowCount</code> is 10 and the
223
- * <code>threshold</code> is 100, there will be 110 records fetched with the initial load.
224
- * If the <code>threshold</code> is lower than the number of rows in the scrollable area (<code>visibleRowCount</code> minus number of
225
- * fixed rows), this number is used as the <code>threshold</code>.
226
- * If the value is 0, thresholding is disabled.
221
+ * Defines how many additional (not yet visible) data records from the back-end system are pre-fetched to enable
222
+ * smooth scrolling. The threshold is always added to the number of rows. If the number of rows is 10 and the
223
+ * <code>threshold</code> is 100, 110 records will be fetched with the initial load. This property affects
224
+ * requests triggered by changes in the binding, for example, initial loading, sorting, filtering, etc. The
225
+ * threshold that is applied during scrolling can be configured with the <code>scrollThreshold</code> property.
226
+ * If the <code>threshold</code> is lower than the number of rows in the scrollable area (<code>visibleRowCount</code>
227
+ * minus number of fixed rows), this number is used as the <code>threshold</code>. If the value is 0, thresholding
228
+ * is disabled.
227
229
  */
228
- threshold: {type: "int", group: "Appearance", defaultValue: 100},
230
+ threshold: {type: "int", group: "Behavior", defaultValue: 100},
231
+
232
+ /**
233
+ * Defines how many additional data records are requested from the back-end system when the user scrolls vertically
234
+ * in the table. The <code>scrollThreshold</code> is always added to the number of rows. If the number of rows is 10
235
+ * and the <code>scrollThreshold</code> is 100, 110 records will be fetched during scrolling. The threshold that is
236
+ * applied to requests that are not initiated by scrolling can be configured with the <code>threshold</code> property.
237
+ * If the <code>scrollThreshold</code> is lower than the number of rows in the scrollable area (number of rows minus
238
+ * number of fixed rows), this number is used as the <code>scrollThreshold</code>. If the value is 0, no threshold is
239
+ * applied during scrolling. The value -1 applies the same value as the <code>threshold</code> property.
240
+ *
241
+ * <b>Note:</b> This property only takes effect if it is set to a positive integer value.
242
+ *
243
+ * For <code>AnalyticalTable</code> and <code>TreeTable</code>, the <code>scrollThreshold</code> property must be
244
+ * higher than the <code>threshold</code> property to take effect.
245
+ *
246
+ * @since 1.128
247
+ */
248
+ scrollThreshold: {type: "int", group: "Behavior", defaultValue: -1},
229
249
 
230
250
  /**
231
251
  * Flag to enable or disable column reordering
@@ -1028,6 +1048,15 @@ sap.ui.define([
1028
1048
  */
1029
1049
  this._bContextsAvailable = false;
1030
1050
 
1051
+ /*
1052
+ * Flag that indicates whether the user scrolled through the table.
1053
+ * It is <code>false</code> if the current scroll position was set via API or the binding has been initialized or refreshed.
1054
+ * It is set in {@link sap.ui.table.Table#_setFirstVisibleRowIndex} and {@link sap.ui.table.Table#updateRows}.
1055
+ *
1056
+ * @type {boolean}
1057
+ */
1058
+ this._bScrolled = false;
1059
+
1031
1060
  this._aRowClones = [];
1032
1061
  this._bRowAggregationInvalid = true;
1033
1062
  this._mTimeouts = {};
@@ -1885,6 +1914,7 @@ sap.ui.define([
1885
1914
 
1886
1915
  if (bRowsUpdateRequired) {
1887
1916
  if (!mOptions.suppressRendering) {
1917
+ this._bScrolled = mOptions.onScroll;
1888
1918
  triggerRowsUpdate(this, mOptions.onScroll
1889
1919
  ? TableUtils.RowsUpdateReason.VerticalScroll
1890
1920
  : TableUtils.RowsUpdateReason.FirstVisibleRowChange);
@@ -2378,7 +2408,7 @@ sap.ui.define([
2378
2408
  Table.prototype._getRowContexts = function(iRequestLength) {
2379
2409
  const oBinding = this.getBinding();
2380
2410
  const mRowCounts = this._getRowCounts();
2381
- let iThreshold = this.getThreshold();
2411
+ let iThreshold = this._bScrolled ? this._getScrollThreshold() : this.getThreshold();
2382
2412
 
2383
2413
  iRequestLength = iRequestLength == null ? mRowCounts.count : iRequestLength;
2384
2414
 
@@ -2503,6 +2533,7 @@ sap.ui.define([
2503
2533
  */
2504
2534
  Table.prototype.refreshRows = function(sReason) {
2505
2535
  this._bContextsAvailable = false;
2536
+ this._bScrolled = false;
2506
2537
 
2507
2538
  if (sReason === ChangeReason.Sort || sReason === ChangeReason.Filter) {
2508
2539
  this.setFirstVisibleRow(0);
@@ -2527,6 +2558,8 @@ sap.ui.define([
2527
2558
  return;
2528
2559
  }
2529
2560
 
2561
+ this._bScrolled = false;
2562
+
2530
2563
  if (oEventInfo.detailedReason === "AddVirtualContext") {
2531
2564
  createVirtualRow(this);
2532
2565
  return;
@@ -3651,6 +3684,20 @@ sap.ui.define([
3651
3684
  return this;
3652
3685
  };
3653
3686
 
3687
+ /**
3688
+ * Sets the threshold value, which will be added to all data requests
3689
+ * initiated by scrolling if the <code>Table</code> is bound against
3690
+ * an OData service.
3691
+ *
3692
+ * @param {int} iThreshold The threshold for scrolling
3693
+ * @returns {this} Reference to <code>this</code> in order to allow method chaining
3694
+ * @public
3695
+ */
3696
+ Table.prototype.setScrollThreshold = function(iThreshold) {
3697
+ this.setProperty("scrollThreshold", iThreshold, true);
3698
+ return this;
3699
+ };
3700
+
3654
3701
  /**
3655
3702
  * Invalidates all column menus.
3656
3703
  * @private
@@ -4401,5 +4448,22 @@ sap.ui.define([
4401
4448
  return oFoundPlugin;
4402
4449
  };
4403
4450
 
4451
+ /**
4452
+ * Returns the threshold that is applied during scrolling. The returned
4453
+ * integer is based on the <code>scrollThreshold</code> property in combination
4454
+ * with the <code>threshold</code> property.
4455
+ *
4456
+ * @returns {number} The threshold that is applied during scrolling
4457
+ */
4458
+ Table.prototype._getScrollThreshold = function() {
4459
+ const iScrollThreshold = this.getScrollThreshold();
4460
+
4461
+ if (iScrollThreshold === -1) {
4462
+ return this.getThreshold();
4463
+
4464
+ }
4465
+ return iScrollThreshold;
4466
+ };
4467
+
4404
4468
  return Table;
4405
4469
  });
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.base.ManagedObject
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.127.0
37
+ * @version 1.128.0
38
38
  * @since 1.21.1
39
39
  *
40
40
  * @constructor
@@ -148,6 +148,7 @@ sap.ui.define([
148
148
  this.renderTabElement(rm, "sapUiTableOuterBefore");
149
149
 
150
150
  rm.openStart("div", oTable.getId() + "-before");
151
+ rm.class("sapUiTableBefore");
151
152
  rm.openEnd();
152
153
 
153
154
  rm.renderControl(oTable.getAggregation("_messageStrip"));
@@ -177,6 +178,9 @@ sap.ui.define([
177
178
  oTable._getAccRenderExtension().writeAriaAttributesFor(rm, oTable, "CONTAINER");
178
179
  rm.openEnd();
179
180
 
181
+ const bDummyTabbable = oTable.getRows().length || oTable.getColumnHeaderVisible();
182
+ this.renderTabElement(rm, "sapUiTableCtrlBefore", bDummyTabbable ? "0" : "-1");
183
+
180
184
  rm.openStart("div", oTable.getId() + "-sapUiTableGridCnt");
181
185
  oTable._getAccRenderExtension().writeAriaAttributesFor(rm, oTable, "CONTENT");
182
186
  rm.openEnd();
@@ -187,6 +191,9 @@ sap.ui.define([
187
191
 
188
192
  rm.close("div");
189
193
 
194
+ this.renderTabElement(rm, "sapUiTableCtrlAfter", bDummyTabbable ? "0" : "-1");
195
+ this.renderTabElement(rm, null, "-1", oTable.getId() + "-focusDummy");
196
+
190
197
  const oCreationRow = oTable.getCreationRow();
191
198
  if (oCreationRow && oCreationRow.getVisible()) {
192
199
  rm.renderControl(oCreationRow);
@@ -282,10 +289,6 @@ sap.ui.define([
282
289
  };
283
290
 
284
291
  TableRenderer.renderTable = function(rm, oTable) {
285
- const bHasRows = oTable.getRows().length > 0;
286
-
287
- this.renderTabElement(rm, "sapUiTableCtrlBefore", bHasRows ? "0" : "-1");
288
-
289
292
  rm.openStart("div", oTable.getId() + "-tableCCnt");
290
293
  TableUtils.Hook.call(oTable, Hook.RenderRowContainerStyles, rm);
291
294
  rm.class("sapUiTableCCnt");
@@ -294,9 +297,6 @@ sap.ui.define([
294
297
  this.renderTableCCnt(rm, oTable);
295
298
  rm.close("div");
296
299
 
297
- this.renderTabElement(rm, "sapUiTableCtrlAfter", bHasRows ? "0" : "-1");
298
- this.renderTabElement(rm, null, "-1", oTable.getId() + "-focusDummy");
299
-
300
300
  const oCreationRow = oTable.getCreationRow();
301
301
  if (!oCreationRow || !oCreationRow.getVisible()) {
302
302
  this.renderHSbBackground(rm, oTable);
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @class
43
43
  * The TreeTable control provides a comprehensive set of features to display hierarchical data.
44
44
  * @extends sap.ui.table.Table
45
- * @version 1.127.0
45
+ * @version 1.128.0
46
46
  *
47
47
  * @constructor
48
48
  * @public
@@ -969,7 +969,7 @@ sap.ui.define([
969
969
  * @class Extension for sap.ui.table.Table which handles ACC related things.
970
970
  * @extends sap.ui.table.extensions.ExtensionBase
971
971
  * @author SAP SE
972
- * @version 1.127.0
972
+ * @version 1.128.0
973
973
  * @constructor
974
974
  * @private
975
975
  * @alias sap.ui.table.extensions.Accessibility
@@ -44,7 +44,7 @@ sap.ui.define([
44
44
  * @class Extension for sap.ui.table.TableRenderer which handles ACC related things.
45
45
  * @extends sap.ui.table.extensions.ExtensionBase
46
46
  * @author SAP SE
47
- * @version 1.127.0
47
+ * @version 1.128.0
48
48
  * @constructor
49
49
  * @private
50
50
  * @alias sap.ui.table.extensions.AccessibilityRender
@@ -274,7 +274,7 @@ sap.ui.define([
274
274
  *
275
275
  * @extends sap.ui.table.extensions.ExtensionBase
276
276
  * @author SAP SE
277
- * @version 1.127.0
277
+ * @version 1.128.0
278
278
  * @constructor
279
279
  * @private
280
280
  * @alias sap.ui.table.extensions.DragAndDrop
@@ -19,7 +19,7 @@ sap.ui.define([
19
19
  * @abstract
20
20
  * @extends sap.ui.base.Object
21
21
  * @author SAP SE
22
- * @version 1.127.0
22
+ * @version 1.128.0
23
23
  * @constructor
24
24
  * @private
25
25
  * @alias sap.ui.table.extensions.ExtensionBase
@@ -267,7 +267,7 @@ sap.ui.define([
267
267
  * @class Extension for sap.ui.table.Table which handles keyboard related things.
268
268
  * @extends sap.ui.table.extensions.ExtensionBase
269
269
  * @author SAP SE
270
- * @version 1.127.0
270
+ * @version 1.128.0
271
271
  * @constructor
272
272
  * @private
273
273
  * @alias sap.ui.table.extensions.Keyboard
@@ -65,7 +65,7 @@ sap.ui.define([
65
65
  *
66
66
  * @extends sap.ui.base.Object
67
67
  * @author SAP SE
68
- * @version 1.127.0
68
+ * @version 1.128.0
69
69
  * @constructor
70
70
  * @private
71
71
  * @alias sap.ui.table.extensions.KeyboardDelegate
@@ -991,7 +991,19 @@ sap.ui.define([
991
991
  }
992
992
  };
993
993
 
994
+ KeyboardDelegate.prototype.onfocusout = function(oEvent) {
995
+ if (this.getRows().length || this.getColumnHeaderVisible()) {
996
+ this.$().find(".sapUiTableCtrlBefore").attr("tabindex", "0");
997
+ this.$().find(".sapUiTableCtrlAfter").attr("tabindex", "0");
998
+ }
999
+ };
1000
+
994
1001
  KeyboardDelegate.prototype.onfocusin = function(oEvent) {
1002
+ if (this.getDomRef("sapUiTableCnt").contains(oEvent.target)) {
1003
+ this.$().find(".sapUiTableCtrlBefore").attr("tabindex", "-1");
1004
+ this.$().find(".sapUiTableCtrlAfter").attr("tabindex", "-1");
1005
+ }
1006
+
995
1007
  if (oEvent.isMarked("sapUiTableIgnoreFocusIn")) {
996
1008
  return;
997
1009
  }
@@ -1004,15 +1016,23 @@ sap.ui.define([
1004
1016
 
1005
1017
  } else if ($Target.hasClass("sapUiTableCtrlBefore")) {
1006
1018
  const bNoData = TableUtils.isNoDataVisible(this);
1007
- if (!bNoData || bNoData && this.getColumnHeaderVisible()) {
1019
+ const oBusyIndicator = this.getDomRef("busyIndicator");
1020
+ if (oBusyIndicator) {
1021
+ this._getKeyboardExtension().setSilentFocus(oBusyIndicator);
1022
+ } else if (this.getColumnHeaderVisible() && (TableUtils.getVisibleColumnCount(this) || this.getSelectionMode() !== SelectionMode.None)) {
1008
1023
  setFocusOnColumnHeaderOfLastFocusedDataCell(this, oEvent);
1009
- } else {
1024
+ } else if (bNoData) {
1010
1025
  this._getKeyboardExtension().setSilentFocus(this.$("noDataCnt"));
1011
1026
  }
1012
1027
 
1013
1028
  } else if ($Target.hasClass("sapUiTableCtrlAfter")) {
1014
- if (!TableUtils.isNoDataVisible(this)) {
1029
+ const oBusyIndicator = this.getDomRef("busyIndicator");
1030
+ if (oBusyIndicator) {
1031
+ this._getKeyboardExtension().setSilentFocus(oBusyIndicator);
1032
+ } else if (this.getRows().length && !TableUtils.isNoDataVisible(this)) {
1015
1033
  restoreFocusOnLastFocusedDataCell(this, oEvent);
1034
+ } else if (this.getColumnHeaderVisible() && (TableUtils.getVisibleColumnCount(this) || this.getSelectionMode() !== SelectionMode.None)) {
1035
+ setFocusOnColumnHeaderOfLastFocusedDataCell(this, oEvent);
1016
1036
  }
1017
1037
  }
1018
1038
 
@@ -1382,7 +1402,7 @@ sap.ui.define([
1382
1402
  }
1383
1403
 
1384
1404
  } else if (oCellInfo.isOfType(CellType.ANYCONTENTCELL) || oEvent.target === this.getDomRef("noDataCnt")) {
1385
- if (this.getColumnHeaderVisible() && !oCellInfo.isOfType(CellType.ROWACTION)) {
1405
+ if (this.getColumnHeaderVisible() && (TableUtils.getVisibleColumnCount(this) || this.getSelectionMode() !== SelectionMode.None) && !oCellInfo.isOfType(CellType.ROWACTION)) {
1386
1406
  setFocusOnColumnHeaderOfLastFocusedDataCell(this, oEvent);
1387
1407
  oEvent.preventDefault();
1388
1408
  } else {
@@ -703,7 +703,7 @@ sap.ui.define([
703
703
  * @class Extension for sap.ui.table.Table which handles mouse and touch related things.
704
704
  * @extends sap.ui.table.extensions.ExtensionBase
705
705
  * @author SAP SE
706
- * @version 1.127.0
706
+ * @version 1.128.0
707
707
  * @constructor
708
708
  * @private
709
709
  * @alias sap.ui.table.extensions.Pointer
@@ -2295,7 +2295,7 @@ sap.ui.define([
2295
2295
  * @class Extension for sap.ui.table.Table which handles scrolling.
2296
2296
  * @extends sap.ui.table.extensions.ExtensionBase
2297
2297
  * @author SAP SE
2298
- * @version 1.127.0
2298
+ * @version 1.128.0
2299
2299
  * @constructor
2300
2300
  * @private
2301
2301
  * @alias sap.ui.table.extensions.Scrolling
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @class Extension for sap.ui.table.Table which handles the scrollbar on iOS.
28
28
  * @extends sap.ui.table.extensions.ExtensionBase
29
29
  * @author SAP SE
30
- * @version 1.127.0
30
+ * @version 1.128.0
31
31
  * @constructor
32
32
  * @private
33
33
  * @alias sap.ui.table.extensions.ScrollingIOS
@@ -185,7 +185,7 @@ sap.ui.define([
185
185
  * @class Extension for sap.ui.table.Table that allows synchronization with a table.
186
186
  * @extends sap.ui.table.extensions.ExtensionBase
187
187
  * @author SAP SE
188
- * @version 1.127.0
188
+ * @version 1.128.0
189
189
  * @constructor
190
190
  * @private
191
191
  * @alias sap.ui.table.extensions.Synchronization
@@ -27,14 +27,14 @@ sap.ui.define([
27
27
  * @namespace
28
28
  * @alias sap.ui.table
29
29
  * @author SAP SE
30
- * @version 1.127.0
30
+ * @version 1.128.0
31
31
  * @since 0.8
32
32
  * @public
33
33
  */
34
34
  const thisLib = Library.init({
35
35
  name: "sap.ui.table",
36
36
  apiVersion: 2,
37
- version: "1.127.0",
37
+ version: "1.128.0",
38
38
  dependencies: ["sap.ui.core", "sap.ui.unified"],
39
39
  designtime: "sap/ui/table/designtime/library.designtime",
40
40
  types: [
@@ -96,7 +96,7 @@ sap.ui.define([
96
96
  /**
97
97
  * Navigation mode of the table
98
98
  *
99
- * @version 1.127.0
99
+ * @version 1.128.0
100
100
  * @enum {string}
101
101
  * @deprecated As of version 1.38, the concept has been discarded.
102
102
  * @public
@@ -127,7 +127,7 @@ sap.ui.define([
127
127
  /**
128
128
  * Row Action types.
129
129
  *
130
- * @version 1.127.0
130
+ * @version 1.128.0
131
131
  * @enum {string}
132
132
  * @public
133
133
  */
@@ -158,7 +158,7 @@ sap.ui.define([
158
158
  /**
159
159
  * Selection behavior of the table
160
160
  *
161
- * @version 1.127.0
161
+ * @version 1.128.0
162
162
  * @enum {string}
163
163
  * @public
164
164
  */
@@ -189,7 +189,7 @@ sap.ui.define([
189
189
  /**
190
190
  * Selection mode of the table
191
191
  *
192
- * @version 1.127.0
192
+ * @version 1.128.0
193
193
  * @enum {string}
194
194
  * @public
195
195
  */
@@ -227,7 +227,7 @@ sap.ui.define([
227
227
  /**
228
228
  * Sort order of a column
229
229
  *
230
- * @version 1.127.0
230
+ * @version 1.128.0
231
231
  * @enum {string}
232
232
  * @public
233
233
  * @deprecated As of version 1.120, replaced with <code>sap.ui.core.SortOrder</code>
@@ -254,7 +254,7 @@ sap.ui.define([
254
254
  /**
255
255
  * VisibleRowCountMode of the table
256
256
  *
257
- * @version 1.127.0
257
+ * @version 1.128.0
258
258
  * @enum {string}
259
259
  * @deprecated As of version 1.119, see the <code>rowMode</code> aggregation of <code>sap.ui.table.Table</code> for more details.
260
260
  * @public
@@ -299,7 +299,7 @@ sap.ui.define([
299
299
  *
300
300
  * Contains IDs of shared DOM references, which should be accessible to inheriting controls via getDomRef() function.
301
301
  *
302
- * @version 1.127.0
302
+ * @version 1.128.0
303
303
  * @enum {string}
304
304
  * @public
305
305
  */
@@ -400,7 +400,7 @@ sap.ui.define([
400
400
  *
401
401
  * This is an alias for {@link sap.ui.model.TreeAutoExpandMode} and kept for compatibility reasons.
402
402
  *
403
- * @version 1.127.0
403
+ * @version 1.128.0
404
404
  * @typedef {sap.ui.model.TreeAutoExpandMode}
405
405
  * @public
406
406
  * @deprecated As of version 1.120, replaced by <code>sap.ui.model.TreeAutoExpandMode</code>
@@ -414,7 +414,7 @@ sap.ui.define([
414
414
  /**
415
415
  * Mode of a selection plugin
416
416
  *
417
- * @version 1.127.0
417
+ * @version 1.128.0
418
418
  * @enum {string}
419
419
  * @private
420
420
  */
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  *
36
36
  * @extends sap.ui.base.Object
37
37
  * @author SAP SE
38
- * @version 1.127.0
38
+ * @version 1.128.0
39
39
  * @private
40
40
  * @alias sap.ui.table.menus.ColumnHeaderMenuAdapter
41
41
  */
@@ -59,7 +59,7 @@ sap.ui.define([
59
59
  *
60
60
  * @extends sap.ui.table.menus.ColumnHeaderMenuAdapter
61
61
  * @author SAP SE
62
- * @version 1.127.0
62
+ * @version 1.128.0
63
63
  * @private
64
64
  * @alias sap.ui.table.menus.MobileColumnHeaderMenuAdapter
65
65
  */
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  *
22
22
  * @class Implements the selection methods for TreeTable and AnalyticalTable
23
23
  * @extends sap.ui.table.plugins.SelectionPlugin
24
- * @version 1.127.0
24
+ * @version 1.128.0
25
25
  * @constructor
26
26
  * @private
27
27
  * @alias sap.ui.table.plugins.BindingSelection
@@ -140,10 +140,10 @@ sap.ui.define([
140
140
  */
141
141
  BindingSelection.prototype.onKeyboardShortcut = function(sType, oEvent) {
142
142
  if (sType === "toggle" && toggleSelectAll(this) === false) {
143
- oEvent?.setMarked("sapUiTableClearAll");
143
+ oEvent.setMarked("sapUiTableClearAll");
144
144
  } else if (sType === "clear") {
145
145
  this.clearSelection();
146
- oEvent?.setMarked("sapUiTableClearAll");
146
+ oEvent.setMarked("sapUiTableClearAll");
147
147
  }
148
148
  };
149
149