@openui5/sap.ui.table 1.129.0 → 1.130.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 (47) hide show
  1. package/THIRDPARTY.txt +1 -1
  2. package/package.json +3 -3
  3. package/src/sap/ui/table/.library +1 -1
  4. package/src/sap/ui/table/AnalyticalColumn.js +1 -1
  5. package/src/sap/ui/table/AnalyticalColumnMenu.js +1 -1
  6. package/src/sap/ui/table/AnalyticalTable.js +2 -2
  7. package/src/sap/ui/table/Column.js +1 -1
  8. package/src/sap/ui/table/ColumnMenu.js +1 -1
  9. package/src/sap/ui/table/CreationRow.js +1 -1
  10. package/src/sap/ui/table/Row.js +1 -1
  11. package/src/sap/ui/table/RowAction.js +1 -1
  12. package/src/sap/ui/table/RowActionItem.js +1 -1
  13. package/src/sap/ui/table/RowSettings.js +1 -1
  14. package/src/sap/ui/table/Table.js +3 -2
  15. package/src/sap/ui/table/TablePersoController.js +1 -1
  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 +3 -3
  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/GroupHeaderContextMenuAdapter.js +1 -1
  30. package/src/sap/ui/table/menus/MobileColumnHeaderMenuAdapter.js +1 -1
  31. package/src/sap/ui/table/messagebundle_et.properties +1 -1
  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 +1 -1
  35. package/src/sap/ui/table/plugins/SelectionPlugin.js +1 -1
  36. package/src/sap/ui/table/plugins/V4Aggregation.js +58 -59
  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 +4 -11
  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/utils/TableUtils.js +1 -1
  43. package/src/sap/ui/table/utils/_BindingUtils.js +1 -1
  44. package/src/sap/ui/table/utils/_ColumnUtils.js +1 -1
  45. package/src/sap/ui/table/utils/_GroupingUtils.js +1 -1
  46. package/src/sap/ui/table/utils/_HookUtils.js +1 -1
  47. package/src/sap/ui/table/utils/_MenuUtils.js +1 -1
package/THIRDPARTY.txt CHANGED
@@ -6,7 +6,7 @@ The full text of all referenced licenses is appended at the end of this file.
6
6
 
7
7
  Library: sap.m:
8
8
 
9
- Component: purify.js, version: 2.3.8
9
+ Component: purify.js, version: 3.1.7
10
10
  Copyright: Mario Heiderich
11
11
  License: Apache-2.0
12
12
  License Text: https://github.com/SAP/openui5/blob/master/LICENSES/Apache-2.0.txt
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.ui.table",
3
- "version": "1.129.0",
3
+ "version": "1.130.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.129.0",
18
- "@openui5/sap.ui.unified": "1.129.0"
17
+ "@openui5/sap.ui.core": "1.130.0",
18
+ "@openui5/sap.ui.unified": "1.130.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.129.0</version>
9
+ <version>1.130.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.129.0
50
+ * @version 1.130.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.129.0
23
+ * @version 1.130.0
24
24
  *
25
25
  * @constructor
26
26
  * @public
@@ -50,7 +50,7 @@ sap.ui.define([
50
50
  * @see https://github.com/SAP/odata-vocabularies/blob/main/docs/v2-annotations.md
51
51
  *
52
52
  * @extends sap.ui.table.Table
53
- * @version 1.129.0
53
+ * @version 1.130.0
54
54
  *
55
55
  * @constructor
56
56
  * @public
@@ -158,7 +158,7 @@ sap.ui.define([
158
158
  dirty: {type: "boolean", group: "Appearance", defaultValue: null, deprecated: true},
159
159
 
160
160
  /**
161
- * If set to <code>true</code>, the full set of <code>MenuItem</code> instances shown in to the group header menu. The value
161
+ * If set to <code>true</code>, the full set of <code>MenuItem</code> instances is shown in the group header menu. The value
162
162
  * <code>false</code> means that only a reduced set of group header menu items is shown.
163
163
  */
164
164
  extendedGroupHeaderMenu: {type: "boolean", group: "Behavior", defaultValue: true, visibility: "hidden"}
@@ -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.129.0
66
+ * @version 1.130.0
67
67
  *
68
68
  * @constructor
69
69
  * @public
@@ -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.129.0
43
+ * @version 1.130.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.129.0
35
+ * @version 1.130.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.129.0
138
+ * @version 1.130.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.129.0
38
+ * @version 1.130.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.129.0
27
+ * @version 1.130.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.129.0
30
+ * @version 1.130.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.129.0
105
+ * @version 1.130.0
106
106
  *
107
107
  * @constructor
108
108
  * @public
@@ -2665,7 +2665,8 @@ sap.ui.define([
2665
2665
  /**
2666
2666
  * Triggers automatic resizing of a column to the widest content.
2667
2667
  *
2668
- * @experimental Experimental! Presently implemented to only work with a very limited set of controls (e.g. sap.m.Text).
2668
+ * See {@link sap.ui.table.Column#autoResize} for details about the auto-resize feature.
2669
+ *
2669
2670
  * @param {int} iColIndex The index of the column in the list of visible columns.
2670
2671
  * @function
2671
2672
  * @public
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.ui.base.ManagedObject
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.129.0
37
+ * @version 1.130.0
38
38
  * @since 1.21.1
39
39
  *
40
40
  * @constructor
@@ -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.129.0
45
+ * @version 1.130.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.129.0
972
+ * @version 1.130.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.129.0
47
+ * @version 1.130.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.129.0
277
+ * @version 1.130.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.129.0
22
+ * @version 1.130.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.129.0
270
+ * @version 1.130.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.129.0
68
+ * @version 1.130.0
69
69
  * @constructor
70
70
  * @private
71
71
  * @alias sap.ui.table.extensions.KeyboardDelegate
@@ -1019,7 +1019,7 @@ sap.ui.define([
1019
1019
  const oBusyIndicator = this.getDomRef("busyIndicator");
1020
1020
  if (oBusyIndicator) {
1021
1021
  this._getKeyboardExtension().setSilentFocus(oBusyIndicator);
1022
- } else if (this.getColumnHeaderVisible() && (TableUtils.getVisibleColumnCount(this) || this.getSelectionMode() !== SelectionMode.None)) {
1022
+ } else if (this.getColumnHeaderVisible() && (TableUtils.getVisibleColumnCount(this) || TableUtils.hasRowHeader(this))) {
1023
1023
  setFocusOnColumnHeaderOfLastFocusedDataCell(this, oEvent);
1024
1024
  } else if (bNoData) {
1025
1025
  this._getKeyboardExtension().setSilentFocus(this.$("noDataCnt"));
@@ -1031,7 +1031,7 @@ sap.ui.define([
1031
1031
  this._getKeyboardExtension().setSilentFocus(oBusyIndicator);
1032
1032
  } else if (this.getRows().length && !TableUtils.isNoDataVisible(this)) {
1033
1033
  restoreFocusOnLastFocusedDataCell(this, oEvent);
1034
- } else if (this.getColumnHeaderVisible() && (TableUtils.getVisibleColumnCount(this) || this.getSelectionMode() !== SelectionMode.None)) {
1034
+ } else if (this.getColumnHeaderVisible() && (TableUtils.getVisibleColumnCount(this) || TableUtils.hasRowHeader(this))) {
1035
1035
  setFocusOnColumnHeaderOfLastFocusedDataCell(this, oEvent);
1036
1036
  }
1037
1037
  }
@@ -670,7 +670,7 @@ sap.ui.define([
670
670
  * @class Extension for sap.ui.table.Table which handles mouse and touch related things.
671
671
  * @extends sap.ui.table.extensions.ExtensionBase
672
672
  * @author SAP SE
673
- * @version 1.129.0
673
+ * @version 1.130.0
674
674
  * @constructor
675
675
  * @private
676
676
  * @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.129.0
2298
+ * @version 1.130.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.129.0
30
+ * @version 1.130.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.129.0
188
+ * @version 1.130.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.129.0
30
+ * @version 1.130.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.129.0",
37
+ version: "1.130.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.129.0
99
+ * @version 1.130.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.129.0
130
+ * @version 1.130.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.129.0
161
+ * @version 1.130.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.129.0
192
+ * @version 1.130.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.129.0
230
+ * @version 1.130.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.129.0
257
+ * @version 1.130.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.129.0
302
+ * @version 1.130.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.129.0
403
+ * @version 1.130.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.129.0
417
+ * @version 1.130.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.129.0
38
+ * @version 1.130.0
39
39
  * @private
40
40
  * @alias sap.ui.table.menus.ColumnHeaderMenuAdapter
41
41
  */
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  *
30
30
  * @extends sap.ui.base.Object
31
31
  * @author SAP SE
32
- * @version 1.129.0
32
+ * @version 1.130.0
33
33
  * @private
34
34
  * @alias sap.ui.table.menus.GroupHeaderContextMenuAdapter
35
35
  */
@@ -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.129.0
62
+ * @version 1.130.0
63
63
  * @private
64
64
  * @alias sap.ui.table.menus.MobileColumnHeaderMenuAdapter
65
65
  */
@@ -6,7 +6,7 @@ TBL_SORT_ASC=Sordi kasvavalt
6
6
  TBL_SORT_DESC=Sordi kahanevalt
7
7
  TBL_GROUP=Grupp
8
8
  TBL_UNGROUP=T\u00FChista grupeering
9
- TBL_UNGROUP_LEVEL=Ungroup Level
9
+ TBL_UNGROUP_LEVEL=T\u00FChista taseme grupeering
10
10
  TBL_UNGROUP_ALL=T\u00FChista k\u00F5ik grupeeringud
11
11
  TBL_COLUMNS=Veerud
12
12
  TBL_FREEZE=K\u00FClmuta
@@ -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.129.0
24
+ * @version 1.130.0
25
25
  * @constructor
26
26
  * @private
27
27
  * @alias sap.ui.table.plugins.BindingSelection
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.ui.core.Element
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.129.0
31
+ * @version 1.130.0
32
32
  *
33
33
  * @private
34
34
  * @experimental Since 1.75
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  *
24
24
  * @class Implements the selection methods for a Table
25
25
  * @extends sap.ui.table.plugins.SelectionPlugin
26
- * @version 1.129.0
26
+ * @version 1.130.0
27
27
  * @constructor
28
28
  * @private
29
29
  * @alias sap.ui.table.plugins.SelectionModelSelection
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @class Implements the selection methods for a table.
28
28
  * @extends sap.ui.core.Element
29
29
  * @author SAP SE
30
- * @version 1.129.0
30
+ * @version 1.130.0
31
31
  * @public
32
32
  * @since 1.64
33
33
  * @experimental As of version 1.64
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @class TODO (don't forget to document fixed row count restrictions because fixed rows are set by this plugin)
33
33
  * @extends sap.ui.table.plugins.PluginBase
34
34
  * @author SAP SE
35
- * @version 1.129.0
35
+ * @version 1.130.0
36
36
  * @private
37
37
  * @since 1.76
38
38
  * @ui5-restricted sap.ui.mdc
@@ -277,59 +277,56 @@ sap.ui.define([
277
277
  this._aGroupLevels = undefined;
278
278
  this._sSearch = undefined;
279
279
  } else {
280
- const aAllUnitProperties = [];
281
- let aAllAdditionalProperties = [];
282
- let aAdditionalProperties;
280
+ const oAllUnitPropertyPaths = new Set();
281
+ const oAllAdditionalPropertyPaths = new Set();
282
+ const aVisiblePropertyKeys = oAggregateInfo.visible.concat(); // Copy
283
283
 
284
284
  // Always use keys in the properties to be grouped
285
285
  this._mGroup = this.getPropertyInfos().reduce(function(mGroup, oPropertyInfo) {
286
286
  if (oPropertyInfo.isKey) {
287
287
  mGroup[oPropertyInfo.path] = {};
288
- aAdditionalProperties = getAdditionalPropertyPaths(this, oPropertyInfo);
289
- if (aAdditionalProperties) {
290
- mGroup[oPropertyInfo.path].additionally = aAdditionalProperties;
291
- aAllAdditionalProperties.concat(aAdditionalProperties);
292
- }
293
288
  }
294
289
  return mGroup;
295
- }.bind(this), {});
296
-
290
+ }, {});
297
291
  this._mAggregate = {};
298
292
 
299
- // Find grouped and aggregated properties
300
- const aVisible = oAggregateInfo.visible.concat(); // Copy
293
+ // We need to consider groupLevels as visible properties, to add them in the query properly if they have additional properties
301
294
  if (oAggregateInfo.groupLevels) {
302
- // We need to consider groupLevels as visible properties, to add them in the query properly if they have an 'additionally' property
303
295
  oAggregateInfo.groupLevels.forEach(function(sGroupLevelName) {
304
- if (aVisible.indexOf(sGroupLevelName) < 0) {
305
- aVisible.push(sGroupLevelName);
296
+ if (aVisiblePropertyKeys.indexOf(sGroupLevelName) < 0) {
297
+ aVisiblePropertyKeys.push(sGroupLevelName);
306
298
  }
307
299
  });
308
300
  }
309
- aVisible.forEach(function(sVisiblePropertyName) {
310
- const oPropertyInfo = this.findPropertyInfo(sVisiblePropertyName);
311
301
 
312
- if (!oPropertyInfo) {
313
- return;
302
+ for (const sPropertyKey of aVisiblePropertyKeys) {
303
+ const oPropertyInfo = this.findPropertyInfo(sPropertyKey);
304
+
305
+ if (!oPropertyInfo || !oPropertyInfo.groupable && !oPropertyInfo.aggregatable) {
306
+ continue;
314
307
  }
315
308
 
309
+ // Skip text property if its id is visible.
310
+ const oAdditionalProperty = this.findPropertyInfo(oPropertyInfo.additionalProperties?.[0]);
311
+ if (oAdditionalProperty?.text === oPropertyInfo.key && aVisiblePropertyKeys.includes(oAdditionalProperty.key)) {
312
+ continue;
313
+ }
314
+
315
+ // TODO: We cannot really support properties that are both groupable and aggregatable. Either text or unit will be missing. Let
316
+ // property validation fail in MDC if both technicallyAggregatable and technicallyGroupable are true?
317
+
316
318
  if (oPropertyInfo.groupable) {
317
319
  this._mGroup[oPropertyInfo.path] = {};
318
- aAdditionalProperties = getAdditionalPropertyPaths(this, oPropertyInfo);
319
- if (aAdditionalProperties) {
320
- this._mGroup[oPropertyInfo.path].additionally = aAdditionalProperties;
321
- aAllAdditionalProperties = aAllAdditionalProperties.concat(aAdditionalProperties);
322
- }
323
320
  }
324
321
 
325
322
  if (oPropertyInfo.aggregatable) {
326
323
  this._mAggregate[oPropertyInfo.path] = {};
327
324
 
328
- if (oAggregateInfo.grandTotal && (oAggregateInfo.grandTotal.indexOf(sVisiblePropertyName) >= 0)) {
325
+ if (oAggregateInfo.grandTotal && (oAggregateInfo.grandTotal.indexOf(oPropertyInfo.key) >= 0)) {
329
326
  this._mAggregate[oPropertyInfo.path].grandTotal = true;
330
327
  }
331
328
 
332
- if (oAggregateInfo.subtotals && (oAggregateInfo.subtotals.indexOf(sVisiblePropertyName) >= 0)) {
329
+ if (oAggregateInfo.subtotals && (oAggregateInfo.subtotals.indexOf(oPropertyInfo.key) >= 0)) {
333
330
  this._mAggregate[oPropertyInfo.path].subtotals = true;
334
331
  }
335
332
 
@@ -337,30 +334,34 @@ sap.ui.define([
337
334
  const oUnitPropertyInfo = this.findPropertyInfo(oPropertyInfo.unit);
338
335
  if (oUnitPropertyInfo) {
339
336
  this._mAggregate[oPropertyInfo.path].unit = oUnitPropertyInfo.path;
340
- aAllUnitProperties.push(oUnitPropertyInfo.path);
337
+ oAllUnitPropertyPaths.add(oUnitPropertyInfo.path);
341
338
  }
342
339
  }
343
340
 
344
- if (oPropertyInfo.aggregationDetails &&
345
- oPropertyInfo.aggregationDetails.customAggregate &&
346
- oPropertyInfo.aggregationDetails.customAggregate.contextDefiningProperties) {
347
-
341
+ if (!oPropertyInfo.additionalProperties?.length && oPropertyInfo.aggregationDetails?.customAggregate?.contextDefiningProperties) {
348
342
  oPropertyInfo.aggregationDetails.customAggregate.contextDefiningProperties.forEach(function(sContextDefiningPropertyName) {
349
343
  const oDefiningPropertyInfo = this.findPropertyInfo(sContextDefiningPropertyName);
350
344
  if (oDefiningPropertyInfo) {
351
345
  this._mGroup[oDefiningPropertyInfo.path] = {};
352
- aAdditionalProperties = getAdditionalPropertyPaths(this, oPropertyInfo);
353
- if (aAdditionalProperties) {
354
- this._mGroup[oDefiningPropertyInfo.path].additionally = aAdditionalProperties;
355
- aAllAdditionalProperties = aAllAdditionalProperties.concat(aAdditionalProperties);
356
- }
357
346
  }
358
347
  }.bind(this));
359
348
  }
360
349
  }
361
- }.bind(this));
362
350
 
363
- // Handle group levels
351
+ // Additional properties
352
+ const aAdditionalPropertyPaths = getAdditionalPropertyPaths(this, oPropertyInfo);
353
+
354
+ if (oPropertyInfo.aggregatable) {
355
+ for (const sPropertyPath of aAdditionalPropertyPaths) {
356
+ this._mGroup[sPropertyPath] = {};
357
+ }
358
+ } else if (oPropertyInfo.groupable && oPropertyInfo.path in this._mGroup) {
359
+ this._mGroup[oPropertyInfo.path].additionally = aAdditionalPropertyPaths;
360
+ aAdditionalPropertyPaths.forEach((sPath) => oAllAdditionalPropertyPaths.add(sPath));
361
+ }
362
+ }
363
+
364
+ // Visual grouping (expandable groups)
364
365
  this._aGroupLevels = [];
365
366
  if (oAggregateInfo.groupLevels) {
366
367
  oAggregateInfo.groupLevels.forEach(function(sGroupLevelName) {
@@ -375,29 +376,22 @@ sap.ui.define([
375
376
  }
376
377
 
377
378
  // Sanitize the aggregation info
378
- Object.keys(this._mGroup).forEach(function(sKey) {
379
+ for (const sPath in this._mGroup) {
379
380
  // A property may not be in both "group" and "aggregate".
380
- if (this._mAggregate.hasOwnProperty(sKey)) {
381
- if (this._mAggregate[sKey].grandTotal || this._mAggregate[sKey].subtotals) {
382
- delete this._mGroup[sKey];
383
- return;
381
+ if (sPath in this._mAggregate) {
382
+ if (this._mAggregate[sPath].grandTotal || this._mAggregate[sPath].subtotals) {
383
+ delete this._mGroup[sPath];
384
+ continue;
384
385
  } else {
385
- delete this._mAggregate[sKey];
386
+ delete this._mAggregate[sPath];
386
387
  }
387
388
  }
388
389
 
389
- // A property may not be in "group.additionally" if it is in "aggregation.unit".
390
- if (this._mGroup[sKey].additionally) {
391
- this._mGroup[sKey].additionally = this._mGroup[sKey].additionally.filter(function(sAdditionalProperty) {
392
- return aAllUnitProperties.indexOf(sAdditionalProperty) === -1;
393
- });
394
- }
395
-
396
390
  // A property may not be in "group" if it is in "group.additionally".
397
- if (aAllAdditionalProperties.indexOf(sKey) > -1) {
398
- delete this._mGroup[sKey];
391
+ if (oAllAdditionalPropertyPaths.has(sPath)) {
392
+ delete this._mGroup[sPath];
399
393
  }
400
- }.bind(this));
394
+ }
401
395
 
402
396
  this._sSearch = oAggregateInfo.search;
403
397
  }
@@ -431,14 +425,19 @@ sap.ui.define([
431
425
  };
432
426
 
433
427
  function getAdditionalPropertyPaths(oPlugin, oPropertyInfo) {
428
+ const oPropertyPaths = new Set();
429
+
434
430
  if (oPropertyInfo.text) {
435
431
  const oTextPropertyInfo = oPlugin.findPropertyInfo(oPropertyInfo.text);
436
- if (oTextPropertyInfo) {
437
- return [oTextPropertyInfo.path];
438
- }
432
+ oPropertyPaths.add(oTextPropertyInfo.path);
433
+ }
434
+
435
+ for (const sPropertyKey of oPropertyInfo.additionalProperties ?? []) {
436
+ const oPropertyInfo = oPlugin.findPropertyInfo(sPropertyKey);
437
+ oPropertyPaths.add(oPropertyInfo.path);
439
438
  }
440
439
 
441
- return null;
440
+ return Array.from(oPropertyPaths);
442
441
  }
443
442
 
444
443
  function expandRow(oRow) {
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @public
39
39
  *
40
40
  * @author SAP SE
41
- * @version 1.129.0
41
+ * @version 1.130.0
42
42
  */
43
43
  const AutoRowMode = RowMode.extend("sap.ui.table.rowmodes.Auto", /** @lends sap.ui.table.rowmodes.Auto.prototype */ {
44
44
  metadata: {
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @public
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.129.0
30
+ * @version 1.130.0
31
31
  */
32
32
  const FixedRowMode = RowMode.extend("sap.ui.table.rowmodes.Fixed", /** @lends sap.ui.table.rowmodes.Fixed.prototype */ {
33
33
  metadata: {
@@ -27,16 +27,9 @@ sap.ui.define([
27
27
  * @param {object} [mSettings] initial settings for the new control
28
28
  *
29
29
  * @class
30
- * The user can change the number of displayed rows by dragging a resizer.
31
- *
32
- * The following restrictions apply:
33
- * <ul>
34
- * <li>The functionality targets only the mouse interaction (drag and drop). There is no keyboard alternative available.
35
- * An accessible alternative must be provided by applications, for example, by giving the user the possibility to enter
36
- * the number of required rows in an input field.</li>
37
- * <li>The resize interaction is not optimized for touch devices from a design and interaction perspective.
38
- * We do not recommend to use this mode in such scenarios.</li>
39
- * </ul>
30
+ * The user can change the number of displayed rows by dragging a resizer. The resizer is focusable and allows resizing via keyboard shortcuts and
31
+ * context menu.
32
+ * Double clicking the bar performs a quick resize that toggles between the minimum, the default, and the maximum row count.
40
33
  *
41
34
  * @extends sap.ui.table.rowmodes.RowMode
42
35
  * @constructor
@@ -45,7 +38,7 @@ sap.ui.define([
45
38
  * @public
46
39
  *
47
40
  * @author SAP SE
48
- * @version 1.129.0
41
+ * @version 1.130.0
49
42
  */
50
43
  const InteractiveRowMode = RowMode.extend("sap.ui.table.rowmodes.Interactive", /** @lends sap.ui.table.rowmodes.Interactive.prototype */ {
51
44
  metadata: {
@@ -37,7 +37,7 @@ sap.ui.define([
37
37
  * @public
38
38
  *
39
39
  * @author SAP SE
40
- * @version 1.129.0
40
+ * @version 1.130.0
41
41
  */
42
42
  const RowMode = Element.extend("sap.ui.table.rowmodes.RowMode", /** @lends sap.ui.table.rowmodes.RowMode.prototype */ {
43
43
  metadata: {
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.ui.table.rowmodes.RowMode
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.129.0
26
+ * @version 1.130.0
27
27
  *
28
28
  * @constructor
29
29
  * @private
@@ -216,7 +216,7 @@ sap.ui.define([
216
216
  * Static collection of utility functions related to the sap.ui.table.Table, ...
217
217
  *
218
218
  * @author SAP SE
219
- * @version 1.129.0
219
+ * @version 1.130.0
220
220
  * @namespace
221
221
  * @alias sap.ui.table.utils.TableUtils
222
222
  * @private
@@ -14,7 +14,7 @@ sap.ui.define([], function() {
14
14
  * Note: Do not access the functions of this helper directly, but via <code>sap.ui.table.utils.TableUtils.Binding...</code>
15
15
  *
16
16
  * @author SAP SE
17
- * @version 1.129.0
17
+ * @version 1.130.0
18
18
  * @namespace
19
19
  * @alias sap.ui.table.utils._BindingUtils
20
20
  * @private
@@ -18,7 +18,7 @@ sap.ui.define([
18
18
  * Note: Do not access the functions of this helper directly, but via <code>sap.ui.table.utils.TableUtils.Column...</code>
19
19
  *
20
20
  * @author SAP SE
21
- * @version 1.129.0
21
+ * @version 1.130.0
22
22
  * @namespace
23
23
  * @alias sap.ui.table.utils._ColumnUtils
24
24
  * @private
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * Note: Do not access the functions of this helper directly, but via <code>sap.ui.table.utils.TableUtils.Grouping...</code>
25
25
  *
26
26
  * @author SAP SE
27
- * @version 1.129.0
27
+ * @version 1.130.0
28
28
  * @namespace
29
29
  * @alias sap.ui.table.utils._GroupingUtils
30
30
  * @private
@@ -22,7 +22,7 @@ sap.ui.define(["sap/ui/base/DataType", "sap/ui/model/ChangeReason"], function(Da
22
22
  * - There is no concept for public or protected hooks. Never expose a hook directly, only indirectly as can be seen in the examples.
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.129.0
25
+ * @version 1.130.0
26
26
  * @namespace
27
27
  * @alias sap.ui.table.utils._HookUtils
28
28
  *
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * Note: Do not access the functions of this helper directly, but via <code>sap.ui.table.utils.TableUtils.Menu...</code>
43
43
  *
44
44
  * @author SAP SE
45
- * @version 1.129.0
45
+ * @version 1.130.0
46
46
  * @namespace
47
47
  * @alias sap.ui.table.utils._MenuUtils
48
48
  * @private