@openui5/sap.ui.table 1.143.0 → 1.144.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 (78) hide show
  1. package/THIRDPARTY.txt +1 -1
  2. package/package.json +3 -3
  3. package/src/sap/ui/table/.library +2 -2
  4. package/src/sap/ui/table/AnalyticalColumn.js +2 -2
  5. package/src/sap/ui/table/AnalyticalColumnMenu.js +2 -2
  6. package/src/sap/ui/table/AnalyticalTable.js +2 -2
  7. package/src/sap/ui/table/Column.js +2 -2
  8. package/src/sap/ui/table/ColumnMenu.js +2 -2
  9. package/src/sap/ui/table/CreationRow.js +2 -2
  10. package/src/sap/ui/table/CreationRowRenderer.js +2 -2
  11. package/src/sap/ui/table/HeaderSelector.js +90 -0
  12. package/src/sap/ui/table/HeaderSelectorRenderer.js +88 -0
  13. package/src/sap/ui/table/Row.js +2 -2
  14. package/src/sap/ui/table/RowAction.js +2 -2
  15. package/src/sap/ui/table/RowActionItem.js +2 -2
  16. package/src/sap/ui/table/RowActionRenderer.js +1 -1
  17. package/src/sap/ui/table/RowSettings.js +2 -2
  18. package/src/sap/ui/table/Table.js +37 -60
  19. package/src/sap/ui/table/TablePersoController.js +2 -2
  20. package/src/sap/ui/table/TableRenderer.js +1624 -718
  21. package/src/sap/ui/table/TreeTable.js +2 -2
  22. package/src/sap/ui/table/designtime/AnalyticalTable.designtime.js +5 -1
  23. package/src/sap/ui/table/designtime/Table.designtime.js +5 -1
  24. package/src/sap/ui/table/designtime/library.designtime.js +1 -1
  25. package/src/sap/ui/table/designtime/messagebundle.properties +6 -0
  26. package/src/sap/ui/table/extensions/Accessibility.js +28 -53
  27. package/src/sap/ui/table/extensions/AccessibilityRender.js +3 -4
  28. package/src/sap/ui/table/extensions/DragAndDrop.js +2 -2
  29. package/src/sap/ui/table/extensions/ExtensionBase.js +2 -2
  30. package/src/sap/ui/table/extensions/Keyboard.js +5 -31
  31. package/src/sap/ui/table/extensions/KeyboardDelegate.js +2 -2
  32. package/src/sap/ui/table/extensions/Pointer.js +2 -2
  33. package/src/sap/ui/table/extensions/Scrolling.js +2 -10
  34. package/src/sap/ui/table/extensions/ScrollingIOS.js +2 -2
  35. package/src/sap/ui/table/extensions/Synchronization.js +16 -18
  36. package/src/sap/ui/table/library.js +11 -11
  37. package/src/sap/ui/table/library.support.js +1 -1
  38. package/src/sap/ui/table/menus/AnalyticalTableContextMenu.js +2 -2
  39. package/src/sap/ui/table/menus/ColumnHeaderMenuAdapter.js +2 -2
  40. package/src/sap/ui/table/menus/ContextMenu.js +2 -2
  41. package/src/sap/ui/table/menus/LegacyColumnMenuAdapter.js +1 -1
  42. package/src/sap/ui/table/menus/MobileColumnHeaderMenuAdapter.js +2 -2
  43. package/src/sap/ui/table/plugins/BindingSelection.js +27 -13
  44. package/src/sap/ui/table/plugins/MultiSelectionPlugin.js +63 -52
  45. package/src/sap/ui/table/plugins/ODataV4Aggregation.js +2 -2
  46. package/src/sap/ui/table/plugins/ODataV4Hierarchy.js +2 -2
  47. package/src/sap/ui/table/plugins/ODataV4MultiLevel.js +2 -2
  48. package/src/sap/ui/table/plugins/ODataV4MultiSelection.js +78 -71
  49. package/src/sap/ui/table/plugins/ODataV4Selection.js +2 -2
  50. package/src/sap/ui/table/plugins/ODataV4SingleSelection.js +2 -2
  51. package/src/sap/ui/table/plugins/PluginBase.js +2 -2
  52. package/src/sap/ui/table/plugins/SelectionModelSelection.js +26 -13
  53. package/src/sap/ui/table/plugins/SelectionPlugin.js +16 -14
  54. package/src/sap/ui/table/rowmodes/Auto.js +5 -13
  55. package/src/sap/ui/table/rowmodes/Fixed.js +3 -4
  56. package/src/sap/ui/table/rowmodes/Interactive.js +21 -27
  57. package/src/sap/ui/table/rowmodes/RowMode.js +20 -88
  58. package/src/sap/ui/table/rowmodes/Type.js +1 -1
  59. package/src/sap/ui/table/rowmodes/Variable.js +2 -2
  60. package/src/sap/ui/table/rules/Accessibility.support.js +1 -1
  61. package/src/sap/ui/table/rules/Binding.support.js +1 -1
  62. package/src/sap/ui/table/rules/ColumnTemplate.support.js +1 -1
  63. package/src/sap/ui/table/rules/Plugins.support.js +1 -1
  64. package/src/sap/ui/table/rules/Rows.support.js +1 -1
  65. package/src/sap/ui/table/rules/TableHelper.support.js +1 -1
  66. package/src/sap/ui/table/themes/base/Cell.less +26 -16
  67. package/src/sap/ui/table/themes/base/CheckBox.less +51 -0
  68. package/src/sap/ui/table/themes/base/HeaderSelector.less +61 -0
  69. package/src/sap/ui/table/themes/base/RowSelection.less +9 -138
  70. package/src/sap/ui/table/themes/base/library.source.less +3 -1
  71. package/src/sap/ui/table/themes/sap_hcb/base_Cell.less +1 -1
  72. package/src/sap/ui/table/themes/sap_hcb/base_RowSelection.less +1 -1
  73. package/src/sap/ui/table/themes/sap_hcb/library.source.less +1 -1
  74. package/src/sap/ui/table/utils/TableUtils.js +2 -2
  75. package/src/sap/ui/table/utils/_ColumnUtils.js +2 -2
  76. package/src/sap/ui/table/utils/_GroupingUtils.js +2 -2
  77. package/src/sap/ui/table/utils/_HookUtils.js +2 -2
  78. package/src/sap/ui/table/utils/_MenuUtils.js +2 -2
package/THIRDPARTY.txt CHANGED
@@ -202,7 +202,7 @@ License: Apache-2.0
202
202
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/Apache-2.0.txt
203
203
  Contained in: src/sap.ui.core/src/sap/ui/thirdparty/caja-html-sanitizer.js
204
204
 
205
- Component: Unicode Common Locale Data Repository, version: 46.1.0
205
+ Component: Unicode Common Locale Data Repository, version: 48.0.0
206
206
  Copyright: 1991-2024 Unicode, Inc.
207
207
  License: LicenseRef-Unicode-3.0
208
208
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/LicenseRef-Unicode-3.0.txt
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.ui.table",
3
- "version": "1.143.0",
3
+ "version": "1.144.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/UI5/openui5.git"
15
15
  },
16
16
  "dependencies": {
17
- "@openui5/sap.ui.core": "1.143.0",
18
- "@openui5/sap.ui.unified": "1.143.0"
17
+ "@openui5/sap.ui.core": "1.144.0",
18
+ "@openui5/sap.ui.unified": "1.144.0"
19
19
  }
20
20
  }
@@ -4,9 +4,9 @@
4
4
  <name>sap.ui.table</name>
5
5
  <vendor>SAP SE</vendor>
6
6
  <copyright>OpenUI5
7
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
7
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.143.0</version>
9
+ <version>1.144.0</version>
10
10
 
11
11
  <documentation>Table-like controls, mainly for desktop scenarios.</documentation>
12
12
 
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -47,7 +47,7 @@ sap.ui.define([
47
47
  * @extends sap.ui.table.Column
48
48
  *
49
49
  * @author SAP SE
50
- * @version 1.143.0
50
+ * @version 1.144.0
51
51
  *
52
52
  * @constructor
53
53
  * @public
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -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.143.0
23
+ * @version 1.144.0
24
24
  *
25
25
  * @constructor
26
26
  * @public
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -52,7 +52,7 @@ sap.ui.define([
52
52
  * @see {@link topic:148892ff9aea4a18b912829791e38f3e Tables: Which One Should I Choose?}
53
53
  *
54
54
  * @extends sap.ui.table.Table
55
- * @version 1.143.0
55
+ * @version 1.144.0
56
56
  *
57
57
  * @constructor
58
58
  * @public
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -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.143.0
66
+ * @version 1.144.0
67
67
  *
68
68
  * @constructor
69
69
  * @public
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -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.143.0
43
+ * @version 1.144.0
44
44
  *
45
45
  * @constructor
46
46
  * @public
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -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.143.0
35
+ * @version 1.144.0
36
36
  *
37
37
  * @constructor
38
38
  * @private
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -219,7 +219,7 @@ sap.ui.define([
219
219
  oRm.openStart("div");
220
220
  oRm.class("sapUiTableCellInner");
221
221
  oRm.openEnd();
222
- TableRenderer.renderTableCellControl(oRm, oTable, oCell, bIsFirstColumn);
222
+ TableRenderer.renderDataCellControl(oRm, oTable, oCell, {isFirstColumn: bIsFirstColumn});
223
223
  oRm.close("div");
224
224
  }
225
225
 
@@ -0,0 +1,90 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ sap.ui.define([
8
+ "./HeaderSelectorRenderer",
9
+ "sap/ui/core/Control"
10
+ ], function(
11
+ HeaderSelectorRenderer,
12
+ Control
13
+ ) {
14
+ "use strict";
15
+
16
+ /**
17
+ * Constructor for a new HeaderSelector.
18
+ *
19
+ * @param {string} [sId] ID for the new control, generated automatically if no ID is given
20
+ * @param {object} [mSettings] Initial settings for the new control
21
+ *
22
+ * @class
23
+ * The <code>HeaderSelector</code> control renders the header selector cell content.
24
+ * This control must only be used in the context of the <code>sap.ui.table.Table</code> control.
25
+ * It is managed by selection plugins which update its state based on the current selection.
26
+ *
27
+ * @extends sap.ui.core.Control
28
+ * @version 1.144.0
29
+ *
30
+ * @constructor
31
+ * @private
32
+ * @alias sap.ui.table.HeaderSelector
33
+ */
34
+ const HeaderSelector = Control.extend("sap.ui.table.HeaderSelector", /** @lends sap.ui.table.HeaderSelector.prototype */ {
35
+ metadata: {
36
+ library: "sap.ui.table",
37
+ properties: {
38
+ /**
39
+ * Type of the header selector.
40
+ *
41
+ * "CheckBox" - Renders a checkbox.
42
+ * Supported properties: visible, enabled, tooltip (has default value based on selected state), selected
43
+ *
44
+ * "Icon" - Renders an icon.
45
+ * Supported properties: visible, enabled, tooltip, icon
46
+ */
47
+ type: {type: "string", group: "Appearance", defaultValue: "CheckBox"},
48
+
49
+ /**
50
+ * Whether the header selector is visible.
51
+ */
52
+ visible: {type: "boolean", group: "Appearance", defaultValue: false},
53
+
54
+ /**
55
+ * Whether the header selector is enabled.
56
+ */
57
+ enabled: {type: "boolean", group: "Behavior", defaultValue: true},
58
+
59
+ /**
60
+ * Whether the checkbox is selected.
61
+ *
62
+ * Only used if type is "CheckBox".
63
+ */
64
+ checkBoxSelected: {type: "boolean", group: "Appearance", defaultValue: false},
65
+
66
+ /**
67
+ * Icon URI.
68
+ *
69
+ * Only used if type is "Icon".
70
+ */
71
+ icon: {type: "sap.ui.core.URI", group: "Appearance", defaultValue: ""}
72
+ }
73
+ },
74
+ renderer: HeaderSelectorRenderer
75
+ });
76
+
77
+ /**
78
+ * Resets all properties to their default values.
79
+ */
80
+ HeaderSelector.prototype.resetSettings = function() {
81
+ this.resetProperty("type");
82
+ this.resetProperty("visible");
83
+ this.resetProperty("enabled");
84
+ this.resetProperty("checkBoxSelected");
85
+ this.resetProperty("icon");
86
+ this.destroyTooltip();
87
+ };
88
+
89
+ return HeaderSelector;
90
+ });
@@ -0,0 +1,88 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ // Provides default renderer for control sap.ui.table.HeaderSelector
8
+ sap.ui.define([
9
+ "./utils/TableUtils"
10
+ ], function(
11
+ TableUtils
12
+ ) {
13
+ "use strict";
14
+
15
+ /**
16
+ * HeaderSelector renderer.
17
+ * @namespace
18
+ */
19
+ const HeaderSelectorRenderer = {
20
+ apiVersion: 2
21
+ };
22
+
23
+ /**
24
+ * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}.
25
+ *
26
+ * @param {sap.ui.core.RenderManager} rm RenderManager instance
27
+ * @param {sap.ui.table.HeaderSelector} oHeaderSelector HeaderSelector to be rendered
28
+ */
29
+ HeaderSelectorRenderer.render = function(rm, oHeaderSelector) {
30
+ const sType = oHeaderSelector.getType();
31
+ const bVisible = oHeaderSelector.getVisible();
32
+ let sTooltip = oHeaderSelector.getTooltip_AsString();
33
+
34
+ rm.openStart("div", oHeaderSelector);
35
+ rm.class("sapUiTableHeaderSelector");
36
+
37
+ // For accessibility reasons, the HeaderSelector acts as the table cell and receives the focus instead of the actual cell.
38
+ rm.class("sapUiTableCell");
39
+ rm.class("sapUiTableHeaderCell");
40
+ rm.class("sapUiTableRowSelectionHeaderCell");
41
+ rm.attr("tabindex", "-1");
42
+
43
+ if (bVisible) {
44
+ if (!oHeaderSelector.getEnabled()) {
45
+ rm.class("sapUiTableHeaderSelectorDisabled");
46
+ }
47
+
48
+ if (sType === "CheckBox") {
49
+ if (oHeaderSelector.getCheckBoxSelected()) {
50
+ sTooltip ??= TableUtils.getResourceText("TBL_DESELECT_ALL");
51
+ } else {
52
+ sTooltip ??= TableUtils.getResourceText("TBL_SELECT_ALL");
53
+ }
54
+ }
55
+
56
+ if (sTooltip) {
57
+ rm.attr("title", sTooltip);
58
+ }
59
+
60
+ const oTable = oHeaderSelector.getParent();
61
+ oTable._getAccRenderExtension().writeAriaAttributesFor(rm, oTable, "ColumnRowHeader", oHeaderSelector);
62
+ }
63
+
64
+ rm.openEnd();
65
+
66
+ if (bVisible) {
67
+ if (sType === "Icon") {
68
+ rm.icon(oHeaderSelector.getIcon(), ["sapUiTableHeaderSelectorIcon"], {
69
+ "title": null
70
+ });
71
+ } else if (sType === "CheckBox") {
72
+ rm.openStart("div");
73
+ rm.class("sapUiTableCheckBox");
74
+
75
+ if (oHeaderSelector.getCheckBoxSelected()) {
76
+ rm.class("sapUiTableCheckBoxSelected");
77
+ }
78
+
79
+ rm.openEnd();
80
+ rm.close("div");
81
+ }
82
+ }
83
+
84
+ rm.close("div");
85
+ };
86
+
87
+ return HeaderSelectorRenderer;
88
+ });
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -135,7 +135,7 @@ sap.ui.define([
135
135
  * @class
136
136
  * The row.
137
137
  * @extends sap.ui.core.Element
138
- * @version 1.143.0
138
+ * @version 1.144.0
139
139
  *
140
140
  * @constructor
141
141
  * @public
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -39,7 +39,7 @@ sap.ui.define([
39
39
  * of the order in the <code>items</code> aggregation.
40
40
  *
41
41
  * @extends sap.ui.core.Control
42
- * @version 1.143.0
42
+ * @version 1.144.0
43
43
  *
44
44
  * @constructor
45
45
  * @public
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @extends sap.ui.core.Element
37
37
  *
38
38
  * @author SAP SE
39
- * @version 1.143.0
39
+ * @version 1.144.0
40
40
  * @since 1.45
41
41
  *
42
42
  * @constructor
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -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.143.0
30
+ * @version 1.144.0
31
31
  *
32
32
  * @constructor
33
33
  * @public
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -17,6 +17,7 @@ sap.ui.define([
17
17
  "sap/ui/model/BindingMode",
18
18
  "./Column",
19
19
  "./Row",
20
+ "./HeaderSelector",
20
21
  "./library",
21
22
  "./utils/TableUtils",
22
23
  "./extensions/ExtensionBase",
@@ -50,6 +51,7 @@ sap.ui.define([
50
51
  BindingMode,
51
52
  Column,
52
53
  Row,
54
+ HeaderSelector,
53
55
  library,
54
56
  TableUtils,
55
57
  ExtensionBase,
@@ -106,7 +108,7 @@ sap.ui.define([
106
108
  * the data model and binding being used.
107
109
  * </p>
108
110
  * @extends sap.ui.core.Control
109
- * @version 1.143.0
111
+ * @version 1.144.0
110
112
  *
111
113
  * @constructor
112
114
  * @public
@@ -1100,6 +1102,8 @@ sap.ui.define([
1100
1102
  }
1101
1103
 
1102
1104
  this._bInvalid = true;
1105
+
1106
+ this.addAggregation("_hiddenDependents", new HeaderSelector(this.getId() + "-selall"));
1103
1107
  };
1104
1108
 
1105
1109
  /**
@@ -1495,24 +1499,14 @@ sap.ui.define([
1495
1499
  };
1496
1500
 
1497
1501
  Table.prototype.onBeforeRendering = function(oEvent) {
1498
- // The table can be re-rendered as part of the rendering of its parent, without being invalidated before.
1499
- this._bInvalid = true;
1500
-
1501
1502
  this._detachEvents();
1502
-
1503
- if (oEvent && oEvent.isMarked("renderRows")) {
1504
- return;
1505
- }
1506
-
1503
+ this._adjustFirstVisibleRowToTotalRowCount();
1507
1504
  this._cleanUpTimers();
1508
1505
  this._aTableHeaders = []; // free references to DOM elements
1509
1506
  };
1510
1507
 
1511
1508
  Table.prototype.onAfterRendering = function(oEvent) {
1512
- const bRenderedRows = oEvent && oEvent.isMarked("renderRows");
1513
-
1514
1509
  this._bInvalid = false;
1515
-
1516
1510
  this._attachEvents();
1517
1511
 
1518
1512
  // since the row is an element it has no own renderer. Anyway, logically it has a domref. Let the rows
@@ -1520,18 +1514,11 @@ sap.ui.define([
1520
1514
  this._initRowDomRefs();
1521
1515
 
1522
1516
  // enable/disable text selection for column headers
1523
- if (!this._bAllowColumnHeaderTextSelection && !bRenderedRows) {
1517
+ if (!this._bAllowColumnHeaderTextSelection) {
1524
1518
  this._disableTextSelection(this.$().find(".sapUiTableColHdrCnt"));
1525
1519
  }
1526
1520
 
1527
- // If only the rows are rendered, the css flag is not removed while the positioning of the actions is reset. Therefore, the flag must be
1528
- // manually removed so that the actions are later correctly positioned.
1529
- this.getDomRef().classList.remove("sapUiTableRActFlexible");
1530
-
1531
- if (!bRenderedRows) {
1532
- // needed for the column resize ruler
1533
- this._aTableHeaders = this.$().find(".sapUiTableColHdrCnt th");
1534
- }
1521
+ this._aTableHeaders = this.$().find(".sapUiTableColHdrCnt th");
1535
1522
 
1536
1523
  this._updateTableSizes(TableUtils.RowsUpdateReason.Render, true);
1537
1524
  TableUtils.registerResizeHandler(this, "Table", this._onTableResize.bind(this));
@@ -1763,13 +1750,8 @@ sap.ui.define([
1763
1750
  };
1764
1751
 
1765
1752
  Table.prototype.applyFocusInfo = function(mFocusInfo) {
1766
- delete this._bApplyFocusInfoFailed;
1767
1753
  if (mFocusInfo && mFocusInfo.customId) {
1768
- if (document.getElementById(mFocusInfo.customId)) {
1769
- jQuery(document.getElementById(mFocusInfo.customId)).trigger("focus");
1770
- } else {
1771
- this._bApplyFocusInfoFailed = true;
1772
- }
1754
+ jQuery(document.getElementById(mFocusInfo.customId)).trigger("focus");
1773
1755
  } else {
1774
1756
  Control.prototype.applyFocusInfo.apply(this, arguments);
1775
1757
  }
@@ -3264,10 +3246,6 @@ sap.ui.define([
3264
3246
  return;
3265
3247
  }
3266
3248
 
3267
- const mRenderConfig = this._getSelectionPlugin().getRenderConfig();
3268
-
3269
- const $SelectAll = this.$("selall");
3270
-
3271
3249
  // trigger the rows to update their selection
3272
3250
  const aRows = this.getRows();
3273
3251
 
@@ -3275,28 +3253,6 @@ sap.ui.define([
3275
3253
  const oRow = aRows[i];
3276
3254
  oRow._updateSelection();
3277
3255
  }
3278
-
3279
- if (!mRenderConfig.headerSelector.visible) {
3280
- return;
3281
- }
3282
-
3283
- // update the DOM without going through the whole table rendering
3284
- if (mRenderConfig.headerSelector.type === "toggle") {
3285
- const bAllRowsSelected = mRenderConfig.headerSelector.selected;
3286
-
3287
- $SelectAll.toggleClass("sapUiTableSelAll", !bAllRowsSelected);
3288
- this._getAccExtension().setSelectAllState(bAllRowsSelected);
3289
- } else if (mRenderConfig.headerSelector.type === "custom") {
3290
- $SelectAll.toggleClass("sapUiTableSelAllDisabled", !mRenderConfig.headerSelector.enabled);
3291
-
3292
- if (mRenderConfig.headerSelector.enabled) {
3293
- $SelectAll.removeAttr("aria-disabled");
3294
- } else {
3295
- $SelectAll.attr("aria-disabled", "true");
3296
- }
3297
- const sTitle = mRenderConfig.headerSelector.tooltip;
3298
- $SelectAll.attr('title', sTitle);
3299
- }
3300
3256
  };
3301
3257
 
3302
3258
  /**
@@ -4125,6 +4081,17 @@ sap.ui.define([
4125
4081
  return this;
4126
4082
  };
4127
4083
 
4084
+ /**
4085
+ * Gets the header selector control.
4086
+ *
4087
+ * @return {sap.ui.table.HeaderSelector} The header selector control.
4088
+ * @private
4089
+ */
4090
+ Table.prototype._getHeaderSelector = function() {
4091
+ const aHiddenDependents = this.getAggregation("_hiddenDependents") || [];
4092
+ return aHiddenDependents.find((oDependent) => oDependent.isA("sap.ui.table.HeaderSelector"));
4093
+ };
4094
+
4128
4095
  /**
4129
4096
  * Gets the selection plugin. If no selection plugin is applied to the table, a legacy selection plugin is returned.
4130
4097
  *
@@ -4144,6 +4111,7 @@ sap.ui.define([
4144
4111
 
4145
4112
  if (oSelectionPlugin && oLegacySelectionPlugin) {
4146
4113
  delete _private(this).oLegacySelectionPlugin;
4114
+ delete oLegacySelectionPlugin.isMainSelectionPlugin;
4147
4115
  oLegacySelectionPlugin.destroy();
4148
4116
  } else if (!oSelectionPlugin && !oLegacySelectionPlugin && !this.isDestroyed()) {
4149
4117
  oLegacySelectionPlugin = this._createLegacySelectionPlugin();
@@ -4154,6 +4122,7 @@ sap.ui.define([
4154
4122
  */
4155
4123
  oLegacySelectionPlugin.setSelectedIndex(this.getProperty("selectedIndex"));
4156
4124
  oLegacySelectionPlugin.attachSelectionChange(onLegacySelectionChanged, this);
4125
+ oLegacySelectionPlugin.isMainSelectionPlugin = true;
4157
4126
  this.addAggregation("_hiddenDependents", oLegacySelectionPlugin);
4158
4127
 
4159
4128
  // Temporary fix for the Support Assistant hacks. Support Assistant should implement a selection plugin.
@@ -4178,19 +4147,27 @@ sap.ui.define([
4178
4147
  };
4179
4148
 
4180
4149
  Table.prototype._onSelectionPluginChange = function() {
4181
- let oSelectionPlugin = SelectionPlugin.findOn(this);
4150
+ const oCurrentSelectionPlugin = _private(this).oSelectionPlugin;
4151
+ let oNewSelectionPlugin = SelectionPlugin.findOn(this);
4182
4152
 
4183
4153
  /**
4184
4154
  * @deprecated As of version 1.120
4185
4155
  */
4186
4156
  if (this.getPlugins().length > 0) {
4187
- oSelectionPlugin = this.getPlugins()[0];
4157
+ oNewSelectionPlugin = this.getPlugins()[0];
4188
4158
  }
4189
4159
 
4190
- if (_private(this).oSelectionPlugin !== oSelectionPlugin) {
4191
- _private(this).oSelectionPlugin?.detachSelectionChange(this._updateSelection, this);
4192
- oSelectionPlugin?.attachSelectionChange(this._updateSelection, this);
4193
- _private(this).oSelectionPlugin = oSelectionPlugin;
4160
+ if (oCurrentSelectionPlugin !== oNewSelectionPlugin) {
4161
+ if (oCurrentSelectionPlugin) {
4162
+ oCurrentSelectionPlugin.detachSelectionChange(this._updateSelection, this);
4163
+ delete oCurrentSelectionPlugin.isMainSelectionPlugin;
4164
+ }
4165
+ if (oNewSelectionPlugin) {
4166
+ oNewSelectionPlugin.attachSelectionChange(this._updateSelection, this);
4167
+ oNewSelectionPlugin.isMainSelectionPlugin = true;
4168
+ }
4169
+ this._getHeaderSelector()?.resetSettings();
4170
+ _private(this).oSelectionPlugin = oNewSelectionPlugin;
4194
4171
  }
4195
4172
  };
4196
4173
 
@@ -1,6 +1,6 @@
1
1
  /*
2
2
  * OpenUI5
3
- * (c) Copyright 2025 SAP SE or an SAP affiliate company.
3
+ * (c) Copyright 2026 SAP SE or an SAP affiliate company.
4
4
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
5
  */
6
6
 
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.base.ManagedObject
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.143.0
37
+ * @version 1.144.0
38
38
  * @since 1.21.1
39
39
  *
40
40
  * @constructor