@openui5/sap.ui.fl 1.96.2 → 1.98.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 (234) hide show
  1. package/.reuse/dep5 +26 -31
  2. package/THIRDPARTY.txt +15 -21
  3. package/package.json +3 -3
  4. package/src/sap/ui/fl/.library +2 -2
  5. package/src/sap/ui/fl/Cache.js +2 -2
  6. package/src/sap/ui/fl/Change.js +5 -219
  7. package/src/sap/ui/fl/ChangePersistence.js +28 -28
  8. package/src/sap/ui/fl/ChangePersistenceFactory.js +5 -3
  9. package/src/sap/ui/fl/EventHistory.js +2 -2
  10. package/src/sap/ui/fl/FakeLrepConnector.js +1 -1
  11. package/src/sap/ui/fl/FakeLrepConnectorLocalStorage.js +2 -2
  12. package/src/sap/ui/fl/FakeLrepConnectorSessionStorage.js +2 -2
  13. package/src/sap/ui/fl/FakeLrepLocalStorage.js +2 -2
  14. package/src/sap/ui/fl/FlexController.js +37 -19
  15. package/src/sap/ui/fl/FlexControllerFactory.js +14 -8
  16. package/src/sap/ui/fl/Layer.js +1 -1
  17. package/src/sap/ui/fl/LayerUtils.js +2 -2
  18. package/src/sap/ui/fl/PreprocessorImpl.js +7 -5
  19. package/src/sap/ui/fl/RegistrationDelegator.js +2 -2
  20. package/src/sap/ui/fl/Utils.js +35 -309
  21. package/src/sap/ui/fl/Variant.js +2 -116
  22. package/src/sap/ui/fl/XmlPreprocessorImpl.js +15 -14
  23. package/src/sap/ui/fl/apply/_internal/ChangesController.js +1 -1
  24. package/src/sap/ui/fl/apply/_internal/DelegateMediator.js +3 -3
  25. package/src/sap/ui/fl/apply/_internal/appVariant/DescriptorChangeTypes.js +1 -1
  26. package/src/sap/ui/fl/apply/_internal/changes/Applier.js +1 -1
  27. package/src/sap/ui/fl/apply/_internal/changes/FlexCustomData.js +2 -2
  28. package/src/sap/ui/fl/apply/_internal/changes/Reverter.js +1 -1
  29. package/src/sap/ui/fl/apply/_internal/changes/Utils.js +2 -2
  30. package/src/sap/ui/fl/apply/_internal/changes/descriptor/Applier.js +2 -2
  31. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ApplyStrategyFactory.js +1 -1
  32. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ApplyUtil.js +1 -1
  33. package/src/sap/ui/fl/apply/_internal/changes/descriptor/Preprocessor.js +2 -2
  34. package/src/sap/ui/fl/apply/_internal/changes/descriptor/Registration.js +4 -3
  35. package/src/sap/ui/fl/apply/_internal/changes/descriptor/RegistrationBuild.js +2 -2
  36. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddAnnotationsToOData.js +2 -2
  37. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeDataSource.js +2 -2
  38. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeInbound.js +2 -2
  39. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/SetTitle.js +2 -2
  40. package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetAbstract.js +2 -2
  41. package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetRegistrationIds.js +2 -2
  42. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/AddNewCard.js +2 -2
  43. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/ChangeCard.js +2 -2
  44. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/DeleteCard.js +2 -2
  45. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddComponentUsages.js +2 -2
  46. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddLibrary.js +2 -2
  47. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddNewModel.js +2 -2
  48. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddNewModelEnhanceWith.js +2 -2
  49. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/SetFlexExtensionPointEnabled.js +2 -2
  50. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/SetMinUI5Version.js +2 -2
  51. package/src/sap/ui/fl/apply/_internal/connectors/ObjectStorageConnector.js +1 -1
  52. package/src/sap/ui/fl/apply/_internal/connectors/ObjectStorageUtils.js +2 -2
  53. package/src/sap/ui/fl/apply/_internal/controlVariants/URLHandler.js +267 -265
  54. package/src/sap/ui/fl/apply/_internal/controlVariants/Utils.js +40 -10
  55. package/src/sap/ui/fl/apply/_internal/extensionPoint/Processor.js +2 -2
  56. package/src/sap/ui/fl/apply/_internal/flexObjects/CompVariant.js +16 -11
  57. package/src/sap/ui/fl/apply/_internal/flexObjects/CompVariantRevertData.js +2 -2
  58. package/src/sap/ui/fl/apply/_internal/flexObjects/RevertData.js +2 -2
  59. package/src/sap/ui/fl/apply/_internal/flexObjects/States.js +1 -1
  60. package/src/sap/ui/fl/apply/_internal/flexObjects/UpdatableChange.js +1 -1
  61. package/src/sap/ui/fl/apply/_internal/flexState/FlexState.js +5 -5
  62. package/src/sap/ui/fl/apply/_internal/flexState/Loader.js +16 -17
  63. package/src/sap/ui/fl/apply/_internal/flexState/ManifestUtils.js +22 -23
  64. package/src/sap/ui/fl/apply/_internal/flexState/UI2Personalization/UI2PersonalizationState.js +2 -2
  65. package/src/sap/ui/fl/apply/_internal/flexState/appDescriptorChanges/prepareAppDescriptorMap.js +2 -2
  66. package/src/sap/ui/fl/apply/_internal/flexState/changes/DependencyHandler.js +2 -2
  67. package/src/sap/ui/fl/apply/_internal/flexState/changes/ExtensionPointState.js +2 -2
  68. package/src/sap/ui/fl/apply/_internal/flexState/changes/prepareChangesMap.js +1 -1
  69. package/src/sap/ui/fl/apply/_internal/flexState/compVariants/CompVariantMerger.js +3 -3
  70. package/src/sap/ui/fl/apply/_internal/flexState/compVariants/Utils.js +1 -1
  71. package/src/sap/ui/fl/apply/_internal/flexState/compVariants/prepareCompVariantsMap.js +3 -3
  72. package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/Switcher.js +3 -5
  73. package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/VariantManagementState.js +23 -25
  74. package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/prepareVariantsMap.js +8 -2
  75. package/src/sap/ui/fl/apply/api/ControlVariantApplyAPI.js +87 -7
  76. package/src/sap/ui/fl/apply/api/DelegateMediatorAPI.js +2 -2
  77. package/src/sap/ui/fl/apply/api/FlexRuntimeInfoAPI.js +72 -10
  78. package/src/sap/ui/fl/apply/api/SmartVariantManagementApplyAPI.js +13 -2
  79. package/src/sap/ui/fl/apply/api/UI2PersonalizationApplyAPI.js +1 -1
  80. package/src/sap/ui/fl/changeHandler/AddIFrame.js +2 -2
  81. package/src/sap/ui/fl/changeHandler/AddXML.js +2 -2
  82. package/src/sap/ui/fl/changeHandler/AddXMLAtExtensionPoint.js +2 -2
  83. package/src/sap/ui/fl/changeHandler/Base.js +2 -2
  84. package/src/sap/ui/fl/changeHandler/BaseAddViaDelegate.js +2 -2
  85. package/src/sap/ui/fl/changeHandler/BaseAddXml.js +2 -2
  86. package/src/sap/ui/fl/changeHandler/BaseRename.js +2 -2
  87. package/src/sap/ui/fl/changeHandler/BaseTreeModifier.js +1 -1
  88. package/src/sap/ui/fl/changeHandler/HideControl.js +2 -2
  89. package/src/sap/ui/fl/changeHandler/JsControlTreeModifier.js +1 -1
  90. package/src/sap/ui/fl/changeHandler/MoveControls.js +2 -2
  91. package/src/sap/ui/fl/changeHandler/MoveElements.js +2 -2
  92. package/src/sap/ui/fl/changeHandler/PropertyBindingChange.js +2 -2
  93. package/src/sap/ui/fl/changeHandler/PropertyChange.js +2 -2
  94. package/src/sap/ui/fl/changeHandler/StashControl.js +2 -2
  95. package/src/sap/ui/fl/changeHandler/UnhideControl.js +2 -2
  96. package/src/sap/ui/fl/changeHandler/UnstashControl.js +2 -2
  97. package/src/sap/ui/fl/changeHandler/UpdateIFrame.js +2 -2
  98. package/src/sap/ui/fl/changeHandler/XmlTreeModifier.js +1 -1
  99. package/src/sap/ui/fl/changeHandler/common/createIFrame.js +1 -1
  100. package/src/sap/ui/fl/changeHandler/common/getTargetAggregationIndex.js +1 -1
  101. package/src/sap/ui/fl/changeHandler/common/revertAddedControls.js +1 -1
  102. package/src/sap/ui/fl/codeExt/CodeExtManager.js +17 -11
  103. package/src/sap/ui/fl/descriptorRelated/api/DescriptorChangeFactory.js +5 -5
  104. package/src/sap/ui/fl/descriptorRelated/api/DescriptorInlineChangeFactory.js +2 -2
  105. package/src/sap/ui/fl/descriptorRelated/api/DescriptorVariantFactory.js +2 -2
  106. package/src/sap/ui/fl/descriptorRelated/internal/Utils.js +1 -1
  107. package/src/sap/ui/fl/designtime/library.designtime.js +1 -1
  108. package/src/sap/ui/fl/designtime/util/IFrame.designtime.js +1 -1
  109. package/src/sap/ui/fl/designtime/variants/VariantManagement.designtime.js +10 -3
  110. package/src/sap/ui/fl/initial/_internal/Storage.js +2 -2
  111. package/src/sap/ui/fl/initial/_internal/StorageResultMerger.js +2 -2
  112. package/src/sap/ui/fl/initial/_internal/StorageUtils.js +2 -2
  113. package/src/sap/ui/fl/initial/_internal/changeHandlers/ChangeHandlerRegistration.js +1 -1
  114. package/src/sap/ui/fl/initial/_internal/changeHandlers/ChangeHandlerStorage.js +1 -1
  115. package/src/sap/ui/fl/initial/_internal/changeHandlers/ChangeRegistryItem.js +2 -2
  116. package/src/sap/ui/fl/initial/_internal/connectors/BackendConnector.js +2 -2
  117. package/src/sap/ui/fl/initial/_internal/connectors/KeyUserConnector.js +1 -1
  118. package/src/sap/ui/fl/initial/_internal/connectors/LrepConnector.js +17 -7
  119. package/src/sap/ui/fl/initial/_internal/connectors/NeoLrepConnector.js +1 -1
  120. package/src/sap/ui/fl/initial/_internal/connectors/PersonalizationConnector.js +1 -1
  121. package/src/sap/ui/fl/initial/_internal/connectors/StaticFileConnector.js +1 -1
  122. package/src/sap/ui/fl/initial/_internal/connectors/Utils.js +5 -6
  123. package/src/sap/ui/fl/initial/_internal/storageResultDisassemble.js +2 -2
  124. package/src/sap/ui/fl/interfaces/BaseLoadConnector.js +2 -2
  125. package/src/sap/ui/fl/interfaces/Delegate.js +2 -2
  126. package/src/sap/ui/fl/library.js +12 -12
  127. package/src/sap/ui/fl/library.support.js +1 -1
  128. package/src/sap/ui/fl/messagebundle_en_US_sappsd.properties +19 -2
  129. package/src/sap/ui/fl/messagebundle_en_US_saprigi.properties +2 -35
  130. package/src/sap/ui/fl/messagebundle_en_US_saptrc.properties +19 -2
  131. package/src/sap/ui/fl/messagebundle_ro.properties +1 -1
  132. package/src/sap/ui/fl/registry/Settings.js +26 -17
  133. package/src/sap/ui/fl/requireAsync.js +1 -1
  134. package/src/sap/ui/fl/support/Flexibility.js +84 -73
  135. package/src/sap/ui/fl/support/_internal/getChangeDependencies.js +59 -0
  136. package/src/sap/ui/fl/support/api/SupportAPI.js +28 -0
  137. package/src/sap/ui/fl/support/apps/contentbrowser/Component.js +1 -1
  138. package/src/sap/ui/fl/support/apps/contentbrowser/controller/ContentDetails.controller.js +14 -14
  139. package/src/sap/ui/fl/support/apps/contentbrowser/controller/ContentDetailsEdit.controller.js +9 -9
  140. package/src/sap/ui/fl/support/apps/contentbrowser/controller/LayerContentMaster.controller.js +10 -10
  141. package/src/sap/ui/fl/support/apps/contentbrowser/controller/Layers.controller.js +4 -4
  142. package/src/sap/ui/fl/support/apps/contentbrowser/lrepConnector/LRepConnector.js +52 -53
  143. package/src/sap/ui/fl/support/apps/contentbrowser/utils/DataUtils.js +130 -126
  144. package/src/sap/ui/fl/support/apps/contentbrowser/utils/ErrorUtils.js +2 -2
  145. package/src/sap/ui/fl/support/apps/uiFlexibilityDiagnostics/Component.js +1 -1
  146. package/src/sap/ui/fl/support/apps/uiFlexibilityDiagnostics/controller/Root.controller.js +1 -3
  147. package/src/sap/ui/fl/support/apps/uiFlexibilityDiagnostics/helper/Extractor.js +4 -15
  148. package/src/sap/ui/fl/support/diagnostics/Flexibility.controller.js +2 -2
  149. package/src/sap/ui/fl/themes/base/library.source.less +1 -1
  150. package/src/sap/ui/fl/themes/sap_hcb/library.source.less +1 -1
  151. package/src/sap/ui/fl/transport/TransportDialog.js +1 -1
  152. package/src/sap/ui/fl/transport/TransportSelection.js +2 -2
  153. package/src/sap/ui/fl/util/DescriptorChangeCheck.js +3 -5
  154. package/src/sap/ui/fl/util/IFrame.flexibility.js +1 -1
  155. package/src/sap/ui/fl/util/IFrame.js +2 -2
  156. package/src/sap/ui/fl/util/IFrameRenderer.js +1 -1
  157. package/src/sap/ui/fl/util/ManagedObjectModel.js +2 -2
  158. package/src/sap/ui/fl/util/changePropertyValueByPath.js +1 -1
  159. package/src/sap/ui/fl/util/getContainerUserInfo.js +1 -1
  160. package/src/sap/ui/fl/util/resolveBinding.js +2 -2
  161. package/src/sap/ui/fl/variants/VariantManagement.js +3 -2
  162. package/src/sap/ui/fl/variants/VariantModel.js +6 -46
  163. package/src/sap/ui/fl/variants/context/Component.js +1 -1
  164. package/src/sap/ui/fl/variants/context/controller/ContextVisibility.controller.js +13 -3
  165. package/src/sap/ui/fl/write/_internal/SaveAs.js +1 -1
  166. package/src/sap/ui/fl/write/_internal/Storage.js +34 -2
  167. package/src/sap/ui/fl/write/_internal/StorageFeaturesMerger.js +2 -2
  168. package/src/sap/ui/fl/write/_internal/Versions.js +18 -19
  169. package/src/sap/ui/fl/write/_internal/appVariant/AppVariant.js +2 -2
  170. package/src/sap/ui/fl/write/_internal/appVariant/AppVariantFactory.js +2 -2
  171. package/src/sap/ui/fl/write/_internal/appVariant/AppVariantInlineChange.js +2 -2
  172. package/src/sap/ui/fl/write/_internal/appVariant/AppVariantInlineChangeFactory.js +25 -2
  173. package/src/sap/ui/fl/write/_internal/condenser/Condenser.js +4 -3
  174. package/src/sap/ui/fl/write/_internal/condenser/UIReconstruction.js +2 -2
  175. package/src/sap/ui/fl/write/_internal/condenser/Utils.js +1 -1
  176. package/src/sap/ui/fl/write/_internal/condenser/classifications/Create.js +1 -1
  177. package/src/sap/ui/fl/write/_internal/condenser/classifications/Destroy.js +1 -1
  178. package/src/sap/ui/fl/write/_internal/condenser/classifications/LastOneWins.js +1 -1
  179. package/src/sap/ui/fl/write/_internal/condenser/classifications/Move.js +1 -1
  180. package/src/sap/ui/fl/write/_internal/condenser/classifications/Reverse.js +1 -1
  181. package/src/sap/ui/fl/write/_internal/connectors/BackendConnector.js +5 -5
  182. package/src/sap/ui/fl/write/_internal/connectors/JsObjectConnector.js +1 -1
  183. package/src/sap/ui/fl/write/_internal/connectors/KeyUserConnector.js +50 -26
  184. package/src/sap/ui/fl/write/_internal/connectors/LocalStorageConnector.js +1 -1
  185. package/src/sap/ui/fl/write/_internal/connectors/LrepConnector.js +60 -3
  186. package/src/sap/ui/fl/write/_internal/connectors/NeoLrepConnector.js +2 -2
  187. package/src/sap/ui/fl/write/_internal/connectors/ObjectPathConnector.js +2 -2
  188. package/src/sap/ui/fl/write/_internal/connectors/ObjectStorageConnector.js +1 -1
  189. package/src/sap/ui/fl/write/_internal/connectors/PersonalizationConnector.js +2 -2
  190. package/src/sap/ui/fl/write/_internal/connectors/SessionStorageConnector.js +1 -1
  191. package/src/sap/ui/fl/write/_internal/connectors/Utils.js +2 -2
  192. package/src/sap/ui/fl/write/_internal/delegates/ODataV4ReadDelegate.js +1 -1
  193. package/src/sap/ui/fl/write/_internal/extensionPoint/Processor.js +2 -2
  194. package/src/sap/ui/fl/write/_internal/extensionPoint/Registry.js +2 -2
  195. package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPAccess.js +5 -5
  196. package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPExtensibilityVariant.js +2 -2
  197. package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPExtensibilityVariantFactory.js +2 -2
  198. package/src/sap/ui/fl/write/_internal/fieldExtensibility/MultiTenantABAPExtensibilityVariant.js +2 -2
  199. package/src/sap/ui/fl/write/_internal/fieldExtensibility/ServiceValidation.js +2 -2
  200. package/src/sap/ui/fl/write/_internal/fieldExtensibility/SingleTenantABAPExtensibilityVariant.js +2 -2
  201. package/src/sap/ui/fl/write/_internal/fieldExtensibility/UriParser.js +2 -2
  202. package/src/sap/ui/fl/write/_internal/fieldExtensibility/Utils.js +2 -2
  203. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/CAPAccess.js +2 -2
  204. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/dialog/CustomFieldCAPDialog.js +3 -3
  205. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/getEditorConfig.js +1 -1
  206. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/booleanEditor/BooleanEditor.js +2 -2
  207. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/rangeEditor/RangeEditor.js +2 -2
  208. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/timeEditor/TimeEditor.js +2 -2
  209. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/validators/IsRequired.js +1 -1
  210. package/src/sap/ui/fl/write/_internal/flexState/FlexObjectState.js +22 -7
  211. package/src/sap/ui/fl/write/_internal/flexState/compVariants/CompVariantState.js +6 -5
  212. package/src/sap/ui/fl/write/_internal/transport/TransportDialog.js +6 -8
  213. package/src/sap/ui/fl/write/_internal/transport/TransportSelection.js +7 -6
  214. package/src/sap/ui/fl/write/_internal/transport/Transports.js +2 -3
  215. package/src/sap/ui/fl/write/api/AppVariantWriteAPI.js +1 -1
  216. package/src/sap/ui/fl/write/api/ChangesWriteAPI.js +1 -1
  217. package/src/sap/ui/fl/write/api/ContextSharingAPI.js +1 -1
  218. package/src/sap/ui/fl/write/api/ControlPersonalizationWriteAPI.js +125 -14
  219. package/src/sap/ui/fl/write/api/ExtensionPointRegistryAPI.js +1 -1
  220. package/src/sap/ui/fl/write/api/FeaturesAPI.js +6 -2
  221. package/src/sap/ui/fl/write/api/FieldExtensibility.js +8 -4
  222. package/src/sap/ui/fl/write/api/LocalResetAPI.js +1 -1
  223. package/src/sap/ui/fl/write/api/PersistenceWriteAPI.js +43 -4
  224. package/src/sap/ui/fl/write/api/ReloadInfoAPI.js +5 -5
  225. package/src/sap/ui/fl/write/api/SmartBusinessWriteAPI.js +1 -1
  226. package/src/sap/ui/fl/write/api/SmartVariantManagementWriteAPI.js +3 -1
  227. package/src/sap/ui/fl/write/api/TranslationAPI.js +102 -0
  228. package/src/sap/ui/fl/write/api/UI2PersonalizationWriteAPI.js +1 -1
  229. package/src/sap/ui/fl/write/api/VersionsAPI.js +2 -2
  230. package/src/sap/ui/fl/write/api/connectors/FileListBaseConnector.js +1 -1
  231. package/src/sap/ui/fl/write/api/connectors/ObjectStorageConnector.js +3 -2
  232. package/src/sap/ui/fl/write/connectors/BaseConnector.js +31 -1
  233. package/ui5.yaml +132 -1
  234. package/src/sap/ui/fl/ControlPersonalizationAPI.js +0 -479
@@ -1,479 +0,0 @@
1
- /*
2
- * ! OpenUI5
3
- * (c) Copyright 2009-2021 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
- "sap/ui/fl/Layer",
9
- "sap/ui/fl/Utils",
10
- "sap/ui/fl/initial/_internal/changeHandlers/ChangeHandlerStorage",
11
- "sap/ui/fl/FlexControllerFactory",
12
- "sap/ui/core/util/reflection/JsControlTreeModifier",
13
- "sap/ui/core/Element",
14
- "sap/ui/base/ManagedObject",
15
- "sap/base/util/includes",
16
- "sap/ui/fl/variants/VariantManagement",
17
- "sap/ui/fl/apply/_internal/controlVariants/URLHandler",
18
- "sap/ui/core/Component",
19
- "sap/base/Log",
20
- "sap/ui/thirdparty/jquery"
21
- ], function(
22
- Layer,
23
- Utils,
24
- ChangeHandlerStorage,
25
- FlexControllerFactory,
26
- JsControlTreeModifier,
27
- Element,
28
- ManagedObject,
29
- includes,
30
- VariantManagement,
31
- URLHandler,
32
- Component,
33
- Log,
34
- jQuery
35
- ) {
36
- "use strict";
37
-
38
- /**
39
- * Provides an API to handle specific functionality for personalized changes.
40
- *
41
- * @namespace
42
- * @name sap.ui.fl.ControlPersonalizationAPI
43
- * @author SAP SE
44
- * @experimental Since 1.56
45
- * @since 1.56
46
- * @version 1.96.2
47
- * @private
48
- * @ui5-restricted
49
- */
50
-
51
- /**
52
- * Object containing attributes of a change, along with the control to which this change should be applied.
53
- *
54
- * @typedef {object} sap.ui.fl.ControlPersonalizationAPI.PersonalizationChange
55
- * @since 1.56
56
- * @private
57
- * @ui5-restricted
58
- * @property {sap.ui.core.Element} selectorControl The control object to be used as selector for the change
59
- * @property {object} changeSpecificData The map of change-specific data to perform a flex change
60
- * @property {string} changeSpecificData.changeType The change type for which a change handler is registered
61
- */
62
-
63
- var ControlPersonalizationAPI = {
64
-
65
- /**
66
- * Returns a map of parameters used in public functions.
67
- *
68
- * @param {sap.ui.core.Element} oControl - The control for which a variant management control has to be evaluated
69
- * @param {boolean} [bIgnoreVariantManagement=false] - If flag is set to true then variant management will be ignored
70
- * @param {boolean} [bUseStaticArea=false] - If flag is set to true then the static area is used to determine the variant management control
71
- * @returns {object} Returns a map with needed parameters
72
- * @private
73
- */
74
- _determineParameters: function(oControl, bIgnoreVariantManagement, bUseStaticArea) {
75
- var oAppComponent = Utils.getAppComponentForControl(oControl);
76
- var oFlexController = FlexControllerFactory.createForControl(oAppComponent);
77
- var oRootControl = oAppComponent.getRootControl();
78
-
79
- var mParams = {
80
- rootControl: oRootControl,
81
- flexController: oFlexController
82
- };
83
-
84
- if (!bIgnoreVariantManagement) {
85
- var aVMControls;
86
- var oVMControl;
87
- var aForControlTypes;
88
- mParams.variantModel = oAppComponent.getModel(Utils.VARIANT_MODEL_NAME);
89
- mParams.variantManagement = {};
90
- if (!bUseStaticArea) {
91
- aVMControls = jQuery.makeArray(mParams.rootControl.$().find(".sapUiFlVarMngmt"));
92
- }
93
- if (bUseStaticArea || aVMControls.length === 0) {
94
- aVMControls = jQuery.makeArray(jQuery(sap.ui.getCore().getStaticAreaRef()).find(".sapUiFlVarMngmt"));
95
- }
96
- aVMControls.map(function (oVariantManagementNode) {
97
- oVMControl = sap.ui.getCore().byId(oVariantManagementNode.id);
98
- if (oVMControl.getMetadata().getName() === "sap.ui.fl.variants.VariantManagement") {
99
- aForControlTypes = oVMControl.getFor();
100
- aForControlTypes.forEach(function (sControlType) {
101
- mParams.variantManagement[sControlType] = mParams.variantModel.getLocalId(oVariantManagementNode.id, oAppComponent);
102
- });
103
- }
104
- });
105
- }
106
-
107
- return mParams;
108
- },
109
-
110
- /**
111
- * Returns the local ID of the encompassing variant management control.
112
- *
113
- * @param {sap.ui.core.Element} oControl - The control for which a variant management control has to be evaluated
114
- * @returns {object} Returns a map with needed parameters
115
- * @private
116
- */
117
- _getVariantManagement: function(oControl, mParams) {
118
- mParams = mParams || this._determineParameters(oControl);
119
- var fnCheckForControl = function (oControl) {
120
- if (!mParams.variantManagement[oControl.getId()] && oControl.getParent() && oControl.getId() !== mParams.rootControl.getId()) {
121
- return fnCheckForControl(oControl.getParent());
122
- } else if (!oControl.getParent() || oControl.getId() === mParams.rootControl.getId()) {
123
- return mParams.variantManagement[oControl.getId()] || "";
124
- }
125
- return mParams.variantManagement[oControl.getId()];
126
- };
127
-
128
- return fnCheckForControl(oControl);
129
- },
130
-
131
- /**
132
- *
133
- * Clears URL technical parameter 'sap-ui-fl-control-variant-id' for control variants.
134
- * If a variant management control is given as parameter, only parameters specific to that control are cleared.
135
- *
136
- * @param {sap.ui.base.ManagedObject} [oVariantManagementControl] - The variant management control for which the URL technical parameter has to be cleared
137
- *
138
- * @method sap.ui.fl.ControlPersonalizationAPI.clearVariantParameterInURL
139
- * @public
140
- */
141
- clearVariantParameterInURL: function (oControl) {
142
- var aUpdatedVariantParameters;
143
- var oAppComponent = Utils.getAppComponentForControl(oControl);
144
- var oVariantModel = oAppComponent instanceof Component ? oAppComponent.getModel(Utils.VARIANT_MODEL_NAME) : undefined;
145
- if (!oVariantModel) {
146
- //technical parameters are not updated, only URL hash is updated
147
- Log.warning("Variant model could not be found on the provided control");
148
- //TODO: Confirm if there is a reason for this code to continue if no model is available
149
- return;
150
- }
151
-
152
- //check if variant for the passed variant management control is present
153
- if (oControl instanceof VariantManagement) {
154
- var sVariantManagementReference = oVariantModel.getLocalId(oControl.getId(), oAppComponent);
155
- var mCleansedParametersWithIndex = URLHandler.removeURLParameterForVariantManagement({
156
- model: oVariantModel,
157
- vmReference: sVariantManagementReference
158
- });
159
- aUpdatedVariantParameters = mCleansedParametersWithIndex.parameters;
160
- }
161
-
162
- //both technical parameters and URL hash updated
163
- URLHandler.update({
164
- parameters: aUpdatedVariantParameters || [],
165
- updateURL: true,
166
- updateHashEntry: !!oVariantModel,
167
- model: oVariantModel || {},
168
- silent: !oVariantModel
169
- });
170
- },
171
-
172
- /**
173
- *
174
- * Activates the passed variant applicable to the passed control/component.
175
- *
176
- * @param {sap.ui.base.ManagedObject|string} vElement - The component or control (instance or ID) on which the variantModel is set
177
- * @param {string} sVariantReference - The variant reference which needs to be activated
178
- *
179
- * @returns {Promise} Returns Promise that resolves after the variant is updated or rejects when an error occurs
180
- *
181
- * @method sap.ui.fl.ControlPersonalizationAPI.activateVariant
182
- * @public
183
- */
184
- activateVariant: function(vElement, sVariantReference) {
185
- return Promise.resolve()
186
- .then(function () {
187
- var oElement;
188
- if (typeof vElement === 'string' || vElement instanceof String) {
189
- oElement = Component.get(vElement);
190
-
191
- if (!(oElement instanceof Component)) {
192
- oElement = sap.ui.getCore().byId(vElement);
193
-
194
- if (!(oElement instanceof Element)) {
195
- throw new Error("No valid component or control found for the provided ID");
196
- }
197
- }
198
- } else if (vElement instanceof Component || vElement instanceof Element) {
199
- oElement = vElement;
200
- }
201
-
202
- var oAppComponent = Utils.getAppComponentForControl(oElement);
203
- if (!oAppComponent) {
204
- throw new Error("A valid variant management control or component (instance or ID) should be passed as parameter");
205
- }
206
-
207
- var oVariantModel = oAppComponent.getModel(Utils.VARIANT_MODEL_NAME);
208
- if (!oVariantModel) {
209
- throw new Error("No variant management model found for the passed control or application component");
210
- }
211
- var sVariantManagementReference = oVariantModel.getVariantManagementReference(sVariantReference).variantManagementReference;
212
- if (!sVariantManagementReference) {
213
- throw new Error("A valid control or component, and a valid variant/ID combination are required");
214
- }
215
-
216
- // sap/fe is using this API very early during app start, sometimes before FlexState is initialized
217
- return oVariantModel.waitForVMControlInit(sVariantManagementReference).then(function() {
218
- return oVariantModel.updateCurrentVariant({
219
- variantManagementReference: sVariantManagementReference,
220
- newVariantReference: sVariantReference,
221
- appComponent: oAppComponent
222
- });
223
- });
224
- })
225
- ["catch"](function(oError) {
226
- Log.error(oError);
227
- return Promise.reject(oError);
228
- });
229
- },
230
-
231
- _checkChangeSpecificData: function(oChange, sLayer) {
232
- if (!oChange.changeSpecificData) {
233
- return Promise.reject(new Error("No changeSpecificData available"));
234
- }
235
- if (!oChange.changeSpecificData.changeType) {
236
- return Promise.reject(new Error("No valid changeType"));
237
- }
238
-
239
- if (!(oChange.selectorControl instanceof Element)) {
240
- return Promise.reject(new Error("No valid selectorControl"));
241
- }
242
-
243
- var sControlType = oChange.selectorControl.getMetadata().getName();
244
- return ChangeHandlerStorage.getChangeHandler(
245
- oChange.changeSpecificData.changeType,
246
- sControlType,
247
- oChange.selectorControl,
248
- JsControlTreeModifier,
249
- sLayer
250
- );
251
- },
252
-
253
- /**
254
- * Creates personalization changes, adds them to the flex persistence (not yet saved) and applies them to the control.
255
- *
256
- * @param {object} mPropertyBag - Changes along with other settings that need to be added
257
- * @param {array} mPropertyBag.controlChanges - Array of control changes of type {@link sap.ui.fl.ControlPersonalizationAPI.PersonalizationChange}
258
- * @param {boolean} [mPropertyBag.ignoreVariantManagement=false] - If flag is set to true then variant management will be ignored
259
- * @param {boolean} [mPropertyBag.useStaticArea=false] - If flag is set to true then the static area is used to determine the variant management control
260
- *
261
- * @returns {Promise} Returns Promise resolving to an array of successfully applied changes,
262
- * after the changes have been written to the map of dirty changes and applied to the control
263
- *
264
- * @method sap.ui.fl.ControlPersonalizationAPI.addPersonalizationChanges
265
- * @public
266
- */
267
- addPersonalizationChanges: function(mPropertyBag) {
268
- var aAddedChanges = [];
269
- var aSuccessfulChanges = [];
270
- var sLayer = Layer.USER;
271
- var aPromises = [];
272
-
273
- function fnCheckAndCreateChange(oChange, mChangeSpecificData) {
274
- return ControlPersonalizationAPI._checkChangeSpecificData(oChange, sLayer).then(function() {
275
- mPropertyBag.params = ControlPersonalizationAPI._determineParameters(oChange.selectorControl, mPropertyBag.ignoreVariantManagement, mPropertyBag.useStaticArea);
276
- if (!mPropertyBag.ignoreVariantManagement) {
277
- // check for preset variantReference
278
- if (!oChange.changeSpecificData.variantReference) {
279
- var sVariantManagementReference = ControlPersonalizationAPI._getVariantManagement(oChange.selectorControl, mPropertyBag.params);
280
- if (sVariantManagementReference) {
281
- var sCurrentVariantReference = mPropertyBag.params.variantModel.oData[sVariantManagementReference].currentVariant;
282
- oChange.changeSpecificData.variantReference = sCurrentVariantReference;
283
- }
284
- }
285
- } else {
286
- // delete preset variantReference
287
- delete oChange.changeSpecificData.variantReference;
288
- }
289
- return mPropertyBag.params.flexController.addChange(
290
- Object.assign(mChangeSpecificData, oChange.changeSpecificData),
291
- oChange.selectorControl);
292
- })
293
- .then(function (oAddedChange) {
294
- oChange.changeInstance = oAddedChange;
295
- aAddedChanges.push(oChange);
296
- })
297
- .catch(function(oError) {
298
- return Promise.reject({
299
- change: oChange,
300
- message: oError.message
301
- });
302
- });
303
- }
304
- function fnApplyChange(oChange) {
305
- return mPropertyBag.params.flexController.applyChange(oChange.changeInstance, oChange.selectorControl).then(function() {
306
- aSuccessfulChanges.push(oChange.changeInstance);
307
- })
308
- .catch(function(oError) {
309
- return Promise.reject({
310
- change: oChange,
311
- message: oError.message
312
- });
313
- });
314
- }
315
-
316
- mPropertyBag.controlChanges.forEach(function(oChange) {
317
- var mChangeSpecificData = {};
318
- Object.assign(mChangeSpecificData, {
319
- developerMode: false,
320
- layer: sLayer
321
- });
322
-
323
- aPromises.push(fnCheckAndCreateChange.bind(undefined, oChange, mChangeSpecificData));
324
- });
325
-
326
- return Utils.execPromiseQueueSequentially(aPromises).then(function() {
327
- aPromises = [];
328
- aAddedChanges.forEach(function(oChange) {
329
- aPromises.push(fnApplyChange.bind(undefined, oChange));
330
- });
331
-
332
- return Utils.execPromiseQueueSequentially(aPromises);
333
- }).then(function() {
334
- return aSuccessfulChanges;
335
- });
336
- },
337
-
338
- /**
339
- * Checks if personalization changes exists for control.
340
- *
341
- * @param {sap.ui.core.Element[] | map[]} aControls - an array of instances of controls, a map with control IDs including a app component or a mixture for which personalization exists
342
- * @param {array} [aChangeTypes] - Types of changes that have existing personalization.
343
- * @param {sap.ui.core.Component} aControls.appComponent - Application component of the controls at runtime in case a map has been used
344
- * @param {string} aControls.id - ID of the control in case a map has been used to specify the control
345
- *
346
- * @returns {Promise} Promise resolving with true if personalization changes exists, otherwise false.
347
- *
348
- * @method sap.ui.fl.ControlPersonalizationAPI.isPersonalized
349
- * @public
350
- */
351
- isPersonalized: function(aControls, aChangeTypes) {
352
- if (!aControls || aControls.length === 0) {
353
- return this._reject("At least one control ID has to be provided as a parameter");
354
- }
355
-
356
- var oAppComponent = aControls[0].appComponent || Utils.getAppComponentForControl(aControls[0]);
357
-
358
- if (!oAppComponent) {
359
- return this._reject("App Component could not be determined");
360
- }
361
-
362
- var aIdsOfPassedControls = aControls.map(function (oControl) {
363
- return oControl.id || oControl.getId();
364
- });
365
-
366
- var oFlexController = FlexControllerFactory.createForControl(oAppComponent);
367
- return oFlexController.getComponentChanges({currentLayer: Layer.USER, includeCtrlVariants: true})
368
- .then(function (aChanges) {
369
- return aChanges
370
- .filter(this._filterBySelectors.bind(this, oAppComponent, aIdsOfPassedControls))
371
- .filter(this._filterByChangeType.bind(this, aChangeTypes))
372
- .some(this._ifValidFileType);
373
- }.bind(this));
374
- },
375
-
376
- _reject: function (sMessage) {
377
- Log.error(sMessage);
378
- return Promise.reject(sMessage);
379
- },
380
-
381
- _filterBySelectors: function (oAppComponent, aIdsOfPassedControls, oChange) {
382
- var oSelector = oChange.getSelector();
383
- var sControlId = JsControlTreeModifier.getControlIdBySelector(oSelector, oAppComponent);
384
- return includes(aIdsOfPassedControls, sControlId);
385
- },
386
-
387
- _filterByChangeType: function (aChangeTypes, oChange) {
388
- return (Array.isArray(aChangeTypes) && aChangeTypes.length > 0)
389
- ? includes(aChangeTypes, oChange.getChangeType())
390
- : true;
391
- },
392
-
393
- _ifValidFileType: function (oChange) {
394
- return oChange.getFileType() === "change";
395
- },
396
-
397
- /**
398
- * Deletes changes recorded for control. Changes to be deleted can be filtered by specification of change type(s).
399
- *
400
- * @param {sap.ui.core.Element[] | map[]} aControls - an array of instances of controls, a map with control IDs including a app component or a mixture for which the reset shall take place
401
- * @param {sap.ui.core.Component} aControls.appComponent - Application component of the controls at runtime in case a map has been used
402
- * @param {string} aControls.id - ID of the control in case a map has been used to specify the control
403
- * @param {String[]} [aChangeTypes] - Types of changes that shall be deleted
404
- *
405
- * @returns {Promise} Promise that resolves after the deletion took place and changes are reverted
406
- *
407
- * @method sap.ui.fl.ControlPersonalizationAPI.resetChanges
408
- * @public
409
- */
410
- resetChanges: function(aControls, aChangeTypes) {
411
- if (!aControls || aControls.length === 0) {
412
- return this._reject("At least one control ID has to be provided as a parameter");
413
- }
414
-
415
- var oAppComponent = aControls[0].appComponent || Utils.getAppComponentForControl(aControls[0]);
416
-
417
- if (!oAppComponent) {
418
- return this._reject("App Component could not be determined");
419
- }
420
-
421
- var aSelectorIds = aControls.map(function (vControl) {
422
- var sControlId = vControl.id || vControl.getId();
423
- var sLocalId = oAppComponent.getLocalId(sControlId);
424
- return sLocalId || sControlId;
425
- });
426
- var oFlexController = FlexControllerFactory.createForControl(oAppComponent);
427
- return oFlexController.resetChanges(Layer.USER, undefined, oAppComponent, aSelectorIds, aChangeTypes);
428
- },
429
-
430
- /**
431
- * Saves unsaved changes added to {@link sap.ui.fl.ChangePersistence}.
432
- *
433
- * @param {array} aChanges - Array of changes to be saved
434
- * @param {sap.ui.base.ManagedObject} oManagedObject - A managed object instance which has an application component responsible, on which changes need to be saved
435
- *
436
- * @returns {Promise} Returns Promise which is resolved when the passed array of changes have been saved
437
- *
438
- * @method sap.ui.fl.ControlPersonalizationAPI.saveChanges
439
- * @public
440
- */
441
- saveChanges: function(aChanges, oManagedObject) {
442
- if (!(oManagedObject instanceof ManagedObject)) {
443
- var sErrorMessage = "A valid sap.ui.base.ManagedObject instance is required as a parameter";
444
- Log.error(sErrorMessage);
445
- return Promise.reject(sErrorMessage);
446
- }
447
- var mParameters = ControlPersonalizationAPI._determineParameters(oManagedObject);
448
- var oAppComponent = Utils.getAppComponentForControl(oManagedObject);
449
- var aVariantManagementReferences = Object.keys(mParameters.variantManagement).reduce(function (aReferences, sVariantForAssociationId) {
450
- return aReferences.concat([mParameters.variantManagement[sVariantForAssociationId]]);
451
- }, []);
452
- return mParameters.flexController.saveSequenceOfDirtyChanges(aChanges, oAppComponent)
453
- .then(function(oResponse) {
454
- mParameters.variantModel.checkDirtyStateForControlModels(aVariantManagementReferences);
455
- return oResponse;
456
- });
457
- },
458
-
459
- /**
460
- * Determines the availability of an encompassing variant management control.
461
- *
462
- * @param {sap.ui.core.Element} oControl - The control which should be tested for an encompassing variant management control
463
- *
464
- * @returns {boolean} Returns true if a variant management control is encompassing the given control, else false
465
- *
466
- * @method sap.ui.fl.ControlPersonalizationAPI.hasVariantManagement
467
- * @public
468
- */
469
- hasVariantManagement: function(oControl) {
470
- try {
471
- return !!this._getVariantManagement(oControl);
472
- } catch (oError) {
473
- Log.error(oError.message);
474
- return false;
475
- }
476
- }
477
- };
478
- return ControlPersonalizationAPI;
479
- }, true);