@sapui5/sap.ushell 1.136.3 → 1.138.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.
Files changed (886) hide show
  1. package/package.json +2 -2
  2. package/src/main/js/sap/ushell/.library +1 -1
  3. package/src/main/js/sap/ushell/AppInfoParameters.js +4 -5
  4. package/src/main/js/sap/ushell/ApplicationType/guiResolution.js +677 -695
  5. package/src/main/js/sap/ushell/ApplicationType/systemAlias.js +612 -623
  6. package/src/main/js/sap/ushell/ApplicationType/ui5Resolution.js +14 -16
  7. package/src/main/js/sap/ushell/ApplicationType/urlResolution.js +19 -21
  8. package/src/main/js/sap/ushell/ApplicationType/urlTemplateResolution.js +486 -468
  9. package/src/main/js/sap/ushell/ApplicationType/utils.js +46 -46
  10. package/src/main/js/sap/ushell/ApplicationType/wcfResolution.js +24 -29
  11. package/src/main/js/sap/ushell/ApplicationType/wdaResolution.js +47 -55
  12. package/src/main/js/sap/ushell/ApplicationType.js +34 -34
  13. package/src/main/js/sap/ushell/Config/utils.js +45 -45
  14. package/src/main/js/sap/ushell/Config.js +4 -4
  15. package/src/main/js/sap/ushell/Container.js +359 -357
  16. package/src/main/js/sap/ushell/EventHub.js +216 -212
  17. package/src/main/js/sap/ushell/Fiori20Adapter.js +59 -98
  18. package/src/main/js/sap/ushell/Fiori20AdapterTest.js +23 -26
  19. package/src/main/js/sap/ushell/Layout.js +264 -291
  20. package/src/main/js/sap/ushell/NWBCInterface.js +8 -8
  21. package/src/main/js/sap/ushell/SessionHandler.js +8 -8
  22. package/src/main/js/sap/ushell/System.js +6 -6
  23. package/src/main/js/sap/ushell/TechnicalParameters.js +95 -96
  24. package/src/main/js/sap/ushell/UI5ComponentType.js +1 -1
  25. package/src/main/js/sap/ushell/UIActions.js +189 -188
  26. package/src/main/js/sap/ushell/URLTemplateProcessor/DefinitionParameterSetBuilder.js +21 -24
  27. package/src/main/js/sap/ushell/URLTemplateProcessor/DependencyGraph.js +29 -29
  28. package/src/main/js/sap/ushell/URLTemplateProcessor/Functions.js +96 -96
  29. package/src/main/js/sap/ushell/URLTemplateProcessor/Resolvers.js +58 -55
  30. package/src/main/js/sap/ushell/URLTemplateProcessor/TemplateParameterParser.js +201 -200
  31. package/src/main/js/sap/ushell/URLTemplateProcessor/utils.js +8 -8
  32. package/src/main/js/sap/ushell/URLTemplateProcessor.js +65 -65
  33. package/src/main/js/sap/ushell/Ui5NativeServiceFactory.js +30 -33
  34. package/src/main/js/sap/ushell/Ui5ServiceFactory.js +30 -43
  35. package/src/main/js/sap/ushell/User.js +114 -116
  36. package/src/main/js/sap/ushell/UserActivityLog.js +63 -63
  37. package/src/main/js/sap/ushell/adapters/AppVariantPersonalizationAdapter.js +46 -47
  38. package/src/main/js/sap/ushell/adapters/cdm/ClientSideTargetResolutionAdapter.js +34 -34
  39. package/src/main/js/sap/ushell/adapters/cdm/CommonDataModelAdapter.js +56 -57
  40. package/src/main/js/sap/ushell/adapters/cdm/ConfigurationDefaultsAdapter.js +3 -4
  41. package/src/main/js/sap/ushell/adapters/cdm/ContainerAdapter.js +144 -146
  42. package/src/main/js/sap/ushell/adapters/cdm/LaunchPageAdapter.js +569 -602
  43. package/src/main/js/sap/ushell/adapters/cdm/MenuAdapter.js +25 -25
  44. package/src/main/js/sap/ushell/adapters/cdm/PagesCommonDataModelAdapter.js +120 -119
  45. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationAdapter.js +2 -2
  46. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationV2Adapter.js +3 -3
  47. package/src/main/js/sap/ushell/adapters/cdm/Settings/UserLanguageAndRegion/UserLanguageAndRegion.controller.js +57 -53
  48. package/src/main/js/sap/ushell/adapters/cdm/Settings/UserLanguageAndRegion/UserLanguageAndRegion.view.xml +5 -2
  49. package/src/main/js/sap/ushell/adapters/cdm/Settings/UserLanguageAndRegion/UserLanguageAndRegionEntry.js +6 -6
  50. package/src/main/js/sap/ushell/adapters/cdm/Ui5ComponentLoaderAdapter.js +2 -3
  51. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/modifyHome.js +21 -21
  52. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readCatalogs.js +2 -2
  53. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readHome.js +28 -37
  54. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/uri.transform.js +89 -90
  55. package/src/main/js/sap/ushell/adapters/cdm/_Personalization/internals.js +179 -190
  56. package/src/main/js/sap/ushell/adapters/cdm/util/AppForInbound.js +12 -12
  57. package/src/main/js/sap/ushell/adapters/cdm/util/cdmSiteUtils.js +16 -17
  58. package/src/main/js/sap/ushell/adapters/cdm/v3/AdapterBase.js +144 -151
  59. package/src/main/js/sap/ushell/adapters/cdm/v3/FlpLaunchPageAdapter.js +527 -526
  60. package/src/main/js/sap/ushell/adapters/cdm/v3/LaunchPageAdapter.js +3 -3
  61. package/src/main/js/sap/ushell/adapters/cdm/v3/StaticGroupsAdapter.js +2 -2
  62. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readApplications.js +6 -6
  63. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readCatalogs.js +3 -4
  64. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readHome.js +22 -28
  65. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readPages.js +9 -9
  66. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readUtils.js +27 -27
  67. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readVisualizations.js +15 -18
  68. package/src/main/js/sap/ushell/adapters/cdm/v3/utilsCdm.js +67 -67
  69. package/src/main/js/sap/ushell/adapters/cep/MenuAdapter.js +27 -76
  70. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionAdapter.js +3 -3
  71. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionInternalAdapter.js +25 -25
  72. package/src/main/js/sap/ushell/adapters/cep/SearchCEPAdapter.js +42 -43
  73. package/src/main/js/sap/ushell/adapters/cflp/UserDefaultParameterPersistenceAdapter.js +45 -45
  74. package/src/main/js/sap/ushell/adapters/local/AdapterContainer.js +29 -29
  75. package/src/main/js/sap/ushell/adapters/local/AppStateAdapter.js +41 -37
  76. package/src/main/js/sap/ushell/adapters/local/ClientSideTargetResolutionAdapter.js +25 -28
  77. package/src/main/js/sap/ushell/adapters/local/ContainerAdapter.js +70 -72
  78. package/src/main/js/sap/ushell/adapters/local/FlpLaunchPageAdapter.js +450 -474
  79. package/src/main/js/sap/ushell/adapters/local/LaunchPageAdapter.js +3 -3
  80. package/src/main/js/sap/ushell/adapters/local/MenuAdapter.js +20 -22
  81. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionAdapter.js +3 -3
  82. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionInternalAdapter.js +44 -43
  83. package/src/main/js/sap/ushell/adapters/local/PageBuildingAdapter.js +12 -12
  84. package/src/main/js/sap/ushell/adapters/local/PagePersistenceAdapter.js +16 -16
  85. package/src/main/js/sap/ushell/adapters/local/PersonalizationAdapter.js +19 -17
  86. package/src/main/js/sap/ushell/adapters/local/PersonalizationV2Adapter.js +3 -3
  87. package/src/main/js/sap/ushell/adapters/local/SearchAdapter.js +5 -6
  88. package/src/main/js/sap/ushell/adapters/local/SearchCEPAdapter.js +10 -10
  89. package/src/main/js/sap/ushell/adapters/local/SupportTicketAdapter.js +5 -5
  90. package/src/main/js/sap/ushell/adapters/local/Ui5ComponentLoaderAdapter.js +2 -3
  91. package/src/main/js/sap/ushell/adapters/local/UserDefaultParameterPersistenceAdapter.js +26 -26
  92. package/src/main/js/sap/ushell/adapters/local/UserInfoAdapter.js +28 -29
  93. package/src/main/js/sap/ushell/api/BootstrapObserver.js +2 -3
  94. package/src/main/js/sap/ushell/api/Copilot.js +2 -4
  95. package/src/main/js/sap/ushell/api/DWS.js +2 -3
  96. package/src/main/js/sap/ushell/api/Inbox.js +2 -3
  97. package/src/main/js/sap/ushell/api/NewExperience/CustomOverflowListItem.js +2 -3
  98. package/src/main/js/sap/ushell/api/NewExperience.js +8 -8
  99. package/src/main/js/sap/ushell/api/RTA.js +27 -59
  100. package/src/main/js/sap/ushell/api/S4MyHome.js +3 -3
  101. package/src/main/js/sap/ushell/api/SAPBusinessClient.js +6 -36
  102. package/src/main/js/sap/ushell/api/common/ComponentInstantiation.js +5 -8
  103. package/src/main/js/sap/ushell/api/workpage/Designtime.js +2 -3
  104. package/src/main/js/sap/ushell/api/workpage/Runtime.js +2 -4
  105. package/src/main/js/sap/ushell/appIntegration/AppLifeCycle/KeepAliveMode.js +2 -2
  106. package/src/main/js/sap/ushell/appIntegration/AppLifeCycle.js +69 -88
  107. package/src/main/js/sap/ushell/appIntegration/ApplicationContainer.js +2 -4
  108. package/src/main/js/sap/ushell/appIntegration/ApplicationContainerCache.js +9 -9
  109. package/src/main/js/sap/ushell/appIntegration/ApplicationContainerRenderer.js +0 -1
  110. package/src/main/js/sap/ushell/appIntegration/ApplicationHandle.js +2 -2
  111. package/src/main/js/sap/ushell/appIntegration/IframeApplicationContainer.js +1 -3
  112. package/src/main/js/sap/ushell/appIntegration/IframeApplicationContainerRenderer.js +2 -4
  113. package/src/main/js/sap/ushell/appIntegration/KeepAliveApps.js +6 -6
  114. package/src/main/js/sap/ushell/appIntegration/PostMessageManager/AppruntimeHandler.js +7 -7
  115. package/src/main/js/sap/ushell/appIntegration/PostMessageManager/ExtensionItems.js +2 -2
  116. package/src/main/js/sap/ushell/appIntegration/PostMessageManager/LifecycleHandler.js +58 -59
  117. package/src/main/js/sap/ushell/appIntegration/PostMessageManager/MessageBrokerHandler.js +2 -3
  118. package/src/main/js/sap/ushell/appIntegration/PostMessageManager/NWBCHandler.js +2 -2
  119. package/src/main/js/sap/ushell/appIntegration/PostMessageManager/ServiceHandler.js +91 -91
  120. package/src/main/js/sap/ushell/appIntegration/UI5ApplicationContainerRenderer.js +0 -1
  121. package/src/main/js/sap/ushell/appIntegration/contracts/EmbeddedUI5Handler.js +3 -4
  122. package/src/main/js/sap/ushell/appIntegration/contracts/StatefulContainerV1Handler.js +3 -3
  123. package/src/main/js/sap/ushell/appIntegration/contracts/StatefulContainerV2Handler.js +1 -2
  124. package/src/main/js/sap/ushell/appRuntime/neo/AppInfoService.js +85 -74
  125. package/src/main/js/sap/ushell/appRuntime/neo/AppRuntimeNeo.js +2 -2
  126. package/src/main/js/sap/ushell/appRuntime/neo/ProxyAppUtils.js +8 -9
  127. package/src/main/js/sap/ushell/appRuntime/ui5/AppCommunicationMgr.js +57 -57
  128. package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntime.js +660 -662
  129. package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntimeContext.js +14 -14
  130. package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntimeService.js +11 -2
  131. package/src/main/js/sap/ushell/appRuntime/ui5/SessionHandlerAgent.js +21 -25
  132. package/src/main/js/sap/ushell/appRuntime/ui5/performance/FesrEnhancer.js +11 -5
  133. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/AppLifeCycleUtils.js +31 -31
  134. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/BaseRTAPluginStatus.js +9 -10
  135. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/CheckConditions.js +56 -56
  136. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/Renderer.js +34 -34
  137. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/Trigger.js +222 -249
  138. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/rtaAgent/Component.js +213 -207
  139. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/rtaShell/Component.js +121 -129
  140. package/src/main/js/sap/ushell/appRuntime/ui5/plugins/scriptAgent/Component.js +19 -19
  141. package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/AccessKeysAgent.js +9 -9
  142. package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/Renderer.js +84 -29
  143. package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/RendererExtensions.js +34 -34
  144. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppConfiguration.js +12 -12
  145. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycle.js +7 -3
  146. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycleAgent.js +127 -102
  147. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppState.js +11 -6
  148. package/src/main/js/sap/ushell/appRuntime/ui5/services/Bookmark.js +35 -29
  149. package/src/main/js/sap/ushell/appRuntime/ui5/services/BookmarkV2.js +30 -26
  150. package/src/main/js/sap/ushell/appRuntime/ui5/services/CommonDataModel.js +8 -3
  151. package/src/main/js/sap/ushell/appRuntime/ui5/services/Container.js +26 -26
  152. package/src/main/js/sap/ushell/appRuntime/ui5/services/CrossApplicationNavigation.js +41 -38
  153. package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension/Item.js +4 -4
  154. package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension.js +9 -23
  155. package/src/main/js/sap/ushell/appRuntime/ui5/services/FlpLaunchPage.js +3 -3
  156. package/src/main/js/sap/ushell/appRuntime/ui5/services/FrameBoundExtension.js +3 -3
  157. package/src/main/js/sap/ushell/appRuntime/ui5/services/LaunchPage.js +7 -3
  158. package/src/main/js/sap/ushell/appRuntime/ui5/services/MessageBroker.js +16 -17
  159. package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolution.js +21 -17
  160. package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolutionInternal.js +22 -17
  161. package/src/main/js/sap/ushell/appRuntime/ui5/services/Navigation.js +31 -28
  162. package/src/main/js/sap/ushell/appRuntime/ui5/services/ReferenceResolver.js +4 -4
  163. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigation.js +10 -6
  164. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigationInternal.js +10 -6
  165. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellUIService.js +9 -9
  166. package/src/main/js/sap/ushell/appRuntime/ui5/services/UserDefaultParameters.js +1 -1
  167. package/src/main/js/sap/ushell/appRuntime/ui5/services/UserInfo.js +10 -6
  168. package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/ContainerAdapter.js +40 -43
  169. package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/EmptyAdapter.js +6 -6
  170. package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/Ui5ComponentLoaderAdapter.js +2 -3
  171. package/src/main/js/sap/ushell/appRuntime/ui5/ui/UIProxy.js +4 -4
  172. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/EventProcessor.js +9 -9
  173. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/FLPLoader.js +8 -9
  174. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/FLPScheduler.js +40 -42
  175. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/LoadingConfiguration.json +1 -1
  176. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/StepConfiguration.json +1 -6
  177. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/logger.js +13 -13
  178. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/state.js +19 -19
  179. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent.js +23 -32
  180. package/src/main/js/sap/ushell/bootstrap/cdm/cdm-def-dev.js +3 -4
  181. package/src/main/js/sap/ushell/bootstrap/cdm/cdm-def-loader.js +1 -1
  182. package/src/main/js/sap/ushell/bootstrap/cdm/cdm-def.js +3 -3
  183. package/src/main/js/sap/ushell/bootstrap/cdm/cdm.boot.task.js +3 -3
  184. package/src/main/js/sap/ushell/bootstrap/cdm/cdm.constants.js +5 -4
  185. package/src/main/js/sap/ushell/bootstrap/cdm.js +11 -12
  186. package/src/main/js/sap/ushell/bootstrap/common/common.boot.path.js +1 -1
  187. package/src/main/js/sap/ushell/bootstrap/common/common.boot.script.js +2 -2
  188. package/src/main/js/sap/ushell/bootstrap/common/common.boot.task.js +3 -3
  189. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5.extractLibs.js +1 -2
  190. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5.js +13 -13
  191. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5datetimeformat.js +9 -9
  192. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5language.js +3 -3
  193. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5theme.js +13 -15
  194. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ushell.js +4 -9
  195. package/src/main/js/sap/ushell/bootstrap/common/common.constants.js +1 -1
  196. package/src/main/js/sap/ushell/bootstrap/common/common.create.configcontract.core.js +0 -14
  197. package/src/main/js/sap/ushell/bootstrap/common/common.debug.mode.js +3 -3
  198. package/src/main/js/sap/ushell/bootstrap/common/common.load.bootstrapExtension.js +3 -4
  199. package/src/main/js/sap/ushell/bootstrap/common/common.load.core-min.js +5 -7
  200. package/src/main/js/sap/ushell/bootstrap/common/common.load.launchpad.js +6 -8
  201. package/src/main/js/sap/ushell/bootstrap/common/common.load.model.js +6 -6
  202. package/src/main/js/sap/ushell/bootstrap/common/common.load.script.js +3 -3
  203. package/src/main/js/sap/ushell/bootstrap/common/common.override.registermodulepath.js +37 -38
  204. package/src/main/js/sap/ushell/bootstrap/common/common.read.metatags.js +6 -6
  205. package/src/main/js/sap/ushell/bootstrap/common/common.read.ui5theme.from.config.js +11 -11
  206. package/src/main/js/sap/ushell/bootstrap/common/common.read.ushell.config.from.url.js +22 -25
  207. package/src/main/js/sap/ushell/bootstrap/common/common.util.js +10 -12
  208. package/src/main/js/sap/ushell/bootstrap/sandbox2/sandbox.js +11 -10
  209. package/src/main/js/sap/ushell/bootstrap/sandbox2/sandboxBootTask.js +1 -1
  210. package/src/main/js/sap/ushell/bootstrap/sandbox2/sandboxConfig.json +8 -24
  211. package/src/main/js/sap/ushell/bootstrap/sandbox2.js +13 -13
  212. package/src/main/js/sap/ushell/bootstrap/ui5loader-config.js +7 -7
  213. package/src/main/js/sap/ushell/components/appfinder/manifest.json +1 -1
  214. package/src/main/js/sap/ushell/components/cards/Card.controller.js +2 -2
  215. package/src/main/js/sap/ushell/components/cepsearchresult/app/Component.js +57 -30
  216. package/src/main/js/sap/ushell/components/cepsearchresult/app/Main.controller.js +330 -312
  217. package/src/main/js/sap/ushell/components/cepsearchresult/app/cards/searchresultwidget/Component.js +171 -154
  218. package/src/main/js/sap/ushell/components/cepsearchresult/app/cards/searchresultwidget/Config.js +236 -233
  219. package/src/main/js/sap/ushell/components/cepsearchresult/app/cards/searchresultwidget/Extension.js +35 -33
  220. package/src/main/js/sap/ushell/components/cepsearchresult/app/cards/searchresultwidget/manifest.json +4 -1
  221. package/src/main/js/sap/ushell/components/cepsearchresult/app/manifest.json +4 -6
  222. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/AdvancedFormatters.js +64 -60
  223. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/Edition.js +139 -141
  224. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/EditionAdvanced.js +8 -9
  225. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/EditionStandard.js +4 -4
  226. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/appendStyleVars.js +37 -34
  227. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/Category.js +694 -646
  228. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/Highlighter.js +220 -223
  229. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/Paginator.css +2 -2
  230. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/Paginator.js +258 -225
  231. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/All.js +58 -49
  232. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/Application.js +200 -203
  233. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/Event.js +129 -131
  234. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/People.js +91 -92
  235. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/Workpage.js +18 -18
  236. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n.properties +5 -0
  237. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_ar.properties +3 -0
  238. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_bg.properties +3 -0
  239. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_ca.properties +3 -0
  240. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_cnr.properties +3 -0
  241. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_cs.properties +3 -0
  242. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_cy.properties +3 -0
  243. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_da.properties +3 -0
  244. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_de.properties +3 -0
  245. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_el.properties +3 -0
  246. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_en.properties +3 -0
  247. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_en_GB.properties +3 -0
  248. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_en_US_saprigi.properties +3 -0
  249. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_es.properties +3 -0
  250. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_es_MX.properties +3 -0
  251. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_et.properties +3 -0
  252. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_fi.properties +3 -0
  253. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_fr.properties +3 -0
  254. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_fr_CA.properties +3 -0
  255. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_hi.properties +3 -0
  256. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_hr.properties +3 -0
  257. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_hu.properties +3 -0
  258. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_id.properties +3 -0
  259. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_it.properties +3 -0
  260. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_iw.properties +3 -0
  261. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_ja.properties +3 -0
  262. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_kk.properties +3 -0
  263. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_ko.properties +3 -0
  264. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_lt.properties +3 -0
  265. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_lv.properties +3 -0
  266. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_mk.properties +3 -0
  267. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_ms.properties +3 -0
  268. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_nl.properties +3 -0
  269. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_no.properties +3 -0
  270. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_pl.properties +3 -0
  271. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_pt.properties +3 -0
  272. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_pt_PT.properties +3 -0
  273. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_ro.properties +3 -0
  274. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_ru.properties +3 -0
  275. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_sh.properties +3 -0
  276. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_sk.properties +3 -0
  277. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_sl.properties +3 -0
  278. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_sr.properties +3 -0
  279. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_sv.properties +3 -0
  280. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_th.properties +3 -0
  281. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_tr.properties +3 -0
  282. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_uk.properties +3 -0
  283. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_vi.properties +3 -0
  284. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_zh_CN.properties +3 -0
  285. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/i18n/i18n_zh_TW.properties +3 -0
  286. package/src/main/js/sap/ushell/components/cepsearchresult/app/util/resources.js +30 -0
  287. package/src/main/js/sap/ushell/components/contentFinder/CatalogService.js +3 -3
  288. package/src/main/js/sap/ushell/components/contentFinder/Component.js +34 -15
  289. package/src/main/js/sap/ushell/components/contentFinder/controller/AppSearch.controller.js +22 -12
  290. package/src/main/js/sap/ushell/components/contentFinder/controller/ContentFinderDialog.controller.js +4 -5
  291. package/src/main/js/sap/ushell/components/contentFinder/dialog/Component.js +26 -5
  292. package/src/main/js/sap/ushell/components/contentFinder/dialog/manifest.json +5 -2
  293. package/src/main/js/sap/ushell/components/contentFinder/manifest.json +5 -7
  294. package/src/main/js/sap/ushell/components/contentFinder/model/formatter.js +22 -8
  295. package/src/main/js/sap/ushell/components/contentFinder/view/AppSearch.view.xml +6 -5
  296. package/src/main/js/sap/ushell/components/contentFinder/view/AppSearchBox.fragment.xml +1 -1
  297. package/src/main/js/sap/ushell/components/contentFinder/view/AppSearchCategoryTreeTable.fragment.xml +10 -4
  298. package/src/main/js/sap/ushell/components/contentFinderStandalone/Component.js +31 -10
  299. package/src/main/js/sap/ushell/components/contentFinderStandalone/controller/ContentFinderStandalone.controller.js +214 -214
  300. package/src/main/js/sap/ushell/components/contentFinderStandalone/manifest.json +6 -9
  301. package/src/main/js/sap/ushell/components/factsheet/Component.js +1 -1
  302. package/src/main/js/sap/ushell/components/factsheet/controls/PictureViewer.js +6 -6
  303. package/src/main/js/sap/ushell/components/factsheet/factory/ThingInspector.js +4 -4
  304. package/src/main/js/sap/ushell/components/homepage/ActionMode.js +1 -1
  305. package/src/main/js/sap/ushell/components/homepage/Component.js +1 -1
  306. package/src/main/js/sap/ushell/components/homepage/DashboardContent.controller.js +4 -4
  307. package/src/main/js/sap/ushell/components/homepage/DashboardContent.view.js +1 -1
  308. package/src/main/js/sap/ushell/components/homepage/DashboardGroupsBox.js +1 -1
  309. package/src/main/js/sap/ushell/components/homepage/DashboardUIActions.js +2 -2
  310. package/src/main/js/sap/ushell/components/homepage/manifest.json +1 -1
  311. package/src/main/js/sap/ushell/components/pages/ActionMode.js +1 -1
  312. package/src/main/js/sap/ushell/components/pages/Component.js +28 -3
  313. package/src/main/js/sap/ushell/components/pages/MyHomeImport.js +1 -1
  314. package/src/main/js/sap/ushell/components/pages/StateManager.js +4 -3
  315. package/src/main/js/sap/ushell/components/pages/controller/ImportDialog.controller.js +182 -202
  316. package/src/main/js/sap/ushell/components/pages/controller/MyHome.controller.js +3 -3
  317. package/src/main/js/sap/ushell/components/pages/controller/PageRuntime.controller.js +1 -1
  318. package/src/main/js/sap/ushell/components/pages/controller/PagesAndSpaceId.js +10 -7
  319. package/src/main/js/sap/ushell/components/pages/manifest.json +2 -2
  320. package/src/main/js/sap/ushell/components/runtimeSwitcher/controller/RuntimeSwitcher.controller.js +1 -1
  321. package/src/main/js/sap/ushell/components/runtimeSwitcher/manifest.json +1 -1
  322. package/src/main/js/sap/ushell/components/shell/FloatingContainer/manifest.json +1 -1
  323. package/src/main/js/sap/ushell/components/shell/MenuBar/Component.js +26 -3
  324. package/src/main/js/sap/ushell/components/shell/MenuBar/controller/MenuBar.controller.js +3 -1
  325. package/src/main/js/sap/ushell/components/shell/MenuBar/manifest.json +2 -2
  326. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenu.controller.js +13 -31
  327. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenuButton.controller.js +1 -1
  328. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/manifest.json +1 -1
  329. package/src/main/js/sap/ushell/components/shell/Notifications/Component.js +5 -6
  330. package/src/main/js/sap/ushell/components/shell/Notifications/NotificationsListPopoverContent.view.xml +1 -1
  331. package/src/main/js/sap/ushell/components/shell/ProductSwitch/Component.js +1 -1
  332. package/src/main/js/sap/ushell/components/shell/Search/ESearch.js +3 -0
  333. package/src/main/js/sap/ushell/components/shell/Search/manifest.json +1 -1
  334. package/src/main/js/sap/ushell/components/shell/SearchCEP/Component.js +17 -15
  335. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchCEP.controller.js +3 -3
  336. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/FrequentActivityProvider.js +1 -1
  337. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/RecentSearchProvider.js +1 -1
  338. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchProvider.js +84 -67
  339. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchServiceProvider.js +1 -1
  340. package/src/main/js/sap/ushell/components/shell/Settings/Component.js +1 -1
  341. package/src/main/js/sap/ushell/components/shell/Settings/ContentWrapper.fragment.xml +1 -1
  342. package/src/main/js/sap/ushell/components/shell/Settings/UserSettings.controller.js +10 -23
  343. package/src/main/js/sap/ushell/components/shell/Settings/UserSettings.view.xml +59 -69
  344. package/src/main/js/sap/ushell/components/shell/Settings/appearance/Appearance.controller.js +1 -2
  345. package/src/main/js/sap/ushell/components/shell/Settings/homepage/HomepageEntry.js +1 -1
  346. package/src/main/js/sap/ushell/components/shell/Settings/homepage/HomepageSetting.view.xml +28 -35
  347. package/src/main/js/sap/ushell/components/shell/Settings/notifications/NotificationsSetting.controller.js +1 -1
  348. package/src/main/js/sap/ushell/components/shell/Settings/notifications/NotificationsSetting.view.xml +5 -9
  349. package/src/main/js/sap/ushell/components/shell/Settings/spaces/SpacesSetting.controller.js +1 -1
  350. package/src/main/js/sap/ushell/components/shell/Settings/userAccount/UserAccountSelector.controller.js +1 -2
  351. package/src/main/js/sap/ushell/components/shell/Settings/userAccount/UserAccountSelector.view.xml +2 -2
  352. package/src/main/js/sap/ushell/components/shell/Settings/userAccount/UserAccountSetting.fragment.xml +2 -4
  353. package/src/main/js/sap/ushell/components/shell/Settings/userActivities/UserActivitiesSetting.controller.js +1 -1
  354. package/src/main/js/sap/ushell/components/shell/Settings/userActivities/UserActivitiesSetting.view.xml +6 -12
  355. package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/controller/UserDefaultsSetting.controller.js +1 -1
  356. package/src/main/js/sap/ushell/components/shell/Settings/userLanguageRegion/LanguageRegionSelector.view.xml +2 -4
  357. package/src/main/js/sap/ushell/components/shell/ShellBar/Component.js +17 -10
  358. package/src/main/js/sap/ushell/components/shell/ShellBar/controller/ShellBar.controller.js +23 -115
  359. package/src/main/js/sap/ushell/components/shell/ShellBar/manifest.json +4 -3
  360. package/src/main/js/sap/ushell/components/shell/ShellBar/view/ShellBar.view.xml +2 -7
  361. package/src/main/js/sap/ushell/components/shell/SideNavigation/Component.js +4 -1
  362. package/src/main/js/sap/ushell/components/shell/SideNavigation/controller/SideNavigation.controller.js +0 -31
  363. package/src/main/js/sap/ushell/components/shell/SideNavigation/manifest.json +5 -2
  364. package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/Favorites.js +1 -1
  365. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/Component.js +1 -1
  366. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenu.controller.js +14 -19
  367. package/src/main/js/sap/ushell/components/shell/UserImage/Component.js +1 -1
  368. package/src/main/js/sap/ushell/components/tiles/action/ActionTile.controller.js +16 -16
  369. package/src/main/js/sap/ushell/components/tiles/action/Configuration.controller.js +20 -20
  370. package/src/main/js/sap/ushell/components/tiles/applauncher/Configuration.controller.js +18 -18
  371. package/src/main/js/sap/ushell/components/tiles/applauncher/StaticTile.controller.js +15 -15
  372. package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/Configuration.controller.js +18 -18
  373. package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/DynamicTile.controller.js +20 -20
  374. package/src/main/js/sap/ushell/components/tiles/cdm/applauncher/manifest.json +1 -6
  375. package/src/main/js/sap/ushell/components/tiles/cdm/applauncherdynamic/DynamicTile.controller.js +2 -2
  376. package/src/main/js/sap/ushell/components/tiles/cdm/applauncherdynamic/manifest.json +1 -6
  377. package/src/main/js/sap/ushell/components/tiles/generic.js +8 -8
  378. package/src/main/js/sap/ushell/components/tiles/indicatorArea/AreaChartTile.controller.js +6 -8
  379. package/src/main/js/sap/ushell/components/tiles/indicatorDual/DualTile.controller.js +2 -2
  380. package/src/main/js/sap/ushell/components/tiles/indicatorTileUtils/smartBusinessUtil.js +5 -5
  381. package/src/main/js/sap/ushell/components/tiles/indicatorcomparison/ComparisonTile.controller.js +2 -6
  382. package/src/main/js/sap/ushell/components/tiles/indicatorcontribution/ContributionTile.controller.js +2 -4
  383. package/src/main/js/sap/ushell/components/tiles/utils.js +46 -22
  384. package/src/main/js/sap/ushell/components/visualizationOrganizer/Component.js +1 -1
  385. package/src/main/js/sap/ushell/components/workPageBuilder/Component.js +2 -3
  386. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.accessibility.js +1 -1
  387. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.controller.js +1 -1
  388. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPage.js +1 -1
  389. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageButton.js +1 -1
  390. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageCell.js +1 -1
  391. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumn.js +1 -1
  392. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnResizer.js +1 -1
  393. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRow.js +1 -1
  394. package/src/main/js/sap/ushell/components/workPageBuilder/manifest.json +1 -1
  395. package/src/main/js/sap/ushell/components/workPageRuntime/Component.js +1 -1
  396. package/src/main/js/sap/ushell/components/workPageRuntime/controller/WorkPageRuntime.controller.js +8 -10
  397. package/src/main/js/sap/ushell/components/workPageRuntime/manifest.json +1 -1
  398. package/src/main/js/sap/ushell/designtime/ApplicationContainer.designtime.js +2 -2
  399. package/src/main/js/sap/ushell/functionBindPrototype.js +1 -1
  400. package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/Avatar.js +1 -7
  401. package/src/main/js/sap/ushell/gen/ui5/webcomponents/dist/MenuItem.js +0 -10
  402. package/src/main/js/sap/ushell/gen/ui5/webcomponents-base.js +1 -1
  403. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori.js +1 -81
  404. package/src/main/js/sap/ushell/gen/ui5/webcomponents.js +2 -80
  405. package/src/main/js/sap/ushell/library.js +5 -5
  406. package/src/main/js/sap/ushell/modules/NavigationMenu.js +3 -4
  407. package/src/main/js/sap/ushell/navigationMode.js +40 -43
  408. package/src/main/js/sap/ushell/override.js +53 -53
  409. package/src/main/js/sap/ushell/performance/FesrEnhancer.js +7 -9
  410. package/src/main/js/sap/ushell/performance/ShellAnalytics.js +48 -52
  411. package/src/main/js/sap/ushell/performance/StatisticalRecord.js +9 -11
  412. package/src/main/js/sap/ushell/plugins/BaseRTAPlugin.js +106 -107
  413. package/src/main/js/sap/ushell/plugins/appwarmup/Component.js +17 -17
  414. package/src/main/js/sap/ushell/plugins/appwarmup/ShellUIService.js +1 -1
  415. package/src/main/js/sap/ushell/plugins/appwarmup/manifest.json +0 -4
  416. package/src/main/js/sap/ushell/plugins/ghostapp/Component.js +1 -1
  417. package/src/main/js/sap/ushell/plugins/ghostapp/FakeModel.js +5 -5
  418. package/src/main/js/sap/ushell/plugins/ghostapp/manifest.json +1 -2
  419. package/src/main/js/sap/ushell/plugins/rta/Component.js +51 -51
  420. package/src/main/js/sap/ushell/plugins/rta/manifest.json +0 -4
  421. package/src/main/js/sap/ushell/plugins/rta-personalize/Component.js +3 -3
  422. package/src/main/js/sap/ushell/plugins/rta-personalize/manifest.json +0 -4
  423. package/src/main/js/sap/ushell/renderer/AccessKeysHandler.js +81 -79
  424. package/src/main/js/sap/ushell/renderer/History.js +6 -6
  425. package/src/main/js/sap/ushell/renderer/LogonFrameProvider.js +27 -27
  426. package/src/main/js/sap/ushell/renderer/NavContainerRenderer.js +3 -3
  427. package/src/main/js/sap/ushell/renderer/Renderer.js +77 -74
  428. package/src/main/js/sap/ushell/renderer/RendererAppContainer.js +5 -5
  429. package/src/main/js/sap/ushell/renderer/Shell.controller.js +28 -28
  430. package/src/main/js/sap/ushell/renderer/Shell.view.js +63 -91
  431. package/src/main/js/sap/ushell/renderer/ShellLayout.js +0 -12
  432. package/src/main/js/sap/ushell/renderer/allMyApps/AllMyApps.controller.js +100 -100
  433. package/src/main/js/sap/ushell/renderer/allMyApps/AllMyAppsManager.js +103 -93
  434. package/src/main/js/sap/ushell/renderer/rendererTargetWrapper/Component.js +2 -2
  435. package/src/main/js/sap/ushell/renderer/rendererTargetWrapper/RendererTarget.controller.js +3 -3
  436. package/src/main/js/sap/ushell/renderer/resources/resources.properties +4 -2
  437. package/src/main/js/sap/ushell/renderer/resources/resources_ar.properties +0 -1
  438. package/src/main/js/sap/ushell/renderer/resources/resources_bg.properties +0 -1
  439. package/src/main/js/sap/ushell/renderer/resources/resources_ca.properties +0 -1
  440. package/src/main/js/sap/ushell/renderer/resources/resources_cnr.properties +0 -1
  441. package/src/main/js/sap/ushell/renderer/resources/resources_cs.properties +0 -1
  442. package/src/main/js/sap/ushell/renderer/resources/resources_cy.properties +0 -1
  443. package/src/main/js/sap/ushell/renderer/resources/resources_da.properties +0 -1
  444. package/src/main/js/sap/ushell/renderer/resources/resources_de.properties +0 -1
  445. package/src/main/js/sap/ushell/renderer/resources/resources_el.properties +0 -1
  446. package/src/main/js/sap/ushell/renderer/resources/resources_en.properties +0 -1
  447. package/src/main/js/sap/ushell/renderer/resources/resources_en_GB.properties +0 -1
  448. package/src/main/js/sap/ushell/renderer/resources/resources_en_US_saprigi.properties +0 -1
  449. package/src/main/js/sap/ushell/renderer/resources/resources_es.properties +0 -1
  450. package/src/main/js/sap/ushell/renderer/resources/resources_es_MX.properties +0 -1
  451. package/src/main/js/sap/ushell/renderer/resources/resources_et.properties +0 -1
  452. package/src/main/js/sap/ushell/renderer/resources/resources_fi.properties +0 -1
  453. package/src/main/js/sap/ushell/renderer/resources/resources_fr.properties +0 -1
  454. package/src/main/js/sap/ushell/renderer/resources/resources_fr_CA.properties +0 -1
  455. package/src/main/js/sap/ushell/renderer/resources/resources_hi.properties +0 -1
  456. package/src/main/js/sap/ushell/renderer/resources/resources_hr.properties +0 -1
  457. package/src/main/js/sap/ushell/renderer/resources/resources_hu.properties +0 -1
  458. package/src/main/js/sap/ushell/renderer/resources/resources_id.properties +0 -1
  459. package/src/main/js/sap/ushell/renderer/resources/resources_it.properties +0 -1
  460. package/src/main/js/sap/ushell/renderer/resources/resources_iw.properties +0 -1
  461. package/src/main/js/sap/ushell/renderer/resources/resources_ja.properties +0 -1
  462. package/src/main/js/sap/ushell/renderer/resources/resources_kk.properties +0 -1
  463. package/src/main/js/sap/ushell/renderer/resources/resources_ko.properties +0 -1
  464. package/src/main/js/sap/ushell/renderer/resources/resources_lt.properties +0 -1
  465. package/src/main/js/sap/ushell/renderer/resources/resources_lv.properties +0 -1
  466. package/src/main/js/sap/ushell/renderer/resources/resources_mk.properties +0 -1
  467. package/src/main/js/sap/ushell/renderer/resources/resources_ms.properties +0 -1
  468. package/src/main/js/sap/ushell/renderer/resources/resources_nl.properties +0 -1
  469. package/src/main/js/sap/ushell/renderer/resources/resources_no.properties +0 -1
  470. package/src/main/js/sap/ushell/renderer/resources/resources_pl.properties +0 -1
  471. package/src/main/js/sap/ushell/renderer/resources/resources_pt.properties +0 -1
  472. package/src/main/js/sap/ushell/renderer/resources/resources_pt_PT.properties +0 -1
  473. package/src/main/js/sap/ushell/renderer/resources/resources_ro.properties +0 -1
  474. package/src/main/js/sap/ushell/renderer/resources/resources_ru.properties +0 -1
  475. package/src/main/js/sap/ushell/renderer/resources/resources_sh.properties +0 -1
  476. package/src/main/js/sap/ushell/renderer/resources/resources_sk.properties +0 -1
  477. package/src/main/js/sap/ushell/renderer/resources/resources_sl.properties +0 -1
  478. package/src/main/js/sap/ushell/renderer/resources/resources_sr.properties +0 -1
  479. package/src/main/js/sap/ushell/renderer/resources/resources_sv.properties +0 -1
  480. package/src/main/js/sap/ushell/renderer/resources/resources_th.properties +0 -1
  481. package/src/main/js/sap/ushell/renderer/resources/resources_tr.properties +0 -1
  482. package/src/main/js/sap/ushell/renderer/resources/resources_uk.properties +0 -1
  483. package/src/main/js/sap/ushell/renderer/resources/resources_vi.properties +0 -1
  484. package/src/main/js/sap/ushell/renderer/resources/resources_zh_CN.properties +0 -1
  485. package/src/main/js/sap/ushell/renderer/resources/resources_zh_TW.properties +0 -1
  486. package/src/main/js/sap/ushell/renderer/search/searchComponent/Component.js +5 -5
  487. package/src/main/js/sap/ushell/renderer/search/searchComponent/controller/CEPSearchApp.controller.js +3 -5
  488. package/src/main/js/sap/ushell/renderer/search/searchComponent/controller/SearchApp.controller.js +5 -8
  489. package/src/main/js/sap/ushell/renderer/search/searchComponent/manifest.json +1 -1
  490. package/src/main/js/sap/ushell/renderer/search/searchComponent/view/CEPSearchApp.view.js +2 -2
  491. package/src/main/js/sap/ushell/renderer/search/searchComponent/view/SearchApp.view.js +2 -2
  492. package/src/main/js/sap/ushell/renderer/search/util.js +5 -6
  493. package/src/main/js/sap/ushell/renderer/shellHeader/ShellHeader.controller.js +42 -41
  494. package/src/main/js/sap/ushell/renderer/shellHeader/ShellHeader.fragment.xml +2 -1
  495. package/src/main/js/sap/ushell/renderer/utils.js +4 -4
  496. package/src/main/js/sap/ushell/renderers/fiori2/History.js +1 -1
  497. package/src/main/js/sap/ushell/renderers/fiori2/LogonFrameProvider.js +1 -1
  498. package/src/main/js/sap/ushell/renderers/fiori2/RendererExtensions.js +6 -7
  499. package/src/main/js/sap/ushell/renderers/fiori2/Shell.controller.js +2 -2
  500. package/src/main/js/sap/ushell/renderers/fiori2/Shell.view.js +55 -87
  501. package/src/main/js/sap/ushell/renderers/fiori2/allMyApps/AllMyAppsManager.js +1 -1
  502. package/src/main/js/sap/ushell/resources.js +18 -22
  503. package/src/main/js/sap/ushell/services/AppConfiguration.js +1 -1
  504. package/src/main/js/sap/ushell/services/AppLifeCycle.js +1 -1
  505. package/src/main/js/sap/ushell/services/AppState.js +1 -1
  506. package/src/main/js/sap/ushell/services/Bookmark.js +1 -1
  507. package/src/main/js/sap/ushell/services/BookmarkV2.js +1 -1
  508. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Formatter.js +142 -158
  509. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundIndex.js +11 -13
  510. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundProvider.js +3 -4
  511. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/ParameterMapping.js +38 -38
  512. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/PrelaunchOperations.js +72 -72
  513. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Search.js +229 -247
  514. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/StagedLogger.js +29 -41
  515. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/SystemContext.js +10 -10
  516. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Utils.js +26 -31
  517. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/VirtualInbounds.js +1 -1
  518. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/XAppStateProcessing.js +204 -206
  519. package/src/main/js/sap/ushell/services/ClientSideTargetResolution.js +1 -1
  520. package/src/main/js/sap/ushell/services/CommonDataModel/PersonalizationProcessor.js +115 -118
  521. package/src/main/js/sap/ushell/services/CommonDataModel/SiteConverter.js +20 -20
  522. package/src/main/js/sap/ushell/services/CommonDataModel/vizTypeDefaults/VizTypeDefaults.js +3 -5
  523. package/src/main/js/sap/ushell/services/CommonDataModel.js +2 -2
  524. package/src/main/js/sap/ushell/services/Configuration.js +1 -1
  525. package/src/main/js/sap/ushell/services/ConfigurationDefaults.js +1 -1
  526. package/src/main/js/sap/ushell/services/ContentExtensionAdapterFactory.js +1 -1
  527. package/src/main/js/sap/ushell/services/CrossApplicationNavigation.js +1 -1
  528. package/src/main/js/sap/ushell/services/DarkModeSupport.js +1 -1
  529. package/src/main/js/sap/ushell/services/Extension/Item.js +2 -2
  530. package/src/main/js/sap/ushell/services/Extension.js +1 -1
  531. package/src/main/js/sap/ushell/services/FlpLaunchPage.js +2 -2
  532. package/src/main/js/sap/ushell/services/FrameBoundExtension/FloatingContainer.js +1 -1
  533. package/src/main/js/sap/ushell/services/FrameBoundExtension/Footer.js +1 -1
  534. package/src/main/js/sap/ushell/services/FrameBoundExtension/Item.js +2 -2
  535. package/src/main/js/sap/ushell/services/FrameBoundExtension/SidePane.js +4 -4
  536. package/src/main/js/sap/ushell/services/FrameBoundExtension/ToolArea.js +2 -2
  537. package/src/main/js/sap/ushell/services/FrameBoundExtension/UserSettingsEntry.js +1 -1
  538. package/src/main/js/sap/ushell/services/FrameBoundExtension.js +1 -1
  539. package/src/main/js/sap/ushell/services/LaunchPage.js +1 -1
  540. package/src/main/js/sap/ushell/services/Menu.js +13 -8
  541. package/src/main/js/sap/ushell/services/Message.js +1 -1
  542. package/src/main/js/sap/ushell/services/MessageBroker/MessageBrokerEngine.js +1 -1
  543. package/src/main/js/sap/ushell/services/MessageBroker.js +1 -1
  544. package/src/main/js/sap/ushell/services/MessageInternal.js +1 -1
  545. package/src/main/js/sap/ushell/services/Navigation/compatibility.js +1 -1
  546. package/src/main/js/sap/ushell/services/Navigation/utils.js +1 -1
  547. package/src/main/js/sap/ushell/services/Navigation.js +1 -1
  548. package/src/main/js/sap/ushell/services/NavigationDataProvider.js +1 -1
  549. package/src/main/js/sap/ushell/services/NotificationsV2.js +1 -14
  550. package/src/main/js/sap/ushell/services/PageBuilding.js +1 -1
  551. package/src/main/js/sap/ushell/services/PagePersistence.js +1 -1
  552. package/src/main/js/sap/ushell/services/PageReferencing.js +1 -1
  553. package/src/main/js/sap/ushell/services/Pages.js +8 -12
  554. package/src/main/js/sap/ushell/services/Personalization.js +1 -1
  555. package/src/main/js/sap/ushell/services/PersonalizationV2.js +1 -1
  556. package/src/main/js/sap/ushell/services/PluginManager/Extensions.js +1 -1
  557. package/src/main/js/sap/ushell/services/PluginManager/HeaderExtensions.js +1 -1
  558. package/src/main/js/sap/ushell/services/PluginManager/MenuExtensions.js +1 -1
  559. package/src/main/js/sap/ushell/services/PluginManager/SimpleExpression.js +1 -1
  560. package/src/main/js/sap/ushell/services/PluginManager.js +17 -14
  561. package/src/main/js/sap/ushell/services/ReferenceResolver.js +2 -2
  562. package/src/main/js/sap/ushell/services/Search.js +1 -1
  563. package/src/main/js/sap/ushell/services/SearchCEP.js +1 -1
  564. package/src/main/js/sap/ushell/services/SearchableContent.js +1 -1
  565. package/src/main/js/sap/ushell/services/ShellNavigation.js +2 -2
  566. package/src/main/js/sap/ushell/services/ShellNavigationInternal.js +1 -1
  567. package/src/main/js/sap/ushell/services/SmartNavigation.js +1 -1
  568. package/src/main/js/sap/ushell/services/SpaceContent.js +1 -1
  569. package/src/main/js/sap/ushell/services/UITracer.js +18 -22
  570. package/src/main/js/sap/ushell/services/URLShortening.js +1 -1
  571. package/src/main/js/sap/ushell/services/URLTemplate.js +1 -1
  572. package/src/main/js/sap/ushell/services/Ui5ComponentLoader.js +1 -1
  573. package/src/main/js/sap/ushell/services/UserDefaultParameterPersistence.js +1 -1
  574. package/src/main/js/sap/ushell/services/UserDefaultParameters.js +1 -1
  575. package/src/main/js/sap/ushell/services/UserInfo.js +1 -1
  576. package/src/main/js/sap/ushell/services/UserRecents.js +1 -1
  577. package/src/main/js/sap/ushell/services/VisualizationDataProvider.js +1 -1
  578. package/src/main/js/sap/ushell/services/VisualizationInstantiation.js +1 -1
  579. package/src/main/js/sap/ushell/services/_AppState/AppStatePersistencyMethod.js +2 -2
  580. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/ContentExtensionAdapterConfig.js +9 -9
  581. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/FeaturedGroupConfig.js +21 -14
  582. package/src/main/js/sap/ushell/services/_CrossApplicationNavigation/utils.js +66 -67
  583. package/src/main/js/sap/ushell/services/_PageReferencing/PageReferencer.js +15 -15
  584. package/src/main/js/sap/ushell/services/_Personalization/ContextContainer.js +65 -79
  585. package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainer.js +58 -57
  586. package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainerVariant.js +17 -14
  587. package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainerVariantSet.js +30 -28
  588. package/src/main/js/sap/ushell/services/_Personalization/Personalizer.js +38 -24
  589. package/src/main/js/sap/ushell/services/_Personalization/TransientPersonalizer.js +4 -10
  590. package/src/main/js/sap/ushell/services/_Personalization/Variant.js +23 -23
  591. package/src/main/js/sap/ushell/services/_Personalization/VariantSet.js +39 -38
  592. package/src/main/js/sap/ushell/services/_Personalization/VariantSetAdapter.js +2 -2
  593. package/src/main/js/sap/ushell/services/_Personalization/WindowAdapter.js +1 -1
  594. package/src/main/js/sap/ushell/services/_Personalization/WindowAdapterContainer.js +1 -1
  595. package/src/main/js/sap/ushell/services/_Personalization/constants.js +5 -5
  596. package/src/main/js/sap/ushell/services/_Personalization/constants.private.js +1 -1
  597. package/src/main/js/sap/ushell/services/_Personalization/utils.js +13 -13
  598. package/src/main/js/sap/ushell/services/appstate/AppState.js +26 -26
  599. package/src/main/js/sap/ushell/services/appstate/AppStatePersistencyMethod.js +1 -1
  600. package/src/main/js/sap/ushell/services/appstate/AppStatePersistencySettings.js +4 -4
  601. package/src/main/js/sap/ushell/services/appstate/LimitedBuffer.js +9 -7
  602. package/src/main/js/sap/ushell/services/appstate/Sequentializer.js +5 -6
  603. package/src/main/js/sap/ushell/services/appstate/SequentializingAdapter.js +6 -3
  604. package/src/main/js/sap/ushell/services/appstate/WindowAdapter.js +20 -16
  605. package/src/main/js/sap/ushell/state/StateManager.js +3 -2
  606. package/src/main/js/sap/ushell/state/StateRules.js +9 -4
  607. package/src/main/js/sap/ushell/state/{BackNavigation.js → modules/BackNavigation.js} +1 -1
  608. package/src/main/js/sap/ushell/state/{ContentDensity.js → modules/ContentDensity.js} +1 -1
  609. package/src/main/js/sap/ushell/state/{Favicon.js → modules/Favicon.js} +1 -1
  610. package/src/main/js/sap/ushell/state/modules/HeaderLogo.js +181 -0
  611. package/src/main/js/sap/ushell/support/plugins/flpConfig/FlpConfigurationPlugin.js +100 -92
  612. package/src/main/js/sap/ushell/support/plugins/flpConfig/i18n/FlpConfigurationPlugin.properties +0 -3
  613. package/src/main/js/sap/ushell/support/plugins/flpConfig/i18n/FlpConfigurationPlugin_de.properties +0 -3
  614. package/src/main/js/sap/ushell/support/plugins/flpConfig/i18n/FlpConfigurationPlugin_en.properties +0 -3
  615. package/src/main/js/sap/ushell/themes/base/AddBookmarkButton.less +5 -0
  616. package/src/main/js/sap/ushell/themes/base/Factsheet.less +0 -2
  617. package/src/main/js/sap/ushell/themes/base/ShellBar.less +1 -2
  618. package/src/main/js/sap/ushell/themes/base/ShellHeader.less +1 -1
  619. package/src/main/js/sap/ushell/themes/base/ToolAreaItem.less +0 -1
  620. package/src/main/js/sap/ushell/themes/base/fonts/BusinessSuiteInAppSymbols.json +3 -0
  621. package/src/main/js/sap/ushell/themes/base/fonts/BusinessSuiteInAppSymbols.ttf +0 -0
  622. package/src/main/js/sap/ushell/themes/base/fonts/BusinessSuiteInAppSymbols.woff +0 -0
  623. package/src/main/js/sap/ushell/themes/base/fonts/BusinessSuiteInAppSymbols.woff2 +0 -0
  624. package/src/main/js/sap/ushell/themes/sap_belize_base/AddBookmarkButton.less +5 -0
  625. package/src/main/js/sap/ushell/themes/sap_belize_base/Factsheet.less +0 -2
  626. package/src/main/js/sap/ushell/themes/sap_belize_hcb/AnchorItem.less +0 -1
  627. package/src/main/js/sap/ushell/themes/sap_belize_hcw/AnchorItem.less +0 -1
  628. package/src/main/js/sap/ushell/themes/sap_bluecrystal/AnchorNavigationBar.less +0 -1
  629. package/src/main/js/sap/ushell/themes/sap_bluecrystal_base/AddBookmarkButton.less +5 -0
  630. package/src/main/js/sap/ushell/themes/sap_bluecrystal_base/Factsheet.less +0 -2
  631. package/src/main/js/sap/ushell/themes/sap_fiori_3/ShellHeader.less +0 -6
  632. package/src/main/js/sap/ushell/themes/sap_fiori_3/library.source.less +0 -1
  633. package/src/main/js/sap/ushell/themes/sap_fiori_3_dark/library.source.less +0 -1
  634. package/src/main/js/sap/ushell/themes/sap_fiori_3_hcb/AnchorItem.less +0 -1
  635. package/src/main/js/sap/ushell/themes/sap_fiori_3_hcb/library.source.less +0 -1
  636. package/src/main/js/sap/ushell/themes/sap_fiori_3_hcw/AnchorItem.less +0 -1
  637. package/src/main/js/sap/ushell/themes/sap_fiori_3_hcw/library.source.less +0 -1
  638. package/src/main/js/sap/ushell/themes/sap_hcb/AnchorItem.less +0 -1
  639. package/src/main/js/sap/ushell/themes/sap_hcb/base_AddBookmarkButton.less +5 -0
  640. package/src/main/js/sap/ushell/themes/sap_hcb/base_Factsheet.less +0 -2
  641. package/src/main/js/sap/ushell/themes/sap_hcb/base_ShellHeader.less +1 -1
  642. package/src/main/js/sap/ushell/themes/sap_horizon_hcb/AnchorItem.less +0 -1
  643. package/src/main/js/sap/ushell/themes/sap_horizon_hcb/FloatingContainer.less +8 -0
  644. package/src/main/js/sap/ushell/themes/sap_horizon_hcb/library.source.less +1 -0
  645. package/src/main/js/sap/ushell/themes/sap_horizon_hcw/AnchorItem.less +0 -1
  646. package/src/main/js/sap/ushell/themes/sap_horizon_hcw/FloatingContainer.less +8 -0
  647. package/src/main/js/sap/ushell/themes/sap_horizon_hcw/library.source.less +1 -0
  648. package/src/main/js/sap/ushell/thirdparty/Avatar.js +12 -79
  649. package/src/main/js/sap/ushell/thirdparty/BusyIndicator.js +9 -15
  650. package/src/main/js/sap/ushell/thirdparty/Button2.js +6 -25
  651. package/src/main/js/sap/ushell/thirdparty/Icon.js +5 -5
  652. package/src/main/js/sap/ushell/thirdparty/Icons.js +68 -69
  653. package/src/main/js/sap/ushell/thirdparty/Link.js +2 -2
  654. package/src/main/js/sap/ushell/thirdparty/List.js +4 -4
  655. package/src/main/js/sap/ushell/thirdparty/ListItemCustom.js +95 -0
  656. package/src/main/js/sap/ushell/thirdparty/{ResponsivePopover.js → ListItemTemplate.js} +2876 -3032
  657. package/src/main/js/sap/ushell/thirdparty/Menu.js +76 -65
  658. package/src/main/js/sap/ushell/thirdparty/MenuItem.js +1 -1
  659. package/src/main/js/sap/ushell/thirdparty/MenuItem2.js +34 -342
  660. package/src/main/js/sap/ushell/thirdparty/NotificationListGroupItem.js +6 -6
  661. package/src/main/js/sap/ushell/thirdparty/NotificationListItem.js +5 -5
  662. package/src/main/js/sap/ushell/thirdparty/ShellBar.js +79 -112
  663. package/src/main/js/sap/ushell/thirdparty/Tag.js +6 -6
  664. package/src/main/js/sap/ushell/thirdparty/Text.js +4 -4
  665. package/src/main/js/sap/ushell/thirdparty/UserMenu.js +22 -22
  666. package/src/main/js/sap/ushell/thirdparty/UserMenuItem.js +2 -2
  667. package/src/main/js/sap/ushell/thirdparty/_dynamics/ListItemStandardExpandableTextTemplate.js +3 -3
  668. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar3.js +0 -3
  669. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg3.js +0 -3
  670. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca3.js +0 -3
  671. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr3.js +0 -3
  672. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs3.js +0 -3
  673. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy3.js +0 -3
  674. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da3.js +0 -3
  675. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de3.js +0 -3
  676. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el3.js +0 -3
  677. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en2.js +0 -27
  678. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en3.js +8 -23
  679. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB3.js +0 -3
  680. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd3.js +0 -3
  681. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi2.js +0 -27
  682. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi3.js +8 -20
  683. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc3.js +0 -3
  684. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es3.js +0 -3
  685. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX3.js +0 -3
  686. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et3.js +0 -3
  687. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi3.js +0 -3
  688. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr3.js +0 -3
  689. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA3.js +0 -3
  690. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi3.js +0 -3
  691. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr3.js +0 -3
  692. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu3.js +0 -3
  693. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_id3.js +1 -4
  694. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it2.js +4 -4
  695. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it3.js +2 -5
  696. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw3.js +0 -3
  697. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja3.js +0 -3
  698. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk3.js +0 -3
  699. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko3.js +0 -3
  700. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt3.js +0 -3
  701. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv3.js +0 -3
  702. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk3.js +0 -3
  703. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms3.js +0 -3
  704. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl3.js +0 -3
  705. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no3.js +0 -3
  706. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl3.js +0 -3
  707. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt3.js +0 -3
  708. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT3.js +0 -3
  709. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro3.js +0 -3
  710. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru3.js +0 -3
  711. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh3.js +0 -3
  712. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk3.js +0 -3
  713. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl3.js +0 -3
  714. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr3.js +0 -3
  715. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv3.js +0 -3
  716. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th3.js +0 -3
  717. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr3.js +0 -3
  718. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk3.js +0 -3
  719. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi3.js +0 -3
  720. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN3.js +0 -3
  721. package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW3.js +0 -3
  722. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css10.js +1 -1
  723. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css11.js +1 -1
  724. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css12.js +1 -1
  725. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css13.js +1 -1
  726. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css14.js +1 -1
  727. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css15.js +1 -1
  728. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css16.js +1 -1
  729. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css17.js +1 -1
  730. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css18.js +1 -1
  731. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css19.js +1 -1
  732. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css20.js +1 -1
  733. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css21.js +1 -1
  734. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css22.js +1 -1
  735. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css23.js +1 -1
  736. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css24.js +1 -1
  737. package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css25.js +1 -1
  738. package/src/main/js/sap/ushell/thirdparty/i18n-defaults.js +1 -1
  739. package/src/main/js/sap/ushell/thirdparty/information.js +10 -10
  740. package/src/main/js/sap/ushell/thirdparty/overflow.js +2 -2
  741. package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css.js +1 -1
  742. package/src/main/js/sap/ushell/thirdparty/toLowercaseEnumValue.js +0 -3
  743. package/src/main/js/sap/ushell/thirdparty/webcomponents-base.js +13 -13
  744. package/src/main/js/sap/ushell/ui/ContentNodeSelector.js +72 -73
  745. package/src/main/js/sap/ushell/ui/ContentNodeSelectorRenderer.js +3 -3
  746. package/src/main/js/sap/ushell/ui/ContentNodeTreeItem.js +2 -2
  747. package/src/main/js/sap/ushell/ui/CustomGroupHeaderListItem.js +6 -6
  748. package/src/main/js/sap/ushell/ui/CustomGroupHeaderListItemRenderer.js +5 -5
  749. package/src/main/js/sap/ushell/ui/QuickAccess.js +15 -13
  750. package/src/main/js/sap/ushell/ui/ShellHeader.js +68 -152
  751. package/src/main/js/sap/ushell/ui/ShellHeaderRenderer.js +1 -1
  752. package/src/main/js/sap/ushell/ui/appfinder/AppBox.js +1 -1
  753. package/src/main/js/sap/ushell/ui/appfinder/AppBoxInternal.js +4 -4
  754. package/src/main/js/sap/ushell/ui/appfinder/AppBoxInternalRenderer.js +7 -9
  755. package/src/main/js/sap/ushell/ui/appfinder/AppBoxRenderer.js +1 -1
  756. package/src/main/js/sap/ushell/ui/appfinder/PinButton.js +2 -2
  757. package/src/main/js/sap/ushell/ui/appfinder/PinButtonRenderer.js +2 -4
  758. package/src/main/js/sap/ushell/ui/bookmark/SaveOnPage.controller.js +25 -13
  759. package/src/main/js/sap/ushell/ui/bookmark/SaveOnPage.view.xml +44 -48
  760. package/src/main/js/sap/ushell/ui/cards/FrequentActivitiesExtension.js +22 -22
  761. package/src/main/js/sap/ushell/ui/cards/RecentActivitiesExtension.js +23 -23
  762. package/src/main/js/sap/ushell/ui/footerbar/AboutButton.js +5 -5
  763. package/src/main/js/sap/ushell/ui/footerbar/AboutDialog.controller.js +0 -3
  764. package/src/main/js/sap/ushell/ui/footerbar/AddBookmarkButton.js +86 -103
  765. package/src/main/js/sap/ushell/ui/footerbar/ContactSupportButton.js +4 -4
  766. package/src/main/js/sap/ushell/ui/footerbar/ContactSupportDialog.controller.js +3 -3
  767. package/src/main/js/sap/ushell/ui/footerbar/JamDiscussButton.js +6 -7
  768. package/src/main/js/sap/ushell/ui/footerbar/JamShareButton.js +12 -12
  769. package/src/main/js/sap/ushell/ui/footerbar/LogoutButton.js +12 -12
  770. package/src/main/js/sap/ushell/ui/footerbar/SaveAsTile.controller.js +21 -21
  771. package/src/main/js/sap/ushell/ui/footerbar/SaveAsTile.view.js +57 -55
  772. package/src/main/js/sap/ushell/ui/footerbar/SendAsEmailButton.js +13 -13
  773. package/src/main/js/sap/ushell/ui/launchpad/AccessibilityCustomData.js +4 -4
  774. package/src/main/js/sap/ushell/ui/launchpad/ActionItem.js +4 -4
  775. package/src/main/js/sap/ushell/ui/launchpad/AnchorItem.js +3 -3
  776. package/src/main/js/sap/ushell/ui/launchpad/AnchorItemRenderer.js +5 -5
  777. package/src/main/js/sap/ushell/ui/launchpad/AnchorNavigationBar.js +56 -57
  778. package/src/main/js/sap/ushell/ui/launchpad/AnchorNavigationBarRenderer.js +8 -8
  779. package/src/main/js/sap/ushell/ui/launchpad/CatalogEntryContainer.js +36 -38
  780. package/src/main/js/sap/ushell/ui/launchpad/CatalogsContainer.js +40 -45
  781. package/src/main/js/sap/ushell/ui/launchpad/DashboardGroupsContainer.js +18 -18
  782. package/src/main/js/sap/ushell/ui/launchpad/DashboardGroupsContainerRenderer.js +5 -7
  783. package/src/main/js/sap/ushell/ui/launchpad/ExtendedChangeDetection.js +33 -33
  784. package/src/main/js/sap/ushell/ui/launchpad/FailedTileDialog.js +13 -13
  785. package/src/main/js/sap/ushell/ui/launchpad/GroupHeaderActions.js +13 -13
  786. package/src/main/js/sap/ushell/ui/launchpad/GroupListItem.js +5 -7
  787. package/src/main/js/sap/ushell/ui/launchpad/GroupListItemRenderer.js +2 -2
  788. package/src/main/js/sap/ushell/ui/launchpad/LinkTileWrapper.js +18 -18
  789. package/src/main/js/sap/ushell/ui/launchpad/LinkTileWrapperRenderer.js +9 -9
  790. package/src/main/js/sap/ushell/ui/launchpad/LoadingDialog.js +7 -7
  791. package/src/main/js/sap/ushell/ui/launchpad/LoadingDialogRenderer.js +4 -4
  792. package/src/main/js/sap/ushell/ui/launchpad/Page.js +56 -59
  793. package/src/main/js/sap/ushell/ui/launchpad/PageRenderer.js +3 -3
  794. package/src/main/js/sap/ushell/ui/launchpad/PlusTile.js +5 -5
  795. package/src/main/js/sap/ushell/ui/launchpad/PlusTileRenderer.js +2 -2
  796. package/src/main/js/sap/ushell/ui/launchpad/Section.js +142 -142
  797. package/src/main/js/sap/ushell/ui/launchpad/SectionRenderer.js +8 -8
  798. package/src/main/js/sap/ushell/ui/launchpad/Tile.js +48 -49
  799. package/src/main/js/sap/ushell/ui/launchpad/TileContainer.js +60 -57
  800. package/src/main/js/sap/ushell/ui/launchpad/TileContainerRenderer.js +31 -31
  801. package/src/main/js/sap/ushell/ui/launchpad/TileContainerUtils.js +71 -71
  802. package/src/main/js/sap/ushell/ui/launchpad/TileRenderer.js +8 -8
  803. package/src/main/js/sap/ushell/ui/launchpad/TileState.js +3 -3
  804. package/src/main/js/sap/ushell/ui/launchpad/TileStateInternal.js +7 -7
  805. package/src/main/js/sap/ushell/ui/launchpad/TileStateInternalRenderer.js +8 -8
  806. package/src/main/js/sap/ushell/ui/launchpad/TileStateRenderer.js +1 -2
  807. package/src/main/js/sap/ushell/ui/launchpad/ViewPortState.js +1 -1
  808. package/src/main/js/sap/ushell/ui/launchpad/VizInstance.js +41 -42
  809. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceAbap.js +25 -25
  810. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceBase.js +3 -3
  811. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceCdm.js +25 -25
  812. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceLaunchPage.js +6 -6
  813. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceLink.js +11 -11
  814. package/src/main/js/sap/ushell/ui/launchpad/VizInstanceRenderer.js +7 -7
  815. package/src/main/js/sap/ushell/ui/launchpad/section/CompactArea.js +18 -18
  816. package/src/main/js/sap/ushell/ui/launchpad/section/CompactAreaRenderer.js +2 -2
  817. package/src/main/js/sap/ushell/ui/shell/ContentRenderer.js +8 -8
  818. package/src/main/js/sap/ushell/ui/shell/NavigationMiniTile.js +7 -7
  819. package/src/main/js/sap/ushell/ui/shell/OverflowListItem.js +5 -5
  820. package/src/main/js/sap/ushell/ui/shell/RightFloatingContainer.js +55 -55
  821. package/src/main/js/sap/ushell/ui/shell/ShellAppTitle.js +47 -45
  822. package/src/main/js/sap/ushell/ui/shell/ShellFloatingAction.js +5 -6
  823. package/src/main/js/sap/ushell/ui/shell/ShellFloatingActionRenderer.js +3 -4
  824. package/src/main/js/sap/ushell/ui/shell/ShellFloatingActions.js +18 -18
  825. package/src/main/js/sap/ushell/ui/shell/ShellHeadItem.js +28 -28
  826. package/src/main/js/sap/ushell/ui/shell/ShellNavigationMenu.js +33 -35
  827. package/src/main/js/sap/ushell/ui/shell/SidePane.js +9 -10
  828. package/src/main/js/sap/ushell/ui/shell/SubHeader.js +3 -3
  829. package/src/main/js/sap/ushell/ui/shell/SysInfoBar.js +12 -13
  830. package/src/main/js/sap/ushell/ui/shell/SysInfoBarRenderer.js +7 -7
  831. package/src/main/js/sap/ushell/ui/shell/ToolArea.js +10 -10
  832. package/src/main/js/sap/ushell/ui/shell/ToolAreaItem.js +10 -13
  833. package/src/main/js/sap/ushell/ui/tile/DynamicTile.js +5 -5
  834. package/src/main/js/sap/ushell/ui/tile/DynamicTileRenderer.js +29 -31
  835. package/src/main/js/sap/ushell/ui/tile/ImageTile.js +3 -4
  836. package/src/main/js/sap/ushell/ui/tile/ImageTileRenderer.js +2 -4
  837. package/src/main/js/sap/ushell/ui/tile/StaticTile.js +3 -3
  838. package/src/main/js/sap/ushell/ui/tile/StaticTileRenderer.js +2 -4
  839. package/src/main/js/sap/ushell/ui/tile/TileBase.js +4 -6
  840. package/src/main/js/sap/ushell/ui/tile/TileBaseRenderer.js +20 -21
  841. package/src/main/js/sap/ushell/ui/utils.js +20 -21
  842. package/src/main/js/sap/ushell/ui5service/ShellUIService.js +0 -1
  843. package/src/main/js/sap/ushell/ui5service/ShellUIServiceFactory.js +2 -2
  844. package/src/main/js/sap/ushell/ui5service/UserStatus.js +4 -4
  845. package/src/main/js/sap/ushell/utils/AppType.js +4 -4
  846. package/src/main/js/sap/ushell/utils/Deferred.js +2 -3
  847. package/src/main/js/sap/ushell/utils/DynamicTileRequest.js +6 -9
  848. package/src/main/js/sap/ushell/utils/HttpClient.js +33 -35
  849. package/src/main/js/sap/ushell/utils/RestrictedJSONModel.js +3 -3
  850. package/src/main/js/sap/ushell/utils/UriParameters.js +35 -35
  851. package/src/main/js/sap/ushell/utils/UrlParsing.js +5 -10
  852. package/src/main/js/sap/ushell/utils/UrlShortening.js +45 -58
  853. package/src/main/js/sap/ushell/utils/WindowUtils.js +17 -17
  854. package/src/main/js/sap/ushell/utils/chipsUtils.js +53 -54
  855. package/src/main/js/sap/ushell/utils/objectOperations.js +14 -15
  856. package/src/main/js/sap/ushell/utils/tilecard/TileCard.js +168 -171
  857. package/src/main/js/sap/ushell/utils/tilecard/TileCardExtension.js +238 -240
  858. package/src/main/js/sap/ushell/utils/type.js +1 -2
  859. package/src/main/js/sap/ushell/utils/utilsCdm.js +37 -46
  860. package/src/main/js/sap/ushell/utils/workpage/DestinationResolver.js +3 -4
  861. package/src/main/js/sap/ushell/utils/workpage/WorkPageHost.js +29 -34
  862. package/src/main/js/sap/ushell/utils/workpage/WorkPageService.js +18 -20
  863. package/src/main/js/sap/ushell/utils/workpage/WorkPageVizInstantiation.js +5 -6
  864. package/src/main/js/sap/ushell/utils.js +195 -221
  865. package/src/test/js/sap/ushell/bootstrap/sandbox.js +1 -1
  866. package/ui5.yaml +0 -1
  867. package/src/main/js/sap/ushell/CanvasShapesManager.js +0 -392
  868. package/src/main/js/sap/ushell/components/shell/SearchCEP/ProvidersExecuter.js +0 -49
  869. package/src/main/js/sap/ushell/gen/ui5/webcomponents/Avatar.js +0 -4
  870. package/src/main/js/sap/ushell/gen/ui5/webcomponents/Button.js +0 -4
  871. package/src/main/js/sap/ushell/gen/ui5/webcomponents/Label.js +0 -4
  872. package/src/main/js/sap/ushell/gen/ui5/webcomponents/Menu.js +0 -4
  873. package/src/main/js/sap/ushell/gen/ui5/webcomponents/MenuItem.js +0 -4
  874. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/NotificationList.js +0 -4
  875. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/NotificationListGroupItem.js +0 -4
  876. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/NotificationListItem.js +0 -4
  877. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/ShellBar.js +0 -4
  878. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/ShellBarItem.js +0 -4
  879. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/ShellBarSpacer.js +0 -4
  880. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/UserMenu.js +0 -4
  881. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/UserMenuAccount.js +0 -4
  882. package/src/main/js/sap/ushell/gen/ui5/webcomponents-fiori/UserMenuItem.js +0 -4
  883. package/src/main/js/sap/ushell/themes/sap_fiori_3/ShellBar.less +0 -9
  884. package/src/main/js/sap/ushell/themes/sap_fiori_3_dark/ShellBar.less +0 -9
  885. package/src/main/js/sap/ushell/themes/sap_fiori_3_hcb/ShellBar.less +0 -9
  886. package/src/main/js/sap/ushell/themes/sap_fiori_3_hcw/ShellBar.less +0 -9
@@ -24,7 +24,7 @@ sap.ui.define([
24
24
 
25
25
  /**
26
26
  * removes properties of an object
27
- * @param {*} oObject
27
+ * @param {object} oObject
28
28
  * Object that is modified and that has its properties deleted
29
29
  * @param {string[]} aKeysToRemove The keys of properties to be removed
30
30
  */
@@ -40,6 +40,60 @@ sap.ui.define([
40
40
  && oInbound.signature.parameters[sParameterName].required === true;
41
41
  }
42
42
 
43
+ /**
44
+ * Tells whether the given parameter is a Webgui business parameter
45
+ * This method has a polimorphic signature: it can be called with one or two arguments.
46
+ * If called with one argument both the name and the parameter value
47
+ * should be passed, separated by "=". The first "=" will be treated as
48
+ * parameter separator. Otherwise two parameters (name, value) can be passed.
49
+ *
50
+ * NOTE: the method determines whether the value is passed based on how
51
+ * many arguments are passed.
52
+ *
53
+ * @param {string} sName
54
+ * A parameter name or a name=value string.
55
+ * @param {string} [sValue]
56
+ * An optional parameter value to be used in combination with the
57
+ * name specified in <code>sNameMaybeValue</code>.
58
+ *
59
+ * @returns {boolean}
60
+ * Whether the given parameter is a Webgui business parameter.
61
+ *
62
+ * @private
63
+ */
64
+ function isWebguiBusinessParameter (sName, sValue) {
65
+ let aNameValue;
66
+ // handle case in which sName is in the form "name=value"
67
+ if (arguments.length === 1) {
68
+ aNameValue = sName.split(/[=](.+)?/); // split on first "="
69
+ if (aNameValue.length > 1) {
70
+ return isWebguiBusinessParameter.apply(null, aNameValue);
71
+ }
72
+ }
73
+
74
+ return !(
75
+ sName.indexOf("sap-") === 0 ||
76
+ sName.indexOf("saml") === 0 ||
77
+ sName.charAt(0) === "~"
78
+ );
79
+ }
80
+
81
+ /**
82
+ * Finds and returns webgui business parameters.
83
+ *
84
+ * @param {object} oParams
85
+ * set of WebGUI parameters
86
+ *
87
+ * @returns {object}
88
+ * the set of business parameters
89
+ *
90
+ * @private
91
+ */
92
+ function getWebguiBusinessParameters (oParams) {
93
+ const oBusinessParameters = oCSTRUtils.filterObject(oParams, isWebguiBusinessParameter);
94
+ return oBusinessParameters;
95
+ }
96
+
43
97
  /**
44
98
  * Returns the name of parameters that should not appear in a WebGUI URL.
45
99
  *
@@ -96,133 +150,6 @@ sap.ui.define([
96
150
  return aBusinessParameters;
97
151
  }
98
152
 
99
- /**
100
- * Finds and returns webgui business parameters.
101
- *
102
- * @param {object} oParams
103
- * set of WebGUI parameters
104
- *
105
- * @returns {object}
106
- * the set of business parameters
107
- *
108
- * @private
109
- */
110
- function getWebguiBusinessParameters (oParams) {
111
- const oBusinessParameters = oCSTRUtils.filterObject(oParams, isWebguiBusinessParameter);
112
- return oBusinessParameters;
113
- }
114
-
115
- /**
116
- * Tells whether the given parameter is a Webgui business parameter
117
- * This method has a polimorphic signature: it can be called with one or two arguments.
118
- * If called with one argument both the name and the parameter value
119
- * should be passed, separated by "=". The first "=" will be treated as
120
- * parameter separator. Otherwise two parameters (name, value) can be passed.
121
- *
122
- * NOTE: the method determines whether the value is passed based on how
123
- * many arguments are passed.
124
- *
125
- * @param {string} sName
126
- * A parameter name or a name=value string.
127
- * @param {string} [sValue]
128
- * An optional parameter value to be used in combination with the
129
- * name specified in <code>sNameMaybeValue</code>.
130
- *
131
- * @returns {boolean}
132
- * Whether the given parameter is a Webgui business parameter.
133
- *
134
- * @private
135
- */
136
- function isWebguiBusinessParameter (sName, sValue) {
137
- let aNameValue;
138
- // handle case in which sName is in the form "name=value"
139
- if (arguments.length === 1) {
140
- aNameValue = sName.split(/[=](.+)?/); // split on first "="
141
- if (aNameValue.length > 1) {
142
- return isWebguiBusinessParameter.apply(null, aNameValue);
143
- }
144
- }
145
-
146
- return !(
147
- sName.indexOf("sap-") === 0 ||
148
- sName.indexOf("saml") === 0 ||
149
- sName.charAt(0) === "~"
150
- );
151
- }
152
-
153
-
154
- function generateTRResolutionResult (oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver) {
155
- const oInbound = oMatchingTarget.inbound;
156
- const oResolutionResult = oInbound && oInbound.resolutionResult;
157
- let oPromise;
158
-
159
- if (
160
- !(!oInbound ||
161
- !oResolutionResult ||
162
- !(oResolutionResult["sap.gui"]) ||
163
- !(oResolutionResult.applicationType === "TR"))
164
- ) {
165
- oPromise = constructFullWebguiResolutionResult(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
166
- } else if (
167
- !(!oInbound ||
168
- !oResolutionResult ||
169
- !(oResolutionResult.applicationType === "TR") ||
170
- !(oResolutionResult.url.indexOf("/~canvas;") >= 0) ||
171
- !(oResolutionResult.url.indexOf("app/transaction/APB_LPD_CALL_") === -1)) //check no WRAPPED transaction
172
- ) {
173
- oPromise = constructWebguiNowrapResult(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
174
- } else if (
175
- !(!oInbound ||
176
- !oResolutionResult ||
177
- !(oResolutionResult.applicationType === "TR") ||
178
- !(oResolutionResult.url.indexOf("/~canvas;") >= 0) ||
179
- !(oResolutionResult.url.indexOf("app/transaction/APB_LPD_CALL_") >= 0)) // check WRAPPED transaction
180
- ) {
181
- oPromise = constructWebguiWrapResult(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
182
- } else if (
183
- !(// a native webgui URL
184
- !oInbound ||
185
- !oResolutionResult ||
186
- !(oResolutionResult.applicationType === "TR") ||
187
- !(oResolutionResult.url.indexOf("/its/webgui") >= 0) ||
188
- !(oResolutionResult.url.indexOf("APB_LPD_CALL_") === -1) // a non wrapped URL
189
- )
190
- ) {
191
- oPromise = constructNativeWebguiNowrapResult(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
192
- } else if (
193
- !(// a native webgui URL
194
- !oInbound ||
195
- !oResolutionResult ||
196
- !(oResolutionResult.applicationType === "TR") ||
197
- !(oResolutionResult.url.indexOf("/its/webgui") >= 0) ||
198
- !(oResolutionResult.url.indexOf("APB_LPD_CALL_") !== -1) // a WRAPPED URL
199
- )
200
- ) {
201
- oPromise = constructNativeWebguiWrapResult(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
202
- }
203
-
204
- if (oPromise) {
205
- return oPromise.then(async (oResult) => {
206
- if (oResult.url) {
207
- oResult.url = oApplicationTypeUtils.appendParametersToUrl("sap-iframe-hint=GUI", oResult.url);
208
- if (Config.last("/core/extension/dap/enabled")) {
209
- const oPluginManager = await Container.getServiceAsync("PluginManager");
210
- const bDapInstalled = oPluginManager.isPluginConfigured(Config.last("/core/extension/dap/pluginName"));
211
- oResult.url = oApplicationTypeUtils.appendParametersToUrl(`sap-load-dap=${bDapInstalled}`, oResult.url);
212
- } else {
213
- oResult.url = oApplicationTypeUtils.appendParametersToUrl("sap-load-dap=false", oResult.url);
214
- }
215
- }
216
- oResult.extendedInfo = oApplicationTypeUtils.getExtendedInfo(oMatchingTarget);
217
- oApplicationTypeUtils.checkOpenWithPost(oMatchingTarget, oResult);
218
- oApplicationTypeUtils.addKeepAliveToURLTemplateResult(oResult);
219
- return oResult;
220
- });
221
- }
222
- throw new Error("Cannot generate TR resolution result");
223
- }
224
-
225
-
226
153
  /**
227
154
  * Creates a native webgui URL given the a resolution result "from" nothing (but either a
228
155
  * Shell-startURL intent or a appdescriptor information
@@ -246,271 +173,351 @@ sap.ui.define([
246
173
  * @private
247
174
  */
248
175
  function buildNativeWebGuiURI (sTcode, sSapSystem, sSapSystemDataSrc, fnExternalSystemAliasResolver) {
249
- let sUrl;
250
- let oURI;
251
176
  sTcode = encodeURIComponent(sTcode);
252
- sUrl = `/gui/sap/its/webgui?%7etransaction=${sTcode}&%7enosplash=1`;
253
- oURI = new URI(sUrl);
177
+ const sUrl = `/gui/sap/its/webgui?%7etransaction=${sTcode}&%7enosplash=1`;
178
+ const oURI = new URI(sUrl);
254
179
  return oSystemAlias.spliceSapSystemIntoURI(oURI, oSystemAlias.LOCAL_SYSTEM_ALIAS, sSapSystem, sSapSystemDataSrc,
255
180
  "NATIVEWEBGUI", oSystemAlias.SYSTEM_ALIAS_SEMANTICS.apply, fnExternalSystemAliasResolver);
256
181
  }
257
182
 
258
-
259
183
  /**
260
- * Interpolates the parameters into the given query using transaction
261
- * interpolation format.
262
- *
263
- * The method tries to interpolate the given parameters into the
264
- * <code>P_OBJECT</code> query parameter if present in the query
265
- * string. Otherwise the <code>P_OBJECT</code> parameter is added to
266
- * the query string.
267
- *
268
- * <p>Contrarily to standard URLs, the parameter must be injected into the
269
- * query parameter double escaped (via encodeURIComponent) and with
270
- * the nonstandard delimiters passed as input.
271
- *
272
- * <p >For example, when using '&' and '=' as delimiters, given the
273
- * query string <code>A=B&P_OBJECT=</code>
274
- * and the parameter object
275
- * <pre>
276
- * {
277
- * B: ["C"],
278
- * C: ["D"]
279
- * }
280
- * </pre>, the interpolated query string
281
- * <code>A=B&P_OBJECT=B%2521C%2525C%2521D</code> is returned.
184
+ * Parses Native Webgui query parameter
282
185
  *
283
- * <p>
284
- * IMPORTANT: the <code>P_OBJECT</code> parameter can take maximum 132
285
- * characters in its value. In case the given parameters form a string
286
- * that is longer than 132 characters (unescaped), the string will be
287
- * splitted over multiple <code>P_OBJx</code> parameters that are added
288
- * to the URL.
289
- * <br />
290
- * For example, the method may return the following interpolated query:
291
- * <code>P_OBJ1=rest_of_p_object_value&P_OBJ2=...&P_OBJECT=...some_long_value...</code>
292
- * </p>
186
+ * @param {string} sTransactionQueryParam
187
+ * The full ~transaction query parameter with or without question
188
+ * mark. E.g., <code>?%7etransaction=*SU01%20p1%3d%3bP2=v2</code>
293
189
  *
294
- * @param {string} sQuery
295
- * The query string to interpolate the parameters into
296
- * @param {object} oParamsToInject
297
- * An object indicating the parameters that need to be interpolated.
298
- * @param {string} sQueryParamDelimiter
299
- * The delimiter used to separate parameters and values in <code>sQuery</code>. E.g., "&"
300
- * @param {string} sQueryParamAssignDelimiter
301
- * The delimiter used to separate assignments of a value to a parameter in <code>sQuery</code>. E.g., "="
190
+ * @returns {object}
191
+ * An object containing the parsed parts of the URL parameter
302
192
  *
303
- * @returns {string}
304
- * The interpolated query string.
193
+ * @private
305
194
  */
306
- function injectEffectiveParametersIntoWebguiPobjectParam (sQuery, oParamsToInject, sQueryParamDelimiter, sQueryParamAssignDelimiter) {
307
- let sInjectedParams;
308
- const sPobjectPlusDelimiter = `P_OBJECT${sQueryParamAssignDelimiter}`;
309
- const iMaxGUIParamLength = 132;
310
-
311
- // NOTE: the result of privparamsToString does not encode
312
- // delimiters, hence we pass them encoded.
313
- let sParamsToInject = oApplicationTypeUtils.getURLParsing().privparamsToString(
314
- oParamsToInject,
315
- "%25", // a.k.a. "%", instead of &
316
- "%21" // a.k.a. "!", instead of =
317
- );
195
+ function parseWebguiTransactionQueryParam (sTransactionQueryParam) {
196
+ const sTransactionValueRe = "^(.+?)(%20|(%20)(.+))?$";
197
+ const reTransactionValue = new RegExp(sTransactionValueRe, "i");
198
+ const oParsed = {
199
+ hasParameters: null, // whether actual parameters are passed to the transaction
200
+ transactionParamName: "", // ?%7etransaction or %7etransaction
201
+ transactionCode: "", // SU01 or *SU01
202
+ parameters: [] // { name: ..., value: ... }
203
+ };
318
204
 
319
- if (!sParamsToInject) {
320
- return sQuery;
321
- }
205
+ const aParamNameValues = sTransactionQueryParam.split("=");
322
206
 
323
- // Parse away existing parameters in P_OBJECT
324
- let sParamsToInjectPrefix = "";
325
- amendGuiParam("P_OBJECT", sQuery, sQueryParamDelimiter, sQueryParamAssignDelimiter,
326
- (sParamNameAndValueDoubleEncoded) => {
327
- const sParamValueDoubleEncoded = sParamNameAndValueDoubleEncoded.replace(sPobjectPlusDelimiter, "");
328
- sParamsToInjectPrefix = decodeURIComponent(sParamValueDoubleEncoded);
329
- if (sParamsToInjectPrefix.length > 0) {
330
- sParamsToInjectPrefix = `${sParamsToInjectPrefix}%25`;
331
- }
207
+ if (aParamNameValues.length > 2) {
208
+ return {
209
+ error: "Found more than one assignment ('=') in the transaction query parameter",
210
+ details: `Only one '=' sign is expected in ${sTransactionQueryParam}`
211
+ };
212
+ }
332
213
 
333
- return sPobjectPlusDelimiter; // just leave the P_OBJECT= placeholder if found
334
- });
335
- sParamsToInject = sParamsToInjectPrefix + sParamsToInject;
214
+ if (aParamNameValues.length < 2 || typeof aParamNameValues[1]
215
+ === "undefined" || aParamNameValues[1].length === 0) {
216
+ return {
217
+ error: "The transaction query parameter must specify at least the transaction name",
218
+ details: `Got ${sTransactionQueryParam} instead.`
219
+ };
220
+ }
336
221
 
337
- // Generate the injected parameters
338
- const oParamsSections = {
339
- pObjX: "",
340
- pObject: ""
341
- };
342
- sParamsToInject
343
- .match(new RegExp(`.{1,${iMaxGUIParamLength}}`, "g"))
344
- .map((sParamGroupEncoded) => {
345
- return encodeURIComponent(sParamGroupEncoded);
346
- })
347
- .forEach((sParamGroupDoubleEncoded, iGroupIdx) => {
348
- // parameter name should be P_OBJECT or P_OBJx for further parameters
349
- let sParamName = "P_OBJECT";
350
- let sParamSection = "pObject";
351
- if (iGroupIdx > 0) {
352
- sParamName = `P_OBJ${iGroupIdx}`;
353
- sParamSection = "pObjX";
354
- }
222
+ oParsed.transactionParamName = aParamNameValues[0];
223
+ const sTransactionValue = aParamNameValues[1];
355
224
 
356
- const sSectionDelimiter = oParamsSections[sParamSection].length === 0 ? "" : sQueryParamDelimiter;
225
+ const aMatch = sTransactionValue.match(reTransactionValue);
226
+ if (!aMatch) {
227
+ return {
228
+ error: "Cannot parse ~transaction query parameter value.",
229
+ details: `${sTransactionValue} should match /${sTransactionValueRe}/`
230
+ };
231
+ }
357
232
 
358
- oParamsSections[sParamSection] = oParamsSections[sParamSection] + sSectionDelimiter + sParamName
359
- + sQueryParamAssignDelimiter + sParamGroupDoubleEncoded;
360
- });
233
+ oParsed.transactionCode = aMatch[1];
234
+ if (aMatch[2] && aMatch[2] !== "%20") { // if !== "%20" -> matches (%20)(.+)
235
+ // must parse parameters
236
+ const sTransactionParams = aMatch[4] || "";
237
+ sTransactionParams
238
+ .split("%3b") // i.e., "="
239
+ .forEach((sNameAndValue) => {
240
+ const aNameAndValue = sNameAndValue.split("%3d");
241
+ const sParamName = aNameAndValue[0];
361
242
 
362
- sInjectedParams = [oParamsSections.pObjX, oParamsSections.pObject]
363
- .filter((sParamSection) => {
364
- return sParamSection.length > 0;
365
- })
366
- .join(sQueryParamDelimiter);
243
+ if (sParamName && typeof sParamName === "string" && sParamName.length > 0) { // no empty names
244
+ oParsed.parameters.push({
245
+ name: sParamName,
246
+ value: aNameAndValue[1]
247
+ });
248
+ }
249
+ });
250
+ }
367
251
 
368
- // Place the injected params in the right place in the query
369
- const oAmendResult = amendGuiParam("P_OBJECT", sQuery, sQueryParamDelimiter,
370
- sQueryParamAssignDelimiter, (sFoundParamNameAndValue) => {
371
- return sInjectedParams;
372
- });
252
+ // post parsing adjustments
373
253
 
374
- if (oAmendResult.found) {
375
- return oAmendResult.query;
254
+ // detect whether the transaction name had a '*' or if the * was
255
+ // added because of parameters.
256
+ // NOTE: **SU01 would be a valid tcode
257
+ oParsed.hasParameters = false;
258
+ if (oParsed.parameters.length > 0) {
259
+ oParsed.hasParameters = true;
260
+
261
+ // must remove the starting "*" from the transaction code if
262
+ // any is found (was added because of parameters).
263
+ oParsed.transactionCode = oParsed.transactionCode.replace(/^[*]/, "");
376
264
  }
377
265
 
378
- // amendment not performed: just append the concatenation
379
- return sQuery + (sQuery.length === 0 ? "" : sQueryParamDelimiter) + sInjectedParams;
266
+ return oParsed;
380
267
  }
381
268
 
382
269
  /**
383
- * Amends a specified GUI param through a given callback function.
270
+ * extract the DYNP_SKIP_SEL_SCREEN parameter that indicates whether to
271
+ * how the selection screen even if parameters are sent
384
272
  *
385
- * @param {string} sTargetParamName
386
- * The target WebGui parameter to find
387
- * @param {string} sQuery
388
- * The query string to find the parameter in
389
- * @param {string} sQueryParamDelimiter
390
- * The delimiter used to separate parameters and values in <code>sQuery</code>. E.g., "&"
391
- * @param {string} sQueryParamAssignDelimiter
392
- * The delimiter used to separate assignments of a value to a parameter in <code>sQuery</code>. E.g., "="
393
- * @param {function} fnAmend
394
- * A callback used to amend the <code>sTargetParamName</code>
395
- * parameter of the query string. It is a function that should return
396
- * the value to assign to the target parameter in the query string,
397
- * should this target parameter be present.
398
- * <p>When this function returns <code>undefined</code>, the target
399
- * parameter will be removed from the query string</p>
273
+ * @param {object} oParamsToInject the parameters to inject.
274
+ * @returns {string} the DYNP_SKIP_SEL_SCREEN value.
400
275
  *
401
- * @returns {object}
402
- * An object representing the result of the amend operation. It is like:
403
- * <pre>
404
- * {
405
- * found: <boolean> // whether the target parameter was found
406
- * query: <string> // the amended query string or the original
407
- * // query string if the target parameter was not found
408
- * }
409
- * </pre>
276
+ * @private
410
277
  */
411
- function amendGuiParam (sTargetParamName, sQuery, sQueryParamDelimiter, sQueryParamAssignDelimiter, fnAmend) {
412
- let bFound = false;
413
- const sParamSearchPrefix = sTargetParamName + sQueryParamAssignDelimiter; // Param=
278
+ function getExplicitSkipSelectionScreenParameter (oParamsToInject) {
279
+ let sSkipValue = "";
280
+ if (oParamsToInject.hasOwnProperty("DYNP_SKIP_SEL_SCREEN")) {
281
+ const sParamVal = oParamsToInject.DYNP_SKIP_SEL_SCREEN[0];
282
+ delete oParamsToInject.DYNP_SKIP_SEL_SCREEN;
283
+ if (sParamVal === "" ||
284
+ sParamVal === " " ||
285
+ sParamVal === "0" ||
286
+ sParamVal === 0 ||
287
+ (typeof sParamVal === "string" && sParamVal.toLowerCase() === "false")) {
288
+ sSkipValue = "0";
289
+ } else if (sParamVal === "1" ||
290
+ sParamVal === 1 ||
291
+ (typeof sParamVal === "string" && sParamVal.toLowerCase() === "true")) {
292
+ sSkipValue = "1";
293
+ }
294
+ }
295
+ return sSkipValue;
296
+ }
414
297
 
415
- const sAmendedQuery = sQuery
416
- .split(sQueryParamDelimiter)
417
- .map((sParam) => {
298
+ /**
299
+ * Interpolates the given parameters into the webgui ~transaction parameter.
300
+ *
301
+ * The method tries to intepolate the given parameters after the
302
+ * transaction code present in the given ~transaction parameter.
303
+ *
304
+ * <p>For example, given the query string
305
+ * <code>?%7etransaction=SU01</code>
306
+ *
307
+ * and the parameter object
308
+ * <pre>
309
+ * {
310
+ * B: ["C"],
311
+ * C: ["D"]
312
+ * }
313
+ * </pre>, the following string is returned:
314
+ * <code>?%7etransaction=*SU01%20B%3dC%3bC%3dD</code
315
+ *
316
+ * @param {string} sTransactionQueryParam
317
+ * The whole ~transaction parameter. Must start with "?%7etransaction" or "%7etransaction".
318
+ * For example <ul
319
+ * <li><code>%7etransaction=*SU01%20AAAA%3d4321</code> (with AAAA=4321 parameter)</li>
320
+ * <li><code>?%7etransaction=SU01</code> (no parameters)</li>
321
+ * </ul>
322
+ * @param {object} oParamsToInject
323
+ * An object ating the parameters that need to be interpolated
324
+ * into <code>sTransactionQueryParam</code>.
325
+ *
326
+ * @returns {string}
327
+ * The interpolated ~transaction parameter (the leading ? is
328
+ * preserved if passed). The transaction code will have the form
329
+ * <code>*[CODE]%20[PARAMETERS]]</code> only when the transaction
330
+ * will be called with parameters, otherwise the format would be
331
+ * <code>[CODE]</code>.
332
+ */
333
+ function injectEffectiveParametersIntoWebguiQueryParam (sTransactionQueryParam, oParamsToInject) {
334
+ const oParsedTransactionQueryParam = parseWebguiTransactionQueryParam(sTransactionQueryParam);
335
+ if (oParsedTransactionQueryParam.error) {
336
+ Log.error(
337
+ oParsedTransactionQueryParam.error,
338
+ oParsedTransactionQueryParam.details,
339
+ "sap.ushell.services.ClientSideTargetResolution"
340
+ );
341
+ return sTransactionQueryParam;
342
+ }
418
343
 
419
- if (sParam.indexOf(sParamSearchPrefix) !== 0) {
420
- return sParam;
421
- }
344
+ // Inject parameters
345
+ const aParametersFinal = oParsedTransactionQueryParam.parameters.map((oParameter) => {
346
+ return `${oParameter.name.toUpperCase()}%3d${oParameter.value}`;
347
+ });
422
348
 
423
- bFound = true;
349
+ const sSkipValue = getExplicitSkipSelectionScreenParameter(oParamsToInject);
424
350
 
425
- return fnAmend(sParam);
426
- })
427
- .filter((sParam) => {
428
- return typeof sParam !== "undefined";
429
- })
430
- .join(sQueryParamDelimiter);
351
+ // Turn all names upper case
352
+ const oParamsToInjectUpperCase = {};
353
+ Object.keys(oParamsToInject).forEach((sKey) => {
354
+ oParamsToInjectUpperCase[sKey.toUpperCase()] = oParamsToInject[sKey];
355
+ });
356
+ // NOTE: privparamsToString treats delimiters verbatim and encodes
357
+ // the parameters if necessary.
358
+ // Therefore we pass the delimiters already encoded!
359
+ //
360
+ let sParamsToInject = oApplicationTypeUtils.getURLParsing().privparamsToString(
361
+ oParamsToInjectUpperCase,
362
+ "%3b", // parameters delimiter
363
+ "%3d" // assigment
364
+ );
365
+ if (sParamsToInject) {
366
+ if (Object.keys(oParamsToInject).length > 0) {
367
+ sParamsToInject += "%3b";
368
+ }
369
+ aParametersFinal.push(sParamsToInject);
370
+ }
431
371
 
432
- return {
433
- found: bFound,
434
- query: sAmendedQuery
435
- };
372
+ // Note: do not rely on oParsedTransactionQueryParam as we may
373
+ // still have injected parameters here.
374
+ const bHasParameters = aParametersFinal.length > 0;
375
+
376
+ return `${oParsedTransactionQueryParam.transactionParamName}=${
377
+ bHasParameters && (sSkipValue === "" || sSkipValue === "1") ? "*" : ""
378
+ }${oParsedTransactionQueryParam.transactionCode}${bHasParameters ? "%20" : ""}${aParametersFinal.join("%3b")}`;
436
379
  }
437
380
 
381
+ /**
382
+ * Finds and returns webgui non-business parameters.
383
+ *
384
+ * @param {object} oParams
385
+ * set of WebGUI parameters
386
+ *
387
+ * @returns {object}
388
+ * the set of non-business parameters
389
+ *
390
+ * @private
391
+ */
392
+ function getWebguiNonBusinessParameters (oParams) {
393
+ const oNonBusinessParams = oCSTRUtils.filterObject(oParams, (sKey, sVal) => {
394
+ return !isWebguiBusinessParameter(sKey, sVal);
395
+ });
438
396
 
439
- function constructNativeWebguiWrapResult (oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver) {
440
- const oInbound = oMatchingTarget.inbound;
441
- const oInboundResolutionResult = oInbound && oInbound.resolutionResult;
442
- const oResolutionResult = {};
397
+ return oNonBusinessParams;
398
+ }
443
399
 
444
- // splice parameters into Webgui url
445
- const oWebguiURI = new URI(sBaseUrl);
400
+ /**
401
+ * blends parameters of oMatchingTarget into the oWebguiURI,
402
+ * then sets the altered URI constructing a resolution result in oMatchingTarget
403
+ *
404
+ * @param {object} oInbound
405
+ * The original inbound
406
+ *
407
+ * @param {object} oMappedIntentParamsPlusSimpleDefaults
408
+ * The set of mapped parameters including simple default parameters
409
+ *
410
+ * @param {function} oWebguiURI
411
+ * A (native) WebGui URI Object
412
+ *
413
+ * @returns {object} oResolutionResult
414
+ *
415
+ * Note: the method mutates oWebguiURI
416
+ * @private
417
+ */
418
+ function blendParamsIntoNativeWebGUI (oInbound, oMappedIntentParamsPlusSimpleDefaults, oWebguiURI) {
419
+ const oForbiddenParameters = {
420
+ "sap-wd-run-sc": true,
421
+ "sap-wd-auto-detect": true,
422
+ "sap-ep-version": true,
423
+ "sap-system": true
424
+ };
425
+
426
+ const oResolutionResult = {};
446
427
 
447
428
  // construct effective parameters
448
429
 
449
430
  // NOTE: do not include defaultedParameterNames for wrapped URLs,
450
431
  // as they may cause a crash the called application.
451
- const oEffectiveParameters = deepExtend({}, oMatchingTarget.mappedIntentParamsPlusSimpleDefaults);
452
-
432
+ const oEffectiveParameters = deepExtend({}, oMappedIntentParamsPlusSimpleDefaults);
453
433
  const sSapSystem = oEffectiveParameters["sap-system"] && oEffectiveParameters["sap-system"][0];
454
434
  const sSapSystemDataSrc = oEffectiveParameters["sap-system-src"] && oEffectiveParameters["sap-system-src"][0];
455
-
456
- // in the Webgui case, the sap-system intent parameter is *not* part of the final url
435
+ // before deleting forbidden parameters, back-up sap-system and sap-system-src
457
436
  oResolutionResult["sap-system"] = sSapSystem;
458
- delete oEffectiveParameters["sap-system"];
459
-
460
- // in the Webgui case, the sap-system-src intent parameter is *not* part of the final url
461
437
  if (typeof sSapSystemDataSrc === "string") {
462
438
  oResolutionResult["sap-system-src"] = sSapSystemDataSrc;
463
- delete oEffectiveParameters["sap-system-src"];
464
439
  }
465
440
 
441
+ // remove "forbidden" parameters
442
+ Object.keys(oEffectiveParameters).forEach((sParamName) => {
443
+ if (oForbiddenParameters[sParamName.toLowerCase()]) {
444
+ delete oEffectiveParameters[sParamName];
445
+ }
446
+ });
466
447
 
467
- return oSystemAlias.spliceSapSystemIntoURI(oWebguiURI, oInboundResolutionResult.systemAlias, sSapSystem,
468
- sSapSystemDataSrc, "NATIVEWEBGUI",
469
- oInboundResolutionResult.systemAliasSemantics
470
- || oSystemAlias.SYSTEM_ALIAS_SEMANTICS.applied, fnExternalSystemAliasResolver)
471
- .then((oWebguiURI) => {
472
- // Reconstruct the final url
473
- // ASSUMPTION: there are no relevant parameters in the Webgui url, but only Webgui parameters.
448
+ const aUnneccessaryParameters = getUnnecessaryWebguiParameters(oEffectiveParameters, oInbound || {});
449
+ removeObjectKey(oEffectiveParameters, aUnneccessaryParameters);
450
+
451
+ const oEffectiveParametersToAppend = getWebguiNonBusinessParameters(oEffectiveParameters);
452
+ removeObjectKey(oEffectiveParameters, Object.keys(oEffectiveParametersToAppend));
474
453
 
475
- const sParams = oWebguiURI.search(); // Webgui parameters
476
- const sParamsInterpolated = sParams
477
- .split("&")
478
- .map((sQueryParam) => {
479
- // interpolate effective parameter in the correct place within the ~transaction parameter
454
+ // Reconstruct the final url
455
+ // ASSUMPTION: there are no relevant parameters in the Webgui url, but only Webgui parameters.
480
456
 
481
- let sInterpolatedQueryParam;
482
- if (sQueryParam.indexOf("?%7etransaction") === 0 ||
483
- sQueryParam.indexOf("%7etransaction") === 0) { // found transaction
457
+ const sParams = oWebguiURI.search(); // Webgui parameters
458
+ let sParamsInterpolated = sParams
459
+ .split("&")
460
+ .map((sQueryParam) => {
461
+ let aNonBusinessParam;
462
+ // interpolate effective parameter in the correct
463
+ // place within the ~transaction parameter
484
464
 
485
- // treat transaction as if it was a query parameter
486
- sInterpolatedQueryParam = injectEffectiveParametersIntoWebguiPobjectParam(
487
- sQueryParam,
488
- oEffectiveParameters,
489
- "%3b", // parameter separator -> ";"
490
- "%3d" // parameter assign delimiter -> "="
491
- );
492
- return sInterpolatedQueryParam;
465
+ if (!isWebguiBusinessParameter(sQueryParam)) { // non-business parameters go in the end
466
+ // we need name = value
467
+ if (sQueryParam.indexOf("=") >= 0) {
468
+ aNonBusinessParam = sQueryParam.split("=");
469
+ if (!oEffectiveParametersToAppend.hasOwnProperty(aNonBusinessParam[0])) {
470
+ // effective parameters have precedence
471
+ oEffectiveParametersToAppend[
472
+ aNonBusinessParam[0] // name
473
+ ] = aNonBusinessParam[1]; // value
493
474
  }
475
+ } else {
476
+ Log.error(
477
+ "Found no '=' separator of Webgui non-business parameter. Parameter will be skipped.",
478
+ `'${sQueryParam}'`,
479
+ "sap.ushell.services.ClientSideTargetResolution"
480
+ );
481
+ }
494
482
 
495
- return sQueryParam;
496
- })
497
- .join("&");
483
+ return undefined; // do not append the parameter
484
+ }
498
485
 
499
- oWebguiURI.search(sParamsInterpolated);
486
+ if (sQueryParam.indexOf("?%7etransaction") === 0 ||
487
+ sQueryParam.indexOf("%7etransaction") === 0) { // found transaction
488
+ // treat transaction as if it was a query parameter
489
+ return injectEffectiveParametersIntoWebguiQueryParam(sQueryParam, oEffectiveParameters);
490
+ }
491
+ return sQueryParam;
492
+ })
493
+ .filter((sParam) => {
494
+ return typeof sParam !== "undefined";
495
+ }) // remove skipped parameters
496
+ .join("&");
500
497
 
501
- // propagate properties from the inbound in the resolution result
502
- ["additionalInformation", "applicationDependencies"].forEach((sPropName) => {
503
- if (oInbound.resolutionResult.hasOwnProperty(sPropName)) {
504
- oResolutionResult[sPropName] = oInbound.resolutionResult[sPropName];
505
- }
506
- });
507
- oResolutionResult.url = oWebguiURI.toString();
508
- oResolutionResult.text = oInbound.title;
509
- oResolutionResult.applicationType = "TR"; // Triggers Native navigation
510
- oApplicationTypeUtils.setSystemAlias(oResolutionResult, oInbound.resolutionResult);
498
+ // append non business parameters
499
+ const sEffectiveParamsToAppend =
500
+ oApplicationTypeUtils.getURLParsing().paramsToString(oEffectiveParametersToAppend);
501
+ sParamsInterpolated = [
502
+ sParamsInterpolated,
503
+ sEffectiveParamsToAppend.replace("~", "%7e") // encodeURIComponent escapes all characters except:
504
+ // alphabetic, decimal digits, - _ . ! ~ * ' ( )'
505
+ ].join("&");
511
506
 
512
- return oResolutionResult;
513
- });
507
+ oWebguiURI.search(sParamsInterpolated);
508
+
509
+ // propagate properties from the inbound in the resolution result
510
+ ["additionalInformation", "applicationDependencies", "sap.platform.runtime"].forEach((sPropName) => {
511
+ if (oInbound.resolutionResult.hasOwnProperty(sPropName)) {
512
+ oResolutionResult[sPropName] = oInbound.resolutionResult[sPropName];
513
+ }
514
+ });
515
+ oResolutionResult.url = oWebguiURI.toString();
516
+ oResolutionResult.text = oInbound.title;
517
+ oResolutionResult.applicationType = "TR"; // Triggers native navigation
518
+ oApplicationTypeUtils.setSystemAlias(oResolutionResult, oInbound.resolutionResult);
519
+
520
+ return oResolutionResult;
514
521
  }
515
522
 
516
523
  function constructFullWebguiResolutionResult (oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver) {
@@ -546,64 +553,6 @@ sap.ui.define([
546
553
  });
547
554
  }
548
555
 
549
- function constructWebguiWrapResult (oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver) {
550
- const oInbound = oMatchingTarget.inbound;
551
- const oInboundResolutionResult = oInbound && oInbound.resolutionResult;
552
-
553
- const oResolutionResult = {};
554
-
555
- // splice parameters into Webgui url
556
- const oWebguiURI = new URI(sBaseUrl);
557
-
558
- // construct effective parameters
559
-
560
-
561
- // NOTE: do not include defaultedParameterNames for wrapped URLs,
562
- // as they may cause a crash the called application.
563
- const oEffectiveParameters = deepExtend({}, oMatchingTarget.mappedIntentParamsPlusSimpleDefaults);
564
-
565
- const sSapSystem = oEffectiveParameters["sap-system"] && oEffectiveParameters["sap-system"][0];
566
- const sSapSystemDataSrc = oEffectiveParameters["sap-system-src"] && oEffectiveParameters["sap-system-src"][0];
567
-
568
- // in the Webgui case, the sap-system intent parameter is *not* part of the final url
569
- oResolutionResult["sap-system"] = sSapSystem;
570
- delete oEffectiveParameters["sap-system"];
571
-
572
- if (typeof sSapSystemDataSrc === "string") {
573
- oResolutionResult["sap-system-src"] = sSapSystemDataSrc;
574
- delete oEffectiveParameters["sap-system-src"];
575
- }
576
-
577
- return oSystemAlias.spliceSapSystemIntoURI(oWebguiURI, oInboundResolutionResult.systemAlias, sSapSystem,
578
- sSapSystemDataSrc, "WEBGUI", oInboundResolutionResult.systemAliasSemantics
579
- || oSystemAlias.SYSTEM_ALIAS_SEMANTICS.applied, fnExternalSystemAliasResolver)
580
- .then((oWebguiURI) => {
581
- // Reconstruct the final url
582
- // ASSUMPTION: there are no relevant parameters in the Webgui url, but only Webgui parameters.
583
- let sParams = oWebguiURI.search(); // Webgui parameters
584
-
585
- // Inject effective startup param
586
- sParams = injectEffectiveParametersIntoWebguiPobjectParam(sParams, oEffectiveParameters,
587
- "&", "=");
588
-
589
- oWebguiURI.search(sParams);
590
-
591
- // propagate properties from the inbound in the resolution result
592
- ["additionalInformation", "applicationDependencies"].forEach((sPropName) => {
593
- if (oInbound.resolutionResult.hasOwnProperty(sPropName)) {
594
- oResolutionResult[sPropName] = oInbound.resolutionResult[sPropName];
595
- }
596
- });
597
-
598
- oResolutionResult.url = oWebguiURI.toString();
599
- oResolutionResult.text = oInbound.title;
600
- oResolutionResult.applicationType = "NWBC";
601
- oApplicationTypeUtils.setSystemAlias(oResolutionResult, oInbound.resolutionResult);
602
-
603
- return oResolutionResult;
604
- });
605
- }
606
-
607
556
  function constructWebguiNowrapResult (oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver) {
608
557
  const oInbound = oMatchingTarget.inbound;
609
558
  const oInboundResolutionResult = oInbound && oInbound.resolutionResult;
@@ -705,354 +654,383 @@ sap.ui.define([
705
654
  }
706
655
 
707
656
  /**
708
- * blends parameters of oMatchingTarget into the oWebguiURI,
709
- * then sets the altered URI constructing a resolution result in oMatchingTarget
710
- *
711
- * @param {object} oInbound
712
- * The original inbound
713
- *
714
- * @param {object} oMappedIntentParamsPlusSimpleDefaults
715
- * The set of mapped parameters including simple default parameters
716
- *
717
- * @param {function} oWebguiURI
718
- * A (native) WebGui URI Object
657
+ * Amends a specified GUI param through a given callback function.
719
658
  *
720
- * @returns {object} oResolutionResult
659
+ * @param {string} sTargetParamName
660
+ * The target WebGui parameter to find
661
+ * @param {string} sQuery
662
+ * The query string to find the parameter in
663
+ * @param {string} sQueryParamDelimiter
664
+ * The delimiter used to separate parameters and values in <code>sQuery</code>. E.g., "&"
665
+ * @param {string} sQueryParamAssignDelimiter
666
+ * The delimiter used to separate assignments of a value to a parameter in <code>sQuery</code>. E.g., "="
667
+ * @param {function} fnAmend
668
+ * A callback used to amend the <code>sTargetParamName</code>
669
+ * parameter of the query string. It is a function that should return
670
+ * the value to assign to the target parameter in the query string,
671
+ * should this target parameter be present.
672
+ * <p>When this function returns <code>undefined</code>, the target
673
+ * parameter will be removed from the query string</p>
721
674
  *
722
- * Note: the method mutates oWebguiURI
723
- * @private
675
+ * @returns {object}
676
+ * An object representing the result of the amend operation. It is like:
677
+ * <pre>
678
+ * {
679
+ * found: <boolean> // whether the target parameter was found
680
+ * query: <string> // the amended query string or the original
681
+ * // query string if the target parameter was not found
682
+ * }
683
+ * </pre>
724
684
  */
725
- function blendParamsIntoNativeWebGUI (oInbound, oMappedIntentParamsPlusSimpleDefaults, oWebguiURI) {
726
- const oForbiddenParameters = {
727
- "sap-wd-run-sc": true,
728
- "sap-wd-auto-detect": true,
729
- "sap-ep-version": true,
730
- "sap-system": true
731
- };
732
-
733
- const oResolutionResult = {};
734
-
735
- // construct effective parameters
736
-
737
- // NOTE: do not include defaultedParameterNames for wrapped URLs,
738
- // as they may cause a crash the called application.
739
- const oEffectiveParameters = deepExtend({}, oMappedIntentParamsPlusSimpleDefaults);
740
- const sSapSystem = oEffectiveParameters["sap-system"] && oEffectiveParameters["sap-system"][0];
741
- const sSapSystemDataSrc = oEffectiveParameters["sap-system-src"] && oEffectiveParameters["sap-system-src"][0];
742
- // before deleting forbidden parameters, back-up sap-system and sap-system-src
743
- oResolutionResult["sap-system"] = sSapSystem;
744
- if (typeof sSapSystemDataSrc === "string") {
745
- oResolutionResult["sap-system-src"] = sSapSystemDataSrc;
746
- }
747
-
748
- // remove "forbidden" parameters
749
- Object.keys(oEffectiveParameters).forEach((sParamName) => {
750
- if (oForbiddenParameters[sParamName.toLowerCase()]) {
751
- delete oEffectiveParameters[sParamName];
752
- }
753
- });
754
-
755
- const aUnneccessaryParameters = getUnnecessaryWebguiParameters(oEffectiveParameters, oInbound || {});
756
- removeObjectKey(oEffectiveParameters, aUnneccessaryParameters);
757
-
758
- const oEffectiveParametersToAppend = getWebguiNonBusinessParameters(oEffectiveParameters);
759
- removeObjectKey(oEffectiveParameters, Object.keys(oEffectiveParametersToAppend));
760
-
761
- // Reconstruct the final url
762
- // ASSUMPTION: there are no relevant parameters in the Webgui url, but only Webgui parameters.
763
-
764
- const sParams = oWebguiURI.search(); // Webgui parameters
765
- let sParamsInterpolated = sParams
766
- .split("&")
767
- .map((sQueryParam) => {
768
- let aNonBusinessParam;
769
- // interpolate effective parameter in the correct
770
- // place within the ~transaction parameter
771
-
772
- if (!isWebguiBusinessParameter(sQueryParam)) { // non-business parameters go in the end
773
- // we need name = value
774
- if (sQueryParam.indexOf("=") >= 0) {
775
-
776
- aNonBusinessParam = sQueryParam.split("=");
777
- if (!oEffectiveParametersToAppend.hasOwnProperty(aNonBusinessParam[0])) {
778
- // effective parameters have precedence
779
- oEffectiveParametersToAppend[
780
- aNonBusinessParam[0] // name
781
- ] = aNonBusinessParam[1]; // value
782
- }
783
-
784
- } else {
785
- Log.error(
786
- "Found no '=' separator of Webgui non-business parameter. Parameter will be skipped.",
787
- `'${sQueryParam}'`,
788
- "sap.ushell.services.ClientSideTargetResolution"
789
- );
790
- }
685
+ function amendGuiParam (sTargetParamName, sQuery, sQueryParamDelimiter, sQueryParamAssignDelimiter, fnAmend) {
686
+ let bFound = false;
687
+ const sParamSearchPrefix = sTargetParamName + sQueryParamAssignDelimiter; // Param=
791
688
 
792
- return undefined; // do not append the parameter
689
+ const sAmendedQuery = sQuery
690
+ .split(sQueryParamDelimiter)
691
+ .map((sParam) => {
692
+ if (sParam.indexOf(sParamSearchPrefix) !== 0) {
693
+ return sParam;
793
694
  }
794
695
 
795
- let sInterpolatedQueryParam;
796
- if (sQueryParam.indexOf("?%7etransaction") === 0 ||
797
- sQueryParam.indexOf("%7etransaction") === 0) { // found transaction
696
+ bFound = true;
798
697
 
799
- // treat transaction as if it was a query parameter
800
- sInterpolatedQueryParam = injectEffectiveParametersIntoWebguiQueryParam(
801
- sQueryParam,
802
- oEffectiveParameters,
803
- "%3b", // parameter separator -> ";"
804
- "%3d" // parameter assign delimiter -> "="
805
- );
806
- return sInterpolatedQueryParam;
807
- }
808
- return sQueryParam;
698
+ return fnAmend(sParam);
809
699
  })
810
700
  .filter((sParam) => {
811
701
  return typeof sParam !== "undefined";
812
- }) // remove skipped parameters
813
- .join("&");
814
-
815
- // append non business parameters
816
- const sEffectiveParamsToAppend =
817
- oApplicationTypeUtils.getURLParsing().paramsToString(oEffectiveParametersToAppend);
818
- sParamsInterpolated = [
819
- sParamsInterpolated,
820
- sEffectiveParamsToAppend.replace("~", "%7e") // encodeURIComponent escapes all characters except:
821
- // alphabetic, decimal digits, - _ . ! ~ * ' ( )'
822
- ].join("&");
823
-
824
- oWebguiURI.search(sParamsInterpolated);
825
-
826
- // propagate properties from the inbound in the resolution result
827
- ["additionalInformation", "applicationDependencies", "sap.platform.runtime"].forEach((sPropName) => {
828
- if (oInbound.resolutionResult.hasOwnProperty(sPropName)) {
829
- oResolutionResult[sPropName] = oInbound.resolutionResult[sPropName];
830
- }
831
- });
832
- oResolutionResult.url = oWebguiURI.toString();
833
- oResolutionResult.text = oInbound.title;
834
- oResolutionResult.applicationType = "TR"; // Triggers native navigation
835
- oApplicationTypeUtils.setSystemAlias(oResolutionResult, oInbound.resolutionResult);
702
+ })
703
+ .join(sQueryParamDelimiter);
836
704
 
837
- return oResolutionResult;
705
+ return {
706
+ found: bFound,
707
+ query: sAmendedQuery
708
+ };
838
709
  }
839
710
 
840
711
  /**
841
- * Finds and returns webgui non-business parameters.
712
+ * Interpolates the parameters into the given query using transaction
713
+ * interpolation format.
842
714
  *
843
- * @param {object} oParams
844
- * set of WebGUI parameters
715
+ * The method tries to interpolate the given parameters into the
716
+ * <code>P_OBJECT</code> query parameter if present in the query
717
+ * string. Otherwise the <code>P_OBJECT</code> parameter is added to
718
+ * the query string.
845
719
  *
846
- * @returns {object}
847
- * the set of non-business parameters
720
+ * <p>Contrarily to standard URLs, the parameter must be injected into the
721
+ * query parameter double escaped (via encodeURIComponent) and with
722
+ * the nonstandard delimiters passed as input.
848
723
  *
849
- * @private
850
- */
851
- function getWebguiNonBusinessParameters (oParams) {
852
- let oNonBusinessParams;
853
-
854
- oNonBusinessParams = oCSTRUtils.filterObject(oParams, (sKey, sVal) => {
855
- return !isWebguiBusinessParameter(sKey, sVal);
856
- });
857
-
858
- return oNonBusinessParams;
859
- }
860
-
861
- /**
862
- * Parses Native Webgui query parameter
724
+ * <p >For example, when using '&' and '=' as delimiters, given the
725
+ * query string <code>A=B&P_OBJECT=</code>
726
+ * and the parameter object
727
+ * <pre>
728
+ * {
729
+ * B: ["C"],
730
+ * C: ["D"]
731
+ * }
732
+ * </pre>, the interpolated query string
733
+ * <code>A=B&P_OBJECT=B%2521C%2525C%2521D</code> is returned.
863
734
  *
864
- * @param {string} sTransactionQueryParam
865
- * The full ~transaction query parameter with or without question
866
- * mark. E.g., <code>?%7etransaction=*SU01%20p1%3d%3bP2=v2</code>
735
+ * <p>
736
+ * IMPORTANT: the <code>P_OBJECT</code> parameter can take maximum 132
737
+ * characters in its value. In case the given parameters form a string
738
+ * that is longer than 132 characters (unescaped), the string will be
739
+ * splitted over multiple <code>P_OBJx</code> parameters that are added
740
+ * to the URL.
741
+ * <br />
742
+ * For example, the method may return the following interpolated query:
743
+ * <code>P_OBJ1=rest_of_p_object_value&P_OBJ2=...&P_OBJECT=...some_long_value...</code>
744
+ * </p>
867
745
  *
868
- * @returns {object}
869
- * An object containing the parsed parts of the URL parameter
746
+ * @param {string} sQuery
747
+ * The query string to interpolate the parameters into
748
+ * @param {object} oParamsToInject
749
+ * An object indicating the parameters that need to be interpolated.
750
+ * @param {string} sQueryParamDelimiter
751
+ * The delimiter used to separate parameters and values in <code>sQuery</code>. E.g., "&"
752
+ * @param {string} sQueryParamAssignDelimiter
753
+ * The delimiter used to separate assignments of a value to a parameter in <code>sQuery</code>. E.g., "="
870
754
  *
871
- * @private
755
+ * @returns {string}
756
+ * The interpolated query string.
872
757
  */
873
- function parseWebguiTransactionQueryParam (sTransactionQueryParam) {
874
- const sTransactionValueRe = "^(.+?)(%20|(%20)(.+))?$";
875
- const reTransactionValue = new RegExp(sTransactionValueRe, "i");
876
- let sTransactionValue;
877
- const oParsed = {
878
- hasParameters: null, // whether actual parameters are passed to the transaction
879
- transactionParamName: "", // ?%7etransaction or %7etransaction
880
- transactionCode: "", // SU01 or *SU01
881
- parameters: [] // { name: ..., value: ... }
882
- };
758
+ function injectEffectiveParametersIntoWebguiPobjectParam (sQuery, oParamsToInject, sQueryParamDelimiter, sQueryParamAssignDelimiter) {
759
+ const sPobjectPlusDelimiter = `P_OBJECT${sQueryParamAssignDelimiter}`;
760
+ const iMaxGUIParamLength = 132;
883
761
 
884
- const aParamNameValues = sTransactionQueryParam.split("=");
762
+ // NOTE: the result of privparamsToString does not encode
763
+ // delimiters, hence we pass them encoded.
764
+ let sParamsToInject = oApplicationTypeUtils.getURLParsing().privparamsToString(
765
+ oParamsToInject,
766
+ "%25", // a.k.a. "%", instead of &
767
+ "%21" // a.k.a. "!", instead of =
768
+ );
885
769
 
886
- if (aParamNameValues.length > 2) {
887
- return {
888
- error: "Found more than one assignment ('=') in the transaction query parameter",
889
- details: `Only one '=' sign is expected in ${sTransactionQueryParam}`
890
- };
770
+ if (!sParamsToInject) {
771
+ return sQuery;
891
772
  }
892
773
 
893
- if (aParamNameValues.length < 2 || typeof aParamNameValues[1]
894
- === "undefined" || aParamNameValues[1].length === 0) {
895
- return {
896
- error: "The transaction query parameter must specify at least the transaction name",
897
- details: `Got ${sTransactionQueryParam} instead.`
898
- };
774
+ // Parse away existing parameters in P_OBJECT
775
+ let sParamsToInjectPrefix = "";
776
+ amendGuiParam("P_OBJECT", sQuery, sQueryParamDelimiter, sQueryParamAssignDelimiter,
777
+ (sParamNameAndValueDoubleEncoded) => {
778
+ const sParamValueDoubleEncoded = sParamNameAndValueDoubleEncoded.replace(sPobjectPlusDelimiter, "");
779
+ sParamsToInjectPrefix = decodeURIComponent(sParamValueDoubleEncoded);
780
+ if (sParamsToInjectPrefix.length > 0) {
781
+ sParamsToInjectPrefix = `${sParamsToInjectPrefix}%25`;
782
+ }
783
+
784
+ return sPobjectPlusDelimiter; // just leave the P_OBJECT= placeholder if found
785
+ });
786
+ sParamsToInject = sParamsToInjectPrefix + sParamsToInject;
787
+
788
+ // Generate the injected parameters
789
+ const oParamsSections = {
790
+ pObjX: "",
791
+ pObject: ""
792
+ };
793
+ sParamsToInject
794
+ .match(new RegExp(`.{1,${iMaxGUIParamLength}}`, "g"))
795
+ .map((sParamGroupEncoded) => {
796
+ return encodeURIComponent(sParamGroupEncoded);
797
+ })
798
+ .forEach((sParamGroupDoubleEncoded, iGroupIdx) => {
799
+ // parameter name should be P_OBJECT or P_OBJx for further parameters
800
+ let sParamName = "P_OBJECT";
801
+ let sParamSection = "pObject";
802
+ if (iGroupIdx > 0) {
803
+ sParamName = `P_OBJ${iGroupIdx}`;
804
+ sParamSection = "pObjX";
805
+ }
806
+
807
+ const sSectionDelimiter = oParamsSections[sParamSection].length === 0 ? "" : sQueryParamDelimiter;
808
+
809
+ oParamsSections[sParamSection] = oParamsSections[sParamSection] + sSectionDelimiter + sParamName
810
+ + sQueryParamAssignDelimiter + sParamGroupDoubleEncoded;
811
+ });
812
+
813
+ const sInjectedParams = [oParamsSections.pObjX, oParamsSections.pObject]
814
+ .filter((sParamSection) => {
815
+ return sParamSection.length > 0;
816
+ })
817
+ .join(sQueryParamDelimiter);
818
+
819
+ // Place the injected params in the right place in the query
820
+ const oAmendResult = amendGuiParam("P_OBJECT", sQuery, sQueryParamDelimiter,
821
+ sQueryParamAssignDelimiter, (sFoundParamNameAndValue) => {
822
+ return sInjectedParams;
823
+ });
824
+
825
+ if (oAmendResult.found) {
826
+ return oAmendResult.query;
899
827
  }
900
828
 
901
- oParsed.transactionParamName = aParamNameValues[0];
902
- sTransactionValue = aParamNameValues[1];
829
+ // amendment not performed: just append the concatenation
830
+ return sQuery + (sQuery.length === 0 ? "" : sQueryParamDelimiter) + sInjectedParams;
831
+ }
903
832
 
904
- const aMatch = sTransactionValue.match(reTransactionValue);
905
- if (!aMatch) {
906
- return {
907
- error: "Cannot parse ~transaction query parameter value.",
908
- details: `${sTransactionValue} should match /${sTransactionValueRe}/`
909
- };
833
+ function constructWebguiWrapResult (oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver) {
834
+ const oInbound = oMatchingTarget.inbound;
835
+ const oInboundResolutionResult = oInbound && oInbound.resolutionResult;
836
+
837
+ const oResolutionResult = {};
838
+
839
+ // splice parameters into Webgui url
840
+ const oWebguiURI = new URI(sBaseUrl);
841
+
842
+ // construct effective parameters
843
+
844
+ // NOTE: do not include defaultedParameterNames for wrapped URLs,
845
+ // as they may cause a crash the called application.
846
+ const oEffectiveParameters = deepExtend({}, oMatchingTarget.mappedIntentParamsPlusSimpleDefaults);
847
+
848
+ const sSapSystem = oEffectiveParameters["sap-system"] && oEffectiveParameters["sap-system"][0];
849
+ const sSapSystemDataSrc = oEffectiveParameters["sap-system-src"] && oEffectiveParameters["sap-system-src"][0];
850
+
851
+ // in the Webgui case, the sap-system intent parameter is *not* part of the final url
852
+ oResolutionResult["sap-system"] = sSapSystem;
853
+ delete oEffectiveParameters["sap-system"];
854
+
855
+ if (typeof sSapSystemDataSrc === "string") {
856
+ oResolutionResult["sap-system-src"] = sSapSystemDataSrc;
857
+ delete oEffectiveParameters["sap-system-src"];
910
858
  }
911
859
 
912
- oParsed.transactionCode = aMatch[1];
913
- if (aMatch[2] && aMatch[2] !== "%20") { // if !== "%20" -> matches (%20)(.+)
914
- // must parse parameters
915
- const sTransactionParams = aMatch[4] || "";
916
- sTransactionParams
917
- .split("%3b") // i.e., "="
918
- .forEach((sNameAndValue) => {
919
- const aNameAndValue = sNameAndValue.split("%3d");
920
- const sParamName = aNameAndValue[0];
860
+ return oSystemAlias.spliceSapSystemIntoURI(oWebguiURI, oInboundResolutionResult.systemAlias, sSapSystem,
861
+ sSapSystemDataSrc, "WEBGUI", oInboundResolutionResult.systemAliasSemantics
862
+ || oSystemAlias.SYSTEM_ALIAS_SEMANTICS.applied, fnExternalSystemAliasResolver)
863
+ .then((oWebguiURI) => {
864
+ // Reconstruct the final url
865
+ // ASSUMPTION: there are no relevant parameters in the Webgui url, but only Webgui parameters.
866
+ let sParams = oWebguiURI.search(); // Webgui parameters
921
867
 
922
- if (sParamName && typeof sParamName === "string" && sParamName.length > 0) { // no empty names
923
- oParsed.parameters.push({
924
- name: sParamName,
925
- value: aNameAndValue[1]
926
- });
868
+ // Inject effective startup param
869
+ sParams = injectEffectiveParametersIntoWebguiPobjectParam(sParams, oEffectiveParameters,
870
+ "&", "=");
871
+
872
+ oWebguiURI.search(sParams);
873
+
874
+ // propagate properties from the inbound in the resolution result
875
+ ["additionalInformation", "applicationDependencies"].forEach((sPropName) => {
876
+ if (oInbound.resolutionResult.hasOwnProperty(sPropName)) {
877
+ oResolutionResult[sPropName] = oInbound.resolutionResult[sPropName];
927
878
  }
928
879
  });
929
- }
930
880
 
931
- // post parsing adjustments
881
+ oResolutionResult.url = oWebguiURI.toString();
882
+ oResolutionResult.text = oInbound.title;
883
+ oResolutionResult.applicationType = "NWBC";
884
+ oApplicationTypeUtils.setSystemAlias(oResolutionResult, oInbound.resolutionResult);
932
885
 
933
- // detect whether the transaction name had a '*' or if the * was
934
- // added because of parameters.
935
- // NOTE: **SU01 would be a valid tcode
936
- oParsed.hasParameters = false;
937
- if (oParsed.parameters.length > 0) {
938
- oParsed.hasParameters = true;
886
+ return oResolutionResult;
887
+ });
888
+ }
939
889
 
940
- // must remove the starting "*" from the transaction code if
941
- // any is found (was added because of parameters).
942
- oParsed.transactionCode = oParsed.transactionCode.replace(/^[*]/, "");
943
- }
890
+ function constructNativeWebguiWrapResult (oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver) {
891
+ const oInbound = oMatchingTarget.inbound;
892
+ const oInboundResolutionResult = oInbound && oInbound.resolutionResult;
893
+ const oResolutionResult = {};
944
894
 
945
- return oParsed;
946
- }
895
+ // splice parameters into Webgui url
896
+ const oWebguiURI = new URI(sBaseUrl);
947
897
 
898
+ // construct effective parameters
948
899
 
949
- /**
950
- * Interpolates the given parameters into the webgui ~transaction parameter.
951
- *
952
- * The method tries to intepolate the given parameters after the
953
- * transaction code present in the given ~transaction parameter.
954
- *
955
- * <p>For example, given the query string
956
- * <code>?%7etransaction=SU01</code>
957
- *
958
- * and the parameter object
959
- * <pre>
960
- * {
961
- * B: ["C"],
962
- * C: ["D"]
963
- * }
964
- * </pre>, the following string is returned:
965
- * <code>?%7etransaction=*SU01%20B%3dC%3bC%3dD</code
966
- *
967
- * @param {string} sTransactionQueryParam
968
- * The whole ~transaction parameter. Must start with "?%7etransaction" or "%7etransaction".
969
- * For example <ul
970
- * <li><code>%7etransaction=*SU01%20AAAA%3d4321</code> (with AAAA=4321 parameter)</li>
971
- * <li><code>?%7etransaction=SU01</code> (no parameters)</li>
972
- * </ul>
973
- * @param {object} oParamsToInject
974
- * An object ating the parameters that need to be interpolated
975
- * into <code>sTransactionQueryParam</code>.
976
- *
977
- * @returns {string}
978
- * The interpolated ~transaction parameter (the leading ? is
979
- * preserved if passed). The transaction code will have the form
980
- * <code>*[CODE]%20[PARAMETERS]]</code> only when the transaction
981
- * will be called with parameters, otherwise the format would be
982
- * <code>[CODE]</code>.
983
- */
984
- function injectEffectiveParametersIntoWebguiQueryParam (sTransactionQueryParam, oParamsToInject) {
985
- const oParsedTransactionQueryParam = parseWebguiTransactionQueryParam(sTransactionQueryParam);
986
- if (oParsedTransactionQueryParam.error) {
987
- Log.error(
988
- oParsedTransactionQueryParam.error,
989
- oParsedTransactionQueryParam.details,
990
- "sap.ushell.services.ClientSideTargetResolution"
991
- );
992
- return sTransactionQueryParam;
993
- }
900
+ // NOTE: do not include defaultedParameterNames for wrapped URLs,
901
+ // as they may cause a crash the called application.
902
+ const oEffectiveParameters = deepExtend({}, oMatchingTarget.mappedIntentParamsPlusSimpleDefaults);
994
903
 
995
- // Inject parameters
996
- const aParametersFinal = oParsedTransactionQueryParam.parameters.map((oParameter) => {
997
- return `${oParameter.name.toUpperCase()}%3d${oParameter.value}`;
998
- });
904
+ const sSapSystem = oEffectiveParameters["sap-system"] && oEffectiveParameters["sap-system"][0];
905
+ const sSapSystemDataSrc = oEffectiveParameters["sap-system-src"] && oEffectiveParameters["sap-system-src"][0];
999
906
 
1000
- const sSkipValue = getExplicitSkipSelectionScreenParameter(oParamsToInject);
907
+ // in the Webgui case, the sap-system intent parameter is *not* part of the final url
908
+ oResolutionResult["sap-system"] = sSapSystem;
909
+ delete oEffectiveParameters["sap-system"];
1001
910
 
1002
- // Turn all names upper case
1003
- const oParamsToInjectUpperCase = {};
1004
- Object.keys(oParamsToInject).forEach((sKey) => {
1005
- oParamsToInjectUpperCase[sKey.toUpperCase()] = oParamsToInject[sKey];
1006
- });
1007
- // NOTE: privparamsToString treats delimiters verbatim and encodes
1008
- // the parameters if necessary.
1009
- // Therefore we pass the delimiters already encoded!
1010
- //
1011
- let sParamsToInject = oApplicationTypeUtils.getURLParsing().privparamsToString(
1012
- oParamsToInjectUpperCase,
1013
- "%3b", // parameters delimiter
1014
- "%3d" // assigment
1015
- );
1016
- if (sParamsToInject) {
1017
- if (Object.keys(oParamsToInject).length > 0) {
1018
- sParamsToInject += "%3b";
1019
- }
1020
- aParametersFinal.push(sParamsToInject);
911
+ // in the Webgui case, the sap-system-src intent parameter is *not* part of the final url
912
+ if (typeof sSapSystemDataSrc === "string") {
913
+ oResolutionResult["sap-system-src"] = sSapSystemDataSrc;
914
+ delete oEffectiveParameters["sap-system-src"];
1021
915
  }
1022
916
 
1023
- // Note: do not rely on oParsedTransactionQueryParam as we may
1024
- // still have injected parameters here.
1025
- const bHasParameters = aParametersFinal.length > 0;
917
+ return oSystemAlias.spliceSapSystemIntoURI(oWebguiURI, oInboundResolutionResult.systemAlias, sSapSystem,
918
+ sSapSystemDataSrc, "NATIVEWEBGUI",
919
+ oInboundResolutionResult.systemAliasSemantics
920
+ || oSystemAlias.SYSTEM_ALIAS_SEMANTICS.applied, fnExternalSystemAliasResolver)
921
+ .then((oWebguiURI) => {
922
+ // Reconstruct the final url
923
+ // ASSUMPTION: there are no relevant parameters in the Webgui url, but only Webgui parameters.
1026
924
 
1027
- return `${oParsedTransactionQueryParam.transactionParamName}=${
1028
- bHasParameters && (sSkipValue === "" || sSkipValue === "1") ? "*" : ""
1029
- }${oParsedTransactionQueryParam.transactionCode}${bHasParameters ? "%20" : ""}${aParametersFinal.join("%3b")}`;
925
+ const sParams = oWebguiURI.search(); // Webgui parameters
926
+ const sParamsInterpolated = sParams
927
+ .split("&")
928
+ .map((sQueryParam) => {
929
+ // interpolate effective parameter in the correct place within the ~transaction parameter
930
+
931
+ let sInterpolatedQueryParam;
932
+ if (sQueryParam.indexOf("?%7etransaction") === 0 ||
933
+ sQueryParam.indexOf("%7etransaction") === 0) { // found transaction
934
+ // treat transaction as if it was a query parameter
935
+ sInterpolatedQueryParam = injectEffectiveParametersIntoWebguiPobjectParam(
936
+ sQueryParam,
937
+ oEffectiveParameters,
938
+ "%3b", // parameter separator -> ";"
939
+ "%3d" // parameter assign delimiter -> "="
940
+ );
941
+ return sInterpolatedQueryParam;
942
+ }
943
+
944
+ return sQueryParam;
945
+ })
946
+ .join("&");
947
+
948
+ oWebguiURI.search(sParamsInterpolated);
949
+
950
+ // propagate properties from the inbound in the resolution result
951
+ ["additionalInformation", "applicationDependencies"].forEach((sPropName) => {
952
+ if (oInbound.resolutionResult.hasOwnProperty(sPropName)) {
953
+ oResolutionResult[sPropName] = oInbound.resolutionResult[sPropName];
954
+ }
955
+ });
956
+ oResolutionResult.url = oWebguiURI.toString();
957
+ oResolutionResult.text = oInbound.title;
958
+ oResolutionResult.applicationType = "TR"; // Triggers Native navigation
959
+ oApplicationTypeUtils.setSystemAlias(oResolutionResult, oInbound.resolutionResult);
960
+
961
+ return oResolutionResult;
962
+ });
1030
963
  }
1031
964
 
1032
- /**
1033
- * extract the DYNP_SKIP_SEL_SCREEN parameter that indicates whether to
1034
- * how the selection screen even if parameters are sent
1035
- *
1036
- * @private
1037
- */
1038
- function getExplicitSkipSelectionScreenParameter (oParamsToInject) {
1039
- let sSkipValue = "";
1040
- if (oParamsToInject.hasOwnProperty("DYNP_SKIP_SEL_SCREEN")) {
1041
- const sParamVal = oParamsToInject.DYNP_SKIP_SEL_SCREEN[0];
1042
- delete oParamsToInject.DYNP_SKIP_SEL_SCREEN;
1043
- if (sParamVal === "" ||
1044
- sParamVal === " " ||
1045
- sParamVal === "0" ||
1046
- sParamVal === 0 ||
1047
- (typeof sParamVal === "string" && sParamVal.toLowerCase() === "false")) {
1048
- sSkipValue = "0";
1049
- } else if (sParamVal === "1" ||
1050
- sParamVal === 1 ||
1051
- (typeof sParamVal === "string" && sParamVal.toLowerCase() === "true")) {
1052
- sSkipValue = "1";
1053
- }
965
+ function generateTRResolutionResult (oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver) {
966
+ const oInbound = oMatchingTarget.inbound;
967
+ const oResolutionResult = oInbound && oInbound.resolutionResult;
968
+ let oPromise;
969
+
970
+ if (
971
+ !(!oInbound ||
972
+ !oResolutionResult ||
973
+ !(oResolutionResult["sap.gui"]) ||
974
+ !(oResolutionResult.applicationType === "TR"))
975
+ ) {
976
+ oPromise = constructFullWebguiResolutionResult(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
977
+ } else if (
978
+ !(!oInbound ||
979
+ !oResolutionResult ||
980
+ !(oResolutionResult.applicationType === "TR") ||
981
+ !(oResolutionResult.url.indexOf("/~canvas;") >= 0) ||
982
+ !(oResolutionResult.url.indexOf("app/transaction/APB_LPD_CALL_") === -1)) // check no WRAPPED transaction
983
+ ) {
984
+ oPromise = constructWebguiNowrapResult(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
985
+ } else if (
986
+ !(!oInbound ||
987
+ !oResolutionResult ||
988
+ !(oResolutionResult.applicationType === "TR") ||
989
+ !(oResolutionResult.url.indexOf("/~canvas;") >= 0) ||
990
+ !(oResolutionResult.url.indexOf("app/transaction/APB_LPD_CALL_") >= 0)) // check WRAPPED transaction
991
+ ) {
992
+ oPromise = constructWebguiWrapResult(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
993
+ } else if (
994
+ !(// a native webgui URL
995
+ !oInbound ||
996
+ !oResolutionResult ||
997
+ !(oResolutionResult.applicationType === "TR") ||
998
+ !(oResolutionResult.url.indexOf("/its/webgui") >= 0) ||
999
+ !(oResolutionResult.url.indexOf("APB_LPD_CALL_") === -1) // a non wrapped URL
1000
+ )
1001
+ ) {
1002
+ oPromise = constructNativeWebguiNowrapResult(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
1003
+ } else if (
1004
+ !(// a native webgui URL
1005
+ !oInbound ||
1006
+ !oResolutionResult ||
1007
+ !(oResolutionResult.applicationType === "TR") ||
1008
+ !(oResolutionResult.url.indexOf("/its/webgui") >= 0) ||
1009
+ !(oResolutionResult.url.indexOf("APB_LPD_CALL_") !== -1) // a WRAPPED URL
1010
+ )
1011
+ ) {
1012
+ oPromise = constructNativeWebguiWrapResult(oMatchingTarget, sBaseUrl, fnExternalSystemAliasResolver);
1054
1013
  }
1055
- return sSkipValue;
1014
+
1015
+ if (oPromise) {
1016
+ return oPromise.then(async (oResult) => {
1017
+ if (oResult.url) {
1018
+ oResult.url = oApplicationTypeUtils.appendParametersToUrl("sap-iframe-hint=GUI", oResult.url);
1019
+ if (Config.last("/core/extension/dap/enabled")) {
1020
+ const oPluginManager = await Container.getServiceAsync("PluginManager");
1021
+ const bDapInstalled = oPluginManager.isPluginConfigured(Config.last("/core/extension/dap/pluginName"));
1022
+ oResult.url = oApplicationTypeUtils.appendParametersToUrl(`sap-load-dap=${bDapInstalled}`, oResult.url);
1023
+ } else {
1024
+ oResult.url = oApplicationTypeUtils.appendParametersToUrl("sap-load-dap=false", oResult.url);
1025
+ }
1026
+ }
1027
+ oResult.extendedInfo = oApplicationTypeUtils.getExtendedInfo(oMatchingTarget);
1028
+ oApplicationTypeUtils.checkOpenWithPost(oMatchingTarget, oResult);
1029
+ oApplicationTypeUtils.addKeepAliveToURLTemplateResult(oResult);
1030
+ return oResult;
1031
+ });
1032
+ }
1033
+ throw new Error("Cannot generate TR resolution result");
1056
1034
  }
1057
1035
 
1058
1036
  /**
@@ -1068,6 +1046,10 @@ sap.ui.define([
1068
1046
  * The matching target, an oInbound.resolutionResult["sap.platform.runtime"] member will be propagated
1069
1047
  *
1070
1048
  * a System Alias in the TM will not be used
1049
+ *
1050
+ * @param {function} fnExternalSystemAliasResolver
1051
+ * the external system alias resolver.
1052
+ *
1071
1053
  * @returns {Promise}
1072
1054
  * A promise that resolved with the Matching Target(!) amended with the resolution result generated from
1073
1055
  * the given intent, or rejects with an error message.
@@ -1110,7 +1092,7 @@ sap.ui.define([
1110
1092
  generateTRResolutionResult: generateTRResolutionResult,
1111
1093
  resolveEasyAccessMenuIntentWebgui: resolveEasyAccessMenuIntentWebgui,
1112
1094
 
1113
- //temp for webgui bug fix
1095
+ // temp for webgui bug fix
1114
1096
  getUnnecessaryWebguiParameters: getUnnecessaryWebguiParameters,
1115
1097
  removeObjectKey: removeObjectKey,
1116
1098
  getExplicitSkipSelectionScreenParameter: getExplicitSkipSelectionScreenParameter,