@sapui5/sap.ushell 1.126.1 → 1.127.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 (404) 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/Fiori20Adapter.js +1 -1
  4. package/src/main/js/sap/ushell/Fiori20AdapterTest.js +1 -1
  5. package/src/main/js/sap/ushell/NWBCInterface.js +1 -1
  6. package/src/main/js/sap/ushell/SessionHandler.js +2 -2
  7. package/src/main/js/sap/ushell/TechnicalParameters.js +1 -1
  8. package/src/main/js/sap/ushell/URLTemplateProcessor.js +1 -1
  9. package/src/main/js/sap/ushell/Ui5NativeServiceFactory.js +1 -1
  10. package/src/main/js/sap/ushell/Ui5ServiceFactory.js +1 -1
  11. package/src/main/js/sap/ushell/User.js +7 -7
  12. package/src/main/js/sap/ushell/UserActivityLog.js +8 -13
  13. package/src/main/js/sap/ushell/_ApplicationType/urlTemplateResolution.js +10 -3
  14. package/src/main/js/sap/ushell/_Config/utils.js +18 -0
  15. package/src/main/js/sap/ushell/_URLTemplateProcessor/DefinitionParameterSetBuilder.js +1 -1
  16. package/src/main/js/sap/ushell/_URLTemplateProcessor/DependencyGraph.js +1 -1
  17. package/src/main/js/sap/ushell/_URLTemplateProcessor/Functions.js +1 -1
  18. package/src/main/js/sap/ushell/_URLTemplateProcessor/Resolvers.js +1 -1
  19. package/src/main/js/sap/ushell/_URLTemplateProcessor/TemplateParameterParser.js +1 -1
  20. package/src/main/js/sap/ushell/_URLTemplateProcessor/utils.js +1 -1
  21. package/src/main/js/sap/ushell/adapters/cdm/ClientSideTargetResolutionAdapter.js +1 -1
  22. package/src/main/js/sap/ushell/adapters/cdm/CommonDataModelAdapter.js +1 -1
  23. package/src/main/js/sap/ushell/adapters/cdm/ConfigurationDefaultsAdapter.js +1 -1
  24. package/src/main/js/sap/ushell/adapters/cdm/ContainerAdapter.js +28 -9
  25. package/src/main/js/sap/ushell/adapters/cdm/LaunchPageAdapter.js +1 -1
  26. package/src/main/js/sap/ushell/adapters/cdm/PagesCommonDataModelAdapter.js +4 -3
  27. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationAdapter.js +1 -1
  28. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationV2Adapter.js +1 -1
  29. package/src/main/js/sap/ushell/adapters/cdm/Ui5ComponentLoaderAdapter.js +1 -1
  30. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/modifyHome.js +1 -1
  31. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readCatalogs.js +1 -1
  32. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readHome.js +1 -1
  33. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/uri.transform.js +1 -1
  34. package/src/main/js/sap/ushell/adapters/cdm/util/AppForInbound.js +1 -1
  35. package/src/main/js/sap/ushell/adapters/cdm/util/cdmSiteUtils.js +1 -1
  36. package/src/main/js/sap/ushell/adapters/cdm/v3/AdapterBase.js +1 -1
  37. package/src/main/js/sap/ushell/adapters/cdm/v3/FlpLaunchPageAdapter.js +1 -1
  38. package/src/main/js/sap/ushell/adapters/cdm/v3/LaunchPageAdapter.js +1 -1
  39. package/src/main/js/sap/ushell/adapters/cdm/v3/StaticGroupsAdapter.js +1 -1
  40. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readApplications.js +1 -1
  41. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readCatalogs.js +1 -1
  42. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readHome.js +1 -1
  43. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readPages.js +1 -1
  44. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readUtils.js +1 -1
  45. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readVisualizations.js +1 -1
  46. package/src/main/js/sap/ushell/adapters/cdm/v3/utilsCdm.js +6 -1
  47. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionAdapter.js +1 -1
  48. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionInternalAdapter.js +1 -1
  49. package/src/main/js/sap/ushell/adapters/cep/SearchCEPAdapter.js +1 -1
  50. package/src/main/js/sap/ushell/adapters/cflp/UserDefaultParameterPersistenceAdapter.js +1 -1
  51. package/src/main/js/sap/ushell/adapters/local/AdapterContainer.js +1 -1
  52. package/src/main/js/sap/ushell/adapters/local/AppStateAdapter.js +1 -1
  53. package/src/main/js/sap/ushell/adapters/local/ClientSideTargetResolutionAdapter.js +1 -1
  54. package/src/main/js/sap/ushell/adapters/local/ContainerAdapter.js +1 -1
  55. package/src/main/js/sap/ushell/adapters/local/FlpLaunchPageAdapter.js +1 -1
  56. package/src/main/js/sap/ushell/adapters/local/LaunchPageAdapter.js +1 -1
  57. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionAdapter.js +1 -1
  58. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionInternalAdapter.js +1 -1
  59. package/src/main/js/sap/ushell/adapters/local/PageBuildingAdapter.js +1 -1
  60. package/src/main/js/sap/ushell/adapters/local/PagePersistenceAdapter.js +1 -1
  61. package/src/main/js/sap/ushell/adapters/local/PersonalizationAdapter.js +1 -1
  62. package/src/main/js/sap/ushell/adapters/local/PersonalizationV2Adapter.js +1 -1
  63. package/src/main/js/sap/ushell/adapters/local/SearchAdapter.js +1 -1
  64. package/src/main/js/sap/ushell/adapters/local/SearchCEPAdapter.js +1 -1
  65. package/src/main/js/sap/ushell/adapters/local/SupportTicketAdapter.js +1 -1
  66. package/src/main/js/sap/ushell/adapters/local/Ui5ComponentLoaderAdapter.js +1 -1
  67. package/src/main/js/sap/ushell/adapters/local/UserDefaultParameterPersistenceAdapter.js +1 -1
  68. package/src/main/js/sap/ushell/adapters/local/UserInfoAdapter.js +1 -1
  69. package/src/main/js/sap/ushell/appRuntime/neo/AppInfoService.js +1 -0
  70. package/src/main/js/sap/ushell/appRuntime/neo/AppRuntimeNeo.js +1 -0
  71. package/src/main/js/sap/ushell/appRuntime/neo/ProxyAppUtils.js +1 -0
  72. package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntime.js +6 -0
  73. package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/Renderer.js +19 -0
  74. package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/RendererExtensions.js +1 -1
  75. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppConfiguration.js +1 -1
  76. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycle.js +51 -0
  77. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppState.js +1 -1
  78. package/src/main/js/sap/ushell/appRuntime/ui5/services/Bookmark.js +1 -1
  79. package/src/main/js/sap/ushell/appRuntime/ui5/services/BookmarkV2.js +6 -6
  80. package/src/main/js/sap/ushell/appRuntime/ui5/services/CommonDataModel.js +1 -1
  81. package/src/main/js/sap/ushell/appRuntime/ui5/services/Container.js +1 -1
  82. package/src/main/js/sap/ushell/appRuntime/ui5/services/CrossApplicationNavigation.js +1 -1
  83. package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension/Item.js +1 -1
  84. package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension.js +1 -1
  85. package/src/main/js/sap/ushell/appRuntime/ui5/services/FrameBoundExtension.js +1 -1
  86. package/src/main/js/sap/ushell/appRuntime/ui5/services/LaunchPage.js +1 -1
  87. package/src/main/js/sap/ushell/appRuntime/ui5/services/MessageBroker.js +1 -1
  88. package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolution.js +1 -1
  89. package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolutionInternal.js +1 -1
  90. package/src/main/js/sap/ushell/appRuntime/ui5/services/Navigation.js +1 -1
  91. package/src/main/js/sap/ushell/appRuntime/ui5/services/ReferenceResolver.js +1 -1
  92. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigation.js +1 -1
  93. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigationInternal.js +1 -1
  94. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellUIService.js +1 -1
  95. package/src/main/js/sap/ushell/appRuntime/ui5/services/UserInfo.js +1 -1
  96. package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/Ui5ComponentLoaderAdapter.js +1 -1
  97. package/src/main/js/sap/ushell/bootstrap/_SchedulingAgent/FLPScheduler.js +47 -16
  98. package/src/main/js/sap/ushell/bootstrap/_SchedulingAgent/StepConfiguration.json +10 -3
  99. package/src/main/js/sap/ushell/bootstrap/_SchedulingAgent/logger.js +1 -1
  100. package/src/main/js/sap/ushell/bootstrap/_SchedulingAgent/state.js +1 -1
  101. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5.js +9 -0
  102. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5datetimeformat.js +1 -1
  103. package/src/main/js/sap/ushell/bootstrap/common/common.create.configcontract.core.js +13 -33
  104. package/src/main/js/sap/ushell/bootstrap/sandbox2.js +1 -1
  105. package/src/main/js/sap/ushell/components/_HeaderManager/ShellHeader.controller.js +135 -8
  106. package/src/main/js/sap/ushell/components/_HomepageManager/DashboardLoadingManager.js +1 -1
  107. package/src/main/js/sap/ushell/components/_HomepageManager/PagingManager.js +1 -1
  108. package/src/main/js/sap/ushell/components/_HomepageManager/PersistentPageOperationAdapter.js +1 -1
  109. package/src/main/js/sap/ushell/components/_HomepageManager/TransientPageOperationAdapter.js +1 -1
  110. package/src/main/js/sap/ushell/components/appfinder/AppFinder.controller.js +0 -6
  111. package/src/main/js/sap/ushell/components/appfinder/Component.js +1 -1
  112. package/src/main/js/sap/ushell/components/appfinder/manifest.json +1 -1
  113. package/src/main/js/sap/ushell/components/applicationIntegration/AppLifeCycle.js +74 -72
  114. package/src/main/js/sap/ushell/components/applicationIntegration/application/Application.js +1 -1
  115. package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxHandler.js +1 -1
  116. package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageAPI.js +35 -18
  117. package/src/main/js/sap/ushell/components/applicationIntegration/configuration/AppMeta.js +42 -27
  118. package/src/main/js/sap/ushell/components/applicationIntegration/relatedServices/RelatedServices.js +1 -1
  119. package/src/main/js/sap/ushell/components/container/ApplicationContainer.js +1 -1
  120. package/src/main/js/sap/ushell/components/contentFinder/Component.js +19 -12
  121. package/src/main/js/sap/ushell/components/contentFinder/controller/AppSearch.controller.js +24 -5
  122. package/src/main/js/sap/ushell/components/contentFinder/controller/ContentFinderDialog.controller.js +1 -1
  123. package/src/main/js/sap/ushell/components/contentFinder/controller/WidgetGallery.controller.js +1 -1
  124. package/src/main/js/sap/ushell/components/contentFinder/manifest.json +1 -1
  125. package/src/main/js/sap/ushell/components/contentFinder/model/formatter.js +47 -7
  126. package/src/main/js/sap/ushell/components/contentFinder/view/AppSearch.view.xml +7 -6
  127. package/src/main/js/sap/ushell/components/contentFinder/view/AppSearchBox.fragment.xml +5 -4
  128. package/src/main/js/sap/ushell/components/contentFinder/view/AppSearchCategoryTree.view.xml +34 -22
  129. package/src/main/js/sap/ushell/components/contentFinderStandalone/Component.js +7 -6
  130. package/src/main/js/sap/ushell/components/contentFinderStandalone/controller/ContentFinderStandalone.controller.js +3 -1
  131. package/src/main/js/sap/ushell/components/contentFinderStandalone/manifest.json +1 -1
  132. package/src/main/js/sap/ushell/components/contentFinderStandalone/manifestAppSearch.json +1 -1
  133. package/src/main/js/sap/ushell/components/factsheet/Component.js +1 -1
  134. package/src/main/js/sap/ushell/components/homepage/ActionMode.js +1 -1
  135. package/src/main/js/sap/ushell/components/homepage/Component.js +1 -1
  136. package/src/main/js/sap/ushell/components/homepage/DashboardContent.view.js +1 -1
  137. package/src/main/js/sap/ushell/components/homepage/DashboardGroupsBox.js +29 -24
  138. package/src/main/js/sap/ushell/components/homepage/DashboardUIActions.js +1 -1
  139. package/src/main/js/sap/ushell/components/homepage/manifest.json +1 -1
  140. package/src/main/js/sap/ushell/components/pages/ActionMode.js +1 -1
  141. package/src/main/js/sap/ushell/components/pages/Component.js +10 -3
  142. package/src/main/js/sap/ushell/components/pages/MyHomeImport.js +1 -1
  143. package/src/main/js/sap/ushell/components/pages/controller/PageRuntime.controller.js +26 -5
  144. package/src/main/js/sap/ushell/components/pages/manifest.json +1 -1
  145. package/src/main/js/sap/ushell/components/runtimeSwitcher/Component.js +3 -2
  146. package/src/main/js/sap/ushell/components/runtimeSwitcher/controller/RuntimeSwitcher.controller.js +1 -1
  147. package/src/main/js/sap/ushell/components/runtimeSwitcher/manifest.json +1 -1
  148. package/src/main/js/sap/ushell/components/shell/MenuBar/manifest.json +1 -1
  149. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenu.controller.js +19 -3
  150. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/manifest.json +1 -1
  151. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/view/NavigationBarMenu.view.xml +1 -0
  152. package/src/main/js/sap/ushell/components/shell/Notifications/Component.js +24 -22
  153. package/src/main/js/sap/ushell/components/shell/Notifications/Notifications.controller.js +1 -1
  154. package/src/main/js/sap/ushell/components/shell/PostLoadingHeaderEnhancement/Component.js +80 -17
  155. package/src/main/js/sap/ushell/components/shell/ProductSwitch/Component.js +1 -1
  156. package/src/main/js/sap/ushell/components/shell/Search/manifest.json +1 -1
  157. package/src/main/js/sap/ushell/components/shell/SearchCEP/Component.js +1 -1
  158. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/FrequentActivityProvider.js +1 -1
  159. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/RecentSearchProvider.js +1 -1
  160. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchProvider.js +1 -1
  161. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchServiceProvider.js +1 -1
  162. package/src/main/js/sap/ushell/components/shell/Settings/Component.js +12 -16
  163. package/src/main/js/sap/ushell/components/shell/Settings/UserSettings.controller.js +9 -4
  164. package/src/main/js/sap/ushell/components/shell/Settings/UserSettings.view.xml +9 -9
  165. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/Component.js +3 -45
  166. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenu.controller.js +31 -23
  167. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenuPopover.fragment.xml +7 -2
  168. package/src/main/js/sap/ushell/components/shell/UserImage/Component.js +3 -3
  169. package/src/main/js/sap/ushell/components/tiles/applauncher/StaticTile.controller.js +0 -4
  170. package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/DynamicTile.controller.js +0 -1
  171. package/src/main/js/sap/ushell/components/tiles/indicatorcomparison/ComparisonTile.controller.js +1 -1
  172. package/src/main/js/sap/ushell/components/visualizationOrganizer/Component.js +1 -1
  173. package/src/main/js/sap/ushell/components/workPageBuilder/Component.js +2 -1
  174. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.accessibility.js +1 -1
  175. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.controller.js +1939 -1946
  176. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPage.js +1 -1
  177. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageButton.js +1 -1
  178. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageCell.js +1 -1
  179. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumn.js +1 -1
  180. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnResizer.js +1 -1
  181. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRow.js +1 -1
  182. package/src/main/js/sap/ushell/components/workPageBuilder/manifest.json +1 -1
  183. package/src/main/js/sap/ushell/components/workPageRuntime/Component.js +3 -2
  184. package/src/main/js/sap/ushell/components/workPageRuntime/controller/WorkPageRuntime.controller.js +1 -1
  185. package/src/main/js/sap/ushell/components/workPageRuntime/manifest.json +1 -1
  186. package/src/main/js/sap/ushell/designtime/ApplicationContainer.designtime.js +1 -1
  187. package/src/main/js/sap/ushell/library.js +1 -1
  188. package/src/main/js/sap/ushell/navigationMode.js +1 -1
  189. package/src/main/js/sap/ushell/performance/ShellAnalytics.js +15 -12
  190. package/src/main/js/sap/ushell/performance/StatisticalRecord.js +1 -1
  191. package/src/main/js/sap/ushell/plugins/appwarmup/Component.js +1 -1
  192. package/src/main/js/sap/ushell/renderer/AccessKeysHandler.js +31 -9
  193. package/src/main/js/sap/ushell/renderer/Renderer.js +304 -287
  194. package/src/main/js/sap/ushell/renderer/Shell.controller.js +99 -101
  195. package/src/main/js/sap/ushell/renderer/Shell.view.js +110 -89
  196. package/src/main/js/sap/ushell/renderer/allMyApps/AllMyApps.controller.js +29 -15
  197. package/src/main/js/sap/ushell/renderer/allMyApps/AllMyApps.view.xml +2 -2
  198. package/src/main/js/sap/ushell/renderer/resources/resources.properties +2 -0
  199. package/src/main/js/sap/ushell/renderer/search/searchComponent/manifest.json +1 -1
  200. package/src/main/js/sap/ushell/renderers/fiori2/History.js +1 -0
  201. package/src/main/js/sap/ushell/renderers/fiori2/LogonFrameProvider.js +1 -0
  202. package/src/main/js/sap/ushell/renderers/fiori2/Shell.view.js +108 -87
  203. package/src/main/js/sap/ushell/renderers/fiori2/allMyApps/AllMyAppsManager.js +1 -0
  204. package/src/main/js/sap/ushell/services/AppLifeCycle.js +1 -1
  205. package/src/main/js/sap/ushell/services/AppState.js +1 -1
  206. package/src/main/js/sap/ushell/services/Bookmark.js +1 -1
  207. package/src/main/js/sap/ushell/services/BookmarkV2.js +1 -1
  208. package/src/main/js/sap/ushell/services/ClientSideTargetResolution.js +1 -1
  209. package/src/main/js/sap/ushell/services/CommonDataModel.js +2 -15
  210. package/src/main/js/sap/ushell/services/Configuration.js +1 -1
  211. package/src/main/js/sap/ushell/services/ConfigurationDefaults.js +1 -1
  212. package/src/main/js/sap/ushell/services/ContentExtensionAdapterFactory.js +1 -1
  213. package/src/main/js/sap/ushell/services/CrossApplicationNavigation.js +1 -1
  214. package/src/main/js/sap/ushell/services/DarkModeSupport.js +11 -5
  215. package/src/main/js/sap/ushell/services/Extension/Item.js +4 -4
  216. package/src/main/js/sap/ushell/services/Extension.js +36 -2
  217. package/src/main/js/sap/ushell/services/FlpLaunchPage.js +1 -1
  218. package/src/main/js/sap/ushell/services/FrameBoundExtension/FloatingContainer.js +1 -1
  219. package/src/main/js/sap/ushell/services/FrameBoundExtension/Footer.js +1 -1
  220. package/src/main/js/sap/ushell/services/FrameBoundExtension/Item.js +4 -4
  221. package/src/main/js/sap/ushell/services/FrameBoundExtension/SidePane.js +18 -2
  222. package/src/main/js/sap/ushell/services/FrameBoundExtension/ToolArea.js +20 -2
  223. package/src/main/js/sap/ushell/services/FrameBoundExtension.js +96 -2
  224. package/src/main/js/sap/ushell/services/LaunchPage.js +1 -1
  225. package/src/main/js/sap/ushell/services/Menu.js +1 -1
  226. package/src/main/js/sap/ushell/services/Message.js +1 -1
  227. package/src/main/js/sap/ushell/services/MessageBroker.js +1 -1
  228. package/src/main/js/sap/ushell/services/MessageInternal.js +13 -8
  229. package/src/main/js/sap/ushell/services/Navigation/compatibility.js +1 -1
  230. package/src/main/js/sap/ushell/services/Navigation/utils.js +1 -1
  231. package/src/main/js/sap/ushell/services/Navigation.js +1 -1
  232. package/src/main/js/sap/ushell/services/NavigationDataProvider.js +1 -1
  233. package/src/main/js/sap/ushell/services/PageBuilding.js +1 -1
  234. package/src/main/js/sap/ushell/services/PagePersistence.js +1 -1
  235. package/src/main/js/sap/ushell/services/PageReferencing.js +1 -1
  236. package/src/main/js/sap/ushell/services/Pages.js +4 -3
  237. package/src/main/js/sap/ushell/services/Personalization.js +1 -1
  238. package/src/main/js/sap/ushell/services/PersonalizationV2.js +1 -1
  239. package/src/main/js/sap/ushell/services/PluginManager.js +1 -1
  240. package/src/main/js/sap/ushell/services/ReferenceResolver.js +1 -1
  241. package/src/main/js/sap/ushell/services/Search.js +1 -1
  242. package/src/main/js/sap/ushell/services/SearchCEP.js +1 -1
  243. package/src/main/js/sap/ushell/services/SearchableContent.js +6 -5
  244. package/src/main/js/sap/ushell/services/ShellNavigation.js +1 -1
  245. package/src/main/js/sap/ushell/services/SmartNavigation.js +1 -1
  246. package/src/main/js/sap/ushell/services/SpaceContent.js +1 -1
  247. package/src/main/js/sap/ushell/services/UITracer.js +1 -1
  248. package/src/main/js/sap/ushell/services/URLParsing.js +16 -0
  249. package/src/main/js/sap/ushell/services/URLShortening.js +1 -1
  250. package/src/main/js/sap/ushell/services/URLTemplate.js +1 -1
  251. package/src/main/js/sap/ushell/services/Ui5ComponentLoader.js +3 -3
  252. package/src/main/js/sap/ushell/services/UserDefaultParameterPersistence.js +1 -1
  253. package/src/main/js/sap/ushell/services/UserDefaultParameters.js +1 -1
  254. package/src/main/js/sap/ushell/services/UserInfo.js +1 -1
  255. package/src/main/js/sap/ushell/services/UserRecents.js +1 -1
  256. package/src/main/js/sap/ushell/services/VisualizationDataProvider.js +1 -1
  257. package/src/main/js/sap/ushell/services/VisualizationInstantiation.js +1 -1
  258. package/src/main/js/sap/ushell/services/_AppState/AppStatePersistencyMethod.js +1 -1
  259. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/Formatter.js +1 -1
  260. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/InboundIndex.js +1 -1
  261. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/InboundProvider.js +1 -1
  262. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/PrelaunchOperations.js +1 -1
  263. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/Search.js +1 -1
  264. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/StagedLogger.js +1 -1
  265. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/SystemContext.js +1 -1
  266. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/Utils.js +1 -1
  267. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/VirtualInbounds.js +1 -1
  268. package/src/main/js/sap/ushell/services/_ClientSideTargetResolution/XAppStateProcessing.js +1 -1
  269. package/src/main/js/sap/ushell/services/_CommonDataModel/SiteConverter.js +1 -1
  270. package/src/main/js/sap/ushell/services/_CommonDataModel/vizTypeDefaults/VizTypeDefaults.js +1 -1
  271. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/ContentExtensionAdapterConfig.js +2 -2
  272. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/FeaturedGroupConfig.js +1 -1
  273. package/src/main/js/sap/ushell/services/_CrossApplicationNavigation/utils.js +1 -1
  274. package/src/main/js/sap/ushell/services/_MessageBroker/MessageBrokerEngine.js +1 -1
  275. package/src/main/js/sap/ushell/services/_PageReferencing/PageReferencer.js +1 -1
  276. package/src/main/js/sap/ushell/services/_Personalization/VariantSetAdapter.js +1 -0
  277. package/src/main/js/sap/ushell/services/_Personalization/WindowAdapter.js +1 -0
  278. package/src/main/js/sap/ushell/services/_Personalization/WindowAdapterContainer.js +1 -0
  279. package/src/main/js/sap/ushell/services/_Personalization/constants.js +1 -0
  280. package/src/main/js/sap/ushell/services/_Personalization/constants.private.js +1 -0
  281. package/src/main/js/sap/ushell/services/_Personalization/utils.js +1 -0
  282. package/src/main/js/sap/ushell/services/_PluginManager/Extensions.js +1 -1
  283. package/src/main/js/sap/ushell/services/_PluginManager/HeaderExtensions.js +2 -2
  284. package/src/main/js/sap/ushell/services/_PluginManager/MenuExtensions.js +1 -1
  285. package/src/main/js/sap/ushell/services/_Ui5ComponentLoader/utils.js +1 -1
  286. package/src/main/js/sap/ushell/state/BaseState.js +79 -0
  287. package/src/main/js/sap/ushell/state/ControlManager.js +209 -0
  288. package/src/main/js/sap/ushell/state/CurrentState.js +180 -0
  289. package/src/main/js/sap/ushell/state/KeepAlive.js +75 -0
  290. package/src/main/js/sap/ushell/state/ShellModel.js +112 -0
  291. package/src/main/js/sap/ushell/state/StateManager/LaunchpadState.js +40 -0
  292. package/src/main/js/sap/ushell/state/StateManager/Operation.js +42 -0
  293. package/src/main/js/sap/ushell/state/StateManager/ShellMode.js +86 -0
  294. package/src/main/js/sap/ushell/state/StateManager.js +648 -0
  295. package/src/main/js/sap/ushell/state/StateRules.js +295 -0
  296. package/src/main/js/sap/ushell/state/StrategyFactory/DefaultStrategy.js +74 -0
  297. package/src/main/js/sap/ushell/state/StrategyFactory/FloatingActionsStrategy.js +78 -0
  298. package/src/main/js/sap/ushell/state/StrategyFactory/HeadEndItemsStrategy.js +130 -0
  299. package/src/main/js/sap/ushell/state/StrategyFactory/HeadItemsStrategy.js +104 -0
  300. package/src/main/js/sap/ushell/state/StrategyFactory/SidePaneStrategy.js +78 -0
  301. package/src/main/js/sap/ushell/state/StrategyFactory/SubHeaderStrategy.js +78 -0
  302. package/src/main/js/sap/ushell/state/StrategyFactory/UserActionsStrategy.js +60 -0
  303. package/src/main/js/sap/ushell/state/StrategyFactory.js +168 -0
  304. package/src/main/js/sap/ushell/support/plugins/flpConfig/FlpConfigurationPlugin.js +1 -1
  305. package/src/main/js/sap/ushell/themes/base/UserSettings.less +1 -5
  306. package/src/main/js/sap/ushell/themes/base/WorkPageCell.less +45 -49
  307. package/src/main/js/sap/ushell/themes/sap_belize_base/UserSettings.less +1 -5
  308. package/src/main/js/sap/ushell/themes/sap_bluecrystal_base/UserSettings.less +1 -5
  309. package/src/main/js/sap/ushell/themes/sap_hcb/base_ActionMode.less +107 -0
  310. package/src/main/js/sap/ushell/themes/sap_hcb/base_AddBookmarkButton.less +37 -0
  311. package/src/main/js/sap/ushell/themes/sap_hcb/base_AnchorItem.less +81 -0
  312. package/src/main/js/sap/ushell/themes/sap_hcb/base_AnchorNavigationBar.less +86 -0
  313. package/src/main/js/sap/ushell/themes/sap_hcb/base_AppearanceView.less +213 -0
  314. package/src/main/js/sap/ushell/themes/sap_hcb/base_ApplicationContainer.less +37 -0
  315. package/src/main/js/sap/ushell/themes/sap_hcb/base_Catalog.less +387 -0
  316. package/src/main/js/sap/ushell/themes/sap_hcb/base_ContactSupport.less +12 -0
  317. package/src/main/js/sap/ushell/themes/sap_hcb/base_ContentFinder.less +26 -0
  318. package/src/main/js/sap/ushell/themes/sap_hcb/base_CustomGroupHeaderListItem.less +10 -0
  319. package/src/main/js/sap/ushell/themes/sap_hcb/base_Dashboard.less +66 -0
  320. package/src/main/js/sap/ushell/themes/sap_hcb/base_DynamicTile.less +114 -0
  321. package/src/main/js/sap/ushell/themes/sap_hcb/base_Factsheet.less +225 -0
  322. package/src/main/js/sap/ushell/themes/sap_hcb/base_FloatingContainer.less +125 -0
  323. package/src/main/js/sap/ushell/themes/sap_hcb/base_FlpSettings.less +83 -0
  324. package/src/main/js/sap/ushell/themes/sap_hcb/base_GroupList.less +68 -0
  325. package/src/main/js/sap/ushell/themes/sap_hcb/base_GroupListItem.less +54 -0
  326. package/src/main/js/sap/ushell/themes/sap_hcb/base_IconFonts.less +21 -0
  327. package/src/main/js/sap/ushell/themes/sap_hcb/base_ImageTile.less +23 -0
  328. package/src/main/js/sap/ushell/themes/sap_hcb/base_LoadingDialog.less +47 -0
  329. package/src/main/js/sap/ushell/themes/sap_hcb/base_MenuBar.less +23 -0
  330. package/src/main/js/sap/ushell/themes/sap_hcb/base_Notifications.less +135 -0
  331. package/src/main/js/sap/ushell/themes/sap_hcb/base_Page.less +49 -0
  332. package/src/main/js/sap/ushell/themes/sap_hcb/base_PictureTile.less +119 -0
  333. package/src/main/js/sap/ushell/themes/sap_hcb/base_PictureViewer.less +25 -0
  334. package/src/main/js/sap/ushell/themes/sap_hcb/base_PlusTile.less +38 -0
  335. package/src/main/js/sap/ushell/themes/sap_hcb/base_QuickAccess.less +18 -0
  336. package/src/main/js/sap/ushell/themes/sap_hcb/base_RightFloatingContainerItem.less +82 -0
  337. package/src/main/js/sap/ushell/themes/sap_hcb/base_SearchCEP.less +121 -0
  338. package/src/main/js/sap/ushell/themes/sap_hcb/base_SearchFLP.less +10 -0
  339. package/src/main/js/sap/ushell/themes/sap_hcb/base_Section.less +60 -0
  340. package/src/main/js/sap/ushell/themes/sap_hcb/base_ShellAppTitle.less +207 -0
  341. package/src/main/js/sap/ushell/themes/sap_hcb/base_ShellFloatingAction.less +61 -0
  342. package/src/main/js/sap/ushell/themes/sap_hcb/base_ShellFloatingActions.less +14 -0
  343. package/src/main/js/sap/ushell/themes/sap_hcb/base_ShellHeader.less +389 -0
  344. package/src/main/js/sap/ushell/themes/sap_hcb/base_ShellLayout.less +168 -0
  345. package/src/main/js/sap/ushell/themes/sap_hcb/base_SidePane.less +8 -0
  346. package/src/main/js/sap/ushell/themes/sap_hcb/base_StaticTile.less +9 -0
  347. package/src/main/js/sap/ushell/themes/sap_hcb/base_SubHeader.less +3 -0
  348. package/src/main/js/sap/ushell/themes/sap_hcb/base_SysInfoBar.less +164 -0
  349. package/src/main/js/sap/ushell/themes/sap_hcb/base_TargetMappingConfiguration.less +8 -0
  350. package/src/main/js/sap/ushell/themes/sap_hcb/base_Tile.less +223 -0
  351. package/src/main/js/sap/ushell/themes/sap_hcb/base_TileBase.less +152 -0
  352. package/src/main/js/sap/ushell/themes/sap_hcb/base_TileContainer.less +495 -0
  353. package/src/main/js/sap/ushell/themes/sap_hcb/base_TilePlaceholder.less +75 -0
  354. package/src/main/js/sap/ushell/themes/sap_hcb/base_TileState.less +62 -0
  355. package/src/main/js/sap/ushell/themes/sap_hcb/base_ToolAreaItem.less +85 -0
  356. package/src/main/js/sap/ushell/themes/sap_hcb/base_UserActionsMenu.less +23 -0
  357. package/src/main/js/sap/ushell/themes/sap_hcb/base_UserConsentDialog.less +52 -0
  358. package/src/main/js/sap/ushell/themes/sap_hcb/base_UserSettings.less +109 -0
  359. package/src/main/js/sap/ushell/themes/sap_hcb/base_ViewPortContainer.less +28 -0
  360. package/src/main/js/sap/ushell/themes/sap_hcb/base_WorkPage.less +58 -0
  361. package/src/main/js/sap/ushell/themes/sap_hcb/base_WorkPageButton.less +60 -0
  362. package/src/main/js/sap/ushell/themes/sap_hcb/base_WorkPageCell.less +144 -0
  363. package/src/main/js/sap/ushell/themes/sap_hcb/base_WorkPageColumn.less +39 -0
  364. package/src/main/js/sap/ushell/themes/sap_hcb/base_WorkPageColumnResizer.less +128 -0
  365. package/src/main/js/sap/ushell/themes/sap_hcb/base_WorkPageRow.less +987 -0
  366. package/src/main/js/sap/ushell/themes/sap_hcb/base_shared.less +40 -0
  367. package/src/main/js/sap/ushell/themes/sap_hcb/library.source.less +70 -1
  368. package/src/main/js/sap/ushell/ui/ShellHeader.fragment.xml +17 -11
  369. package/src/main/js/sap/ushell/ui/ShellHeader.js +10 -3
  370. package/src/main/js/sap/ushell/ui/cards/FrequentActivitiesExtension.js +0 -4
  371. package/src/main/js/sap/ushell/ui/cards/RecentActivitiesExtension.js +1 -5
  372. package/src/main/js/sap/ushell/ui/footerbar/AddBookmarkButton.js +19 -5
  373. package/src/main/js/sap/ushell/ui/footerbar/ContactSupportDialog.controller.js +9 -3
  374. package/src/main/js/sap/ushell/ui/footerbar/SendAsEmailButton.js +5 -5
  375. package/src/main/js/sap/ushell/ui/launchpad/ExtendedChangeDetection.js +1 -1
  376. package/src/main/js/sap/ushell/ui/launchpad/Section.js +1 -1
  377. package/src/main/js/sap/ushell/ui/launchpad/TileContainer.js +17 -12
  378. package/src/main/js/sap/ushell/ui/launchpad/section/CompactArea.js +1 -1
  379. package/src/main/js/sap/ushell/ui/shell/ShellAppTitle.js +50 -35
  380. package/src/main/js/sap/ushell/ui/shell/ToolAreaItem.js +2 -2
  381. package/src/main/js/sap/ushell/ui/utils.js +1 -1
  382. package/src/main/js/sap/ushell/ui5service/ShellUIService.js +1 -1
  383. package/src/main/js/sap/ushell/ui5service/UserStatus.js +1 -1
  384. package/src/main/js/sap/ushell/utils/UrlParsing.js +22 -0
  385. package/src/main/js/sap/ushell/utils/UrlShortening.js +1 -1
  386. package/src/main/js/sap/ushell/utils/WindowUtils.js +3 -3
  387. package/src/main/js/sap/ushell/utils/workpage/DestinationResolver.js +89 -0
  388. package/src/main/js/sap/ushell/utils/workpage/WorkPageHost.js +51 -47
  389. package/src/main/js/sap/ushell/utils/workpage/WorkPageService.js +32 -1
  390. package/src/main/js/sap/ushell/utils/workpage/WorkPageVizInstantiation.js +1 -1
  391. package/src/main/js/sap/ushell/utils.js +26 -2
  392. package/src/test/js/sap/ushell/bootstrap/sandbox.js +1 -1
  393. package/src/main/js/sap/ushell/bootstrap/common/common.load.ui5theme.js +0 -67
  394. package/src/main/js/sap/ushell/components/HeaderManager.js +0 -547
  395. package/src/main/js/sap/ushell/components/StateHelper.js +0 -70
  396. package/src/main/js/sap/ushell/components/_HeaderManager/AddHeadEndItemsStrategy.js +0 -105
  397. package/src/main/js/sap/ushell/components/_HeaderManager/AddHeadItemsStrategy.js +0 -75
  398. package/src/main/js/sap/ushell/components/_HeaderManager/ControlManager.js +0 -70
  399. package/src/main/js/sap/ushell/components/_HeaderManager/ExtendApplicationPropertyStrategy.js +0 -18
  400. package/src/main/js/sap/ushell/components/_HeaderManager/PropertyStrategiesFactory.js +0 -58
  401. package/src/main/js/sap/ushell/components/_HeaderManager/RemoveItemsStrategy.js +0 -46
  402. package/src/main/js/sap/ushell/components/_HeaderManager/SetHeadPropertyStrategy.js +0 -19
  403. package/src/main/js/sap/ushell/components/applicationIntegration/elements/model.js +0 -1309
  404. package/src/main/js/sap/ushell/components/applicationIntegration/relatedShellElements/RelatedShellElements.js +0 -363
@@ -0,0 +1,648 @@
1
+ // Copyright (c) 2009-2023 SAP SE, All Rights Reserved
2
+
3
+ sap.ui.define([
4
+ "sap/base/Log",
5
+ "sap/ushell/Config",
6
+ "sap/ushell/state/BaseState",
7
+ "sap/ushell/state/ControlManager",
8
+ "sap/ushell/state/CurrentState",
9
+ "sap/ushell/state/ShellModel",
10
+ "sap/ushell/state/StateRules",
11
+ "sap/ushell/state/StateManager/LaunchpadState",
12
+ "sap/ushell/state/StateManager/Operation",
13
+ "sap/ushell/state/StateManager/ShellMode",
14
+ "sap/ushell/utils"
15
+ ], function (
16
+ Log,
17
+ Config,
18
+ BaseState,
19
+ ControlManager,
20
+ CurrentState,
21
+ ShellModel,
22
+ StateRules,
23
+ LaunchpadState,
24
+ Operation,
25
+ ShellMode,
26
+ ushellUtils
27
+ ) {
28
+ "use strict";
29
+
30
+ const {
31
+ Default,
32
+ Standalone,
33
+ Lean,
34
+ Minimal
35
+ } = ShellMode;
36
+
37
+ /**
38
+ * @typedef {string} sap.ushell.state.StateManager.Path
39
+ * A dot separated path to a property in the state model.
40
+ * It follows the same definition as the path in {@link sap.base.util.ObjectPath}.
41
+ *
42
+ * @since 1.127.0
43
+ * @private
44
+ */
45
+
46
+ /**
47
+ * @typedef {object} sap.ushell.state.StateManager.PendingChange
48
+ * A pending change to be applied or discarded later.
49
+ * @property {function} handler The handler function to call.
50
+ * @property {function} [flushHandler] The flush handler function to call.
51
+ * @property {any[]} args The arguments to pass to the handler.
52
+ *
53
+ * @see sap.ushell.state.StateManager.stallChanges
54
+ * @see sap.ushell.state.StateManager.applyStalledChanges
55
+ * @see sap.ushell.state.StateManager.discardStalledChanges
56
+ *
57
+ * @since 1.127.0
58
+ * @private
59
+ */
60
+
61
+ /**
62
+ * @alias sap.ushell.state.StateManager
63
+ * @namespace
64
+ * @description Interface for managing the state of the shell.
65
+ * The state consists of the current state and the base state.
66
+ *
67
+ * @since 1.127.0
68
+ * @private
69
+ */
70
+ class StateManager {
71
+ /**
72
+ * The base state of the shell.
73
+ * @type {object}
74
+ */
75
+ #oModelProperties = ushellUtils.deepFreeze({
76
+ sidePane: {
77
+ visible: false,
78
+ items: []
79
+ },
80
+ toolArea: {
81
+ visible: false,
82
+ items: []
83
+ },
84
+ rightFloatingContainer: {
85
+ visible: false,
86
+ items: []
87
+ },
88
+ floatingContainer: {
89
+ visible: false,
90
+ items: []
91
+ },
92
+ userActions: {
93
+ items: []
94
+ },
95
+ floatingActions: {
96
+ items: []
97
+ },
98
+ header: {
99
+ visible: true,
100
+ home: {
101
+ showLogo: false
102
+ },
103
+ secondTitle: "",
104
+ headItems: [],
105
+ centralAreaElement: null,
106
+ headEndItems: []
107
+ },
108
+ subHeader: {
109
+ items: []
110
+ },
111
+ footer: {
112
+ content: ""
113
+ },
114
+ application: {
115
+ title: "",
116
+ icon: "",
117
+ subTitle: "",
118
+ relatedApps: [],
119
+ hierarchy: []
120
+ }
121
+ });
122
+
123
+ /**
124
+ * Whether the StateManager is initialized.
125
+ * @type {boolean}
126
+ */
127
+ #bInitialized = false;
128
+ /**
129
+ * The launchpad state of the shell.
130
+ * @type {sap.ushell.state.StateManager.LaunchpadState}
131
+ */
132
+ #sLaunchpadState = LaunchpadState.Home;
133
+ /**
134
+ * The default shell mode defined by the configuration or URL parameter.
135
+ * @type {sap.ushell.state.StateManager.ShellMode}
136
+ */
137
+ #sDefaultShellMode = ShellMode.Default;
138
+ /**
139
+ * The current shell mode.
140
+ * @type {sap.ushell.state.StateManager.ShellMode}
141
+ */
142
+ #sShellMode = ShellMode.Default;
143
+ /**
144
+ * The base state of the shell.
145
+ * @type {sap.ushell.state.BaseState}
146
+ */
147
+ #oBaseState = null;
148
+ /**
149
+ * The current state of the shell.
150
+ * @type {sap.ushell.state.CurrentState}
151
+ */
152
+ #oCurrentState = CurrentState; // store current state for easy debugging
153
+
154
+ /**
155
+ * Prevents model updates during batch changes.
156
+ * @type {boolean}
157
+ */
158
+ #bPreventModelUpdate = false;
159
+
160
+ /**
161
+ * Whether changes are stalled and should not be applied directly.
162
+ * Changes are stored and can be applied or discarded later.
163
+ * @type {boolean}
164
+ */
165
+ #bStallChanges = false;
166
+ /**
167
+ * The list of pending changes to be applied or discarded later.
168
+ * @type {sap.ushell.state.StateManager.PendingChange[]}
169
+ */
170
+ #aPendingChanges = [];
171
+
172
+ // Expose Enums
173
+ LaunchpadState = LaunchpadState;
174
+ ShellMode = ShellMode;
175
+ Operation = Operation;
176
+
177
+ constructor () {
178
+ this.#constructorCallback();
179
+ }
180
+
181
+ /**
182
+ * Initializes the StateManager.
183
+ *
184
+ * @private
185
+ */
186
+ #constructorCallback () {
187
+ const sInitialShellMode = this.#getInitialShellMode();
188
+ this.#sShellMode = sInitialShellMode;
189
+ this.#sDefaultShellMode = sInitialShellMode;
190
+ // initialize based on current hash
191
+ this.#sLaunchpadState = ushellUtils.isFlpHomeIntent() ? LaunchpadState.Home : LaunchpadState.App;
192
+
193
+ this.#oBaseState = new BaseState(this.#oModelProperties);
194
+ this.#oCurrentState.attachStateChange(this.#updateModel, this);
195
+
196
+ // initialize model with all properties
197
+ this.#updateModel();
198
+ }
199
+
200
+ /**
201
+ * Initializes the StateManager.
202
+ * @param {object} oShellConfig The configuration of the shell view.
203
+ * @throws {Error} if the StateManager is already initialized.
204
+ *
205
+ * @since 1.127.0
206
+ * @private
207
+ * @alias sap.ushell.state.StateManager#init
208
+ */
209
+ init (oShellConfig) {
210
+ if (this.#bInitialized) {
211
+ throw new Error("State Manager is already initialized!");
212
+ }
213
+
214
+ this.#bInitialized = true;
215
+
216
+ StateRules.setShellConfig(oShellConfig);
217
+ }
218
+
219
+ /**
220
+ * Returns the current shell mode.
221
+ * @returns {sap.ushell.state.StateManager.ShellMode} The current shell mode.
222
+ *
223
+ * @since 1.127.0
224
+ * @private
225
+ * @alias sap.ushell.state.StateManager#getShellMode
226
+ */
227
+ getShellMode () {
228
+ return this.#sShellMode;
229
+ }
230
+
231
+ /**
232
+ * Returns the current launchpad state.
233
+ * @returns {sap.ushell.state.StateManager.LaunchpadState} The current launchpad state.
234
+ *
235
+ * @since 1.127.0
236
+ * @private
237
+ * @alias sap.ushell.state.StateManager#getLaunchpadState
238
+ */
239
+ getLaunchpadState () {
240
+ return this.#sLaunchpadState;
241
+ }
242
+
243
+ /**
244
+ * Switches the state of the shell.
245
+ * When the state is switched, the model is recalculated and updated.
246
+ * If no shell mode is provided, the default shell mode is used again.
247
+ * @param {sap.ushell.state.StateManager.LaunchpadState} sLaunchpadState The new launchpad state.
248
+ * @param {sap.ushell.state.StateManager.ShellMode} [sShellModeOverride] The new shell mode.
249
+ *
250
+ * @since 1.127.0
251
+ * @private
252
+ * @alias sap.ushell.state.StateManager#switchState
253
+ */
254
+ switchState (sLaunchpadState, sShellModeOverride) {
255
+ this.#validateLaunchpadState(sLaunchpadState);
256
+
257
+ // ShellMode might be overridden based on app type
258
+ // default to the url parameter
259
+ const sShellMode = sShellModeOverride ?? this.#sDefaultShellMode;
260
+
261
+ this.#validateShellMode(sShellMode);
262
+
263
+ this.#sShellMode = sShellMode;
264
+ this.#sLaunchpadState = sLaunchpadState;
265
+
266
+ this.#updateModel();
267
+ }
268
+
269
+ /**
270
+ * Updates the base state of the shell.
271
+ * @param {sap.ushell.state.StateManager.LaunchpadState[]} aLaunchpadStates The list of launchpad states to update.
272
+ * @param {sap.ushell.state.StateManager.Path} sPath The path to the property to update.
273
+ * @param {sap.ushell.state.StateManager.Operation} sOperation The operation to perform.
274
+ * @param {any} vValue The value to set.
275
+ *
276
+ * @since 1.127.0
277
+ * @private
278
+ * @alias sap.ushell.state.StateManager#updateBaseStates
279
+ */
280
+ updateBaseStates (aLaunchpadStates, sPath, sOperation, vValue) {
281
+ this.#validateOperation(sOperation);
282
+ this.#validateLaunchpadStateList(aLaunchpadStates);
283
+
284
+ if (this.#bStallChanges) {
285
+ this.#aPendingChanges.push({
286
+ handler: this.updateBaseStates.bind(this),
287
+ args: arguments
288
+ });
289
+ return;
290
+ }
291
+
292
+ aLaunchpadStates.forEach((sLaunchpadState) => {
293
+ this.#oBaseState.updateState(sLaunchpadState, sPath, sOperation, vValue);
294
+ });
295
+
296
+ this.#updateModel();
297
+ }
298
+
299
+ /**
300
+ * Updates the base state of the shell for all launchpad states.
301
+ * @param {sap.ushell.state.StateManager.Path} sPath The path to the property to update.
302
+ * @param {sap.ushell.state.StateManager.Operation} sOperation The operation to perform.
303
+ * @param {any} vValue The value to set.
304
+ *
305
+ * @since 1.127.0
306
+ * @private
307
+ * @alias sap.ushell.state.StateManager#updateAllBaseStates
308
+ */
309
+ updateAllBaseStates (sPath, sOperation, vValue) {
310
+ this.updateBaseStates(Object.values(LaunchpadState), sPath, sOperation, vValue);
311
+ }
312
+
313
+ /**
314
+ * Updates the current state of the shell.
315
+ * @param {sap.ushell.state.StateManager.Path} sPath The path to the property to update.
316
+ * @param {sap.ushell.state.StateManager.Operation} sOperation The operation to perform.
317
+ * @param {any} vValue The value to set.
318
+ *
319
+ * @since 1.127.0
320
+ * @private
321
+ * @alias sap.ushell.state.StateManager#updateCurrentState
322
+ */
323
+ updateCurrentState (sPath, sOperation, vValue) {
324
+ this.#validateOperation(sOperation);
325
+
326
+ if (this.#bStallChanges) {
327
+ this.#aPendingChanges.push({
328
+ handler: this.updateCurrentState.bind(this),
329
+ args: arguments
330
+ });
331
+ return;
332
+ }
333
+
334
+ this.#oCurrentState.updateState(sPath, sOperation, vValue);
335
+
336
+ this.#updateModel();
337
+ }
338
+
339
+ /**
340
+ * Adds a control to the list of managed controls.
341
+ * Managed controls are destroyed in sync with the application.
342
+ * @param {sap.ui.core.ID} sId The ID of the control to add.
343
+ * @param {boolean} bForBaseState Whether the control is related to the base state.
344
+ *
345
+ * @since 1.127.0
346
+ * @private
347
+ * @alias sap.ushell.state.StateManager#addManagedControl
348
+ */
349
+ addManagedControl (sId, bForBaseState) {
350
+ if (this.#bStallChanges) {
351
+ this.#aPendingChanges.push({
352
+ handler: this.addManagedControl.bind(this),
353
+ flushHandler: (sId, bForBaseState) => {
354
+ ControlManager.destroyManagedControl(sId);
355
+ },
356
+ args: arguments
357
+ });
358
+ return;
359
+ }
360
+
361
+ ControlManager.addManagedControl(sId, !bForBaseState, this.#sLaunchpadState);
362
+ }
363
+
364
+ /**
365
+ * Destroys all managed controls related to the current state.
366
+ * Controls which are related to the base state are not destroyed.
367
+ *
368
+ * @since 1.127.0
369
+ * @private
370
+ * @alias sap.ushell.state.StateManager#destroyManagedControls
371
+ */
372
+ destroyManagedControls () {
373
+ ControlManager.destroyManagedControls();
374
+ }
375
+
376
+ /**
377
+ * Recalculates the model.
378
+ * 1. Fetches the state data from the base state.
379
+ * 2. Applies the current state.
380
+ * 3. Applies the state rules.
381
+ * 4. Updates the shell model.
382
+ *
383
+ * Skips recalculating the model if changes are stalled.
384
+ *
385
+ * @since 1.127.0
386
+ * @private
387
+ */
388
+ #updateModel () {
389
+ // prevent model updates when suspended
390
+ if (this.#bStallChanges || this.#bPreventModelUpdate) {
391
+ return;
392
+ }
393
+
394
+ const oStateData = this.#oBaseState.getStateData(this.#sShellMode, this.#sLaunchpadState);
395
+
396
+ this.#oCurrentState.applyState(oStateData);
397
+
398
+ StateRules.applyRules(oStateData, this.#sShellMode, this.#sLaunchpadState);
399
+
400
+ ShellModel.updateModel(oStateData);
401
+ }
402
+
403
+ /**
404
+ * Calculates the initial shell mode based on the URL parameters and configuration.
405
+ * @returns {sap.ushell.state.StateManager.ShellMode} The initial shell mode.
406
+ *
407
+ * @since 1.127.0
408
+ * @private
409
+ */
410
+ #getInitialShellMode () {
411
+ let sShellMode;
412
+ const oSearchParams = new URLSearchParams(window.location.search);
413
+
414
+ if (oSearchParams.has("sap-ushell-config")) {
415
+ sShellMode = oSearchParams.get("sap-ushell-config");
416
+ } else {
417
+ sShellMode = Config.last("/core/state/shellMode");
418
+
419
+ /**
420
+ * code shall be automatically removed by tooling
421
+ * @deprecated since 1.120.0
422
+ */
423
+ (() => {
424
+ if (oSearchParams.has("appState")) {
425
+ sShellMode = oSearchParams.get("appState");
426
+ if (sShellMode) {
427
+ Log.error("URL parameter 'appState' is given, but deprecated. Please use 'sap-ushell-config' instead!", "sap.ushell.renderer.Renderer");
428
+ }
429
+ } else {
430
+ sShellMode = Config.last("/core/state/shellMode");
431
+ }
432
+ })();
433
+ }
434
+
435
+ sShellMode = sShellMode?.toLowerCase() ?? ShellMode.Default;
436
+
437
+ try {
438
+ this.#validateShellMode(sShellMode);
439
+ } catch (oError) {
440
+ Log.error(`Error occurred during validation: "${oError.message}", Defaulting to default ShellMode`);
441
+ sShellMode = ShellMode.Default;
442
+ }
443
+
444
+ return sShellMode;
445
+ }
446
+
447
+ /**
448
+ * Stops all changes from being applied directly. Instead, they are stored and can be applied or discarded later.
449
+ * This is useful when the application is not yet fully initialized and changes should not be applied yet.
450
+ * In case of successful initialization, the changes can be applied using {@link sap.ushell.state.StateManager#applyStalledChanges}.
451
+ * In case of failure, the changes can be discarded using {@link sap.ushell.state.StateManager#discardStalledChanges}.
452
+ *
453
+ * @since 1.127.0
454
+ * @private
455
+ * @alias sap.ushell.state.StateManager#stallChanges
456
+ */
457
+ stallChanges () {
458
+ this.#bStallChanges = true;
459
+ }
460
+
461
+ /**
462
+ * Applies all pending changes and continues regular processing.
463
+ * Calls the handler of each pending change.
464
+ *
465
+ * @since 1.127.0
466
+ * @private
467
+ * @alias sap.ushell.state.StateManager#applyStalledChanges
468
+ */
469
+ applyStalledChanges () {
470
+ // continue regular processing
471
+ this.#bStallChanges = false;
472
+
473
+ this.#bPreventModelUpdate = true;
474
+
475
+ this.#aPendingChanges.forEach(({ handler, args }) => {
476
+ handler(...args);
477
+ });
478
+ this.#aPendingChanges = [];
479
+
480
+ this.#bPreventModelUpdate = false;
481
+
482
+ // update model after applying all pending changes
483
+ this.#updateModel();
484
+ }
485
+
486
+ /**
487
+ * Discards all pending changes and continues regular processing.
488
+ * Calls the flushHandler of each pending change.
489
+ *
490
+ * @since 1.127.0
491
+ * @private
492
+ * @alias sap.ushell.state.StateManager#discardStalledChanges
493
+ */
494
+ discardStalledChanges () {
495
+ // continue regular processing
496
+ this.#bStallChanges = false;
497
+
498
+ this.#aPendingChanges.forEach(({ flushHandler, args }) => {
499
+ if (flushHandler) {
500
+ flushHandler(...args);
501
+ }
502
+ });
503
+ this.#aPendingChanges = [];
504
+ }
505
+
506
+ /**
507
+ * ONLY FOR TESTING!
508
+ * Resets the StateManager to its initial state.
509
+ *
510
+ * @since 1.127.0
511
+ * @private
512
+ * @alias sap.ushell.state.StateManager#reset
513
+ */
514
+ reset () {
515
+ this.#oCurrentState.detachStateChange(this.#updateModel, this);
516
+
517
+ this.#constructorCallback();
518
+
519
+ // reset flags
520
+ this.#bInitialized = false;
521
+ this.#bPreventModelUpdate = false;
522
+ this.#bStallChanges = false;
523
+ this.#aPendingChanges = [];
524
+ }
525
+
526
+ /**
527
+ * ONLY FOR TESTING!
528
+ * Resets the StateManager and all related dependencies.
529
+ *
530
+ * @since 1.127.0
531
+ * @private
532
+ * @alias sap.ushell.state.StateManager#resetAll
533
+ */
534
+ resetAll () {
535
+ this.reset();
536
+ StateRules.reset();
537
+ ControlManager.reset();
538
+ ShellModel.reset();
539
+ this.#oCurrentState.reset();
540
+ }
541
+
542
+ /**
543
+ * Calls the destroy routine of the StateManager and all its dependencies.
544
+ *
545
+ * since 1.127.0
546
+ * @private
547
+ * @alias sap.ushell.state.StateManager#destroy
548
+ */
549
+ destroy () {
550
+ this.#oCurrentState.detachStateChange(this.#updateModel, this);
551
+ this.#oCurrentState.destroy();
552
+ ShellModel.destroy();
553
+ ControlManager.destroy();
554
+ }
555
+
556
+ /**
557
+ * Validates a shell mode.
558
+ * @param {sap.ushell.state.StateManager.ShellMode} sShellMode The shell mode to validate.
559
+ * @throws {Error} if the shell mode is invalid.
560
+ *
561
+ * @since 1.127.0
562
+ * @private
563
+ */
564
+ #validateShellMode (sShellMode) {
565
+ if (!Object.values(ShellMode).includes(sShellMode)) {
566
+ throw new Error(`Invalid shell mode: ${sShellMode}`);
567
+ }
568
+ }
569
+
570
+ /**
571
+ * Validates an operation.
572
+ * @param {sap.ushell.state.StateManager.Operation} sOperation The operation to validate.
573
+ * @throws {Error} if the operation is invalid.
574
+ *
575
+ * @since 1.127.0
576
+ * @private
577
+ */
578
+ #validateOperation (sOperation) {
579
+ if (!Object.values(Operation).includes(sOperation)) {
580
+ throw new Error(`Invalid operation: ${sOperation}`);
581
+ }
582
+ }
583
+
584
+ /**
585
+ * Validates a launchpad state.
586
+ * @param {sap.ushell.state.StateManager.LaunchpadState} sLaunchpadState The launchpad state to validate.
587
+ * @throws {Error} if the launchpad state is invalid.
588
+ *
589
+ * @since 1.127.0
590
+ * @private
591
+ */
592
+ #validateLaunchpadState (sLaunchpadState) {
593
+ if (!Object.values(LaunchpadState).includes(sLaunchpadState)) {
594
+ throw new Error(`Invalid launchpad state: ${sLaunchpadState}`);
595
+ }
596
+ }
597
+
598
+ /**
599
+ * Validates a list of launchpad states.
600
+ * @param {sap.ushell.state.StateManager.LaunchpadState[]} aLaunchpadStates The list of launchpad states to validate.
601
+ * @throws {Error} if the launchpad states are invalid.
602
+ *
603
+ * @since 1.127.0
604
+ * @private
605
+ */
606
+ #validateLaunchpadStateList (aLaunchpadStates) {
607
+ if (!Array.isArray(aLaunchpadStates)) {
608
+ throw new Error("Launchpad states must be provided as an array!");
609
+ }
610
+ if (aLaunchpadStates.length === 0) {
611
+ throw new Error("No launchpad states provided!");
612
+ }
613
+ aLaunchpadStates.forEach((sLaunchpadState) => {
614
+ this.#validateLaunchpadState(sLaunchpadState);
615
+ });
616
+ }
617
+
618
+ /**
619
+ * The legacy state management did not have dedicated home states for
620
+ * all LaunchpadState.Home and ShellMode combinations. Some were combined
621
+ * together in a legacy "home" state.
622
+ * @returns {boolean} Whether the current state is a legacy home state.
623
+ *
624
+ * @since 1.127.0
625
+ * @private
626
+ * @alias sap.ushell.state.StateManager#isLegacyHome
627
+ */
628
+ isLegacyHome () {
629
+ if (this.#sLaunchpadState !== LaunchpadState.Home) {
630
+ return false;
631
+ }
632
+
633
+ // Previously the states resulted in the stateName "home" for the home state and not in
634
+ // a dedicated state (e.g. embedded-home)
635
+ const aUnmappedHomeStates = [
636
+ Default,
637
+ Standalone,
638
+ Lean,
639
+ Minimal
640
+ ];
641
+
642
+ return aUnmappedHomeStates.includes(this.#sShellMode);
643
+ }
644
+ }
645
+
646
+ return new StateManager();
647
+
648
+ });