@openui5/sap.ui.mdc 1.130.1 → 1.131.1

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 (162) hide show
  1. package/THIRDPARTY.txt +1 -1
  2. package/package.json +4 -4
  3. package/src/sap/ui/mdc/.library +1 -1
  4. package/src/sap/ui/mdc/ActionToolbar.js +1 -1
  5. package/src/sap/ui/mdc/Chart.js +62 -25
  6. package/src/sap/ui/mdc/ChartDelegate.js +17 -14
  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 +43 -15
  11. package/src/sap/ui/mdc/FilterBar.js +1 -1
  12. package/src/sap/ui/mdc/FilterField.js +2 -2
  13. package/src/sap/ui/mdc/Link.js +1 -1
  14. package/src/sap/ui/mdc/LinkDelegate.js +1 -1
  15. package/src/sap/ui/mdc/MultiValueField.js +3 -4
  16. package/src/sap/ui/mdc/Table.js +183 -36
  17. package/src/sap/ui/mdc/TableDelegate.js +40 -18
  18. package/src/sap/ui/mdc/ValueHelp.js +1 -1
  19. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarAction.js +1 -2
  20. package/src/sap/ui/mdc/chart/ChartImplementationContainer.js +1 -1
  21. package/src/sap/ui/mdc/chart/ChartSelectionDetails.js +1 -1
  22. package/src/sap/ui/mdc/chart/PropertyHelper.js +1 -1
  23. package/src/sap/ui/mdc/chart/ToolbarControlFactory.js +1 -1
  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 +361 -54
  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/ActionToolbarActionAlignment.js +0 -1
  33. package/src/sap/ui/mdc/enums/OperatorName.js +127 -1
  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 +1 -1
  40. package/src/sap/ui/mdc/field/FieldBaseDelegate.js +2 -2
  41. package/src/sap/ui/mdc/field/FieldInfoBase.js +1 -1
  42. package/src/sap/ui/mdc/field/FieldInput.js +1 -1
  43. package/src/sap/ui/mdc/field/FieldInputRenderUtil.js +1 -1
  44. package/src/sap/ui/mdc/field/FieldMultiInput.js +1 -1
  45. package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
  46. package/src/sap/ui/mdc/field/MultiValueFieldDelegate.js +0 -1
  47. package/src/sap/ui/mdc/field/MultiValueFieldItem.js +1 -2
  48. package/src/sap/ui/mdc/field/TokenDisplay.js +1 -1
  49. package/src/sap/ui/mdc/field/TokenizerDisplay.js +1 -1
  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/CollectiveSearchSelect.js +4 -1
  54. package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +5 -2
  55. package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +1 -1
  56. package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +1 -1
  57. package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +1 -1
  58. package/src/sap/ui/mdc/flexibility/actiontoolbar/CombineAction.js +1 -2
  59. package/src/sap/ui/mdc/flexibility/actiontoolbar/SplitAction.js +1 -2
  60. package/src/sap/ui/mdc/library.js +2 -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 +12 -148
  69. package/src/sap/ui/mdc/messagebundle_ar.properties +6 -96
  70. package/src/sap/ui/mdc/messagebundle_bg.properties +6 -96
  71. package/src/sap/ui/mdc/messagebundle_ca.properties +6 -96
  72. package/src/sap/ui/mdc/messagebundle_cnr.properties +6 -96
  73. package/src/sap/ui/mdc/messagebundle_cs.properties +6 -96
  74. package/src/sap/ui/mdc/messagebundle_cy.properties +6 -96
  75. package/src/sap/ui/mdc/messagebundle_da.properties +6 -96
  76. package/src/sap/ui/mdc/messagebundle_de.properties +6 -96
  77. package/src/sap/ui/mdc/messagebundle_el.properties +6 -96
  78. package/src/sap/ui/mdc/messagebundle_en.properties +6 -96
  79. package/src/sap/ui/mdc/messagebundle_en_GB.properties +6 -96
  80. package/src/sap/ui/mdc/messagebundle_en_US_saprigi.properties +6 -98
  81. package/src/sap/ui/mdc/messagebundle_es.properties +7 -97
  82. package/src/sap/ui/mdc/messagebundle_es_MX.properties +6 -96
  83. package/src/sap/ui/mdc/messagebundle_et.properties +6 -96
  84. package/src/sap/ui/mdc/messagebundle_fi.properties +6 -96
  85. package/src/sap/ui/mdc/messagebundle_fr.properties +6 -96
  86. package/src/sap/ui/mdc/messagebundle_fr_CA.properties +6 -96
  87. package/src/sap/ui/mdc/messagebundle_hi.properties +6 -96
  88. package/src/sap/ui/mdc/messagebundle_hr.properties +6 -96
  89. package/src/sap/ui/mdc/messagebundle_hu.properties +6 -96
  90. package/src/sap/ui/mdc/messagebundle_id.properties +6 -96
  91. package/src/sap/ui/mdc/messagebundle_it.properties +6 -96
  92. package/src/sap/ui/mdc/messagebundle_iw.properties +6 -96
  93. package/src/sap/ui/mdc/messagebundle_ja.properties +6 -96
  94. package/src/sap/ui/mdc/messagebundle_kk.properties +6 -96
  95. package/src/sap/ui/mdc/messagebundle_ko.properties +6 -96
  96. package/src/sap/ui/mdc/messagebundle_lt.properties +6 -96
  97. package/src/sap/ui/mdc/messagebundle_lv.properties +6 -96
  98. package/src/sap/ui/mdc/messagebundle_mk.properties +6 -96
  99. package/src/sap/ui/mdc/messagebundle_ms.properties +6 -96
  100. package/src/sap/ui/mdc/messagebundle_nl.properties +7 -97
  101. package/src/sap/ui/mdc/messagebundle_no.properties +6 -96
  102. package/src/sap/ui/mdc/messagebundle_pl.properties +9 -99
  103. package/src/sap/ui/mdc/messagebundle_pt.properties +6 -96
  104. package/src/sap/ui/mdc/messagebundle_pt_PT.properties +6 -96
  105. package/src/sap/ui/mdc/messagebundle_ro.properties +6 -96
  106. package/src/sap/ui/mdc/messagebundle_ru.properties +13 -103
  107. package/src/sap/ui/mdc/messagebundle_sh.properties +6 -96
  108. package/src/sap/ui/mdc/messagebundle_sk.properties +6 -96
  109. package/src/sap/ui/mdc/messagebundle_sl.properties +6 -96
  110. package/src/sap/ui/mdc/messagebundle_sr.properties +6 -96
  111. package/src/sap/ui/mdc/messagebundle_sv.properties +6 -96
  112. package/src/sap/ui/mdc/messagebundle_th.properties +6 -96
  113. package/src/sap/ui/mdc/messagebundle_tr.properties +6 -96
  114. package/src/sap/ui/mdc/messagebundle_uk.properties +6 -96
  115. package/src/sap/ui/mdc/messagebundle_vi.properties +6 -96
  116. package/src/sap/ui/mdc/messagebundle_zh_CN.properties +6 -96
  117. package/src/sap/ui/mdc/messagebundle_zh_TW.properties +6 -96
  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/FilterIntegrationMixin.js +1 -1
  121. package/src/sap/ui/mdc/mixin/PromiseMixin.js +1 -1
  122. package/src/sap/ui/mdc/mixin/PropertyHelperMixin.js +1 -1
  123. package/src/sap/ui/mdc/odata/TypeMap.js +1 -1
  124. package/src/sap/ui/mdc/odata/v4/TableDelegate.js +239 -197
  125. package/src/sap/ui/mdc/odata/v4/TypeMap.js +1 -1
  126. package/src/sap/ui/mdc/odata/v4/vizChart/ChartDelegate.js +19 -19
  127. package/src/sap/ui/mdc/p13n/PropertyHelper.js +1 -1
  128. package/src/sap/ui/mdc/p13n/panels/ChartItemPanel.js +12 -19
  129. package/src/sap/ui/mdc/table/Column.js +3 -0
  130. package/src/sap/ui/mdc/table/ColumnSettings.js +1 -1
  131. package/src/sap/ui/mdc/table/CreationRow.js +1 -1
  132. package/src/sap/ui/mdc/table/DragDropConfig.js +1 -1
  133. package/src/sap/ui/mdc/table/GridTableType.js +3 -1
  134. package/src/sap/ui/mdc/table/PropertyHelper.js +14 -1
  135. package/src/sap/ui/mdc/table/ResponsiveColumnSettings.js +1 -1
  136. package/src/sap/ui/mdc/table/RowActionItem.js +1 -1
  137. package/src/sap/ui/mdc/table/RowSettings.js +3 -2
  138. package/src/sap/ui/mdc/table/TableSettings.js +26 -3
  139. package/src/sap/ui/mdc/table/V4AnalyticsPropertyHelper.js +32 -41
  140. package/src/sap/ui/mdc/table/utils/Personalization.js +1 -1
  141. package/src/sap/ui/mdc/ushell/SemanticObjectMapping.js +1 -1
  142. package/src/sap/ui/mdc/ushell/SemanticObjectMappingItem.js +1 -1
  143. package/src/sap/ui/mdc/ushell/SemanticObjectUnavailableAction.js +1 -1
  144. package/src/sap/ui/mdc/util/InfoBar.js +2 -1
  145. package/src/sap/ui/mdc/util/PromiseCache.js +1 -1
  146. package/src/sap/ui/mdc/util/PropertyHelper.js +1 -1
  147. package/src/sap/ui/mdc/valuehelp/CollectiveSearchSelect.js +2 -10
  148. package/src/sap/ui/mdc/valuehelp/Dialog.js +1 -1
  149. package/src/sap/ui/mdc/valuehelp/FilterBar.js +1 -1
  150. package/src/sap/ui/mdc/valuehelp/Popover.js +1 -1
  151. package/src/sap/ui/mdc/valuehelp/base/Container.js +1 -1
  152. package/src/sap/ui/mdc/valuehelp/base/Content.js +1 -1
  153. package/src/sap/ui/mdc/valuehelp/base/DefineConditionPanel.js +30 -32
  154. package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +1 -1
  155. package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +1 -1
  156. package/src/sap/ui/mdc/valuehelp/base/ListContent.js +1 -1
  157. package/src/sap/ui/mdc/valuehelp/content/Bool.js +1 -1
  158. package/src/sap/ui/mdc/valuehelp/content/Conditions.js +1 -1
  159. package/src/sap/ui/mdc/valuehelp/content/FixedList.js +6 -1
  160. package/src/sap/ui/mdc/valuehelp/content/FixedListItem.js +1 -1
  161. package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +1 -1
  162. package/src/sap/ui/mdc/valuehelp/content/MTable.js +17 -4
@@ -323,7 +323,7 @@ sap.ui.define([
323
323
  };
324
324
 
325
325
  /**
326
- * Returns the event handler for SelectionDetails as an object:
326
+ * Gets the event handler for SelectionDetails as an object:
327
327
  *
328
328
  * @param {sap.ui.mdc.Chart} oChart Reference to the MDC chart
329
329
  * @returns {sap.ui.mdc.chart.SelectionDetails} Event handler for SelectionDetails
@@ -906,7 +906,7 @@ sap.ui.define([
906
906
  };
907
907
 
908
908
  /**
909
- * Returns the instance of the inner chart for a given MDC chart.
909
+ * Gets the instance of the inner chart for a given MDC chart.
910
910
  * @param {sap.ui.mdc.Chart} oChart Reference to the MDC chart
911
911
  * @returns {sap.ui.core.Control} Inner chart instance
912
912
  *
@@ -1177,7 +1177,7 @@ sap.ui.define([
1177
1177
 
1178
1178
 
1179
1179
  /**
1180
- * Returns the current chart type in form:
1180
+ * Gets the current chart type in the form of:
1181
1181
  * {
1182
1182
  * icon : string,
1183
1183
  * text: string
@@ -1237,7 +1237,7 @@ sap.ui.define([
1237
1237
  };
1238
1238
 
1239
1239
  /**
1240
- * Returns the current drill stack of the inner chart.
1240
+ * Gets the current drill stack of the inner chart.
1241
1241
  * The returned objects need at least a label and a name property.
1242
1242
  * @param {sap.ui.mdc.Chart} oChart Reference to the MDC chart
1243
1243
  * @returns {array} Array containing the drill stack
@@ -1267,7 +1267,7 @@ sap.ui.define([
1267
1267
  };
1268
1268
 
1269
1269
  /**
1270
- * This returns all sorted dimensions of an inner chart as property.
1270
+ * Gets all sorted dimensions of an inner chart as property.
1271
1271
  * This is used to determine possible drill-down dimensions in the drill-down popover of the MDC chart.
1272
1272
  * @param {sap.ui.mdc.Chart} oChart Reference to the MDC chart
1273
1273
  * @returns {Promise} <code>Promise</code> containing an array of dimensions that are sorted
@@ -1306,7 +1306,7 @@ sap.ui.define([
1306
1306
  };
1307
1307
 
1308
1308
  /**
1309
- * Determines which MDC items are drillable and returns them.
1309
+ * Gets the drillable items.
1310
1310
  * Used by breadcrumbs of MDC charts.
1311
1311
  *
1312
1312
  * @param {sap.ui.mdc.Chart} oChart MDC chart to get the items from
@@ -1338,7 +1338,7 @@ sap.ui.define([
1338
1338
  };
1339
1339
 
1340
1340
  /**
1341
- * Creates the inner data set for the inner chart.
1341
+ * Creates the content for the inner chart and triggers the initial data binding.
1342
1342
  * @param {sap.ui.mdc.Chart} oChart Reference to the MDC chart
1343
1343
  * @param {function} fnCallbackDataLoaded Callback for when data is loaded in the inner chart
1344
1344
  * @returns {Promise} Resolved once inner chart has been created
@@ -1418,7 +1418,7 @@ sap.ui.define([
1418
1418
  };
1419
1419
 
1420
1420
  /**
1421
- * Performs the initial binding for the inner chart.
1421
+ * Performs the initial binding of the inner chart.
1422
1422
  * It is used for the vizFrame to make sure that the inner chart is correctly initialized upon creation.
1423
1423
  * Otherwise the chart will go into an error loop. <br><b>Note:</b> You must not override this setting.
1424
1424
  * @param {sap.ui.mdc.Chart} oChart Reference to the MDC chart
@@ -1572,7 +1572,7 @@ sap.ui.define([
1572
1572
  };
1573
1573
 
1574
1574
  /**
1575
- * Gets the aggreagted name for given propertyInfo.
1575
+ * Gets the aggregated name for given propertyInfo.
1576
1576
  * @param {object} oProperty PropertyInfo object
1577
1577
  * @returns {string} Name for inner chart
1578
1578
  *
@@ -1638,7 +1638,7 @@ sap.ui.define([
1638
1638
  };
1639
1639
 
1640
1640
  /**
1641
- * Returns the binding info for given chart.
1641
+ * Gets the binding info for given chart.
1642
1642
  * If no binding info exists yet, a new one will be created.
1643
1643
  * @param {sap.ui.mdc.Chart} oChart Reference to the MDC chart
1644
1644
  * @returns {object} BindingInfo object
@@ -1662,7 +1662,7 @@ sap.ui.define([
1662
1662
  };
1663
1663
 
1664
1664
  /**
1665
- * Returns whether the inner chart is currently bound.
1665
+ * Gets whether the inner chart is currently bound or not.
1666
1666
  * @param {sap.ui.mdc.Chart} oChart Reference to the MDC chart
1667
1667
  * @returns {boolean} <code>true</code> if inner chart is bound; <code>false</code> if not
1668
1668
  *
@@ -1722,7 +1722,7 @@ sap.ui.define([
1722
1722
  }
1723
1723
 
1724
1724
  /**
1725
- * Returns sorters available for the data.
1725
+ * Gets sorters available for the data.
1726
1726
  * @param {sap.ui.mdc.Chart} oChart Reference to the MDC chart
1727
1727
  * @returns {array} Array containing available sorters
1728
1728
  *
@@ -1764,11 +1764,11 @@ sap.ui.define([
1764
1764
  ChartDelegate._getAggregatedMeasureNameForMDCItem = function(oItem) {
1765
1765
  return this.getInternalChartNameFromPropertyNameAndKind(oItem.getPropertyKey(), "aggregatable", oItem.getParent());
1766
1766
  };
1767
-
1767
+ //TODO: Think about a better function name or at least make sure the description is clearly understandable.
1768
1768
  /**
1769
- * This function returns an ID that is used in the internal chart for the measure/dimension.
1770
- * In the standard case, this is just the ID of the property.
1771
- * If it is necessary to use another ID internally inside the chart (for example, on duplicate property IDs) this method can be overwritten.
1769
+ * Gets an ID that should be used in the internal chart for the Measure/Dimension.<br>
1770
+ * For the standard case, this is just the ID of the property.<br>
1771
+ * If it is necessary to use another ID internally inside the chart (for example, on duplicate property IDs) this method can be overwritten.<br>
1772
1772
  * In this case, <code>getPropertyFromNameAndKind</code> needs to be overwritten as well.
1773
1773
  * @param {string} sName ID of the property
1774
1774
  * @param {string} sKind Kind of the Property (Measure/Dimension)
@@ -1781,9 +1781,9 @@ sap.ui.define([
1781
1781
  ChartDelegate.getInternalChartNameFromPropertyNameAndKind = function(sName, sKind, oChart) {
1782
1782
  return sName;
1783
1783
  };
1784
-
1784
+ //TODO: Think about a better function name or at least make sure the description is clearly understandable
1785
1785
  /**
1786
- * This maps an ID of an internal chart dimension/measure & kind of a property to its corresponding property entry.
1786
+ * Gets a PropertyInfo object based on an internal chart dimension/measure and type of a property.
1787
1787
  * @param {string} sName ID of internal chart measure/dimension
1788
1788
  * @param {string} sKind Kind of the property
1789
1789
  * @param {sap.ui.mdc.Chart} oChart Reference to the MDC chart
@@ -1860,7 +1860,7 @@ sap.ui.define([
1860
1860
  };
1861
1861
 
1862
1862
  /**
1863
- * Returns the propertyHelper used for the chart delegate.
1863
+ * Gets the propertyHelper used for the chart delegate.
1864
1864
  * @returns {Promise} <code>Promise</code> with the property helper reference
1865
1865
  */
1866
1866
  ChartDelegate.getPropertyHelperClass = function() {
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.ui.mdc.util.PropertyHelper
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.130.1
26
+ * @version 1.131.1
27
27
  *
28
28
  * @private
29
29
  * @since 1.85
@@ -46,14 +46,11 @@ sap.ui.define([
46
46
  *
47
47
  * @param {string} [sId] ID for the new control, generated automatically if no ID is given
48
48
  * @param {object} [mSettings] initial settings for the new control
49
- * @class TODO
50
- * <h3><b>Note:</b></h3>
51
- * The control is experimental and the API/behaviour is not finalised and hence this should not be used for productive usage.
49
+ * @class
52
50
  * @extends sap.m.p13n.BasePanel
53
51
  * @author SAP SE
54
52
  * @constructor The API/behaviour is not finalised and hence this control should not be used for productive usage.
55
53
  * @private
56
- * @experimental
57
54
  * @since 1.97
58
55
  * @alias sap.ui.mdc.p13n.panels.ChartItemPanel
59
56
  */
@@ -169,6 +166,16 @@ sap.ui.define([
169
166
  const oTable = new Table(sId, Object.assign(this._getListControlConfig(), {}));
170
167
  this.setEnableReorder(true); //We always want reordering to be active in this panel
171
168
 
169
+ // this is required to update the reorder buttons very early. Otherwise a screenreader might not announce the correct cell content.
170
+ const orgFocusIn = oTable.onItemFocusIn;
171
+ oTable.onItemFocusIn = function(oItem, oFocusedControl) {
172
+ if (this.getEnableReorder()) {
173
+ this._handleActivated(oItem);
174
+ }
175
+
176
+ orgFocusIn.apply(oTable, arguments);
177
+ }.bind(this);
178
+
172
179
  oTable.addEventDelegate({
173
180
  onAfterRendering: this._onAfterTableRender.bind(this)
174
181
  });
@@ -424,7 +431,6 @@ sap.ui.define([
424
431
 
425
432
  oListItem.addEventDelegate({
426
433
  onmouseover: this._hoverHandler.bind(this),
427
- onfocusin: this._focusHandler.bind(this),
428
434
  onkeydown: this._keydownHandler.bind(this)
429
435
  });
430
436
 
@@ -492,7 +498,6 @@ sap.ui.define([
492
498
 
493
499
  oListItem.addEventDelegate({
494
500
  onmouseover: this._hoverHandler.bind(this),
495
- onfocusin: this._focusHandler.bind(this),
496
501
  onkeydown: this._keydownHandler.bind(this)
497
502
  });
498
503
 
@@ -525,18 +530,6 @@ sap.ui.define([
525
530
 
526
531
  };
527
532
 
528
- ChartItemPanel.prototype._focusHandler = function(oEvt) {
529
-
530
- const oTarget = Element.getElementById(oEvt.target.id);
531
-
532
- //Don't handle focus on button presses as this messes up event propagation
533
- if (oTarget instanceof Button) {
534
- return;
535
- }
536
-
537
- BasePanel.prototype._focusHandler.apply(this, arguments);
538
- };
539
-
540
533
  ChartItemPanel.prototype._handleActivated = function(oHoveredItem) {
541
534
  const oItem = this._getModelItemByTableItem(oHoveredItem);
542
535
  if (oItem && oItem.template) {
@@ -646,7 +639,7 @@ sap.ui.define([
646
639
 
647
640
  const bIgnore = this._getP13nModel().getProperty(oTableItem.getBindingContextPath()) ? this._getP13nModel().getProperty(oTableItem.getBindingContextPath()).template : true;
648
641
 
649
- if (oTableItem.getCells() && (oTableItem.getCells().length === 2 || oTableItem.getCells().length === 3) && !bIgnore) {
642
+ if (oTableItem.getCells && oTableItem.getCells() && (oTableItem.getCells().length === 2 || oTableItem.getCells().length === 3) && !bIgnore) {
650
643
  if (this._bMobileMode) {
651
644
  oTableItem.getCells()[1].insertItem(this._getMoveDownButton(), 0);
652
645
  oTableItem.getCells()[1].insertItem(this._getMoveUpButton(), 0);
@@ -337,6 +337,9 @@ sap.ui.define([
337
337
  oRm.close("div");
338
338
  }
339
339
  },
340
+ setIsInColumnHeaderContext: function(bIsInColumnHeaderContext) {
341
+ this.getLabel()?.setIsInColumnHeaderContext(bIsInColumnHeaderContext);
342
+ },
340
343
  getText: function() { // Used by inner table for the fieldHelpInfo, and by tests in MDC and FE.
341
344
  return this.getLabel().getText();
342
345
  },
@@ -17,7 +17,7 @@ sap.ui.define([
17
17
  *
18
18
  * @class The table type info class for the metadata-driven table.
19
19
  * @extends sap.ui.core.Element
20
- * @version 1.130.1
20
+ * @version 1.131.1
21
21
  * @author SAP SE
22
22
  * @constructor
23
23
  * @public
@@ -19,7 +19,7 @@ sap.ui.define([
19
19
  * {@link sap.ui.mdc.table.Column#getCreationTemplate creationTemplate} aggregation of the {@link sap.ui.mdc.table.Column}.
20
20
  * @extends sap.ui.core.Element
21
21
  * @author SAP SE
22
- * @version 1.130.1
22
+ * @version 1.131.1
23
23
  * @constructor
24
24
  * @private
25
25
  * @ui5-restricted sap.fe
@@ -23,7 +23,7 @@ sap.ui.define(["sap/ui/core/dnd/DragDropBase",
23
23
  *
24
24
  * @extends sap.ui.core.dnd.DragDropBase
25
25
  * @author SAP SE
26
- * @version 1.130.1
26
+ * @version 1.131.1
27
27
  *
28
28
  * @public
29
29
  * @since 1.119
@@ -144,7 +144,9 @@ sap.ui.define([
144
144
 
145
145
  if (!oRowMode) {
146
146
  const RowMode = InnerRowModeMap[vValue] ?? InnerRowModeMap[TableRowCountMode.Auto];
147
- const oRowMode = new RowMode();
147
+ const oRowMode = new RowMode({
148
+ fixedBottomRowCount: "{= ${$sap.ui.mdc.Table>/@custom/hasGrandTotal} ? 1 : 0}"
149
+ });
148
150
  oGridTable.setRowMode(oRowMode.setHideEmptyRows?.(bHideEmptyRows) ?? oRowMode);
149
151
  }
150
152
 
@@ -32,7 +32,7 @@ sap.ui.define([
32
32
  * @extends sap.ui.mdc.util.PropertyHelper
33
33
  *
34
34
  * @author SAP SE
35
- * @version 1.130.1
35
+ * @version 1.131.1
36
36
  *
37
37
  * @private
38
38
  * @since 1.83
@@ -174,6 +174,19 @@ sap.ui.define([
174
174
  }
175
175
  });
176
176
 
177
+ /**
178
+ * @inheritDoc
179
+ */
180
+ PropertyHelper.prototype.validateProperty = function(oProperty, aProperties, aPreviousProperties) {
181
+ PropertyHelperBase.prototype.validateProperty.apply(this, arguments);
182
+
183
+ if (oProperty.text && oProperty.unit) {
184
+ throw new Error("Invalid property definition: A property must not have both a text and a unit.");
185
+ }
186
+
187
+ // TODO: Throw if an aggregatable-only property has a text and if a groupable-only property has a unit?
188
+ };
189
+
177
190
  /**
178
191
  * @inheritDoc
179
192
  */
@@ -17,7 +17,7 @@ sap.ui.define([
17
17
  *
18
18
  * @class The table type info class for the metadata-driven table.
19
19
  * @extends sap.ui.mdc.table.ColumnSettings
20
- * @version 1.130.1
20
+ * @version 1.131.1
21
21
  * @author SAP SE
22
22
  * @constructor
23
23
  * @public
@@ -20,7 +20,7 @@ sap.ui.define([
20
20
  * The <code>RowActionItem</code> control represents a action for a row.
21
21
  * This control can only be used in the context of <code>sap.ui.mdc.Table</code> control to define row actions.
22
22
  * @extends sap.ui.core.Element
23
- * @version 1.130.1
23
+ * @version 1.131.1
24
24
  *
25
25
  * @constructor
26
26
  * @public
@@ -21,7 +21,7 @@ sap.ui.define([
21
21
  * The <code>RowSettings</code> control is used to configure a row.
22
22
  * This control can only be used in the context of the <code>sap.ui.mdc.Table</code> control to define row settings.
23
23
  * @extends sap.ui.core.Element
24
- * @version 1.130.1
24
+ * @version 1.131.1
25
25
  *
26
26
  * @constructor
27
27
  * @public
@@ -37,7 +37,8 @@ sap.ui.define([
37
37
  *
38
38
  * If the highlight is set to {@link sap.ui.core.MessageType sap.ui.core.MessageType.None} (default), no highlights are visible.
39
39
  * Valid values for the <code>highlight</code> property are values of the enumerations {@link sap.ui.core.MessageType} or
40
- * {@link sap.ui.core.IndicationColor}.
40
+ * {@link sap.ui.core.IndicationColor} (only values of <code>Indication01</code> to <code>Indication10</code> are supported
41
+ * for accessibility contrast reasons).
41
42
  *
42
43
  * Accessibility support is provided with the {@link sap.ui.mdc.table.RowSettings#setHighlightText highlightText} property.
43
44
  * If the <code>highlight</code> property is set to a value of {@link sap.ui.core.MessageType}, the <code>highlightText</code>
@@ -113,18 +113,18 @@ sap.ui.define([
113
113
 
114
114
  return oMenuButton;
115
115
  },
116
- createExpandCollapseAllButton: function(sIdPrefix, aEventInfo, bIsExpand) {
116
+ createExpandCollapseButton: function(sIdPrefix, bIsExpand, fnPressEvent) {
117
117
  if (!oRb) {
118
118
  this._loadResourceBundle();
119
119
  }
120
120
 
121
121
  const sId = bIsExpand ? sIdPrefix + "-expandAll" : sIdPrefix + "-collapseAll",
122
- sText = bIsExpand ? oRb.getText("table.EXPAND_ALL") : oRb.getText("table.COLLAPSE_ALL");
122
+ sText = bIsExpand ? oRb.getText("table.EXPAND_TREE") : oRb.getText("table.COLLAPSE_TREE");
123
123
 
124
124
  const oButton = this._createButton(sId, {
125
125
  icon: bIsExpand ? "sap-icon://expand-all" : "sap-icon://collapse-all",
126
126
  text: sText,
127
- press: aEventInfo,
127
+ press: fnPressEvent,
128
128
  tooltip: sText
129
129
  });
130
130
 
@@ -132,6 +132,29 @@ sap.ui.define([
132
132
 
133
133
  return oButton;
134
134
  },
135
+ createExpandCollapseMenuButton: function(sIdPrefix, bIsExpand, mItemEventInfo) {
136
+ if (!oRb) {
137
+ this._loadResourceBundle();
138
+ }
139
+
140
+ const sId = bIsExpand ? sIdPrefix + "-expandAll" : sIdPrefix + "-collapseAll",
141
+ sTree = bIsExpand ? oRb.getText("table.EXPAND_TREE") : oRb.getText("table.COLLAPSE_TREE"),
142
+ sNode = bIsExpand ? oRb.getText("table.EXPAND_NODE") : oRb.getText("table.COLLAPSE_NODE"),
143
+ sText = bIsExpand ? oRb.getText("table.EXPAND_MENU_BUTTON_TEXT") : oRb.getText("table.COLLAPSE_MENU_BUTTON_TEXT");
144
+
145
+ const oMenuButton = new OverflowToolbarMenuButton(sId, {
146
+ icon: bIsExpand ? "sap-icon://expand-all" : "sap-icon://collapse-all",
147
+ tooltip: sText,
148
+ menu: new Menu({
149
+ items: [
150
+ new MenuItem({text: sTree, press: mItemEventInfo.tree}),
151
+ new MenuItem({text: sNode, press: mItemEventInfo.node})
152
+ ]
153
+ })
154
+ });
155
+
156
+ return oMenuButton;
157
+ },
135
158
  _createButton: function(sId, mSettings) {
136
159
  return new OverflowToolbarButton(sId, mSettings);
137
160
  },
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @extends sap.ui.mdc.table.PropertyHelper
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.130.1
28
+ * @version 1.131.1
29
29
  *
30
30
  * @private
31
31
  * @since 1.85
@@ -80,10 +80,21 @@ sap.ui.define([
80
80
 
81
81
  const bGroupable = (oProperty.groupable || oProperty.extension?.technicallyGroupable) === true;
82
82
  const bAggregatable = (oProperty.aggregatable || oProperty.extension?.technicallyAggregatable) === true;
83
+
84
+ if (oProperty.isKey) {
85
+ // TODO: This check breaks FE.
86
+ // if (!bGroupable) {
87
+ // throw new Error("Invalid property definition: A key property must be technically groupable.");
88
+ // }
89
+ if (bAggregatable) {
90
+ throw new Error("Invalid property definition: A key property must not be technically aggregatable.");
91
+ }
92
+ }
93
+
83
94
  const aAdditionalProperties = oProperty.extension?.additionalProperties ?? [];
84
95
 
85
96
  if (!bGroupable && !bAggregatable && aAdditionalProperties.length > 0) {
86
- throw new Error("Invalid property definition: 'additionalProperties' may not contain property keys if the property is neither"
97
+ throw new Error("Invalid property definition: 'additionalProperties' must not contain property keys if the property is neither"
87
98
  + " technically groupable nor technically aggregatable.");
88
99
  }
89
100
 
@@ -104,12 +115,27 @@ sap.ui.define([
104
115
 
105
116
  if (aAdditionalProperties.length > 0) {
106
117
  if (aAdditionalProperties.includes(oProperty.text)) {
107
- throw new Error("Invalid property definition: 'additionalProperties' may not contain the text.");
118
+ throw new Error("Invalid property definition: 'additionalProperties' must not contain the text.");
108
119
  }
109
120
  if (aAdditionalProperties.includes(oProperty.unit)) {
110
- throw new Error("Invalid property definition: 'additionalProperties' may not contain the unit.");
121
+ throw new Error("Invalid property definition: 'additionalProperties' must not contain the unit.");
111
122
  }
112
123
  }
124
+
125
+ const oAllAdditionalProperties = new Set(aAdditionalProperties);
126
+ for (const sAdditionalPropertyKey of oAllAdditionalProperties) {
127
+ const oAdditionalProperty = aProperties.find((oProperty) => {
128
+ return oProperty.key === sAdditionalPropertyKey || oProperty.name === sAdditionalPropertyKey;
129
+ });
130
+ const aAdditionalAdditionalProperties = oAdditionalProperty.extension?.additionalProperties ?? [];
131
+ for (const sAdditionalAdditionalPropertyKey of aAdditionalAdditionalProperties) {
132
+ oAllAdditionalProperties.add(sAdditionalAdditionalPropertyKey);
133
+ }
134
+ }
135
+ if (oAllAdditionalProperties.difference(new Set(aAdditionalProperties)).size > 0) {
136
+ throw new Error("Invalid property definition: 'additionalProperties' must contain all nested additionalProperties (additionalProperties"
137
+ + " of additionalProperties).");
138
+ }
113
139
  };
114
140
 
115
141
  /**
@@ -118,6 +144,8 @@ sap.ui.define([
118
144
  PropertyHelper.prototype.prepareProperty = function(oProperty, mProperties) {
119
145
  TablePropertyHelper.prototype.prepareProperty.apply(this, arguments);
120
146
 
147
+ // TODO: Don't do that for aggregatable properties - the additionalProperties are meant to be the context-defining properties of the
148
+ // CustomAggregate.
121
149
  if (!PropertyHelperBase.isPropertyComplex(oProperty) && oProperty.extension.additionalProperties.length > 0) {
122
150
  oProperty.groupable = false;
123
151
  }
@@ -143,42 +171,5 @@ sap.ui.define([
143
171
  });
144
172
  };
145
173
 
146
- /**
147
- * Converts the properties to the format expected by the <code>sap.ui.table.plugins.V4Aggregation</code> plugin.
148
- *
149
- * @returns {Object[]} Converted property information.
150
- * @private
151
- */
152
- PropertyHelper.prototype.getPropertiesForPlugin = function() {
153
- return this.getProperties().reduce((aProperties, oProperty) => {
154
- if (oProperty.isComplex()) {
155
- return aProperties;
156
- }
157
-
158
- const oPropertyForPlugin = {
159
- key: oProperty.key,
160
- path: oProperty.path,
161
- isKey: oProperty.isKey,
162
- text: oProperty.text,
163
- unit: oProperty.unit,
164
- groupable: oProperty.extension.technicallyGroupable,
165
- aggregatable: oProperty.extension.technicallyAggregatable,
166
- additionalProperties: oProperty.extension.additionalProperties
167
- };
168
-
169
- if (oProperty.extension.customAggregate) {
170
- oPropertyForPlugin.aggregationDetails = {
171
- customAggregate: {
172
- contextDefiningProperties: oProperty.extension.customAggregate.contextDefiningProperties
173
- }
174
- };
175
- }
176
-
177
- aProperties.push(oPropertyForPlugin);
178
-
179
- return aProperties;
180
- }, []);
181
- };
182
-
183
174
  return PropertyHelper;
184
175
  });
@@ -17,7 +17,7 @@ sap.ui.define([
17
17
  * P13n utilities.
18
18
  *
19
19
  * @author SAP SE
20
- * @version 1.130.1
20
+ * @version 1.131.1
21
21
  * @namespace
22
22
  * @alias sap.ui.mdc.table.utils.Personalization
23
23
  * @private
@@ -16,7 +16,7 @@ sap.ui.define([
16
16
  * @param {object} [mSettings] initial settings for the new control
17
17
  * @class Type for...
18
18
  * @extends sap.ui.core.Element
19
- * @version 1.130.1
19
+ * @version 1.131.1
20
20
  * @constructor
21
21
  * @private
22
22
  * @since 1.120
@@ -16,7 +16,7 @@ sap.ui.define([
16
16
  * @param {object} [mSettings] initial settings for the new control
17
17
  * @class Type for...
18
18
  * @extends sap.ui.core.Element
19
- * @version 1.130.1
19
+ * @version 1.131.1
20
20
  * @constructor
21
21
  * @private
22
22
  * @since 1.120
@@ -16,7 +16,7 @@ sap.ui.define([
16
16
  * @param {object} [mSettings] initial settings for the new control
17
17
  * @class Type for...
18
18
  * @extends sap.ui.core.Element
19
- * @version 1.130.1
19
+ * @version 1.131.1
20
20
  * @constructor
21
21
  * @private
22
22
  * @since 1.120
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * @class The <code>InfoBar</code> control provides an easy way of displaying filter information inside an <code>sap.ui.mdc.Chart</code> and an <code>sap.ui.mdc.Table</code>.
25
25
  * @extends sap.ui.core.Control
26
26
  * @author SAP SE
27
- * @version 1.130.1
27
+ * @version 1.131.1
28
28
  * @constructor
29
29
  * @private
30
30
  * @ui5-restricted sap.ui.mdc
@@ -33,6 +33,7 @@ sap.ui.define([
33
33
  */
34
34
  const InfoBar = Control.extend("sap.ui.mdc.util.InfoBar", {
35
35
  metadata: {
36
+ library: "sap.ui.mdc",
36
37
  properties: {
37
38
  infoText: {
38
39
  type: "string"
@@ -45,7 +45,7 @@ sap.ui.define(
45
45
  * Destroying the cache will cancel all registered promises and delete references. Convenience methods for promise creation, wrapping and replacement are offered.
46
46
  *
47
47
  * @author SAP SE
48
- * @version 1.130.1
48
+ * @version 1.131.1
49
49
  * @alias sap.ui.mdc.util.PromiseCache
50
50
  * @since 1.85.0
51
51
  * @private
@@ -597,7 +597,7 @@ sap.ui.define([
597
597
  * @extends sap.ui.base.Object
598
598
  *
599
599
  * @author SAP SE
600
- * @version 1.130.1
600
+ * @version 1.131.1
601
601
  *
602
602
  * @private
603
603
  * @since 1.83
@@ -57,16 +57,8 @@ sap.ui.define([
57
57
  }
58
58
  },
59
59
 
60
- /**
61
- * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}.
62
- * @param {sap.ui.core.RenderManager} oRm - <code>RenderManager</code> that can be used for writing to the render output buffer
63
- * @param {sap.ui.core.Control} oControl - Object representation of the control that is rendered
64
- */
65
- renderer: {
66
- renderer: function(oRm, oControl) {
67
- VariantManagement.getMetadata().getRenderer().render(oRm, oControl);
68
- }
69
- }
60
+ // Inherit the base class renderer
61
+ renderer: VariantManagement.getMetadata().getRenderer()
70
62
  });
71
63
 
72
64
 
@@ -68,7 +68,7 @@ sap.ui.define([
68
68
  * @param {object} [mSettings] Initial settings for the new control
69
69
  * @class Container for the {@link sap.ui.mdc.ValueHelp ValueHelp} element showing a dialog.
70
70
  * @extends sap.ui.mdc.valuehelp.base.Container
71
- * @version 1.130.1
71
+ * @version 1.131.1
72
72
  * @constructor
73
73
  * @public
74
74
  * @since 1.95.0
@@ -39,7 +39,7 @@ sap.ui.define(
39
39
  * <b>Note:</b> The <code>FilterBar</code> can only be used for a {@link sap.ui.mdc.valuehelp.Dialog Dialog} and not on its own.
40
40
  * @extends sap.ui.mdc.filterbar.FilterBarBase
41
41
  * @author SAP SE
42
- * @version 1.130.1
42
+ * @version 1.131.1
43
43
  * @constructor
44
44
  * @public
45
45
  * @since 1.124.0
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  * @param {object} [mSettings] Initial settings for the new control
36
36
  * @class Container for the {@link sap.ui.mdc.ValueHelp ValueHelp} element showing a popover.
37
37
  * @extends sap.ui.mdc.valuehelp.base.Container
38
- * @version 1.130.1
38
+ * @version 1.131.1
39
39
  * @constructor
40
40
  *
41
41
  * @public
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @param {object} [mSettings] Initial settings for the new element
27
27
  * @class Container for the {@link sap.ui.mdc.ValueHelp ValueHelp} element.
28
28
  * @extends sap.ui.core.Element
29
- * @version 1.130.1
29
+ * @version 1.131.1
30
30
  * @constructor
31
31
  * @abstract
32
32
  *
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @param {object} [mSettings] Initial settings for the new element
35
35
  * @class Content for the {@link sap.ui.mdc.valuehelp.base.Container Container} element.
36
36
  * @extends sap.ui.core.Element
37
- * @version 1.130.1
37
+ * @version 1.131.1
38
38
  * @constructor
39
39
  * @abstract
40
40
  *