@openui5/sap.ui.fl 1.94.0 → 1.97.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 (216) hide show
  1. package/.reuse/dep5 +12 -12
  2. package/THIRDPARTY.txt +21 -17
  3. package/package.json +3 -3
  4. package/src/sap/ui/fl/.library +1 -1
  5. package/src/sap/ui/fl/Cache.js +1 -1
  6. package/src/sap/ui/fl/Change.js +18 -14
  7. package/src/sap/ui/fl/ChangePersistence.js +98 -86
  8. package/src/sap/ui/fl/ChangePersistenceFactory.js +1 -1
  9. package/src/sap/ui/fl/EventHistory.js +1 -1
  10. package/src/sap/ui/fl/FakeLrepConnectorLocalStorage.js +1 -1
  11. package/src/sap/ui/fl/FakeLrepConnectorSessionStorage.js +1 -1
  12. package/src/sap/ui/fl/FakeLrepLocalStorage.js +1 -1
  13. package/src/sap/ui/fl/FlexController.js +28 -22
  14. package/src/sap/ui/fl/FlexControllerFactory.js +17 -6
  15. package/src/sap/ui/fl/LayerUtils.js +34 -22
  16. package/src/sap/ui/fl/PreprocessorImpl.js +1 -1
  17. package/src/sap/ui/fl/RegistrationDelegator.js +1 -1
  18. package/src/sap/ui/fl/Utils.js +61 -41
  19. package/src/sap/ui/fl/Variant.js +2 -11
  20. package/src/sap/ui/fl/XmlPreprocessorImpl.js +10 -11
  21. package/src/sap/ui/fl/apply/_internal/DelegateMediator.js +1 -1
  22. package/src/sap/ui/fl/apply/_internal/appVariant/DescriptorChangeTypes.js +2 -1
  23. package/src/sap/ui/fl/apply/_internal/changes/Applier.js +33 -11
  24. package/src/sap/ui/fl/apply/_internal/changes/FlexCustomData.js +1 -1
  25. package/src/sap/ui/fl/apply/_internal/changes/Utils.js +1 -1
  26. package/src/sap/ui/fl/apply/_internal/changes/descriptor/Applier.js +1 -1
  27. package/src/sap/ui/fl/apply/_internal/changes/descriptor/Preprocessor.js +1 -1
  28. package/src/sap/ui/fl/apply/_internal/changes/descriptor/Registration.js +1 -1
  29. package/src/sap/ui/fl/apply/_internal/changes/descriptor/RegistrationBuild.js +3 -2
  30. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/AddAnnotationsToOData.js +1 -1
  31. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeDataSource.js +1 -1
  32. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/ChangeInbound.js +1 -1
  33. package/src/sap/ui/fl/apply/_internal/changes/descriptor/app/SetTitle.js +1 -1
  34. package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetAbstract.js +52 -0
  35. package/src/sap/ui/fl/apply/_internal/changes/descriptor/fiori/SetRegistrationIds.js +1 -1
  36. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/AddNewCard.js +1 -1
  37. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/ChangeCard.js +1 -1
  38. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ovp/DeleteCard.js +1 -1
  39. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddComponentUsages.js +1 -1
  40. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddLibrary.js +1 -1
  41. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddNewModel.js +1 -1
  42. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/AddNewModelEnhanceWith.js +1 -1
  43. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/SetFlexExtensionPointEnabled.js +1 -1
  44. package/src/sap/ui/fl/apply/_internal/changes/descriptor/ui5/SetMinUI5Version.js +1 -1
  45. package/src/sap/ui/fl/apply/_internal/connectors/ObjectStorageUtils.js +1 -1
  46. package/src/sap/ui/fl/apply/_internal/controlVariants/URLHandler.js +299 -288
  47. package/src/sap/ui/fl/apply/_internal/controlVariants/Utils.js +39 -9
  48. package/src/sap/ui/fl/apply/_internal/extensionPoint/Processor.js +1 -1
  49. package/src/sap/ui/fl/apply/_internal/flexObjects/CompVariant.js +10 -8
  50. package/src/sap/ui/fl/apply/_internal/flexObjects/States.js +14 -0
  51. package/src/sap/ui/fl/apply/_internal/flexState/FlexState.js +103 -33
  52. package/src/sap/ui/fl/apply/_internal/flexState/Loader.js +45 -4
  53. package/src/sap/ui/fl/apply/_internal/flexState/ManifestUtils.js +5 -1
  54. package/src/sap/ui/fl/apply/_internal/flexState/UI2Personalization/UI2PersonalizationState.js +1 -1
  55. package/src/sap/ui/fl/apply/_internal/flexState/appDescriptorChanges/prepareAppDescriptorMap.js +1 -1
  56. package/src/sap/ui/fl/apply/_internal/flexState/changes/DependencyHandler.js +1 -1
  57. package/src/sap/ui/fl/apply/_internal/flexState/changes/ExtensionPointState.js +1 -1
  58. package/src/sap/ui/fl/apply/_internal/flexState/compVariants/CompVariantMerger.js +2 -2
  59. package/src/sap/ui/fl/apply/_internal/flexState/compVariants/prepareCompVariantsMap.js +7 -7
  60. package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/Switcher.js +2 -4
  61. package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/VariantManagementState.js +25 -38
  62. package/src/sap/ui/fl/apply/_internal/flexState/controlVariants/prepareVariantsMap.js +1 -1
  63. package/src/sap/ui/fl/apply/api/ControlVariantApplyAPI.js +86 -6
  64. package/src/sap/ui/fl/apply/api/FlexRuntimeInfoAPI.js +83 -14
  65. package/src/sap/ui/fl/changeHandler/AddIFrame.js +1 -1
  66. package/src/sap/ui/fl/changeHandler/AddXML.js +1 -1
  67. package/src/sap/ui/fl/changeHandler/AddXMLAtExtensionPoint.js +1 -1
  68. package/src/sap/ui/fl/changeHandler/Base.js +1 -1
  69. package/src/sap/ui/fl/changeHandler/BaseAddViaDelegate.js +1 -1
  70. package/src/sap/ui/fl/changeHandler/BaseAddXml.js +1 -1
  71. package/src/sap/ui/fl/changeHandler/BaseRename.js +1 -1
  72. package/src/sap/ui/fl/changeHandler/HideControl.js +1 -1
  73. package/src/sap/ui/fl/changeHandler/MoveControls.js +1 -1
  74. package/src/sap/ui/fl/changeHandler/MoveElements.js +1 -1
  75. package/src/sap/ui/fl/changeHandler/PropertyBindingChange.js +1 -1
  76. package/src/sap/ui/fl/changeHandler/PropertyChange.js +1 -1
  77. package/src/sap/ui/fl/changeHandler/StashControl.js +1 -1
  78. package/src/sap/ui/fl/changeHandler/UnhideControl.js +1 -1
  79. package/src/sap/ui/fl/changeHandler/UnstashControl.js +1 -1
  80. package/src/sap/ui/fl/changeHandler/UpdateIFrame.js +6 -2
  81. package/src/sap/ui/fl/codeExt/CodeExtManager.js +16 -10
  82. package/src/sap/ui/fl/descriptorRelated/api/DescriptorChangeFactory.js +4 -4
  83. package/src/sap/ui/fl/descriptorRelated/api/DescriptorInlineChangeFactory.js +18 -1
  84. package/src/sap/ui/fl/descriptorRelated/api/DescriptorVariantFactory.js +1 -1
  85. package/src/sap/ui/fl/designtime/util/IFrame.designtime.js +12 -8
  86. package/src/sap/ui/fl/designtime/variants/VariantManagement.designtime.js +10 -4
  87. package/src/sap/ui/fl/initial/_internal/Storage.js +1 -1
  88. package/src/sap/ui/fl/initial/_internal/StorageUtils.js +1 -1
  89. package/src/sap/ui/fl/initial/_internal/changeHandlers/ChangeRegistryItem.js +1 -1
  90. package/src/sap/ui/fl/initial/_internal/connectors/Utils.js +1 -3
  91. package/src/sap/ui/fl/initial/_internal/storageResultDisassemble.js +1 -1
  92. package/src/sap/ui/fl/interfaces/BaseLoadConnector.js +1 -1
  93. package/src/sap/ui/fl/interfaces/Delegate.js +1 -1
  94. package/src/sap/ui/fl/library.js +9 -9
  95. package/src/sap/ui/fl/library.support.js +56 -46
  96. package/src/sap/ui/fl/messagebundle.properties +30 -2
  97. package/src/sap/ui/fl/messagebundle_ar.properties +21 -2
  98. package/src/sap/ui/fl/messagebundle_bg.properties +21 -2
  99. package/src/sap/ui/fl/messagebundle_ca.properties +21 -2
  100. package/src/sap/ui/fl/messagebundle_cs.properties +21 -2
  101. package/src/sap/ui/fl/messagebundle_cy.properties +21 -2
  102. package/src/sap/ui/fl/messagebundle_da.properties +21 -2
  103. package/src/sap/ui/fl/messagebundle_de.properties +21 -2
  104. package/src/sap/ui/fl/messagebundle_el.properties +21 -2
  105. package/src/sap/ui/fl/messagebundle_en.properties +21 -2
  106. package/src/sap/ui/fl/messagebundle_en_GB.properties +21 -2
  107. package/src/sap/ui/fl/messagebundle_en_US_sappsd.properties +21 -2
  108. package/src/sap/ui/fl/messagebundle_en_US_saptrc.properties +21 -2
  109. package/src/sap/ui/fl/messagebundle_es.properties +21 -2
  110. package/src/sap/ui/fl/messagebundle_es_MX.properties +21 -2
  111. package/src/sap/ui/fl/messagebundle_et.properties +21 -2
  112. package/src/sap/ui/fl/messagebundle_fi.properties +21 -2
  113. package/src/sap/ui/fl/messagebundle_fr.properties +21 -2
  114. package/src/sap/ui/fl/messagebundle_fr_CA.properties +21 -2
  115. package/src/sap/ui/fl/messagebundle_hi.properties +21 -2
  116. package/src/sap/ui/fl/messagebundle_hr.properties +21 -2
  117. package/src/sap/ui/fl/messagebundle_hu.properties +21 -2
  118. package/src/sap/ui/fl/messagebundle_id.properties +21 -2
  119. package/src/sap/ui/fl/messagebundle_it.properties +22 -3
  120. package/src/sap/ui/fl/messagebundle_iw.properties +21 -2
  121. package/src/sap/ui/fl/messagebundle_ja.properties +21 -2
  122. package/src/sap/ui/fl/messagebundle_kk.properties +21 -2
  123. package/src/sap/ui/fl/messagebundle_ko.properties +21 -2
  124. package/src/sap/ui/fl/messagebundle_lt.properties +21 -2
  125. package/src/sap/ui/fl/messagebundle_lv.properties +21 -2
  126. package/src/sap/ui/fl/messagebundle_ms.properties +21 -2
  127. package/src/sap/ui/fl/messagebundle_nl.properties +21 -2
  128. package/src/sap/ui/fl/messagebundle_no.properties +21 -2
  129. package/src/sap/ui/fl/messagebundle_pl.properties +21 -2
  130. package/src/sap/ui/fl/messagebundle_pt.properties +21 -2
  131. package/src/sap/ui/fl/messagebundle_pt_PT.properties +21 -2
  132. package/src/sap/ui/fl/messagebundle_ro.properties +21 -2
  133. package/src/sap/ui/fl/messagebundle_ru.properties +21 -2
  134. package/src/sap/ui/fl/messagebundle_sh.properties +21 -2
  135. package/src/sap/ui/fl/messagebundle_sk.properties +21 -2
  136. package/src/sap/ui/fl/messagebundle_sl.properties +21 -2
  137. package/src/sap/ui/fl/messagebundle_sv.properties +21 -2
  138. package/src/sap/ui/fl/messagebundle_th.properties +19 -0
  139. package/src/sap/ui/fl/messagebundle_tr.properties +21 -2
  140. package/src/sap/ui/fl/messagebundle_uk.properties +21 -2
  141. package/src/sap/ui/fl/messagebundle_vi.properties +21 -2
  142. package/src/sap/ui/fl/messagebundle_zh_CN.properties +21 -2
  143. package/src/sap/ui/fl/messagebundle_zh_TW.properties +21 -2
  144. package/src/sap/ui/fl/registry/Settings.js +71 -38
  145. package/src/sap/ui/fl/support/Flexibility.js +83 -72
  146. package/src/sap/ui/fl/support/apps/contentbrowser/controller/ContentDetails.controller.js +12 -12
  147. package/src/sap/ui/fl/support/apps/contentbrowser/controller/ContentDetailsEdit.controller.js +8 -8
  148. package/src/sap/ui/fl/support/apps/contentbrowser/controller/LayerContentMaster.controller.js +9 -9
  149. package/src/sap/ui/fl/support/apps/contentbrowser/controller/Layers.controller.js +3 -3
  150. package/src/sap/ui/fl/support/apps/contentbrowser/lrepConnector/LRepConnector.js +51 -52
  151. package/src/sap/ui/fl/support/apps/contentbrowser/utils/DataUtils.js +129 -125
  152. package/src/sap/ui/fl/support/apps/contentbrowser/utils/ErrorUtils.js +1 -1
  153. package/src/sap/ui/fl/support/apps/uiFlexibilityDiagnostics/controller/Root.controller.js +0 -2
  154. package/src/sap/ui/fl/support/diagnostics/Flexibility.controller.js +1 -1
  155. package/src/sap/ui/fl/themes/base/VariantManagement.less +9 -37
  156. package/src/sap/ui/fl/transport/TransportSelection.js +1 -1
  157. package/src/sap/ui/fl/util/DescriptorChangeCheck.js +2 -4
  158. package/src/sap/ui/fl/util/IFrame.js +10 -3
  159. package/src/sap/ui/fl/util/ManagedObjectModel.js +1 -1
  160. package/src/sap/ui/fl/util/getContainerUserInfo.js +32 -28
  161. package/src/sap/ui/fl/util/resolveBinding.js +1 -1
  162. package/src/sap/ui/fl/variants/VariantManagement.js +279 -30
  163. package/src/sap/ui/fl/variants/VariantModel.js +178 -73
  164. package/src/sap/ui/fl/variants/context/controller/ContextVisibility.controller.js +12 -2
  165. package/src/sap/ui/fl/write/_internal/Storage.js +7 -5
  166. package/src/sap/ui/fl/write/_internal/StorageFeaturesMerger.js +1 -1
  167. package/src/sap/ui/fl/write/_internal/Versions.js +61 -54
  168. package/src/sap/ui/fl/write/_internal/appVariant/AppVariant.js +1 -1
  169. package/src/sap/ui/fl/write/_internal/appVariant/AppVariantFactory.js +1 -1
  170. package/src/sap/ui/fl/write/_internal/appVariant/AppVariantInlineChange.js +1 -1
  171. package/src/sap/ui/fl/write/_internal/appVariant/AppVariantInlineChangeFactory.js +20 -1
  172. package/src/sap/ui/fl/write/_internal/condenser/Condenser.js +25 -3
  173. package/src/sap/ui/fl/write/_internal/condenser/UIReconstruction.js +1 -1
  174. package/src/sap/ui/fl/write/_internal/connectors/BackendConnector.js +2 -2
  175. package/src/sap/ui/fl/write/_internal/connectors/KeyUserConnector.js +23 -23
  176. package/src/sap/ui/fl/write/_internal/connectors/LocalStorageConnector.js +2 -1
  177. package/src/sap/ui/fl/write/_internal/connectors/LrepConnector.js +3 -3
  178. package/src/sap/ui/fl/write/_internal/connectors/NeoLrepConnector.js +1 -1
  179. package/src/sap/ui/fl/write/_internal/connectors/ObjectPathConnector.js +1 -1
  180. package/src/sap/ui/fl/write/_internal/connectors/PersonalizationConnector.js +1 -1
  181. package/src/sap/ui/fl/write/_internal/connectors/Utils.js +1 -1
  182. package/src/sap/ui/fl/write/_internal/extensionPoint/Processor.js +1 -1
  183. package/src/sap/ui/fl/write/_internal/extensionPoint/Registry.js +1 -1
  184. package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPAccess.js +1 -1
  185. package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPExtensibilityVariant.js +1 -1
  186. package/src/sap/ui/fl/write/_internal/fieldExtensibility/ABAPExtensibilityVariantFactory.js +1 -1
  187. package/src/sap/ui/fl/write/_internal/fieldExtensibility/MultiTenantABAPExtensibilityVariant.js +1 -1
  188. package/src/sap/ui/fl/write/_internal/fieldExtensibility/ServiceValidation.js +1 -1
  189. package/src/sap/ui/fl/write/_internal/fieldExtensibility/SingleTenantABAPExtensibilityVariant.js +1 -1
  190. package/src/sap/ui/fl/write/_internal/fieldExtensibility/UriParser.js +1 -1
  191. package/src/sap/ui/fl/write/_internal/fieldExtensibility/Utils.js +5 -17
  192. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/CAPAccess.js +1 -1
  193. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/dialog/CustomFieldCAPDialog.fragment.xml +1 -0
  194. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/dialog/CustomFieldCAPDialog.js +48 -19
  195. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/getEditorConfig.js +60 -22
  196. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/booleanEditor/BooleanEditor.js +1 -1
  197. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/rangeEditor/RangeEditor.js +1 -1
  198. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/timeEditor/TimeEditor.fragment.xml +1 -1
  199. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/timeEditor/TimeEditor.js +15 -22
  200. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/validators/IsRequired.js +20 -0
  201. package/src/sap/ui/fl/write/_internal/flexState/FlexObjectState.js +15 -11
  202. package/src/sap/ui/fl/write/_internal/flexState/compVariants/CompVariantState.js +14 -13
  203. package/src/sap/ui/fl/write/_internal/transport/TransportDialog.js +5 -7
  204. package/src/sap/ui/fl/write/_internal/transport/TransportSelection.js +6 -5
  205. package/src/sap/ui/fl/write/_internal/transport/Transports.js +1 -2
  206. package/src/sap/ui/fl/write/api/ControlPersonalizationWriteAPI.js +117 -13
  207. package/src/sap/ui/fl/write/api/FeaturesAPI.js +1 -0
  208. package/src/sap/ui/fl/write/api/FieldExtensibility.js +28 -9
  209. package/src/sap/ui/fl/write/api/PersistenceWriteAPI.js +2 -1
  210. package/src/sap/ui/fl/write/api/ReloadInfoAPI.js +20 -16
  211. package/src/sap/ui/fl/write/api/SmartVariantManagementWriteAPI.js +2 -0
  212. package/ui5.yaml +135 -1
  213. package/src/sap/ui/fl/ControlPersonalizationAPI.js +0 -477
  214. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/annotationsEditor/AnnotationsEditor.js +0 -49
  215. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/dateEditor/DateEditor.js +0 -43
  216. package/src/sap/ui/fl/write/_internal/fieldExtensibility/cap/editor/propertyEditor/dateTimeEditor/DateTimeEditor.js +0 -38
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @extends sap.ui.core.Element
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.94.0
28
+ * @version 1.97.0
29
29
  *
30
30
  * @constructor
31
31
  * @private
@@ -23,37 +23,41 @@ sap.ui.define([
23
23
  /**
24
24
  * Use the shell service to get the current user information
25
25
  *
26
- * @return {object} Dictionary listing current user properties or empty object if no user or error
26
+ * @return {Promise<object>} Resolving to dictionary listing current user properties or empty object if no user or error
27
27
  * @ui5-restricted sap.ui.fl
28
28
  */
29
29
  return function () {
30
- return Utils.ifUShellContainerThen(function(aServices) {
31
- var oUserInfoService = aServices[0];
32
- if (!oUserInfoService) {
30
+ var oUShellContainer = Utils.getUshellContainer();
31
+ if (oUShellContainer) {
32
+ return Utils.getUShellService("UserInfo")
33
+ .then(function(oUserInfoService) {
34
+ if (!oUserInfoService) {
35
+ return {};
36
+ }
37
+ var oUserInfo = oUserInfoService.getUser();
38
+ if (!oUserInfo) {
39
+ return {};
40
+ }
41
+ var sEmail = emptify(oUserInfo.getEmail());
42
+ var sDomain;
43
+ if (sEmail) {
44
+ sDomain = emptify(/@(.*)/.exec(sEmail)[1]);
45
+ } else {
46
+ sDomain = "";
47
+ }
48
+ return {
49
+ fullName: emptify(oUserInfo.getFullName()),
50
+ firstName: emptify(oUserInfo.getFirstName()),
51
+ lastName: emptify(oUserInfo.getLastName()),
52
+ email: sEmail,
53
+ domain: sDomain
54
+ };
55
+ })
56
+ .catch(function(vError) {
57
+ Log.error("Unexpected exception when reading shell user info: " + vError.toString());
33
58
  return {};
34
- }
35
- var oUserInfo = oUserInfoService.getUser();
36
- if (!oUserInfo) {
37
- return {};
38
- }
39
- try {
40
- var sEmail = emptify(oUserInfo.getEmail());
41
- var sDomain;
42
- if (sEmail) {
43
- sDomain = emptify(/@(.*)/.exec(sEmail)[1]);
44
- } else {
45
- sDomain = "";
46
- }
47
- return {
48
- fullName: emptify(oUserInfo.getFullName()),
49
- firstName: emptify(oUserInfo.getFirstName()),
50
- lastName: emptify(oUserInfo.getLastName()),
51
- email: sEmail,
52
- domain: sDomain
53
- };
54
- } catch (oError) {
55
- Log.error("Unexpected exception when reading shell user info: " + oError.toString());
56
- }
57
- }, ["UserInfo"]) || {};
59
+ });
60
+ }
61
+ return Promise.resolve({});
58
62
  };
59
63
  });
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  *
35
35
  * @function
36
36
  * @author SAP SE
37
- * @version 1.94.0
37
+ * @version 1.97.0
38
38
  * @alias sap.ui.fl.util.resolveBinding
39
39
  * @experimental
40
40
  * @since 1.91
@@ -41,6 +41,7 @@ sap.ui.define([
41
41
  "sap/m/OverflowToolbar",
42
42
  "sap/m/OverflowToolbarLayoutData",
43
43
  "sap/m/VBox",
44
+ 'sap/m/HBox',
44
45
  "sap/ui/events/KeyCodes",
45
46
  "sap/ui/core/library",
46
47
  "sap/m/library",
@@ -82,6 +83,7 @@ sap.ui.define([
82
83
  OverflowToolbar,
83
84
  OverflowToolbarLayoutData,
84
85
  VBox,
86
+ HBox,
85
87
  KeyCodes,
86
88
  coreLibrary,
87
89
  mobileLibrary,
@@ -318,11 +320,9 @@ sap.ui.define([
318
320
  render: function(oRm, oControl) {
319
321
  oRm.openStart("div", oControl)
320
322
  .class("sapUiFlVarMngmt")
321
- .attr("title", oControl._oRb.getText("VARIANT_MANAGEMENT_TRIGGER_TT"))
322
323
  .openEnd();
323
324
 
324
325
  oRm.renderControl(oControl.oVariantLayout);
325
-
326
326
  oRm.close("div");
327
327
  }
328
328
  }
@@ -365,13 +365,14 @@ sap.ui.define([
365
365
 
366
366
  this.oVariantText.addStyleClass("sapUiFlVarMngmtClickable");
367
367
  this.oVariantText.addStyleClass("sapUiFlVarMngmtTitle");
368
+ this.oVariantText.addStyleClass("sapMTitleStyleH4");
368
369
  if (Device.system.phone) {
369
370
  this.oVariantText.addStyleClass("sapUiFlVarMngmtTextPhoneMaxWidth");
370
371
  } else {
371
372
  this.oVariantText.addStyleClass("sapUiFlVarMngmtTextMaxWidth");
372
373
  }
373
374
 
374
- var oVariantModifiedText = new Label(this.getId() + "-modified", {
375
+ var oVariantModifiedText = new Text(this.getId() + "-modified", {
375
376
  text: "*",
376
377
  visible: {
377
378
  path: "modified",
@@ -390,7 +391,6 @@ sap.ui.define([
390
391
  oVariantModifiedText.setVisible(false);
391
392
  oVariantModifiedText.addStyleClass("sapUiFlVarMngmtModified");
392
393
  oVariantModifiedText.addStyleClass("sapUiFlVarMngmtClickable");
393
- oVariantModifiedText.addStyleClass("sapMTitleStyleH4");
394
394
 
395
395
  this.oVariantPopoverTrigger = new ToggleButton(this.getId() + "-trigger", {
396
396
  icon: "sap-icon://slim-arrow-down",
@@ -400,7 +400,6 @@ sap.ui.define([
400
400
 
401
401
  this.oVariantPopoverTrigger.addAriaLabelledBy(this.oVariantInvisibleText);
402
402
  this.oVariantPopoverTrigger.addStyleClass("sapUiFlVarMngmtTriggerBtn");
403
- this.oVariantPopoverTrigger.addStyleClass("sapMTitleStyleH4");
404
403
 
405
404
  this.oVariantLayout = new HorizontalLayout({
406
405
  content: [
@@ -497,6 +496,7 @@ sap.ui.define([
497
496
  showExecuteOnSelection: false,
498
497
  showSetAsDefault: true,
499
498
  showPublic: false,
499
+ showContexts: false,
500
500
  editable: true,
501
501
  popoverTitle: this._oRb.getText("VARIANT_MANAGEMENT_VARIANTS")
502
502
  });
@@ -541,6 +541,21 @@ sap.ui.define([
541
541
  }
542
542
  };
543
543
 
544
+ VariantManagement.prototype._getShowContexts = function() {
545
+ var oModel = this.getModel(VariantManagement.INNER_MODEL_NAME);
546
+ if (oModel) {
547
+ return oModel.getProperty("/showContexts");
548
+ }
549
+
550
+ return false;
551
+ };
552
+ VariantManagement.prototype._setShowContexts = function(bValue) {
553
+ var oInnerModel = this.getModel(VariantManagement.INNER_MODEL_NAME);
554
+ if (oInnerModel) {
555
+ oInnerModel.setProperty("/showContexts", bValue);
556
+ }
557
+ };
558
+
544
559
  VariantManagement.prototype._getShowExecuteOnSelection = function() {
545
560
  var oModel = this.getModel(VariantManagement.INNER_MODEL_NAME);
546
561
  if (oModel) {
@@ -1280,7 +1295,13 @@ sap.ui.define([
1280
1295
  if (this._sStyleClass) {
1281
1296
  this._setShowPublic(this._bShowPublic);
1282
1297
  this.oSaveAsDialog.removeStyleClass(this._sStyleClass);
1298
+
1299
+ if (this._oRolesComponentContainer) {
1300
+ this.oSaveAsDialog.removeContent(this._oRolesComponentContainer);
1301
+ }
1302
+
1283
1303
  this._sStyleClass = undefined;
1304
+ this._oRolesComponentContainer = null;
1284
1305
  }
1285
1306
  }.bind(this),
1286
1307
  beginButton: this.oSaveSave,
@@ -1316,20 +1337,167 @@ sap.ui.define([
1316
1337
  this.oSaveAsDialog.close();
1317
1338
  };
1318
1339
 
1340
+
1341
+ VariantManagement.prototype._getSelectedContexts = function() {
1342
+ return this._oRolesComponentContainer.getComponentInstance().getSelectedContexts();
1343
+ };
1344
+ VariantManagement.prototype._setSelectedContexts = function(mContexts) {
1345
+ if (!mContexts) {
1346
+ mContexts = { role: []};
1347
+ }
1348
+ this._oRolesComponentContainer.getComponentInstance().setSelectedContexts(mContexts);
1349
+ };
1350
+
1351
+ VariantManagement.prototype._isInErrorContexts = function() {
1352
+ return this._oRolesComponentContainer.getComponentInstance().hasErrorsAndShowErrorMessage();
1353
+ };
1354
+
1355
+ VariantManagement.prototype._determineRolesSpecificText = function(mContexts, oTextControl) {
1356
+ if (!mContexts) {
1357
+ mContexts = { role: []};
1358
+ }
1359
+ if (mContexts && oTextControl) {
1360
+ oTextControl.setText(this._oRb.getText((mContexts.role && mContexts.role.length > 0) ? "VARIANT_MANAGEMENT_VISIBILITY_RESTRICTED" : "VARIANT_MANAGEMENT_VISIBILITY_NON_RESTRICTED"));
1361
+ }
1362
+ };
1363
+
1364
+ VariantManagement.prototype._checkAndAddRolesContainerToManageDialog = function() {
1365
+ if (this._oRolesComponentContainer && this._oRolesDialog) {
1366
+ var oRolesComponentContainer = null;
1367
+ this._oRolesDialog.getContent().some(function(oContent) {
1368
+ if (oContent === this._oRolesComponentContainer) {
1369
+ oRolesComponentContainer = oContent;
1370
+ return true;
1371
+ }
1372
+
1373
+ return false;
1374
+ }.bind(this));
1375
+
1376
+ if (!oRolesComponentContainer) {
1377
+ this._oRolesDialog.addContent(this._oRolesComponentContainer);
1378
+ }
1379
+ }
1380
+ };
1381
+
1382
+ VariantManagement.prototype._createRolesDialog = function() {
1383
+ if (!this._oRolesDialog) {
1384
+ this._oRolesDialog = new Dialog(this.getId() + "-roledialog", {
1385
+ draggable: true,
1386
+ resizable: true,
1387
+ contentWidth: "40%",
1388
+ title: this._oRb.getText("VARIANT_MANAGEMENT_SELECTROLES_DIALOG"),
1389
+ beginButton: new Button(this.getId() + "-rolesave", {
1390
+ text: this._oRb.getText("VARIANT_MANAGEMENT_SAVE"),
1391
+ type: ButtonType.Emphasized,
1392
+ press: function() {
1393
+ if (!this._checkAndCreateContextInfoChanges(this._oCurrentContextsKey, this._oTextControl)) {
1394
+ return;
1395
+ }
1396
+ this._oRolesDialog.close();
1397
+ }.bind(this)
1398
+ }),
1399
+ endButton: new Button(this.getId() + "-rolecancel", {
1400
+ text: this._oRb.getText("VARIANT_MANAGEMENT_CANCEL"),
1401
+ press: function() {
1402
+ this._oRolesDialog.close();
1403
+ }.bind(this)
1404
+ }),
1405
+ content: [this._oRolesComponentContainer],
1406
+ stretch: Device.system.phone
1407
+ });
1408
+
1409
+ this._oRolesDialog.setParent(this);
1410
+ this._oRolesDialog.addStyleClass("sapUiContentPadding");
1411
+ this._oRolesDialog.addStyleClass(this._sStyleClass);
1412
+
1413
+ this._oRolesDialog.isPopupAdaptationAllowed = function() {
1414
+ return false;
1415
+ };
1416
+ }
1417
+
1418
+ this._checkAndAddRolesContainerToManageDialog();
1419
+ };
1420
+
1421
+ VariantManagement.prototype._openRolesDialog = function(oItem, oTextControl) {
1422
+ this._createRolesDialog();
1423
+
1424
+ this._oCurrentContextsKey = oItem.key;
1425
+ this._oTextControl = oTextControl;
1426
+
1427
+ this._setSelectedContexts(oItem.contexts);
1428
+
1429
+ this._oRolesDialog.open();
1430
+ };
1431
+
1432
+ VariantManagement.prototype._checkAndCreateContextInfoChanges = function(sKey, oTextControl) {
1433
+ if (sKey) {
1434
+ if (this._oRolesComponentContainer) {
1435
+ try {
1436
+ if (!this._isInErrorContexts()) {
1437
+ var mContexts = this._getSelectedContexts();
1438
+
1439
+ var oItem = this._getItemByKey(sKey);
1440
+ if (oItem) {
1441
+ oItem.contexts = mContexts;
1442
+ this._determineRolesSpecificText(mContexts, oTextControl);
1443
+ }
1444
+ } else {
1445
+ return false;
1446
+ }
1447
+ } catch (ex) {
1448
+ return false;
1449
+ }
1450
+ }
1451
+ return true;
1452
+ }
1453
+ return false;
1454
+ };
1455
+
1456
+ VariantManagement.prototype._checkAndAddRolesContainerToSaveAsDialog = function() {
1457
+ if (this._oRolesComponentContainer && this.oSaveAsDialog) {
1458
+ var oRolesComponentContainer = null;
1459
+ this.oSaveAsDialog.getContent().some(function(oContent) {
1460
+ if (oContent === this._oRolesComponentContainer) {
1461
+ oRolesComponentContainer = oContent;
1462
+ return true;
1463
+ }
1464
+
1465
+ return false;
1466
+ }.bind(this));
1467
+
1468
+ this._setSelectedContexts({ role: []});
1469
+ if (!oRolesComponentContainer) {
1470
+ this.oSaveAsDialog.addContent(this._oRolesComponentContainer);
1471
+ }
1472
+ }
1473
+ };
1474
+
1319
1475
  /**
1320
- * Opens the <i>Save as</i> dialog.
1321
- * @public
1322
- * @param {string} sRtaStyleClassName - style-class to be used */
1323
- VariantManagement.prototype.openSaveAsDialogForKeyUser = function (sRtaStyleClassName) {
1324
- this._openSaveAsDialog(sRtaStyleClassName);
1476
+ * Opens the <i>Save As</i> dialog.
1477
+ * @param {string} sRtaStyleClassName - style-class to be used
1478
+ * @param {object} oRolesComponentContainer - component for roles handling
1479
+ */
1480
+ VariantManagement.prototype.openSaveAsDialogForKeyUser = function (sRtaStyleClassName, oRolesComponentContainer) {
1481
+ this._openSaveAsDialog(true);
1325
1482
  this.oSaveAsDialog.addStyleClass(sRtaStyleClassName);
1326
1483
  this._sStyleClass = sRtaStyleClassName; // indicates that dialog is running in key user scenario
1327
1484
 
1328
1485
  this._bShowPublic = this._getShowPublic();
1329
1486
  this._setShowPublic(false);
1487
+
1488
+ if (oRolesComponentContainer) {
1489
+ Promise.all([oRolesComponentContainer]).then(function(vArgs) {
1490
+ this._oRolesComponentContainer = vArgs[0];
1491
+ this._checkAndAddRolesContainerToSaveAsDialog();
1492
+
1493
+ this.oSaveAsDialog.open();
1494
+ }.bind(this));
1495
+ } else {
1496
+ this.oSaveAsDialog.open();
1497
+ }
1330
1498
  };
1331
1499
 
1332
- VariantManagement.prototype._openSaveAsDialog = function() {
1500
+ VariantManagement.prototype._openSaveAsDialog = function(bDoNotOpen) {
1333
1501
  this._createSaveAsDialog();
1334
1502
 
1335
1503
  this.oInputName.setValue(this.getSelectedVariantText(this.getCurrentVariantKey()));
@@ -1356,7 +1524,9 @@ sap.ui.define([
1356
1524
  this.oLabelKey.setVisible(false);
1357
1525
  }
1358
1526
 
1359
- this.oSaveAsDialog.open();
1527
+ if (!bDoNotOpen) {
1528
+ this.oSaveAsDialog.open();
1529
+ }
1360
1530
  };
1361
1531
 
1362
1532
  VariantManagement.prototype._handleVariantSaveAs = function(sNewVariantName) {
@@ -1395,10 +1565,25 @@ sap.ui.define([
1395
1565
  overwrite: false,
1396
1566
  def: this.oDefault.getSelected(),
1397
1567
  execute: this.oExecuteOnSelect.getSelected(),
1398
- "public": this._sStyleClass ? undefined : this.oPublic.getSelected()
1568
+ "public": this._sStyleClass ? undefined : this.oPublic.getSelected(),
1569
+ contexts: this._sStyleClass ? this._getContextInfoChanges() : undefined
1399
1570
  });
1400
1571
  };
1401
1572
 
1573
+ VariantManagement.prototype._getContextInfoChanges = function() {
1574
+ if (this._oRolesComponentContainer) {
1575
+ try {
1576
+ if (!this._isInErrorContexts()) {
1577
+ return this._getSelectedContexts();
1578
+ }
1579
+ } catch (ex) {
1580
+ return null;
1581
+ }
1582
+ }
1583
+
1584
+ return null;
1585
+ };
1586
+
1402
1587
  VariantManagement.prototype._handleVariantSave = function() {
1403
1588
  var oItem = this._getItemByKey(this.getCurrentVariantKey());
1404
1589
 
@@ -1425,16 +1610,41 @@ sap.ui.define([
1425
1610
 
1426
1611
  /**
1427
1612
  * Opens the <i>Manage Views</i> dialog.
1428
- * @public
1429
1613
  * @param {boolean} bCreateAlways - Indicates that if this is set to <code>true</code>, the former dialog will be destroyed before a new one is created
1430
1614
  * @param {string} sClass - style-class to be used
1615
+ * @param {object} oRolesComponentContainer - component for roles handling
1431
1616
  */
1432
- VariantManagement.prototype.openManagementDialog = function(bCreateAlways, sClass) {
1617
+ VariantManagement.prototype.openManagementDialog = function(bCreateAlways, sClass, oRolesComponentContainer) {
1433
1618
  if (bCreateAlways && this.oManagementDialog) {
1434
1619
  this.oManagementDialog.destroy();
1435
1620
  this.oManagementDialog = undefined;
1436
1621
  }
1437
- this._openManagementDialog(sClass);
1622
+
1623
+ if (sClass) {
1624
+ this._sStyleClass = sClass;
1625
+ this._bShowPublic = this._getShowPublic();
1626
+ this._setShowPublic(false);
1627
+ }
1628
+
1629
+ if (oRolesComponentContainer) {
1630
+ Promise.all([oRolesComponentContainer]).then(function(vArgs) {
1631
+ this._oRolesComponentContainer = vArgs[0];
1632
+
1633
+ this._setShowContexts(!!this._oRolesComponentContainer);
1634
+ this._openManagementDialog();
1635
+
1636
+ if (this._sStyleClass) {
1637
+ this.oManagementDialog.addStyleClass(this._sStyleClass);
1638
+ }
1639
+ }.bind(this));
1640
+ } else {
1641
+ this._setShowContexts(false);
1642
+ this._openManagementDialog();
1643
+
1644
+ if (this._sStyleClass) {
1645
+ this.oManagementDialog.addStyleClass(this._sStyleClass);
1646
+ }
1647
+ }
1438
1648
  };
1439
1649
 
1440
1650
  VariantManagement.prototype._triggerSearchInManageDialog = function(oEvent, oManagementTable) {
@@ -1531,6 +1741,19 @@ sap.ui.define([
1531
1741
  path: "/showExecuteOnSelection",
1532
1742
  model: VariantManagement.INNER_MODEL_NAME
1533
1743
  }
1744
+ }), new Column({
1745
+ header: new Text({
1746
+ text: this._oRb.getText("VARIANT_MANAGEMENT_VISIBILITY"),
1747
+ wrappingType: "Hyphenated"
1748
+ }),
1749
+ width: "8rem",
1750
+ demandPopin: true,
1751
+ popinDisplay: PopinDisplay.Inline,
1752
+ minScreenWidth: ScreenSize.Tablet,
1753
+ visible: {
1754
+ path: "/showContexts",
1755
+ model: VariantManagement.INNER_MODEL_NAME
1756
+ }
1534
1757
  }), new Column({
1535
1758
  header: new Text({
1536
1759
  text: this._oRb.getText("VARIANT_MANAGEMENT_AUTHOR")
@@ -1576,6 +1799,7 @@ sap.ui.define([
1576
1799
  this._setShowPublic(this._bShowPublic);
1577
1800
  this.oManagementDialog.removeStyleClass(this._sStyleClass);
1578
1801
  this._sStyleClass = undefined;
1802
+ this._oRolesComponentContainer = null;
1579
1803
  }
1580
1804
  }.bind(this),
1581
1805
  content: [
@@ -1631,6 +1855,7 @@ sap.ui.define([
1631
1855
  var sBindingPath;
1632
1856
  var oNameControl;
1633
1857
  var oExecuteOnSelectCtrl;
1858
+ var oRolesCell;
1634
1859
  var oItem = oContext.getObject();
1635
1860
  if (!oItem) {
1636
1861
  return undefined;
@@ -1666,6 +1891,11 @@ sap.ui.define([
1666
1891
  this._handleManageFavoriteChanged(oEvent.oSource, oEvent.oSource.getBindingContext(this._sModelName).getObject());
1667
1892
  }.bind(this);
1668
1893
 
1894
+ var fRolesPressed = function(oEvent) {
1895
+ var oItem = oEvent.oSource.getBindingContext(this._sModelName).getObject();
1896
+ this._openRolesDialog(oItem, oEvent.oSource.getParent().getItems()[0]);
1897
+ }.bind(this);
1898
+
1669
1899
  if (oItem.rename) {
1670
1900
  oNameControl = new Input({
1671
1901
  liveChange: fLiveChange,
@@ -1712,7 +1942,7 @@ sap.ui.define([
1712
1942
  press: fSelectFav
1713
1943
  });
1714
1944
 
1715
- if (this.getDefaultVariantKey() === oItem.key) {
1945
+ if ((this.getStandardVariantKey() === oItem.key) || (this.getDefaultVariantKey() === oItem.key)) {
1716
1946
  oFavoriteIcon.addStyleClass("sapUiFlVarMngmtFavNonInteractiveColor");
1717
1947
  } else {
1718
1948
  oFavoriteIcon.addStyleClass("sapUiFlVarMngmtFavColor");
@@ -1733,6 +1963,23 @@ sap.ui.define([
1733
1963
  });
1734
1964
  }
1735
1965
 
1966
+ // roles
1967
+ if (this._sStyleClass && (oItem.key !== this.getStandardVariantKey())) {
1968
+ var oText = new Text({ wrapping: false });
1969
+ this._determineRolesSpecificText(oItem.contexts, oText);
1970
+ var oIcon = new Icon({
1971
+ src: "sap-icon://edit",
1972
+ press: fRolesPressed
1973
+ });
1974
+ oIcon.addStyleClass("sapUiFlVarMngmtRolesEdit");
1975
+ oIcon.setTooltip(this._oRb.getText("VARIANT_MANAGEMENT_VISIBILITY_ICON_TT"));
1976
+ oRolesCell = new HBox({
1977
+ items: [oText, oIcon]
1978
+ });
1979
+ } else {
1980
+ oRolesCell = new Text();
1981
+ }
1982
+
1736
1983
  return new ColumnListItem({
1737
1984
  cells: [
1738
1985
  oFavoriteIcon, oNameControl, new Text({
@@ -1754,7 +2001,7 @@ sap.ui.define([
1754
2001
  return oItem.key === sKey;
1755
2002
  }
1756
2003
  }
1757
- }), oExecuteOnSelectCtrl, new Text({
2004
+ }), oExecuteOnSelectCtrl, oRolesCell, new Text({
1758
2005
  text: '{' + this._sModelName + ">author}",
1759
2006
  textAlign: "Begin"
1760
2007
  }), oDeleteButton, new Text({
@@ -1764,7 +2011,7 @@ sap.ui.define([
1764
2011
  });
1765
2012
  };
1766
2013
 
1767
- VariantManagement.prototype._openManagementDialog = function(sClass) {
2014
+ VariantManagement.prototype._openManagementDialog = function() {
1768
2015
  this._createManagementDialog();
1769
2016
 
1770
2017
  if (this.oVariantPopOver) {
@@ -1791,12 +2038,7 @@ sap.ui.define([
1791
2038
  filters: this._getVisibleFilter()
1792
2039
  });
1793
2040
  }
1794
- if (sClass) {
1795
- this._sStyleClass = sClass;
1796
- this._bShowPublic = this._getShowPublic();
1797
- this._setShowPublic(false);
1798
- this.oManagementDialog.addStyleClass(sClass);
1799
- }
2041
+
1800
2042
  this.oManagementDialog.open();
1801
2043
  };
1802
2044
 
@@ -1814,11 +2056,15 @@ sap.ui.define([
1814
2056
  }
1815
2057
  };
1816
2058
 
1817
- VariantManagement.prototype._toggleIconActivityState = function(oIcon, bToInActive) {
2059
+ VariantManagement.prototype._toggleIconActivityState = function(oIcon, oItem, bToInActive) {
1818
2060
  if (!oIcon) {
1819
2061
  return;
1820
2062
  }
1821
2063
 
2064
+ if (oItem.key === this.getStandardVariantKey()) {
2065
+ return;
2066
+ }
2067
+
1822
2068
  if (bToInActive && oIcon.hasStyleClass("sapUiFlVarMngmtFavColor")) {
1823
2069
  oIcon.removeStyleClass("sapUiFlVarMngmtFavColor");
1824
2070
  oIcon.addStyleClass("sapUiFlVarMngmtFavNonInteractiveColor");
@@ -1843,7 +2089,7 @@ sap.ui.define([
1843
2089
  this.setDefaultVariantKey(sKey);
1844
2090
  }
1845
2091
 
1846
- this._toggleIconActivityState(oIcon, bSelected);
2092
+ this._toggleIconActivityState(oIcon, oItem, bSelected);
1847
2093
  }
1848
2094
  };
1849
2095
 
@@ -1858,6 +2104,7 @@ sap.ui.define([
1858
2104
  oItem.title = oItem.originalTitle;
1859
2105
  oItem.favorite = oItem.originalFavorite;
1860
2106
  oItem.executeOnSelection = oItem.originalExecuteOnSelection;
2107
+ oItem.contexts = oItem.originalContexts;
1861
2108
  });
1862
2109
 
1863
2110
  sDefaultVariantKey = this.getOriginalDefaultVariantKey();
@@ -1875,6 +2122,9 @@ sap.ui.define([
1875
2122
  // if (!this._anyInErrorState(this.oManagementTable)) {
1876
2123
  // this.oManagementSave.setEnabled(true);
1877
2124
  // }
2125
+ if (this.getStandardVariantKey() === oItem.key) {
2126
+ return;
2127
+ }
1878
2128
 
1879
2129
  if ((this.getDefaultVariantKey() === oItem.key) && oItem.favorite) {
1880
2130
  return;
@@ -2207,9 +2457,8 @@ sap.ui.define([
2207
2457
  oModel.destroy();
2208
2458
  }
2209
2459
 
2210
- if (this._sStyleClass) {
2211
- this._sStyleClass = undefined;
2212
- }
2460
+ this._oRolesComponentContainer = null;
2461
+ this._sStyleClass = null;
2213
2462
 
2214
2463
  this._fRegisteredApplyAutomaticallyOnStandardVariant = null;
2215
2464
  };