@sapui5/sap.ushell 1.129.1 → 1.130.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 (490) 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/AppInfoParameters.js +478 -346
  4. package/src/main/js/sap/ushell/ApplicationType/urlTemplateResolution.js +41 -6
  5. package/src/main/js/sap/ushell/ApplicationType/wdaResolution.js +3 -3
  6. package/src/main/js/sap/ushell/Fiori20Adapter.js +1 -1
  7. package/src/main/js/sap/ushell/Fiori20AdapterTest.js +1 -1
  8. package/src/main/js/sap/ushell/NWBCInterface.js +1 -1
  9. package/src/main/js/sap/ushell/TechnicalParameters.js +1 -1
  10. package/src/main/js/sap/ushell/URLTemplateProcessor/DefinitionParameterSetBuilder.js +1 -1
  11. package/src/main/js/sap/ushell/URLTemplateProcessor/DependencyGraph.js +1 -1
  12. package/src/main/js/sap/ushell/URLTemplateProcessor/Functions.js +1 -1
  13. package/src/main/js/sap/ushell/URLTemplateProcessor/Resolvers.js +1 -1
  14. package/src/main/js/sap/ushell/URLTemplateProcessor/TemplateParameterParser.js +1 -1
  15. package/src/main/js/sap/ushell/URLTemplateProcessor/utils.js +1 -1
  16. package/src/main/js/sap/ushell/URLTemplateProcessor.js +1 -1
  17. package/src/main/js/sap/ushell/Ui5NativeServiceFactory.js +1 -1
  18. package/src/main/js/sap/ushell/Ui5ServiceFactory.js +1 -1
  19. package/src/main/js/sap/ushell/adapters/cdm/ClientSideTargetResolutionAdapter.js +1 -1
  20. package/src/main/js/sap/ushell/adapters/cdm/CommonDataModelAdapter.js +1 -1
  21. package/src/main/js/sap/ushell/adapters/cdm/ConfigurationDefaultsAdapter.js +1 -1
  22. package/src/main/js/sap/ushell/adapters/cdm/ContainerAdapter.js +1 -1
  23. package/src/main/js/sap/ushell/adapters/cdm/LaunchPageAdapter.js +1 -1
  24. package/src/main/js/sap/ushell/adapters/cdm/PagesCommonDataModelAdapter.js +1 -1
  25. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationAdapter.js +1 -1
  26. package/src/main/js/sap/ushell/adapters/cdm/PersonalizationV2Adapter.js +1 -1
  27. package/src/main/js/sap/ushell/adapters/cdm/Ui5ComponentLoaderAdapter.js +1 -1
  28. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/modifyHome.js +1 -1
  29. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readCatalogs.js +1 -1
  30. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readHome.js +1 -1
  31. package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/uri.transform.js +1 -1
  32. package/src/main/js/sap/ushell/adapters/cdm/util/AppForInbound.js +1 -1
  33. package/src/main/js/sap/ushell/adapters/cdm/util/cdmSiteUtils.js +1 -1
  34. package/src/main/js/sap/ushell/adapters/cdm/v3/AdapterBase.js +1 -1
  35. package/src/main/js/sap/ushell/adapters/cdm/v3/FlpLaunchPageAdapter.js +7 -3
  36. package/src/main/js/sap/ushell/adapters/cdm/v3/LaunchPageAdapter.js +1 -1
  37. package/src/main/js/sap/ushell/adapters/cdm/v3/StaticGroupsAdapter.js +1 -1
  38. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readApplications.js +1 -1
  39. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readCatalogs.js +1 -1
  40. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readHome.js +1 -1
  41. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readPages.js +1 -1
  42. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readUtils.js +1 -1
  43. package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readVisualizations.js +1 -1
  44. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionAdapter.js +1 -1
  45. package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionInternalAdapter.js +1 -1
  46. package/src/main/js/sap/ushell/adapters/cep/SearchCEPAdapter.js +1 -1
  47. package/src/main/js/sap/ushell/adapters/cflp/UserDefaultParameterPersistenceAdapter.js +1 -1
  48. package/src/main/js/sap/ushell/adapters/local/AdapterContainer.js +1 -1
  49. package/src/main/js/sap/ushell/adapters/local/AppStateAdapter.js +1 -1
  50. package/src/main/js/sap/ushell/adapters/local/ClientSideTargetResolutionAdapter.js +1 -1
  51. package/src/main/js/sap/ushell/adapters/local/ContainerAdapter.js +1 -1
  52. package/src/main/js/sap/ushell/adapters/local/FlpLaunchPageAdapter.js +1 -1
  53. package/src/main/js/sap/ushell/adapters/local/LaunchPageAdapter.js +1 -1
  54. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionAdapter.js +1 -1
  55. package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionInternalAdapter.js +1 -1
  56. package/src/main/js/sap/ushell/adapters/local/PageBuildingAdapter.js +1 -1
  57. package/src/main/js/sap/ushell/adapters/local/PagePersistenceAdapter.js +1 -1
  58. package/src/main/js/sap/ushell/adapters/local/PersonalizationAdapter.js +1 -1
  59. package/src/main/js/sap/ushell/adapters/local/PersonalizationV2Adapter.js +1 -1
  60. package/src/main/js/sap/ushell/adapters/local/SearchAdapter.js +1 -1
  61. package/src/main/js/sap/ushell/adapters/local/SearchCEPAdapter.js +1 -1
  62. package/src/main/js/sap/ushell/adapters/local/SupportTicketAdapter.js +1 -1
  63. package/src/main/js/sap/ushell/adapters/local/Ui5ComponentLoaderAdapter.js +1 -1
  64. package/src/main/js/sap/ushell/adapters/local/UserDefaultParameterPersistenceAdapter.js +1 -1
  65. package/src/main/js/sap/ushell/adapters/local/UserInfoAdapter.js +1 -1
  66. package/src/main/js/sap/ushell/api/S4MyHome.js +33 -2
  67. package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntime.js +8 -0
  68. package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/RendererExtensions.js +1 -1
  69. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppConfiguration.js +1 -1
  70. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycle.js +1 -1
  71. package/src/main/js/sap/ushell/appRuntime/ui5/services/AppState.js +1 -1
  72. package/src/main/js/sap/ushell/appRuntime/ui5/services/Bookmark.js +1 -1
  73. package/src/main/js/sap/ushell/appRuntime/ui5/services/BookmarkV2.js +1 -1
  74. package/src/main/js/sap/ushell/appRuntime/ui5/services/CommonDataModel.js +1 -1
  75. package/src/main/js/sap/ushell/appRuntime/ui5/services/Container.js +1 -1
  76. package/src/main/js/sap/ushell/appRuntime/ui5/services/CrossApplicationNavigation.js +1 -1
  77. package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension/Item.js +1 -1
  78. package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension.js +1 -1
  79. package/src/main/js/sap/ushell/appRuntime/ui5/services/FrameBoundExtension.js +1 -1
  80. package/src/main/js/sap/ushell/appRuntime/ui5/services/LaunchPage.js +1 -1
  81. package/src/main/js/sap/ushell/appRuntime/ui5/services/MessageBroker.js +1 -1
  82. package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolution.js +1 -1
  83. package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolutionInternal.js +1 -1
  84. package/src/main/js/sap/ushell/appRuntime/ui5/services/Navigation.js +1 -1
  85. package/src/main/js/sap/ushell/appRuntime/ui5/services/ReferenceResolver.js +1 -1
  86. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigation.js +1 -1
  87. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigationInternal.js +1 -1
  88. package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellUIService.js +1 -1
  89. package/src/main/js/sap/ushell/appRuntime/ui5/services/UserInfo.js +1 -1
  90. package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/Ui5ComponentLoaderAdapter.js +1 -1
  91. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/logger.js +1 -1
  92. package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/state.js +1 -1
  93. package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5datetimeformat.js +1 -1
  94. package/src/main/js/sap/ushell/bootstrap/sandbox2.js +1 -1
  95. package/src/main/js/sap/ushell/components/appfinder/manifest.json +1 -1
  96. package/src/main/js/sap/ushell/components/applicationIntegration/AppLifeCycle.js +871 -733
  97. package/src/main/js/sap/ushell/components/applicationIntegration/application/Application.js +50 -50
  98. package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxHandler.js +121 -116
  99. package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxesCache.js +16 -12
  100. package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageAPI.js +2 -4
  101. package/src/main/js/sap/ushell/components/applicationIntegration/application/WebGUIStatefulHandler.js +48 -53
  102. package/src/main/js/sap/ushell/components/applicationIntegration/configuration/AppMeta.js +1 -1
  103. package/src/main/js/sap/ushell/components/applicationIntegration/relatedServices/RelatedServices.js +2 -1
  104. package/src/main/js/sap/ushell/components/container/ApplicationContainer.js +2 -2
  105. package/src/main/js/sap/ushell/components/contentFinder/CatalogService.js +26 -5
  106. package/src/main/js/sap/ushell/components/contentFinder/Component.js +20 -13
  107. package/src/main/js/sap/ushell/components/contentFinder/controller/AppSearch.controller.js +28 -35
  108. package/src/main/js/sap/ushell/components/contentFinder/controller/ContentFinderDialog.controller.js +1 -1
  109. package/src/main/js/sap/ushell/components/contentFinder/controller/WidgetGallery.controller.js +1 -1
  110. package/src/main/js/sap/ushell/components/contentFinder/manifest.json +1 -1
  111. package/src/main/js/sap/ushell/components/contentFinder/model/formatter.js +60 -5
  112. package/src/main/js/sap/ushell/components/contentFinder/resources/resources.properties +17 -6
  113. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ar.properties +6 -0
  114. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_bg.properties +6 -0
  115. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ca.properties +6 -0
  116. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_cnr.properties +6 -0
  117. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_cs.properties +6 -0
  118. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_cy.properties +6 -0
  119. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_da.properties +6 -0
  120. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_de.properties +6 -0
  121. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_el.properties +6 -0
  122. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_en.properties +6 -0
  123. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_en_GB.properties +6 -0
  124. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_en_US_saprigi.properties +11 -3
  125. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_es.properties +6 -0
  126. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_es_MX.properties +6 -0
  127. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_et.properties +6 -0
  128. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_fi.properties +6 -0
  129. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_fr.properties +6 -0
  130. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_fr_CA.properties +6 -0
  131. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_hi.properties +6 -0
  132. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_hr.properties +6 -0
  133. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_hu.properties +6 -0
  134. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_id.properties +6 -0
  135. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_it.properties +6 -0
  136. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_iw.properties +6 -0
  137. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ja.properties +6 -0
  138. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_kk.properties +6 -0
  139. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ko.properties +6 -0
  140. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_lt.properties +6 -0
  141. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_lv.properties +6 -0
  142. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_mk.properties +6 -0
  143. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ms.properties +6 -0
  144. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_nl.properties +6 -0
  145. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_no.properties +6 -0
  146. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_pl.properties +6 -0
  147. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_pt.properties +6 -0
  148. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_pt_PT.properties +6 -0
  149. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ro.properties +6 -0
  150. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ru.properties +6 -0
  151. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sh.properties +6 -0
  152. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sk.properties +6 -0
  153. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sl.properties +6 -0
  154. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sr.properties +6 -0
  155. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sv.properties +6 -0
  156. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_th.properties +6 -0
  157. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_tr.properties +6 -0
  158. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_uk.properties +6 -0
  159. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_vi.properties +6 -0
  160. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_zh_CN.properties +6 -0
  161. package/src/main/js/sap/ushell/components/contentFinder/resources/resources_zh_TW.properties +6 -0
  162. package/src/main/js/sap/ushell/components/contentFinder/view/AppSearch.view.xml +174 -176
  163. package/src/main/js/sap/ushell/components/contentFinder/view/AppSearchCategoryTree.fragment.xml +28 -7
  164. package/src/main/js/sap/ushell/components/contentFinder/view/ContentFinderDialog.view.xml +1 -1
  165. package/src/main/js/sap/ushell/components/contentFinder/view/VisualizationsNoDataIllustratedMessage.fragment.xml +28 -0
  166. package/src/main/js/sap/ushell/components/contentFinderStandalone/Component.js +1 -1
  167. package/src/main/js/sap/ushell/components/contentFinderStandalone/controller/ContentFinderStandalone.controller.js +17 -14
  168. package/src/main/js/sap/ushell/components/contentFinderStandalone/manifest.json +1 -1
  169. package/src/main/js/sap/ushell/components/contentFinderStandalone/manifestAppSearch.json +1 -1
  170. package/src/main/js/sap/ushell/components/factsheet/Component.js +1 -1
  171. package/src/main/js/sap/ushell/components/homepage/ActionMode.js +1 -1
  172. package/src/main/js/sap/ushell/components/homepage/DashboardContent.view.js +1 -1
  173. package/src/main/js/sap/ushell/components/homepage/DashboardGroupsBox.js +1 -1
  174. package/src/main/js/sap/ushell/components/homepage/DashboardUIActions.js +1 -1
  175. package/src/main/js/sap/ushell/components/homepage/manifest.json +1 -1
  176. package/src/main/js/sap/ushell/components/pages/ActionMode.js +6 -1
  177. package/src/main/js/sap/ushell/components/pages/Component.js +1 -1
  178. package/src/main/js/sap/ushell/components/pages/MyHomeImport.js +1 -1
  179. package/src/main/js/sap/ushell/components/pages/controller/PageRuntime.controller.js +2 -2
  180. package/src/main/js/sap/ushell/components/pages/manifest.json +1 -1
  181. package/src/main/js/sap/ushell/components/runtimeSwitcher/controller/RuntimeSwitcher.controller.js +1 -1
  182. package/src/main/js/sap/ushell/components/runtimeSwitcher/manifest.json +1 -1
  183. package/src/main/js/sap/ushell/components/shell/FloatingContainer/Component.js +2 -1
  184. package/src/main/js/sap/ushell/components/shell/FloatingContainer/controls/FloatingContainer.js +74 -5
  185. package/src/main/js/sap/ushell/components/shell/FloatingContainer/manifest.json +1 -1
  186. package/src/main/js/sap/ushell/components/shell/MenuBar/manifest.json +1 -1
  187. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenu.controller.js +1 -1
  188. package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/manifest.json +1 -1
  189. package/src/main/js/sap/ushell/components/shell/Notifications/Component.js +1 -1
  190. package/src/main/js/sap/ushell/components/shell/ProductSwitch/Component.js +1 -1
  191. package/src/main/js/sap/ushell/components/shell/Search/manifest.json +1 -1
  192. package/src/main/js/sap/ushell/components/shell/SearchCEP/Component.js +1 -1
  193. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchCEP.controller.js +20 -4
  194. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/FrequentActivityProvider.js +1 -1
  195. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/RecentSearchProvider.js +1 -1
  196. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchProvider.js +1 -1
  197. package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchServiceProvider.js +1 -1
  198. package/src/main/js/sap/ushell/components/shell/Settings/Component.js +1 -1
  199. package/src/main/js/sap/ushell/components/shell/Settings/appearance/Appearance.controller.js +149 -197
  200. package/src/main/js/sap/ushell/components/shell/Settings/appearance/Appearance.view.xml +88 -85
  201. package/src/main/js/sap/ushell/components/shell/Settings/appearance/AppearanceEntry.js +15 -19
  202. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/Component.js +1 -1
  203. package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenu.controller.js +2 -2
  204. package/src/main/js/sap/ushell/components/shell/UserImage/Component.js +1 -1
  205. package/src/main/js/sap/ushell/components/visualizationOrganizer/Component.js +1 -1
  206. package/src/main/js/sap/ushell/components/workPageBuilder/Component.js +30 -1
  207. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.accessibility.js +1 -1
  208. package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.controller.js +30 -16
  209. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPage.js +1 -1
  210. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageButton.js +1 -1
  211. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageCell.js +1 -1
  212. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumn.js +1 -1
  213. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnResizer.js +1 -1
  214. package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRow.js +1 -1
  215. package/src/main/js/sap/ushell/components/workPageBuilder/manifest.json +1 -1
  216. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources.properties +29 -15
  217. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ar.properties +3 -0
  218. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_bg.properties +3 -0
  219. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ca.properties +3 -0
  220. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_cnr.properties +3 -0
  221. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_cs.properties +3 -0
  222. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_cy.properties +3 -0
  223. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_da.properties +3 -0
  224. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_de.properties +3 -0
  225. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_el.properties +3 -0
  226. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_en.properties +3 -0
  227. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_en_GB.properties +3 -0
  228. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_en_US_saprigi.properties +3 -0
  229. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_es.properties +3 -0
  230. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_es_MX.properties +3 -0
  231. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_et.properties +3 -0
  232. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_fi.properties +3 -0
  233. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_fr.properties +3 -0
  234. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_fr_CA.properties +3 -0
  235. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_hi.properties +3 -0
  236. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_hr.properties +3 -0
  237. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_hu.properties +3 -0
  238. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_id.properties +3 -0
  239. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_it.properties +3 -0
  240. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_iw.properties +4 -1
  241. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ja.properties +3 -0
  242. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_kk.properties +3 -0
  243. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ko.properties +3 -0
  244. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_lt.properties +3 -0
  245. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_lv.properties +3 -0
  246. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_mk.properties +3 -0
  247. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ms.properties +3 -0
  248. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_nl.properties +3 -0
  249. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_no.properties +3 -0
  250. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_pl.properties +3 -0
  251. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_pt.properties +3 -0
  252. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_pt_PT.properties +3 -0
  253. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ro.properties +3 -0
  254. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_ru.properties +3 -0
  255. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sh.properties +3 -0
  256. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sk.properties +3 -0
  257. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sl.properties +3 -0
  258. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sr.properties +3 -0
  259. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_sv.properties +3 -0
  260. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_th.properties +3 -0
  261. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_tr.properties +3 -0
  262. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_uk.properties +3 -0
  263. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_vi.properties +3 -0
  264. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_zh_CN.properties +3 -0
  265. package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_zh_TW.properties +3 -0
  266. package/src/main/js/sap/ushell/components/workPageRuntime/Component.js +1 -1
  267. package/src/main/js/sap/ushell/components/workPageRuntime/controller/WorkPageRuntime.controller.js +1 -1
  268. package/src/main/js/sap/ushell/components/workPageRuntime/manifest.json +1 -1
  269. package/src/main/js/sap/ushell/designtime/ApplicationContainer.designtime.js +1 -1
  270. package/src/main/js/sap/ushell/iconfonts.js +2 -1
  271. package/src/main/js/sap/ushell/library.js +1 -1
  272. package/src/main/js/sap/ushell/navigationMode.js +1 -1
  273. package/src/main/js/sap/ushell/performance/ShellAnalytics.js +18 -6
  274. package/src/main/js/sap/ushell/performance/StatisticalRecord.js +1 -1
  275. package/src/main/js/sap/ushell/plugins/appwarmup/Component.js +1 -1
  276. package/src/main/js/sap/ushell/renderer/Renderer.js +21 -20
  277. package/src/main/js/sap/ushell/renderer/Shell.controller.js +378 -576
  278. package/src/main/js/sap/ushell/renderer/Shell.view.js +5 -4
  279. package/src/main/js/sap/ushell/renderer/resources/resources.properties +57 -22
  280. package/src/main/js/sap/ushell/renderer/resources/resources_ar.properties +4 -4
  281. package/src/main/js/sap/ushell/renderer/resources/resources_bg.properties +4 -4
  282. package/src/main/js/sap/ushell/renderer/resources/resources_ca.properties +4 -4
  283. package/src/main/js/sap/ushell/renderer/resources/resources_cnr.properties +4 -4
  284. package/src/main/js/sap/ushell/renderer/resources/resources_cs.properties +4 -4
  285. package/src/main/js/sap/ushell/renderer/resources/resources_cy.properties +4 -4
  286. package/src/main/js/sap/ushell/renderer/resources/resources_da.properties +4 -4
  287. package/src/main/js/sap/ushell/renderer/resources/resources_de.properties +4 -4
  288. package/src/main/js/sap/ushell/renderer/resources/resources_el.properties +4 -4
  289. package/src/main/js/sap/ushell/renderer/resources/resources_en.properties +4 -4
  290. package/src/main/js/sap/ushell/renderer/resources/resources_en_GB.properties +4 -4
  291. package/src/main/js/sap/ushell/renderer/resources/resources_en_US_saprigi.properties +6 -4
  292. package/src/main/js/sap/ushell/renderer/resources/resources_es.properties +3 -3
  293. package/src/main/js/sap/ushell/renderer/resources/resources_es_MX.properties +4 -4
  294. package/src/main/js/sap/ushell/renderer/resources/resources_et.properties +4 -4
  295. package/src/main/js/sap/ushell/renderer/resources/resources_fi.properties +4 -4
  296. package/src/main/js/sap/ushell/renderer/resources/resources_fr.properties +4 -4
  297. package/src/main/js/sap/ushell/renderer/resources/resources_fr_CA.properties +10 -10
  298. package/src/main/js/sap/ushell/renderer/resources/resources_hi.properties +4 -4
  299. package/src/main/js/sap/ushell/renderer/resources/resources_hr.properties +4 -4
  300. package/src/main/js/sap/ushell/renderer/resources/resources_hu.properties +4 -4
  301. package/src/main/js/sap/ushell/renderer/resources/resources_id.properties +9 -9
  302. package/src/main/js/sap/ushell/renderer/resources/resources_it.properties +3 -3
  303. package/src/main/js/sap/ushell/renderer/resources/resources_iw.properties +4 -4
  304. package/src/main/js/sap/ushell/renderer/resources/resources_ja.properties +4 -4
  305. package/src/main/js/sap/ushell/renderer/resources/resources_kk.properties +4 -4
  306. package/src/main/js/sap/ushell/renderer/resources/resources_ko.properties +4 -4
  307. package/src/main/js/sap/ushell/renderer/resources/resources_lt.properties +4 -4
  308. package/src/main/js/sap/ushell/renderer/resources/resources_lv.properties +4 -4
  309. package/src/main/js/sap/ushell/renderer/resources/resources_mk.properties +4 -4
  310. package/src/main/js/sap/ushell/renderer/resources/resources_ms.properties +1 -1
  311. package/src/main/js/sap/ushell/renderer/resources/resources_nl.properties +4 -4
  312. package/src/main/js/sap/ushell/renderer/resources/resources_no.properties +4 -4
  313. package/src/main/js/sap/ushell/renderer/resources/resources_pl.properties +4 -4
  314. package/src/main/js/sap/ushell/renderer/resources/resources_pt.properties +4 -4
  315. package/src/main/js/sap/ushell/renderer/resources/resources_pt_PT.properties +4 -4
  316. package/src/main/js/sap/ushell/renderer/resources/resources_ro.properties +4 -4
  317. package/src/main/js/sap/ushell/renderer/resources/resources_ru.properties +4 -4
  318. package/src/main/js/sap/ushell/renderer/resources/resources_sh.properties +4 -4
  319. package/src/main/js/sap/ushell/renderer/resources/resources_sk.properties +4 -4
  320. package/src/main/js/sap/ushell/renderer/resources/resources_sl.properties +4 -4
  321. package/src/main/js/sap/ushell/renderer/resources/resources_sr.properties +4 -4
  322. package/src/main/js/sap/ushell/renderer/resources/resources_sv.properties +4 -4
  323. package/src/main/js/sap/ushell/renderer/resources/resources_th.properties +4 -4
  324. package/src/main/js/sap/ushell/renderer/resources/resources_tr.properties +4 -4
  325. package/src/main/js/sap/ushell/renderer/resources/resources_uk.properties +4 -4
  326. package/src/main/js/sap/ushell/renderer/resources/resources_vi.properties +4 -4
  327. package/src/main/js/sap/ushell/renderer/resources/resources_zh_CN.properties +4 -4
  328. package/src/main/js/sap/ushell/renderer/resources/resources_zh_TW.properties +4 -4
  329. package/src/main/js/sap/ushell/renderer/search/searchComponent/manifest.json +1 -1
  330. package/src/main/js/sap/ushell/renderers/fiori2/Shell.view.js +5 -4
  331. package/src/main/js/sap/ushell/services/AppLifeCycle.js +102 -107
  332. package/src/main/js/sap/ushell/services/AppState.js +1 -1
  333. package/src/main/js/sap/ushell/services/Bookmark.js +1 -1
  334. package/src/main/js/sap/ushell/services/BookmarkV2.js +1 -1
  335. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Formatter.js +1 -1
  336. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundIndex.js +1 -1
  337. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundProvider.js +1 -1
  338. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/PrelaunchOperations.js +1 -1
  339. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Search.js +1 -1
  340. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/StagedLogger.js +1 -1
  341. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/SystemContext.js +1 -1
  342. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Utils.js +1 -1
  343. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/VirtualInbounds.js +1 -1
  344. package/src/main/js/sap/ushell/services/ClientSideTargetResolution/XAppStateProcessing.js +1 -1
  345. package/src/main/js/sap/ushell/services/ClientSideTargetResolution.js +2 -2
  346. package/src/main/js/sap/ushell/services/CommonDataModel/SiteConverter.js +1 -1
  347. package/src/main/js/sap/ushell/services/CommonDataModel/vizTypeDefaults/VizTypeDefaults.js +1 -1
  348. package/src/main/js/sap/ushell/services/CommonDataModel.js +1 -1
  349. package/src/main/js/sap/ushell/services/Configuration.js +1 -1
  350. package/src/main/js/sap/ushell/services/ConfigurationDefaults.js +1 -1
  351. package/src/main/js/sap/ushell/services/ContentExtensionAdapterFactory.js +1 -1
  352. package/src/main/js/sap/ushell/services/CrossApplicationNavigation.js +1 -1
  353. package/src/main/js/sap/ushell/services/DarkModeSupport.js +161 -144
  354. package/src/main/js/sap/ushell/services/Extension/Item.js +1 -1
  355. package/src/main/js/sap/ushell/services/Extension.js +3 -3
  356. package/src/main/js/sap/ushell/services/FlpLaunchPage.js +1 -1
  357. package/src/main/js/sap/ushell/services/FrameBoundExtension/FloatingContainer.js +1 -1
  358. package/src/main/js/sap/ushell/services/FrameBoundExtension/Footer.js +1 -1
  359. package/src/main/js/sap/ushell/services/FrameBoundExtension/Item.js +1 -1
  360. package/src/main/js/sap/ushell/services/FrameBoundExtension/SidePane.js +1 -1
  361. package/src/main/js/sap/ushell/services/FrameBoundExtension/ToolArea.js +1 -1
  362. package/src/main/js/sap/ushell/services/FrameBoundExtension.js +1 -1
  363. package/src/main/js/sap/ushell/services/LaunchPage.js +1 -1
  364. package/src/main/js/sap/ushell/services/Menu.js +1 -1
  365. package/src/main/js/sap/ushell/services/Message.js +1 -1
  366. package/src/main/js/sap/ushell/services/MessageBroker/MessageBrokerEngine.js +1 -1
  367. package/src/main/js/sap/ushell/services/MessageBroker.js +1 -1
  368. package/src/main/js/sap/ushell/services/MessageInternal.js +1 -1
  369. package/src/main/js/sap/ushell/services/Navigation/compatibility.js +1 -1
  370. package/src/main/js/sap/ushell/services/Navigation/utils.js +1 -1
  371. package/src/main/js/sap/ushell/services/Navigation.js +1 -1
  372. package/src/main/js/sap/ushell/services/NavigationDataProvider.js +1 -1
  373. package/src/main/js/sap/ushell/services/PageBuilding.js +1 -1
  374. package/src/main/js/sap/ushell/services/PagePersistence.js +1 -1
  375. package/src/main/js/sap/ushell/services/PageReferencing.js +1 -1
  376. package/src/main/js/sap/ushell/services/Pages.js +1 -1
  377. package/src/main/js/sap/ushell/services/Personalization.js +1 -1
  378. package/src/main/js/sap/ushell/services/PersonalizationV2.js +1 -1
  379. package/src/main/js/sap/ushell/services/PluginManager/Extensions.js +1 -1
  380. package/src/main/js/sap/ushell/services/PluginManager/HeaderExtensions.js +1 -1
  381. package/src/main/js/sap/ushell/services/PluginManager/MenuExtensions.js +1 -1
  382. package/src/main/js/sap/ushell/services/PluginManager.js +1 -1
  383. package/src/main/js/sap/ushell/services/ReferenceResolver.js +74 -100
  384. package/src/main/js/sap/ushell/services/Search.js +1 -1
  385. package/src/main/js/sap/ushell/services/SearchCEP.js +1 -1
  386. package/src/main/js/sap/ushell/services/SearchableContent.js +1 -1
  387. package/src/main/js/sap/ushell/services/ShellNavigation.js +1 -1
  388. package/src/main/js/sap/ushell/services/SmartNavigation.js +1 -1
  389. package/src/main/js/sap/ushell/services/SpaceContent.js +1 -1
  390. package/src/main/js/sap/ushell/services/UITracer.js +1 -1
  391. package/src/main/js/sap/ushell/services/URLShortening.js +1 -1
  392. package/src/main/js/sap/ushell/services/URLTemplate.js +1 -1
  393. package/src/main/js/sap/ushell/services/Ui5ComponentLoader/utils.js +2 -1
  394. package/src/main/js/sap/ushell/services/Ui5ComponentLoader.js +1 -1
  395. package/src/main/js/sap/ushell/services/UserDefaultParameterPersistence.js +1 -1
  396. package/src/main/js/sap/ushell/services/UserDefaultParameters.js +1 -1
  397. package/src/main/js/sap/ushell/services/UserInfo.js +1 -1
  398. package/src/main/js/sap/ushell/services/UserRecents.js +4 -4
  399. package/src/main/js/sap/ushell/services/VisualizationDataProvider.js +1 -1
  400. package/src/main/js/sap/ushell/services/VisualizationInstantiation.js +1 -1
  401. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/ContentExtensionAdapterConfig.js +1 -1
  402. package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/FeaturedGroupConfig.js +1 -1
  403. package/src/main/js/sap/ushell/services/_CrossApplicationNavigation/utils.js +1 -1
  404. package/src/main/js/sap/ushell/services/_PageReferencing/PageReferencer.js +1 -1
  405. package/src/main/js/sap/ushell/state/ShellModel.js +31 -0
  406. package/src/main/js/sap/ushell/state/StateManager.js +28 -0
  407. package/src/main/js/sap/ushell/support/plugins/flpConfig/FlpConfigurationPlugin.js +1 -1
  408. package/src/main/js/sap/ushell/themes/base/fonts/BusinessSuiteInAppSymbols.ttf +0 -0
  409. package/src/main/js/sap/ushell/themes/base/fonts/BusinessSuiteInAppSymbols.woff +0 -0
  410. package/src/main/js/sap/ushell/themes/base/fonts/BusinessSuiteInAppSymbols.woff2 +0 -0
  411. package/src/main/js/sap/ushell/themes/base/library.source.less +0 -1
  412. package/src/main/js/sap/ushell/themes/sap_belize_base/library.source.less +0 -1
  413. package/src/main/js/sap/ushell/themes/sap_bluecrystal_base/library.source.less +0 -1
  414. package/src/main/js/sap/ushell/themes/sap_hcb/library.source.less +0 -1
  415. package/src/main/js/sap/ushell/ui/cards/RecentActivitiesExtension.js +1 -1
  416. package/src/main/js/sap/ushell/ui/footerbar/AboutButton.js +17 -21
  417. package/src/main/js/sap/ushell/ui/footerbar/AboutDialog.controller.js +358 -100
  418. package/src/main/js/sap/ushell/ui/footerbar/AboutDialog.fragment.xml +169 -90
  419. package/src/main/js/sap/ushell/ui/launchpad/ExtendedChangeDetection.js +1 -1
  420. package/src/main/js/sap/ushell/ui/launchpad/Page.js +77 -9
  421. package/src/main/js/sap/ushell/ui/launchpad/PageRenderer.js +20 -20
  422. package/src/main/js/sap/ushell/ui/launchpad/Section.js +1 -1
  423. package/src/main/js/sap/ushell/ui/launchpad/section/CompactArea.js +1 -1
  424. package/src/main/js/sap/ushell/ui/shell/ToolAreaItem.js +1 -1
  425. package/src/main/js/sap/ushell/ui/utils.js +1 -1
  426. package/src/main/js/sap/ushell/ui5service/ShellUIServiceFactory.js +1 -1
  427. package/src/main/js/sap/ushell/ui5service/UserStatus.js +1 -1
  428. package/src/main/js/sap/ushell/utils/DynamicTileRequest.js +1 -3
  429. package/src/main/js/sap/ushell/utils/RestrictedJSONModel.js +3 -1
  430. package/src/main/js/sap/ushell/utils/UrlParsing.js +38 -0
  431. package/src/main/js/sap/ushell/utils/UrlShortening.js +1 -1
  432. package/src/main/js/sap/ushell/utils/workpage/DestinationResolver.js +13 -1
  433. package/src/main/js/sap/ushell/utils/workpage/WorkPageHost.js +1 -1
  434. package/src/main/js/sap/ushell/utils/workpage/WorkPageService.js +1 -1
  435. package/src/main/js/sap/ushell/utils/workpage/WorkPageVizInstantiation.js +1 -1
  436. package/src/main/js/sap/ushell/utils/workpage/resources/resources.properties +43 -27
  437. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ar.properties +2 -2
  438. package/src/main/js/sap/ushell/utils/workpage/resources/resources_bg.properties +2 -2
  439. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ca.properties +2 -2
  440. package/src/main/js/sap/ushell/utils/workpage/resources/resources_cnr.properties +2 -2
  441. package/src/main/js/sap/ushell/utils/workpage/resources/resources_cs.properties +2 -2
  442. package/src/main/js/sap/ushell/utils/workpage/resources/resources_cy.properties +2 -2
  443. package/src/main/js/sap/ushell/utils/workpage/resources/resources_da.properties +2 -2
  444. package/src/main/js/sap/ushell/utils/workpage/resources/resources_de.properties +2 -2
  445. package/src/main/js/sap/ushell/utils/workpage/resources/resources_el.properties +2 -2
  446. package/src/main/js/sap/ushell/utils/workpage/resources/resources_en.properties +2 -2
  447. package/src/main/js/sap/ushell/utils/workpage/resources/resources_en_GB.properties +2 -2
  448. package/src/main/js/sap/ushell/utils/workpage/resources/resources_es.properties +2 -2
  449. package/src/main/js/sap/ushell/utils/workpage/resources/resources_es_MX.properties +2 -2
  450. package/src/main/js/sap/ushell/utils/workpage/resources/resources_et.properties +2 -2
  451. package/src/main/js/sap/ushell/utils/workpage/resources/resources_fi.properties +2 -2
  452. package/src/main/js/sap/ushell/utils/workpage/resources/resources_fr.properties +2 -2
  453. package/src/main/js/sap/ushell/utils/workpage/resources/resources_fr_CA.properties +2 -2
  454. package/src/main/js/sap/ushell/utils/workpage/resources/resources_hi.properties +2 -2
  455. package/src/main/js/sap/ushell/utils/workpage/resources/resources_hr.properties +2 -2
  456. package/src/main/js/sap/ushell/utils/workpage/resources/resources_hu.properties +5 -5
  457. package/src/main/js/sap/ushell/utils/workpage/resources/resources_id.properties +2 -2
  458. package/src/main/js/sap/ushell/utils/workpage/resources/resources_it.properties +2 -2
  459. package/src/main/js/sap/ushell/utils/workpage/resources/resources_iw.properties +2 -2
  460. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ja.properties +2 -2
  461. package/src/main/js/sap/ushell/utils/workpage/resources/resources_kk.properties +2 -2
  462. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ko.properties +2 -2
  463. package/src/main/js/sap/ushell/utils/workpage/resources/resources_lt.properties +2 -2
  464. package/src/main/js/sap/ushell/utils/workpage/resources/resources_lv.properties +2 -2
  465. package/src/main/js/sap/ushell/utils/workpage/resources/resources_mk.properties +2 -2
  466. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ms.properties +2 -2
  467. package/src/main/js/sap/ushell/utils/workpage/resources/resources_nl.properties +2 -2
  468. package/src/main/js/sap/ushell/utils/workpage/resources/resources_no.properties +2 -2
  469. package/src/main/js/sap/ushell/utils/workpage/resources/resources_pl.properties +2 -2
  470. package/src/main/js/sap/ushell/utils/workpage/resources/resources_pt.properties +2 -2
  471. package/src/main/js/sap/ushell/utils/workpage/resources/resources_pt_PT.properties +2 -2
  472. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ro.properties +2 -2
  473. package/src/main/js/sap/ushell/utils/workpage/resources/resources_ru.properties +2 -2
  474. package/src/main/js/sap/ushell/utils/workpage/resources/resources_sh.properties +2 -2
  475. package/src/main/js/sap/ushell/utils/workpage/resources/resources_sk.properties +2 -2
  476. package/src/main/js/sap/ushell/utils/workpage/resources/resources_sl.properties +2 -2
  477. package/src/main/js/sap/ushell/utils/workpage/resources/resources_sr.properties +2 -2
  478. package/src/main/js/sap/ushell/utils/workpage/resources/resources_sv.properties +2 -2
  479. package/src/main/js/sap/ushell/utils/workpage/resources/resources_th.properties +2 -2
  480. package/src/main/js/sap/ushell/utils/workpage/resources/resources_tr.properties +2 -2
  481. package/src/main/js/sap/ushell/utils/workpage/resources/resources_uk.properties +3 -3
  482. package/src/main/js/sap/ushell/utils/workpage/resources/resources_vi.properties +2 -2
  483. package/src/main/js/sap/ushell/utils/workpage/resources/resources_zh_CN.properties +2 -2
  484. package/src/main/js/sap/ushell/utils/workpage/resources/resources_zh_TW.properties +2 -2
  485. package/src/main/js/sap/ushell/utils.js +8 -20
  486. package/src/test/js/sap/ushell/bootstrap/sandbox.js +1 -1
  487. package/src/main/js/sap/ushell/themes/base/AppearanceView.less +0 -213
  488. package/src/main/js/sap/ushell/themes/sap_belize_base/AppearanceView.less +0 -213
  489. package/src/main/js/sap/ushell/themes/sap_bluecrystal_base/AppearanceView.less +0 -213
  490. package/src/main/js/sap/ushell/themes/sap_hcb/base_AppearanceView.less +0 -213
@@ -3,109 +3,156 @@
3
3
  sap.ui.define([
4
4
  "sap/base/Log",
5
5
  "sap/ushell/services/AppConfiguration",
6
+ "sap/base/util/deepClone",
7
+ "sap/base/util/isPlainObject",
6
8
  "sap/base/util/restricted/_curry",
7
9
  "sap/base/util/restricted/_zipObject",
8
10
  "sap/ui/VersionInfo",
9
- "sap/ushell/Config",
10
11
  "sap/ushell/Container"
11
- ], function (Log, oAppConfiguration, _curry, _zipObject, VersionInfo, Config, Container) {
12
+ ], (
13
+ Log,
14
+ AppConfiguration,
15
+ deepClone,
16
+ isPlainObject,
17
+ _curry,
18
+ _zipObject,
19
+ VersionInfo,
20
+ Container
21
+ ) => {
12
22
  "use strict";
13
- /*global */
14
23
 
15
- /**
16
- * AppInfoParameters component responsible to direct the recovery of each app info parameter value
17
- */
18
-
19
- var LAUNCHPAD = "LAUNCHPAD";
24
+ const LAUNCHPAD = "LAUNCHPAD";
25
+
26
+ // Those parameters are restricted and shall only be set by FLP.
27
+ const aRestrictedParameters = [
28
+ "productName",
29
+ "theme",
30
+ "appIntent"
31
+ ];
32
+
33
+ // Those parameters are supported by the AppInfoParameters any
34
+ // other parameter should be part of customProperties.
35
+ const aSupportedParameters = [
36
+ "productName",
37
+ "theme",
38
+ "languageTag",
39
+ "appIntent",
40
+ "technicalAppComponentId",
41
+ "appId",
42
+ "appVersion",
43
+ "appSupportInfo",
44
+ "appFrameworkVersion",
45
+ "appFrameworkId",
46
+ "title",
47
+ "applicationParams",
48
+ "shellFrameworkVersion"
49
+ ];
20
50
 
21
51
  /**
22
- * Retrieves the application type
23
- * It looks up application type
24
- * @param {object} oCurrentApplication current application
25
- * @returns {string} the application type
52
+ * @alias sap.ushell.AppInfoParameters
53
+ * AppInfoParameters component responsible to direct the recovery of each app info parameter value
54
+ *
55
+ * @private
26
56
  */
27
- function getApplicationType (oCurrentApplication) {
28
- var sApplicationType = oCurrentApplication.applicationType;
29
- if (sApplicationType === "TR") {
30
- sApplicationType = "GUI";
31
- }
32
- return sApplicationType;
33
- }
57
+ class AppInfoParameters {
58
+ // map of application info parameters to provider functions
59
+ #oDefaultHandlers = {
60
+ theme: this.#getUserEnv.bind(this, "User.env.sap-theme-NWBC"),
61
+ languageTag: this.#getUserEnv.bind(this, "User.env.sap-languagebcp47"),
62
+ appIntent: this.#getAppIntent.bind(this),
63
+ appFrameworkId: this.#getAppFrameworkId.bind(this),
64
+ appFrameworkVersion: this.#getFrameworkVersion.bind(this),
65
+ appSupportInfo: this.#getSupportInfo.bind(this),
66
+ technicalAppComponentId: this.#getTechnicalAppComponentId.bind(this),
67
+ appId: this.#getAppId.bind(this),
68
+ appVersion: this.#getAppVersion.bind(this),
69
+ productName: _curry(this.#getSystemContextProperty.bind(this))("productName"),
70
+ applicationParams: this.#getStartupParams.bind(this)
71
+ };
34
72
 
35
- function getCurrentAppCapabilities () {
36
- return (oAppConfiguration.getCurrentApplication() && oAppConfiguration.getCurrentApplication().appCapabilities) || {};
37
- }
73
+ // overrides by the application for the standard app info parameters
74
+ #oAppParameters = {};
75
+
76
+ // Custom app info parameters
77
+ #oCustomAppParameters = {};
38
78
 
39
- function getFrameworkVersion (oCurrentApplication) {
40
- function constructVersion (oVersion) {
41
- return (oVersion.version || "") + (" (" + (oVersion.buildTimestamp || "") + ")") || "";
79
+ /**
80
+ * Retrieves the application type
81
+ * It looks up application type
82
+ * @param {object} oCurrentApplication current application
83
+ * @returns {string} the application type
84
+ */
85
+ #getApplicationType (oCurrentApplication) {
86
+ let sApplicationType = oCurrentApplication.applicationType;
87
+ if (sApplicationType === "TR") {
88
+ sApplicationType = "GUI";
89
+ }
90
+ return sApplicationType;
42
91
  }
43
- if (getApplicationType(oCurrentApplication) === "UI5") {
44
- return VersionInfo.load()
45
- .then(constructVersion)
46
- .catch(function () {
47
- Log.error("VersionInfo could not be loaded");
48
- });
92
+
93
+ #getCurrentAppCapabilities () {
94
+ return AppConfiguration.getCurrentApplication()?.appCapabilities || {};
49
95
  }
50
- return undefined;
51
- }
52
96
 
53
- function getAppVersion (oCurrentApplication) {
97
+ async #getFrameworkVersion (oCurrentApplication) {
98
+ const sApplicationType = this.#getApplicationType(oCurrentApplication);
99
+
100
+ if (sApplicationType === "UI5") {
101
+ try {
102
+ const oVersionInfo = await VersionInfo.load();
103
+
104
+ return `${oVersionInfo.version || "" } (${ oVersionInfo.buildTimestamp || "" })` || "";
105
+
106
+ } catch (oError) {
107
+ Log.error("VersionInfo could not be loaded", oError);
108
+ }
109
+ }
110
+ }
54
111
 
55
- return Promise.resolve().then(function () {
56
- var oComponentInstance = oCurrentApplication.componentInstance;
112
+ async #getAppVersion (oCurrentApplication) {
113
+ const oComponentInstance = oCurrentApplication.componentInstance;
57
114
  if (oComponentInstance) {
58
- var sAppVersion = oComponentInstance.getManifestEntry("/sap.app/applicationVersion/version");
115
+ const sAppVersion = oComponentInstance.getManifestEntry("/sap.app/applicationVersion/version");
59
116
  return sAppVersion;
60
117
  }
61
- return undefined;
62
- });
63
- }
118
+ }
64
119
 
65
- /**
66
- * Provider for support info
67
- * It looks up using the sequence
68
- * 1. technical parameter sap-ach, that is SAP application component hierarchy
69
- * 2. appSupportInfo parameter in capability section of the URL template
70
- * @param {object} oCurrentApplication Current Application
71
- * @returns {function} function that resolves to a promise with the support info
72
- */
73
- function getSupportInfo (oCurrentApplication) {
74
- // 1. sap-ach
75
- // 2. app capabilities
76
- var oTechnicalParameterPromise = oCurrentApplication.getTechnicalParameter("sap-ach");
77
- return oTechnicalParameterPromise.then(function (aAch) {
78
- var sAch = aAch && aAch[0];
120
+ /**
121
+ * Provider for support info
122
+ * It looks up using the sequence
123
+ * 1. technical parameter sap-ach, that is SAP application component hierarchy
124
+ * 2. appSupportInfo parameter in capability section of the URL template
125
+ * @param {object} oCurrentApplication Current Application
126
+ * @returns {Promise<string>} function that resolves to a promise with the support info
127
+ */
128
+ async #getSupportInfo (oCurrentApplication) {
129
+ // 1. sap-ach
130
+ const [ sAch ] = await oCurrentApplication.getTechnicalParameter("sap-ach") || [];
79
131
  if (sAch) {
80
132
  return sAch;
81
133
  }
82
- return getCurrentAppCapabilities().appSupportInfo;
83
- });
84
- }
85
-
86
- /**
87
- * Provider for technical application component
88
- * It looks up depending on the technology
89
- * if UI5: take it from the manifest
90
- * if GUI or WDA: parse the application name from the launch URL
91
- * if WCF: parse the wcf-target-id parameter
92
- * if URL-template: looks up technicalAppComponentId in capabilities section
93
- * @param {object} oCurrentApplication Current Application
94
- * @returns {function} function that resolves to a promise with the technical application component
95
- */
96
- function getTechnicalAppComponentId (oCurrentApplication) {
97
-
98
-
99
- function getFromMetadata () {
100
- var oMetadata = oAppConfiguration.getMetadata();
101
- return oMetadata.technicalName;
134
+ // 2. app capabilities
135
+ return this.#getCurrentAppCapabilities().appSupportInfo;
102
136
  }
103
137
 
104
- var oEnabledApplicationTypes = {
105
- UI5: function () {
106
- var oComponentInstance = oCurrentApplication.componentInstance;
138
+ /**
139
+ * Provider for technical application component
140
+ * It looks up depending on the technology
141
+ * if UI5: take it from the manifest
142
+ * if GUI or WDA: parse the application name from the launch URL
143
+ * if WCF: parse the wcf-target-id parameter
144
+ * if URL-template: looks up technicalAppComponentId in capabilities section
145
+ * @param {object} oCurrentApplication Current Application
146
+ * @returns {Promise<string>} function that resolves to a promise with the technical application component
147
+ */
148
+ async #getTechnicalAppComponentId (oCurrentApplication) {
149
+ const sApplicationType = this.#getApplicationType(oCurrentApplication);
150
+ const oMetadata = AppConfiguration.getMetadata();
151
+
152
+ if (sApplicationType === "UI5") {
153
+ const oComponentInstance = oCurrentApplication.componentInstance;
107
154
  if (oComponentInstance) {
108
- var sComponentName = oComponentInstance.getManifestEntry("/sap.ui5/componentName");
155
+ let sComponentName = oComponentInstance.getManifestEntry("/sap.ui5/componentName");
109
156
  if (!sComponentName) {
110
157
  sComponentName = oComponentInstance.getMetadata().getComponentName();
111
158
  }
@@ -113,328 +160,413 @@ sap.ui.define([
113
160
  return sComponentName;
114
161
  }
115
162
 
116
- return getFromMetadata();
117
- },
118
- TR: function () {
119
- return (getFromMetadata() || "")
163
+ return oMetadata.technicalName;
164
+ }
165
+
166
+ if (sApplicationType === "URL") {
167
+ const oCurrentApp = AppConfiguration.getCurrentApplication();
168
+ if (oCurrentApp.appCapabilities.technicalAppComponentId) {
169
+ return oCurrentApp.appCapabilities.technicalAppComponentId;
170
+ }
171
+ }
172
+
173
+ if (sApplicationType === "GUI") {
174
+ return (oMetadata.technicalName || "")
120
175
  .replace(/ .*/, "") // remove all characters after the first space if any
121
176
  .replace(/^\*/, ""); // remove asterisk at the beginning if any
122
- },
123
- WDA: getFromMetadata,
124
- NWBC: getFromMetadata,
125
- URL: function () {
126
- return Promise.resolve().then(function () {
127
-
128
- var oCurrentApp = oAppConfiguration.getCurrentApplication();
129
- if (oCurrentApp.appCapabilities.technicalAppComponentId) {
130
- return oCurrentApp.appCapabilities.technicalAppComponentId;
131
- }
132
- return undefined;
133
- });
134
177
  }
135
- };
136
178
 
137
- var sApplicationType = oCurrentApplication.applicationType;
138
- if (oEnabledApplicationTypes.hasOwnProperty(sApplicationType)) {
139
- return oEnabledApplicationTypes[sApplicationType]();
179
+ if (sApplicationType === "WDA" || sApplicationType === "NWBC") {
180
+ return oMetadata.technicalName;
181
+ }
140
182
  }
141
183
 
142
- return undefined;
143
- }
144
-
145
- /**
146
- * Provider for application
147
- * It looks up using the sequence
148
- * 1. if on homepage, appfinder use constant LAUNCHPAD or LAUNCHPAD(FXXX) if fiori ID is provided
149
- * 2. technical parameter sap-fiori-id
150
- * 3. looks up parameter appId in capabilities section
151
- * 4. inbound permanent key
152
- * @param {object} oCurrentApplication current application
153
- * @returns {function} function that resolves to a promise with application id.
154
- */
155
- function getAppId (oCurrentApplication) {
156
-
157
- var sAppId = "";
158
- return oCurrentApplication.getTechnicalParameter("sap-fiori-id")
159
- .then(function (aFioriId) {
160
- // case home page
161
- if (oCurrentApplication.homePage) {
162
- // case fiori ID is a string
163
- if (aFioriId && typeof aFioriId[0] === "string") {
164
- // case fiori ID is not empty
165
- // home app
166
- if (aFioriId[0] !== "") {
167
- sAppId = LAUNCHPAD + " (" + aFioriId[0] + ")";
168
- // case fiori id is empty
169
- // This is relevant for app home error page
170
- } else {
171
- sAppId = LAUNCHPAD;
172
- }
173
- } else {
174
- // no Fiori ID is provided
175
- // This is shell home, no custapp or appfinder
176
- sAppId = LAUNCHPAD;
184
+ /**
185
+ * Provider for application
186
+ * It looks up using the sequence
187
+ * 1. if on homepage, appfinder use constant LAUNCHPAD or LAUNCHPAD(FXXX) if fiori ID is provided
188
+ * 2. technical parameter sap-fiori-id
189
+ * 3. looks up parameter appId in capabilities section
190
+ * 4. inbound permanent key
191
+ * @param {object} oCurrentApplication current application
192
+ * @returns {Promise<string>} function that resolves to a promise with application id.
193
+ */
194
+ async #getAppId (oCurrentApplication) {
195
+ const [ sFioriId ] = await oCurrentApplication.getTechnicalParameter("sap-fiori-id") || [];
196
+
197
+ // case home page
198
+ if (oCurrentApplication.homePage) {
199
+ // case fiori ID is a string
200
+ if (sFioriId) {
201
+ // case fiori ID is not empty
202
+ // home app
203
+ if (sFioriId !== "") {
204
+ return `${LAUNCHPAD} (${sFioriId})`;
205
+ // case fiori id is empty
206
+ // This is relevant for app home error page
177
207
  }
178
- // case app
179
- } else if (aFioriId && typeof aFioriId[0] === "string") {
180
- // case fiori ID is a string
181
- sAppId = aFioriId[0];
182
- } else {
183
- sAppId = getCurrentAppCapabilities().appId || oCurrentApplication.inboundPermanentKey;
208
+ return LAUNCHPAD;
184
209
  }
185
- return sAppId;
186
- });
187
- }
210
+ // no Fiori ID is provided
211
+ // This is shell home, no custom home app or appfinder
212
+ return LAUNCHPAD;
213
+ // case app
214
+ } else if (sFioriId) {
215
+ // case fiori ID is a string
216
+ return sFioriId;
217
+ }
218
+ return this.#getCurrentAppCapabilities().appId || oCurrentApplication.inboundPermanentKey;
219
+ }
188
220
 
189
- /**
190
- * Provider for user environment
191
- * It looks up using reference resolver
192
- * @param {string} sUserEnv Parameter name of the user environment
193
- * @returns {Promise<string>} The promise resolves the user parameter
194
- */
195
- function getUserEnv (sUserEnv) {
196
- return Container.getServiceAsync("ReferenceResolver")
197
- .then(function (oReferenceResolverService) {
198
- return new Promise(function (fnResolve, fnReject) {
199
- oReferenceResolverService.resolveReferences([sUserEnv])
200
- .then(function (oResolvedReferences) {
201
- fnResolve(oResolvedReferences[sUserEnv]);
202
- })
203
- .catch(fnReject);
204
- });
205
- });
206
- }
221
+ /**
222
+ * Provider for user environment
223
+ * It looks up using reference resolver
224
+ * @param {string} sUserEnv Parameter name of the user environment
225
+ * @returns {Promise<string>} The promise resolves the user parameter
226
+ */
227
+ async #getUserEnv (sUserEnv) {
228
+ const ReferenceResolver = await Container.getServiceAsync("ReferenceResolver");
229
+ const oResolvedReferences = await ReferenceResolver.resolveReferences([sUserEnv]);
207
230
 
208
- /**
209
- * Provider for framework id
210
- * It looks up framework id in capabilities section if it is a URL template
211
- * else it looks up the application type
212
- * @param {*} oCurrentApplication current application
213
- * @returns {function} Function that resolves to a promise with the framework id
214
- */
215
- function getAppFrameworkId (oCurrentApplication) {
216
- return Promise.resolve().then(function () {
217
- var oCurrentApp = oAppConfiguration.getCurrentApplication();
218
- var sApplicationType = getApplicationType(oCurrentApplication);
231
+ return oResolvedReferences[sUserEnv];
232
+ }
233
+
234
+ /**
235
+ * Provider for framework id
236
+ * It looks up framework id in capabilities section if it is a URL template
237
+ * else it looks up the application type
238
+ * @param {*} oCurrentApplication current application
239
+ * @returns {Promise<string>} Function that resolves to a promise with the framework id
240
+ */
241
+ async #getAppFrameworkId (oCurrentApplication) {
242
+ const oCurrentApp = AppConfiguration.getCurrentApplication();
243
+ let sApplicationType = this.#getApplicationType(oCurrentApplication);
219
244
 
220
- if (sApplicationType && sApplicationType !== "URL") {
221
- return sApplicationType;
245
+ if (sApplicationType === "URL") {
246
+ sApplicationType = oCurrentApp.appCapabilities && oCurrentApp.appCapabilities.appFrameworkId;
222
247
  }
223
248
 
224
- return oCurrentApp.appCapabilities && oCurrentApp.appCapabilities.appFrameworkId;
225
- }).then(function (sApplicationType) {
226
- var oAppTypeToFrameworkId = {
249
+ const oAppTypeToFrameworkId = {
227
250
  NWBC: "WDA",
228
251
  TR: "GUI"
229
252
  };
253
+
230
254
  return oAppTypeToFrameworkId[sApplicationType] || sApplicationType;
231
- });
232
- }
255
+ }
256
+
257
+ /**
258
+ * Retrieves the value of a given property in the system context
259
+ * @param {string} sProperty A property in the system context
260
+ * @param {object} oCurrentApplication The current application
261
+ * @returns {Promise<object>} Function that resolves to a promise with the property
262
+ */
263
+ async #getSystemContextProperty (sProperty, oCurrentApplication) {
264
+ const oSystemContext = await oCurrentApplication.getSystemContext();
233
265
 
234
- /**
235
- * Retrieves the value of a given property in the system context
236
- * @param {string} sProperty A property in the system context
237
- * @param {object} oCurrentApplication The current application
238
- * @returns {function} Function that resolves to a promise with the property
239
- */
240
- function getSystemContext (sProperty, oCurrentApplication) {
241
- return oCurrentApplication.getSystemContext().then(function (oSystemContext) {
242
266
  return oSystemContext.getProperty(sProperty);
243
- });
244
- }
267
+ }
245
268
 
246
- /**
247
- * Retrieves the app intent
248
- * @returns {function} Function that resolves to a promise with app intent
249
- */
250
- function getAppIntent () {
251
- var sHash = window.hasher && window.hasher.getHash();
252
- if (!sHash) {
253
- return Promise.reject("Could not identify current application hash");
269
+ /**
270
+ * Retrieves the app intent
271
+ * @returns {Promise<string>} Function that resolves to a promise with app intent
272
+ */
273
+ async #getAppIntent () {
274
+ const sHash = window.hasher && window.hasher.getHash();
275
+ if (!sHash) {
276
+ throw new Error("Could not identify current application hash");
277
+ }
278
+ return sHash;
254
279
  }
255
- return Promise.resolve().then(
256
- function () {
257
- return sHash;
280
+
281
+
282
+ async #getStartupParams (oCurrentApplication, oApplicationContainer) {
283
+ let oStartupParams = {};
284
+ if (oApplicationContainer?.getCurrentAppTargetResolution?.().extendedInfo) {
285
+ oStartupParams = oApplicationContainer.getCurrentAppTargetResolution().extendedInfo.appParams;
258
286
  }
259
- );
260
- }
261
287
 
262
- // map of application info parameters to provider functions
263
- var oHandlers = {
264
- theme: getUserEnv.bind(null, "User.env.sap-theme-NWBC"),
265
- languageTag: getUserEnv.bind(null, "User.env.sap-languagebcp47"),
266
- appIntent: getAppIntent,
267
- appFrameworkId: getAppFrameworkId,
268
- appFrameworkVersion: getFrameworkVersion,
269
- appSupportInfo: getSupportInfo,
270
- technicalAppComponentId: getTechnicalAppComponentId,
271
- appId: getAppId,
272
- appVersion: getAppVersion,
273
- productName: _curry(getSystemContext)("productName"),
274
- applicationParams: getStartupParams
275
- };
276
-
277
-
278
- function getStartupParams (oCurrentApplication, oApplicationContainer) {
279
- var oStartupParams = {};
280
- if (oApplicationContainer && oApplicationContainer.getCurrentAppTargetResolution &&
281
- oApplicationContainer.getCurrentAppTargetResolution().extendedInfo) {
282
- oStartupParams = oApplicationContainer.getCurrentAppTargetResolution().extendedInfo.appParams;
288
+ return oStartupParams;
283
289
  }
284
290
 
285
- return Promise.resolve(oStartupParams);
286
- }
287
-
288
- /**
289
- * Returns <code>true</code> if the given parameter is a custom property.
290
- * This is the case when:
291
- * - parameter is not listed in AppINfoParameters' oHandlers list
292
- * - parameter name contains a "."
293
- *
294
- * @param {string} sParameter Parameter to be tested
295
- *
296
- * @returns {boolean} Result of check
297
- *
298
- */
299
- function _isCustom (sParameter) {
300
- return !oHandlers[sParameter] && /[.]/.test(sParameter);
301
- }
291
+ async getAllAppInfo (bValues, oCurrentApplication, oComponentInstance, oApplicationContainer) {
292
+ const oAllAppInfo = {};
293
+ const aParametersWithDefaults = Object.keys(this.#oDefaultHandlers);
294
+ const aAppDefinedParameters = Object.keys(this.#oAppParameters);
295
+ const sStandardParameters = Array.from(new Set([...aParametersWithDefaults, ...aAppDefinedParameters]));
302
296
 
303
- function getAllAppInfo (bValues, oCurrentApplication, oComponentInstance, oApplicationContainer) {
304
- return new Promise(function (fnResolve) {
305
- var allAppInfo = {};
297
+ //first, we add all standard attributes
298
+ try {
299
+ // the app overrides are already included the #getInfo call
300
+ const oResult = await this.#getInfo(sStandardParameters, oCurrentApplication, oApplicationContainer);
306
301
 
307
- //first, we collect all custom attributes
308
- for (var sCustomerAttribute in getCustomAttributes()) {
309
- if (bValues) {
310
- allAppInfo[sCustomerAttribute] = getCustomAttributes()[sCustomerAttribute].value;
311
- } else {
312
- allAppInfo[sCustomerAttribute] = getCustomAttributes()[sCustomerAttribute];
302
+ for (const sParameter in oResult) {
303
+ if (bValues) {
304
+ oAllAppInfo[sParameter] = oResult[sParameter];
305
+ } else {
306
+ oAllAppInfo[sParameter] = {
307
+ value: oResult[sParameter]
308
+ };
309
+ }
313
310
  }
311
+ } catch {
312
+ // fail silently
314
313
  }
315
314
 
316
- //then, we add all FLP's attributes
317
- _getInfo(Object.keys(oHandlers), oCurrentApplication, oApplicationContainer).then((oResult) => {
318
- let arrResults = {};
319
- for (var handler in oResult) {
315
+ const aCustomParameters = Object.keys(this.#oCustomAppParameters);
316
+
317
+ // second we add all custom properties
318
+ try {
319
+ const oResult = await this.#getInfo(aCustomParameters, oCurrentApplication, oApplicationContainer);
320
+
321
+ for (const sCustomerAttribute in oResult) {
320
322
  if (bValues) {
321
- arrResults[handler] = oResult[handler];
323
+ oAllAppInfo[sCustomerAttribute] = oResult[sCustomerAttribute].value;
322
324
  } else {
323
- arrResults[handler] = {
324
- value: oResult[handler]
325
- };
325
+ oAllAppInfo[sCustomerAttribute] = oResult[sCustomerAttribute];
326
326
  }
327
327
  }
328
- allAppInfo = Object.assign(arrResults, allAppInfo);
329
- fnResolve(allAppInfo);
330
- }, () => {
331
- fnResolve(allAppInfo);
332
- });
333
- });
334
- }
328
+ } catch {
329
+ // fail silently
330
+ }
335
331
 
336
- /**
337
- * Internal central function to collect the values of the given parameters
338
- * @param {string[]} aParameters Array of requested parameters
339
- * @param {object} oCurrentApplication The current application
340
- * @param {object} oApplicationContainer The application container
341
- * @returns {Promise} oPromise Promise that resolves to an object
342
- * keeping the application info parameters with values
343
- */
344
- function _getInfo (aParameters, oCurrentApplication, oApplicationContainer) {
345
- var oHandlersIncludingCustom = {...oHandlers};
346
- var aPromises = aParameters.map(function (sParameter) {
347
- if (isAttributeExist(sParameter)) {
348
- return Promise.resolve(getCustomValue(sParameter));
332
+ return oAllAppInfo;
333
+ }
334
+
335
+ /**
336
+ * A function to collect the values of the given parameters
337
+ * @param {string[]} aParameters Array of requested parameters
338
+ * @param {object} oCurrentApplication The current application
339
+ * @param {object} oApplicationContainer The application container
340
+ * @returns {Promise} Promise that resolves to an object
341
+ * keeping the application info parameters with values
342
+ */
343
+ async getInfo (aParameters, oCurrentApplication, oApplicationContainer) {
344
+ if (!oCurrentApplication) {
345
+ throw new Error("Parameter application missing");
349
346
  }
350
- // add handler function in case of custom property
351
- if (_isCustom(sParameter)) {
352
- oHandlersIncludingCustom[sParameter] = _curry(getSystemContext)(sParameter);
347
+ return this.#getInfo(["appFrameworkId"], oCurrentApplication, oApplicationContainer).then(() => {
348
+ return this.#getInfo(aParameters, oCurrentApplication, oApplicationContainer);
349
+ });
350
+ }
351
+
352
+ /**
353
+ * Internal central function to collect the values of the given parameters
354
+ * @param {string[]} aParameters Array of requested parameters
355
+ * @param {object} oCurrentApplication The current application
356
+ * @param {object} oApplicationContainer The application container
357
+ * @returns {Promise<Object<string, object>>} Promise that resolves to an object
358
+ * keeping the application info parameters with values
359
+ */
360
+ async #getInfo (aParameters, oCurrentApplication, oApplicationContainer) {
361
+ const aPromises = aParameters.map(async (sParameter) => {
362
+ if (aSupportedParameters.includes(sParameter)) {
363
+ // first we use the parameters defined by app
364
+ if (Object.hasOwn(this.#oAppParameters, sParameter)) {
365
+ return this.#oAppParameters[sParameter];
366
+ }
367
+ // second we use the parameters defined by FLP
368
+ if (Object.hasOwn(this.#oDefaultHandlers, sParameter)) {
369
+ return this.#oDefaultHandlers[sParameter](oCurrentApplication, oApplicationContainer);
370
+ }
371
+ Log.error(`value for parameter '${sParameter}' is not set.`);
372
+ return;
373
+ }
374
+
375
+ // first we use the parameters defined by app
376
+ if (Object.hasOwn(this.#oCustomAppParameters, sParameter)) {
377
+ /**
378
+ * Automated migration to customProperties will be removed in future.
379
+ * @deprecated since 1.120.0
380
+ */
381
+ // eslint-disable-next-line no-constant-condition
382
+ if (true) {
383
+ const oCustomValue = this.#oCustomAppParameters[sParameter];
384
+ if (oCustomValue.migrated) {
385
+ return oCustomValue.value;
386
+ }
387
+ }
388
+
389
+ return this.#oCustomAppParameters[sParameter];
390
+ }
391
+ // second we use fallback from system context for custom properties
392
+ if (sParameter.includes(".")) {
393
+ return this.#getSystemContextProperty(sParameter, oCurrentApplication, oApplicationContainer);
394
+ }
395
+
396
+ Log.error(`'${sParameter}' is not a valid app info parameter`);
397
+ });
398
+
399
+ return Promise.allSettled(aPromises).then((aValues) => {
400
+ for (let i = 0; i < aValues.length; i++) {
401
+ if (aValues[i].status === "fulfilled") {
402
+ aValues[i] = aValues[i].value;
403
+ } else {
404
+ aValues[i] = undefined;
405
+ }
406
+ }
407
+
408
+ return _zipObject(aParameters, aValues);
409
+ });
410
+ }
411
+
412
+ setCustomAttributes (oAppInfo) {
413
+ if (oAppInfo === undefined || Object.keys(oAppInfo).length === 0) {
414
+ this.flush();
415
+ return;
353
416
  }
354
- if (!oHandlersIncludingCustom[sParameter]) {
355
- Log.error(sParameter + " is not a valid app info parameter");
356
- return undefined;
417
+ let oAppInfoClone = deepClone(oAppInfo);
418
+
419
+ /**
420
+ * Old interface
421
+ * @deprecated since 1.120.0
422
+ */
423
+ if (oAppInfoClone.info && Object.keys(oAppInfoClone).length === 1) {
424
+ Log.error("The old interface for setting custom attributes is deprecated and will be removed in future.");
425
+ oAppInfoClone = oAppInfoClone.info;
357
426
  }
358
- return oHandlersIncludingCustom[sParameter](oCurrentApplication, oApplicationContainer);
359
- });
360
-
361
- return Promise.allSettled(aPromises).then(function (aValues) {
362
- for (var i = 0; i < aValues.length; i++) {
363
- if (aValues[i].status === "fulfilled") {
364
- aValues[i] = aValues[i].value;
365
- } else {
366
- aValues[i] = undefined;
427
+
428
+ /**
429
+ * Automated migration to customProperties will be removed in future.
430
+ * @deprecated since 1.120.0
431
+ */
432
+ const oFallbackForCustomProperties = {};
433
+ for (const sParameter in oAppInfoClone) {
434
+ if (sParameter === "customProperties") {
435
+ // custom properties are handled below
436
+ continue;
437
+ }
438
+
439
+ if (aRestrictedParameters.includes(sParameter)) {
440
+ Log.error(`Attribute '${sParameter}' is restricted and will be ignored.`);
441
+ continue;
442
+ }
443
+
444
+ if (!aSupportedParameters.includes(sParameter)) {
445
+
446
+ /**
447
+ * Automated migration to customProperties will be removed in future.
448
+ * @deprecated since 1.120.0
449
+ */
450
+ // eslint-disable-next-line no-constant-condition
451
+ if (true) {
452
+ Log.error(`Attribute '${sParameter}' is not supported and will be moved to customProperties instead. This migration will be removed in future.`);
453
+ oFallbackForCustomProperties[sParameter] = {
454
+ value: oAppInfoClone[sParameter],
455
+ showInAbout: false,
456
+ migrated: true
457
+ };
458
+ continue;
459
+ }
460
+
461
+ Log.error(`Attribute '${sParameter}' is not supported and will be ignored. It should be moved to the customProperties instead.`);
462
+ continue;
463
+ }
464
+
465
+ const sValue = oAppInfoClone[sParameter];
466
+
467
+ if (typeof sValue !== "string") {
468
+ Log.error(`Attribute value for '${sParameter}' is not a string and will be ignored.`);
469
+ continue;
367
470
  }
471
+
472
+ this.#oAppParameters[sParameter] = sValue;
368
473
  }
369
474
 
370
- return _zipObject(aParameters, aValues);
371
- });
372
- }
475
+ const oCustomProperties = {
476
+ /**
477
+ * Automated migration to customProperties will be removed in future.
478
+ * @deprecated since 1.120.0
479
+ */
480
+ ...oFallbackForCustomProperties,
481
+ ...oAppInfoClone.customProperties
482
+ };
373
483
 
374
- //object of all app info
375
- var oCustomAttribute = {};
484
+ for (const sCustomProperty in oCustomProperties) {
485
+ let oValue = oCustomProperties[sCustomProperty];
486
+
487
+ /**
488
+ * Automated migration to proper format will be removed in future.
489
+ * @deprecated since 1.120.0
490
+ */
491
+ if (!isPlainObject(oValue)) {
492
+ Log.error(`Custom attribute '${sCustomProperty}' does not have the correct format. This property will be ignored in future.`);
493
+ oValue = {
494
+ value: oValue,
495
+ showInAbout: false,
496
+ migrated: true
497
+ };
498
+ }
376
499
 
377
- function getCustomAttributes () {
378
- return oCustomAttribute;
379
- }
500
+ if (!this.#validateCustomAttribute(sCustomProperty, oValue)) {
501
+ continue;
502
+ }
380
503
 
381
- function setCustomAttributes (oAppInfo) {
382
- if (oAppInfo === undefined || Object.keys(oAppInfo).length === 0) {
383
- oCustomAttribute = {};
384
- return;
504
+ this.#oCustomAppParameters[sCustomProperty] = oValue;
505
+ }
385
506
  }
386
- for (var sParameter in oAppInfo.info) {
387
- if (sParameter !== "customProperties") {
388
- oCustomAttribute[sParameter] = {
389
- value: oAppInfo.info[sParameter]};
507
+
508
+ #validateCustomAttribute (sParameterName, oValue) {
509
+ if (!isPlainObject(oValue)) {
510
+ Log.error(`Custom attribute '${sParameterName}' does not have the correct format and will be ignored.`);
511
+ return false;
512
+ }
513
+
514
+ if (oValue.showInAbout === false) {
515
+ // no further validation for attributes that are not shown in the about dialog
516
+ return true;
517
+ }
518
+
519
+ // if not provided, set default value for showInAbout
520
+ oValue.showInAbout = true;
521
+
522
+ if (!oValue.label) {
523
+ Log.error(`Custom attribute '${sParameterName}' has no label and will be ignored.`);
524
+ return false;
390
525
  }
526
+
527
+ return true;
391
528
  }
392
- for (var sCustomProperties in oAppInfo.info.customProperties) {
393
- oCustomAttribute[sCustomProperties] = oAppInfo.info.customProperties[sCustomProperties];
529
+
530
+ /**
531
+ * Stores the custom app info parameters into the given storage entry.
532
+ * @param {object} oStorageEntry The storage entry.
533
+ *
534
+ * @since 1.130.0
535
+ * @private
536
+ */
537
+ store (oStorageEntry = {}) {
538
+ oStorageEntry.appInfoParameters = {
539
+ appParameters: deepClone(this.#oAppParameters),
540
+ customAppParameters: deepClone(this.#oCustomAppParameters)
541
+ };
394
542
  }
395
- }
396
543
 
397
- function isAttributeExist (sParameterName) {
398
- return oCustomAttribute.hasOwnProperty(sParameterName);
399
- }
544
+ /**
545
+ * Restores the custom app info parameters from the given storage entry.
546
+ * @param {object} oStorageEntry The storage entry.
547
+ *
548
+ * @since 1.130.0
549
+ * @private
550
+ */
551
+ restore (oStorageEntry = {}) {
552
+ const { appParameters, customAppParameters } = oStorageEntry.appInfoParameters || {};
400
553
 
401
- //function that check if the attribute exist in oCustomAttribute
402
- function getCustomValue (sParameterName) {
403
- if (isAttributeExist(sParameterName)) {
404
- return oCustomAttribute[sParameterName].value;
554
+ this.#oAppParameters = appParameters ? deepClone(appParameters) : {};
555
+ this.#oCustomAppParameters = customAppParameters ? deepClone(customAppParameters) : {};
405
556
  }
406
- return undefined;
407
- }
408
557
 
409
- /**
410
- * Interface
411
- */
412
- return {
413
558
  /**
414
- * A function to collect the values of the given parameters
415
- * @param {string[]} aParameters Array of requested parameters
416
- * @param {object} oCurrentApplication The current application
417
- * @param {object} oApplicationContainer The application container
418
- * @returns {Promise} Promise that resolves to an object
419
- * keeping the application info parameters with values
559
+ * Flushes the custom app info parameters.
560
+ *
561
+ * @since 1.130.0
562
+ * @private
420
563
  */
421
- getInfo: function (aParameters, oCurrentApplication, oApplicationContainer) {
422
- if (!oCurrentApplication) {
423
- return Promise.reject("Parameter application missing");
424
- }
425
- return _getInfo(
426
- ["appFrameworkId"],
427
- oCurrentApplication, oApplicationContainer
428
- ).then(function () {
429
- return _getInfo(aParameters, oCurrentApplication, oApplicationContainer);
430
- });
431
- },
432
- getCustomValue: getCustomValue,
433
- isAttributeExist: isAttributeExist,
434
- setCustomAttributes: setCustomAttributes,
435
- getAllAppInfo: getAllAppInfo
436
- };
437
-
564
+ flush () {
565
+ this.#oAppParameters = {};
566
+ this.#oCustomAppParameters = {};
567
+ }
568
+ }
438
569
 
570
+ return new AppInfoParameters();
439
571
 
440
572
  }, false /* bExport= */);