@openui5/sap.ui.fl 1.118.0 → 1.119.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 (156) hide show
  1. package/THIRDPARTY.txt +2 -2
  2. package/package.json +3 -3
  3. package/src/sap/ui/fl/.library +1 -1
  4. package/src/sap/ui/fl/ChangePersistence.js +1 -1
  5. package/src/sap/ui/fl/ChangePersistenceFactory.js +1 -1
  6. package/src/sap/ui/fl/FakeLrepConnectorLocalStorage.js +1 -1
  7. package/src/sap/ui/fl/FakeLrepConnectorSessionStorage.js +1 -1
  8. package/src/sap/ui/fl/FakeLrepLocalStorage.js +1 -1
  9. package/src/sap/ui/fl/FlexController.js +1 -1
  10. package/src/sap/ui/fl/FlexControllerFactory.js +1 -1
  11. package/src/sap/ui/fl/LayerUtils.js +14 -7
  12. package/src/sap/ui/fl/Utils.js +72 -172
  13. package/src/sap/ui/fl/apply/_internal/DelegateMediator.js +1 -1
  14. package/src/sap/ui/fl/apply/_internal/changes/Applier.js +8 -4
  15. package/src/sap/ui/fl/apply/_internal/changes/FlexCustomData.js +1 -1
  16. package/src/sap/ui/fl/apply/_internal/changes/Utils.js +1 -1
  17. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ApplyStrategyFactory.js +28 -8
  18. package/src/sap/ui/fl/apply/_internal/changes/descriptor/Preprocessor.js +1 -1
  19. package/src/sap/ui/fl/apply/_internal/changes/descriptor/Registration.js +1 -1
  20. package/src/sap/ui/fl/apply/_internal/changes/descriptor/RegistrationBuild.js +1 -1
  21. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddAnnotationsToOData.js +1 -1
  22. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddNewInbound.js +1 -1
  23. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeDataSource.js +1 -1
  24. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeInbound.js +1 -1
  25. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/RemoveAllInboundsExceptOne.js +1 -1
  26. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/SetTitle.js +1 -1
  27. package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetAbstract.js +1 -1
  28. package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetRegistrationIds.js +1 -1
  29. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/AddNewCard.js +1 -1
  30. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/ChangeCard.js +1 -1
  31. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/DeleteCard.js +1 -1
  32. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddComponentUsages.js +1 -1
  33. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddLibrary.js +1 -1
  34. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddNewModel.js +1 -1
  35. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddNewModelEnhanceWith.js +1 -1
  36. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/SetFlexExtensionPointEnabled.js +1 -1
  37. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/SetMinUI5Version.js +1 -1
  38. package/src/sap/ui/fl/apply/_internal/connectors/ObjectStorageUtils.js +1 -1
  39. package/src/sap/ui/fl/apply/_internal/extensionPoint/Processor.js +1 -1
  40. package/src/sap/ui/fl/apply/_internal/flexObjects/AppDescriptorChange.js +1 -1
  41. package/src/sap/ui/fl/apply/_internal/flexObjects/CompVariant.js +1 -1
  42. package/src/sap/ui/fl/apply/_internal/flexObjects/ControllerExtensionChange.js +1 -1
  43. package/src/sap/ui/fl/apply/_internal/flexObjects/FlVariant.js +1 -1
  44. package/src/sap/ui/fl/apply/_internal/flexObjects/FlexObject.js +5 -1
  45. package/src/sap/ui/fl/apply/_internal/flexObjects/FlexObjectFactory.js +1 -1
  46. package/src/sap/ui/fl/apply/_internal/flexObjects/UIChange.js +1 -1
  47. package/src/sap/ui/fl/apply/_internal/flexObjects/Variant.js +1 -1
  48. package/src/sap/ui/fl/apply/_internal/flexState/FlexState.js +17 -88
  49. package/src/sap/ui/fl/apply/_internal/flexState/Loader.js +1 -1
  50. package/src/sap/ui/fl/apply/_internal/flexState/ManifestUtils.js +1 -1
  51. package/src/sap/ui/fl/apply/_internal/flexState/UI2Personalization/UI2PersonalizationState.js +1 -1
  52. package/src/sap/ui/fl/apply/_internal/flexState/changes/DependencyHandler.js +1 -1
  53. package/src/sap/ui/fl/apply/_internal/flexState/changes/ExtensionPointState.js +1 -1
  54. package/src/sap/ui/fl/apply/_internal/flexState/compVariants/CompVariantMerger.js +2 -2
  55. package/src/sap/ui/fl/apply/_internal/flexState/compVariants/Utils.js +6 -1
  56. package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/Switcher.js +1 -1
  57. package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/VariantManagementState.js +96 -77
  58. package/src/sap/ui/fl/apply/_internal/preprocessors/ControllerExtension.js +1 -1
  59. package/src/sap/ui/fl/apply/_internal/preprocessors/EventHistory.js +1 -1
  60. package/src/sap/ui/fl/apply/_internal/preprocessors/RegistrationDelegator.js +1 -1
  61. package/src/sap/ui/fl/apply/_internal/preprocessors/XmlPreprocessor.js +1 -1
  62. package/src/sap/ui/fl/apply/api/ControlVariantApplyAPI.js +1 -1
  63. package/src/sap/ui/fl/changeHandler/AddIFrame.js +1 -1
  64. package/src/sap/ui/fl/changeHandler/AddXML.js +1 -1
  65. package/src/sap/ui/fl/changeHandler/AddXMLAtExtensionPoint.js +1 -1
  66. package/src/sap/ui/fl/changeHandler/Base.js +1 -1
  67. package/src/sap/ui/fl/changeHandler/BaseAddViaDelegate.js +1 -1
  68. package/src/sap/ui/fl/changeHandler/BaseAddXml.js +1 -1
  69. package/src/sap/ui/fl/changeHandler/BaseRename.js +45 -59
  70. package/src/sap/ui/fl/changeHandler/HideControl.js +1 -1
  71. package/src/sap/ui/fl/changeHandler/MoveControls.js +168 -260
  72. package/src/sap/ui/fl/changeHandler/MoveElements.js +33 -87
  73. package/src/sap/ui/fl/changeHandler/PropertyBindingChange.js +1 -1
  74. package/src/sap/ui/fl/changeHandler/PropertyChange.js +1 -1
  75. package/src/sap/ui/fl/changeHandler/StashControl.js +31 -53
  76. package/src/sap/ui/fl/changeHandler/UnhideControl.js +1 -1
  77. package/src/sap/ui/fl/changeHandler/UnstashControl.js +24 -26
  78. package/src/sap/ui/fl/changeHandler/UpdateIFrame.js +3 -5
  79. package/src/sap/ui/fl/changeHandler/common/createIFrame.js +2 -0
  80. package/src/sap/ui/fl/descriptorRelated/api/DescriptorChangeFactory.js +4 -4
  81. package/src/sap/ui/fl/descriptorRelated/api/DescriptorInlineChangeFactory.js +1 -1
  82. package/src/sap/ui/fl/descriptorRelated/api/DescriptorVariantFactory.js +1 -1
  83. package/src/sap/ui/fl/designtime/util/IFrame.designtime.js +5 -0
  84. package/src/sap/ui/fl/{write → initial}/_internal/FlexInfoSession.js +11 -3
  85. package/src/sap/ui/fl/initial/_internal/Storage.js +5 -5
  86. package/src/sap/ui/fl/initial/_internal/StorageUtils.js +1 -1
  87. package/src/sap/ui/fl/initial/_internal/changeHandlers/ChangeHandlerRegistration.js +1 -1
  88. package/src/sap/ui/fl/initial/_internal/changeHandlers/ChangeHandlerStorage.js +1 -1
  89. package/src/sap/ui/fl/initial/_internal/connectors/Utils.js +1 -1
  90. package/src/sap/ui/fl/initial/_internal/storageResultDisassemble.js +1 -1
  91. package/src/sap/ui/fl/interfaces/BaseLoadConnector.js +1 -1
  92. package/src/sap/ui/fl/interfaces/Delegate.js +1 -1
  93. package/src/sap/ui/fl/library.js +43 -43
  94. package/src/sap/ui/fl/messagebundle_bg.properties +2 -2
  95. package/src/sap/ui/fl/messagebundle_en.properties +2 -2
  96. package/src/sap/ui/fl/messagebundle_ja.properties +6 -6
  97. package/src/sap/ui/fl/messagebundle_sl.properties +2 -2
  98. package/src/sap/ui/fl/messagebundle_uk.properties +1 -1
  99. package/src/sap/ui/fl/support/_internal/getChangeDependencies.js +1 -1
  100. package/src/sap/ui/fl/support/_internal/getFlexSettings.js +1 -1
  101. package/src/sap/ui/fl/support/api/SupportAPI.js +1 -1
  102. package/src/sap/ui/fl/support/apps/contentbrowser/controller/ContentDetails.controller.js +1 -1
  103. package/src/sap/ui/fl/support/apps/contentbrowser/controller/ContentDetailsEdit.controller.js +1 -1
  104. package/src/sap/ui/fl/support/apps/contentbrowser/controller/LayerContentMaster.controller.js +1 -1
  105. package/src/sap/ui/fl/support/apps/contentbrowser/controller/Layers.controller.js +1 -1
  106. package/src/sap/ui/fl/support/apps/contentbrowser/lrepConnector/LRepConnector.js +1 -1
  107. package/src/sap/ui/fl/support/apps/contentbrowser/utils/DataUtils.js +1 -1
  108. package/src/sap/ui/fl/support/apps/contentbrowser/utils/ErrorUtils.js +1 -1
  109. package/src/sap/ui/fl/transport/TransportSelection.js +1 -1
  110. package/src/sap/ui/fl/util/IFrame.js +60 -27
  111. package/src/sap/ui/fl/util/IFrameRenderer.js +9 -1
  112. package/src/sap/ui/fl/util/ManagedObjectModel.js +1 -1
  113. package/src/sap/ui/fl/util/resolveBinding.js +1 -1
  114. package/src/sap/ui/fl/variants/VariantManagement.js +17 -18
  115. package/src/sap/ui/fl/variants/VariantModel.js +2 -1
  116. package/src/sap/ui/fl/variants/context/manifest.json +2 -2
  117. package/src/sap/ui/fl/write/_internal/Storage.js +1 -1
  118. package/src/sap/ui/fl/write/_internal/StorageFeaturesMerger.js +1 -1
  119. package/src/sap/ui/fl/write/_internal/Versions.js +3 -3
  120. package/src/sap/ui/fl/write/_internal/appVariant/AppVariant.js +1 -1
  121. package/src/sap/ui/fl/write/_internal/appVariant/AppVariantFactory.js +1 -1
  122. package/src/sap/ui/fl/write/_internal/appVariant/AppVariantInlineChange.js +1 -1
  123. package/src/sap/ui/fl/write/_internal/appVariant/AppVariantInlineChangeFactory.js +1 -1
  124. package/src/sap/ui/fl/write/_internal/condenser/Condenser.js +1 -1
  125. package/src/sap/ui/fl/write/_internal/condenser/UIReconstruction.js +1 -1
  126. package/src/sap/ui/fl/write/_internal/connectors/BackendConnector.js +1 -1
  127. package/src/sap/ui/fl/write/_internal/connectors/KeyUserConnector.js +2 -2
  128. package/src/sap/ui/fl/write/_internal/connectors/LrepConnector.js +1 -1
  129. package/src/sap/ui/fl/write/_internal/connectors/NeoLrepConnector.js +1 -1
  130. package/src/sap/ui/fl/write/_internal/connectors/ObjectPathConnector.js +1 -1
  131. package/src/sap/ui/fl/write/_internal/connectors/PersonalizationConnector.js +1 -1
  132. package/src/sap/ui/fl/write/_internal/connectors/Utils.js +1 -1
  133. package/src/sap/ui/fl/write/_internal/extensionPoint/Processor.js +1 -1
  134. package/src/sap/ui/fl/write/_internal/extensionPoint/Registry.js +1 -1
  135. package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPAccess.js +1 -1
  136. package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPExtensibilityVariant.js +1 -1
  137. package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPExtensibilityVariantFactory.js +1 -1
  138. package/src/sap/ui/fl/write/_internal/fieldExtensibility/MultiTenantABAPExtensibilityVariant.js +1 -1
  139. package/src/sap/ui/fl/write/_internal/fieldExtensibility/ServiceValidation.js +1 -1
  140. package/src/sap/ui/fl/write/_internal/fieldExtensibility/SingleTenantABAPExtensibilityVariant.js +1 -1
  141. package/src/sap/ui/fl/write/_internal/fieldExtensibility/UriParser.js +1 -1
  142. package/src/sap/ui/fl/write/_internal/fieldExtensibility/Utils.js +1 -1
  143. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/CAPAccess.js +1 -1
  144. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/dialog/CustomFieldCAPDialog.js +1 -1
  145. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/booleanEditor/BooleanEditor.js +1 -1
  146. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/rangeEditor/RangeEditor.js +1 -1
  147. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/timeEditor/TimeEditor.js +1 -1
  148. package/src/sap/ui/fl/write/_internal/flexState/FlexObjectState.js +1 -1
  149. package/src/sap/ui/fl/write/_internal/flexState/compVariants/CompVariantState.js +63 -43
  150. package/src/sap/ui/fl/write/_internal/transport/TransportSelection.js +1 -1
  151. package/src/sap/ui/fl/write/_internal/transport/Transports.js +1 -1
  152. package/src/sap/ui/fl/write/api/ContextBasedAdaptationsAPI.js +1 -1
  153. package/src/sap/ui/fl/write/api/FieldExtensibility.js +1 -1
  154. package/src/sap/ui/fl/write/api/PersistenceWriteAPI.js +1 -1
  155. package/src/sap/ui/fl/write/api/ReloadInfoAPI.js +12 -2
  156. package/src/sap/ui/fl/write/api/connectors/ObjectStorageConnector.js +14 -11
@@ -69,7 +69,7 @@ function(
69
69
  *
70
70
  * @namespace sap.ui.fl.apply._internal.flexState.ManifestUtils
71
71
  * @since 1.74
72
- * @version 1.118.0
72
+ * @version 1.119.0
73
73
  * @private
74
74
  */
75
75
  var ManifestUtils = {
@@ -18,7 +18,7 @@ sap.ui.define([
18
18
  *
19
19
  * @namespace sap.ui.fl.apply._internal.flexState.UI2Personalization.UI2PersonalizationState
20
20
  * @since 1.75
21
- * @version 1.118.0
21
+ * @version 1.119.0
22
22
  * @private
23
23
  * @ui5-restricted
24
24
  */
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  *
23
23
  * @namespace sap.ui.fl.apply._internal.flexState.changes.DependencyHandler
24
24
  * @since 1.74
25
- * @version 1.118.0
25
+ * @version 1.119.0
26
26
  * @private
27
27
  * @ui5-restricted sap.ui.fl
28
28
  */
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  *
28
28
  * @namespace sap.ui.fl.apply._internal.flexState.changes.ExtensionPointState
29
29
  * @since 1.79
30
- * @version 1.118.0
30
+ * @version 1.119.0
31
31
  * @private
32
32
  * @ui5-restricted
33
33
  */
@@ -123,7 +123,7 @@ sap.ui.define([
123
123
  *
124
124
  * @namespace sap.ui.fl.apply._internal.flexState.compVariants.CompVariantMerger
125
125
  * @since 1.86
126
- * @version 1.118.0
126
+ * @version 1.119.0
127
127
  * @private
128
128
  * @ui5-restricted sap.ui.fl
129
129
  */
@@ -208,7 +208,7 @@ sap.ui.define([
208
208
  *
209
209
  * @function
210
210
  * @since 1.89
211
- * @version 1.118.0
211
+ * @version 1.119.0
212
212
  * @private
213
213
  * @ui5-restricted sap.ui.fl
214
214
  *
@@ -22,13 +22,18 @@ sap.ui.define([], function() {
22
22
 
23
23
  /**
24
24
  * Retrieves the default variant ID for a variant map.
25
+ * Removed variants are filtered out.
25
26
  *
26
27
  * @param {object} mCompVariantsMap Prepared map for compVariants
27
28
  * @returns {string} ID of the default variant
28
29
  */
29
30
  Utils.getDefaultVariantId = (mCompVariantsMap) => {
30
31
  const aDefaultVariantChanges = mCompVariantsMap.defaultVariants;
31
- const oChange = aDefaultVariantChanges[aDefaultVariantChanges.length - 1];
32
+ const oChange = aDefaultVariantChanges.toReversed().find((oChange) => {
33
+ return mCompVariantsMap.variants.some((oVariant) => {
34
+ return oChange?.getContent().defaultVariantName === oVariant.getId();
35
+ });
36
+ });
32
37
  return oChange?.getContent().defaultVariantName || "";
33
38
  };
34
39
 
@@ -90,7 +90,7 @@ sap.ui.define([
90
90
  *
91
91
  * @namespace sap.ui.fl.apply._internal.flexState.controlVariants.Switcher
92
92
  * @since 1.74
93
- * @version 1.118.0
93
+ * @version 1.119.0
94
94
  * @private
95
95
  * @ui5-restricted
96
96
  */
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  *
35
35
  * @namespace sap.ui.fl.apply._internal.flexState.controlVariants.VariantManagementState
36
36
  * @since 1.74
37
- * @version 1.118.0
37
+ * @version 1.119.0
38
38
  * @private
39
39
  * @ui5-restricted
40
40
  */
@@ -51,13 +51,18 @@ sap.ui.define([
51
51
  ["technicalParameters", VariantsApplyUtil.VARIANT_TECHNICAL_PARAMETER],
52
52
  oComponentData
53
53
  ) || [];
54
- var aVariantIds = aVariants.map(function(oVariant) {
55
- return oVariant.getId();
54
+
55
+ // Only visible variants can be current
56
+ var aVariantKeys = aVariants.filter((oVariant) => {
57
+ return oVariant.visible;
58
+ })
59
+ .map((oVariant) => {
60
+ return oVariant.key;
56
61
  });
57
62
 
58
63
  // Check if variant is set via url parameter
59
- var sDesiredSelectedVariantId = aVariantIds.find(function(sVariantId) {
60
- return aVariantReferencesFromUrl.includes(sVariantId);
64
+ var sDesiredSelectedVariantId = aVariantKeys.find((sVariantKey) => {
65
+ return aVariantReferencesFromUrl.includes(sVariantKey);
61
66
  });
62
67
  if (sDesiredSelectedVariantId) {
63
68
  return sDesiredSelectedVariantId;
@@ -69,45 +74,16 @@ sap.ui.define([
69
74
  // Default is set via applyVariantManagementChange instead
70
75
  return aCtrlVariantManagementChanges
71
76
  .reverse()
72
- .map(function(oVariantManagementChange) {
77
+ .map((oVariantManagementChange) => {
73
78
  return oVariantManagementChange.getContent().defaultVariant;
74
79
  })
75
- .find(function(sDesiredDefaultVariantId) {
76
- return aVariantIds.includes(sDesiredDefaultVariantId);
80
+ .find((sDesiredDefaultVariantKey) => {
81
+ return aVariantKeys.includes(sDesiredDefaultVariantKey);
77
82
  });
78
83
  }
79
84
 
80
- function createVariantManagement(aFlexObjects, aVariants, sReference, sVMReference) {
85
+ function createVariantManagement(aFlexObjects, sReference, sVMReference) {
81
86
  var sCurrentVariantReference = (mCurrentVariantReferences[sReference] || {})[sVMReference];
82
- var aRelevantVariants = aVariants.filter(function(oFlexObject) {
83
- return sVMReference === oFlexObject.getVariantManagementReference();
84
- });
85
- if (
86
- !sCurrentVariantReference
87
- // Current variant might be unavailable due to layer filtering
88
- // or because a component with a different id but the same flex reference was initalized
89
- || !aRelevantVariants.find(function(oVariant) {
90
- return oVariant.getId() === sCurrentVariantReference;
91
- })
92
- ) {
93
- // Try to determine the initial variant from setDefault changes or the url params
94
- var aCtrlVariantManagementChanges = aFlexObjects.filter(function(oFlexObject) {
95
- return (
96
- oFlexObject.getFileType() === "ctrl_variant_management_change"
97
- && sVMReference === oFlexObject.getSelector().id
98
- );
99
- });
100
- sCurrentVariantReference = getInitialCurrentVariant(
101
- sReference,
102
- aCtrlVariantManagementChanges,
103
- aRelevantVariants
104
- ) || sVMReference;
105
- ObjectPath.set(
106
- [sReference, sVMReference],
107
- sCurrentVariantReference,
108
- mCurrentVariantReferences
109
- );
110
- }
111
87
  return {
112
88
  defaultVariant: sVMReference,
113
89
  currentVariant: sCurrentVariantReference,
@@ -121,6 +97,26 @@ sap.ui.define([
121
97
  };
122
98
  }
123
99
 
100
+ function findVariantInFlexObjects(aFlexObjects, sId) {
101
+ return aFlexObjects.find((oFlexObject) => {
102
+ return oFlexObject.getId() === sId;
103
+ });
104
+ }
105
+
106
+ function getAllReferencedVariantIds(aFlexObjects, oVariant) {
107
+ const aVariants = [];
108
+ let oCurrentVariant = oVariant;
109
+ let oFoundVariant;
110
+ do {
111
+ oFoundVariant = findVariantInFlexObjects(aFlexObjects, oCurrentVariant.getVariantReference());
112
+ if (oFoundVariant) {
113
+ aVariants.push(oCurrentVariant);
114
+ oCurrentVariant = oFoundVariant;
115
+ }
116
+ } while (oFoundVariant);
117
+ return aVariants.map((oVariant) => oVariant.getId());
118
+ }
119
+
124
120
  function createVariantEntry(aFlexObjects, oVariantInstance) {
125
121
  return {
126
122
  instance: oVariantInstance,
@@ -136,7 +132,8 @@ sap.ui.define([
136
132
  return false;
137
133
  }
138
134
  var bOwnControlChange = oFlexObject.getVariantReference() === oVariantInstance.getId();
139
- var bControlChangeOfReferencedVariant = oFlexObject.getVariantReference() === oVariantInstance.getVariantReference();
135
+ var aReferencedVariantIds = getAllReferencedVariantIds(aFlexObjects, oVariantInstance);
136
+ var bControlChangeOfReferencedVariant = aReferencedVariantIds.indexOf(oFlexObject.getVariantReference()) > -1;
140
137
  var bLowerLayerChange = LayerUtils.compareAgainstCurrentLayer(oFlexObject.getLayer(), oVariantInstance.getLayer()) === -1;
141
138
  return bOwnControlChange || bControlChangeOfReferencedVariant && bLowerLayerChange;
142
139
  }),
@@ -152,7 +149,7 @@ sap.ui.define([
152
149
  };
153
150
  }
154
151
 
155
- function applyVariantChange(oVariantEntry, oVariantChange, sReference, oVariantManagementsMap) {
152
+ function applyVariantChange(oVariantEntry, oVariantChange) {
156
153
  switch (oVariantChange.getChangeType()) {
157
154
  case "setTitle":
158
155
  oVariantEntry.title = oVariantChange.getText("title");
@@ -165,16 +162,6 @@ sap.ui.define([
165
162
  break;
166
163
  case "setVisible":
167
164
  oVariantEntry.visible = oVariantChange.getContent().visible;
168
-
169
- // Set standard variant as current variant if current variant is set to invisible
170
- var sVMReference = oVariantEntry.instance.getVariantManagementReference();
171
- if (
172
- mCurrentVariantReferences[sReference][sVMReference] === oVariantEntry.key
173
- && !oVariantEntry.visible
174
- ) {
175
- mCurrentVariantReferences[sReference][sVMReference] = sVMReference;
176
- oVariantManagementsMap[sVMReference].currentVariant = sVMReference;
177
- }
178
165
  break;
179
166
  case "setContexts":
180
167
  oVariantEntry.contexts = oVariantChange.getContent().contexts;
@@ -187,53 +174,81 @@ sap.ui.define([
187
174
  function applyVariantManagementChange(oVariantManagementEntry, oVariantManagementChange) {
188
175
  // Currently only setDefault
189
176
  var sDesiredDefaultVariant = oVariantManagementChange.getContent().defaultVariant;
190
- // Only set default if the variant exists
191
- if (oVariantManagementEntry.variants.some(function(oVariant) {
192
- return oVariant.key === sDesiredDefaultVariant;
193
- })) {
194
- oVariantManagementEntry.defaultVariant = sDesiredDefaultVariant;
195
- }
177
+ oVariantManagementEntry.variants.forEach((oVariant) => {
178
+ // Only set default if the variant exists and was not removed
179
+ if (
180
+ oVariant.key === sDesiredDefaultVariant
181
+ && oVariant.visible
182
+ ) {
183
+ oVariantManagementEntry.defaultVariant = sDesiredDefaultVariant;
184
+ }
185
+ });
196
186
  }
197
187
 
198
- function createVariantsMap(aFlexObjects, sReference) {
199
- var aVariants = aFlexObjects.filter(function(oFlexObject) {
188
+ function createVariantsMap(aFlexObjects) {
189
+ const sReference = aFlexObjects[0]?.getFlexObjectMetadata().reference;
190
+ const aVariants = aFlexObjects.filter((oFlexObject) => {
200
191
  return oFlexObject.getFileType() === "ctrl_variant";
201
192
  });
202
193
 
203
- var oVariantManagementsMap = {};
204
- aVariants.forEach(function(oVariantInstance) {
194
+ const oVariantManagementsMap = {};
195
+ aVariants.forEach((oVariantInstance) => {
205
196
  var sVMReference = oVariantInstance.getVariantManagementReference();
206
- oVariantManagementsMap[sVMReference] ||= createVariantManagement(aFlexObjects, aVariants, sReference, sVMReference);
197
+ oVariantManagementsMap[sVMReference] ||= createVariantManagement(aFlexObjects, sReference, sVMReference);
207
198
  oVariantManagementsMap[sVMReference].variants.push(
208
199
  createVariantEntry(aFlexObjects, oVariantInstance)
209
200
  );
210
201
  });
211
202
 
212
203
  aFlexObjects
213
- .filter(function(oFlexObject) {
204
+ .filter((oFlexObject) => {
214
205
  return oFlexObject.getFileType() === "ctrl_variant_change";
215
206
  })
216
- .forEach(function(oVariantChange) {
217
- var oVariantEntry = findVariant(oVariantManagementsMap, oVariantChange);
207
+ .forEach((oVariantChange) => {
208
+ const oVariantEntry = findVariant(oVariantManagementsMap, oVariantChange);
218
209
  if (oVariantEntry) {
219
210
  applyVariantChange(oVariantEntry, oVariantChange, sReference, oVariantManagementsMap);
220
211
  }
221
212
  });
222
213
 
223
- aFlexObjects
224
- .filter(function(oFlexObject) {
214
+ const aCtrlVariantManagementChanges = aFlexObjects
215
+ .filter((oFlexObject) => {
225
216
  return oFlexObject.getFileType() === "ctrl_variant_management_change";
226
- })
227
- .forEach(function(oVariantManagementChange) {
228
- var oVariantManagementEntry = oVariantManagementsMap[oVariantManagementChange.getSelector().id];
217
+ });
218
+
219
+ aCtrlVariantManagementChanges.forEach((oVariantManagementChange) => {
220
+ const oVariantManagementEntry = oVariantManagementsMap[oVariantManagementChange.getSelector().id];
229
221
  if (oVariantManagementEntry) {
230
222
  applyVariantManagementChange(oVariantManagementEntry, oVariantManagementChange);
231
223
  }
232
224
  });
233
225
 
234
- Object.values(oVariantManagementsMap).forEach(function(oVariantManagement) {
226
+ Object.keys(oVariantManagementsMap).forEach((sVMReference) => {
227
+ const oVariantManagement = oVariantManagementsMap[sVMReference];
228
+
229
+ // If current variant is not already set, set initial current variant
230
+ // Current variant might be unavailable due to layer filtering
231
+ // or because a component with a different id but the same flex reference was initalized
232
+ if (
233
+ !oVariantManagement.currentVariant || !oVariantManagement.variants.some((oVariant) => {
234
+ return oVariant.key === oVariantManagement.currentVariant;
235
+ })
236
+ ) {
237
+ const sCurrentVariant = getInitialCurrentVariant(
238
+ sReference,
239
+ aCtrlVariantManagementChanges,
240
+ oVariantManagement.variants
241
+ ) || sVMReference;
242
+ oVariantManagement.currentVariant = sCurrentVariant;
243
+ ObjectPath.set(
244
+ [sReference, sVMReference],
245
+ sCurrentVariant,
246
+ mCurrentVariantReferences
247
+ );
248
+ }
249
+
235
250
  // Standard variant should always be at the first position, all others are sorted alphabetically
236
- oVariantManagement.variants.sort(function(oVariant1, oVariant2) {
251
+ oVariantManagement.variants.sort((oVariant1, oVariant2) => {
237
252
  if (oVariant1.isStandardVariant) {
238
253
  return -1;
239
254
  }
@@ -244,10 +259,10 @@ sap.ui.define([
244
259
  });
245
260
 
246
261
  // Set modified flag
247
- var aCurrentVariantChanges = oVariantManagement.variants.find(function(oVariant) {
262
+ var aCurrentVariantChanges = oVariantManagement.variants.find((oVariant) => {
248
263
  return oVariant.key === oVariantManagement.currentVariant;
249
264
  }).controlChanges;
250
- oVariantManagement.modified = aCurrentVariantChanges.some(function(oChange) {
265
+ oVariantManagement.modified = aCurrentVariantChanges.some((oChange) => {
251
266
  return !oChange.isPersisted() && !oChange.getSavedToVariant();
252
267
  });
253
268
 
@@ -283,7 +298,6 @@ sap.ui.define([
283
298
 
284
299
  var oVariantManagementMapDataSelector = new DataSelector({
285
300
  id: "variantManagementMap",
286
- parameterKey: "reference",
287
301
  parentDataSelector: FlexState.getFlexObjectsDataSelector(),
288
302
  executeFunction: createVariantsMap
289
303
  });
@@ -327,10 +341,15 @@ sap.ui.define([
327
341
  };
328
342
 
329
343
  /**
330
- * Test function to reset all current variant references.
344
+ * Removes the saved current variant from the internal map for the given reference
345
+ *
346
+ * @param {string} sReference - Flex Reference of the app
331
347
  */
332
- VariantManagementState.resetCurrentVariantReferences = function() {
333
- mCurrentVariantReferences = {};
348
+ VariantManagementState.resetCurrentVariantReference = function(sReference) {
349
+ delete mCurrentVariantReferences[sReference];
350
+ oVariantManagementMapDataSelector.checkUpdate({
351
+ reference: sReference
352
+ });
334
353
  };
335
354
 
336
355
  /**
@@ -26,7 +26,7 @@ sap.ui.define([
26
26
  * @class
27
27
  * @constructor
28
28
  * @author SAP SE
29
- * @version 1.118.0
29
+ * @version 1.119.0
30
30
  * @since 1.27.0
31
31
  * @private
32
32
  * @ui5-restricted sap.ui.fl, sap.ui.core
@@ -14,7 +14,7 @@ sap.ui.define(["sap/ui/core/Core"], function(oCore) {
14
14
  * @alias sap.ui.fl.apply._internal.preprocessors.EventHistory
15
15
  * @since 1.47.0
16
16
  * @author SAP SE
17
- * @version 1.118.0
17
+ * @version 1.119.0
18
18
  *
19
19
  * @private
20
20
  * @ui5-restricted sap.ui.fl.apply._internal.preprocessors.RegistrationDelegator
@@ -44,7 +44,7 @@ sap.ui.define([
44
44
  * @class
45
45
  * @constructor
46
46
  * @author SAP SE
47
- * @version 1.118.0
47
+ * @version 1.119.0
48
48
  * @since 1.43.0
49
49
  * @private
50
50
  */
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  * @class
37
37
  * @constructor
38
38
  * @author SAP SE
39
- * @version 1.118.0
39
+ * @version 1.119.0
40
40
  * @since 1.27.0
41
41
  * @private
42
42
  */
@@ -46,7 +46,7 @@ sap.ui.define([
46
46
  *
47
47
  * @namespace sap.ui.fl.apply.api.ControlVariantApplyAPI
48
48
  * @since 1.67
49
- * @version 1.118.0
49
+ * @version 1.119.0
50
50
  * @public
51
51
  */
52
52
  var ControlVariantApplyAPI = /** @lends sap.ui.fl.apply.api.ControlVariantApplyAPI */{
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  *
23
23
  * @alias sap.ui.fl.changeHandler.AddIFrame
24
24
  * @author SAP SE
25
- * @version 1.118.0
25
+ * @version 1.119.0
26
26
  * @since 1.72
27
27
  * @private
28
28
  */
@@ -16,7 +16,7 @@ sap.ui.define([
16
16
  *
17
17
  * @alias sap.ui.fl.changeHandler.AddXML
18
18
  * @author SAP SE
19
- * @version 1.118.0
19
+ * @version 1.119.0
20
20
  * @since 1.54
21
21
  * @private
22
22
  */
@@ -18,7 +18,7 @@ sap.ui.define([
18
18
  *
19
19
  * @alias sap.ui.fl.changeHandler.AddXMLAtExtensionPoint
20
20
  * @author SAP SE
21
- * @version 1.118.0
21
+ * @version 1.119.0
22
22
  * @since 1.75
23
23
  * @private
24
24
  */
@@ -14,7 +14,7 @@ sap.ui.define([
14
14
  /**
15
15
  * Base functionality for all change handlers, which provides some reuse methods
16
16
  * @namespace sap.ui.fl.changeHandler.Base
17
- * @version 1.118.0
17
+ * @version 1.119.0
18
18
  * @private
19
19
  * @ui5-restricted change handlers
20
20
  */
@@ -39,7 +39,7 @@ sap.ui.define([
39
39
  * @constructor
40
40
  * @alias sap.ui.fl.changeHandler.BaseAddViaDelegate
41
41
  * @author SAP SE
42
- * @version 1.118.0
42
+ * @version 1.119.0
43
43
  * @private
44
44
  */
45
45
  var BaseAddViaDelegate = {
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  *
23
23
  * @alias sap.ui.fl.changeHandler.BaseAddXml
24
24
  * @author SAP SE
25
- * @version 1.118.0
25
+ * @version 1.119.0
26
26
  * @since 1.75
27
27
  * @private
28
28
  */
@@ -5,10 +5,8 @@
5
5
  */
6
6
 
7
7
  sap.ui.define([
8
- "sap/base/Log",
9
8
  "sap/ui/fl/changeHandler/condenser/Classification"
10
9
  ], function(
11
- Log,
12
10
  CondenserClassification
13
11
  ) {
14
12
  "use strict";
@@ -19,18 +17,18 @@ sap.ui.define([
19
17
  * @constructor
20
18
  * @alias sap.ui.fl.changeHandler.BaseRename
21
19
  * @author SAP SE
22
- * @version 1.118.0
20
+ * @version 1.119.0
23
21
  * @since 1.46
24
22
  *
25
23
  */
26
- var BaseRename = {
24
+ const BaseRename = {
27
25
  /**
28
26
  * Returns an instance of the rename change handler
29
- * @param {object} mRenameSettings The settings required for the rename action
30
- * mRenameSettings.propertyName The property from the control to be renamed (e.g. "label")
31
- * mRenameSettings.changePropertyName Only use if you have to have migration changeHandler: Property name in change (for LRep; e.g. "fieldLabel")
32
- * mRenameSettings.translationTextType The translation text type in change (e.g. "XFLD")
33
- * @return {any} the rename change handler object
27
+ * @param {object} mRenameSettings - Settings required for the rename action
28
+ * @param {string} mRenameSettings.propertyName - Property from the control to be renamed (e.g. "label")
29
+ * @param {string} mRenameSettings.changePropertyName - Only use if you have migration changeHandler: Property name in change (for LRep; e.g. "fieldLabel")
30
+ * @param {string} mRenameSettings.translationTextType - Translation text type in change (e.g. "XFLD")
31
+ * @return {object} The rename change handler
34
32
  */
35
33
  createRenameChangeHandler(mRenameSettings) {
36
34
  mRenameSettings.changePropertyName ||= "newText";
@@ -39,44 +37,37 @@ sap.ui.define([
39
37
  /**
40
38
  * Renames a control.
41
39
  *
42
- * @param {sap.ui.fl.apply._internal.flexObjects.FlexObject} oChange change wrapper object with instructions to be applied on the control map
43
- * @param {sap.ui.core.Control} oControl Control that matches the change selector for applying the change
44
- * @param {object} mPropertyBag property bag
45
- * @param {object} mPropertyBag.modifier modifier for the controls
40
+ * @param {sap.ui.fl.apply._internal.flexObjects.FlexObject} oChange - Change wrapper object with instructions to be applied on the control map
41
+ * @param {sap.ui.core.Control} oControl - Control that matches the change selector for applying the change
42
+ * @param {object} mPropertyBag - Property bag
43
+ * @param {sap.ui.core.util.reflection.BaseTreeModifier} mPropertyBag.modifier - Modifier for the controls
46
44
  * @returns {Promise} Promise resolving when the change is applied
47
45
  * @public
48
46
  */
49
- applyChange(oChange, oControl, mPropertyBag) {
50
- var oModifier = mPropertyBag.modifier;
51
- var sPropertyName = mRenameSettings.propertyName;
52
- var sValue = oChange.getText(mRenameSettings.changePropertyName);
53
-
54
- return Promise.resolve()
55
- .then(function() {
56
- if (sValue) {
57
- return oModifier.getPropertyBindingOrProperty(oControl, sPropertyName)
58
- .then(function(vPropertyValue) {
59
- oChange.setRevertData(vPropertyValue);
60
- return oModifier.setPropertyBindingOrProperty(oControl, sPropertyName, sValue);
61
- });
62
- }
63
- return undefined;
64
- });
47
+ async applyChange(oChange, oControl, mPropertyBag) {
48
+ const oModifier = mPropertyBag.modifier;
49
+ const sPropertyName = mRenameSettings.propertyName;
50
+ const sValue = oChange.getText(mRenameSettings.changePropertyName);
51
+ if (sValue) {
52
+ const vPropertyValue = await oModifier.getPropertyBindingOrProperty(oControl, sPropertyName);
53
+ oChange.setRevertData(vPropertyValue);
54
+ await oModifier.setPropertyBindingOrProperty(oControl, sPropertyName, sValue);
55
+ }
65
56
  },
66
57
 
67
58
  /**
68
59
  * Reverts a Rename Change
69
60
  *
70
- * @param {sap.ui.fl.apply._internal.flexObjects.FlexObject} oChange change wrapper object with instructions to be applied on the control map
71
- * @param {sap.ui.core.Control} oControl Control that matches the change selector for applying the change
72
- * @param {object} mPropertyBag property bag
73
- * @param {object} mPropertyBag.modifier modifier for the controls
61
+ * @param {sap.ui.fl.apply._internal.flexObjects.FlexObject} oChange - Change wrapper object with instructions to be applied on the control map
62
+ * @param {sap.ui.core.Control} oControl - Control that matches the change selector for applying the change
63
+ * @param {object} mPropertyBag - Property bag
64
+ * @param {sap.ui.core.util.reflection.BaseTreeModifier} mPropertyBag.modifier - Modifier for the controls
74
65
  * @public
75
66
  */
76
67
  revertChange(oChange, oControl, mPropertyBag) {
77
- var oModifier = mPropertyBag.modifier;
78
- var sPropertyName = mRenameSettings.propertyName;
79
- var vOldValue = oChange.getRevertData();
68
+ const oModifier = mPropertyBag.modifier;
69
+ const sPropertyName = mRenameSettings.propertyName;
70
+ const vOldValue = oChange.getRevertData();
80
71
 
81
72
  if (vOldValue || vOldValue === "") {
82
73
  oModifier.setPropertyBindingOrProperty(oControl, sPropertyName, vOldValue);
@@ -84,7 +75,7 @@ sap.ui.define([
84
75
  return;
85
76
  }
86
77
 
87
- Log.error("Change doesn't contain sufficient information to be reverted. Most Likely the Change didn't go through applyChange.");
78
+ throw new Error("Change without sufficient information to be reverted. It probably didn't go through applyChange.");
88
79
  },
89
80
 
90
81
  /**
@@ -93,31 +84,26 @@ sap.ui.define([
93
84
  * @param {sap.ui.fl.apply._internal.flexObjects.FlexObject} oChange change wrapper object to be completed
94
85
  * @param {object} mSpecificChangeInfo with attribute (e.g. textLabel) to be included in the change
95
86
  * @param {object} mPropertyBag - Property bag
96
- * @param {object} mPropertyBag.modifier - Modifier for the controls
87
+ * @param {sap.ui.core.util.reflection.BaseTreeModifier} mPropertyBag.modifier - Modifier for the controls
97
88
  * @returns {Promise} A promise resolving when the change content is completed
98
89
  * @public
99
90
  */
100
- completeChangeContent(oChange, mSpecificChangeInfo, mPropertyBag) {
101
- var sChangePropertyName = mRenameSettings.changePropertyName;
102
- var sTranslationTextType = mRenameSettings.translationTextType;
103
-
104
- return Promise.resolve()
105
- .then(function() {
106
- return mPropertyBag.modifier.bySelector(oChange.getSelector(), mPropertyBag.appComponent);
107
- })
108
- .then(function(oControlToBeRenamed) {
109
- oChange.setContent({
110
- originalControlType: mPropertyBag.modifier.getControlType(oControlToBeRenamed)
111
- });
91
+ async completeChangeContent(oChange, mSpecificChangeInfo, mPropertyBag) {
92
+ const sChangePropertyName = mRenameSettings.changePropertyName;
93
+ const sTranslationTextType = mRenameSettings.translationTextType;
112
94
 
113
- if (typeof (mSpecificChangeInfo.value) === "string") {
114
- oChange.setText(sChangePropertyName, mSpecificChangeInfo.value, sTranslationTextType);
115
- } else if (typeof (mSpecificChangeInfo.content.value) === "string") {
116
- oChange.setText(sChangePropertyName, mSpecificChangeInfo.content.value, sTranslationTextType);
117
- } else {
118
- return Promise.reject(new Error("oSpecificChangeInfo.value attribute required"));
119
- }
95
+ const oControlToBeRenamed = await mPropertyBag.modifier.bySelector(oChange.getSelector(), mPropertyBag.appComponent);
96
+ oChange.setContent({
97
+ originalControlType: mPropertyBag.modifier.getControlType(oControlToBeRenamed)
120
98
  });
99
+
100
+ if (typeof (mSpecificChangeInfo.value) === "string") {
101
+ oChange.setText(sChangePropertyName, mSpecificChangeInfo.value, sTranslationTextType);
102
+ } else if (typeof (mSpecificChangeInfo.content.value) === "string") {
103
+ oChange.setText(sChangePropertyName, mSpecificChangeInfo.content.value, sTranslationTextType);
104
+ } else {
105
+ throw new Error("oSpecificChangeInfo.value attribute required");
106
+ }
121
107
  },
122
108
 
123
109
  /**
@@ -139,11 +125,11 @@ sap.ui.define([
139
125
  * Retrieves the information required for the change visualization.
140
126
  *
141
127
  * @param {sap.ui.fl.apply._internal.flexObjects.FlexObject} oChange - Object with change data
142
- * @returns {object} Object with a description payload containing the information required for the change visualization
128
+ * @returns {object} - Object with a description payload containing the information required for the change visualization
143
129
  * @public
144
130
  */
145
131
  getChangeVisualizationInfo(oChange) {
146
- var oNewLabel = (
132
+ const oNewLabel = (
147
133
  oChange.getTexts()
148
134
  && oChange.getTexts()[mRenameSettings.changePropertyName]
149
135
  );