@openui5/sap.ui.mdc 1.142.0 → 1.143.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 (171) hide show
  1. package/REUSE.toml +1 -1
  2. package/THIRDPARTY.txt +2 -2
  3. package/package.json +4 -4
  4. package/src/sap/ui/mdc/.library +1 -1
  5. package/src/sap/ui/mdc/ActionToolbar.js +89 -63
  6. package/src/sap/ui/mdc/Chart.js +1 -1
  7. package/src/sap/ui/mdc/Control.js +1 -1
  8. package/src/sap/ui/mdc/DefaultTypeMap.js +1 -1
  9. package/src/sap/ui/mdc/Element.js +1 -1
  10. package/src/sap/ui/mdc/Field.js +7 -7
  11. package/src/sap/ui/mdc/FilterBar.js +1 -1
  12. package/src/sap/ui/mdc/FilterField.js +11 -11
  13. package/src/sap/ui/mdc/Geomap.js +1 -1
  14. package/src/sap/ui/mdc/Link.js +1 -1
  15. package/src/sap/ui/mdc/MultiValueField.js +5 -5
  16. package/src/sap/ui/mdc/Table.js +24 -15
  17. package/src/sap/ui/mdc/ValueHelp.js +1 -1
  18. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarAction.js +1 -1
  19. package/src/sap/ui/mdc/chart/ChartImplementationContainer.js +1 -1
  20. package/src/sap/ui/mdc/chart/ChartSelectionDetails.js +1 -1
  21. package/src/sap/ui/mdc/chart/PropertyHelper.js +1 -1
  22. package/src/sap/ui/mdc/chart/ToolbarControlFactory.js +1 -1
  23. package/src/sap/ui/mdc/chart/Util.js +5 -2
  24. package/src/sap/ui/mdc/condition/Condition.js +1 -1
  25. package/src/sap/ui/mdc/condition/ConditionConverter.js +1 -1
  26. package/src/sap/ui/mdc/condition/ConditionModel.js +1 -1
  27. package/src/sap/ui/mdc/condition/FilterConverter.js +1 -1
  28. package/src/sap/ui/mdc/condition/FilterOperatorUtil.js +1 -1
  29. package/src/sap/ui/mdc/condition/Operator.js +1 -1
  30. package/src/sap/ui/mdc/condition/OperatorDynamicDateOption.js +1 -1
  31. package/src/sap/ui/mdc/condition/RangeOperator.js +1 -1
  32. package/src/sap/ui/mdc/enums/TableActionPosition.js +123 -0
  33. package/src/sap/ui/mdc/enums/TablePopinDisplay.js +36 -0
  34. package/src/sap/ui/mdc/field/ConditionType.js +1 -1
  35. package/src/sap/ui/mdc/field/ConditionTypeMixin.js +1 -1
  36. package/src/sap/ui/mdc/field/ConditionsType.js +1 -1
  37. package/src/sap/ui/mdc/field/CustomFieldInfo.js +1 -1
  38. package/src/sap/ui/mdc/field/DynamicDateRangeConditionsType.js +1 -1
  39. package/src/sap/ui/mdc/field/FieldBase.js +95 -49
  40. package/src/sap/ui/mdc/field/FieldInfoBase.js +1 -1
  41. package/src/sap/ui/mdc/field/FieldInput.js +1 -1
  42. package/src/sap/ui/mdc/field/FieldInputRenderUtil.js +1 -1
  43. package/src/sap/ui/mdc/field/FieldMultiInput.js +1 -1
  44. package/src/sap/ui/mdc/field/FieldSelect.js +7 -1
  45. package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
  46. package/src/sap/ui/mdc/field/MultiValueFieldItem.js +1 -1
  47. package/src/sap/ui/mdc/field/TokenDisplay.js +1 -1
  48. package/src/sap/ui/mdc/field/TokenizerDisplay.js +1 -1
  49. package/src/sap/ui/mdc/field/content/ContentFactory.js +3 -0
  50. package/src/sap/ui/mdc/filterbar/FilterBarBase.js +1 -1
  51. package/src/sap/ui/mdc/filterbar/PropertyHelper.js +1 -1
  52. package/src/sap/ui/mdc/filterbar/p13n/AdaptationFilterBar.js +1 -1
  53. package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +1 -1
  54. package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +1 -1
  55. package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +1 -1
  56. package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +1 -1
  57. package/src/sap/ui/mdc/flexibility/actiontoolbar/CombineAction.js +1 -1
  58. package/src/sap/ui/mdc/flexibility/actiontoolbar/SplitAction.js +1 -1
  59. package/src/sap/ui/mdc/geomap/PropertyHelper.js +1 -1
  60. package/src/sap/ui/mdc/library.js +15 -2
  61. package/src/sap/ui/mdc/link/Factory.js +1 -1
  62. package/src/sap/ui/mdc/link/LinkItem.js +1 -1
  63. package/src/sap/ui/mdc/link/Panel.js +1 -1
  64. package/src/sap/ui/mdc/link/PanelItem.js +1 -1
  65. package/src/sap/ui/mdc/link/SemanticObjectMapping.js +1 -1
  66. package/src/sap/ui/mdc/link/SemanticObjectMappingItem.js +1 -1
  67. package/src/sap/ui/mdc/link/SemanticObjectUnavailableAction.js +1 -1
  68. package/src/sap/ui/mdc/messagebundle.properties +2 -0
  69. package/src/sap/ui/mdc/messagebundle_ar.properties +8 -0
  70. package/src/sap/ui/mdc/messagebundle_bg.properties +8 -0
  71. package/src/sap/ui/mdc/messagebundle_ca.properties +8 -0
  72. package/src/sap/ui/mdc/messagebundle_cnr.properties +8 -0
  73. package/src/sap/ui/mdc/messagebundle_cs.properties +8 -0
  74. package/src/sap/ui/mdc/messagebundle_cy.properties +9 -1
  75. package/src/sap/ui/mdc/messagebundle_da.properties +8 -0
  76. package/src/sap/ui/mdc/messagebundle_de.properties +8 -0
  77. package/src/sap/ui/mdc/messagebundle_el.properties +9 -1
  78. package/src/sap/ui/mdc/messagebundle_en.properties +9 -1
  79. package/src/sap/ui/mdc/messagebundle_en_GB.properties +9 -1
  80. package/src/sap/ui/mdc/messagebundle_en_US_saprigi.properties +3 -0
  81. package/src/sap/ui/mdc/messagebundle_es.properties +10 -2
  82. package/src/sap/ui/mdc/messagebundle_es_MX.properties +8 -0
  83. package/src/sap/ui/mdc/messagebundle_et.properties +8 -0
  84. package/src/sap/ui/mdc/messagebundle_fi.properties +8 -0
  85. package/src/sap/ui/mdc/messagebundle_fr.properties +10 -2
  86. package/src/sap/ui/mdc/messagebundle_fr_CA.properties +8 -0
  87. package/src/sap/ui/mdc/messagebundle_hi.properties +8 -0
  88. package/src/sap/ui/mdc/messagebundle_hr.properties +9 -1
  89. package/src/sap/ui/mdc/messagebundle_hu.properties +8 -0
  90. package/src/sap/ui/mdc/messagebundle_id.properties +11 -3
  91. package/src/sap/ui/mdc/messagebundle_it.properties +8 -0
  92. package/src/sap/ui/mdc/messagebundle_iw.properties +8 -0
  93. package/src/sap/ui/mdc/messagebundle_ja.properties +9 -1
  94. package/src/sap/ui/mdc/messagebundle_kk.properties +9 -1
  95. package/src/sap/ui/mdc/messagebundle_ko.properties +8 -0
  96. package/src/sap/ui/mdc/messagebundle_lt.properties +8 -0
  97. package/src/sap/ui/mdc/messagebundle_lv.properties +8 -0
  98. package/src/sap/ui/mdc/messagebundle_mk.properties +8 -0
  99. package/src/sap/ui/mdc/messagebundle_ms.properties +9 -1
  100. package/src/sap/ui/mdc/messagebundle_nl.properties +8 -0
  101. package/src/sap/ui/mdc/messagebundle_no.properties +8 -0
  102. package/src/sap/ui/mdc/messagebundle_pl.properties +8 -0
  103. package/src/sap/ui/mdc/messagebundle_pt.properties +9 -1
  104. package/src/sap/ui/mdc/messagebundle_pt_PT.properties +8 -0
  105. package/src/sap/ui/mdc/messagebundle_ro.properties +9 -1
  106. package/src/sap/ui/mdc/messagebundle_ru.properties +9 -1
  107. package/src/sap/ui/mdc/messagebundle_sh.properties +8 -0
  108. package/src/sap/ui/mdc/messagebundle_sk.properties +8 -0
  109. package/src/sap/ui/mdc/messagebundle_sl.properties +9 -1
  110. package/src/sap/ui/mdc/messagebundle_sr.properties +8 -0
  111. package/src/sap/ui/mdc/messagebundle_sv.properties +8 -0
  112. package/src/sap/ui/mdc/messagebundle_th.properties +8 -0
  113. package/src/sap/ui/mdc/messagebundle_tr.properties +9 -1
  114. package/src/sap/ui/mdc/messagebundle_uk.properties +8 -0
  115. package/src/sap/ui/mdc/messagebundle_vi.properties +11 -3
  116. package/src/sap/ui/mdc/messagebundle_zh_CN.properties +9 -1
  117. package/src/sap/ui/mdc/messagebundle_zh_TW.properties +8 -0
  118. package/src/sap/ui/mdc/mixin/AdaptationMixin.js +1 -1
  119. package/src/sap/ui/mdc/mixin/DelegateMixin.js +1 -1
  120. package/src/sap/ui/mdc/mixin/FilterBarLayoutMixin.js +1 -1
  121. package/src/sap/ui/mdc/mixin/FilterIntegrationMixin.js +1 -1
  122. package/src/sap/ui/mdc/mixin/PromiseMixin.js +1 -1
  123. package/src/sap/ui/mdc/mixin/PropertyHelperMixin.js +1 -1
  124. package/src/sap/ui/mdc/odata/TypeMap.js +1 -1
  125. package/src/sap/ui/mdc/odata/v4/TableDelegate.js +1 -1
  126. package/src/sap/ui/mdc/odata/v4/TypeMap.js +1 -1
  127. package/src/sap/ui/mdc/odata/v4/vizChart/ChartDelegate.js +16 -0
  128. package/src/sap/ui/mdc/p13n/PropertyHelper.js +1 -1
  129. package/src/sap/ui/mdc/p13n/panels/ChartItemPanel.js +3 -0
  130. package/src/sap/ui/mdc/p13n/subcontroller/ColumnFreezeController.js +1 -1
  131. package/src/sap/ui/mdc/p13n/subcontroller/ShowDetailsController.js +1 -1
  132. package/src/sap/ui/mdc/table/ActionLayoutData.js +47 -0
  133. package/src/sap/ui/mdc/table/Column.js +40 -186
  134. package/src/sap/ui/mdc/table/ColumnSettings.js +1 -1
  135. package/src/sap/ui/mdc/table/CreationRow.js +1 -1
  136. package/src/sap/ui/mdc/table/DragDropConfig.js +1 -1
  137. package/src/sap/ui/mdc/table/GridTableType.js +34 -7
  138. package/src/sap/ui/mdc/table/ODataV4PropertyHelper.js +1 -1
  139. package/src/sap/ui/mdc/table/PropertyHelper.js +1 -1
  140. package/src/sap/ui/mdc/table/ResponsiveColumnSettings.js +1 -1
  141. package/src/sap/ui/mdc/table/ResponsiveTableType.js +97 -14
  142. package/src/sap/ui/mdc/table/RowActionItem.js +1 -1
  143. package/src/sap/ui/mdc/table/RowSettings.js +1 -1
  144. package/src/sap/ui/mdc/table/TableSettings.js +34 -7
  145. package/src/sap/ui/mdc/table/TableTypeBase.js +38 -7
  146. package/src/sap/ui/mdc/table/utils/Personalization.js +1 -1
  147. package/src/sap/ui/mdc/ushell/SemanticObjectMapping.js +1 -1
  148. package/src/sap/ui/mdc/ushell/SemanticObjectMappingItem.js +1 -1
  149. package/src/sap/ui/mdc/ushell/SemanticObjectUnavailableAction.js +1 -1
  150. package/src/sap/ui/mdc/util/InfoBar.js +1 -1
  151. package/src/sap/ui/mdc/util/PromiseCache.js +1 -1
  152. package/src/sap/ui/mdc/util/PropertyHelper.js +1 -1
  153. package/src/sap/ui/mdc/util/PropertyHelperUtil.js +1 -1
  154. package/src/sap/ui/mdc/valuehelp/Dialog.js +1 -1
  155. package/src/sap/ui/mdc/valuehelp/FilterBar.js +1 -1
  156. package/src/sap/ui/mdc/valuehelp/Popover.js +1 -1
  157. package/src/sap/ui/mdc/valuehelp/base/Container.js +1 -1
  158. package/src/sap/ui/mdc/valuehelp/base/Content.js +1 -1
  159. package/src/sap/ui/mdc/valuehelp/base/DefineConditionPanel.js +15 -2
  160. package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +1 -1
  161. package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +1 -1
  162. package/src/sap/ui/mdc/valuehelp/base/ListContent.js +1 -1
  163. package/src/sap/ui/mdc/valuehelp/content/Bool.js +1 -1
  164. package/src/sap/ui/mdc/valuehelp/content/Conditions.js +1 -1
  165. package/src/sap/ui/mdc/valuehelp/content/FixedList.js +1 -1
  166. package/src/sap/ui/mdc/valuehelp/content/FixedListItem.js +1 -1
  167. package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +1 -1
  168. package/src/sap/ui/mdc/valuehelp/content/MTable.js +7 -5
  169. package/test/sap/ui/mdc/testutils/opa/filterbar/Actions.js +36 -0
  170. package/test/sap/ui/mdc/testutils/opa/filterfield/Actions.js +20 -3
  171. package/test/sap/ui/mdc/testutils/opa/valueHelp/Actions.js +33 -1
package/REUSE.toml CHANGED
@@ -385,7 +385,7 @@ SPDX-FileComment = "these files belong to: handlebars"
385
385
  [[annotations]]
386
386
  path = "src/sap.ui.core/src/sap/ui/thirdparty/require.js"
387
387
  precedence = "aggregate"
388
- SPDX-FileCopyrightText = "2010-2012, The Dojo Foundation"
388
+ SPDX-FileCopyrightText = "2010-2024, jQuery Foundation and other contributors"
389
389
  SPDX-License-Identifier = "MIT"
390
390
  SPDX-FileComment = "these files belong to: requireJS"
391
391
 
package/THIRDPARTY.txt CHANGED
@@ -254,8 +254,8 @@ License: MIT
254
254
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/MIT.txt
255
255
  Contained in: src/sap.ui.core/src/sap/ui/thirdparty/handlebars.js
256
256
 
257
- Component: requireJS, version: 2.1.8
258
- Copyright: 2010-2012, The Dojo Foundation
257
+ Component: requireJS, version: 2.3.7
258
+ Copyright: 2010-2024, jQuery Foundation and other contributors
259
259
  License: MIT
260
260
  License Text: https://github.com/UI5/openui5/blob/master/LICENSES/MIT.txt
261
261
  Contained in: src/sap.ui.core/src/sap/ui/thirdparty/require.js
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openui5/sap.ui.mdc",
3
- "version": "1.142.0",
3
+ "version": "1.143.0",
4
4
  "description": "OpenUI5 UI Library sap.ui.mdc",
5
5
  "author": "SAP SE (https://www.sap.com)",
6
6
  "license": "Apache-2.0",
@@ -14,8 +14,8 @@
14
14
  "url": "https://github.com/UI5/openui5.git"
15
15
  },
16
16
  "dependencies": {
17
- "@openui5/sap.m": "1.142.0",
18
- "@openui5/sap.ui.core": "1.142.0",
19
- "@openui5/sap.ui.layout": "1.142.0"
17
+ "@openui5/sap.m": "1.143.0",
18
+ "@openui5/sap.ui.core": "1.143.0",
19
+ "@openui5/sap.ui.layout": "1.143.0"
20
20
  }
21
21
  }
@@ -6,7 +6,7 @@
6
6
  <copyright>OpenUI5
7
7
  * (c) Copyright 2025 SAP SE or an SAP affiliate company.
8
8
  * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.</copyright>
9
- <version>1.142.0</version>
9
+ <version>1.143.0</version>
10
10
 
11
11
  <documentation>UI5 library: sap.ui.mdc</documentation>
12
12
 
@@ -33,7 +33,7 @@ sap.ui.define([
33
33
  * The content aggregation of the control must not be used.
34
34
  * @extends sap.m.OverflowToolbar
35
35
  * @author SAP SE
36
- * @version 1.142.0
36
+ * @version 1.143.0
37
37
  * @constructor
38
38
  * @since 1.58
39
39
  * @private
@@ -53,17 +53,6 @@ sap.ui.define([
53
53
  type: "boolean",
54
54
  group: "Behavior",
55
55
  defaultValue: true
56
- },
57
-
58
- /**
59
- * Defines the order of the end aggregation.
60
- * @private
61
- * @ui5-private sap.ui.mdc
62
- */
63
- _endOrder: {
64
- type: "string[]",
65
- defaultValue: [],
66
- visibility: "hidden"
67
56
  }
68
57
  },
69
58
  aggregations: {
@@ -97,6 +86,15 @@ sap.ui.define([
97
86
  end: {
98
87
  type: "sap.ui.core.Control",
99
88
  multiple: true
89
+ },
90
+
91
+ /**
92
+ * Actions that are combined with the <code>end</code> aggregation according to the <code>position</code> information provided via the {@link sap.ui.mdc.IActionLayoutData IActionLayoutData} interface as <code>layoutData</code>.
93
+ * @since 1.143
94
+ */
95
+ controlActions: {
96
+ type: "sap.ui.core.Control",
97
+ multiple: true
100
98
  }
101
99
  }
102
100
  },
@@ -107,7 +105,8 @@ sap.ui.define([
107
105
  "begin",
108
106
  "between",
109
107
  "actions",
110
- "end"
108
+ "end",
109
+ "controlActions"
111
110
  ];
112
111
 
113
112
  const fnGetOverflowToolbarConfig = function() {
@@ -121,6 +120,40 @@ sap.ui.define([
121
120
  return oConfig;
122
121
  };
123
122
 
123
+ const fnGetGroupNameOfAction = (oAction) => {
124
+ const oLayoutData = oAction.getLayoutData();
125
+ if (oLayoutData?.isA("sap.ui.mdc.IActionLayoutData")) {
126
+ const sPosition = oLayoutData.getPosition();
127
+ return `${sPosition}`.split("Actions")[0];
128
+ }
129
+ };
130
+
131
+ const fnActionsSorter = (oAction1, oAction2) => {
132
+ const oLayoutData1 = oAction1.getLayoutData();
133
+ const oLayoutData2 = oAction2.getLayoutData();
134
+ const bAction1ImplementsIActionLayoutData = oLayoutData1?.isA("sap.ui.mdc.IActionLayoutData");
135
+ const bAction2ImplementsIActionLayoutData = oLayoutData2?.isA("sap.ui.mdc.IActionLayoutData");
136
+
137
+ if (!bAction1ImplementsIActionLayoutData && !bAction2ImplementsIActionLayoutData) {
138
+ return 0; // No layout data, so no sorting
139
+ }
140
+ if (bAction1ImplementsIActionLayoutData && !bAction2ImplementsIActionLayoutData) {
141
+ return -1; // Action 1 implements IActionLayoutData, so it should come first
142
+ }
143
+ if (!bAction1ImplementsIActionLayoutData && bAction2ImplementsIActionLayoutData) {
144
+ return 1; // Action 2 implements IActionLayoutData, so it should come first
145
+ }
146
+
147
+ const mPositionEnum1 = oLayoutData1.getMetadata().getProperty("position").getType().getEnumValues();
148
+ const mPositionEnum2 = oLayoutData2.getMetadata().getProperty("position").getType().getEnumValues();
149
+ const iPosition1 = Object.getOwnPropertyNames(mPositionEnum1).indexOf(oLayoutData1.getPosition());
150
+ const iPosition2 = Object.getOwnPropertyNames(mPositionEnum2).indexOf(oLayoutData2.getPosition());
151
+
152
+ return iPosition1 - iPosition2;
153
+ };
154
+
155
+ ActionToolbar.ShowGroupSeparators = window.location.search.includes("sap-ui-action-toolbar-separators");
156
+
124
157
  ActionToolbar.prototype.init = function() {
125
158
  OverflowToolbar.prototype.init.apply(this, arguments);
126
159
  // Separator between begin (title) and between (variant) content of the toolbar.
@@ -166,23 +199,11 @@ sap.ui.define([
166
199
  }
167
200
  };
168
201
 
169
- ActionToolbar.prototype.setProperty = function(sProperty) {
170
- if (sProperty === "_endOrder") {
171
- this._bEnforceEndOrder = true;
172
- }
173
-
174
- return OverflowToolbar.prototype.setProperty.apply(this, arguments);
175
- };
176
-
177
202
  ActionToolbar.prototype.addAggregation = function(sAggregationName, oControl) {
178
203
  if (sAggregationName === "content") {
179
204
  throw new Error("Mutator functions of the content aggregation of the ActionToolbar '" + this.getId() + "' must not be used.");
180
205
  }
181
206
 
182
- if (sAggregationName === "end") {
183
- this._bEnforceEndOrder = true;
184
- }
185
-
186
207
  const aArguments = arguments;
187
208
  if (aAggregations.includes(sAggregationName)) {
188
209
  this._registerControlListener(oControl);
@@ -226,10 +247,6 @@ sap.ui.define([
226
247
  throw new Error("Mutator functions of the content aggregation of the ActionToolbar '" + this.getId() + "' must not be used.");
227
248
  }
228
249
 
229
- if (sAggregationName === "end") {
230
- this._bEnforceEndOrder = true;
231
- }
232
-
233
250
  if (aAggregations.includes(sAggregationName)) {
234
251
  this._registerControlListener(oControl);
235
252
  this._resetAndInvalidateToolbar(false);
@@ -306,29 +323,6 @@ sap.ui.define([
306
323
  });
307
324
  };
308
325
 
309
- ActionToolbar.prototype.onBeforeRendering = function() {
310
- OverflowToolbar.prototype.onBeforeRendering.apply(this, arguments);
311
-
312
- if (this._bEnforceEndOrder) {
313
-
314
- this.getProperty("_endOrder").reduce((iOrder, sElementId) => {
315
- const oElement = Element.getElementById(sElementId);
316
- if (!oElement) {
317
- return iOrder;
318
- }
319
-
320
- const iIndex = this.indexOfEnd(oElement);
321
- if (iIndex != iOrder) {
322
- this.insertEnd(this.removeEnd(oElement), iOrder);
323
- }
324
-
325
- return iOrder + 1;
326
- }, 0);
327
-
328
- this._bEnforceEndOrder = false;
329
- }
330
- };
331
-
332
326
  // According to visual designs currently no separator between actions and end content, only title separator is handled below
333
327
  /* Begin Title Separator handling */
334
328
  ActionToolbar.prototype.onAfterRendering = function() {
@@ -387,6 +381,34 @@ sap.ui.define([
387
381
  }
388
382
  };
389
383
 
384
+ ActionToolbar.prototype._getGroupSeparator = function(sGroupName) {
385
+ const sSeparatorId = `${this.getId()}-${sGroupName}-separator`;
386
+ let oSeparator = Element.getElementById(sSeparatorId);
387
+ if (!oSeparator) {
388
+ oSeparator = new ToolbarSeparator(sSeparatorId);
389
+ this.addDependent(oSeparator);
390
+ }
391
+ return oSeparator;
392
+ };
393
+
394
+ ActionToolbar.prototype._insertGroupSeparators = function(aActions) {
395
+ const aVisibleActions = aActions.filter((oAction) => oAction.getVisible());
396
+ aVisibleActions.forEach((oVisibleAction, iVisibleIndex) => {
397
+ const oNextVisibleAction = aVisibleActions[iVisibleIndex + 1];
398
+ if (!oNextVisibleAction) {
399
+ return;
400
+ }
401
+
402
+ const sGroupNameOfVisibleAction = fnGetGroupNameOfAction(oVisibleAction);
403
+ const sGroupNameOfNextVisibleAction = fnGetGroupNameOfAction(oNextVisibleAction);
404
+ if (sGroupNameOfVisibleAction !== sGroupNameOfNextVisibleAction) {
405
+ const oSeparator = this._getGroupSeparator(sGroupNameOfVisibleAction);
406
+ const iActualIndexOfVisibleAction = aActions.indexOf(oVisibleAction);
407
+ aActions.splice(iActualIndexOfVisibleAction + 1, 0, oSeparator);
408
+ }
409
+ });
410
+ };
411
+
390
412
  /*
391
413
  * Overwrite generated functions to use internal array to look for aggregation
392
414
  */
@@ -396,17 +418,21 @@ sap.ui.define([
396
418
 
397
419
  // Overwrite content aggregation functions
398
420
  ActionToolbar.prototype.getContent = function() {
399
- let aContent = this.getBegin();
400
- aContent.push(this._oBeginSeparator);
401
- aContent = aContent.concat(this.getBetween());
402
- aContent.push(this._oSpacer);
403
- aContent = aContent.concat(this.getEndActionsBegin());
404
- aContent.push(this._oEndActionsBeginSeparator);
405
- aContent = aContent.concat(this.getEnd());
406
- aContent.push(this._oEndActionsEndSeparator);
407
- aContent = aContent.concat(this.getEndActionsEnd());
408
-
409
- return aContent;
421
+ const aEndAndControlActions = [...this.getEnd(), ...this.getControlActions()];
422
+ const aSortedEndAndControlActions = aEndAndControlActions.sort(fnActionsSorter);
423
+ ActionToolbar.ShowGroupSeparators && this._insertGroupSeparators(aSortedEndAndControlActions);
424
+
425
+ return [
426
+ ...this.getBegin(),
427
+ this._oBeginSeparator,
428
+ ...this.getBetween(),
429
+ this._oSpacer,
430
+ ...this.getEndActionsBegin(),
431
+ this._oEndActionsBeginSeparator,
432
+ ...aSortedEndAndControlActions,
433
+ this._oEndActionsEndSeparator,
434
+ ...this.getEndActionsEnd()
435
+ ];
410
436
  };
411
437
 
412
438
  ActionToolbar.prototype.getCurrentState = function() {
@@ -79,7 +79,7 @@ sap.ui.define([
79
79
  * @extends sap.ui.mdc.Control
80
80
  * @borrows sap.ui.mdc.mixin.FilterIntegrationMixin.rebind as #rebind
81
81
  * @author SAP SE
82
- * @version 1.142.0
82
+ * @version 1.143.0
83
83
  * @constructor
84
84
  *
85
85
  * @public
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.ui.core.Control
24
24
  * @abstract
25
25
  * @author SAP SE
26
- * @version 1.142.0
26
+ * @version 1.143.0
27
27
  * @alias sap.ui.mdc.Control
28
28
  *
29
29
  * @borrows sap.ui.mdc.mixin.DelegateMixin.awaitControlDelegate as #awaitControlDelegate
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  * </ul>
30
30
  *
31
31
  * @author SAP SE
32
- * @version 1.142.0
32
+ * @version 1.143.0
33
33
  * @public
34
34
  * @since 1.114.0
35
35
  * @namespace
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.ui.core.Element
24
24
  * @abstract
25
25
  * @author SAP SE
26
- * @version 1.142.0
26
+ * @version 1.143.0
27
27
  * @alias sap.ui.mdc.Element
28
28
  *
29
29
  * @borrows sap.ui.mdc.mixin.DelegateMixin.awaitControlDelegate as #awaitControlDelegate
@@ -50,10 +50,10 @@ sap.ui.define([
50
50
  *
51
51
  * <ul>
52
52
  * <li>In display mode, usually a {@link sap.m.Text Text} control is rendered.</li>
53
- * <li>If <code>multipleLines</code> is set, an {@link sap.m.ExpandableText ExpandableText} control is rendered.</li>
54
- * <li>If <code>fieldInfo</code> is set and it is configured to be triggerable, a {@link sap.m.Link Link} control is rendered. The <code>multipleLines</code> property is forwarded to the <code>wrapping</code> property of the {@link sap.m.Link Link} control.</li>
53
+ * <li>If {@link sap.ui.mdc.field.FieldBase#getMultipleLines multipleLines} is set, an {@link sap.m.ExpandableText ExpandableText} control is rendered.</li>
54
+ * <li>If {@link sap.ui.mdc.field.FieldBase#getFieldInfo fieldInfo} is set and it is configured to be triggerable, a {@link sap.m.Link Link} control is rendered. The {@link sap.ui.mdc.field.FieldBase#getMultipleLines multipleLines} property is forwarded to the {@link sap.m.Link#setWrapping wrapping} property of the {@link sap.m.Link Link} control.</li>
55
55
  * <li>In edit mode, usually an {@link sap.m.Input Input} control is rendered.</li>
56
- * <li>If <code>multipleLines</code> is set, a {@link sap.m.TextArea TextArea} control is rendered.</li>
56
+ * <li>If {@link sap.ui.mdc.field.FieldBase#getMultipleLines multipleLines} is set, a {@link sap.m.TextArea TextArea} control is rendered.</li>
57
57
  * <li>If a date type is used, a {@link sap.m.DatePicker DatePicker} control is rendered.</li>
58
58
  * <li>If a date/time type is used, a {@link sap.m.DateTimePicker DateTimePicker} control is rendered.</li>
59
59
  * <li>If a time type is used, a {@link sap.m.TimePicker TimePicker} control is rendered.</li>
@@ -64,13 +64,13 @@ sap.ui.define([
64
64
  * @implements sap.ui.core.IFormContent, sap.ui.core.ISemanticFormContent, sap.m.IOverflowToolbarContent
65
65
  *
66
66
  * @author SAP SE
67
- * @version 1.142.0
67
+ * @version 1.143.0
68
68
  *
69
69
  * @constructor
70
70
  * @alias sap.ui.mdc.Field
71
71
  * @see {@link topic:1dd2aa91115d43409452a271d11be95b sap.ui.mdc}
72
72
  * @see {@link topic:5260b9ca249f465ab33769b9edb442aa Field Building Block (OData V4)}
73
- * @version 1.142.0
73
+ * @version 1.143.0
74
74
  * @since 1.54.0
75
75
  * @public
76
76
  */
@@ -111,7 +111,7 @@ sap.ui.define([
111
111
  },
112
112
  events: {
113
113
  /**
114
- * This event is fired when the <code>value</code> property of the field is changed by user interaction.
114
+ * This event is fired when the {@link #getValue value} property of the field is changed by user interaction.
115
115
  *
116
116
  * <b>Note</b> This event is only triggered if the used content control has a change event.
117
117
  */
@@ -121,7 +121,7 @@ sap.ui.define([
121
121
  /**
122
122
  * The new value of the <code>Field</code>.
123
123
  *
124
- * If a <code>ValueHelp</code> is assigned to the <code>Field</code>, the <code>value</code> is used as key for the <code>ValueHelp</code> items.
124
+ * If a {@link sap.ui.mdc.field.FieldBase#getValueHelp ValueHelp} is assigned to the <code>Field</code>, the <code>value</code> is used as key for the {@link sap.ui.mdc.field.FieldBase#getValueHelp ValueHelp} items.
125
125
  */
126
126
  value: { type: "string" },
127
127
 
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * The metadata information is provided via the {@link module:sap/ui/mdc/FilterBarDelegate FilterBarDelegate} implementation. This implementation has to be provided by the application.
43
43
  * @extends sap.ui.mdc.filterbar.FilterBarBase
44
44
  * @author SAP SE
45
- * @version 1.142.0
45
+ * @version 1.143.0
46
46
  * @constructor
47
47
  * @public
48
48
  * @since 1.61.0
@@ -29,18 +29,18 @@ sap.ui.define([
29
29
  * @class
30
30
  * The <code>FilterField</code> control is used to filter data based on the conditions. The conditions are managed
31
31
  * in the corresponding {@link sap.ui.mdc.FilterBar FilterBar}.
32
- * That is why the <code>conditions</code> property must be bound to the related conditions in the {@link sap.ui.mdc.FilterBar FilterBar}.
33
- * The type of this data must be defined in the <code>dataType</code> property.
32
+ * That is why the {@link sap.ui.mdc.field.FieldBase#bindConditions conditions} property must be bound to the related conditions in the {@link sap.ui.mdc.FilterBar FilterBar}.
33
+ * The type of this data must be defined in the {@link sap.ui.mdc.field.FieldBase#setDataType dataType} property.
34
34
  *
35
35
  * Based on the data type settings, a default control is rendered by the <code>FilterField</code> as follows:
36
36
  *
37
37
  * <ul>
38
38
  * <li>In display mode, usually a {@link sap.m.Text Text} control is rendered.</li>
39
- * <li>If <code>multipleLines</code> is set, an {@link sap.m.ExpandableText ExpandableText} control is rendered.</li>
39
+ * <li>If {@link sap.ui.mdc.field.FieldBase#getMultipleLines multipleLines} is set, an {@link sap.m.ExpandableText ExpandableText} control is rendered.</li>
40
40
  * <li>If multiple values are allowed, a {@link sap.m.Tokenizer Tokenizer} control is rendered.</li>
41
41
  * <li>In edit mode, usually an {@link sap.m.Input Input} control is rendered.</li>
42
42
  * <li>If multiple values are allowed, a {@link sap.m.MultiInput MultiInput} control is rendered.</li>
43
- * <li>If <code>multipleLines</code> is set, a {@link sap.m.TextArea TextArea} control is rendered.</li>
43
+ * <li>If {@link sap.ui.mdc.field.FieldBase#getMultipleLines multipleLines} is set, a {@link sap.m.TextArea TextArea} control is rendered.</li>
44
44
  * <li>If a date type or a date/time type is used and only one condition is supported, a {@link sap.m.DynamicDateRange DynamicDateRange} control is rendered.</li>
45
45
  * <li>If a date type is used and only single values are allowed, a {@link sap.m.DatePicker DatePicker} control is rendered.</li>
46
46
  * <li>If a date type is used and only single ranges are allowed, a {@link sap.m.DateRangeSelection DateRangeSelection} control is rendered.</li>
@@ -53,13 +53,13 @@ sap.ui.define([
53
53
  * @implements sap.ui.core.IFormContent, sap.ui.core.ISemanticFormContent, sap.m.IOverflowToolbarContent
54
54
  *
55
55
  * @author SAP SE
56
- * @version 1.142.0
56
+ * @version 1.143.0
57
57
  *
58
58
  * @constructor
59
59
  * @alias sap.ui.mdc.FilterField
60
60
  * @see {@link topic:1dd2aa91115d43409452a271d11be95b sap.ui.mdc}
61
61
  * @see {@link topic:2df783760a8e4540ad19ce5ec3ed91c8 FilterField Building Block (OData V4)}
62
- * @version 1.142.0
62
+ * @version 1.143.0
63
63
  * @since 1.48.0
64
64
  * @public
65
65
  */
@@ -88,7 +88,7 @@ sap.ui.define([
88
88
  * Default operator name for conditions.
89
89
  * If empty, the relevant default operator depending on the data type used is taken.
90
90
  *
91
- * <b>Note</b>: <code>defaultOperator</code> can be the name of an {@link sap.ui.mdc.condition.Operator Operator} or the instance itself.
91
+ * <b>Note:</b> <code>defaultOperator</code> can be the name of an {@link sap.ui.mdc.condition.Operator Operator} or the instance itself.
92
92
  *
93
93
  * @since 1.88.0
94
94
  */
@@ -123,7 +123,7 @@ sap.ui.define([
123
123
  },
124
124
  events: {
125
125
  /**
126
- * This event is fired when the <code>conditions</code> property of the <code>FilterField</code> is changed by a user interaction.
126
+ * This event is fired when the {@link sap.ui.mdc.field.FieldBase#getConditions conditions} property of the <code>FilterField</code> is changed by a user interaction.
127
127
  *
128
128
  * <b>Note</b> This event is only triggered if the used content control has a change event.
129
129
  */
@@ -296,7 +296,7 @@ sap.ui.define([
296
296
  /**
297
297
  * Adds an operator to the list of known operators.
298
298
  *
299
- * <b>Note</b>: If no operator is set, the used <code>datatType</code> of the <code>FilterField</code> defines the set of default operators.
299
+ * <b>Note:</b> If no operator is set, the used {@link sap.ui.mdc.field.FieldBase#getDataType dataType} of the <code>FilterField</code> defines the set of default operators.
300
300
  * The standard operators are mentioned in {@link sap.ui.mdc.enums.OperatorName OperatorName}.
301
301
  *
302
302
  * @param {sap.ui.mdc.condition.Operator|string} vOperator The operator instance or operator name
@@ -323,7 +323,7 @@ sap.ui.define([
323
323
  /**
324
324
  * Adds an array of operators to the list of known operators.
325
325
  *
326
- * <b>Note</b>: <code>aOperators</code> can be the name of an {@link sap.ui.mdc.condition.Operator Operator}, the instance itself, or multiple operators inside an array.
326
+ * <b>Note:</b> <code>aOperators</code> can be the name of an {@link sap.ui.mdc.condition.Operator Operator}, the instance itself, or multiple operators inside an array.
327
327
  * The standard operators are mentioned in {@link sap.ui.mdc.enums.OperatorName OperatorName}.
328
328
  *
329
329
  * @param {sap.ui.mdc.condition.Operator[]} aOperators Array of operators
@@ -369,7 +369,7 @@ sap.ui.define([
369
369
  /**
370
370
  * Removes all given operators from the list of known operators.
371
371
  *
372
- * <b>Note</b>: <code>aOperators</code> can be the name of an {@link sap.ui.mdc.condition.Operator Operator}, the instance itself, or multiple operators inside an array.
372
+ * <b>Note:</b> <code>aOperators</code> can be the name of an {@link sap.ui.mdc.condition.Operator Operator}, the instance itself, or multiple operators inside an array.
373
373
  * The standard operators are mentioned in {@link sap.ui.mdc.enums.OperatorName OperatorName}.
374
374
  *
375
375
  * @param {sap.ui.mdc.condition.Operator[]} aOperators Array of operators
@@ -41,7 +41,7 @@ sap.ui.define([
41
41
  * @extends sap.ui.mdc.Control
42
42
  * @borrows sap.ui.mdc.mixin.FilterIntegrationMixin.rebind as #rebind
43
43
  * @author SAP SE
44
- * @version 1.142.0
44
+ * @version 1.143.0
45
45
  * @constructor
46
46
  *
47
47
  * @public
@@ -71,7 +71,7 @@ sap.ui.define([
71
71
  * @extends sap.ui.mdc.field.FieldInfoBase
72
72
  *
73
73
  * @author SAP SE
74
- * @version 1.142.0
74
+ * @version 1.143.0
75
75
  *
76
76
  * @constructor
77
77
  * @alias sap.ui.mdc.Link
@@ -33,9 +33,9 @@ sap.ui.define([
33
33
  *
34
34
  * <ul>
35
35
  * <li>In display mode, usually a {@link sap.m.Tokenizer Tokenizer} control is rendered.</li>
36
- * <li>If <code>multipleLines</code> is set, an {@link sap.m.ExpandableText ExpandableText} control is rendered.</li>
36
+ * <li>If {@link sap.ui.mdc.field.FieldBase#getMultipleLines multipleLines} is set, an {@link sap.m.ExpandableText ExpandableText} control is rendered.</li>
37
37
  * <li>In edit mode, usually a {@link sap.m.MultiInput MultiInput} control is rendered.</li>
38
- * <li>If <code>multipleLines</code> is set, a {@link sap.m.TextArea TextArea} control is rendered.</li>
38
+ * <li>If {@link sap.ui.mdc.field.FieldBase#getMultipleLines multipleLines} is set, a {@link sap.m.TextArea TextArea} control is rendered.</li>
39
39
  * </ul>
40
40
  *
41
41
  * @extends sap.ui.mdc.field.FieldBase
@@ -44,7 +44,7 @@ sap.ui.define([
44
44
  * @constructor
45
45
  * @alias sap.ui.mdc.MultiValueField
46
46
  * @author SAP SE
47
- * @version 1.142.0
47
+ * @version 1.143.0
48
48
  * @since 1.93.0
49
49
  *
50
50
  * @public
@@ -96,7 +96,7 @@ sap.ui.define([
96
96
  defaultAggregation: "items",
97
97
  events: {
98
98
  /**
99
- * This event is fired when the <code>items</code> aggregation of the field is changed by user interaction.
99
+ * This event is fired when the {@link #getItems items} aggregation of the field is changed by user interaction.
100
100
  *
101
101
  * <b>Note</b> This event is only triggered if the used content control has a change event.
102
102
  */
@@ -106,7 +106,7 @@ sap.ui.define([
106
106
  /**
107
107
  * The new items of the <code>MultiValueField</code> control.
108
108
  *
109
- * If a <code>ValueHelp</code> element is assigned to the <code>MultiValueField</code> control, the <code>key</code> of the items is used as key for the <code>ValueHelp</code> items.
109
+ * If a {@link sap.ui.mdc.field.FieldBase#getValueHelp ValueHelp} element is assigned to the <code>MultiValueField</code> control, the {@link sap.ui.mdc.field.MultiValueFieldItem#getKey key} of the items is used as key for the {@link sap.ui.mdc.field.FieldBase#getValueHelp ValueHelp} items.
110
110
  */
111
111
  items: { type: "sap.ui.mdc.field.MultiValueFieldItem[]" },
112
112
 
@@ -13,6 +13,7 @@ sap.ui.define([
13
13
  "./table/ResponsiveTableType",
14
14
  "./table/PropertyHelper",
15
15
  "./table/utils/Personalization",
16
+ "./table/ActionLayoutData",
16
17
  "./mixin/FilterIntegrationMixin",
17
18
  "sap/m/Text",
18
19
  "sap/m/ToolbarSpacer",
@@ -65,6 +66,7 @@ sap.ui.define([
65
66
  ResponsiveTableType,
66
67
  PropertyHelper,
67
68
  PersonalizationUtils,
69
+ ActionLayoutData,
68
70
  FilterIntegrationMixin,
69
71
  Text,
70
72
  ToolbarSpacer,
@@ -670,6 +672,25 @@ sap.ui.define([
670
672
  }
671
673
  },
672
674
 
675
+ /**
676
+ * Additional table-related actions that are positioned together with other table-generated actions, based on the
677
+ * {@link sap.ui.mdc.table.ActionLayoutData ActionLayoutData} provided.
678
+ *
679
+ * <b>Note:</b> All actions should use layout data of the {@link sap.ui.mdc.table.ActionLayoutData ActionLayoutData} type to ensure
680
+ * correct ordering. Actions that do not use this layout data will be placed after the table-generated actions.<br>
681
+ * <b>Note:</b> Like other table-generated actions, these actions are excluded from the UI adaptation.
682
+ *
683
+ * @since 1.143
684
+ */
685
+ tableActions: {
686
+ type: "sap.ui.core.Control",
687
+ multiple: true,
688
+ forwarding: {
689
+ getter: "_createToolbar",
690
+ aggregation: "controlActions"
691
+ }
692
+ },
693
+
673
694
  /**
674
695
  * <code>VariantManagement<code> control for the table.
675
696
  */
@@ -2043,16 +2064,6 @@ sap.ui.define([
2043
2064
  ],
2044
2065
  visible: "{= !${$sap.ui.mdc.Table>/hideToolbar} }"
2045
2066
  });
2046
- // Enfore the action order according to the UI Guideline
2047
- this._oToolbar.setProperty("_endOrder", [
2048
- "copy",
2049
- "paste",
2050
- "showHideDetails",
2051
- "collapseAll",
2052
- "expandAll",
2053
- "settings",
2054
- "export"
2055
- ].map((sSuffix) => this.getId() + "-" + sSuffix));
2056
2067
 
2057
2068
  this._updateInvisibleTitle();
2058
2069
  }
@@ -2283,16 +2294,14 @@ sap.ui.define([
2283
2294
  };
2284
2295
 
2285
2296
  Table.prototype._getCopyButton = function() {
2286
- if (window.isSecureContext) {
2287
- return this.getCopyProvider()?.getCopyButton({id: this.getId() + "-copy"});
2297
+ if (window.isSecureContext && this.getCopyProvider()) {
2298
+ return TableSettings.createCopyButton(this.getId(), this.getCopyProvider());
2288
2299
  }
2289
2300
  };
2290
2301
 
2291
2302
  Table.prototype._getPasteButton = function() {
2292
2303
  if (this.getShowPasteButton()) {
2293
- if (!this._oPasteButton) {
2294
- this._oPasteButton = TableSettings.createPasteButton(this.getId());
2295
- }
2304
+ this._oPasteButton ??= TableSettings.createPasteButton(this.getId());
2296
2305
  return this._oPasteButton;
2297
2306
  }
2298
2307
  };
@@ -69,7 +69,7 @@ sap.ui.define([
69
69
  * and {@link sap.ui.mdc.FilterField FilterField} controls using the <code>valueHelp</code> association. One <code>ValueHelp</code> element instance can be
70
70
  * assigned to multiple fields (like in different table rows). It should be placed in the control tree on the container holding the fields.
71
71
  * @extends sap.ui.mdc.Element
72
- * @version 1.142.0
72
+ * @version 1.143.0
73
73
  * @constructor
74
74
  * @abstract
75
75
  * @public
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * The action for an {@link sap.ui.mdc.ActionToolbar ActionToolbar} control with given layout information that determines where the wrapped control is displayed on the <code>ActionToolbar</code>.
28
28
  * @extends sap.ui.core.Control
29
29
  * @author SAP SE
30
- * @version 1.142.0
30
+ * @version 1.143.0
31
31
  * @constructor
32
32
  * @since 1.58
33
33
  * @public
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  * @class The <code>ChartImplementationContainer</code> creates a container for the <code>content</code> (chart) and <code>noDataContent</code>. Based on the <code>showNoDataStruct</code> the <code>content</code> or <code>noDataContent</code> will be shown.
22
22
  * @extends sap.ui.core.Control
23
23
  * @author SAP SE
24
- * @version 1.142.0
24
+ * @version 1.143.0
25
25
  * @constructor
26
26
  *
27
27
  * @public
@@ -38,7 +38,7 @@ sap.ui.define([
38
38
  * @class The <code>ChartSelectionDetails</code> control creates a <code>sap.m.SelectionDetails</code> popover based on metadata and the configuration specified.
39
39
  * @extends sap.m.SelectionDetails
40
40
  * @author SAP SE
41
- * @version 1.142.0
41
+ * @version 1.143.0
42
42
  * @constructor
43
43
  * @public
44
44
  * @experimental As of version 1.88
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @extends sap.ui.mdc.util.PropertyHelper
27
27
  *
28
28
  * @author SAP SE
29
- * @version 1.142.0
29
+ * @version 1.143.0
30
30
  *
31
31
  * @private
32
32
  * @since 1.83
@@ -49,7 +49,7 @@ sap.ui.define([
49
49
  * @namespace
50
50
  * @alias sap.ui.mdc.chart.ToolbarControlFactory
51
51
  * @author SAP SE
52
- * @version 1.142.0
52
+ * @version 1.143.0
53
53
  * @since 1.123
54
54
  * @experimental
55
55
  * @private