@openui5/sap.ui.fl 1.140.0 → 1.141.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslint-rules/import-check.js +71 -0
- package/THIRDPARTY.txt +2 -2
- package/package.json +3 -3
- package/src/sap/ui/fl/.library +1 -1
- package/src/sap/ui/fl/FakeLrepConnectorLocalStorage.js +1 -1
- package/src/sap/ui/fl/FakeLrepConnectorSessionStorage.js +1 -1
- package/src/sap/ui/fl/FakeLrepLocalStorage.js +1 -1
- package/src/sap/ui/fl/LayerUtils.js +1 -1
- package/src/sap/ui/fl/Utils.js +1 -1
- package/src/sap/ui/fl/apply/_internal/DelegateMediator.js +13 -3
- package/src/sap/ui/fl/apply/_internal/changes/Applier.js +3 -2
- package/src/sap/ui/fl/apply/_internal/changes/FlexCustomData.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/Reverter.js +4 -1
- package/src/sap/ui/fl/apply/_internal/changes/Utils.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/Preprocessor.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/Registration.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/RegistrationBuild.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddAnnotationsToOData.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddNewDataSource.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddNewInbound.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddNewOutbound.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddTechnicalAttributes.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeDataSource.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeInbound.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeOutbound.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/RemoveAllInboundsExceptOne.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/SetAch.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/SetDescription.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/SetTitle.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetAbstract.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetCloudDevAdaptationStatus.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetRegistrationIds.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/AddNewCard.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/ChangeCard.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/DeleteCard.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddComponentUsages.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddLibrary.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddNewModel.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddNewModelEnhanceWith.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/ChangeModel.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/SetFlexExtensionPointEnabled.js +1 -1
- package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/SetMinUI5Version.js +1 -1
- package/src/sap/ui/fl/apply/_internal/connectors/ObjectStorageUtils.js +1 -1
- package/src/sap/ui/fl/apply/_internal/controlVariants/URLHandler.js +1 -1
- package/src/sap/ui/fl/apply/_internal/extensionPoint/Processor.js +1 -1
- package/src/sap/ui/fl/apply/_internal/extensionPoint/Registry.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/AnnotationChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/AppDescriptorChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/CompVariant.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/ControllerExtensionChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/FlVariant.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/FlexObject.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/FlexObjectFactory.js +2 -8
- package/src/sap/ui/fl/apply/_internal/flexObjects/UIChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/Variant.js +2 -2
- package/src/sap/ui/fl/apply/_internal/flexObjects/VariantChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/VariantManagementChange.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexObjects/getVariantAuthor.js +6 -3
- package/src/sap/ui/fl/apply/_internal/flexState/DataSelector.js +2 -2
- package/src/sap/ui/fl/apply/_internal/flexState/FlexObjectState.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/FlexState.js +53 -161
- package/src/sap/ui/fl/apply/_internal/flexState/InitialPrepareFunctions.js +0 -8
- package/src/sap/ui/fl/apply/_internal/flexState/UI2Personalization/UI2PersonalizationState.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/changes/DependencyHandler.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/changes/ExtensionPointState.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/changes/UIChangesState.js +1 -1
- package/src/sap/ui/fl/apply/_internal/flexState/compVariants/CompVariantManagementState.js +2 -5
- package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/Switcher.js +22 -5
- package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/VariantManagementState.js +54 -12
- package/src/sap/ui/fl/apply/_internal/init.js +47 -0
- package/src/sap/ui/fl/apply/_internal/preprocessors/ComponentLifecycleHooks.js +14 -5
- package/src/sap/ui/fl/apply/api/AnnotationChangeHandlerAPI.js +2 -1
- package/src/sap/ui/fl/apply/api/ControlVariantApplyAPI.js +190 -53
- package/src/sap/ui/fl/apply/api/DelegateMediatorAPI.js +17 -1
- package/src/sap/ui/fl/apply/api/ExtensionPointRegistryAPI.js +2 -1
- package/src/sap/ui/fl/apply/api/FlexRuntimeInfoAPI.js +2 -1
- package/src/sap/ui/fl/apply/api/SmartVariantManagementApplyAPI.js +2 -1
- package/src/sap/ui/fl/apply/api/UI2PersonalizationApplyAPI.js +2 -1
- package/src/sap/ui/fl/changeHandler/AddIFrame.js +1 -1
- package/src/sap/ui/fl/changeHandler/AddXML.js +2 -2
- package/src/sap/ui/fl/changeHandler/AddXMLAtExtensionPoint.js +4 -4
- package/src/sap/ui/fl/changeHandler/Base.js +3 -2
- package/src/sap/ui/fl/changeHandler/BaseAddViaDelegate.js +1 -1
- package/src/sap/ui/fl/changeHandler/BaseAddXml.js +21 -9
- package/src/sap/ui/fl/changeHandler/BaseRename.js +1 -1
- package/src/sap/ui/fl/changeHandler/ChangeAnnotation.js +7 -2
- package/src/sap/ui/fl/changeHandler/HideControl.js +1 -1
- package/src/sap/ui/fl/changeHandler/MoveControls.js +1 -1
- package/src/sap/ui/fl/changeHandler/MoveElements.js +1 -1
- package/src/sap/ui/fl/changeHandler/PropertyBindingChange.js +1 -1
- package/src/sap/ui/fl/changeHandler/PropertyChange.js +1 -1
- package/src/sap/ui/fl/changeHandler/StashControl.js +1 -1
- package/src/sap/ui/fl/changeHandler/UnhideControl.js +1 -1
- package/src/sap/ui/fl/changeHandler/UnstashControl.js +1 -1
- package/src/sap/ui/fl/changeHandler/UpdateIFrame.js +1 -1
- package/src/sap/ui/fl/changeHandler/common/createIFrame.js +1 -4
- package/src/sap/ui/fl/descriptorRelated/api/DescriptorChange.js +3 -3
- package/src/sap/ui/fl/descriptorRelated/api/DescriptorChangeFactory.js +3 -3
- package/src/sap/ui/fl/descriptorRelated/api/DescriptorInlineChangeFactory.js +1 -1
- package/src/sap/ui/fl/descriptorRelated/api/DescriptorVariantFactory.js +1 -1
- package/src/sap/ui/fl/designtime/variants/VariantManagement.designtime.js +14 -12
- package/src/sap/ui/fl/initial/_internal/FlexConfiguration.js +1 -1
- package/src/sap/ui/fl/initial/_internal/Loader.js +243 -79
- package/src/sap/ui/fl/initial/_internal/ManifestUtils.js +1 -1
- package/src/sap/ui/fl/initial/_internal/Settings.js +1 -1
- package/src/sap/ui/fl/initial/_internal/Storage.js +1 -1
- package/src/sap/ui/fl/initial/_internal/StorageFeaturesMerger.js +1 -1
- package/src/sap/ui/fl/initial/_internal/StorageUtils.js +67 -9
- package/src/sap/ui/fl/initial/_internal/changeHandlers/ChangeHandlerRegistration.js +1 -1
- package/src/sap/ui/fl/initial/_internal/changeHandlers/ChangeHandlerStorage.js +12 -5
- package/src/sap/ui/fl/initial/_internal/connectors/Utils.js +1 -1
- package/src/sap/ui/fl/{apply → initial}/_internal/preprocessors/ControllerExtension.js +15 -4
- package/src/sap/ui/fl/{apply → initial}/_internal/preprocessors/RegistrationDelegator.js +7 -38
- package/src/sap/ui/fl/{apply → initial}/_internal/preprocessors/XmlPreprocessor.js +28 -20
- package/src/sap/ui/fl/initial/_internal/storageResultDisassemble.js +1 -1
- package/src/sap/ui/fl/initial/api/InitialFlexAPI.js +1 -1
- package/src/sap/ui/fl/interfaces/BaseLoadConnector.js +1 -1
- package/src/sap/ui/fl/interfaces/Delegate.js +1 -1
- package/src/sap/ui/fl/library.js +44 -44
- package/src/sap/ui/fl/support/_internal/getAllUIChanges.js +1 -1
- package/src/sap/ui/fl/support/_internal/getChangeDependencies.js +1 -1
- package/src/sap/ui/fl/support/_internal/getFlexObjectInfos.js +1 -1
- package/src/sap/ui/fl/support/_internal/getFlexSettings.js +1 -1
- package/src/sap/ui/fl/support/api/SupportAPI.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/controller/ContentDetails.controller.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/controller/ContentDetailsEdit.controller.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/controller/LayerContentMaster.controller.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/controller/Layers.controller.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/lrepConnector/LRepConnector.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/utils/DataUtils.js +1 -1
- package/src/sap/ui/fl/support/apps/contentbrowser/utils/ErrorUtils.js +1 -1
- package/src/sap/ui/fl/transport/TransportSelection.js +1 -1
- package/src/sap/ui/fl/util/IFrame.js +3 -2
- package/src/sap/ui/fl/util/ManagedObjectModel.js +1 -1
- package/src/sap/ui/fl/variants/VariantManagement.js +49 -36
- package/src/sap/ui/fl/variants/VariantManager.js +75 -15
- package/src/sap/ui/fl/variants/VariantModel.js +7 -165
- package/src/sap/ui/fl/write/_internal/Storage.js +1 -1
- package/src/sap/ui/fl/write/_internal/Versions.js +9 -5
- package/src/sap/ui/fl/write/_internal/appVariant/AppVariant.js +1 -1
- package/src/sap/ui/fl/write/_internal/appVariant/AppVariantFactory.js +1 -1
- package/src/sap/ui/fl/write/_internal/appVariant/AppVariantInlineChange.js +1 -1
- package/src/sap/ui/fl/write/_internal/appVariant/AppVariantInlineChangeFactory.js +1 -1
- package/src/sap/ui/fl/write/_internal/condenser/Condenser.js +1 -1
- package/src/sap/ui/fl/write/_internal/condenser/UIReconstruction.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/BackendConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/BtpServiceConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/KeyUserConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/LrepConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/NeoLrepConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/ObjectPathConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/PersonalizationConnector.js +1 -1
- package/src/sap/ui/fl/write/_internal/connectors/Utils.js +1 -1
- package/src/sap/ui/fl/write/_internal/extensionPoint/Processor.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPAccess.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPExtensibilityVariant.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPExtensibilityVariantFactory.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/MultiTenantABAPExtensibilityVariant.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/ServiceValidation.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/SingleTenantABAPExtensibilityVariant.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/UriParser.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/Utils.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/CAPAccess.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/dialog/CustomFieldCAPDialog.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/booleanEditor/BooleanEditor.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/rangeEditor/RangeEditor.js +1 -1
- package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/timeEditor/TimeEditor.js +1 -1
- package/src/sap/ui/fl/write/_internal/flexState/FlexObjectManager.js +30 -21
- package/src/sap/ui/fl/write/_internal/flexState/UI2Personalization/UI2PersonalizationState.js +3 -3
- package/src/sap/ui/fl/write/_internal/flexState/changes/UIChangeManager.js +1 -1
- package/src/sap/ui/fl/write/_internal/flexState/compVariants/CompVariantManager.js +2 -19
- package/src/sap/ui/fl/write/_internal/init.js +27 -0
- package/src/sap/ui/fl/write/_internal/transport/TransportSelection.js +1 -1
- package/src/sap/ui/fl/write/_internal/transport/Transports.js +1 -1
- package/src/sap/ui/fl/write/api/Adaptations.js +1 -1
- package/src/sap/ui/fl/write/api/AppVariantWriteAPI.js +2 -1
- package/src/sap/ui/fl/write/api/BusinessNetworkAPI.js +9 -8
- package/src/sap/ui/fl/write/api/ChangesWriteAPI.js +2 -1
- package/src/sap/ui/fl/write/api/ContextBasedAdaptationsAPI.js +2 -3
- package/src/sap/ui/fl/write/api/ContextSharingAPI.js +2 -1
- package/src/sap/ui/fl/write/api/ControlPersonalizationWriteAPI.js +2 -1
- package/src/sap/ui/fl/write/api/FeaturesAPI.js +2 -1
- package/src/sap/ui/fl/write/api/FieldExtensibility.js +3 -2
- package/src/sap/ui/fl/write/api/LocalResetAPI.js +2 -1
- package/src/sap/ui/fl/write/api/PersistenceWriteAPI.js +10 -3
- package/src/sap/ui/fl/write/api/ReloadInfoAPI.js +5 -2
- package/src/sap/ui/fl/write/api/SACIntegrationUpdateVariant.js +2 -1
- package/src/sap/ui/fl/write/api/SmartBusinessWriteAPI.js +2 -1
- package/src/sap/ui/fl/write/api/SmartVariantManagementWriteAPI.js +2 -1
- package/src/sap/ui/fl/write/api/TranslationAPI.js +2 -1
- package/src/sap/ui/fl/write/api/UI2PersonalizationWriteAPI.js +2 -1
- package/src/sap/ui/fl/write/api/VersionsAPI.js +2 -1
- package/src/sap/ui/fl/write/api/connectors/FileListBaseConnector.js +2 -1
- package/src/sap/ui/fl/write/api/connectors/ObjectStorageConnector.js +2 -1
|
@@ -6,17 +6,26 @@
|
|
|
6
6
|
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
"sap/base/Log",
|
|
9
|
+
"sap/ui/core/util/reflection/JsControlTreeModifier",
|
|
9
10
|
"sap/ui/core/Component",
|
|
10
11
|
"sap/ui/core/Element",
|
|
11
12
|
"sap/ui/fl/apply/_internal/controlVariants/URLHandler",
|
|
13
|
+
"sap/ui/fl/apply/_internal/controlVariants/Utils",
|
|
12
14
|
"sap/ui/fl/apply/_internal/flexState/controlVariants/VariantManagementState",
|
|
13
|
-
"sap/ui/fl/
|
|
15
|
+
"sap/ui/fl/apply/_internal/flexState/FlexObjectState",
|
|
16
|
+
"sap/ui/fl/initial/_internal/ManifestUtils",
|
|
17
|
+
"sap/ui/fl/Utils",
|
|
18
|
+
"sap/ui/fl/apply/_internal/init"
|
|
14
19
|
], function(
|
|
15
20
|
Log,
|
|
21
|
+
JsControlTreeModifier,
|
|
16
22
|
Component,
|
|
17
23
|
Element,
|
|
18
24
|
URLHandler,
|
|
25
|
+
VariantUtil,
|
|
19
26
|
VariantManagementState,
|
|
27
|
+
FlexObjectState,
|
|
28
|
+
ManifestUtils,
|
|
20
29
|
Utils
|
|
21
30
|
) {
|
|
22
31
|
"use strict";
|
|
@@ -41,6 +50,68 @@ sap.ui.define([
|
|
|
41
50
|
});
|
|
42
51
|
}
|
|
43
52
|
|
|
53
|
+
function handleInitialLoadScenario(sVMReference, oVariantManagementControl, sFlexReference) {
|
|
54
|
+
const aVariantChangesForVariant = VariantManagementState.getVariantChangesForVariant({
|
|
55
|
+
vmReference: sVMReference,
|
|
56
|
+
reference: sFlexReference
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const sDefaultVariantReference = VariantManagementState.getDefaultVariantReference({
|
|
60
|
+
vmReference: sVMReference,
|
|
61
|
+
reference: sFlexReference
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
if (
|
|
65
|
+
oVariantManagementControl.getExecuteOnSelectionForStandardDefault()
|
|
66
|
+
&& sDefaultVariantReference === sVMReference
|
|
67
|
+
&& !aVariantChangesForVariant.some((oVariantChange) => oVariantChange.getChangeType() === "setExecuteOnSelect")
|
|
68
|
+
) {
|
|
69
|
+
const oStandardVariant = VariantManagementState.getVariant({
|
|
70
|
+
vmReference: sVMReference,
|
|
71
|
+
reference: sFlexReference,
|
|
72
|
+
vReference: sVMReference
|
|
73
|
+
});
|
|
74
|
+
// set executeOnSelect without creating a change
|
|
75
|
+
oStandardVariant.instance.setExecuteOnSelection(true);
|
|
76
|
+
VariantManagementState.updateVariant({
|
|
77
|
+
reference: sFlexReference,
|
|
78
|
+
variant: oStandardVariant.instance
|
|
79
|
+
});
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function waitForInitialVariantChanges(mPropertyBag) {
|
|
86
|
+
const aCurrentVariantChanges = VariantManagementState.getInitialUIChanges({
|
|
87
|
+
vmReference: mPropertyBag.vmReference,
|
|
88
|
+
reference: mPropertyBag.reference
|
|
89
|
+
});
|
|
90
|
+
const aSelectors = aCurrentVariantChanges.reduce((aCurrentControls, oChange) => {
|
|
91
|
+
const oSelector = oChange.getSelector();
|
|
92
|
+
const oControl = JsControlTreeModifier.bySelector(oSelector, mPropertyBag.appComponent);
|
|
93
|
+
if (oControl && Utils.indexOfObject(aCurrentControls, { selector: oControl }) === -1) {
|
|
94
|
+
aCurrentControls.push({ selector: oControl });
|
|
95
|
+
}
|
|
96
|
+
return aCurrentControls;
|
|
97
|
+
}, []);
|
|
98
|
+
return aSelectors.length ? FlexObjectState.waitForFlexObjectsToBeApplied(aSelectors) : Promise.resolve();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function waitForControlToBeRendered(oControl) {
|
|
102
|
+
return new Promise((resolve) => {
|
|
103
|
+
if (oControl.getDomRef()) {
|
|
104
|
+
resolve();
|
|
105
|
+
} else {
|
|
106
|
+
oControl.addEventDelegate({
|
|
107
|
+
onAfterRendering() {
|
|
108
|
+
resolve();
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
|
|
44
115
|
/**
|
|
45
116
|
* Provides an API for applications to work with control variants. See also {@link sap.ui.fl.variants.VariantManagement}.
|
|
46
117
|
*
|
|
@@ -64,7 +135,7 @@ sap.ui.define([
|
|
|
64
135
|
/**
|
|
65
136
|
* Returns a promise that resolves to the variant model once it is available
|
|
66
137
|
*
|
|
67
|
-
* @param {
|
|
138
|
+
* @param {sap.ui.core.Component} oAppComponent - Application component
|
|
68
139
|
* @returns {Promise} Promise resolving to the Variant Model
|
|
69
140
|
*
|
|
70
141
|
* @private
|
|
@@ -74,10 +145,26 @@ sap.ui.define([
|
|
|
74
145
|
return waitForVariantModel(oAppComponent);
|
|
75
146
|
},
|
|
76
147
|
|
|
148
|
+
/**
|
|
149
|
+
* Returns the variant management control instance for a variant management reference.
|
|
150
|
+
*
|
|
151
|
+
* @param {string} sVariantManagementReference - Reference to the variant management control
|
|
152
|
+
* @param {sap.ui.core.Component} oAppComponent - Application component
|
|
153
|
+
* @returns {sap.ui.fl.variants.VariantManagement} The variant management control instance
|
|
154
|
+
*/
|
|
155
|
+
getVariantManagementControlByVMReference(sVariantManagementReference, oAppComponent) {
|
|
156
|
+
const sVMControlId = oAppComponent.byId(sVariantManagementReference)
|
|
157
|
+
? oAppComponent.createId(sVariantManagementReference)
|
|
158
|
+
: sVariantManagementReference;
|
|
159
|
+
return Element.getElementById(sVMControlId);
|
|
160
|
+
},
|
|
161
|
+
|
|
77
162
|
/**
|
|
78
163
|
* Clears URL technical parameter <code>sap-ui-fl-control-variant-id</code> for control variants.
|
|
79
|
-
* Use this method in case you normally want the variant parameter in the URL,
|
|
80
|
-
*
|
|
164
|
+
* Use this method in case you normally want the variant parameter in the URL,
|
|
165
|
+
* but have a few special navigation patterns where you want to clear it.
|
|
166
|
+
* If you don't want that parameter in general, set the <code>updateVariantInURL</code> parameter
|
|
167
|
+
* on your variant management control to <code>false</code>. SAP Fiori elements use this method.
|
|
81
168
|
* If a variant management control is given as a parameter, only parameters specific to that control are cleared.
|
|
82
169
|
*
|
|
83
170
|
* @param {object} mPropertyBag - Object with parameters as properties
|
|
@@ -116,11 +203,11 @@ sap.ui.define([
|
|
|
116
203
|
},
|
|
117
204
|
|
|
118
205
|
/**
|
|
119
|
-
*
|
|
120
|
-
*
|
|
121
|
-
* If the
|
|
122
|
-
* If the flag standardVariant is set to true, the standard variant is activated and the variantReference is ignored
|
|
123
|
-
*
|
|
206
|
+
* Activates the passed variant applicable to the passed control/component. The corresponding variant management control must be
|
|
207
|
+
* available when this function is called.
|
|
208
|
+
* If the variant is not found and the backend supports lazy loading, a backend request is made to fetch the variant.
|
|
209
|
+
* If the flag standardVariant is set to true, the standard variant is activated and the variantReference is ignored: in this
|
|
210
|
+
* scenario, the passed element must be the variant management control.
|
|
124
211
|
*
|
|
125
212
|
* @param {object} mPropertyBag - Object with parameters as properties
|
|
126
213
|
* @param {sap.ui.base.ManagedObject|string} mPropertyBag.element - Component or control (instance or ID) on which the <code>variantModel</code> is set
|
|
@@ -132,9 +219,9 @@ sap.ui.define([
|
|
|
132
219
|
* @public
|
|
133
220
|
*/
|
|
134
221
|
async activateVariant(mPropertyBag) {
|
|
135
|
-
function
|
|
222
|
+
function logAndThrowError(oError) {
|
|
136
223
|
Log.error(oError);
|
|
137
|
-
|
|
224
|
+
throw oError;
|
|
138
225
|
}
|
|
139
226
|
|
|
140
227
|
let oElement;
|
|
@@ -144,7 +231,7 @@ sap.ui.define([
|
|
|
144
231
|
oElement = Element.getElementById(mPropertyBag.element);
|
|
145
232
|
|
|
146
233
|
if (!(oElement instanceof Element)) {
|
|
147
|
-
|
|
234
|
+
logAndThrowError(Error("No valid component or control found for the provided ID"));
|
|
148
235
|
}
|
|
149
236
|
}
|
|
150
237
|
} else if (mPropertyBag.element instanceof Component || mPropertyBag.element instanceof Element) {
|
|
@@ -152,52 +239,71 @@ sap.ui.define([
|
|
|
152
239
|
}
|
|
153
240
|
|
|
154
241
|
const oAppComponent = Utils.getAppComponentForControl(oElement);
|
|
242
|
+
const sFlexReference = ManifestUtils.getFlexReferenceForControl(oElement);
|
|
155
243
|
if (!oAppComponent) {
|
|
156
|
-
|
|
244
|
+
logAndThrowError(
|
|
245
|
+
Error("A valid variant management control or component (instance or ID) should be passed as parameter")
|
|
246
|
+
);
|
|
157
247
|
}
|
|
158
248
|
|
|
159
249
|
const oVariantModel = oAppComponent.getModel(VARIANT_MODEL_NAME);
|
|
160
250
|
if (!oVariantModel) {
|
|
161
|
-
|
|
251
|
+
logAndThrowError(Error("No variant management model found for the passed control or application component"));
|
|
162
252
|
}
|
|
163
253
|
|
|
164
254
|
if (mPropertyBag.standardVariant && !oElement.isA("sap.ui.fl.variants.VariantManagement")) {
|
|
165
|
-
|
|
255
|
+
logAndThrowError(
|
|
256
|
+
Error("With using standardVariant and no variantReference, a variant management control must be passed as element")
|
|
257
|
+
);
|
|
166
258
|
}
|
|
167
259
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
260
|
+
let sVariantManagementReference;
|
|
261
|
+
let sVariantReference;
|
|
262
|
+
let oVMControl;
|
|
263
|
+
if (mPropertyBag.standardVariant) {
|
|
264
|
+
sVariantManagementReference = oElement.getVariantManagementReference();
|
|
265
|
+
sVariantReference = sVariantManagementReference;
|
|
266
|
+
oVMControl = oElement;
|
|
267
|
+
} else {
|
|
268
|
+
sVariantManagementReference = VariantManagementState.getVariantManagementReferenceForVariant(
|
|
269
|
+
sFlexReference,
|
|
270
|
+
mPropertyBag.variantReference
|
|
271
|
+
);
|
|
272
|
+
sVariantReference = mPropertyBag.variantReference;
|
|
171
273
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
} catch (oError) {
|
|
180
|
-
return logAndReject(Error(`Variant with reference '${sVariantReference}' could not be found`));
|
|
181
|
-
}
|
|
182
|
-
}
|
|
274
|
+
if (!sVariantManagementReference) {
|
|
275
|
+
// if the variant management reference is not available, the variant is maybe not yet loaded
|
|
276
|
+
try {
|
|
277
|
+
await VariantManagementState.loadVariant({
|
|
278
|
+
reference: sFlexReference,
|
|
279
|
+
variantReference: sVariantReference
|
|
280
|
+
});
|
|
183
281
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
282
|
+
sVariantManagementReference = VariantManagementState.getVariantManagementReferenceForVariant(
|
|
283
|
+
sFlexReference,
|
|
284
|
+
mPropertyBag.variantReference
|
|
285
|
+
);
|
|
286
|
+
} catch (oError) {
|
|
287
|
+
logAndThrowError(Error(`Variant with reference '${sVariantReference}' could not be found`));
|
|
288
|
+
}
|
|
289
|
+
if (!sVariantManagementReference) {
|
|
290
|
+
logAndThrowError(Error("Variant management reference not found. Check the passed element and variantReference"));
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
oVMControl = this.getVariantManagementControlByVMReference(sVariantManagementReference, oAppComponent);
|
|
187
294
|
}
|
|
188
295
|
|
|
189
296
|
// sap/fe is using this API very early during app start, sometimes before FlexState is initialized
|
|
190
|
-
await
|
|
297
|
+
await oVMControl.waitForInit();
|
|
191
298
|
|
|
192
299
|
try {
|
|
193
|
-
|
|
300
|
+
await oVariantModel.updateCurrentVariant({
|
|
194
301
|
variantManagementReference: sVariantManagementReference,
|
|
195
302
|
newVariantReference: sVariantReference,
|
|
196
303
|
appComponent: oAppComponent
|
|
197
304
|
});
|
|
198
305
|
} catch (oError) {
|
|
199
|
-
|
|
200
|
-
throw oError;
|
|
306
|
+
logAndThrowError(oError);
|
|
201
307
|
}
|
|
202
308
|
},
|
|
203
309
|
|
|
@@ -216,18 +322,49 @@ sap.ui.define([
|
|
|
216
322
|
*
|
|
217
323
|
* @public
|
|
218
324
|
*/
|
|
219
|
-
attachVariantApplied(mPropertyBag) {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
325
|
+
async attachVariantApplied(mPropertyBag) {
|
|
326
|
+
const oVariantManagementControl = Element.getElementById(mPropertyBag.vmControlId);
|
|
327
|
+
await oVariantManagementControl.waitForInit();
|
|
328
|
+
|
|
329
|
+
const oControl = mPropertyBag.selector.id && Element.getElementById(mPropertyBag.selector.id) || mPropertyBag.selector;
|
|
330
|
+
const oAppComponent = Utils.getAppComponentForControl(oControl);
|
|
331
|
+
const sVMReference = oVariantManagementControl.getVariantManagementReference();
|
|
332
|
+
const sFlexReference = ManifestUtils.getFlexReferenceForControl(oVariantManagementControl);
|
|
333
|
+
|
|
334
|
+
const bInitialLoad = handleInitialLoadScenario(sVMReference, oVariantManagementControl, sFlexReference);
|
|
335
|
+
// if the parameter callAfterInitialVariant or initialLoad is true call the function without check
|
|
336
|
+
if (mPropertyBag.callAfterInitialVariant || bInitialLoad) {
|
|
337
|
+
waitForInitialVariantChanges({
|
|
338
|
+
appComponent: oAppComponent,
|
|
339
|
+
reference: sFlexReference,
|
|
340
|
+
vmReference: sVMReference
|
|
341
|
+
}).then(() => {
|
|
342
|
+
const sCurrentVariantReference = VariantManagementState.getCurrentVariantReference({
|
|
343
|
+
vmReference: sVMReference,
|
|
344
|
+
reference: sFlexReference
|
|
345
|
+
});
|
|
346
|
+
const oVariant = VariantManagementState.getVariant({
|
|
347
|
+
vmReference: sVMReference,
|
|
348
|
+
reference: sFlexReference,
|
|
349
|
+
vReference: sCurrentVariantReference
|
|
350
|
+
});
|
|
351
|
+
mPropertyBag.callback(oVariant);
|
|
229
352
|
});
|
|
230
|
-
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
// first check if the passed vmControlId is correct, then save the callback
|
|
356
|
+
// for this check the control has to be in the control tree already
|
|
357
|
+
await waitForControlToBeRendered(oControl);
|
|
358
|
+
if (VariantUtil.getRelevantVariantManagementControlId(oControl) === mPropertyBag.vmControlId) {
|
|
359
|
+
// showExecuteOnSelection is only relevant when a control can react to the variant applied event
|
|
360
|
+
// e.g. for ListReport, Table, etc.
|
|
361
|
+
oVariantManagementControl.setShowExecuteOnSelection(true);
|
|
362
|
+
oVariantManagementControl._addVariantAppliedListener(oControl, mPropertyBag.callback);
|
|
363
|
+
} else {
|
|
364
|
+
Log.error(
|
|
365
|
+
"Error in attachVariantApplied: The passed VariantManagement ID doesn't match the responsible VariantManagement control"
|
|
366
|
+
);
|
|
367
|
+
}
|
|
231
368
|
},
|
|
232
369
|
|
|
233
370
|
/**
|
|
@@ -239,12 +376,12 @@ sap.ui.define([
|
|
|
239
376
|
*
|
|
240
377
|
* @public
|
|
241
378
|
*/
|
|
242
|
-
detachVariantApplied(mPropertyBag) {
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
379
|
+
async detachVariantApplied(mPropertyBag) {
|
|
380
|
+
const oVariantManagementControl = Element.getElementById(mPropertyBag.vmControlId);
|
|
381
|
+
const oControl = mPropertyBag.selector.id && Element.getElementById(mPropertyBag.selector.id) || mPropertyBag.selector;
|
|
382
|
+
// Ensure that the variant attach process is finished before removing the listener
|
|
383
|
+
await Promise.all([oVariantManagementControl.waitForInit(), waitForControlToBeRendered(oControl)]);
|
|
384
|
+
oVariantManagementControl._removeVariantAppliedListener(oControl);
|
|
248
385
|
}
|
|
249
386
|
};
|
|
250
387
|
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
sap.ui.define([
|
|
8
|
-
"sap/ui/fl/apply/_internal/DelegateMediator"
|
|
8
|
+
"sap/ui/fl/apply/_internal/DelegateMediator",
|
|
9
|
+
"sap/ui/fl/apply/_internal/init"
|
|
9
10
|
], function(
|
|
10
11
|
DelegateMediator
|
|
11
12
|
) {
|
|
@@ -89,6 +90,21 @@ sap.ui.define([
|
|
|
89
90
|
mPropertyBag.control,
|
|
90
91
|
mPropertyBag.modifier
|
|
91
92
|
);
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Registers a handler for adjusting XML fragments. The handler will be stored without reference to the app,
|
|
97
|
+
* and will therefore be available for all apps.
|
|
98
|
+
*
|
|
99
|
+
* @param {object} mPropertyBag - Property bag
|
|
100
|
+
* @param {string} mPropertyBag.key - Key for the handler
|
|
101
|
+
* @param {function} mPropertyBag.handler - Handler function returning the adjusted fragment or a Promise resolving with the adjusted fragment
|
|
102
|
+
*
|
|
103
|
+
* @private
|
|
104
|
+
* @ui5-restricted sap.fe
|
|
105
|
+
*/
|
|
106
|
+
registerAddXMLAdjustFragmentHandler(mPropertyBag) {
|
|
107
|
+
DelegateMediator.registerAddXMLAdjustFragmentHandler(mPropertyBag);
|
|
92
108
|
}
|
|
93
109
|
};
|
|
94
110
|
|
|
@@ -9,7 +9,8 @@ sap.ui.define([
|
|
|
9
9
|
"sap/ui/fl/apply/_internal/flexState/compVariants/Utils",
|
|
10
10
|
"sap/ui/fl/apply/_internal/flexState/FlexState",
|
|
11
11
|
"sap/ui/fl/initial/_internal/ManifestUtils",
|
|
12
|
-
"sap/ui/fl/Utils"
|
|
12
|
+
"sap/ui/fl/Utils",
|
|
13
|
+
"sap/ui/fl/apply/_internal/init"
|
|
13
14
|
], function(
|
|
14
15
|
CompVariantManagementState,
|
|
15
16
|
CompVariantUtils,
|
|
@@ -7,7 +7,8 @@
|
|
|
7
7
|
sap.ui.define([
|
|
8
8
|
"sap/ui/fl/apply/_internal/flexState/UI2Personalization/UI2PersonalizationState",
|
|
9
9
|
"sap/ui/fl/apply/_internal/flexState/FlexState",
|
|
10
|
-
"sap/ui/fl/initial/_internal/ManifestUtils"
|
|
10
|
+
"sap/ui/fl/initial/_internal/ManifestUtils",
|
|
11
|
+
"sap/ui/fl/apply/_internal/init"
|
|
11
12
|
], function(
|
|
12
13
|
UI2PersonalizationState,
|
|
13
14
|
FlexState,
|
|
@@ -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.
|
|
19
|
+
* @version 1.141.1
|
|
20
20
|
* @since 1.54
|
|
21
21
|
* @private
|
|
22
22
|
*/
|
|
@@ -32,7 +32,7 @@ sap.ui.define([
|
|
|
32
32
|
* @param {object} mPropertyBag.view Root view
|
|
33
33
|
* @returns {boolean} <true> if the change got applied successfully
|
|
34
34
|
* @private
|
|
35
|
-
* @ui5-restricted sap.ui.fl.apply.changes.
|
|
35
|
+
* @ui5-restricted sap.ui.fl.apply.changes.Applier
|
|
36
36
|
* @name sap.ui.fl.changeHandler.AddXML#applyChange
|
|
37
37
|
*/
|
|
38
38
|
AddXML.applyChange = function(oChange, oControl, mPropertyBag) {
|
|
@@ -5,10 +5,10 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
sap.ui.define([
|
|
8
|
-
"sap/ui/fl/apply/
|
|
8
|
+
"sap/ui/fl/apply/_internal/extensionPoint/Registry",
|
|
9
9
|
"sap/ui/fl/changeHandler/BaseAddXml"
|
|
10
10
|
], function(
|
|
11
|
-
|
|
11
|
+
ExtensionPointRegistry,
|
|
12
12
|
BaseAddXml
|
|
13
13
|
) {
|
|
14
14
|
"use strict";
|
|
@@ -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.
|
|
21
|
+
* @version 1.141.1
|
|
22
22
|
* @since 1.75
|
|
23
23
|
* @private
|
|
24
24
|
*/
|
|
@@ -79,7 +79,7 @@ sap.ui.define([
|
|
|
79
79
|
// Confirm with ready function in sync apply scenario (preprocessing with JSView)
|
|
80
80
|
mExtensionPointInfo.ready(aNewControls);
|
|
81
81
|
}
|
|
82
|
-
|
|
82
|
+
ExtensionPointRegistry.addCreatedControls({
|
|
83
83
|
name: oSelector.name,
|
|
84
84
|
viewId: sViewId,
|
|
85
85
|
createdControlsIds: aNewControls.map((oNewControl) => oModifier.getId(oNewControl))
|
|
@@ -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.
|
|
17
|
+
* @version 1.141.1
|
|
18
18
|
* @private
|
|
19
19
|
* @ui5-restricted change handlers
|
|
20
20
|
*/
|
|
@@ -66,7 +66,8 @@ sap.ui.define([
|
|
|
66
66
|
|
|
67
67
|
const oModifier = mPropertyBag.modifier;
|
|
68
68
|
const oView = mPropertyBag.view;
|
|
69
|
-
const sFragment = LoaderExtensions.loadResource(sModuleName, {dataType: "text"});
|
|
69
|
+
const sFragment = mPropertyBag.fragment || LoaderExtensions.loadResource(sModuleName, {dataType: "text"});
|
|
70
|
+
|
|
70
71
|
try {
|
|
71
72
|
return await oModifier.instantiateFragment(sFragment, sIdPrefix, oView);
|
|
72
73
|
} catch (oError) {
|
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
7
|
sap.ui.define([
|
|
8
|
-
"sap/ui/fl/changeHandler/Base",
|
|
9
8
|
"sap/base/util/LoaderExtensions",
|
|
10
|
-
"sap/ui/fl/
|
|
9
|
+
"sap/ui/fl/apply/_internal/DelegateMediator",
|
|
10
|
+
"sap/ui/fl/changeHandler/common/revertAddedControls",
|
|
11
|
+
"sap/ui/fl/changeHandler/Base"
|
|
11
12
|
], function(
|
|
12
|
-
Base,
|
|
13
13
|
LoaderExtensions,
|
|
14
|
-
|
|
14
|
+
DelegateMediator,
|
|
15
|
+
revertAddedControls,
|
|
16
|
+
Base
|
|
15
17
|
|
|
16
18
|
) {
|
|
17
19
|
"use strict";
|
|
@@ -21,7 +23,7 @@ sap.ui.define([
|
|
|
21
23
|
*
|
|
22
24
|
* @alias sap.ui.fl.changeHandler.BaseAddXml
|
|
23
25
|
* @author SAP SE
|
|
24
|
-
* @version 1.
|
|
26
|
+
* @version 1.141.1
|
|
25
27
|
* @since 1.75
|
|
26
28
|
* @private
|
|
27
29
|
* @ui5-restricted change handlers
|
|
@@ -36,7 +38,7 @@ sap.ui.define([
|
|
|
36
38
|
* @param {object} mPropertyBag - Property bag
|
|
37
39
|
* @param {object} mPropertyBag.modifier - Modifier for the controls
|
|
38
40
|
* @param {object} mPropertyBag.view - Root view
|
|
39
|
-
* @param {object} mChangeInfo - Change
|
|
41
|
+
* @param {object} mChangeInfo - Change Information map
|
|
40
42
|
* @param {number} mChangeInfo.index - Index defines the position at witch the xml fragment is added
|
|
41
43
|
* @param {string} mChangeInfo.aggregationName - Aggregation name of the control to be extended by the xml fragment
|
|
42
44
|
* @param {boolean} [mChangeInfo.skipAdjustIndex] - True in case of inserting an XML node or element at an extension point, needed only in XML case
|
|
@@ -48,14 +50,24 @@ sap.ui.define([
|
|
|
48
50
|
BaseAddXml.applyChange = async function(oChange, oControl, mPropertyBag, mChangeInfo) {
|
|
49
51
|
const oModifier = mPropertyBag.modifier;
|
|
50
52
|
const sAggregationName = mChangeInfo.aggregationName;
|
|
51
|
-
const
|
|
53
|
+
const oFlexObjectMetadata = oChange.getFlexObjectMetadata();
|
|
54
|
+
const sModuleName = oFlexObjectMetadata.moduleName;
|
|
52
55
|
|
|
53
56
|
const oAggregationDefinition = await oModifier.findAggregation(oControl, sAggregationName);
|
|
54
57
|
if (!oAggregationDefinition) {
|
|
55
58
|
throw Error(`The given Aggregation is not available in the given control: ${oModifier.getId(oControl)}`);
|
|
56
59
|
}
|
|
57
|
-
|
|
58
|
-
|
|
60
|
+
let sFragment = await LoaderExtensions.loadResource(sModuleName, {dataType: "text"}); // complete xml fragment as string
|
|
61
|
+
|
|
62
|
+
const oAdjustFragmentHandlers = DelegateMediator.getAddXMLAdjustFragmentHandlers();
|
|
63
|
+
if (oAdjustFragmentHandlers) {
|
|
64
|
+
for (const sKey in oAdjustFragmentHandlers) {
|
|
65
|
+
sFragment = await oAdjustFragmentHandlers[sKey](sFragment, mPropertyBag);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
// now the real UI5 controls are created from the XML string
|
|
70
|
+
const aNewControls = await Base.instantiateFragment(oChange, { ...mPropertyBag, fragment: sFragment });
|
|
59
71
|
|
|
60
72
|
let iIterator = 0;
|
|
61
73
|
for (const oNewControl of aNewControls) {
|
|
@@ -15,7 +15,7 @@ sap.ui.define([
|
|
|
15
15
|
* Default change handler for annotations.
|
|
16
16
|
* @alias sap.ui.fl.changeHandler.ChangeAnnotation
|
|
17
17
|
* @author SAP SE
|
|
18
|
-
* @version 1.
|
|
18
|
+
* @version 1.141.1
|
|
19
19
|
* @since 1.132
|
|
20
20
|
* @public
|
|
21
21
|
*/
|
|
@@ -41,7 +41,12 @@ sap.ui.define([
|
|
|
41
41
|
|
|
42
42
|
const oObjectTemplateInfo = oContent.objectTemplateInfo;
|
|
43
43
|
if (oObjectTemplateInfo) {
|
|
44
|
-
|
|
44
|
+
// Parse the object before replacing the placeholder to avoid issues with escaped special characters
|
|
45
|
+
const oParsedTemplate = JSON.parse(oObjectTemplateInfo.templateAsString);
|
|
46
|
+
Object.keys(oParsedTemplate).forEach((sKey) => {
|
|
47
|
+
oParsedTemplate[sKey] = oParsedTemplate[sKey].replace(oObjectTemplateInfo.placeholder, sValue);
|
|
48
|
+
});
|
|
49
|
+
oReturn.value = oParsedTemplate;
|
|
45
50
|
} else {
|
|
46
51
|
oReturn.value = sValue;
|
|
47
52
|
}
|