@sapui5/sap.ushell 1.124.2 → 1.124.4

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 (231) hide show
  1. package/package.json +1 -1
  2. package/src/main/js/sap/ushell/.library +1 -1
  3. package/src/main/js/sap/ushell/Container.js +137 -62
  4. package/src/main/js/sap/ushell/Fiori20Adapter.js +1 -1
  5. package/src/main/js/sap/ushell/Fiori20AdapterTest.js +1 -1
  6. package/src/main/js/sap/ushell/NWBCInterface.js +1 -1
  7. package/src/main/js/sap/ushell/SessionHandler.js +35 -31
  8. package/src/main/js/sap/ushell/TechnicalParameters.js +1 -1
  9. package/src/main/js/sap/ushell/URLTemplateProcessor.js +1 -1
  10. package/src/main/js/sap/ushell/Ui5NativeServiceFactory.js +1 -1
  11. package/src/main/js/sap/ushell/Ui5ServiceFactory.js +1 -1
  12. package/src/main/js/sap/ushell/_URLTemplateProcessor/DefinitionParameterSetBuilder.js +1 -1
  13. package/src/main/js/sap/ushell/_URLTemplateProcessor/DependencyGraph.js +1 -1
  14. package/src/main/js/sap/ushell/_URLTemplateProcessor/Functions.js +1 -1
  15. package/src/main/js/sap/ushell/_URLTemplateProcessor/Resolvers.js +1 -1
  16. package/src/main/js/sap/ushell/_URLTemplateProcessor/TemplateParameterParser.js +1 -1
  17. package/src/main/js/sap/ushell/_URLTemplateProcessor/utils.js +1 -1
  18. package/src/main/js/sap/ushell/adapters/cdm/ClientSideTargetResolutionAdapter.js +1 -1
  19. package/src/main/js/sap/ushell/adapters/cdm/CommonDataModelAdapter.js +1 -1
  20. package/src/main/js/sap/ushell/adapters/cdm/ConfigurationDefaultsAdapter.js +1 -1
  21. package/src/main/js/sap/ushell/adapters/cdm/ContainerAdapter.js +1 -1
  22. package/src/main/js/sap/ushell/adapters/cdm/LaunchPageAdapter.js +1 -1
  23. package/src/main/js/sap/ushell/adapters/cdm/PagesCommonDataModelAdapter.js +1 -1
  24. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationAdapter.js +1 -1
  25. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationV2Adapter.js +1 -1
  26. package/src/main/js/sap/ushell/adapters/cdm/Ui5ComponentLoaderAdapter.js +1 -1
  27. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/modifyHome.js +1 -1
  28. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readCatalogs.js +1 -1
  29. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readHome.js +1 -1
  30. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/uri.transform.js +1 -1
  31. package/src/main/js/sap/ushell/adapters/cdm/util/AppForInbound.js +1 -1
  32. package/src/main/js/sap/ushell/adapters/cdm/util/cdmSiteUtils.js +1 -1
  33. package/src/main/js/sap/ushell/adapters/cdm/v3/AdapterBase.js +1 -1
  34. package/src/main/js/sap/ushell/adapters/cdm/v3/FlpLaunchPageAdapter.js +1 -1
  35. package/src/main/js/sap/ushell/adapters/cdm/v3/LaunchPageAdapter.js +1 -1
  36. package/src/main/js/sap/ushell/adapters/cdm/v3/StaticGroupsAdapter.js +1 -1
  37. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readApplications.js +1 -1
  38. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readCatalogs.js +1 -1
  39. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readHome.js +1 -1
  40. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readPages.js +1 -1
  41. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readUtils.js +1 -1
  42. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readVisualizations.js +1 -1
  43. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionAdapter.js +1 -1
  44. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionInternalAdapter.js +1 -1
  45. package/src/main/js/sap/ushell/adapters/cep/SearchCEPAdapter.js +1 -1
  46. package/src/main/js/sap/ushell/adapters/cflp/UserDefaultParameterPersistenceAdapter.js +1 -1
  47. package/src/main/js/sap/ushell/adapters/local/AdapterContainer.js +1 -1
  48. package/src/main/js/sap/ushell/adapters/local/AppStateAdapter.js +1 -1
  49. package/src/main/js/sap/ushell/adapters/local/ClientSideTargetResolutionAdapter.js +1 -1
  50. package/src/main/js/sap/ushell/adapters/local/ContainerAdapter.js +1 -1
  51. package/src/main/js/sap/ushell/adapters/local/FlpLaunchPageAdapter.js +1 -1
  52. package/src/main/js/sap/ushell/adapters/local/LaunchPageAdapter.js +1 -1
  53. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionAdapter.js +1 -1
  54. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionInternalAdapter.js +1 -1
  55. package/src/main/js/sap/ushell/adapters/local/PageBuildingAdapter.js +1 -1
  56. package/src/main/js/sap/ushell/adapters/local/PagePersistenceAdapter.js +1 -1
  57. package/src/main/js/sap/ushell/adapters/local/PersonalizationAdapter.js +1 -1
  58. package/src/main/js/sap/ushell/adapters/local/PersonalizationV2Adapter.js +1 -1
  59. package/src/main/js/sap/ushell/adapters/local/SearchAdapter.js +1 -1
  60. package/src/main/js/sap/ushell/adapters/local/SearchCEPAdapter.js +1 -1
  61. package/src/main/js/sap/ushell/adapters/local/SupportTicketAdapter.js +1 -1
  62. package/src/main/js/sap/ushell/adapters/local/Ui5ComponentLoaderAdapter.js +1 -1
  63. package/src/main/js/sap/ushell/adapters/local/UserDefaultParameterPersistenceAdapter.js +1 -1
  64. package/src/main/js/sap/ushell/adapters/local/UserInfoAdapter.js +1 -1
  65. package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntime.js +6 -0
  66. package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/Renderer.js +19 -0
  67. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycle.js +51 -0
  68. package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension/Item.js +1 -1
  69. package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/Ui5ComponentLoaderAdapter.js +1 -1
  70. package/src/main/js/sap/ushell/bootstrap/_SchedulingAgent/logger.js +1 -1
  71. package/src/main/js/sap/ushell/bootstrap/_SchedulingAgent/state.js +1 -1
  72. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5datetimeformat.js +1 -1
  73. package/src/main/js/sap/ushell/bootstrap/sandbox2.js +1 -1
  74. package/src/main/js/sap/ushell/components/HomepageManager.js +1 -0
  75. package/src/main/js/sap/ushell/components/appfinder/manifest.json +1 -1
  76. package/src/main/js/sap/ushell/components/applicationIntegration/AppLifeCycle.js +87 -4
  77. package/src/main/js/sap/ushell/components/applicationIntegration/application/Application.js +1 -1
  78. package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxHandler.js +2 -2
  79. package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageAPI.js +11 -1
  80. package/src/main/js/sap/ushell/components/applicationIntegration/configuration/AppMeta.js +1 -1
  81. package/src/main/js/sap/ushell/components/applicationIntegration/elements/model.js +25 -2
  82. package/src/main/js/sap/ushell/components/applicationIntegration/relatedServices/RelatedServices.js +1 -1
  83. package/src/main/js/sap/ushell/components/applicationIntegration/relatedShellElements/RelatedShellElements.js +1 -1
  84. package/src/main/js/sap/ushell/components/container/ApplicationContainer.js +1 -1
  85. package/src/main/js/sap/ushell/components/contentFinder/Component.js +1 -1
  86. package/src/main/js/sap/ushell/components/contentFinder/controller/AppSearch.controller.js +1 -1
  87. package/src/main/js/sap/ushell/components/contentFinder/controller/ContentFinderDialog.controller.js +1 -1
  88. package/src/main/js/sap/ushell/components/contentFinder/controller/WidgetGallery.controller.js +1 -1
  89. package/src/main/js/sap/ushell/components/contentFinder/manifest.json +1 -1
  90. package/src/main/js/sap/ushell/components/contentFinderStandalone/Component.js +1 -1
  91. package/src/main/js/sap/ushell/components/contentFinderStandalone/controller/ContentFinderStandalone.controller.js +1 -1
  92. package/src/main/js/sap/ushell/components/contentFinderStandalone/manifest.json +1 -1
  93. package/src/main/js/sap/ushell/components/contentFinderStandalone/manifestAppSearch.json +1 -1
  94. package/src/main/js/sap/ushell/components/factsheet/Component.js +1 -1
  95. package/src/main/js/sap/ushell/components/homepage/ActionMode.js +1 -1
  96. package/src/main/js/sap/ushell/components/homepage/DashboardContent.view.js +1 -1
  97. package/src/main/js/sap/ushell/components/homepage/DashboardGroupsBox.js +1 -1
  98. package/src/main/js/sap/ushell/components/homepage/DashboardUIActions.js +1 -1
  99. package/src/main/js/sap/ushell/components/homepage/manifest.json +1 -1
  100. package/src/main/js/sap/ushell/components/pages/ActionMode.js +1 -1
  101. package/src/main/js/sap/ushell/components/pages/Component.js +1 -1
  102. package/src/main/js/sap/ushell/components/pages/MyHomeImport.js +1 -1
  103. package/src/main/js/sap/ushell/components/pages/controller/PageRuntime.controller.js +2 -1
  104. package/src/main/js/sap/ushell/components/pages/manifest.json +1 -1
  105. package/src/main/js/sap/ushell/components/runtimeSwitcher/controller/RuntimeSwitcher.controller.js +1 -1
  106. package/src/main/js/sap/ushell/components/runtimeSwitcher/manifest.json +1 -1
  107. package/src/main/js/sap/ushell/components/shell/MenuBar/manifest.json +1 -1
  108. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenu.controller.js +1 -1
  109. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/manifest.json +1 -1
  110. package/src/main/js/sap/ushell/components/shell/Notifications/Component.js +1 -1
  111. package/src/main/js/sap/ushell/components/shell/Notifications/Notifications.controller.js +1 -2
  112. package/src/main/js/sap/ushell/components/shell/ProductSwitch/Component.js +1 -1
  113. package/src/main/js/sap/ushell/components/shell/Search/manifest.json +1 -1
  114. package/src/main/js/sap/ushell/components/shell/SearchCEP/Component.js +1 -1
  115. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/FrequentActivityProvider.js +1 -1
  116. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/RecentSearchProvider.js +1 -1
  117. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchProvider.js +1 -1
  118. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchServiceProvider.js +1 -1
  119. package/src/main/js/sap/ushell/components/shell/Settings/Component.js +1 -1
  120. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/Component.js +1 -1
  121. package/src/main/js/sap/ushell/components/shell/UserImage/Component.js +1 -1
  122. package/src/main/js/sap/ushell/components/visualizationOrganizer/Component.js +1 -1
  123. package/src/main/js/sap/ushell/components/workPageBuilder/Component.js +1 -1
  124. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.accessibility.js +1 -1
  125. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.controller.js +1 -1
  126. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPage.js +1 -1
  127. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageButton.js +1 -1
  128. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageCell.js +1 -1
  129. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumn.js +1 -1
  130. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnResizer.js +1 -1
  131. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRow.js +1 -1
  132. package/src/main/js/sap/ushell/components/workPageBuilder/manifest.json +1 -1
  133. package/src/main/js/sap/ushell/components/workPageRuntime/Component.js +1 -1
  134. package/src/main/js/sap/ushell/components/workPageRuntime/controller/WorkPageRuntime.controller.js +1 -1
  135. package/src/main/js/sap/ushell/components/workPageRuntime/manifest.json +1 -1
  136. package/src/main/js/sap/ushell/designtime/ApplicationContainer.designtime.js +1 -1
  137. package/src/main/js/sap/ushell/library.js +1 -1
  138. package/src/main/js/sap/ushell/navigationMode.js +1 -1
  139. package/src/main/js/sap/ushell/performance/ShellAnalytics.js +1 -1
  140. package/src/main/js/sap/ushell/performance/StatisticalRecord.js +1 -1
  141. package/src/main/js/sap/ushell/plugins/appwarmup/Component.js +1 -1
  142. package/src/main/js/sap/ushell/renderer/Renderer.js +44 -10
  143. package/src/main/js/sap/ushell/renderer/search/searchComponent/manifest.json +1 -1
  144. package/src/main/js/sap/ushell/services/AppLifeCycle.js +1 -1
  145. package/src/main/js/sap/ushell/services/AppState.js +1 -1
  146. package/src/main/js/sap/ushell/services/Bookmark.js +1 -1
  147. package/src/main/js/sap/ushell/services/BookmarkV2.js +1 -1
  148. package/src/main/js/sap/ushell/services/ClientSideTargetResolution.js +1 -1
  149. package/src/main/js/sap/ushell/services/CommonDataModel.js +1 -1
  150. package/src/main/js/sap/ushell/services/Configuration.js +1 -1
  151. package/src/main/js/sap/ushell/services/ConfigurationDefaults.js +1 -1
  152. package/src/main/js/sap/ushell/services/ContentExtensionAdapterFactory.js +1 -1
  153. package/src/main/js/sap/ushell/services/CrossApplicationNavigation.js +14 -3
  154. package/src/main/js/sap/ushell/services/DarkModeSupport.js +1 -1
  155. package/src/main/js/sap/ushell/services/Extension/Item.js +38 -2
  156. package/src/main/js/sap/ushell/services/Extension.js +9 -4
  157. package/src/main/js/sap/ushell/services/FlpLaunchPage.js +1 -1
  158. package/src/main/js/sap/ushell/services/FrameBoundExtension/FloatingContainer.js +1 -1
  159. package/src/main/js/sap/ushell/services/FrameBoundExtension/Footer.js +1 -1
  160. package/src/main/js/sap/ushell/services/FrameBoundExtension/Item.js +39 -3
  161. package/src/main/js/sap/ushell/services/FrameBoundExtension/SidePane.js +5 -2
  162. package/src/main/js/sap/ushell/services/FrameBoundExtension/ToolArea.js +5 -2
  163. package/src/main/js/sap/ushell/services/FrameBoundExtension.js +11 -5
  164. package/src/main/js/sap/ushell/services/LaunchPage.js +1 -1
  165. package/src/main/js/sap/ushell/services/Menu.js +1 -1
  166. package/src/main/js/sap/ushell/services/Message.js +1 -1
  167. package/src/main/js/sap/ushell/services/MessageBroker.js +1 -1
  168. package/src/main/js/sap/ushell/services/Navigation/compatibility.js +1 -1
  169. package/src/main/js/sap/ushell/services/Navigation/utils.js +1 -1
  170. package/src/main/js/sap/ushell/services/Navigation.js +1 -1
  171. package/src/main/js/sap/ushell/services/NavigationDataProvider.js +1 -1
  172. package/src/main/js/sap/ushell/services/PageBuilding.js +1 -1
  173. package/src/main/js/sap/ushell/services/PagePersistence.js +1 -1
  174. package/src/main/js/sap/ushell/services/PageReferencing.js +1 -1
  175. package/src/main/js/sap/ushell/services/Pages.js +1 -1
  176. package/src/main/js/sap/ushell/services/Personalization.js +1 -1
  177. package/src/main/js/sap/ushell/services/PersonalizationV2.js +1 -1
  178. package/src/main/js/sap/ushell/services/PluginManager.js +1 -1
  179. package/src/main/js/sap/ushell/services/ReferenceResolver.js +1 -1
  180. package/src/main/js/sap/ushell/services/Search.js +1 -1
  181. package/src/main/js/sap/ushell/services/SearchCEP.js +1 -1
  182. package/src/main/js/sap/ushell/services/SearchableContent.js +1 -1
  183. package/src/main/js/sap/ushell/services/ShellNavigation.js +1 -1
  184. package/src/main/js/sap/ushell/services/SmartNavigation.js +1 -1
  185. package/src/main/js/sap/ushell/services/SpaceContent.js +1 -1
  186. package/src/main/js/sap/ushell/services/UITracer.js +1 -1
  187. package/src/main/js/sap/ushell/services/URLShortening.js +1 -1
  188. package/src/main/js/sap/ushell/services/URLTemplate.js +1 -1
  189. package/src/main/js/sap/ushell/services/Ui5ComponentLoader.js +3 -3
  190. package/src/main/js/sap/ushell/services/UserDefaultParameterPersistence.js +1 -1
  191. package/src/main/js/sap/ushell/services/UserDefaultParameters.js +1 -1
  192. package/src/main/js/sap/ushell/services/UserInfo.js +1 -1
  193. package/src/main/js/sap/ushell/services/UserRecents.js +1 -1
  194. package/src/main/js/sap/ushell/services/VisualizationDataProvider.js +1 -1
  195. package/src/main/js/sap/ushell/services/VisualizationInstantiation.js +1 -1
  196. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/Formatter.js +1 -1
  197. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/InboundIndex.js +1 -1
  198. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/InboundProvider.js +1 -1
  199. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/PrelaunchOperations.js +1 -1
  200. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/Search.js +1 -1
  201. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/StagedLogger.js +1 -1
  202. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/SystemContext.js +1 -1
  203. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/Utils.js +1 -1
  204. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/VirtualInbounds.js +1 -1
  205. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/XAppStateProcessing.js +1 -1
  206. package/src/main/js/sap/ushell/services/_CommonDataModel/SiteConverter.js +1 -1
  207. package/src/main/js/sap/ushell/services/_CommonDataModel/vizTypeDefaults/VizTypeDefaults.js +1 -1
  208. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/ContentExtensionAdapterConfig.js +1 -1
  209. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/FeaturedGroupConfig.js +1 -1
  210. package/src/main/js/sap/ushell/services/_CrossApplicationNavigation/utils.js +1 -1
  211. package/src/main/js/sap/ushell/services/_MessageBroker/MessageBrokerEngine.js +1 -1
  212. package/src/main/js/sap/ushell/services/_PageReferencing/PageReferencer.js +1 -1
  213. package/src/main/js/sap/ushell/services/_PluginManager/Extensions.js +1 -1
  214. package/src/main/js/sap/ushell/services/_PluginManager/HeaderExtensions.js +1 -1
  215. package/src/main/js/sap/ushell/services/_PluginManager/MenuExtensions.js +1 -1
  216. package/src/main/js/sap/ushell/services/_Ui5ComponentLoader/utils.js +1 -1
  217. package/src/main/js/sap/ushell/support/plugins/flpConfig/FlpConfigurationPlugin.js +1 -1
  218. package/src/main/js/sap/ushell/ui/cards/FrequentActivitiesExtension.js +0 -4
  219. package/src/main/js/sap/ushell/ui/cards/RecentActivitiesExtension.js +1 -5
  220. package/src/main/js/sap/ushell/ui/launchpad/ExtendedChangeDetection.js +1 -1
  221. package/src/main/js/sap/ushell/ui/launchpad/Section.js +1 -1
  222. package/src/main/js/sap/ushell/ui/launchpad/section/CompactArea.js +1 -1
  223. package/src/main/js/sap/ushell/ui/shell/ToolAreaItem.js +1 -1
  224. package/src/main/js/sap/ushell/ui/utils.js +1 -1
  225. package/src/main/js/sap/ushell/ui5service/ShellUIService.js +1 -1
  226. package/src/main/js/sap/ushell/ui5service/UserStatus.js +1 -1
  227. package/src/main/js/sap/ushell/utils/UrlShortening.js +1 -1
  228. package/src/main/js/sap/ushell/utils/workpage/WorkPageHost.js +1 -1
  229. package/src/main/js/sap/ushell/utils/workpage/WorkPageService.js +1 -1
  230. package/src/main/js/sap/ushell/utils/workpage/WorkPageVizInstantiation.js +1 -1
  231. package/src/test/js/sap/ushell/bootstrap/sandbox.js +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.ushell",
3
- "version": "1.124.2",
3
+ "version": "1.124.4",
4
4
  "description": "SAPUI5 Library sap.ushell",
5
5
  "homepage": "https://sap.github.io/ui5-tooling/pages/SAPUI5/",
6
6
  "keywords": [
@@ -2,7 +2,7 @@
2
2
  <library xmlns="http://www.sap.com/sap.ui.library.xsd">
3
3
  <name>sap.ushell</name>
4
4
  <vendor>SAP SE</vendor>
5
- <version>1.124.2</version>
5
+ <version>1.124.4</version>
6
6
  <copyright>Copyright (c) 2009-2023 SAP SE, All Rights Reserved</copyright>
7
7
  <documentation>SAP library: sap.ushell</documentation>
8
8
 
@@ -94,6 +94,7 @@ sap.ui.define([
94
94
  var mPlatformPackages;
95
95
  var aAsyncLogoutEventFunctions = []; //async logout even functions that return a promise
96
96
  var oContainerInstance;
97
+ let aRegisteredLogoutHandlers = [];
97
98
 
98
99
  // Try to close window. Note: Most browsers do NOT allow closing windows by JS if they were opened manually.
99
100
  function closeWindow () {
@@ -1738,6 +1739,7 @@ sap.ui.define([
1738
1739
 
1739
1740
  /**
1740
1741
  * Logs out the current user from all relevant back-end systems, including the logon system itself.
1742
+ * This method also iterates through all registered logout handlers and calls them before continuing with the default logout.
1741
1743
  *
1742
1744
  * @returns {jQuery.Promise} Resolves when logout is finished, even when it fails.
1743
1745
  *
@@ -1748,77 +1750,79 @@ sap.ui.define([
1748
1750
  this.defaultLogout = function () {
1749
1751
  var oDeferred = new jQuery.Deferred();
1750
1752
 
1751
- function resolve () {
1752
- oAdapter.logout(true).always(function () {
1753
- oLocalStorage.removeItem(sSessionTerminationKey);
1754
- oDeferred.resolve();
1755
- });
1756
- }
1757
-
1758
- function logoutLogonSystem () {
1759
- var oDeferredAsyncLogoutEvent = new jQuery.Deferred();
1760
- var oPromiseAsyncLogoutEvent = oDeferredAsyncLogoutEvent.promise();
1761
- var arrLogoutEventsPromises = [];
1753
+ this.callRegisteredLogoutHandlers().then(() => {
1754
+ function resolve () {
1755
+ oAdapter.logout(true).always(function () {
1756
+ oLocalStorage.removeItem(sSessionTerminationKey);
1757
+ oDeferred.resolve();
1758
+ });
1759
+ }
1762
1760
 
1763
- if (aAsyncLogoutEventFunctions.length > 0) {
1764
- for (var i = 0; i < aAsyncLogoutEventFunctions.length; i++) {
1765
- arrLogoutEventsPromises.push(aAsyncLogoutEventFunctions[i]());
1766
- }
1767
- Promise.all(arrLogoutEventsPromises).then(oDeferredAsyncLogoutEvent.resolve);
1761
+ function logoutLogonSystem () {
1762
+ var oDeferredAsyncLogoutEvent = new jQuery.Deferred();
1763
+ var oPromiseAsyncLogoutEvent = oDeferredAsyncLogoutEvent.promise();
1764
+ var arrLogoutEventsPromises = [];
1768
1765
 
1769
- //if after 4 seconds we did not get all the async callbacks
1770
- //promises resolved, we will continue with the logout process
1771
- setTimeout(oDeferredAsyncLogoutEvent.resolve, 4000);
1772
- } else {
1773
- oDeferredAsyncLogoutEvent.resolve();
1774
- }
1766
+ if (aAsyncLogoutEventFunctions.length > 0) {
1767
+ for (var i = 0; i < aAsyncLogoutEventFunctions.length; i++) {
1768
+ arrLogoutEventsPromises.push(aAsyncLogoutEventFunctions[i]());
1769
+ }
1770
+ Promise.all(arrLogoutEventsPromises).then(oDeferredAsyncLogoutEvent.resolve);
1775
1771
 
1776
- oPromiseAsyncLogoutEvent.done(function () {
1777
- if (oEventProvider.fireEvent("Logout", true)) {
1778
- resolve();
1772
+ //if after 4 seconds we did not get all the async callbacks
1773
+ //promises resolved, we will continue with the logout process
1774
+ setTimeout(oDeferredAsyncLogoutEvent.resolve, 4000);
1779
1775
  } else {
1780
- // defer UShell redirect to let NWBC receive message asynchronously
1781
- setTimeout(resolve, 1000);
1776
+ oDeferredAsyncLogoutEvent.resolve();
1782
1777
  }
1783
- });
1784
- }
1785
-
1786
- function federatedLogout () {
1787
- var aRemoteLogoutPromises = [];
1788
1778
 
1789
- if (fnStorageEventListener) {
1790
- // IE sends localStorage events also to the issuing window, -
1791
- // this is not needed hence we remove the listener in general at that point
1792
- window.removeEventListener("storage", fnStorageEventListener);
1779
+ oPromiseAsyncLogoutEvent.done(function () {
1780
+ if (oEventProvider.fireEvent("Logout", true)) {
1781
+ resolve();
1782
+ } else {
1783
+ // defer UShell redirect to let NWBC receive message asynchronously
1784
+ setTimeout(resolve, 1000);
1785
+ }
1786
+ });
1793
1787
  }
1794
1788
 
1795
- ushellUtils.localStorageSetItem(sSessionTerminationKey, "pending");
1796
- that._suppressOData();
1797
- var mSystems = that._getRemoteSystems();
1798
- Object.keys(mSystems).forEach(function (sAlias) {
1799
- try {
1800
- aRemoteLogoutPromises.push(
1801
- createAdapter("Container", mSystems[sAlias]).logout(false)
1802
- );
1803
- } catch (e) {
1804
- Log.warning("Could not create adapter for " + sAlias,
1805
- e.toString(), "sap.ushell.Container");
1789
+ function federatedLogout () {
1790
+ var aRemoteLogoutPromises = [];
1791
+
1792
+ if (fnStorageEventListener) {
1793
+ // IE sends localStorage events also to the issuing window, -
1794
+ // this is not needed hence we remove the listener in general at that point
1795
+ window.removeEventListener("storage", fnStorageEventListener);
1806
1796
  }
1807
- oLocalStorage.removeItem(sRemoteSystemPrefix + sAlias);
1808
- });
1809
- // wait for all remote system logouts to be finished
1810
- // Note: We use done() and not always(), and we require all adapters to resolve their logout(false) in any case.
1811
- // If we use always() and any adapter's promise is rejected, the deferred object from when() is *immediately* rejected, too.
1812
- // Then the redirect happens before all remote logouts are finished.
1813
- // TODO force logoutLogonSystem after timeout?
1814
- jQuery.when.apply(jQuery, aRemoteLogoutPromises).done(logoutLogonSystem);
1815
- }
1816
1797
 
1817
- if (typeof oAdapter.addFurtherRemoteSystems === "function") {
1818
- oAdapter.addFurtherRemoteSystems().always(federatedLogout);
1819
- } else {
1820
- federatedLogout();
1821
- }
1798
+ ushellUtils.localStorageSetItem(sSessionTerminationKey, "pending");
1799
+ that._suppressOData();
1800
+ var mSystems = that._getRemoteSystems();
1801
+ Object.keys(mSystems).forEach(function (sAlias) {
1802
+ try {
1803
+ aRemoteLogoutPromises.push(
1804
+ createAdapter("Container", mSystems[sAlias]).logout(false)
1805
+ );
1806
+ } catch (e) {
1807
+ Log.warning("Could not create adapter for " + sAlias,
1808
+ e.toString(), "sap.ushell.Container");
1809
+ }
1810
+ oLocalStorage.removeItem(sRemoteSystemPrefix + sAlias);
1811
+ });
1812
+ // wait for all remote system logouts to be finished
1813
+ // Note: We use done() and not always(), and we require all adapters to resolve their logout(false) in any case.
1814
+ // If we use always() and any adapter's promise is rejected, the deferred object from when() is *immediately* rejected, too.
1815
+ // Then the redirect happens before all remote logouts are finished.
1816
+ // TODO force logoutLogonSystem after timeout?
1817
+ jQuery.when.apply(jQuery, aRemoteLogoutPromises).done(logoutLogonSystem);
1818
+ }
1819
+
1820
+ if (typeof oAdapter.addFurtherRemoteSystems === "function") {
1821
+ oAdapter.addFurtherRemoteSystems().always(federatedLogout);
1822
+ } else {
1823
+ federatedLogout();
1824
+ }
1825
+ });
1822
1826
 
1823
1827
  return oDeferred.promise();
1824
1828
  };
@@ -1843,14 +1847,85 @@ sap.ui.define([
1843
1847
  * with an extended SessionHandler function.
1844
1848
  * This is so that we can logout additional systems before we can logout from the Shell.
1845
1849
  * In this case we will register a substitute logout func from the SessionHandler.
1850
+ * Handlers registered through this API need to return a promise that resolves when the logout process is finished.
1851
+ *
1846
1852
  * @param {function} fnLogout function to be set
1853
+ * @returns {boolean} true if the function was successfully registered, false otherwise
1847
1854
  *
1848
1855
  * @since 1.15.0
1849
1856
  * @private
1850
1857
  * @alias sap.ushell.Container#registerLogout
1851
1858
  */
1852
1859
  this.registerLogout = function (fnLogout) {
1853
- this.logout = fnLogout;
1860
+ if (typeof fnLogout !== "function") {
1861
+ Log.error("Container.registerLogout - Invalid logout handler function.");
1862
+ return false;
1863
+ }
1864
+
1865
+ if (aRegisteredLogoutHandlers.includes(fnLogout)) {
1866
+ Log.warning("Container.registerLogout - This logout handler is already registered. Ignoring.");
1867
+ return false;
1868
+ }
1869
+
1870
+ aRegisteredLogoutHandlers.push(fnLogout);
1871
+ return true;
1872
+ };
1873
+
1874
+ /**
1875
+ * Deregisters a previously registered logout handler function. If the specified handler is not found
1876
+ * in the list of registered handlers, logs an error and returns false to indicate failure.
1877
+ * This ensures that only registered handlers are removed, maintaining the integrity of the logout process.
1878
+ *
1879
+ * @param {function} fnLogout - The logout handler function to deregister.
1880
+ * @returns {boolean} true if the handler was successfully deregistered, false otherwise.
1881
+ * @since 1.126.0
1882
+ * @private
1883
+ * @alias sap.ushell.Container#deRegisterLogout
1884
+ */
1885
+ this.deRegisterLogout = function (fnLogout) {
1886
+ const iIndex = aRegisteredLogoutHandlers.indexOf(fnLogout);
1887
+ if (iIndex === -1) {
1888
+ Log.error("Container.deRegisterLogout - Attempted to de-register a logout handler that was not registered.");
1889
+ return false;
1890
+ }
1891
+ aRegisteredLogoutHandlers.splice(iIndex, 1);
1892
+ return true;
1893
+ };
1894
+
1895
+ /**
1896
+ * Checks if a given logout handler function is currently registered.
1897
+ * This can be used to verify if a specific logout handler has been added to the list of handlers
1898
+ * that will be called during the logout process.
1899
+ *
1900
+ * @param {function} fnLogout - The logout handler function to check.
1901
+ * @returns {boolean} true if the handler is registered, false otherwise.
1902
+ * @since 1.126.0
1903
+ * @private
1904
+ * @alias sap.ushell.Container#isLogoutRegistered
1905
+ */
1906
+ this.isLogoutRegistered = function (fnLogout) {
1907
+ return aRegisteredLogoutHandlers.includes(fnLogout);
1908
+ };
1909
+
1910
+ /**
1911
+ * Calls all registered logout handlers sequentially. If a logout handler throws an error,
1912
+ * the error is logged, and the execution continues with the next handler. This ensures
1913
+ * that all logout handlers are attempted, regardless of individual failures.
1914
+ *
1915
+ * @since 1.126.0
1916
+ * @private
1917
+ * @alias sap.ushell.Container#callRegisteredLogoutHandlers
1918
+ */
1919
+ this.callRegisteredLogoutHandlers = async function () {
1920
+ if (aRegisteredLogoutHandlers.length > 0) {
1921
+ for (const fnLogout of aRegisteredLogoutHandlers) {
1922
+ try {
1923
+ await fnLogout();
1924
+ } catch (error) {
1925
+ Log.error("Error executing logout handler:", error);
1926
+ }
1927
+ }
1928
+ }
1854
1929
  };
1855
1930
 
1856
1931
  /**
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * The Fiori20 adapter automatically re-styles old (Fiori 1) applications to match Fiori2 design requirements.
7
7
  *
8
- * @version 1.124.2
8
+ * @version 1.124.4
9
9
  */
10
10
  sap.ui.define([
11
11
  "sap/ui/base/Object",
@@ -4,7 +4,7 @@
4
4
  * @fileOverview The purpose Fiori20AdapterTest in this file is to decide whether to load the Fiori20Adapter at all.
5
5
  * This file is kept small in size on purpose as it is always required in productive code even when Fiori 2 adaptation is not required.
6
6
  *
7
- * @version 1.124.2
7
+ * @version 1.124.4
8
8
  */
9
9
  sap.ui.define([
10
10
  "sap/base/Log",
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @fileOverview NWBCInterface for NWBC client
4
4
  *
5
- * @version 1.124.2
5
+ * @version 1.124.4
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/ushell/EventHub",
@@ -844,46 +844,50 @@ sap.ui.define([
844
844
  * 2. Clear timeouts
845
845
  * 3. Show logout message
846
846
  * 4. Perform logout via sap.ushell.Container
847
+ *
848
+ * @returns {Promise<undefined>} A promise that resolves when the logout process is complete.
847
849
  */
848
850
  this.logout = function () {
849
- Log.debug("SessionHandler.logout :: Logout initiated", "", "SessionHandler");
851
+ return new Promise(function (resolve) {
852
+ Log.debug("SessionHandler.logout :: Logout initiated", "", "SessionHandler");
850
853
 
851
- function _logout (oLoading) {
852
- if (bInitialized === true) {
853
- that.detachUserEvents();
854
- that.detachVisibilityEvents();
855
- }
856
- if (that.oUserActivityTimer) {
857
- clearTimeout(that.oUserActivityTimer);
858
- }
859
- if (that.remainingTimer) {
860
- clearTimeout(that.remainingTimer);
861
- }
862
- if (that.notifyServerTimer) {
863
- clearTimeout(that.notifyServerTimer);
854
+ function _logout (oLoading) {
855
+ if (bInitialized === true) {
856
+ that.detachUserEvents();
857
+ that.detachVisibilityEvents();
858
+ }
859
+ if (that.oUserActivityTimer) {
860
+ clearTimeout(that.oUserActivityTimer);
861
+ }
862
+ if (that.remainingTimer) {
863
+ clearTimeout(that.remainingTimer);
864
+ }
865
+ if (that.notifyServerTimer) {
866
+ clearTimeout(that.notifyServerTimer);
867
+ }
868
+ oLoading.openLoadingScreen();
869
+ oLoading.showAppInfo(oResources.i18n.getText("beforeLogoutMsg"), null);
870
+ Container.setDirtyFlag(false);
871
+ resolve();
864
872
  }
865
- oLoading.openLoadingScreen();
866
- oLoading.showAppInfo(oResources.i18n.getText("beforeLogoutMsg"), null);
867
- Container.setDirtyFlag(false);
868
- Container.defaultLogout();
869
- }
870
873
 
871
- var oLoading = new LoadingDialog({ text: "" });
872
- var oTimeout;
874
+ var oLoading = new LoadingDialog({ text: "" });
875
+ var oTimeout;
873
876
 
874
- // post the logout event to isolated
875
- PostMessageUtils.postMessageToMultipleIframes("sap.ushell.sessionHandler", "logout", {}, true).then(function () {
876
- if (bIsLogoutProcessStarted === false) {
877
+ // post the logout event to isolated
878
+ PostMessageUtils.postMessageToMultipleIframes("sap.ushell.sessionHandler", "logout", {}, true).then(async function () {
879
+ if (bIsLogoutProcessStarted === false) {
880
+ bIsLogoutProcessStarted = true;
881
+ window.clearTimeout(oTimeout);
882
+ _logout(oLoading);
883
+ }
884
+ });
885
+
886
+ oTimeout = window.setTimeout(async function () {
877
887
  bIsLogoutProcessStarted = true;
878
- window.clearTimeout(oTimeout);
879
888
  _logout(oLoading);
880
- }
889
+ }, 4000);
881
890
  });
882
-
883
- oTimeout = window.setTimeout(function () {
884
- bIsLogoutProcessStarted = true;
885
- _logout(oLoading);
886
- }, 4000);
887
891
  };
888
892
  };
889
893
 
@@ -40,7 +40,7 @@
40
40
  * parameters. If the application tries to access an internal parameter (e.g.,
41
41
  * sap-ui-app-id-hint) via the API, the application receives an error message.
42
42
  *
43
- * @version 1.124.2
43
+ * @version 1.124.4
44
44
  * @private
45
45
  */
46
46
  sap.ui.define([
@@ -26,7 +26,7 @@
26
26
  * The language to define parameters in the URL Template parameter set contains a minimal set of conditionals,
27
27
  * logical operators, and functions that allow to define the parameter set with a certain degree of control.
28
28
  *
29
- * @version 1.124.2
29
+ * @version 1.124.4
30
30
  * @private
31
31
  */
32
32
  sap.ui.define([
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @fileOverview Ui5 Native Service Factory
4
4
  *
5
- * @version 1.124.2
5
+ * @version 1.124.4
6
6
  */
7
7
 
8
8
  sap.ui.define([
@@ -6,7 +6,7 @@
6
6
  * Exposes methods to create a UI5 Service Factory for a specific Unified Shell
7
7
  * Service.
8
8
  *
9
- * @version 1.124.2
9
+ * @version 1.124.4
10
10
  */
11
11
 
12
12
  sap.ui.define([
@@ -4,7 +4,7 @@
4
4
  * @fileOverview Methods to build the set of parameters used by the URL template.
5
5
  *
6
6
  *
7
- * @version 1.124.2
7
+ * @version 1.124.4
8
8
  *
9
9
  * @private
10
10
  *
@@ -8,7 +8,7 @@
8
8
  * The proper order of evaluation can be determined by creating and visiting a graph that represents parameters and depending parameters
9
9
  * as nodes. This graph can be also used to detect cyclic references in the parameter set definition.
10
10
  *
11
- * @version 1.124.2
11
+ * @version 1.124.4
12
12
  * @private
13
13
  */
14
14
  sap.ui.define([
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @file Methods to parse and execute functions defined for the URL Template parameter language.
5
- * @version 1.124.2
5
+ * @version 1.124.4
6
6
  * @private
7
7
  */
8
8
  sap.ui.define([
@@ -5,7 +5,7 @@
5
5
  * For a given context (e.g. the reference to a site, the application section from the site, parameters added during runtime, etc),
6
6
  * this module can be used to find the values associated to given URL Template parameter names.
7
7
  *
8
- * @version 1.124.2
8
+ * @version 1.124.4
9
9
  * @private
10
10
  */
11
11
  sap.ui.define([
@@ -34,7 +34,7 @@
34
34
  * }
35
35
  * }
36
36
  * </pre>
37
- * @version 1.124.2
37
+ * @version 1.124.4
38
38
  * @private
39
39
  */
40
40
  sap.ui.define([
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @file Utility functions for modules of <code>URLTemplateProcessor</code>.
5
- * @version 1.124.2
5
+ * @version 1.124.4
6
6
  * @private
7
7
  */
8
8
  sap.ui.define([
@@ -9,7 +9,7 @@
9
9
  * <li>provide the resolveHashFragment function, a fallback method called by ClientSideTargetResolution service.</li>
10
10
  * </ul>
11
11
  *
12
- * @version 1.124.2
12
+ * @version 1.124.4
13
13
  */
14
14
  sap.ui.define([
15
15
  "sap/base/util/Version",
@@ -4,7 +4,7 @@
4
4
  * @fileOverview The Unified Shell's sap.ushell.adapters.cdm.CommonDataModelAdapter for the 'CDM'
5
5
  * platform.
6
6
  *
7
- * @version 1.124.2
7
+ * @version 1.124.4
8
8
  */
9
9
  sap.ui.define([
10
10
  "sap/base/Log",
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * @fileOverview The ConfigurationDefaults adapter for the CDM platform.
5
5
  *
6
- * @version 1.124.2
6
+ * @version 1.124.4
7
7
  */
8
8
  sap.ui.define([
9
9
  "sap/ushell/bootstrap/cdm/cdm.constants",
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * @fileOverview The Unified Shell"s container adapter for the Common Data Model (CDM) platform.
4
4
  *
5
- * @version 1.124.2
5
+ * @version 1.124.4
6
6
  */
7
7
  sap.ui.define([
8
8
  "sap/base/Log",
@@ -4,7 +4,7 @@
4
4
  * @fileOverview The Unified Shell's LaunchPageAdapter for the
5
5
  * 'CDM' platform - Version 2 (V2)
6
6
  * @deprecated since 1.100
7
- * @version 1.124.2
7
+ * @version 1.124.4
8
8
  */
9
9
  sap.ui.define([
10
10
  "sap/ushell/adapters/cdm/_LaunchPage/readHome",
@@ -5,7 +5,7 @@
5
5
  * It combines the page data, tile data, navigation data and personalization into a CDM 3.1 site.
6
6
  * Only used on the ABAP platform and on local for testing.
7
7
  *
8
- * @version 1.124.2
8
+ * @version 1.124.4
9
9
  */
10
10
  sap.ui.define([
11
11
  "sap/base/Log",
@@ -5,7 +5,7 @@
5
5
  *
6
6
  *
7
7
  * The CDM personalization adapter can be used to store data in the RA@ABAP platform.
8
- * @version 1.124.2
8
+ * @version 1.124.4
9
9
  */
10
10
  sap.ui.define([
11
11
  "sap/ushell/adapters/cdm/_Personalization/internals",
@@ -5,7 +5,7 @@
5
5
  *
6
6
  *
7
7
  * The CDM personalization adapter can be used to store data in the RA@ABAP platform.
8
- * @version 1.124.2
8
+ * @version 1.124.4
9
9
  */
10
10
  sap.ui.define([
11
11
  "./PersonalizationAdapter"
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * @fileOverview The Unified Shell's Ui5ComponentLoaderAdapter for the CDM platform
5
5
  *
6
- * @version 1.124.2
6
+ * @version 1.124.4
7
7
  */
8
8
  sap.ui.define([
9
9
  ], function () {
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview Helper of modifying the home page data for the 'CDM' platform.
5
- * @version 1.124.2
5
+ * @version 1.124.4
6
6
  * @private
7
7
  */
8
8
  sap.ui.define([
@@ -2,7 +2,7 @@
2
2
 
3
3
  /**
4
4
  * @fileOverview Helper of accessing catalog data for the 'CDM' platform.
5
- * @version 1.124.2
5
+ * @version 1.124.4
6
6
  * @private
7
7
  */
8
8
  sap.ui.define([
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * @fileOverview Helper of accessing Home Page data for the 'CDM' platform.
5
5
  *
6
- * @version 1.124.2
6
+ * @version 1.124.4
7
7
  * @private
8
8
  */
9
9
  sap.ui.define([
@@ -4,7 +4,7 @@
4
4
  * @fileOverview Transforms relative URIs as used e.g. for data sources in the
5
5
  * manifest.json
6
6
  *
7
- * @version 1.124.2
7
+ * @version 1.124.4
8
8
  */
9
9
  sap.ui.define([
10
10
  "sap/ui/thirdparty/URI"
@@ -5,7 +5,7 @@
5
5
  * Creates CDM site entries for apps with the provided data.
6
6
  * Only used on the ABAP platform and on local for testing.
7
7
  *
8
- * @version 1.124.2
8
+ * @version 1.124.4
9
9
  * @private
10
10
  */
11
11
  sap.ui.define([
@@ -5,7 +5,7 @@
5
5
  * Creates CDM site entities with the provided data.
6
6
  * Only used on the ABAP platform and on local for testing.
7
7
  *
8
- * @version 1.124.2
8
+ * @version 1.124.4
9
9
  * @private
10
10
  */
11
11
  sap.ui.define([
@@ -4,7 +4,7 @@
4
4
  * @fileOverview The Base of Unified Shell's LaunchPageAdapter for the 'CDM' platform - Version 3 (V3)
5
5
  * and StaticGroupsContainer for Featured Group
6
6
  *
7
- * @version 1.124.2
7
+ * @version 1.124.4
8
8
  */
9
9
  sap.ui.define([
10
10
  "sap/ushell/adapters/cdm/v3/_LaunchPage/readHome",