@openui5/sap.ui.mdc 1.141.2 → 1.142.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 (129) hide show
  1. package/README.md +2 -2
  2. package/REUSE.toml +38 -0
  3. package/THIRDPARTY.txt +34 -1
  4. package/package.json +4 -4
  5. package/src/sap/ui/mdc/.library +1 -1
  6. package/src/sap/ui/mdc/ActionToolbar.js +1 -1
  7. package/src/sap/ui/mdc/Chart.js +1 -1
  8. package/src/sap/ui/mdc/Control.js +1 -1
  9. package/src/sap/ui/mdc/DefaultTypeMap.js +1 -1
  10. package/src/sap/ui/mdc/Element.js +1 -1
  11. package/src/sap/ui/mdc/Field.js +26 -3
  12. package/src/sap/ui/mdc/FilterBar.js +1 -1
  13. package/src/sap/ui/mdc/FilterField.js +2 -2
  14. package/src/sap/ui/mdc/Geomap.js +571 -0
  15. package/src/sap/ui/mdc/GeomapDelegate.js +285 -0
  16. package/src/sap/ui/mdc/GeomapRenderer.js +76 -0
  17. package/src/sap/ui/mdc/Link.js +1 -1
  18. package/src/sap/ui/mdc/MultiValueField.js +3 -3
  19. package/src/sap/ui/mdc/Table.js +117 -101
  20. package/src/sap/ui/mdc/TableDelegate.js +3 -2
  21. package/src/sap/ui/mdc/ValueHelp.js +1 -1
  22. package/src/sap/ui/mdc/ValueHelpDelegate.js +4 -1
  23. package/src/sap/ui/mdc/actiontoolbar/ActionToolbarAction.js +1 -1
  24. package/src/sap/ui/mdc/chart/ChartImplementationContainer.js +1 -1
  25. package/src/sap/ui/mdc/chart/ChartSelectionDetails.js +1 -1
  26. package/src/sap/ui/mdc/chart/PropertyHelper.js +1 -1
  27. package/src/sap/ui/mdc/chart/ToolbarControlFactory.js +1 -1
  28. package/src/sap/ui/mdc/condition/Condition.js +1 -1
  29. package/src/sap/ui/mdc/condition/ConditionConverter.js +1 -1
  30. package/src/sap/ui/mdc/condition/ConditionModel.js +1 -1
  31. package/src/sap/ui/mdc/condition/FilterConverter.js +1 -1
  32. package/src/sap/ui/mdc/condition/FilterOperatorUtil.js +1 -1
  33. package/src/sap/ui/mdc/condition/Operator.js +1 -1
  34. package/src/sap/ui/mdc/condition/OperatorDynamicDateOption.js +1 -1
  35. package/src/sap/ui/mdc/condition/RangeOperator.js +1 -1
  36. package/src/sap/ui/mdc/designtime/geomap/Geomap.designtime.js +23 -0
  37. package/src/sap/ui/mdc/enums/GeomapControlPosition.js +46 -0
  38. package/src/sap/ui/mdc/field/ConditionType.js +1 -1
  39. package/src/sap/ui/mdc/field/ConditionTypeMixin.js +1 -1
  40. package/src/sap/ui/mdc/field/ConditionsType.js +1 -1
  41. package/src/sap/ui/mdc/field/CustomFieldInfo.js +1 -1
  42. package/src/sap/ui/mdc/field/DynamicDateRangeConditionsType.js +1 -1
  43. package/src/sap/ui/mdc/field/FieldBase.js +45 -20
  44. package/src/sap/ui/mdc/field/FieldInfoBase.js +1 -1
  45. package/src/sap/ui/mdc/field/FieldInput.js +1 -1
  46. package/src/sap/ui/mdc/field/FieldInputRenderUtil.js +1 -1
  47. package/src/sap/ui/mdc/field/FieldMultiInput.js +1 -1
  48. package/src/sap/ui/mdc/field/FieldSelect.js +1 -1
  49. package/src/sap/ui/mdc/field/ListFieldHelpItem.js +1 -1
  50. package/src/sap/ui/mdc/field/MultiValueFieldDelegate.js +22 -0
  51. package/src/sap/ui/mdc/field/MultiValueFieldItem.js +1 -1
  52. package/src/sap/ui/mdc/field/TokenDisplay.js +1 -1
  53. package/src/sap/ui/mdc/field/TokenizerDisplay.js +1 -1
  54. package/src/sap/ui/mdc/filterbar/FilterBarBase.js +35 -1
  55. package/src/sap/ui/mdc/filterbar/FilterBarBaseRenderer.js +3 -0
  56. package/src/sap/ui/mdc/filterbar/PropertyHelper.js +1 -1
  57. package/src/sap/ui/mdc/filterbar/p13n/AdaptationFilterBar.js +1 -1
  58. package/src/sap/ui/mdc/filterbar/vh/FilterBar.js +1 -1
  59. package/src/sap/ui/mdc/flexibility/Chart.flexibility.js +1 -1
  60. package/src/sap/ui/mdc/flexibility/FilterBar.flexibility.js +1 -1
  61. package/src/sap/ui/mdc/flexibility/FilterItemFlex.js +1 -1
  62. package/src/sap/ui/mdc/flexibility/ItemBaseFlex.js +1 -1
  63. package/src/sap/ui/mdc/flexibility/SortFlex.js +12 -5
  64. package/src/sap/ui/mdc/flexibility/Table.flexibility.js +17 -11
  65. package/src/sap/ui/mdc/flexibility/actiontoolbar/CombineAction.js +1 -1
  66. package/src/sap/ui/mdc/flexibility/actiontoolbar/SplitAction.js +1 -1
  67. package/src/sap/ui/mdc/flexibility/helpers/getAffectedSorter.js +25 -0
  68. package/src/sap/ui/mdc/geomap/Item.js +48 -0
  69. package/src/sap/ui/mdc/geomap/PropertyHelper.js +70 -0
  70. package/src/sap/ui/mdc/library.js +6 -4
  71. package/src/sap/ui/mdc/link/Factory.js +1 -1
  72. package/src/sap/ui/mdc/link/LinkItem.js +1 -1
  73. package/src/sap/ui/mdc/link/Panel.js +1 -1
  74. package/src/sap/ui/mdc/link/PanelItem.js +1 -1
  75. package/src/sap/ui/mdc/link/SemanticObjectMapping.js +1 -1
  76. package/src/sap/ui/mdc/link/SemanticObjectMappingItem.js +1 -1
  77. package/src/sap/ui/mdc/link/SemanticObjectUnavailableAction.js +1 -1
  78. package/src/sap/ui/mdc/messagebundle.properties +13 -1
  79. package/src/sap/ui/mdc/messagebundle_de.properties +2 -2
  80. package/src/sap/ui/mdc/messagebundle_en_US_saprigi.properties +9 -1
  81. package/src/sap/ui/mdc/messagebundle_fr.properties +1 -1
  82. package/src/sap/ui/mdc/mixin/AdaptationMixin.js +1 -1
  83. package/src/sap/ui/mdc/mixin/DelegateMixin.js +1 -1
  84. package/src/sap/ui/mdc/mixin/FilterBarLayoutMixin.js +1 -1
  85. package/src/sap/ui/mdc/mixin/FilterIntegrationMixin.js +1 -1
  86. package/src/sap/ui/mdc/mixin/PromiseMixin.js +1 -1
  87. package/src/sap/ui/mdc/mixin/PropertyHelperMixin.js +1 -1
  88. package/src/sap/ui/mdc/odata/TypeMap.js +1 -1
  89. package/src/sap/ui/mdc/odata/v4/GeomapDelegate.js +60 -0
  90. package/src/sap/ui/mdc/odata/v4/TableDelegate.js +53 -2
  91. package/src/sap/ui/mdc/odata/v4/TypeMap.js +1 -1
  92. package/src/sap/ui/mdc/p13n/PropertyHelper.js +1 -1
  93. package/src/sap/ui/mdc/p13n/StateUtil.js +1 -1
  94. package/src/sap/ui/mdc/p13n/subcontroller/ColumnFreezeController.js +1 -1
  95. package/src/sap/ui/mdc/p13n/subcontroller/ShowDetailsController.js +1 -1
  96. package/src/sap/ui/mdc/rules/Table.support.js +149 -118
  97. package/src/sap/ui/mdc/table/ColumnSettings.js +1 -1
  98. package/src/sap/ui/mdc/table/CreationRow.js +1 -1
  99. package/src/sap/ui/mdc/table/DragDropConfig.js +1 -1
  100. package/src/sap/ui/mdc/table/GridTableType.js +1 -14
  101. package/src/sap/ui/mdc/table/ODataV4PropertyHelper.js +1 -1
  102. package/src/sap/ui/mdc/table/PropertyHelper.js +1 -1
  103. package/src/sap/ui/mdc/table/ResponsiveColumnSettings.js +1 -1
  104. package/src/sap/ui/mdc/table/RowActionItem.js +1 -1
  105. package/src/sap/ui/mdc/table/RowSettings.js +1 -1
  106. package/src/sap/ui/mdc/table/utils/Personalization.js +1 -1
  107. package/src/sap/ui/mdc/themes/base/Geomap.less +50 -0
  108. package/src/sap/ui/mdc/ushell/SemanticObjectMapping.js +1 -1
  109. package/src/sap/ui/mdc/ushell/SemanticObjectMappingItem.js +1 -1
  110. package/src/sap/ui/mdc/ushell/SemanticObjectUnavailableAction.js +1 -1
  111. package/src/sap/ui/mdc/util/InfoBar.js +1 -1
  112. package/src/sap/ui/mdc/util/PromiseCache.js +1 -1
  113. package/src/sap/ui/mdc/util/PropertyHelper.js +1 -1
  114. package/src/sap/ui/mdc/util/PropertyHelperUtil.js +1 -1
  115. package/src/sap/ui/mdc/valuehelp/Dialog.js +2 -2
  116. package/src/sap/ui/mdc/valuehelp/FilterBar.js +22 -3
  117. package/src/sap/ui/mdc/valuehelp/Popover.js +1 -1
  118. package/src/sap/ui/mdc/valuehelp/base/Container.js +1 -1
  119. package/src/sap/ui/mdc/valuehelp/base/Content.js +1 -1
  120. package/src/sap/ui/mdc/valuehelp/base/DefineConditionPanel.js +126 -25
  121. package/src/sap/ui/mdc/valuehelp/base/DialogTab.js +1 -1
  122. package/src/sap/ui/mdc/valuehelp/base/FilterableListContent.js +4 -3
  123. package/src/sap/ui/mdc/valuehelp/base/ListContent.js +1 -1
  124. package/src/sap/ui/mdc/valuehelp/content/Bool.js +1 -1
  125. package/src/sap/ui/mdc/valuehelp/content/Conditions.js +1 -1
  126. package/src/sap/ui/mdc/valuehelp/content/FixedList.js +1 -1
  127. package/src/sap/ui/mdc/valuehelp/content/FixedListItem.js +1 -1
  128. package/src/sap/ui/mdc/valuehelp/content/MDCTable.js +1 -1
  129. package/src/sap/ui/mdc/valuehelp/content/MTable.js +1 -1
@@ -101,7 +101,7 @@ sap.ui.define([
101
101
  * @implements sap.ui.core.IFormContent, sap.ui.core.ISemanticFormContent, sap.m.IOverflowToolbarContent, sap.ui.core.ILabelable
102
102
  *
103
103
  * @author SAP SE
104
- * @version 1.141.2
104
+ * @version 1.142.0
105
105
  *
106
106
  * @constructor
107
107
  * @alias sap.ui.mdc.field.FieldBase
@@ -3173,6 +3173,9 @@ sap.ui.define([
3173
3173
 
3174
3174
  if (!bError) {
3175
3175
  this.setProperty("conditions", aConditions, true); // do not invalidate whole field
3176
+ if (this.shouldFireValidationSuccessOnConditionUpdate(aConditions)) {
3177
+ _fireValidationSuccessForContent.call(this, oContent);
3178
+ }
3176
3179
  }
3177
3180
 
3178
3181
  if (!FilterOperatorUtil.compareConditionsArray(aConditions, aConditionsOld)) { // update only if real change
@@ -3181,26 +3184,8 @@ sap.ui.define([
3181
3184
  _triggerChange.call(this, aConditions, true);
3182
3185
  }
3183
3186
  } else if (bChangeAfterError) { // last valid value choosen again
3187
+ _fireValidationSuccessForContent.call(this, oContent);
3184
3188
  _triggerChange.call(this, aConditions, true);
3185
-
3186
- if (oContent) { // fire validation success on content directly, as triggered only after ENTER or Focusout. (As we don't know the internal content behaviour we cannot just fake ENTER or Focusout)
3187
- for (const sProperty in oContent.getMetadata().getAllProperties()) {
3188
- if (oContent.getBindingPath(sProperty) === "/conditions") {
3189
- const oBinding = oContent.getBinding(sProperty);
3190
- const oType = oBinding?.getType();
3191
- if (oType instanceof ConditionsType) {
3192
- oContent.fireValidationSuccess({
3193
- element: oContent,
3194
- property: sProperty,
3195
- type: oType,
3196
- newValue: oContent.getDOMValue?.(),
3197
- oldValue: oContent.getProperty(sProperty)
3198
- }, false, true); // bAllowPreventDefault, bEnableEventBubbling
3199
- break;
3200
- }
3201
- }
3202
- }
3203
- }
3204
3189
  }
3205
3190
  }
3206
3191
 
@@ -4138,6 +4123,46 @@ sap.ui.define([
4138
4123
 
4139
4124
  };
4140
4125
 
4126
+ /**
4127
+ * Checks if a condition update needs to fire a <code>ValidationSuccess</code> event.
4128
+ *
4129
+ * This is required in {@link sap.ui.mdc.field.Field Field} if the condition update doesn't lead to an update of the
4130
+ * {@link sap.ui.mdc.field.Field#setValue value} property. (If only description or payload is changed.)
4131
+ *
4132
+ * @param {sap.ui.mdc.condition.ConditionObject[]} aConditions Current conditions
4133
+ * @returns {boolean} <code>true</code> if the <code>ValidationSuccess</code> event is fired
4134
+ * @protected
4135
+ * @since 1.142.0
4136
+ */
4137
+ FieldBase.prototype.shouldFireValidationSuccessOnConditionUpdate = function (aConditions) {
4138
+
4139
+ return false;
4140
+
4141
+ };
4142
+
4143
+ function _fireValidationSuccessForContent(oContent) {
4144
+
4145
+ if (oContent) { // fire validation success on content directly, as triggered only after ENTER or Focusout. (As we don't know the internal content behaviour we cannot just fake ENTER or Focusout)
4146
+ for (const sProperty in oContent.getMetadata().getAllProperties()) {
4147
+ if (oContent.getBindingPath(sProperty) === "/conditions") {
4148
+ const oBinding = oContent.getBinding(sProperty);
4149
+ const oType = oBinding?.getType();
4150
+ if (oType instanceof ConditionsType) {
4151
+ oContent.fireValidationSuccess({
4152
+ element: oContent,
4153
+ property: sProperty,
4154
+ type: oType,
4155
+ newValue: oContent.getDOMValue?.(),
4156
+ oldValue: oContent.getProperty(sProperty)
4157
+ }, false, true); // bAllowPreventDefault, bEnableEventBubbling
4158
+ break;
4159
+ }
4160
+ }
4161
+ }
4162
+ }
4163
+
4164
+ }
4165
+
4141
4166
  /**
4142
4167
  * Sets the ValueState for content controls
4143
4168
  *
@@ -31,7 +31,7 @@ sap.ui.define([
31
31
  * A <code>FieldInfoBase</code> element is a base class that shows any kind of information related to the <code>Field</code> control, for example, navigation targets or contact details.
32
32
  * This is the basis for link-features. If the link is pressed a popover might be opened.
33
33
  * @extends sap.ui.mdc.Element
34
- * @version 1.141.2
34
+ * @version 1.142.0
35
35
  * @constructor
36
36
  * @since 1.54.0
37
37
  * @public
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
  * The <code>FieldInput</code> control is used to render an input field inside a control based on {@link sap.ui.mdc.field.FieldBase FieldBase}.
25
25
  * It enhances the {@link sap.m.Input Input} control to add ARIA attributes and other {@link sap.ui.mdc.field.FieldBase FieldBase}-specific logic.
26
26
  * @extends sap.m.Input
27
- * @version 1.141.2
27
+ * @version 1.142.0
28
28
  * @constructor
29
29
  * @abstract
30
30
  * @private
@@ -16,7 +16,7 @@ sap.ui.define([
16
16
  * @class Functions uses in <code>FieldInputRenderer</code> and <code>FieldMultiInputRenderer</code> to adjust aria attributes.
17
17
  *
18
18
  * @author SAP SE
19
- * @version 1.141.2
19
+ * @version 1.142.0
20
20
  * @since 1.86.0
21
21
  * @alias sap.ui.mdc.field.FieldInputRenderUtil
22
22
  *
@@ -31,7 +31,7 @@ sap.ui.define([
31
31
  * The <code>FieldMultiInput</code> control is used to render a multi-input field inside a control based on {@link sap.ui.mdc.field.FieldBase FieldBase}.
32
32
  * It enhances the {@link sap.m.MultiInput MultiInput} control to add ARIA attributes and other {@link sap.ui.mdc.field.FieldBase FieldBase}-specific logic.
33
33
  * @extends sap.m.MultiInput
34
- * @version 1.141.2
34
+ * @version 1.142.0
35
35
  * @constructor
36
36
  * @abstract
37
37
  * @private
@@ -31,7 +31,7 @@ sap.ui.define([
31
31
  * The <code>FieldSelect</code> control is used to render an select field inside a control based on {@link sap.ui.mdc.field.FieldBase FieldBase}.
32
32
  * It enhances the {@link sap.m.Select Select} control to allow {@link sap.ui.mdc.field.FieldBase FieldBase}-specific ValueHelp logic.
33
33
  * @extends sap.m.Input
34
- * @version 1.141.2
34
+ * @version 1.142.0
35
35
  * @constructor
36
36
  * @abstract
37
37
  * @private
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.ui.mdc.valuehelp.content.FixedListItem
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.141.2
26
+ * @version 1.142.0
27
27
  *
28
28
  * @private
29
29
  * @ui5-restricted sap.fe
@@ -38,11 +38,33 @@ sap.ui.define([
38
38
  * @param {sap.ui.mdc.MultiValueField} oMultiValueField Current <code>MultiValueField</code> control to determine binding information to update the values of the related model
39
39
  * @public
40
40
  * @experimental
41
+ * @deprecated As of version 1.142, replaced by {@link module:sap/ui/mdc/field/MultiValueFieldDelegate.updateItemsFromConditions updateItemsFromConditions}.
41
42
  */
42
43
  MultiValueFieldDelegate.updateItems = function(oPayload, aConditions, oMultiValueField) {
43
44
 
44
45
  };
45
46
 
47
+
48
+ /**
49
+ * Implements the model-specific logic to update items after conditions have been updated.
50
+ *
51
+ * Items can be removed, updated, or added.
52
+ * Use the binding information of the <code>MultiValueField</code> control to update the data in the related model.
53
+ *
54
+ * @param {sap.ui.mdc.MultiValueField} oMultiValueField Current <code>MultiValueField</code> control to determine binding information to update the values of the related model
55
+ * @param {sap.ui.mdc.condition.ConditionObject[]} aConditions Current conditions of the <code>MultiValueField</code> control
56
+ * @public
57
+ * @experimental
58
+ * @since 1.142
59
+ */
60
+ MultiValueFieldDelegate.updateItemsFromConditions = function(oMultiValueField, aConditions) {
61
+ /**
62
+ * @deprecated As of version 1.142
63
+ */
64
+ this.updateItems.apply(this, [oMultiValueField.getPayload(), aConditions, oMultiValueField]);
65
+ };
66
+
67
+
46
68
  MultiValueFieldDelegate.indexOfCondition = function(oMultiValueField, oValueHelp, oCondition, aConditions) {
47
69
 
48
70
  // as all conditions belongs to items and therefore get state "Validated" compare conditions from manual user input with validated conditions
@@ -20,7 +20,7 @@ sap.ui.define([
20
20
  * Base type for <code>MultiValueFieldItem</code> control.
21
21
  * The {@link sap.ui.mdc.MultiValueField MultiValueField} holds its values as items. The <code>MultiValueFieldItem</code> element defines these items.
22
22
  * @extends sap.ui.core.Element
23
- * @version 1.141.2
23
+ * @version 1.142.0
24
24
  * @constructor
25
25
  * @since 1.93.0
26
26
  * @public
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  * The <code>TokenDisplay</code> control is used to render a field inside a control based on {@link sap.ui.mdc.field.FieldBase FieldBase}.
23
23
  * It enhances the {@link sap.m.Token Token} control to add ARIA attributes and other {@link sap.ui.mdc.field.FieldBase FieldBase}-specific logic.
24
24
  * @extends sap.m.Token
25
- * @version 1.141.2
25
+ * @version 1.142.0
26
26
  * @constructor
27
27
  * @abstract
28
28
  * @private
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  * It enhances the {@link sap.m.Tokenizer Tokenizer} control to support display only tokens.
30
30
  * @extends sap.m.Tokenizer
31
31
  * @implements sap.ui.core.ILabelable
32
- * @version 1.141.2
32
+ * @version 1.142.0
33
33
  * @constructor
34
34
  * @abstract
35
35
  *
@@ -72,7 +72,7 @@ sap.ui.define([
72
72
  * @class The <code>FilterBarBase</code> control is the base for filter displaying controls in MDC.
73
73
  * @extends sap.ui.mdc.Control
74
74
  * @author SAP SE
75
- * @version 1.141.2
75
+ * @version 1.142.0
76
76
  * @constructor
77
77
  * @public
78
78
  * @since 1.80.0
@@ -225,6 +225,17 @@ sap.ui.define([
225
225
  type: "sap.ui.mdc.filterbar.IFilterContainer",
226
226
  multiple: false,
227
227
  visibility: "hidden"
228
+ },
229
+
230
+ /**
231
+ * Internal aggregation that stores invisible texts for accessibility.
232
+ *
233
+ * @since 1.142
234
+ */
235
+ invisibleTexts: {
236
+ type: "sap.ui.core.InvisibleText",
237
+ multiple: true,
238
+ visibility: "hidden"
228
239
  }
229
240
  },
230
241
  associations: {
@@ -2031,6 +2042,29 @@ sap.ui.define([
2031
2042
  return aSearchConditions[0] ? aSearchConditions[0].values[0] : "";
2032
2043
  };
2033
2044
 
2045
+ /**
2046
+ * Adds an <code>InvisibleText</code> to the <code>FilterBar</code> that can be used for accessibility purposes.
2047
+ *
2048
+ * @param {sap.ui.core.InvisibleText} oInvisibleText The invisible text to be added
2049
+ * @protected
2050
+ * @since 1.142
2051
+ */
2052
+ FilterBarBase.prototype.addInvisibleText = function(oInvisibleText) {
2053
+ this.addAggregation("invisibleTexts", oInvisibleText);
2054
+ };
2055
+
2056
+ /**
2057
+ * Retrieves an <code>InvisibleText</code> by ID.
2058
+ *
2059
+ * @param {string} sId ID of the invisible text to be retrieved
2060
+ * @returns {sap.ui.core.InvisibleText} The invisible text with the given ID
2061
+ * @protected
2062
+ * @since 1.142
2063
+ */
2064
+ FilterBarBase.prototype.getInvisibleText = function(sId) {
2065
+ return this.getAggregation("invisibleTexts")?.find((oInvisibleText) => oInvisibleText.getId() === sId);
2066
+ };
2067
+
2034
2068
  FilterBarBase.prototype.exit = function() {
2035
2069
 
2036
2070
  if (this._hasAssignedVariantManagement() && FlexApplyAPI) {
@@ -37,6 +37,9 @@ sap.ui.define([],
37
37
  oRm.style("width", oControl.getWidth());
38
38
  }
39
39
  oRm.openEnd();
40
+
41
+ oControl.getAggregation("invisibleTexts")?.forEach((oInvisibleText) => oRm.renderControl(oInvisibleText));
42
+
40
43
  const oInnerLayout = oControl.getAggregation("layout") ? oControl.getAggregation("layout").getInner() : null;
41
44
  oRm.renderControl(oInnerLayout);
42
45
  oRm.close("div");
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @extends sap.ui.mdc.util.PropertyHelper
28
28
  *
29
29
  * @author SAP SE
30
- * @version 1.141.2
30
+ * @version 1.142.0
31
31
  *
32
32
  * @private
33
33
  * @since 1.95
@@ -39,7 +39,7 @@ sap.ui.define([
39
39
  *
40
40
  * @extends sap.ui.mdc.filterbar.FilterBarBase
41
41
  * @author SAP SE
42
- * @version 1.141.2
42
+ * @version 1.142.0
43
43
  * @constructor
44
44
  * @private
45
45
  * @ui5-restricted sap.ui.mdc
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * <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.
28
28
  * @extends sap.ui.mdc.valuehelp.FilterBar
29
29
  * @author SAP SE
30
- * @version 1.141.2
30
+ * @version 1.142.0
31
31
  * @constructor
32
32
  * @public
33
33
  * @since 1.84.0
@@ -15,7 +15,7 @@ sap.ui.define([
15
15
  *
16
16
  * @alias sap.ui.mdc.flexibility.Chart
17
17
  * @author SAP SE
18
- * @version 1.141.2
18
+ * @version 1.142.0
19
19
  */
20
20
  return {
21
21
  addItem: ChartItemFlex.addItem,
@@ -12,7 +12,7 @@ sap.ui.define(['./FilterItemFlex', './ConditionFlex', './PropertyInfoFlex'], (Fi
12
12
  *
13
13
  * @alias sap.ui.mdc.flexibility.FilterBar
14
14
  * @author SAP SE
15
- * @version 1.141.2
15
+ * @version 1.142.0
16
16
  */
17
17
 
18
18
  return {
@@ -14,7 +14,7 @@ sap.ui.define([
14
14
  *
15
15
  * @alias sap.ui.mdc.flexibility.FilterBar
16
16
  * @author SAP SE
17
- * @version 1.141.2
17
+ * @version 1.142.0
18
18
  */
19
19
 
20
20
  const oFilterItemFlex = Object.assign({}, ItemBaseFlex);
@@ -187,7 +187,7 @@ sap.ui.define([
187
187
  // 3) Check & insert the item in the controls according aggregation
188
188
  .then((oControlAggregationItem) => {
189
189
  if (!oControlAggregationItem) {
190
- throw new Error("No item in" + oAggregation.name + " created. Change to " + this._getChangeTypeText(!bIsRevert) + "cannot be " + this._getOperationText(bIsRevert) + "at this moment");
190
+ throw new Error(`No item in ${oAggregation.name} created. Change to ${this._getChangeTypeText(!bIsRevert)} cannot be ${this._getOperationText(bIsRevert)} at this moment`);
191
191
  }
192
192
 
193
193
  if (aDefaultAggregation.indexOf(oControlAggregationItem) < 0) {
@@ -9,8 +9,9 @@ sap.ui.define([
9
9
  "sap/ui/fl/changeHandler/Base",
10
10
  "sap/ui/fl/changeHandler/condenser/Classification",
11
11
  "sap/ui/fl/changeHandler/common/ChangeCategories",
12
- "./helpers/addKeyOrName"
13
- ], (merge, Util, FLChangeHandlerBase, CondenserClassification, ChangeCategories, addKeyOrName) => {
12
+ "./helpers/addKeyOrName",
13
+ "./helpers/getAffectedSorter"
14
+ ], (merge, Util, FLChangeHandlerBase, CondenserClassification, ChangeCategories, addKeyOrName, getAffectedSorter) => {
14
15
  "use strict";
15
16
 
16
17
  const fFinalizeSortChange = function(oChange, oControl, oSortContent, bIsRevert) {
@@ -174,7 +175,13 @@ sap.ui.define([
174
175
  revert: fRemoveSort,
175
176
  getCondenserInfo: function(oChange, mPropertyBag) {
176
177
  return {
177
- affectedControl: { id: addKeyOrName(oChange.getContent()).key },
178
+ // DINC0635408: If the application uses flex without backend condensing, the following action will result in a faulty condensing behaviour:
179
+ // addSort(asc) -> save variant -> removeSort(asc) -> addSort(desc) == addSort(asc) !! expected outcome is addSort(desc)
180
+ // This is due to the fact, that in those cases only the additional changes applied are considered for condensing, leading to removeSort, addSort canceling each other out,
181
+ // as they do not have any differing information (both have the same "affectedControl").
182
+ // To circumvent this issue (also will happen in RTA), we add the sort order to the affectedControl id, to provide a proper distinction during condensing.
183
+ // This does not have any effect on the actual change, as condensing (and the affectedControl) is not stored in the change, but solely used during runtime.
184
+ affectedControl: { id: getAffectedSorter(oChange.getContent()) },
178
185
  affectedControlIdProperty: "name",
179
186
  targetContainer: oChange.getSelector(),
180
187
  targetAggregation: "sorters",
@@ -196,7 +203,7 @@ sap.ui.define([
196
203
  revert: fAddSort,
197
204
  getCondenserInfo: function(oChange, mPropertyBag) {
198
205
  return {
199
- affectedControl: { id: addKeyOrName(oChange.getContent()).key },
206
+ affectedControl: { id: getAffectedSorter(oChange.getContent()) },
200
207
  affectedControlIdProperty: "name",
201
208
  targetContainer: oChange.getSelector(),
202
209
  targetAggregation: "sorters",
@@ -218,7 +225,7 @@ sap.ui.define([
218
225
  revert: fMoveSort,
219
226
  getCondenserInfo: function(oChange, mPropertyBag) {
220
227
  return {
221
- affectedControl: { id: addKeyOrName(oChange.getContent()).key },
228
+ affectedControl: { id: getAffectedSorter(oChange.getContent()) },
222
229
  affectedControlIdProperty: "name",
223
230
  targetContainer: oChange.getSelector(),
224
231
  targetAggregation: "sorters",
@@ -5,22 +5,28 @@
5
5
  */
6
6
 
7
7
  sap.ui.define([
8
- './SortFlex',
9
- './ColumnFlex',
10
- './ConditionFlex',
11
- './GroupFlex',
12
- './AggregateFlex',
13
- './xConfigFlex',
14
- 'sap/ui/fl/changeHandler/condenser/Classification'
15
- ], (SortFlex, ColumnFlex, ConditionFlex, GroupFlex, AggregateFlex, xConfigFlex, CondenserClassification) => {
8
+ "./SortFlex",
9
+ "./ColumnFlex",
10
+ "./ConditionFlex",
11
+ "./GroupFlex",
12
+ "./AggregateFlex",
13
+ "./xConfigFlex"
14
+ ], (
15
+ SortFlex,
16
+ ColumnFlex,
17
+ ConditionFlex,
18
+ GroupFlex,
19
+ AggregateFlex,
20
+ xConfigFlex
21
+ ) => {
16
22
  "use strict";
17
23
 
18
24
  return {
19
25
  "hideControl": "default",
20
26
  "unhideControl": "default",
21
- addColumn: ColumnFlex.createAddChangeHandler(),
22
- removeColumn: ColumnFlex.createRemoveChangeHandler(),
23
- moveColumn: ColumnFlex.createMoveChangeHandler(),
27
+ addColumn: ColumnFlex.addColumn,
28
+ removeColumn: ColumnFlex.removeColumn,
29
+ moveColumn: ColumnFlex.moveColumn,
24
30
  removeSort: SortFlex.removeSort,
25
31
  addSort: SortFlex.addSort,
26
32
  moveSort: SortFlex.moveSort,
@@ -17,7 +17,7 @@ sap.ui.define([
17
17
  *
18
18
  * @alias sap.ui.mdc.flexibility.actiontoolbar.CombineAction
19
19
  * @author SAP SE
20
- * @version 1.141.2
20
+ * @version 1.142.0
21
21
  */
22
22
  const CombineAction = {
23
23
  ...CombineButtonsHandler
@@ -17,7 +17,7 @@ sap.ui.define([
17
17
  *
18
18
  * @alias sap.ui.mdc.flexibility.actiontoolbar.SplitAction
19
19
  * @author SAP SE
20
- * @version 1.141.2
20
+ * @version 1.142.0
21
21
  */
22
22
  const SplitAction = {
23
23
  ...SplitMenuButtonHandler,
@@ -0,0 +1,25 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+ sap.ui.define([
7
+ "./addKeyOrName"
8
+ ], (addKeyOrName) => {
9
+ "use strict";
10
+
11
+ /**
12
+ * Returns the ID of the sorter affected by the change.
13
+ *
14
+ * @param {object} oChangeContent content of the change
15
+ * @returns {string} ID of the affected control
16
+ *
17
+ * @private
18
+ */
19
+ const getAffectedSorter = (oChangeContent) => {
20
+ const sSortOrder = oChangeContent.descending ? "desc" : "asc";
21
+ return `${addKeyOrName(oChangeContent).key}-${sSortOrder}`;
22
+ };
23
+
24
+ return getAffectedSorter;
25
+ });
@@ -0,0 +1,48 @@
1
+ /*
2
+ * !OpenUI5
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+ sap.ui.define([
7
+ "sap/ui/core/Element"
8
+ ], (Element) => {
9
+ "use strict";
10
+
11
+ /**
12
+ * Constructor for a new <code>Item</code>.
13
+ *
14
+ * @param {string} [sId] ID for the new element, generated automatically if no ID is given
15
+ * @param {object} [mSettings] initial settings for the new element
16
+ * @class The <code>Item</code> element for the geomap/property metadata used within MDC Geomap.
17
+ * @extends sap.ui.core.Element
18
+ * @author SAP SE
19
+ * @public
20
+ * @ui5-experimental-since 1.142
21
+ * @alias sap.ui.mdc.geomap.Item
22
+ */
23
+ const Item = Element.extend("sap.ui.mdc.geomap.Item", /** @lends sap.ui.mdc.geomap.Item.prototype */ {
24
+ metadata: {
25
+ library: "sap.ui.mdc",
26
+ properties: {
27
+ /**
28
+ * The unique identifier of the geomap item that reflects the name of property in the PropertyInfo.
29
+ *
30
+ * @since 1.142
31
+ */
32
+ propertyKey: {
33
+ type: "string"
34
+ },
35
+ /**
36
+ * Label for the item, either as a string literal or by a pointer, using the binding to some property containing the label.
37
+ */
38
+ label: {
39
+ type: "string"
40
+ }
41
+ }
42
+
43
+ }
44
+ });
45
+
46
+ return Item;
47
+
48
+ });
@@ -0,0 +1,70 @@
1
+ /*!
2
+ * OpenUI5
3
+ * (c) Copyright 2025 SAP SE or an SAP affiliate company.
4
+ * Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
5
+ */
6
+
7
+ sap.ui.define([
8
+ "../util/PropertyHelper", "sap/ui/core/Lib"
9
+ ], (
10
+ PropertyHelperBase,
11
+ Library
12
+ ) => {
13
+ "use strict";
14
+
15
+ /**
16
+ * Constructor for a new geomap property helper.
17
+ *
18
+ * @param {object[]} aProperties The properties to process in this helper
19
+ * @param {sap.ui.base.ManagedObject} [oParent] A reference to an instance that will act as the parent of this helper
20
+ *
21
+ * @class
22
+ * Geomap property helpers give geomaps of this library a consistent and standardized view on properties and their attributes.
23
+ * Property helpers validate the given properties, set default values, and provides utilities to work with these properties.
24
+ * The utilities can only be used for properties that are known to the helper. Known properties are all those that are passed to the constructor.
25
+ *
26
+ * @extends sap.ui.mdc.util.PropertyHelper
27
+ *
28
+ * @author SAP SE
29
+ * @version 1.142.0
30
+ *
31
+ * @private
32
+ * @ui5-experimental-since 1.142
33
+ * @alias sap.ui.mdc.geomap.PropertyHelper
34
+ */
35
+ const PropertyHelper = PropertyHelperBase.extend("sap.ui.mdc.geomap.PropertyHelper", {
36
+ constructor: function(aProperties, oParent) {
37
+ PropertyHelperBase.call(this, aProperties, oParent, {
38
+ propertyInfos: true
39
+ });
40
+ }
41
+ });
42
+
43
+ /**
44
+ * @inheritDoc
45
+ */
46
+ PropertyHelper.prototype.prepareProperty = function(oProperty, mProperties) {
47
+ if (!oProperty.path && oProperty.propertyPath) {
48
+ oProperty.path = oProperty.propertyPath;
49
+ }
50
+
51
+ if (!oProperty.typeConfig && oProperty.dataType) {
52
+ const oFormatOptions = oProperty.formatOptions ? oProperty.formatOptions : null;
53
+ const oConstraints = oProperty.constraints ? oProperty.constraints : {};
54
+
55
+ oProperty.typeConfig = this.getParent().getTypeMap().getTypeConfig(oProperty.dataType, oFormatOptions, oConstraints);
56
+ }
57
+
58
+ PropertyHelperBase.prototype.prepareProperty.apply(this, arguments);
59
+
60
+ oProperty.isAggregatable = function() {
61
+
62
+ if (oProperty) {
63
+ return oProperty.isComplex() ? false : oProperty.aggregatable;
64
+ }
65
+ };
66
+ };
67
+
68
+ return PropertyHelper;
69
+
70
+ });
@@ -22,13 +22,13 @@ sap.ui.define([
22
22
  * @namespace
23
23
  * @alias sap.ui.mdc
24
24
  * @author SAP SE
25
- * @version 1.141.2
25
+ * @version 1.142.0
26
26
  * @since 1.80
27
27
  * @public
28
28
  */
29
29
  const thisLib = Library.init({
30
30
  apiVersion: 2,
31
- version: "1.141.2",
31
+ version: "1.142.0",
32
32
  name: "sap.ui.mdc",
33
33
  dependencies: ["sap.ui.core", "sap.m"],
34
34
  ...{
@@ -68,7 +68,8 @@ sap.ui.define([
68
68
  "sap.ui.mdc.MultiValueField",
69
69
  "sap.ui.mdc.link.Panel",
70
70
  "sap.ui.mdc.Chart",
71
- "sap.ui.mdc.p13n.PersistenceProvider"
71
+ "sap.ui.mdc.p13n.PersistenceProvider",
72
+ "sap.ui.mdc.Geomap"
72
73
  ],
73
74
  elements: [
74
75
  "sap.ui.mdc.table.Column",
@@ -106,7 +107,8 @@ sap.ui.define([
106
107
  "sap.ui.mdc.valuehelp.content.FixedList",
107
108
  "sap.ui.mdc.valuehelp.content.FixedListItem",
108
109
  "sap.ui.mdc.valuehelp.content.MDCTable",
109
- "sap.ui.mdc.valuehelp.content.MTable"
110
+ "sap.ui.mdc.valuehelp.content.MTable",
111
+ "sap.ui.mdc.geomap.Item"
110
112
  ],
111
113
  extensions: {
112
114
  flChangeHandlers: {
@@ -11,7 +11,7 @@ sap.ui.define(["sap/base/Log"], (Log) => {
11
11
  * @namespace Factory to access services outside of sap.ui.mdc library like for example <code>ushell</code> services.
12
12
  * @name sap.ui.mdc.link.Factory
13
13
  * @author SAP SE
14
- * @version 1.141.2
14
+ * @version 1.142.0
15
15
  * @private
16
16
  * @since 1.54.0
17
17
  */