@sapui5/sap.ushell 1.133.0 → 1.134.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.
- package/package.json +1 -1
- package/src/main/js/sap/ushell/.library +3 -2
- package/src/main/js/sap/ushell/AppInfoParameters.js +18 -4
- package/src/main/js/sap/ushell/ApplicationType/UrlPostProcessing.js +217 -0
- package/src/main/js/sap/ushell/ApplicationType/guiResolution.js +1 -1
- package/src/main/js/sap/ushell/ApplicationType/systemAlias.js +1 -1
- package/src/main/js/sap/ushell/ApplicationType/ui5Resolution.js +1 -1
- package/src/main/js/sap/ushell/ApplicationType/urlResolution.js +1 -1
- package/src/main/js/sap/ushell/ApplicationType/urlTemplateResolution.js +14 -7
- package/src/main/js/sap/ushell/ApplicationType/utils.js +1 -1
- package/src/main/js/sap/ushell/ApplicationType/wcfResolution.js +1 -1
- package/src/main/js/sap/ushell/ApplicationType/wdaResolution.js +1 -1
- package/src/main/js/sap/ushell/ApplicationType.js +1 -1
- package/src/main/js/sap/ushell/CanvasShapesManager.js +1 -1
- package/src/main/js/sap/ushell/Config/utils.js +1 -1
- package/src/main/js/sap/ushell/Config.js +1 -1
- package/src/main/js/sap/ushell/Container.js +1 -1
- package/src/main/js/sap/ushell/EventHub.js +1 -1
- package/src/main/js/sap/ushell/Fiori20Adapter.js +2 -2
- package/src/main/js/sap/ushell/Fiori20AdapterTest.js +2 -2
- package/src/main/js/sap/ushell/Layout.js +1 -1
- package/src/main/js/sap/ushell/NWBCInterface.js +11 -5
- package/src/main/js/sap/ushell/SessionHandler.js +139 -97
- package/src/main/js/sap/ushell/System.js +1 -1
- package/src/main/js/sap/ushell/TechnicalParameters.js +2 -2
- package/src/main/js/sap/ushell/UI5ComponentType.js +1 -1
- package/src/main/js/sap/ushell/UIActions.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/DefinitionParameterSetBuilder.js +2 -2
- package/src/main/js/sap/ushell/URLTemplateProcessor/DependencyGraph.js +2 -2
- package/src/main/js/sap/ushell/URLTemplateProcessor/Functions.js +2 -2
- package/src/main/js/sap/ushell/URLTemplateProcessor/Resolvers.js +2 -2
- package/src/main/js/sap/ushell/URLTemplateProcessor/TemplateParameterParser.js +2 -2
- package/src/main/js/sap/ushell/URLTemplateProcessor/utils.js +2 -2
- package/src/main/js/sap/ushell/URLTemplateProcessor.js +2 -2
- package/src/main/js/sap/ushell/Ui5NativeServiceFactory.js +2 -2
- package/src/main/js/sap/ushell/Ui5ServiceFactory.js +2 -2
- package/src/main/js/sap/ushell/User.js +43 -11
- package/src/main/js/sap/ushell/UserActivityLog.js +1 -1
- package/src/main/js/sap/ushell/adapters/AppVariantPersonalizationAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/ClientSideTargetResolutionAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/CommonDataModelAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/ConfigurationDefaultsAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/ContainerAdapter.js +22 -6
- package/src/main/js/sap/ushell/adapters/cdm/LaunchPageAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/MenuAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/PagesCommonDataModelAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/PersonalizationAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/PersonalizationV2Adapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/Settings/UserLanguageAndRegion/UserLanguageAndRegion.controller.js +251 -0
- package/src/main/js/sap/ushell/adapters/cdm/Settings/UserLanguageAndRegion/UserLanguageAndRegion.view.xml +69 -0
- package/src/main/js/sap/ushell/adapters/cdm/Settings/UserLanguageAndRegion/UserLanguageAndRegionEntry.js +67 -0
- package/src/main/js/sap/ushell/adapters/cdm/Ui5ComponentLoaderAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/modifyHome.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readCatalogs.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readHome.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/uri.transform.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/_Personalization/internals.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/util/AppForInbound.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/util/cdmSiteUtils.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/v3/AdapterBase.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/v3/FlpLaunchPageAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/v3/LaunchPageAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/v3/StaticGroupsAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readApplications.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readCatalogs.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readHome.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readPages.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readUtils.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readVisualizations.js +2 -2
- package/src/main/js/sap/ushell/adapters/cdm/v3/utilsCdm.js +1 -1
- package/src/main/js/sap/ushell/adapters/cep/MenuAdapter.js +6 -1
- package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionInternalAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cep/SearchCEPAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/cflp/UserDefaultParameterPersistenceAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/AdapterContainer.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/AppStateAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/ClientSideTargetResolutionAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/ContainerAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/FlpLaunchPageAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/LaunchPageAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/MenuAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionInternalAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/PageBuildingAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/PagePersistenceAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/PersonalizationAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/PersonalizationV2Adapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/SearchAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/SearchCEPAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/SupportTicketAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/Ui5ComponentLoaderAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/UserDefaultParameterPersistenceAdapter.js +2 -2
- package/src/main/js/sap/ushell/adapters/local/UserInfoAdapter.js +2 -2
- package/src/main/js/sap/ushell/api/BootstrapObserver.js +1 -1
- package/src/main/js/sap/ushell/api/Copilot.js +1 -1
- package/src/main/js/sap/ushell/api/Inbox.js +1 -1
- package/src/main/js/sap/ushell/api/NewExperience/CustomOverflowListItem.js +1 -1
- package/src/main/js/sap/ushell/api/NewExperience.js +1 -1
- package/src/main/js/sap/ushell/api/RTA.js +1 -1
- package/src/main/js/sap/ushell/api/S4MyHome.js +1 -1
- package/src/main/js/sap/ushell/api/SAPBusinessClient.js +129 -0
- package/src/main/js/sap/ushell/api/common/ComponentInstantiation.js +1 -1
- package/src/main/js/sap/ushell/api/workpage/Designtime.js +1 -1
- package/src/main/js/sap/ushell/api/workpage/Runtime.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/neo/AppInfoService.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/neo/AppRuntimeNeo.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/neo/ProxyAppUtils.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/AppCommunicationMgr.js +24 -5
- package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntime.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntimeContext.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntimeService.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/BusyIndicator.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/SessionHandlerAgent.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/libsPreload.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/performance/FesrEnhancer.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/AppLifeCycleUtils.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/BaseRTAPluginStatus.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/CheckConditions.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/Renderer.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/baseRta/Trigger.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/rtaAgent/Component.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/rtaShell/Component.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/plugins/scriptAgent/Component.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/AccessKeysAgent.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/Renderer.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/RendererExtensions.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppConfiguration.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycle.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycleAgent.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppState.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Bookmark.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/BookmarkV2.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/CommonDataModel.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Container.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/CrossApplicationNavigation.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension/Item.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/FrameBoundExtension.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/LaunchPage.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/MessageBroker.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolution.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolutionInternal.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Navigation.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ReferenceResolver.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigation.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigationInternal.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellUIService.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/UserDefaultParameters.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/UserInfo.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/ContainerAdapter.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/EmptyAdapter.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/Ui5ComponentLoaderAdapter.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/ui/UIProxy.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/EventProcessor.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/FLPLoader.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/FLPScheduler.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/LoadingConfiguration.json +4 -0
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/StepConfiguration.json +33 -1
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/logger.js +2 -2
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/state.js +2 -2
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/cdm/cdm-def-dev.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/cdm/cdm-def-loader.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/cdm/cdm-def.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/cdm/cdm.boot.task.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/cdm/cdm.constants.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/cdm.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.boot.path.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.boot.script.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.boot.task.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5.extractLibs.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5datetimeformat.js +2 -2
- package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5language.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5theme.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.configure.ushell.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.constants.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.create.configcontract.core.js +58 -25
- package/src/main/js/sap/ushell/bootstrap/common/common.debug.mode.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.load.bootstrapExtension.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.load.core-min.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.load.launchpad.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.load.model.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.load.script.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.override.registermodulepath.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.read.metatags.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.read.ui5theme.from.config.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.read.ushell.config.from.url.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.util.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/sandbox2/sandbox.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/sandbox2/sandboxBootTask.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/sandbox2.js +2 -2
- package/src/main/js/sap/ushell/bootstrap/ui5loader-config.js +1 -1
- package/src/main/js/sap/ushell/components/CatalogsManager.js +1 -1
- package/src/main/js/sap/ushell/components/ComponentKeysHandler.js +1 -1
- package/src/main/js/sap/ushell/components/DestroyHelper.js +1 -1
- package/src/main/js/sap/ushell/components/GroupsHelper.js +1 -1
- package/src/main/js/sap/ushell/components/HomepageManager.js +1 -1
- package/src/main/js/sap/ushell/components/MessagingHelper.js +1 -1
- package/src/main/js/sap/ushell/components/SharedComponentUtils.js +1 -1
- package/src/main/js/sap/ushell/components/_HomepageManager/DashboardLoadingManager.js +1 -1
- package/src/main/js/sap/ushell/components/_HomepageManager/PagingManager.js +1 -1
- package/src/main/js/sap/ushell/components/_HomepageManager/PersistentPageOperationAdapter.js +1 -1
- package/src/main/js/sap/ushell/components/_HomepageManager/TransientPageOperationAdapter.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/AppFinder.controller.js +11 -3
- package/src/main/js/sap/ushell/components/appfinder/AppFinderView.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/Catalog.controller.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/CatalogView.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/Component.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/EasyAccess.controller.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/EasyAccessView.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/GroupListPopover.controller.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/GroupListPopoverView.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/HierarchyApps.controller.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/HierarchyAppsView.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/HierarchyFolders.controller.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/HierarchyFoldersView.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/VisualizationOrganizerHelper.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegration/AppLifeCycle.js +707 -916
- package/src/main/js/sap/ushell/components/applicationIntegration/ApplicationContainer.js +272 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/ApplicationContainerCache.js +229 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/ApplicationContainerRenderer.js +35 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/IframeApplicationContainer.js +372 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/IframeApplicationContainerRenderer.js +296 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/KeepAliveApps.js +68 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager/AppruntimeHandler.js +120 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager/ExtensionItems.js +143 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager/LifecycleHandler.js +618 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager/MessageBrokerHandler.js +64 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager/NWBCHandler.js +83 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager/ServiceHandler.js +1503 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/PostMessageManager.js +638 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/PostMessagePluginInterface.js +152 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/Storage.js +21 -50
- package/src/main/js/sap/ushell/components/applicationIntegration/UI5ApplicationContainer.js +168 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/UI5ApplicationContainerRenderer.js +41 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/application/Application.js +30 -679
- package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxHandler.js +13 -390
- package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxesCache.js +8 -249
- package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageAPI.js +9 -2365
- package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageAPIInterface.js +10 -127
- package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageUtils.js +10 -177
- package/src/main/js/sap/ushell/components/applicationIntegration/application/WebGUIStatefulHandler.js +10 -74
- package/src/main/js/sap/ushell/components/applicationIntegration/configuration/AppMeta.js +21 -12
- package/src/main/js/sap/ushell/components/applicationIntegration/contracts/EmbeddedUI5Handler.js +176 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/contracts/StatefulContainerV1Handler.js +91 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/contracts/StatefulContainerV2Handler.js +175 -0
- package/src/main/js/sap/ushell/components/applicationIntegration/relatedServices/RelatedServices.js +13 -74
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/AppLifeCycle.js +1926 -0
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/Storage.js +62 -0
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/Application.js +709 -0
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/BlueBoxHandler.js +406 -0
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/BlueBoxesCache.js +263 -0
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/PostMessageAPI.js +2382 -0
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/PostMessageAPIInterface.js +143 -0
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/PostMessageUtils.js +192 -0
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/WebGUIStatefulHandler.js +90 -0
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/configuration/AppMeta.js +193 -0
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/relatedServices/RelatedServices.js +91 -0
- package/src/main/js/sap/ushell/components/cards/Card.controller.js +1 -1
- package/src/main/js/sap/ushell/components/cards/Configuration.controller.js +1 -1
- package/src/main/js/sap/ushell/components/cards/ManifestPropertyHelper.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/Component.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/Main.controller.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/cards/searchresultwidget/Component.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/cards/searchresultwidget/Config.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/cards/searchresultwidget/Extension.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/AdvancedFormatters.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/Edition.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/EditionAdvanced.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/EditionStandard.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/appendStyleVars.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/Category.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/Highlighter.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/Paginator.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/All.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/Application.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/Event.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/People.js +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/categories/Workpage.js +1 -1
- package/src/main/js/sap/ushell/components/container/ApplicationContainer.js +38 -22
- package/src/main/js/sap/ushell/components/container/IframePOSTUtils.js +5 -1
- package/src/main/js/sap/ushell/components/contentFinder/CatalogService.js +2 -2
- package/src/main/js/sap/ushell/components/contentFinder/Component.js +14 -5
- package/src/main/js/sap/ushell/components/contentFinder/controller/AppSearch.controller.js +2 -2
- package/src/main/js/sap/ushell/components/contentFinder/controller/ContentFinderDialog.controller.js +2 -2
- package/src/main/js/sap/ushell/components/contentFinder/dialog/Component.js +2 -2
- package/src/main/js/sap/ushell/components/contentFinder/dialog/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/model/GraphQLListBinding.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/model/GraphQLModel.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/model/formatter.js +32 -8
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources.properties +6 -2
- package/src/main/js/sap/ushell/components/contentFinder/view/VisualizationsNoDataIllustratedMessage.fragment.xml +6 -3
- package/src/main/js/sap/ushell/components/contentFinderStandalone/Component.js +2 -2
- package/src/main/js/sap/ushell/components/contentFinderStandalone/controller/ContentFinderStandalone.controller.js +54 -14
- package/src/main/js/sap/ushell/components/contentFinderStandalone/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources.properties +6 -0
- package/src/main/js/sap/ushell/components/factsheet/Component.js +2 -2
- package/src/main/js/sap/ushell/components/factsheet/annotation/Mapping.js +1 -1
- package/src/main/js/sap/ushell/components/factsheet/controls/PictureTile.js +1 -1
- package/src/main/js/sap/ushell/components/factsheet/controls/PictureTileRenderer.js +1 -1
- package/src/main/js/sap/ushell/components/factsheet/controls/PictureViewer.js +1 -1
- package/src/main/js/sap/ushell/components/factsheet/controls/PictureViewerItem.js +1 -1
- package/src/main/js/sap/ushell/components/factsheet/controls/PictureViewerRenderer.js +1 -1
- package/src/main/js/sap/ushell/components/factsheet/factory/ThingInspector.js +1 -1
- package/src/main/js/sap/ushell/components/factsheet/tools/ODataUrlTemplating.js +1 -1
- package/src/main/js/sap/ushell/components/factsheet/views/ThingViewer.controller.js +1 -1
- package/src/main/js/sap/ushell/components/factsheet/views/ThingViewer.view.js +1 -1
- package/src/main/js/sap/ushell/components/homeApp/error/Component.js +1 -1
- package/src/main/js/sap/ushell/components/homeApp/error/HomeAppError.controller.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/ActionMode.js +2 -2
- package/src/main/js/sap/ushell/components/homepage/Component.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/DashboardContent.controller.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/DashboardContent.view.js +2 -2
- package/src/main/js/sap/ushell/components/homepage/DashboardGroupsBox.js +2 -2
- package/src/main/js/sap/ushell/components/homepage/DashboardUIActions.js +2 -2
- package/src/main/js/sap/ushell/components/homepage/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/pages/ActionMode.js +2 -2
- package/src/main/js/sap/ushell/components/pages/Component.js +2 -2
- package/src/main/js/sap/ushell/components/pages/MyHomeImport.js +2 -2
- package/src/main/js/sap/ushell/components/pages/StateManager.js +1 -1
- package/src/main/js/sap/ushell/components/pages/controller/ImportDialog.controller.js +1 -1
- package/src/main/js/sap/ushell/components/pages/controller/MyHome.controller.js +1 -1
- package/src/main/js/sap/ushell/components/pages/controller/PageRuntime.controller.js +2 -2
- package/src/main/js/sap/ushell/components/pages/controller/PagesAndSpaceId.js +1 -1
- package/src/main/js/sap/ushell/components/pages/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/runtimeSwitcher/Component.js +1 -1
- package/src/main/js/sap/ushell/components/runtimeSwitcher/controller/RuntimeSwitcher.controller.js +2 -2
- package/src/main/js/sap/ushell/components/runtimeSwitcher/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/FloatingContainer/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/FloatingContainer/controls/FloatingContainer.js +1 -1
- package/src/main/js/sap/ushell/components/shell/FloatingContainer/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/MenuBar/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/MenuBar/controller/MenuBar.controller.js +1 -2
- package/src/main/js/sap/ushell/components/shell/MenuBar/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/Component.js +39 -4
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenu.controller.js +30 -63
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenuButton.controller.js +118 -0
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/view/NavigationBarMenu.view.xml +64 -17
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/view/NavigationBarMenuButton.view.xml +24 -0
- package/src/main/js/sap/ushell/components/shell/Notifications/Component.js +2 -2
- package/src/main/js/sap/ushell/components/shell/Notifications/Notifications.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/PostLoadingHeaderEnhancement/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/ProductSwitch/Component.js +2 -2
- package/src/main/js/sap/ushell/components/shell/Search/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Search/ESearch.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Search/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/Component.js +2 -2
- package/src/main/js/sap/ushell/components/shell/SearchCEP/ProvidersExecuter.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchCEP.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/FrequentActivityProvider.js +2 -2
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/RecentSearchProvider.js +2 -2
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchProvider.js +2 -2
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchServiceProvider.js +2 -2
- package/src/main/js/sap/ushell/components/shell/Settings/Component.js +19 -16
- package/src/main/js/sap/ushell/components/shell/Settings/ContentWrapper.fragment.xml +3 -2
- package/src/main/js/sap/ushell/components/shell/Settings/ErrorMessageHelper.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/UserSettings.controller.js +44 -17
- package/src/main/js/sap/ushell/components/shell/Settings/appearance/Appearance.controller.js +29 -24
- package/src/main/js/sap/ushell/components/shell/Settings/appearance/AppearanceEntry.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/homepage/HomepageEntry.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/notifications/NotificationsEntry.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/notifications/NotificationsSetting.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/search/Search.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/search/SearchEntry.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/spaces/SpacesEntry.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/spaces/SpacesSetting.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/userAccount/UserAccountEntry.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/userAccount/UserAccountSelector.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/userActivities/UserActivitiesEntry.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/userActivities/UserActivitiesSetting.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/UserDefaultsEntry.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/UserDefaultsForm.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/controller/ExtendedValueDialog.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/userDefaults/controller/UserDefaultsSetting.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/userLanguageRegion/LanguageRegionSelector.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/userLanguageRegion/UserLanguageRegionEntry.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/Component.js +95 -215
- package/src/main/js/sap/ushell/components/shell/SideNavigation/controller/SideNavigation.controller.js +77 -178
- package/src/main/js/sap/ushell/components/shell/SideNavigation/css/style.css +3 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/fragment/Popover.fragment.xml +1 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/manifest.json +8 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/AllSpaces.js +52 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/AppFinder.js +48 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/Favorites.js +222 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/GenericFixedNavigationListProvider.js +142 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/GenericNavigationListProvider.js +186 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/MyHome.js +73 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/NavigationHelper.js +79 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/RecentActivity.js +141 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/Spaces.js +288 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/SpacesNavigationListProvider.js +79 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources.properties +15 -6
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ar.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_bg.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ca.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_cnr.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_cs.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_cy.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_da.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_de.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_el.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_en.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_en_GB.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_en_US_saprigi.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_es.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_es_MX.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_et.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_fi.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_fr.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_fr_CA.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_hi.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_hr.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_hu.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_id.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_it.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_iw.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ja.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_kk.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ko.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_lt.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_lv.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_mk.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ms.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_nl.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_no.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_pl.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_pt.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_pt_PT.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ro.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ru.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sh.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sk.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sl.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sr.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sv.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_th.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_tr.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_uk.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_vi.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_zh_CN.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_zh_TW.properties +10 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/view/SideNavigation.view.xml +37 -28
- package/src/main/js/sap/ushell/components/shell/UserActionsMenu/Component.js +2 -2
- package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenu.controller.js +142 -15
- package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenu.fragment.xml +33 -0
- package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenuPopover.fragment.xml +25 -8
- package/src/main/js/sap/ushell/components/shell/UserImage/Component.js +2 -2
- package/src/main/js/sap/ushell/components/tiles/action/ActionTile.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/action/Configuration.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/applauncher/Component.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/applauncher/Configuration.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/applauncher/StaticTile.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/applauncher/StaticTile.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/Component.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/Configuration.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/DynamicTile.controller.js +1 -3
- package/src/main/js/sap/ushell/components/tiles/applauncherdynamic/DynamicTile.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/cdm/applauncher/Component.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/cdm/applauncher/StaticTile.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/cdm/applauncher/StaticTile.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/cdm/applauncherdynamic/Component.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/cdm/applauncherdynamic/DynamicTile.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/cdm/applauncherdynamic/DynamicTile.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/generic.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorArea/AreaChartTile.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorArea/AreaChartTile.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorDual/DualTile.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorDual/DualTile.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorDualComparison/DualComparison.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorDualComparison/DualComparison.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorDualContribution/DualContribution.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorDualContribution/DualContribution.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorDualDeviation/DualDeviation.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorDualDeviation/DualDeviation.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorDualTrend/DualTrend.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorDualTrend/DualTrend.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorHarveyBall/HarveyBallTile.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorHarveyBall/HarveyBallTile.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorTileUtils/cache.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorTileUtils/indicatorTileHelper.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorTileUtils/oData4Analytics.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorTileUtils/smartBusinessUtil.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorcomparison/ComparisonTile.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorcomparison/ComparisonTile.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorcontribution/ContributionTile.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorcontribution/ContributionTile.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatordeviation/DeviationTile.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatordeviation/DeviationTile.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatornumeric/NumericTile.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatornumeric/NumericTile.view.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/sbtilecontent.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/utils.js +1 -1
- package/src/main/js/sap/ushell/components/visualizationOrganizer/Component.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/Component.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.accessibility.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.controller.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.layout.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPage.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageButton.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageCell.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumn.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnRenderer.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnResizer.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRenderer.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRow.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRowRenderer.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/workPageRuntime/Component.js +2 -2
- package/src/main/js/sap/ushell/components/workPageRuntime/controller/WorkPageRuntime.controller.js +2 -2
- package/src/main/js/sap/ushell/components/workPageRuntime/manifest.json +1 -1
- package/src/main/js/sap/ushell/designtime/ApplicationContainer.designtime.js +2 -2
- package/src/main/js/sap/ushell/functionBindPrototype.js +1 -1
- package/src/main/js/sap/ushell/iconfonts.js +1 -1
- package/src/main/js/sap/ushell/library.js +68 -2
- package/src/main/js/sap/ushell/navigationMode.js +2 -2
- package/src/main/js/sap/ushell/override.js +1 -1
- package/src/main/js/sap/ushell/performance/FesrEnhancer.js +1 -1
- package/src/main/js/sap/ushell/performance/ShellAnalytics.js +2 -2
- package/src/main/js/sap/ushell/performance/StatisticalRecord.js +2 -2
- package/src/main/js/sap/ushell/plugins/BaseRTAPlugin.js +1 -1
- package/src/main/js/sap/ushell/plugins/appwarmup/Component.js +2 -2
- package/src/main/js/sap/ushell/plugins/appwarmup/ShellUIService.js +1 -1
- package/src/main/js/sap/ushell/plugins/ghostapp/Component.js +1 -1
- package/src/main/js/sap/ushell/plugins/ghostapp/FakeModel.js +1 -1
- package/src/main/js/sap/ushell/plugins/rta/Component.js +1 -1
- package/src/main/js/sap/ushell/plugins/rta-personalize/Component.js +1 -1
- package/src/main/js/sap/ushell/renderer/AccessKeysHandler.js +1 -1
- package/src/main/js/sap/ushell/renderer/History.js +1 -1
- package/src/main/js/sap/ushell/renderer/LogonFrameProvider.js +1 -1
- package/src/main/js/sap/ushell/renderer/Renderer.js +3 -3
- package/src/main/js/sap/ushell/renderer/Shell.controller.js +327 -140
- package/src/main/js/sap/ushell/renderer/Shell.view.js +1 -1
- package/src/main/js/sap/ushell/renderer/ShellLayout.js +10 -2
- package/src/main/js/sap/ushell/renderer/allMyApps/AllMyApps.controller.js +1 -1
- package/src/main/js/sap/ushell/renderer/allMyApps/AllMyAppsManager.js +1 -1
- package/src/main/js/sap/ushell/renderer/resources/resources.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_ar.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_bg.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_ca.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_cnr.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_cs.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_cy.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_da.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_de.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_el.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_en.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_en_GB.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_en_US_saprigi.properties +5 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_es.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_es_MX.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_et.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_fi.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_fr.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_fr_CA.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_hi.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_hr.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_hu.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_id.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_it.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_iw.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_ja.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_kk.properties +51 -45
- package/src/main/js/sap/ushell/renderer/resources/resources_ko.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_lt.properties +12 -6
- package/src/main/js/sap/ushell/renderer/resources/resources_lv.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_mk.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_ms.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_nl.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_no.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_pl.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_pt.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_pt_PT.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_ro.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_ru.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_sh.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_sk.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_sl.properties +11 -5
- package/src/main/js/sap/ushell/renderer/resources/resources_sr.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_sv.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_th.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_tr.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_uk.properties +10 -4
- package/src/main/js/sap/ushell/renderer/resources/resources_vi.properties +11 -5
- package/src/main/js/sap/ushell/renderer/resources/resources_zh_CN.properties +9 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_zh_TW.properties +9 -3
- package/src/main/js/sap/ushell/renderer/search/searchComponent/Component.js +1 -1
- package/src/main/js/sap/ushell/renderer/search/searchComponent/controller/CEPSearchApp.controller.js +1 -1
- package/src/main/js/sap/ushell/renderer/search/searchComponent/controller/SearchApp.controller.js +1 -1
- package/src/main/js/sap/ushell/renderer/search/searchComponent/manifest.json +1 -1
- package/src/main/js/sap/ushell/renderer/search/searchComponent/view/CEPSearchApp.view.js +1 -1
- package/src/main/js/sap/ushell/renderer/search/searchComponent/view/SearchApp.view.js +1 -1
- package/src/main/js/sap/ushell/renderer/search/util.js +1 -1
- package/src/main/js/sap/ushell/renderer/shellHeader/ShellHeader.controller.js +13 -7
- package/src/main/js/sap/ushell/renderer/utils.js +1 -1
- package/src/main/js/sap/ushell/renderers/fiori2/History.js +1 -1
- package/src/main/js/sap/ushell/renderers/fiori2/LogonFrameProvider.js +1 -1
- package/src/main/js/sap/ushell/renderers/fiori2/Renderer.js +1 -1
- package/src/main/js/sap/ushell/renderers/fiori2/RendererExtensions.js +1 -1
- package/src/main/js/sap/ushell/renderers/fiori2/Shell.controller.js +1 -1
- package/src/main/js/sap/ushell/renderers/fiori2/Shell.view.js +1 -1
- package/src/main/js/sap/ushell/renderers/fiori2/allMyApps/AllMyAppsManager.js +1 -1
- package/src/main/js/sap/ushell/resources.js +1 -1
- package/src/main/js/sap/ushell/services/AllMyApps.js +1 -1
- package/src/main/js/sap/ushell/services/AppConfiguration.js +1 -1
- package/src/main/js/sap/ushell/services/AppLifeCycle.js +4 -3
- package/src/main/js/sap/ushell/services/AppState.js +2 -2
- package/src/main/js/sap/ushell/services/AppType.js +1 -1
- package/src/main/js/sap/ushell/services/Bookmark.js +2 -2
- package/src/main/js/sap/ushell/services/BookmarkV2.js +2 -2
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Formatter.js +2 -2
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundIndex.js +2 -2
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundProvider.js +2 -2
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/ParameterMapping.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/PrelaunchOperations.js +2 -2
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Search.js +2 -2
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/StagedLogger.js +2 -2
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/SystemContext.js +2 -2
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Utils.js +2 -2
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/VirtualInbounds.js +2 -2
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/XAppStateProcessing.js +2 -2
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution.js +2 -2
- package/src/main/js/sap/ushell/services/CommonDataModel/PersonalizationProcessor.js +1 -1
- package/src/main/js/sap/ushell/services/CommonDataModel/SiteConverter.js +2 -2
- package/src/main/js/sap/ushell/services/CommonDataModel/vizTypeDefaults/VizTypeDefaults.js +2 -2
- package/src/main/js/sap/ushell/services/CommonDataModel.js +2 -13
- package/src/main/js/sap/ushell/services/Configuration.js +2 -2
- package/src/main/js/sap/ushell/services/ConfigurationDefaults.js +2 -2
- package/src/main/js/sap/ushell/services/Container.js +1 -1
- package/src/main/js/sap/ushell/services/ContentExtensionAdapterFactory.js +2 -2
- package/src/main/js/sap/ushell/services/CrossApplicationNavigation.js +2 -2
- package/src/main/js/sap/ushell/services/DarkModeSupport.js +2 -2
- package/src/main/js/sap/ushell/services/EndUserFeedback.js +1 -1
- package/src/main/js/sap/ushell/services/Extension/Item.js +2 -2
- package/src/main/js/sap/ushell/services/Extension.js +2 -2
- package/src/main/js/sap/ushell/services/FlpLaunchPage.js +2 -2
- package/src/main/js/sap/ushell/services/FrameBoundExtension/FloatingContainer.js +2 -2
- package/src/main/js/sap/ushell/services/FrameBoundExtension/Footer.js +2 -2
- package/src/main/js/sap/ushell/services/FrameBoundExtension/Item.js +2 -2
- package/src/main/js/sap/ushell/services/FrameBoundExtension/SidePane.js +2 -2
- package/src/main/js/sap/ushell/services/FrameBoundExtension/ToolArea.js +2 -2
- package/src/main/js/sap/ushell/services/FrameBoundExtension/UserSettingsEntry.js +63 -0
- package/src/main/js/sap/ushell/services/FrameBoundExtension.js +14 -10
- package/src/main/js/sap/ushell/services/LaunchPage.js +2 -2
- package/src/main/js/sap/ushell/services/Menu.js +2 -2
- package/src/main/js/sap/ushell/services/Message.js +2 -2
- package/src/main/js/sap/ushell/services/MessageBroker/MessageBrokerEngine.js +269 -143
- package/src/main/js/sap/ushell/services/MessageBroker.js +2 -2
- package/src/main/js/sap/ushell/services/MessageInternal.js +2 -2
- package/src/main/js/sap/ushell/services/NavTargetResolution.js +1 -1
- package/src/main/js/sap/ushell/services/NavTargetResolutionInternal.js +1 -1
- package/src/main/js/sap/ushell/services/Navigation/compatibility.js +2 -2
- package/src/main/js/sap/ushell/services/Navigation/utils.js +2 -2
- package/src/main/js/sap/ushell/services/Navigation.js +6 -6
- package/src/main/js/sap/ushell/services/NavigationDataProvider.js +2 -2
- package/src/main/js/sap/ushell/services/Notifications.js +1 -1
- package/src/main/js/sap/ushell/services/NotificationsV2.js +1 -1
- package/src/main/js/sap/ushell/services/PageBuilding.js +2 -2
- package/src/main/js/sap/ushell/services/PagePersistence.js +2 -2
- package/src/main/js/sap/ushell/services/PageReferencing.js +2 -2
- package/src/main/js/sap/ushell/services/Pages.js +2 -2
- package/src/main/js/sap/ushell/services/Personalization.js +2 -2
- package/src/main/js/sap/ushell/services/PersonalizationV2/ContextContainer.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2/Personalizer.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2/TransientPersonalizer.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2/Variant.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2/VariantSet.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2/VariantSetAdapter.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2/WindowAdapter.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2/WindowAdapterContainer.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2/constants.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2/constants.private.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2/utils.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2.js +2 -2
- package/src/main/js/sap/ushell/services/PluginManager/Extensions.js +2 -2
- package/src/main/js/sap/ushell/services/PluginManager/HeaderExtensions.js +2 -2
- package/src/main/js/sap/ushell/services/PluginManager/MenuExtensions.js +2 -2
- package/src/main/js/sap/ushell/services/PluginManager/SimpleExpression.js +2 -2
- package/src/main/js/sap/ushell/services/PluginManager.js +22 -9
- package/src/main/js/sap/ushell/services/ReferenceResolver.js +2 -2
- package/src/main/js/sap/ushell/services/Search.js +2 -2
- package/src/main/js/sap/ushell/services/SearchCEP.js +2 -2
- package/src/main/js/sap/ushell/services/SearchableContent.js +2 -2
- package/src/main/js/sap/ushell/services/ShellNavigation.js +2 -2
- package/src/main/js/sap/ushell/services/ShellNavigationHashChanger.js +1 -1
- package/src/main/js/sap/ushell/services/ShellNavigationInternal.js +1 -1
- package/src/main/js/sap/ushell/services/SmartNavigation.js +2 -2
- package/src/main/js/sap/ushell/services/SpaceContent.js +2 -2
- package/src/main/js/sap/ushell/services/SupportTicket.js +1 -1
- package/src/main/js/sap/ushell/services/UITracer.js +2 -2
- package/src/main/js/sap/ushell/services/URLParsing.js +1 -1
- package/src/main/js/sap/ushell/services/URLShortening.js +2 -2
- package/src/main/js/sap/ushell/services/URLTemplate.js +2 -2
- package/src/main/js/sap/ushell/services/Ui5ComponentHandle.js +11 -1
- package/src/main/js/sap/ushell/services/Ui5ComponentLoader/utils.js +2 -2
- package/src/main/js/sap/ushell/services/Ui5ComponentLoader.js +2 -2
- package/src/main/js/sap/ushell/services/UsageAnalytics.js +1 -1
- package/src/main/js/sap/ushell/services/UserDefaultParameterPersistence.js +2 -2
- package/src/main/js/sap/ushell/services/UserDefaultParameters.js +2 -2
- package/src/main/js/sap/ushell/services/UserInfo.js +2 -2
- package/src/main/js/sap/ushell/services/UserRecents/RecentActivity.js +1 -1
- package/src/main/js/sap/ushell/services/UserRecents/RecentAppsUsage.js +1 -1
- package/src/main/js/sap/ushell/services/UserRecents/RecentsList.js +1 -1
- package/src/main/js/sap/ushell/services/UserRecents/UserRecentsBase.js +1 -1
- package/src/main/js/sap/ushell/services/UserRecents.js +2 -2
- package/src/main/js/sap/ushell/services/VisualizationDataProvider.js +2 -2
- package/src/main/js/sap/ushell/services/VisualizationInstantiation.js +2 -2
- package/src/main/js/sap/ushell/services/_AppState/AppStatePersistencyMethod.js +1 -1
- package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/ContentExtensionAdapterConfig.js +2 -2
- package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/FeaturedGroupConfig.js +2 -2
- package/src/main/js/sap/ushell/services/_CrossApplicationNavigation/utils.js +2 -2
- package/src/main/js/sap/ushell/services/_PageReferencing/PageReferencer.js +2 -2
- package/src/main/js/sap/ushell/services/_Personalization/ContextContainer.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainer.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainerVariant.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainerVariantSet.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/Personalizer.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/TransientPersonalizer.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/Variant.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/VariantSet.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/VariantSetAdapter.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/WindowAdapter.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/WindowAdapterContainer.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/constants.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/constants.private.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/utils.js +1 -1
- package/src/main/js/sap/ushell/services/appstate/AppState.js +1 -1
- package/src/main/js/sap/ushell/services/appstate/AppStatePersistencyMethod.js +1 -1
- package/src/main/js/sap/ushell/services/appstate/AppStatePersistencySettings.js +1 -1
- package/src/main/js/sap/ushell/services/appstate/LimitedBuffer.js +1 -1
- package/src/main/js/sap/ushell/services/appstate/Sequentializer.js +1 -1
- package/src/main/js/sap/ushell/services/appstate/SequentializingAdapter.js +1 -1
- package/src/main/js/sap/ushell/services/appstate/WindowAdapter.js +1 -1
- package/src/main/js/sap/ushell/services/personalization/VariantSetAdapter.js +1 -1
- package/src/main/js/sap/ushell/state/BackNavigation.js +91 -0
- package/src/main/js/sap/ushell/state/BaseState.js +1 -1
- package/src/main/js/sap/ushell/state/BindingHelper.js +18 -15
- package/src/main/js/sap/ushell/state/ControlManager.js +1 -1
- package/src/main/js/sap/ushell/state/CurrentState.js +1 -1
- package/src/main/js/sap/ushell/state/KeepAlive.js +1 -1
- package/src/main/js/sap/ushell/state/ShellModel.js +1 -1
- package/src/main/js/sap/ushell/state/StateManager/LaunchpadState.js +1 -1
- package/src/main/js/sap/ushell/state/StateManager/Operation.js +1 -1
- package/src/main/js/sap/ushell/state/StateManager/ShellMode.js +1 -1
- package/src/main/js/sap/ushell/state/StateManager.js +1 -1
- package/src/main/js/sap/ushell/state/StateRules.js +1 -1
- package/src/main/js/sap/ushell/state/StrategyFactory/DefaultStrategy.js +1 -1
- package/src/main/js/sap/ushell/state/StrategyFactory/FloatingActionsStrategy.js +1 -1
- package/src/main/js/sap/ushell/state/StrategyFactory/FloatingContainerStrategy.js +1 -1
- package/src/main/js/sap/ushell/state/StrategyFactory/HeadEndItemsStrategy.js +1 -1
- package/src/main/js/sap/ushell/state/StrategyFactory/HeadItemsStrategy.js +1 -1
- package/src/main/js/sap/ushell/state/StrategyFactory/SidePaneStrategy.js +1 -1
- package/src/main/js/sap/ushell/state/StrategyFactory/SubHeaderStrategy.js +1 -1
- package/src/main/js/sap/ushell/state/StrategyFactory/UserActionsStrategy.js +1 -1
- package/src/main/js/sap/ushell/state/StrategyFactory.js +1 -1
- package/src/main/js/sap/ushell/support/plugins/flpConfig/FlpConfigurationPlugin.js +2 -2
- package/src/main/js/sap/ushell/themes/base/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_belize/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_belize_base/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_belize_hcb/HistoryScreen.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_belize_hcb/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_belize_hcw/HistoryScreen.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_belize_hcw/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_belize_plus/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_bluecrystal/HistoryScreen.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_bluecrystal/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_bluecrystal_base/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_fiori_3/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_fiori_3_dark/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_fiori_3_hcb/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_fiori_3_hcw/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_hcb/HistoryScreen.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_hcb/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_horizon/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_horizon_dark/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_horizon_hcb/library.source.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_horizon_hcw/library.source.less +1 -1
- package/src/main/js/sap/ushell/thirdparty/Icons.js +191 -0
- package/src/main/js/sap/ushell/thirdparty/UserMenu.js +1809 -0
- package/src/main/js/sap/ushell/thirdparty/UserMenuAccount.js +104 -0
- package/src/main/js/sap/ushell/thirdparty/UserMenuItem.js +420 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons.js +2508 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons2.js +2508 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/ar.js +7139 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/ar_EG.js +7139 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/ar_SA.js +7138 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/bg.js +6031 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/ca.js +6133 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/cnr.js +6219 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/cs.js +6759 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/da.js +5977 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/de.js +6098 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/de_AT.js +6099 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/de_CH.js +6097 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/el.js +5882 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/el_CY.js +5882 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/en.js +6094 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/en_AU.js +6134 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/en_GB.js +6125 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/en_HK.js +6136 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/en_IE.js +6125 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/en_IN.js +6132 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/en_NZ.js +6125 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/en_PG.js +6126 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/en_SG.js +6132 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/en_ZA.js +6126 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/es.js +6153 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/es_AR.js +6156 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/es_BO.js +6155 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/es_CL.js +6048 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/es_CO.js +6048 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/es_MX.js +6157 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/es_PE.js +5939 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/es_UY.js +5941 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/es_VE.js +5940 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/et.js +6077 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/fa.js +6002 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/fi.js +6245 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/fr.js +6047 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/fr_BE.js +6047 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/fr_CA.js +6041 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/fr_CH.js +6065 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/fr_LU.js +6047 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/he.js +6593 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/hi.js +5911 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/hr.js +6246 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/hu.js +5995 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/id.js +5783 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/it.js +6036 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/it_CH.js +6036 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/ja.js +5942 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/kk.js +5989 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/ko.js +5823 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/lt.js +6628 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/lv.js +6164 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi2.js +656 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi3.js +542 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_in.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_in2.js +266 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_in3.js +143 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW.js +182 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW2.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW3.js +515 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/mk.js +6095 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/ms.js +5617 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/nb.js +6085 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/nl.js +6252 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/nl_BE.js +6252 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css10.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css11.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css12.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css13.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css14.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css15.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css16.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css17.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css18.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css19.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css2.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css20.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css21.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css22.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css23.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css24.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css3.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css4.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css5.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css6.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css7.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css8.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css9.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/pl.js +6639 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/pt.js +6165 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/pt_PT.js +6230 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/ro.js +6250 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/ru.js +6553 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/ru_UA.js +6553 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/sk.js +6482 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/sl.js +6494 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/sr.js +6291 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/sr_Latn.js +6278 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/sv.js +6126 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/th.js +5928 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/tr.js +6146 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/uk.js +6504 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/vi.js +5720 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/zh_CN.js +5770 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/zh_HK.js +5779 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/zh_SG.js +5779 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/zh_TW.js +5846 -0
- package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css25.js +7177 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/dist/ListItem.js +81 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/dist/ListItemBase.js +44 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/dist/MenuItem.js +119 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-base.js +212 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/UserMenu.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/UserMenuAccount.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/UserMenuItem.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/UserMenu.js +99 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/UserMenuAccount.js +75 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/UserMenuItem.js +39 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori.js +347 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-icons/AllIcons.js +26 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents.js +650 -0
- package/src/main/js/sap/ushell/thirdparty/webcomponents-base.js +4279 -0
- package/src/main/js/sap/ushell/thirdparty/webcomponents-base2.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/webcomponents-fiori.js +146 -0
- package/src/main/js/sap/ushell/thirdparty/webcomponents.js +381 -0
- package/src/main/js/sap/ushell/ui/AppContainer.js +22 -8
- package/src/main/js/sap/ushell/ui/AppContainerRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/ContentNodeSelector.js +1 -1
- package/src/main/js/sap/ushell/ui/ContentNodeSelectorRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/ContentNodeTreeItem.js +1 -1
- package/src/main/js/sap/ushell/ui/CustomGroupHeaderListItem.js +1 -1
- package/src/main/js/sap/ushell/ui/CustomGroupHeaderListItemRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/QuickAccess.js +1 -1
- package/src/main/js/sap/ushell/ui/ShellHeader.js +56 -40
- package/src/main/js/sap/ushell/ui/ShellHeaderRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/appfinder/AppBox.js +1 -1
- package/src/main/js/sap/ushell/ui/appfinder/AppBoxInternal.js +1 -1
- package/src/main/js/sap/ushell/ui/appfinder/AppBoxInternalRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/appfinder/AppBoxRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/appfinder/PinButton.js +1 -1
- package/src/main/js/sap/ushell/ui/appfinder/PinButtonRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/bookmark/SaveOnPage.controller.js +1 -1
- package/src/main/js/sap/ushell/ui/cards/FrequentActivitiesExtension.js +1 -1
- package/src/main/js/sap/ushell/ui/cards/RecentActivitiesExtension.js +2 -2
- package/src/main/js/sap/ushell/ui/footerbar/AboutButton.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/AboutDialog.controller.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/AddBookmarkButton.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/ContactSupportButton.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/ContactSupportDialog.controller.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/JamDiscussButton.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/JamShareButton.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/LogoutButton.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/SaveAsTile.controller.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/SaveAsTile.view.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/SendAsEmailButton.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/AccessibilityCustomData.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/ActionItem.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/AnchorItem.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/AnchorItemRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/AnchorNavigationBar.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/AnchorNavigationBarRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/CatalogEntryContainer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/CatalogsContainer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/DashboardGroupsContainer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/DashboardGroupsContainerRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/ExtendedChangeDetection.js +2 -2
- package/src/main/js/sap/ushell/ui/launchpad/FailedTileDialog.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/GroupHeaderActions.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/GroupListItem.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/GroupListItemRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/LinkTileWrapper.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/LinkTileWrapperRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/LoadingDialog.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/LoadingDialogRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/Page.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/PageRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/PlusTile.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/PlusTileRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/Section.js +2 -2
- package/src/main/js/sap/ushell/ui/launchpad/SectionRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/Tile.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/TileContainer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/TileContainerRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/TileContainerUtils.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/TileRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/TileState.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/TileStateInternal.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/TileStateInternalRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/TileStateRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/ViewPortState.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/VizInstance.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceAbap.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceBase.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceCdm.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceLaunchPage.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceLink.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/section/CompactArea.js +2 -2
- package/src/main/js/sap/ushell/ui/launchpad/section/CompactAreaRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/ContentRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/NavigationMiniTile.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/OverflowListItem.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/RightFloatingContainer.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/ShellAppTitle.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/ShellFloatingAction.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/ShellFloatingActionRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/ShellFloatingActions.js +1 -9
- package/src/main/js/sap/ushell/ui/shell/ShellHeadItem.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/ShellNavigationMenu.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/SidePane.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/SubHeader.js +8 -51
- package/src/main/js/sap/ushell/ui/shell/SysInfoBar.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/SysInfoBarRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/ToolArea.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/ToolAreaItem.js +2 -2
- package/src/main/js/sap/ushell/ui/tile/DynamicTile.js +1 -1
- package/src/main/js/sap/ushell/ui/tile/DynamicTileRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/tile/ImageTile.js +1 -1
- package/src/main/js/sap/ushell/ui/tile/ImageTileRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/tile/StaticTile.js +1 -1
- package/src/main/js/sap/ushell/ui/tile/StaticTileRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/tile/TileBase.js +1 -1
- package/src/main/js/sap/ushell/ui/tile/TileBaseRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/utils.js +2 -2
- package/src/main/js/sap/ushell/ui5service/ShellUIService.js +1 -1
- package/src/main/js/sap/ushell/ui5service/ShellUIServiceFactory.js +2 -2
- package/src/main/js/sap/ushell/ui5service/UserStatus.js +2 -2
- package/src/main/js/sap/ushell/utils/AppType.js +1 -1
- package/src/main/js/sap/ushell/utils/Deferred.js +1 -1
- package/src/main/js/sap/ushell/utils/DynamicTileRequest.js +1 -1
- package/src/main/js/sap/ushell/utils/HttpClient.js +1 -1
- package/src/main/js/sap/ushell/utils/RestrictedJSONModel.js +17 -1
- package/src/main/js/sap/ushell/utils/UriParameters.js +1 -1
- package/src/main/js/sap/ushell/utils/UrlParsing.js +1 -1
- package/src/main/js/sap/ushell/utils/UrlShortening.js +2 -2
- package/src/main/js/sap/ushell/utils/WindowUtils.js +1 -1
- package/src/main/js/sap/ushell/utils/chipsUtils.js +1 -1
- package/src/main/js/sap/ushell/utils/objectOperations.js +1 -1
- package/src/main/js/sap/ushell/utils/tilecard/TileCard.js +1 -1
- package/src/main/js/sap/ushell/utils/tilecard/TileCardExtension.js +1 -1
- package/src/main/js/sap/ushell/utils/type.js +1 -1
- package/src/main/js/sap/ushell/utils/utilsCdm.js +1 -1
- package/src/main/js/sap/ushell/utils/workpage/DestinationResolver.js +1 -1
- package/src/main/js/sap/ushell/utils/workpage/WorkPageHost.js +2 -2
- package/src/main/js/sap/ushell/utils/workpage/WorkPageService.js +3 -3
- package/src/main/js/sap/ushell/utils/workpage/WorkPageVizInstantiation.js +3 -3
- package/src/main/js/sap/ushell/utils.js +9 -1
- package/src/test/js/sap/ushell/bootstrap/sandbox.js +2 -2
- package/ui5.yaml +20 -1
|
@@ -1,20 +1,31 @@
|
|
|
1
|
-
// Copyright (c) 2009-
|
|
1
|
+
// Copyright (c) 2009-2025 SAP SE, All Rights Reserved
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @fileOverview handle all the resources for the different applications.
|
|
5
|
-
* @version 1.
|
|
5
|
+
* @version 1.134.1
|
|
6
6
|
*/
|
|
7
7
|
sap.ui.define([
|
|
8
|
+
"sap/base/util/deepEqual",
|
|
9
|
+
"sap/base/util/ObjectPath",
|
|
8
10
|
"sap/ui/Device",
|
|
9
11
|
"sap/ui/core/Element",
|
|
10
12
|
"sap/ui/core/EventBus",
|
|
11
|
-
"sap/ushell/components/applicationIntegration/
|
|
12
|
-
"sap/ushell/
|
|
13
|
-
"sap/ushell/components/applicationIntegration/application/Application",
|
|
14
|
-
"sap/ushell/components/applicationIntegration/application/PostMessageUtils",
|
|
15
|
-
"sap/ushell/components/applicationIntegration/application/WebGUIStatefulHandler",
|
|
16
|
-
"sap/ushell/components/applicationIntegration/relatedServices/RelatedServices",
|
|
13
|
+
"sap/ushell/components/applicationIntegration/KeepAliveApps",
|
|
14
|
+
"sap/ushell/state/BackNavigation",
|
|
17
15
|
"sap/ushell/components/applicationIntegration/configuration/AppMeta",
|
|
16
|
+
"sap/ushell/components/applicationIntegration/contracts/EmbeddedUI5Handler",
|
|
17
|
+
"sap/ushell/components/applicationIntegration/contracts/StatefulContainerV1Handler",
|
|
18
|
+
"sap/ushell/components/applicationIntegration/contracts/StatefulContainerV2Handler",
|
|
19
|
+
"sap/ushell/components/applicationIntegration/ApplicationContainerCache",
|
|
20
|
+
"sap/ushell/components/applicationIntegration/PostMessageManager/AppruntimeHandler",
|
|
21
|
+
"sap/ushell/components/applicationIntegration/PostMessageManager/NWBCHandler",
|
|
22
|
+
"sap/ushell/components/applicationIntegration/PostMessageManager/LifecycleHandler",
|
|
23
|
+
"sap/ushell/components/applicationIntegration/PostMessageManager/ServiceHandler",
|
|
24
|
+
"sap/ushell/components/applicationIntegration/PostMessageManager/MessageBrokerHandler",
|
|
25
|
+
"sap/ushell/components/applicationIntegration/PostMessageManager",
|
|
26
|
+
"sap/ushell/components/applicationIntegration/PostMessagePluginInterface",
|
|
27
|
+
"sap/ushell/components/applicationIntegration/IframeApplicationContainer",
|
|
28
|
+
"sap/ushell/components/applicationIntegration/UI5ApplicationContainer",
|
|
18
29
|
"sap/ushell/services/AppConfiguration",
|
|
19
30
|
"sap/ushell/utils",
|
|
20
31
|
"sap/ushell/Config",
|
|
@@ -36,18 +47,30 @@ sap.ui.define([
|
|
|
36
47
|
"sap/ushell/state/KeepAlive",
|
|
37
48
|
"sap/ushell/ui5service/ShellUIServiceFactory",
|
|
38
49
|
"sap/ui/core/service/ServiceFactoryRegistry",
|
|
39
|
-
"sap/
|
|
50
|
+
"sap/ushell/library",
|
|
51
|
+
"sap/ushell/components/applicationIntegrationOld/AppLifeCycle"
|
|
40
52
|
], (
|
|
53
|
+
deepEqual,
|
|
54
|
+
ObjectPath,
|
|
41
55
|
Device,
|
|
42
56
|
Element,
|
|
43
57
|
EventBus,
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
Application,
|
|
47
|
-
PostMessageUtils,
|
|
48
|
-
WebGUIStatefulHandler,
|
|
49
|
-
RelatedServices,
|
|
58
|
+
KeepAliveApps,
|
|
59
|
+
BackNavigation,
|
|
50
60
|
AppMeta,
|
|
61
|
+
EmbeddedUI5Handler,
|
|
62
|
+
StatefulContainerV1Handler,
|
|
63
|
+
StatefulContainerV2Handler,
|
|
64
|
+
ApplicationContainerCache,
|
|
65
|
+
AppRuntimeHandler,
|
|
66
|
+
NWBCHandler,
|
|
67
|
+
LifecycleHandler,
|
|
68
|
+
ServiceHandler,
|
|
69
|
+
MessageBrokerHandler,
|
|
70
|
+
PostMessageManager,
|
|
71
|
+
PostMessagePluginInterface,
|
|
72
|
+
IframeApplicationContainer,
|
|
73
|
+
UI5ApplicationContainer,
|
|
51
74
|
AppConfiguration,
|
|
52
75
|
ushellUtils,
|
|
53
76
|
Config,
|
|
@@ -69,10 +92,19 @@ sap.ui.define([
|
|
|
69
92
|
KeepAlive,
|
|
70
93
|
ShellUIServiceFactory,
|
|
71
94
|
ServiceFactoryRegistry,
|
|
72
|
-
|
|
95
|
+
ushellLibrary,
|
|
96
|
+
AppLifeCycleFallback
|
|
73
97
|
) => {
|
|
74
98
|
"use strict";
|
|
75
99
|
|
|
100
|
+
if (Config.last("/core/navigation/enableAppLifeCycleFallback")) {
|
|
101
|
+
ObjectPath.set("sap.ushell.components.applicationIntegration.AppLifeCycle", AppLifeCycleFallback);
|
|
102
|
+
return AppLifeCycleFallback;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// shortcut for sap.ushell.components.applicationIntegration.contracts.StatefulType
|
|
106
|
+
const StatefulType = ushellLibrary.components.applicationIntegration.contracts.StatefulType;
|
|
107
|
+
|
|
76
108
|
// shortcut for sap.ushell.state.StateManager.ShellMode
|
|
77
109
|
const ShellMode = StateManager.ShellMode;
|
|
78
110
|
|
|
@@ -89,11 +121,13 @@ sap.ui.define([
|
|
|
89
121
|
// const CACHED_APP_TYPES = ["URL"];
|
|
90
122
|
|
|
91
123
|
const KEEP_ALIVE_MODES = {
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
124
|
+
True: "true",
|
|
125
|
+
Restricted: "restricted",
|
|
126
|
+
False: ""
|
|
95
127
|
};
|
|
96
128
|
|
|
129
|
+
const iValidIframeTimeout = 3500;
|
|
130
|
+
|
|
97
131
|
function AppLifeCycle () {
|
|
98
132
|
//Dangling controls is a queue of requests to change shell elements attributes, requested by the application in the process of createContent before the actual application state was apply.
|
|
99
133
|
let bDisableHomeAppCache = false;
|
|
@@ -109,13 +143,6 @@ sap.ui.define([
|
|
|
109
143
|
MessageBrokerEngine.connect("FLP");
|
|
110
144
|
}
|
|
111
145
|
|
|
112
|
-
/**
|
|
113
|
-
* @returns {object} Returns the RelatedServices API.
|
|
114
|
-
*/
|
|
115
|
-
this.service = function () {
|
|
116
|
-
return RelatedServices;
|
|
117
|
-
};
|
|
118
|
-
|
|
119
146
|
/**
|
|
120
147
|
* Sets the componentCreated promise for a given appId if it does not exist yet.
|
|
121
148
|
* Returns the promise along with the resolve and reject functions.
|
|
@@ -156,12 +183,14 @@ sap.ui.define([
|
|
|
156
183
|
/**
|
|
157
184
|
* Returns the componentCreated promise for the given appId. If the promise does not yet exist, it is created.
|
|
158
185
|
* @param {string} sStorageAppId The id of the created application.
|
|
159
|
-
* @returns {Promise
|
|
186
|
+
* @returns {Promise} The componentCreated promise for the given appId.
|
|
160
187
|
* @private
|
|
161
188
|
* @since 1.125.0
|
|
162
189
|
*/
|
|
163
|
-
this._getComponentCreatedPromise = function (sStorageAppId) {
|
|
164
|
-
if (!sStorageAppId) {
|
|
190
|
+
this._getComponentCreatedPromise = async function (sStorageAppId) {
|
|
191
|
+
if (!sStorageAppId) {
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
165
194
|
return this._setComponentCreatedPromise(sStorageAppId).promise;
|
|
166
195
|
};
|
|
167
196
|
|
|
@@ -185,20 +214,18 @@ sap.ui.define([
|
|
|
185
214
|
* @param {object} oData
|
|
186
215
|
*/
|
|
187
216
|
this._onComponentCreated = function (oEvent, sChannel, oData) {
|
|
188
|
-
const
|
|
189
|
-
const sStorageAppId = this._normalizeAppId(
|
|
190
|
-
const oStorageEntry =
|
|
217
|
+
const oAppComponent = oData.component;
|
|
218
|
+
const sStorageAppId = this._normalizeAppId(oAppComponent.getId());
|
|
219
|
+
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
191
220
|
|
|
192
221
|
if (oStorageEntry) {
|
|
193
|
-
oStorageEntry.app =
|
|
194
|
-
Application.active(oStorageEntry.app);
|
|
195
|
-
|
|
222
|
+
oStorageEntry.app = oAppComponent;
|
|
196
223
|
} else {
|
|
197
|
-
oCurrentApplication.app =
|
|
224
|
+
oCurrentApplication.app = oAppComponent;
|
|
225
|
+
}
|
|
198
226
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
}
|
|
227
|
+
if (oAppComponent.active) {
|
|
228
|
+
oAppComponent.active();
|
|
202
229
|
}
|
|
203
230
|
|
|
204
231
|
this._resolveComponentCreatedPromise(sStorageAppId);
|
|
@@ -216,56 +243,108 @@ sap.ui.define([
|
|
|
216
243
|
/**
|
|
217
244
|
* @param {string} sStorageAppId
|
|
218
245
|
*/
|
|
219
|
-
this.
|
|
220
|
-
const oStorageEntry =
|
|
246
|
+
this._storeApplication = async function (sStorageAppId) {
|
|
247
|
+
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
221
248
|
|
|
222
249
|
if (oStorageEntry) {
|
|
223
|
-
|
|
250
|
+
const oApplicationContainer = oStorageEntry.container;
|
|
251
|
+
const bShouldBeKeptAlive = oApplicationContainer.getIsKeepAlive();
|
|
252
|
+
if (!bShouldBeKeptAlive) {
|
|
253
|
+
Log.error("Application should be kept alive but the flag is not set", null, "sap.ushell.components.applicationIntegration.AppLifeCycle");
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
if (oApplicationContainer.isA("sap.ushell.components.applicationIntegration.IframeApplicationContainer")) {
|
|
258
|
+
if (oApplicationContainer.getStatefulType() === StatefulType.ContractV2) {
|
|
259
|
+
const bSupportsKeepAliveWithinSameFrame = StatefulContainerV2Handler.isStatefulContainerSupportingKeepAlive(oApplicationContainer);
|
|
260
|
+
|
|
261
|
+
if (bSupportsKeepAliveWithinSameFrame) {
|
|
262
|
+
const sActualAppFromId = oApplicationContainer.getCurrentAppId();
|
|
263
|
+
if (!sActualAppFromId) {
|
|
264
|
+
return; // stateful container is already stored
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
// return the container to the pool
|
|
268
|
+
this._setContainerReadyForReuse(oApplicationContainer);
|
|
269
|
+
|
|
270
|
+
await StatefulContainerV2Handler.storeAppWithinSameFrame(oApplicationContainer, sActualAppFromId);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
await oApplicationContainer.sendRequest("sap.ushell.appRuntime.keepAliveAppHide", {}, false);
|
|
275
|
+
|
|
276
|
+
} else if (oApplicationContainer.isA("sap.ushell.components.applicationIntegration.UI5ApplicationContainer")) {
|
|
277
|
+
await EmbeddedUI5Handler.storeApp(oApplicationContainer, oStorageEntry);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
// close storage entry
|
|
224
281
|
oStorageEntry.stateStored = true;
|
|
282
|
+
|
|
283
|
+
// todo: [FLPCOREANDUX-10024] clarify how to handle appClosed events
|
|
284
|
+
EventBus.getInstance().publish("sap.ushell", "appClosed", oApplicationContainer);
|
|
225
285
|
}
|
|
226
286
|
};
|
|
227
287
|
|
|
228
288
|
/**
|
|
289
|
+
* Should remove their foot print and prepare for possible reuse.
|
|
229
290
|
* @param {string} sStorageAppId
|
|
230
291
|
* @param {object} oApplicationContainer
|
|
231
|
-
* @param {boolean}
|
|
292
|
+
* @param {boolean} [bIgnoreReuse=false]
|
|
232
293
|
* @returns {Promise} Resolves when the app is destroyed.
|
|
233
294
|
*/
|
|
234
|
-
this._destroyApplication = async function (sStorageAppId, oApplicationContainer,
|
|
235
|
-
|
|
295
|
+
this._destroyApplication = async function (sStorageAppId, oApplicationContainer, bIgnoreReuse) {
|
|
296
|
+
if (typeof sStorageAppId !== "string" || !oApplicationContainer) {
|
|
297
|
+
return;
|
|
298
|
+
}
|
|
236
299
|
|
|
237
|
-
if (!
|
|
300
|
+
if (!oApplicationContainer.getCurrentAppId() && !bIgnoreReuse) {
|
|
301
|
+
// no active app in the container, only destroy this app if it shall not be reused.
|
|
238
302
|
return;
|
|
239
303
|
}
|
|
240
304
|
|
|
241
|
-
|
|
242
|
-
// ignore stateful destroy when hard destroy is requested
|
|
243
|
-
if (oStorageEntry && !bHardDestroy) { // keep alive
|
|
244
|
-
Storage.removeById(sStorageAppId);
|
|
305
|
+
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
245
306
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
await BlueBoxHandler.statefulDestroyApp(oStorageEntry.container, sStorageAppId);
|
|
307
|
+
KeepAliveApps.removeById(sStorageAppId);
|
|
308
|
+
KeepAlive.destroy(oStorageEntry);
|
|
249
309
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
BlueBoxHandler.returnUnusedKeepAliveContainer(oStorageEntry.container);
|
|
253
|
-
await this._handleExitStateful(oStorageEntry.container, false);
|
|
310
|
+
// ===============================================================================
|
|
311
|
+
// try to reuse the iframe
|
|
254
312
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
313
|
+
const bIsReusableContainer = oApplicationContainer.getStatefulType() !== StatefulType.NotSupported;
|
|
314
|
+
if (!bIgnoreReuse && bIsReusableContainer) {
|
|
315
|
+
// First return the container to the pool in case it was keep alive.
|
|
316
|
+
// the "return to pool" step requires the current metadata and has to be done before the actual close
|
|
317
|
+
this._setContainerReadyForReuse(oApplicationContainer);
|
|
318
|
+
|
|
319
|
+
// Second close the app
|
|
320
|
+
if (oApplicationContainer.getStatefulType() === StatefulType.ContractV2) {
|
|
321
|
+
await StatefulContainerV2Handler.destroyApp(oApplicationContainer, sStorageAppId);
|
|
322
|
+
|
|
323
|
+
} else if (oApplicationContainer.getStatefulType() === StatefulType.ContractV1) {
|
|
324
|
+
await StatefulContainerV1Handler.destroyApp(oApplicationContainer, sStorageAppId);
|
|
260
325
|
}
|
|
326
|
+
|
|
327
|
+
// todo: [FLPCOREANDUX-10024] clarify how to handle appClosed events
|
|
328
|
+
EventBus.getInstance().publish("sap.ushell", "appClosed", oApplicationContainer);
|
|
261
329
|
return;
|
|
262
330
|
}
|
|
263
331
|
|
|
264
|
-
|
|
265
|
-
|
|
332
|
+
// ===============================================================================
|
|
333
|
+
// the app or iframe cannot be reused (or should not be reused) so we destroy it
|
|
334
|
+
|
|
335
|
+
// try to close the iframe gracefully
|
|
336
|
+
if (oApplicationContainer.getStatefulType() === StatefulType.ContractV2) {
|
|
337
|
+
await StatefulContainerV2Handler.destroyApp(oApplicationContainer, sStorageAppId);
|
|
338
|
+
|
|
339
|
+
} else if (oApplicationContainer.getStatefulType() === StatefulType.ContractV1) {
|
|
340
|
+
await StatefulContainerV1Handler.destroyApp(oApplicationContainer, sStorageAppId);
|
|
266
341
|
}
|
|
267
342
|
|
|
268
|
-
|
|
343
|
+
// remove all other related apps from the storage
|
|
344
|
+
KeepAliveApps.removeByContainer(oApplicationContainer, (oStorageEntry) => {
|
|
345
|
+
KeepAlive.destroy(oStorageEntry);
|
|
346
|
+
});
|
|
347
|
+
|
|
269
348
|
/**
|
|
270
349
|
* If the application running in an iframe registered for "before close" event,
|
|
271
350
|
* we first post it a message to prepare for closing (usually, the app will close
|
|
@@ -290,158 +369,105 @@ sap.ui.define([
|
|
|
290
369
|
);
|
|
291
370
|
}
|
|
292
371
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
}
|
|
372
|
+
ApplicationContainerCache.removeByContainer(oApplicationContainer);
|
|
373
|
+
this._removeApplicationContainerFromViewPort(oApplicationContainer);
|
|
296
374
|
|
|
297
|
-
|
|
298
|
-
|
|
375
|
+
try {
|
|
376
|
+
oApplicationContainer.destroy();
|
|
377
|
+
} catch (oError) {
|
|
378
|
+
Log.error(
|
|
379
|
+
`Exception when trying to close application with id '${oApplicationContainer.getId()}'. This error must be fixed in order for FLP to operate properly.`,
|
|
380
|
+
oError,
|
|
381
|
+
"sap.ushell.components.applicationIntegration.AppLifeCycle"
|
|
382
|
+
);
|
|
383
|
+
}
|
|
299
384
|
};
|
|
300
385
|
|
|
301
386
|
/**
|
|
302
387
|
* @param {string} sStorageAppId
|
|
303
388
|
*/
|
|
304
|
-
this.
|
|
305
|
-
const oStorageEntry =
|
|
389
|
+
this._restoreApplication = async function (sStorageAppId) {
|
|
390
|
+
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
306
391
|
|
|
307
392
|
if (oStorageEntry?.stateStored) {
|
|
308
393
|
// 1) Extensions
|
|
309
|
-
|
|
394
|
+
BackNavigation.restore(oStorageEntry.service);
|
|
310
395
|
AppMeta.restore(oStorageEntry.meta);
|
|
396
|
+
|
|
311
397
|
// 2) Extension API
|
|
312
398
|
ShellUIServiceFactory.restore(oStorageEntry);
|
|
399
|
+
|
|
313
400
|
// 3) Application
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
401
|
+
const oApplicationContainer = oStorageEntry.container;
|
|
402
|
+
if (oApplicationContainer.isA("sap.ushell.components.applicationIntegration.IframeApplicationContainer")) {
|
|
403
|
+
await oApplicationContainer.sendRequest("sap.ushell.appRuntime.keepAliveAppShow", {}, false);
|
|
317
404
|
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
* @param {boolean} bNavigationToFlpComponent
|
|
321
|
-
* @param {boolean} [bForceCloseApp]
|
|
322
|
-
* @returns {Promise} Resolves when the app is closed.
|
|
323
|
-
*/
|
|
324
|
-
this._handleExitStateful = function (oApplicationContainer, bNavigationToFlpComponent, bForceCloseApp) {
|
|
325
|
-
const sActualAppFromId = oApplicationContainer.getCurrentAppId();
|
|
326
|
-
|
|
327
|
-
if (Storage.get(sActualAppFromId)) {
|
|
328
|
-
const bDestroyApp = bForceCloseApp || (RelatedServices.isBackNavigation() && !bNavigationToFlpComponent);
|
|
329
|
-
if (bDestroyApp) {
|
|
330
|
-
EventBus.getInstance().publish("sap.ushell", "appClosed", oApplicationContainer);
|
|
331
|
-
Storage.removeById(sActualAppFromId);
|
|
332
|
-
return BlueBoxHandler.statefulDestroyApp(oApplicationContainer);
|
|
405
|
+
} else if (oApplicationContainer.isA("sap.ushell.components.applicationIntegration.UI5ApplicationContainer")) {
|
|
406
|
+
await EmbeddedUI5Handler.restoreAppAfterNavigate(oApplicationContainer, oStorageEntry);
|
|
333
407
|
}
|
|
334
|
-
// in this case the store of the currently running application, so we do not need to pass the sCacheId
|
|
335
|
-
EventBus.getInstance().publish("sap.ushell", "appClosed", oApplicationContainer);
|
|
336
|
-
return BlueBoxHandler.statefulStoreKeepAliveApp(oApplicationContainer, sActualAppFromId);
|
|
337
408
|
}
|
|
338
|
-
// in this case the destroy of the currently running application, so we do not need to pass the sCacheId
|
|
339
|
-
return BlueBoxHandler.statefulDestroyApp(oApplicationContainer);
|
|
340
409
|
};
|
|
341
410
|
|
|
342
411
|
/**
|
|
343
412
|
* @param {object} oOldApplicationContainer
|
|
344
413
|
* @param {boolean} bNavigationToFlpComponent
|
|
345
|
-
* @param {boolean} bFromAfterNavigate
|
|
346
414
|
* @returns {Promise} Resolves when the app is closed.
|
|
347
415
|
*/
|
|
348
|
-
this._handleExitApplication = async function (oOldApplicationContainer, bNavigationToFlpComponent
|
|
416
|
+
this._handleExitApplication = async function (oOldApplicationContainer, bNavigationToFlpComponent) {
|
|
349
417
|
if (!oOldApplicationContainer) {
|
|
350
418
|
return;
|
|
351
419
|
}
|
|
352
420
|
|
|
353
421
|
const sOldStorageAppId = oOldApplicationContainer.getCurrentAppId();
|
|
354
|
-
|
|
355
422
|
if (!sOldStorageAppId) {
|
|
423
|
+
// no active app in the container
|
|
356
424
|
return;
|
|
357
425
|
}
|
|
358
426
|
|
|
359
|
-
|
|
360
|
-
// if called from onAfterNavigate, do nothing if oOldApplicationContainer is stateful container, because
|
|
361
|
-
// application was already closed at the beginning of 'handleCreateApplicationContainer'
|
|
362
|
-
if (!bNavigationToFlpComponent
|
|
363
|
-
&& bFromAfterNavigate
|
|
364
|
-
&& (
|
|
365
|
-
BlueBoxHandler.isStatefulContainer(oOldApplicationContainer)
|
|
366
|
-
|| BlueBoxHandler.isStatefulContainerInKeepAlivePool(oOldApplicationContainer)
|
|
367
|
-
)
|
|
368
|
-
) {
|
|
369
|
-
return;
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
const oOldStorageEntry = Storage.get(sOldStorageAppId);
|
|
373
|
-
// STATEFUL
|
|
374
|
-
if (BlueBoxHandler.isStatefulContainer(oOldApplicationContainer)) {
|
|
375
|
-
await this._handleExitStateful(oOldApplicationContainer, bNavigationToFlpComponent);
|
|
427
|
+
const bNavigationBackToApp = BackNavigation.isBackNavigation() && !bNavigationToFlpComponent;
|
|
376
428
|
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
//
|
|
380
|
-
if (RelatedServices.isBackNavigation() && !bNavigationToFlpComponent) {
|
|
381
|
-
//check if the Iframe needs to be cached instead of destroy
|
|
382
|
-
if (oOldApplicationContainer.getIsKeepAlive() && BlueBoxHandler.isReusableContainer(oOldApplicationContainer)) {
|
|
383
|
-
BlueBoxHandler.returnUnusedKeepAliveContainer(oOldApplicationContainer);
|
|
384
|
-
await this._handleExitStateful(oOldApplicationContainer, bNavigationToFlpComponent);
|
|
429
|
+
// Back Navigation Case
|
|
430
|
+
if (bNavigationBackToApp) {
|
|
431
|
+
await this._destroyApplication(sOldStorageAppId, oOldApplicationContainer); // todo: [FLPCOREANDUX-10024] new marker
|
|
385
432
|
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
} else if (oOldApplicationContainer.getApplicationType() === "UI5") {
|
|
433
|
+
// Forward Navigation Case
|
|
434
|
+
// (and back navigation to FLP component)
|
|
435
|
+
} else {
|
|
436
|
+
// todo: [FLPCOREANDUX-10024] this should probably moved to a UI5 ApplicationContainer implementation
|
|
437
|
+
if (oOldApplicationContainer.isA("sap.ushell.components.applicationIntegration.UI5ApplicationContainer")) {
|
|
392
438
|
// Wait until navigation's source app has been started completely, so that a later back navigation finds a proper app that
|
|
393
439
|
// can be re-enabled (keep-alive scenario)
|
|
394
440
|
await this._getComponentCreatedPromise(sOldStorageAppId);
|
|
395
|
-
this._store(sOldStorageAppId);
|
|
396
|
-
} else {
|
|
397
|
-
this._store(sOldStorageAppId);
|
|
398
441
|
}
|
|
399
|
-
EventBus.getInstance().publish("sap.ushell", "appClosed", oOldApplicationContainer);
|
|
400
442
|
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
if (bNavigationToFlpComponent) {
|
|
404
|
-
await PostMessageUtils.postMessageToIframeApp(oOldApplicationContainer, "sap.gui", "triggerCloseSessionImmediately");
|
|
443
|
+
if (oOldApplicationContainer.getIsKeepAlive()) {
|
|
444
|
+
return this._storeApplication(sOldStorageAppId);
|
|
405
445
|
}
|
|
406
|
-
|
|
407
|
-
// THE REST...
|
|
408
|
-
} else {
|
|
409
|
-
//destroy the application and its resources
|
|
410
|
-
await this._destroyApplication(sOldStorageAppId, oOldApplicationContainer);
|
|
446
|
+
return this._destroyApplication(sOldStorageAppId, oOldApplicationContainer);
|
|
411
447
|
}
|
|
412
448
|
};
|
|
413
449
|
|
|
414
450
|
/**
|
|
415
451
|
* @param {function(): boolean} fnFilterApps The filter function
|
|
452
|
+
* @param {boolean} [bIgnoreReuse=false]
|
|
416
453
|
* @returns {Promise} Resolves when all keep alive apps are closed.
|
|
417
454
|
*/
|
|
418
|
-
this.
|
|
455
|
+
this._destroyKeepAliveApps = async function (fnFilterApps, bIgnoreReuse) {
|
|
419
456
|
try {
|
|
420
|
-
const
|
|
457
|
+
const aFilteredApps = [];
|
|
421
458
|
|
|
422
|
-
|
|
459
|
+
KeepAliveApps.forEach((oStorageEntry) => {
|
|
423
460
|
if (fnFilterApps(oStorageEntry)) {
|
|
424
|
-
|
|
461
|
+
aFilteredApps.push(oStorageEntry);
|
|
425
462
|
}
|
|
426
463
|
});
|
|
427
|
-
const aClosePromises =
|
|
428
|
-
|
|
429
|
-
const bCanHandleKeepAlive = BlueBoxHandler.isStatefulContainerSupportingKeepAlive(oRestrictedApp.container);
|
|
430
|
-
const bIsKeepAlive = oRestrictedApp.container.getIsKeepAlive();
|
|
431
|
-
const bIsReusable = BlueBoxHandler.isReusableContainer(oRestrictedApp.container);
|
|
432
|
-
|
|
433
|
-
if (!bCanHandleKeepAlive && bIsKeepAlive && bIsReusable) {
|
|
434
|
-
BlueBoxHandler.returnUnusedKeepAliveContainer(oRestrictedApp.container);
|
|
435
|
-
// todo: [FLPCOREANDUX-10024] what is the actual difference between destroyApplication and handleExitStateful?
|
|
436
|
-
return this._handleExitStateful(oRestrictedApp.container, true, true);
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
return this._destroyApplication(oRestrictedApp.appId, oRestrictedApp.container);
|
|
464
|
+
const aClosePromises = aFilteredApps.map((oFilteredApp) => {
|
|
465
|
+
return this._destroyApplication(oFilteredApp.appId, oFilteredApp.container, bIgnoreReuse);
|
|
440
466
|
});
|
|
441
467
|
|
|
442
|
-
|
|
468
|
+
await Promise.allSettled(aClosePromises);
|
|
443
469
|
} catch (e) {
|
|
444
|
-
Log.error("
|
|
470
|
+
Log.error("_destroyKeepAliveApps call failed", e);
|
|
445
471
|
}
|
|
446
472
|
};
|
|
447
473
|
|
|
@@ -450,18 +476,18 @@ sap.ui.define([
|
|
|
450
476
|
* @param {object} oFrom
|
|
451
477
|
*/
|
|
452
478
|
this.onBeforeNavigate = function (sFromId, oFrom) {
|
|
453
|
-
if (sFromId && oFrom && oFrom.isA("sap.ushell.components.
|
|
479
|
+
if (sFromId && oFrom && oFrom.isA("sap.ushell.components.applicationIntegration.ApplicationContainer")) {
|
|
454
480
|
const sStorageAppId = sFromId;
|
|
455
481
|
const oApplicationContainer = oFrom;
|
|
456
482
|
|
|
457
|
-
const bHasIframe = !!oApplicationContainer.
|
|
458
|
-
const bIsSupportedType = oApplicationContainer.getStatefulType() >
|
|
483
|
+
const bHasIframe = !!oApplicationContainer.isA("sap.ushell.components.applicationIntegration.IframeApplicationContainer"); // todo: [FLPCOREANDUX-10024] is this really required?
|
|
484
|
+
const bIsSupportedType = oApplicationContainer.getStatefulType() > StatefulType.NotSupported;
|
|
459
485
|
|
|
460
|
-
const bCached = !!
|
|
486
|
+
const bCached = !!KeepAliveApps.get(sStorageAppId);
|
|
461
487
|
const bSessionHandlingSupported = bHasIframe && bIsSupportedType;
|
|
462
488
|
|
|
463
|
-
if (bCached || bSessionHandlingSupported) {
|
|
464
|
-
|
|
489
|
+
if (bHasIframe && (bCached || bSessionHandlingSupported)) {
|
|
490
|
+
oApplicationContainer.sendRequest("sap.ushell.sessionHandler.beforeApplicationHide", {}, false);
|
|
465
491
|
}
|
|
466
492
|
}
|
|
467
493
|
|
|
@@ -480,7 +506,7 @@ sap.ui.define([
|
|
|
480
506
|
if (!sFromId) {
|
|
481
507
|
sFromId = "";
|
|
482
508
|
}
|
|
483
|
-
|
|
509
|
+
|
|
484
510
|
const aFlpComponentIds = [
|
|
485
511
|
"Shell-appfinder-component",
|
|
486
512
|
"Shell-home-component",
|
|
@@ -491,71 +517,63 @@ sap.ui.define([
|
|
|
491
517
|
];
|
|
492
518
|
|
|
493
519
|
const bNavigationToFlpComponent = aFlpComponentIds.some((sFlpComponentId) => sToId.includes(sFlpComponentId));
|
|
494
|
-
const bNavigationFromFlpComponent = aFlpComponentIds.some((sFlpComponentId) => sFromId.includes(sFlpComponentId));
|
|
495
520
|
|
|
496
|
-
if (
|
|
497
|
-
|
|
521
|
+
if (sToId && oTo) {
|
|
522
|
+
// ==== Navigation from [any] to app ====
|
|
523
|
+
if (oTo.isA("sap.ushell.components.applicationIntegration.ApplicationContainer")) {
|
|
524
|
+
const sStorageAppId = sToId;
|
|
525
|
+
const oApplicationContainer = oTo;
|
|
526
|
+
|
|
527
|
+
// this code must be at the beginning of the function to allow it to be processed once in
|
|
528
|
+
// a cycle of opening an app
|
|
529
|
+
if (oApplicationContainer.getIframeReusedForApp()) {
|
|
530
|
+
oApplicationContainer.setProperty("iframeReusedForApp", false, true);
|
|
531
|
+
if (oApplicationContainer.isA("sap.ushell.components.applicationIntegration.IframeApplicationContainer")) {
|
|
532
|
+
oApplicationContainer.sendRequest("sap.ushell.sessionHandler.afterApplicationShow", {}, false);
|
|
533
|
+
}
|
|
534
|
+
}
|
|
498
535
|
|
|
499
|
-
|
|
536
|
+
if (KeepAliveApps.get(sStorageAppId)) {
|
|
537
|
+
await this._restoreApplication(sStorageAppId);
|
|
538
|
+
}
|
|
500
539
|
|
|
501
|
-
//
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
// this code must be at the beginning of the function to allow it to be processed once in
|
|
508
|
-
// a cycle of opening an app
|
|
509
|
-
if (oApplicationContainer.getIframeReusedForApp()) {
|
|
510
|
-
oApplicationContainer.setProperty("iframeReusedForApp", false, true);
|
|
511
|
-
PostMessageUtils.postMessageToIframeApp(oApplicationContainer, "sap.ushell.sessionHandler", "afterApplicationShow", {}, false);
|
|
512
|
-
}
|
|
540
|
+
// ==== Navigation from [any] to renderer managed component ====
|
|
541
|
+
} else {
|
|
542
|
+
// navigation to home
|
|
543
|
+
if (bNavigationToFlpComponent) {
|
|
544
|
+
await this._destroyKeepAliveApps((oStorageEntry) => oStorageEntry.keepAliveMode === KEEP_ALIVE_MODES.Restricted);
|
|
545
|
+
}
|
|
513
546
|
|
|
514
|
-
|
|
515
|
-
|
|
547
|
+
// Clear custom About Dialog parameters
|
|
548
|
+
AppInfoParameters.flush();
|
|
516
549
|
}
|
|
517
550
|
}
|
|
518
551
|
|
|
519
|
-
if (
|
|
520
|
-
//
|
|
521
|
-
if (
|
|
522
|
-
|
|
523
|
-
}
|
|
552
|
+
if (sFromId && oFrom) {
|
|
553
|
+
// ==== Navigation from app to [any] ====
|
|
554
|
+
if (oFrom.isA("sap.ushell.components.applicationIntegration.ApplicationContainer")) {
|
|
555
|
+
const oApplicationContainer = oFrom;
|
|
524
556
|
|
|
525
|
-
|
|
526
|
-
try {
|
|
527
|
-
this._removeApplicationContainerFromViewPort(sFromId);
|
|
528
|
-
oFrom.destroy();
|
|
529
|
-
} catch (oError) {
|
|
530
|
-
Log.error(`Error when trying to destroy the home component: '${sToId}'`, oError);
|
|
531
|
-
}
|
|
532
|
-
}
|
|
533
|
-
} else if (sFromId && oFrom) {
|
|
534
|
-
const oApplicationContainer = oFrom;
|
|
535
|
-
|
|
536
|
-
await this._handleExitApplication(oApplicationContainer, bNavigationToFlpComponent, true);
|
|
537
|
-
}
|
|
538
|
-
};
|
|
557
|
+
await this._handleExitApplication(oApplicationContainer, bNavigationToFlpComponent);
|
|
539
558
|
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
*/
|
|
545
|
-
// todo: [FLPCOREANDUX-10024] should be moved to onAfterNavigate
|
|
546
|
-
this.handleAfterNavigate = async function (oResolvedHashFragment, oOldResolvedHashFragment) {
|
|
547
|
-
if (!oOldResolvedHashFragment) {
|
|
548
|
-
return;
|
|
549
|
-
}
|
|
559
|
+
// ==== Navigation from renderer managed component to [any] ====
|
|
560
|
+
} else {
|
|
561
|
+
const sFromControlId = sFromId;
|
|
562
|
+
const oFromControl = oFrom;
|
|
550
563
|
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
564
|
+
// handle the case of appFinder
|
|
565
|
+
if (sToId.indexOf("Shell-appfinder-component") > 0) {
|
|
566
|
+
EventBus.getInstance().publish("sap.ushell", "appFinderAfterNavigate");
|
|
567
|
+
}
|
|
554
568
|
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
569
|
+
if (bDisableHomeAppCache) {
|
|
570
|
+
try {
|
|
571
|
+
this._removeApplicationContainerFromViewPort(oFromControl);
|
|
572
|
+
oFromControl.destroy();
|
|
573
|
+
} catch (oError) {
|
|
574
|
+
Log.error(`Error when trying to destroy the home component: '${sFromControlId}'`, oError);
|
|
575
|
+
}
|
|
576
|
+
}
|
|
559
577
|
}
|
|
560
578
|
}
|
|
561
579
|
};
|
|
@@ -566,16 +584,15 @@ sap.ui.define([
|
|
|
566
584
|
* @param {object} oResolvedHashFragment
|
|
567
585
|
* @param {string} oParsedShellHash
|
|
568
586
|
* @param {string} sKeepAliveMode
|
|
569
|
-
* @returns {
|
|
587
|
+
* @returns {object} Returns the storage entry.
|
|
570
588
|
*/
|
|
571
|
-
this.
|
|
572
|
-
|
|
573
|
-
|
|
589
|
+
this._addStorageEntry = function (sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode) {
|
|
590
|
+
const oOldStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
591
|
+
if (oOldStorageEntry) {
|
|
592
|
+
return oOldStorageEntry;
|
|
574
593
|
}
|
|
575
594
|
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
Storage.set(sStorageAppId, {
|
|
595
|
+
const oNewStorageEntry = {
|
|
579
596
|
service: {},
|
|
580
597
|
shellHash: `#${UrlParsing.constructShellHash(oParsedShellHash)}`,
|
|
581
598
|
appId: sStorageAppId,
|
|
@@ -583,16 +600,18 @@ sap.ui.define([
|
|
|
583
600
|
currentState: null, // current state is stored before close see: sap/ushell/state/CurrentState
|
|
584
601
|
controlManager: null, // control manager state is stored before close see: sap/ushell/state/ControlManager
|
|
585
602
|
container: oApplicationContainer,
|
|
586
|
-
meta:
|
|
603
|
+
meta: undefined, // is set after application start
|
|
587
604
|
app: undefined,
|
|
588
605
|
keepAliveMode: sKeepAliveMode,
|
|
589
606
|
appTarget: oResolvedHashFragment,
|
|
590
607
|
ui5ComponentName: oResolvedHashFragment.ui5ComponentName,
|
|
591
608
|
enableRouterRetrigger: bEnableRouterRetrigger,
|
|
592
609
|
stateStored: false
|
|
593
|
-
}
|
|
610
|
+
};
|
|
611
|
+
|
|
612
|
+
KeepAliveApps.set(sStorageAppId, oNewStorageEntry);
|
|
594
613
|
|
|
595
|
-
return
|
|
614
|
+
return oNewStorageEntry;
|
|
596
615
|
};
|
|
597
616
|
|
|
598
617
|
/**
|
|
@@ -611,19 +630,19 @@ sap.ui.define([
|
|
|
611
630
|
return;
|
|
612
631
|
}
|
|
613
632
|
const sStorageAppId = oCurrentApp.appId;
|
|
614
|
-
const oStorageEntry =
|
|
633
|
+
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
615
634
|
|
|
616
635
|
if (!oStorageEntry) {
|
|
617
636
|
// do not store for non-keep-alive apps
|
|
618
637
|
return;
|
|
619
638
|
}
|
|
620
639
|
|
|
621
|
-
if (oStorageEntry.container.
|
|
640
|
+
if (oStorageEntry.container.isA("sap.ushell.components.applicationIntegration.UI5ApplicationContainer")) {
|
|
622
641
|
await this._getComponentCreatedPromise(sStorageAppId);
|
|
623
642
|
}
|
|
624
643
|
|
|
625
644
|
// back navigation
|
|
626
|
-
|
|
645
|
+
BackNavigation.store(oStorageEntry.service);
|
|
627
646
|
// currentState, controlManager
|
|
628
647
|
KeepAlive.store(oStorageEntry);
|
|
629
648
|
// About Dialog
|
|
@@ -637,34 +656,30 @@ sap.ui.define([
|
|
|
637
656
|
* @returns {string} Returns the keep alive mode.
|
|
638
657
|
*/
|
|
639
658
|
this._calculateKeepAliveMode = function (sStorageAppId, oResolvedHashFragment, oParsedShellHash) {
|
|
659
|
+
const aKeepAliveModes = Object.values(KEEP_ALIVE_MODES);
|
|
660
|
+
|
|
640
661
|
//generic intent currently can never be keep alive
|
|
641
662
|
if (sStorageAppId === "application-Shell-startIntent") {
|
|
642
|
-
return;
|
|
663
|
+
return KEEP_ALIVE_MODES.False;
|
|
643
664
|
}
|
|
644
665
|
|
|
645
666
|
// Global override in query parameters
|
|
646
667
|
let sKeepAlive = new URLSearchParams(window.location.search).get("sap-keep-alive");
|
|
647
|
-
if (
|
|
668
|
+
if (aKeepAliveModes.includes(sKeepAlive)) {
|
|
648
669
|
return sKeepAlive;
|
|
649
|
-
} else if (sKeepAlive === KEEP_ALIVE_MODES.FALSE) {
|
|
650
|
-
return;
|
|
651
670
|
}
|
|
652
671
|
|
|
653
672
|
// App override in intent parameters
|
|
654
673
|
sKeepAlive = oParsedShellHash.params?.["sap-keep-alive"];
|
|
655
|
-
if (
|
|
674
|
+
if (aKeepAliveModes.includes(sKeepAlive)) {
|
|
656
675
|
return sKeepAlive;
|
|
657
|
-
} else if (sKeepAlive === KEEP_ALIVE_MODES.FALSE) {
|
|
658
|
-
return;
|
|
659
676
|
}
|
|
660
677
|
|
|
661
678
|
// Magic override in resolved hash fragment
|
|
662
679
|
if (oResolvedHashFragment.url) {
|
|
663
680
|
sKeepAlive = UriParameters.fromURL(oResolvedHashFragment.url).get("sap-keep-alive");
|
|
664
|
-
if (
|
|
681
|
+
if (aKeepAliveModes.includes(sKeepAlive)) {
|
|
665
682
|
return sKeepAlive;
|
|
666
|
-
} else if (sKeepAlive === KEEP_ALIVE_MODES.FALSE) {
|
|
667
|
-
return;
|
|
668
683
|
}
|
|
669
684
|
}
|
|
670
685
|
|
|
@@ -672,8 +687,10 @@ sap.ui.define([
|
|
|
672
687
|
// can be overridden by the above checks
|
|
673
688
|
const sShellHash = UrlParsing.constructShellHash(oParsedShellHash);
|
|
674
689
|
if (sShellHash && ushellUtils.isRootIntent(sShellHash)) {
|
|
675
|
-
return KEEP_ALIVE_MODES.
|
|
690
|
+
return KEEP_ALIVE_MODES.True;
|
|
676
691
|
}
|
|
692
|
+
|
|
693
|
+
return KEEP_ALIVE_MODES.False;
|
|
677
694
|
};
|
|
678
695
|
|
|
679
696
|
/**
|
|
@@ -692,14 +709,9 @@ sap.ui.define([
|
|
|
692
709
|
* @returns {Promise} Resolves when the app is reloaded.
|
|
693
710
|
*/
|
|
694
711
|
this._reloadCurrentApp = async function (oData) {
|
|
695
|
-
const
|
|
696
|
-
if (
|
|
697
|
-
|
|
698
|
-
const sTmpUrl = oTmpAppContainer.getUrl();
|
|
699
|
-
BlueBoxHandler.removeCapabilities(oTmpAppContainer);
|
|
700
|
-
Storage.removeByContainer(oTmpAppContainer);
|
|
701
|
-
await this._destroyApplication(oData.sAppContainerId, oTmpAppContainer);
|
|
702
|
-
BlueBoxHandler.deleteBlueBoxByUrl(sTmpUrl);
|
|
712
|
+
const oTargetApplicationContainer = ApplicationContainerCache.getById(oData.sAppContainerId);
|
|
713
|
+
if (oTargetApplicationContainer) {
|
|
714
|
+
await this._destroyApplication(oTargetApplicationContainer.getCurrentAppId(), oTargetApplicationContainer);
|
|
703
715
|
}
|
|
704
716
|
|
|
705
717
|
const ShellNavigationInternal = await Container.getServiceAsync("ShellNavigationInternal");
|
|
@@ -713,151 +725,72 @@ sap.ui.define([
|
|
|
713
725
|
/**
|
|
714
726
|
* Opens an application in an application container and sets it as the current application.
|
|
715
727
|
*
|
|
716
|
-
* @param {string}
|
|
728
|
+
* @param {string} sStorageAppId the id of the application.
|
|
717
729
|
* @param {object} oResolvedHashFragment the resolved hash fragment.
|
|
718
|
-
* @param {object}
|
|
730
|
+
* @param {object} bShouldBeCached Wether it should be cached.
|
|
719
731
|
*/
|
|
720
|
-
this.
|
|
721
|
-
|
|
722
|
-
const sStorageAppId = `application-${sAppId}`;
|
|
732
|
+
this._createOrReuseApplicationContainer = function (sStorageAppId, oResolvedHashFragment, bShouldBeCached) {
|
|
733
|
+
let oApplicationContainer;
|
|
723
734
|
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
const bShouldBeCached = !!sKeepAliveMode;
|
|
729
|
-
|
|
730
|
-
if (BlueBoxHandler.isStatefulContainer(oApplicationContainer)) {
|
|
731
|
-
this._openAppInStatefulContainer(sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode, bShouldBeCached);
|
|
732
|
-
return;
|
|
735
|
+
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
736
|
+
// app was kept alive
|
|
737
|
+
if (oStorageEntry && oStorageEntry.container) {
|
|
738
|
+
oApplicationContainer = oStorageEntry.container;
|
|
733
739
|
}
|
|
734
740
|
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
}
|
|
739
|
-
|
|
740
|
-
if (oResolvedHashFragment.applicationType === "TR" || oResolvedHashFragment.appCapabilities?.appFrameworkId === "GUI") {
|
|
741
|
-
await this._deleteSameIdAppContainer(sStorageAppId, sAppId);
|
|
742
|
-
|
|
743
|
-
if (!oApplicationContainer || oApplicationContainer.getStatefulType() !== BlueBoxHandler.STATEFUL_TYPES.GUI_V1) {
|
|
744
|
-
oApplicationContainer = Application.createApplicationContainer(sStorageAppId, oResolvedHashFragment);
|
|
745
|
-
}
|
|
746
|
-
|
|
747
|
-
} else {
|
|
748
|
-
const aSpecialApplicationTypes = [
|
|
749
|
-
"URL",
|
|
750
|
-
"TR",
|
|
751
|
-
"NWBC",
|
|
752
|
-
"WDA"
|
|
753
|
-
];
|
|
754
|
-
|
|
755
|
-
if (!oApplicationContainer || aSpecialApplicationTypes.includes(oResolvedHashFragment.applicationType)) {
|
|
756
|
-
await this._deleteSameIdAppContainer(sStorageAppId, sAppId);
|
|
757
|
-
}
|
|
758
|
-
|
|
759
|
-
if (oApplicationContainer) {
|
|
760
|
-
const oApplicationContainerFromViewPort = this._getApplicationContainerFromViewPort(sAppId);
|
|
741
|
+
// try to find a reusable container
|
|
742
|
+
if (!oApplicationContainer) {
|
|
743
|
+
const oStatefulApplicationContainer = ApplicationContainerCache.findFreeContainerByUrl(oResolvedHashFragment.url);
|
|
761
744
|
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
}
|
|
745
|
+
const bIsReusableContainer = oStatefulApplicationContainer?.getStatefulType() !== StatefulType.NotSupported;
|
|
746
|
+
if (bIsReusableContainer) {
|
|
747
|
+
oApplicationContainer = oStatefulApplicationContainer;
|
|
766
748
|
}
|
|
767
|
-
|
|
768
|
-
oApplicationContainer = Application.createApplicationContainer(sStorageAppId, oResolvedHashFragment);
|
|
769
749
|
}
|
|
770
750
|
|
|
771
|
-
// create
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
if (bShouldBeCached) {
|
|
793
|
-
//this is the case where we have a stateful container and keep alive
|
|
794
|
-
//is cached application
|
|
795
|
-
let oStorageEntry = Storage.get(sStorageAppId);
|
|
796
|
-
if (!oStorageEntry) {
|
|
797
|
-
this._storeApp(sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode);
|
|
798
|
-
oStorageEntry = Storage.get(sStorageAppId);
|
|
799
|
-
}
|
|
800
|
-
|
|
801
|
-
oCurrentApplication = oStorageEntry;
|
|
802
|
-
} else {
|
|
803
|
-
// create application that is not persisted and not cashed
|
|
804
|
-
oCurrentApplication = {
|
|
805
|
-
appId: sStorageAppId,
|
|
806
|
-
stt: "loading",
|
|
807
|
-
container: oApplicationContainer,
|
|
808
|
-
meta: AppConfiguration.getMetadata(oResolvedHashFragment),
|
|
809
|
-
app: undefined
|
|
751
|
+
// create a new container if no reusable container was found
|
|
752
|
+
if (!oApplicationContainer) {
|
|
753
|
+
// Add new ShellUIService instance of the interface to the application container
|
|
754
|
+
// this will only be used by iframe applications
|
|
755
|
+
oResolvedHashFragment.shellUIService = oGlobalShellUIService.getInterface();
|
|
756
|
+
const sTargetUi5ComponentName = oResolvedHashFragment?.ui5ComponentName;
|
|
757
|
+
const bIsUI5App = !!sTargetUi5ComponentName;
|
|
758
|
+
|
|
759
|
+
const oCommonProperties = {
|
|
760
|
+
id: sStorageAppId,
|
|
761
|
+
currentAppId: sStorageAppId,
|
|
762
|
+
currentAppUrl: oResolvedHashFragment.url,
|
|
763
|
+
shellUIService: oResolvedHashFragment.shellUIService,
|
|
764
|
+
currentAppTargetResolution: oResolvedHashFragment,
|
|
765
|
+
applicationType: oResolvedHashFragment.applicationType,
|
|
766
|
+
openWithPostByAppParam: oResolvedHashFragment.openWithPostByAppParam,
|
|
767
|
+
reservedParameters: oResolvedHashFragment.reservedParameters,
|
|
768
|
+
systemAlias: oResolvedHashFragment.systemAlias,
|
|
769
|
+
targetNavigationMode: oResolvedHashFragment.targetNavigationMode,
|
|
770
|
+
url: oResolvedHashFragment.url,
|
|
771
|
+
frameworkId: oResolvedHashFragment.appCapabilities?.appFrameworkId
|
|
810
772
|
};
|
|
811
|
-
}
|
|
812
|
-
};
|
|
813
|
-
|
|
814
|
-
/**
|
|
815
|
-
* Fetches an existing application container from storage or creates this application container and sets it in to the storage.
|
|
816
|
-
*
|
|
817
|
-
* @param {string} sStorageAppId the storage id of the application.
|
|
818
|
-
* @param {string} sAppId the id of the application.
|
|
819
|
-
* @param {object} oResolvedHashFragment the resolved hash fragment.
|
|
820
|
-
* @param {object} oParsedShellHash the parsed shell hash.
|
|
821
|
-
* @param {string} sKeepAliveMode the keep alive mode.
|
|
822
|
-
*/
|
|
823
|
-
this._openAppAndCacheIt = async function (sStorageAppId, sAppId, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode) {
|
|
824
|
-
// is cached application
|
|
825
|
-
let oStorageEntry = Storage.get(sStorageAppId);
|
|
826
|
-
if (!oStorageEntry) {
|
|
827
|
-
let oApplicationContainer = BlueBoxHandler.findFreeContainerForNewKeepAliveApp(oResolvedHashFragment);
|
|
828
773
|
|
|
829
|
-
if (
|
|
830
|
-
|
|
831
|
-
|
|
774
|
+
if (bIsUI5App) {
|
|
775
|
+
oApplicationContainer = new UI5ApplicationContainer({
|
|
776
|
+
...oCommonProperties,
|
|
777
|
+
ui5ComponentName: oResolvedHashFragment.ui5ComponentName
|
|
778
|
+
});
|
|
779
|
+
} else {
|
|
780
|
+
oApplicationContainer = new IframeApplicationContainer({
|
|
781
|
+
...oCommonProperties
|
|
782
|
+
});
|
|
832
783
|
}
|
|
833
784
|
|
|
834
|
-
this.
|
|
835
|
-
|
|
785
|
+
this._initializeApplicationContainer(oApplicationContainer, oResolvedHashFragment);
|
|
786
|
+
} else {
|
|
787
|
+
oApplicationContainer.setProperty("isFetchedFromCache", true, true);
|
|
836
788
|
}
|
|
837
789
|
|
|
838
|
-
|
|
839
|
-
|
|
790
|
+
ApplicationContainerCache.setContainerActive(oApplicationContainer);
|
|
791
|
+
oApplicationContainer.setProperty("isKeepAlive", bShouldBeCached, true);
|
|
840
792
|
|
|
841
|
-
|
|
842
|
-
* There might be two apps with the same Semantic object + Action, from two different servers,
|
|
843
|
-
* so we will need to destroy the first application to avoid duplicate id.
|
|
844
|
-
*
|
|
845
|
-
* The current stateful container mechanism does not support it.
|
|
846
|
-
* Until it is supported, we delete here the blue box and then create the new one.
|
|
847
|
-
* In future BLI, we plan to change the id of the container to be more unique.
|
|
848
|
-
*
|
|
849
|
-
* @param {string} sStorageAppId the storage app id.
|
|
850
|
-
* @param {string} sAppId the app id.
|
|
851
|
-
*/
|
|
852
|
-
this._deleteSameIdAppContainer = async function (sStorageAppId, sAppId) {
|
|
853
|
-
const oTmpAppContainer = BlueBoxHandler.getBlueBoxById(sStorageAppId) || this._getApplicationContainerFromViewPort(sAppId);
|
|
854
|
-
if (oTmpAppContainer) {
|
|
855
|
-
// todo: [FLPCOREANDUX-10024] this destroy/remove can be simplified
|
|
856
|
-
const sTmpUrl = oTmpAppContainer.getUrl();
|
|
857
|
-
BlueBoxHandler.removeCapabilities(oTmpAppContainer);
|
|
858
|
-
await this._destroyApplication(sStorageAppId, oTmpAppContainer, true);
|
|
859
|
-
BlueBoxHandler.deleteBlueBoxByUrl(sTmpUrl);
|
|
860
|
-
}
|
|
793
|
+
return oApplicationContainer;
|
|
861
794
|
};
|
|
862
795
|
|
|
863
796
|
/**
|
|
@@ -877,8 +810,9 @@ sap.ui.define([
|
|
|
877
810
|
|
|
878
811
|
bEnableRouterRetrigger = oData.disable;
|
|
879
812
|
|
|
880
|
-
|
|
881
|
-
|
|
813
|
+
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
814
|
+
if (oStorageEntry) {
|
|
815
|
+
oStorageEntry.enableRouterRetrigger = oData.disable;
|
|
882
816
|
}
|
|
883
817
|
});
|
|
884
818
|
EventHub.on("setApplicationFullWidth").do((oData) => {
|
|
@@ -917,6 +851,8 @@ sap.ui.define([
|
|
|
917
851
|
});
|
|
918
852
|
}
|
|
919
853
|
|
|
854
|
+
this._startPostMessageHandling();
|
|
855
|
+
|
|
920
856
|
ShellUIServiceFactory.init().then(() => {
|
|
921
857
|
ServiceFactoryRegistry.register(
|
|
922
858
|
"sap.ushell.ui5service.ShellUIService",
|
|
@@ -928,116 +864,87 @@ sap.ui.define([
|
|
|
928
864
|
oViewPortContainer = oInViewPortContainer;
|
|
929
865
|
bDisableHomeAppCache = bInDisableHomeAppCache;
|
|
930
866
|
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
}
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
if (oSetup) {
|
|
976
|
-
const bIsSAPLegacyApplicationType = ushellUtils.isSAPLegacyApplicationType(oApplicationContainer.getApplicationType(), oApplicationContainer.getFrameworkId());
|
|
977
|
-
// appruntime supports statefulContainer + keepAlive
|
|
978
|
-
const bIgnoreStateful = oApplicationContainer.getIsKeepAlive() && bIsSAPLegacyApplicationType;
|
|
979
|
-
|
|
980
|
-
if (oSetup.isStateful) {
|
|
981
|
-
if (bIgnoreStateful) {
|
|
982
|
-
// todo: [FLPCOREANDUX-10024] why not NOT_SUPPORTED instead?
|
|
983
|
-
oApplicationContainer.setProperty("statefulType", BlueBoxHandler.STATEFUL_TYPES.FLP_V2_KEEP_ALIVE, true);
|
|
984
|
-
} else {
|
|
985
|
-
aNewCapabilities.push({ service: "sap.ushell.services.AppLifeCycle", action: "create" });
|
|
986
|
-
aNewCapabilities.push({ service: "sap.ushell.services.AppLifeCycle", action: "destroy" });
|
|
987
|
-
oApplicationContainer.setProperty("statefulType", BlueBoxHandler.STATEFUL_TYPES.FLP_V2, true);
|
|
867
|
+
//TODO add unsubscribe
|
|
868
|
+
EventBus.getInstance().subscribe("sap.ushell", "appComponentLoaded", this._onComponentCreated, this);
|
|
869
|
+
EventBus.getInstance().subscribe("sap.ushell", "getAppLifeCycle", this._onGetMe, this);
|
|
870
|
+
|
|
871
|
+
this._addEvents();
|
|
872
|
+
};
|
|
873
|
+
|
|
874
|
+
this._startPostMessageHandling = function () {
|
|
875
|
+
PostMessageManager.init({
|
|
876
|
+
getCurrentApplication: () => {
|
|
877
|
+
return this.getCurrentApplication().container;
|
|
878
|
+
},
|
|
879
|
+
getAllApplications: () => {
|
|
880
|
+
return ApplicationContainerCache.getAll();
|
|
881
|
+
}
|
|
882
|
+
});
|
|
883
|
+
AppRuntimeHandler.register();
|
|
884
|
+
NWBCHandler.register();
|
|
885
|
+
LifecycleHandler.register();
|
|
886
|
+
ServiceHandler.register();
|
|
887
|
+
MessageBrokerHandler.register();
|
|
888
|
+
this._waitForPluginsAndReplayPostMessages();
|
|
889
|
+
|
|
890
|
+
// todo: [FLPCOREANDUX-10024] harmonize with Appruntime
|
|
891
|
+
PostMessagePluginInterface.init(
|
|
892
|
+
true, // bRunsInOuterShell
|
|
893
|
+
(oCommObj) => { // fnAddCommunicationObject
|
|
894
|
+
Object.keys(oCommObj).forEach((sService) => {
|
|
895
|
+
const oServiceDef = oCommObj[sService];
|
|
896
|
+
|
|
897
|
+
if (oServiceDef.oServiceCalls) {
|
|
898
|
+
Object.keys(oServiceDef.oServiceCalls).forEach((sInterface) => {
|
|
899
|
+
const oInterface = oServiceDef.oServiceCalls[sInterface];
|
|
900
|
+
const sServiceRequest = `${sService}.${sInterface}`;
|
|
901
|
+
|
|
902
|
+
if (oInterface.executeServiceCallFn) {
|
|
903
|
+
PostMessageManager.setRequestHandler(
|
|
904
|
+
sServiceRequest,
|
|
905
|
+
async (oMessageBody, oEvent) => {
|
|
906
|
+
const oServiceParams = {
|
|
907
|
+
oMessageData: JSON.parse(oEvent.data),
|
|
908
|
+
oMessage: oEvent
|
|
909
|
+
};
|
|
910
|
+
return ushellUtils.promisify(oInterface.executeServiceCallFn(oServiceParams));
|
|
988
911
|
}
|
|
989
|
-
|
|
990
|
-
if (oSetup.isIframeValid) {
|
|
991
|
-
aNewCapabilities.push({ action: "iframeIsValid", service: "sap.ushell.appRuntime" });
|
|
992
|
-
}
|
|
993
|
-
if (oSetup.session?.bLogoutSupport) {
|
|
994
|
-
aNewCapabilities.push({ action: "logout", service: "sap.ushell.sessionHandler" });
|
|
995
|
-
}
|
|
996
|
-
|
|
997
|
-
// todo: [FLPCOREANDUX-10024] this is a workaround
|
|
998
|
-
const bIsAppruntime = ushellUtils.isSAPLegacyApplicationType(oApplicationContainer.getApplicationType(), oApplicationContainer.getFrameworkId());
|
|
999
|
-
if (bIsAppruntime) {
|
|
1000
|
-
aNewCapabilities.push({ service: "sap.ushell.services.AppLifeCycle", action: "store" });
|
|
1001
|
-
aNewCapabilities.push({ service: "sap.ushell.services.AppLifeCycle", action: "restore" });
|
|
1002
|
-
}
|
|
1003
|
-
|
|
1004
|
-
oApplicationContainer.addBlueBoxCapabilities(aNewCapabilities);
|
|
912
|
+
);
|
|
1005
913
|
}
|
|
1006
|
-
}
|
|
914
|
+
});
|
|
1007
915
|
}
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
appId: oApplicationContainer.getId(),
|
|
1020
|
-
stt: "loading",
|
|
1021
|
-
container: oApplicationContainer,
|
|
1022
|
-
meta: undefined,
|
|
1023
|
-
app: undefined
|
|
1024
|
-
};
|
|
1025
|
-
} else {
|
|
1026
|
-
oApplicationContainer.setProperty("statefulType", BlueBoxHandler.STATEFUL_TYPES.GUI_V1_KEEP_ALIVE, true);
|
|
916
|
+
|
|
917
|
+
if (oServiceDef.oRequestCalls) {
|
|
918
|
+
Object.keys(oServiceDef.oRequestCalls).forEach((sInterface) => {
|
|
919
|
+
const oInterface = oServiceDef.oRequestCalls[sInterface];
|
|
920
|
+
const sServiceRequest = `${sService}.${sInterface}`;
|
|
921
|
+
const oTarget = {};
|
|
922
|
+
|
|
923
|
+
if (deepEqual(oInterface.distributionType, ["all"])) {
|
|
924
|
+
oTarget.ignoreCapabilities = true;
|
|
925
|
+
} else if (oInterface.distributionType) {
|
|
926
|
+
Log.error("Unsupported distribution type", oInterface.distributionType, "sap.ushell.components.applicationIntegration.AppLifeCycle");
|
|
1027
927
|
}
|
|
1028
|
-
|
|
1029
|
-
|
|
928
|
+
|
|
929
|
+
if (oInterface.isActiveOnly) {
|
|
930
|
+
oTarget.activeOnly = true;
|
|
931
|
+
}
|
|
932
|
+
|
|
933
|
+
PostMessageManager.setDistributionPolicy(sServiceRequest, oTarget);
|
|
934
|
+
});
|
|
1030
935
|
}
|
|
1031
|
-
}
|
|
936
|
+
});
|
|
1032
937
|
}
|
|
938
|
+
);
|
|
939
|
+
};
|
|
1033
940
|
|
|
1034
|
-
|
|
941
|
+
this._waitForPluginsAndReplayPostMessages = async function () {
|
|
942
|
+
const PluginManager = await Container.getServiceAsync("PluginManager");
|
|
943
|
+
const oPluginDeferred = PluginManager.getPluginLoadingPromise("RendererExtensions");
|
|
1035
944
|
|
|
1036
|
-
|
|
1037
|
-
EventBus.getInstance().subscribe("sap.ushell", "appComponentLoaded", this._onComponentCreated, this);
|
|
1038
|
-
EventBus.getInstance().subscribe("sap.ushell", "getAppLifeCycle", this._onGetMe, this);
|
|
945
|
+
await ushellUtils.promisify(oPluginDeferred);
|
|
1039
946
|
|
|
1040
|
-
|
|
947
|
+
PostMessageManager.replayStoredMessages();
|
|
1041
948
|
};
|
|
1042
949
|
|
|
1043
950
|
/**
|
|
@@ -1054,14 +961,14 @@ sap.ui.define([
|
|
|
1054
961
|
return;
|
|
1055
962
|
}
|
|
1056
963
|
if (oHashChange.mParameters && oShellNavigationInternal.hashChanger.isInnerAppNavigation(oHashChange.mParameters.newHash, oHashChange.mParameters.oldHash)) {
|
|
1057
|
-
|
|
964
|
+
PostMessageManager.sendRequestToAllApplications("sap.ushell.appRuntime.innerAppRouteChange", {
|
|
1058
965
|
oHash: oHashChange.mParameters
|
|
1059
|
-
});
|
|
966
|
+
}, false);
|
|
1060
967
|
}
|
|
1061
968
|
|
|
1062
|
-
|
|
969
|
+
PostMessageManager.sendRequestToAllApplications("sap.ushell.appRuntime.hashChange", {
|
|
1063
970
|
sHash: oHashChange.mParameters.fullHash
|
|
1064
|
-
});
|
|
971
|
+
}, false);
|
|
1065
972
|
});
|
|
1066
973
|
};
|
|
1067
974
|
|
|
@@ -1075,13 +982,8 @@ sap.ui.define([
|
|
|
1075
982
|
/**
|
|
1076
983
|
* @param {string} sId
|
|
1077
984
|
*/
|
|
1078
|
-
this._removeApplicationContainerFromViewPort = function (
|
|
1079
|
-
|
|
1080
|
-
const bIsStateful = BlueBoxHandler.isStatefulContainer(oBlueBox);
|
|
1081
|
-
|
|
1082
|
-
if (!bIsStateful) {
|
|
1083
|
-
oViewPortContainer.removeCenterViewPort(sId, true);
|
|
1084
|
-
}
|
|
985
|
+
this._removeApplicationContainerFromViewPort = function (oApplicationContainer) {
|
|
986
|
+
oViewPortContainer.removeCenterViewPort(oApplicationContainer.getId(), true);
|
|
1085
987
|
};
|
|
1086
988
|
|
|
1087
989
|
/**
|
|
@@ -1117,12 +1019,6 @@ sap.ui.define([
|
|
|
1117
1019
|
return oCurrentApplication;
|
|
1118
1020
|
};
|
|
1119
1021
|
|
|
1120
|
-
/**
|
|
1121
|
-
*/
|
|
1122
|
-
this.unsetCurrentApplication = function () {
|
|
1123
|
-
oCurrentApplication = {};
|
|
1124
|
-
};
|
|
1125
|
-
|
|
1126
1022
|
/**
|
|
1127
1023
|
* @param {boolean} bIsFull
|
|
1128
1024
|
*/
|
|
@@ -1183,8 +1079,8 @@ sap.ui.define([
|
|
|
1183
1079
|
*
|
|
1184
1080
|
* @private
|
|
1185
1081
|
*/
|
|
1186
|
-
this.
|
|
1187
|
-
|
|
1082
|
+
this._setApplicationContainerActive = function (oTargetApplicationContainer) {
|
|
1083
|
+
ApplicationContainerCache.forEach((oApplicationContainer) => {
|
|
1188
1084
|
if (oApplicationContainer && oApplicationContainer !== oTargetApplicationContainer) {
|
|
1189
1085
|
try {
|
|
1190
1086
|
Log.info(`Deactivating container ${oApplicationContainer.getId()}`);
|
|
@@ -1201,19 +1097,107 @@ sap.ui.define([
|
|
|
1201
1097
|
}
|
|
1202
1098
|
};
|
|
1203
1099
|
|
|
1100
|
+
/**
|
|
1101
|
+
* @param {*} sStorageAppId
|
|
1102
|
+
* @param {*} oApplicationContainer
|
|
1103
|
+
* @param {*} oResolvedHashFragment
|
|
1104
|
+
* @param {*} oParsedShellHash
|
|
1105
|
+
* @param {*} bWasKeptAlive
|
|
1106
|
+
* @returns
|
|
1107
|
+
*/
|
|
1108
|
+
this._openApp = async function (sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, bWasKeptAlive) {
|
|
1109
|
+
const bWasFetchedFromCache = oApplicationContainer.getIsFetchedFromCache();
|
|
1110
|
+
if (bWasKeptAlive && bWasFetchedFromCache && StatefulContainerV2Handler.isStatefulContainerSupportingKeepAlive(oApplicationContainer)) {
|
|
1111
|
+
return StatefulContainerV2Handler.restoreAppWithinSameFrame(
|
|
1112
|
+
oApplicationContainer,
|
|
1113
|
+
oResolvedHashFragment.url,
|
|
1114
|
+
sStorageAppId,
|
|
1115
|
+
oResolvedHashFragment
|
|
1116
|
+
);
|
|
1117
|
+
}
|
|
1118
|
+
|
|
1119
|
+
if (oApplicationContainer.getStatefulType() === StatefulType.ContractV2) {
|
|
1120
|
+
if (bWasFetchedFromCache && oApplicationContainer.getCurrentAppId() === sStorageAppId) {
|
|
1121
|
+
// application is already running within container
|
|
1122
|
+
return;
|
|
1123
|
+
}
|
|
1124
|
+
const oResult = await StatefulContainerV2Handler.createApp(
|
|
1125
|
+
oApplicationContainer,
|
|
1126
|
+
oResolvedHashFragment.url,
|
|
1127
|
+
sStorageAppId,
|
|
1128
|
+
oResolvedHashFragment
|
|
1129
|
+
);
|
|
1130
|
+
if (oResult?.deletedKeepAliveId) {
|
|
1131
|
+
await this._destroyApplication(oResult.deletedKeepAliveId, oApplicationContainer);
|
|
1132
|
+
}
|
|
1133
|
+
return;
|
|
1134
|
+
}
|
|
1135
|
+
|
|
1136
|
+
if (oApplicationContainer.getStatefulType() === StatefulType.ContractV1) {
|
|
1137
|
+
if (bWasFetchedFromCache && oApplicationContainer.getCurrentAppId() === sStorageAppId) {
|
|
1138
|
+
// application is already running within container
|
|
1139
|
+
return;
|
|
1140
|
+
}
|
|
1141
|
+
await StatefulContainerV1Handler.createApp(
|
|
1142
|
+
oApplicationContainer,
|
|
1143
|
+
sStorageAppId,
|
|
1144
|
+
oResolvedHashFragment
|
|
1145
|
+
);
|
|
1146
|
+
return;
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
// for SAPUI5 apps, the application type is still "URL" due to backwards compatibility, but the
|
|
1150
|
+
// NavTargetResolutionInternal service already extracts the component name, so this can directly be used as indicator
|
|
1151
|
+
const sTargetUi5ComponentName = oResolvedHashFragment?.ui5ComponentName;
|
|
1152
|
+
const bIsUI5App = !!sTargetUi5ComponentName;
|
|
1153
|
+
|
|
1154
|
+
if (bIsUI5App && !bWasKeptAlive) { // UI5 Application
|
|
1155
|
+
// happens for direct app start scenario on the abap platform (sap/ushell_abap/bootstrap/evo/boottask)
|
|
1156
|
+
const bComponentLoadedInDirectAppStart = !!oResolvedHashFragment?.componentHandle;
|
|
1157
|
+
if (!bComponentLoadedInDirectAppStart) {
|
|
1158
|
+
AppConfiguration.setApplicationInInitMode();
|
|
1159
|
+
|
|
1160
|
+
await EmbeddedUI5Handler.createApp(oApplicationContainer, oResolvedHashFragment, oParsedShellHash);
|
|
1161
|
+
|
|
1162
|
+
// todo: [FLPCOREANDUX-10024] check whether the issue still persists
|
|
1163
|
+
// the activation of user activity logging must be done after the app component is fully loaded
|
|
1164
|
+
// otherwise the module loading sequence causes race conditions on firefox
|
|
1165
|
+
const bContactSupportEnabled = Config.last("/core/extension/SupportTicket");
|
|
1166
|
+
if (bContactSupportEnabled) {
|
|
1167
|
+
ushellUtils.awaitTimeout(0)
|
|
1168
|
+
.then(() => {
|
|
1169
|
+
return ushellUtils.requireAsync(["sap/ushell/UserActivityLog"]);
|
|
1170
|
+
})
|
|
1171
|
+
.then(([UserActivityLog]) => {
|
|
1172
|
+
UserActivityLog.activate();
|
|
1173
|
+
});
|
|
1174
|
+
}
|
|
1175
|
+
} else {
|
|
1176
|
+
oApplicationContainer.setProperty("componentHandle", oResolvedHashFragment.componentHandle, true);
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
// The trampoline application subsequently gets destroyed after it's used to enable the redirection.
|
|
1180
|
+
const sNavigationRedirectHash = await EmbeddedUI5Handler.getNavigationRedirectHash(oApplicationContainer);
|
|
1181
|
+
if (typeof sNavigationRedirectHash === "string") {
|
|
1182
|
+
await this._destroyApplication(sStorageAppId, oApplicationContainer);
|
|
1183
|
+
return sNavigationRedirectHash;
|
|
1184
|
+
}
|
|
1185
|
+
}
|
|
1186
|
+
};
|
|
1187
|
+
|
|
1204
1188
|
/**
|
|
1205
1189
|
* @param {object} oApplicationContainer
|
|
1206
|
-
* @param {object}
|
|
1190
|
+
* @param {object} oResolvedHashFragment
|
|
1207
1191
|
* @param {function} fnOnAfterRendering
|
|
1208
1192
|
*/
|
|
1209
|
-
this._publishNavigationStateEvents = function (oApplicationContainer,
|
|
1193
|
+
this._publishNavigationStateEvents = function (oApplicationContainer, oResolvedHashFragment, oMetadata) {
|
|
1210
1194
|
//after the app container is rendered, publish an event to notify
|
|
1211
1195
|
//that an app was opened
|
|
1212
1196
|
const sId = oApplicationContainer.getId ? oApplicationContainer.getId() : "";
|
|
1213
|
-
const
|
|
1214
|
-
const
|
|
1215
|
-
const sTitle = appMetaData.title;
|
|
1197
|
+
const sIcon = oMetadata.icon;
|
|
1198
|
+
const sTitle = oMetadata.title;
|
|
1216
1199
|
|
|
1200
|
+
const fnOnAfterRendering = this._onAppAfterRendering.bind(this, oResolvedHashFragment);
|
|
1217
1201
|
//Attach an event handler which will be called onAfterRendering
|
|
1218
1202
|
oApplicationContainer.addEventDelegate({ onAfterRendering: fnOnAfterRendering });
|
|
1219
1203
|
|
|
@@ -1232,7 +1216,7 @@ sap.ui.define([
|
|
|
1232
1216
|
setTimeout(() => {
|
|
1233
1217
|
// TODO: do not mutate an internal structure (in a Timeout!),
|
|
1234
1218
|
// create a new object
|
|
1235
|
-
const oEventData = deepExtend({},
|
|
1219
|
+
const oEventData = deepExtend({}, oResolvedHashFragment);
|
|
1236
1220
|
delete oEventData.componentHandle;
|
|
1237
1221
|
oEventData.appId = sId;
|
|
1238
1222
|
oEventData.usageIcon = sIcon;
|
|
@@ -1244,7 +1228,7 @@ sap.ui.define([
|
|
|
1244
1228
|
// the former code leaked an *internal* data structure, making it part of a public API
|
|
1245
1229
|
// restrict hte public api to the minimal set of precise documented properties which can be retained under
|
|
1246
1230
|
// under future evolutions
|
|
1247
|
-
const oPublicEventData = that._publicEventDataFromResolutionResult(
|
|
1231
|
+
const oPublicEventData = that._publicEventDataFromResolutionResult(oResolvedHashFragment);
|
|
1248
1232
|
//publish the event externally
|
|
1249
1233
|
RendererUtils.publishExternalEvent("appClosed", oPublicEventData);
|
|
1250
1234
|
};
|
|
@@ -1269,91 +1253,15 @@ sap.ui.define([
|
|
|
1269
1253
|
};
|
|
1270
1254
|
|
|
1271
1255
|
/**
|
|
1272
|
-
* @param {
|
|
1273
|
-
* @
|
|
1274
|
-
* @param {boolean} bNavigationFromHome
|
|
1275
|
-
* @param {boolean} bNavigationWithInnerAppRoute
|
|
1276
|
-
* @returns {object}
|
|
1256
|
+
* @param {*} oResolvedHashFragment
|
|
1257
|
+
* @returns
|
|
1277
1258
|
*/
|
|
1278
|
-
this.
|
|
1279
|
-
const sStorageAppId = `application-${sAppId}`;
|
|
1280
|
-
const oAppEntry = Storage.get(sStorageAppId);
|
|
1281
|
-
|
|
1282
|
-
//remove application from cache if has different parameters
|
|
1283
|
-
if (oAppEntry) {
|
|
1284
|
-
//Special case - when we're navigating from homepage to an application with state, when keep-alive
|
|
1285
|
-
//is active. In this case, although keep alive is active we need to destroy the application
|
|
1286
|
-
//ans re-open it.
|
|
1287
|
-
const bNavigatingFromHomeWithInnerAppRoute = bNavigationFromHome && bNavigationWithInnerAppRoute;
|
|
1288
|
-
// todo: [FLPCOREANDUX-10024] Add logging
|
|
1289
|
-
|
|
1290
|
-
const bSameParameters = oAppEntry.shellHash === sShellHash;
|
|
1291
|
-
if (bSameParameters && !bNavigatingFromHomeWithInnerAppRoute) {
|
|
1292
|
-
return {
|
|
1293
|
-
destroyApplication: false,
|
|
1294
|
-
appId: oAppEntry.appId,
|
|
1295
|
-
container: oAppEntry.container
|
|
1296
|
-
};
|
|
1297
|
-
}
|
|
1298
|
-
return {
|
|
1299
|
-
destroyApplication: true,
|
|
1300
|
-
appId: oAppEntry.appId,
|
|
1301
|
-
container: oAppEntry.container
|
|
1302
|
-
};
|
|
1303
|
-
}
|
|
1304
|
-
|
|
1305
|
-
return {
|
|
1306
|
-
destroyApplication: true,
|
|
1307
|
-
appId: undefined,
|
|
1308
|
-
container: undefined
|
|
1309
|
-
};
|
|
1310
|
-
};
|
|
1311
|
-
|
|
1312
|
-
/**
|
|
1313
|
-
* @param {boolean} bNewlyCreatedApplicationContainer
|
|
1314
|
-
* @param {boolean} bShouldBeCached
|
|
1315
|
-
* @param {string} sStorageAppId
|
|
1316
|
-
* @param {object} oApplicationContainer
|
|
1317
|
-
* @param {object} oResolvedHashFragment
|
|
1318
|
-
* @param {string} oParsedShellHash
|
|
1319
|
-
* @param {string} sKeepAliveMode
|
|
1320
|
-
* @param {boolean} bNavigationInSameStatefulContainer
|
|
1321
|
-
* @param {boolean} bReturnedFromKeepAlivePoolFLPV2
|
|
1322
|
-
* @returns {Promise} Resolves when the stateful app was opened.
|
|
1323
|
-
*/ // eslint-disable-next-line max-len
|
|
1324
|
-
this._handleOpenStateful = async function (bNewlyCreatedApplicationContainer, bShouldBeCached, sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode, bNavigationInSameStatefulContainer, bReturnedFromKeepAlivePoolFLPV2) {
|
|
1325
|
-
oApplicationContainer.setProperty("iframeReusedForApp", true, true);
|
|
1326
|
-
try {
|
|
1327
|
-
if (Storage.get(sStorageAppId) && !bNewlyCreatedApplicationContainer && !bReturnedFromKeepAlivePoolFLPV2) {
|
|
1328
|
-
await BlueBoxHandler.statefulRestoreKeepAliveApp(oApplicationContainer, oResolvedHashFragment.url, sStorageAppId, oResolvedHashFragment, bNavigationInSameStatefulContainer);
|
|
1329
|
-
} else {
|
|
1330
|
-
const oResult = await BlueBoxHandler.statefulCreateApp(oApplicationContainer, oResolvedHashFragment.url, sStorageAppId, oResolvedHashFragment, bNavigationInSameStatefulContainer);
|
|
1331
|
-
if (oResult?.deletedKeepAliveId) {
|
|
1332
|
-
Storage.removeById(oResult.deletedKeepAliveId);
|
|
1333
|
-
}
|
|
1334
|
-
|
|
1335
|
-
//creating a new application check if needs to be keep (for the keep alive), and if so store the application
|
|
1336
|
-
if (bShouldBeCached && !Storage.get(sStorageAppId)) {
|
|
1337
|
-
this._storeApp(sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode);
|
|
1338
|
-
}
|
|
1339
|
-
}
|
|
1340
|
-
|
|
1341
|
-
Application.setActiveAppContainer(oApplicationContainer);
|
|
1342
|
-
|
|
1343
|
-
Log.info("New application context opened successfully in an existing transaction UI session.");
|
|
1344
|
-
} catch (vError) {
|
|
1345
|
-
Log.error(vError?.message || vError);
|
|
1346
|
-
// do not bubble up the error
|
|
1347
|
-
}
|
|
1348
|
-
};
|
|
1349
|
-
|
|
1350
|
-
this._isFullWidth = function (oResolvedHashFragment) {
|
|
1259
|
+
this._isFullWidth = function (oResolvedHashFragment, oMetadata) {
|
|
1351
1260
|
let bFullWidth;
|
|
1352
1261
|
const sAppType = this._calculateAppType(oResolvedHashFragment);
|
|
1353
1262
|
const bDefaultFullWidth = ApplicationType.getDefaultFullWidthSetting(sAppType);
|
|
1354
1263
|
|
|
1355
1264
|
const bFullWidthCapability = oResolvedHashFragment.appCapabilities?.fullWidth;
|
|
1356
|
-
const oMetadata = AppConfiguration.getMetadata(oResolvedHashFragment);
|
|
1357
1265
|
//Here there's a double check for the fullwidth - once as a type of boolean and one as a string.
|
|
1358
1266
|
//This is because we found that developers configured this variable in the manifest also as a string,
|
|
1359
1267
|
//so the checks of the oMetadata and the oResolvedHashFragment are to avoid regression with the use of this field.
|
|
@@ -1374,213 +1282,94 @@ sap.ui.define([
|
|
|
1374
1282
|
};
|
|
1375
1283
|
|
|
1376
1284
|
/**
|
|
1377
|
-
*
|
|
1378
|
-
* @param {
|
|
1379
|
-
* @param {
|
|
1380
|
-
* @param {
|
|
1381
|
-
* @param {
|
|
1382
|
-
* @
|
|
1383
|
-
* @returns {Promise} Resolves when the control is handled
|
|
1285
|
+
* @param {*} sAppId
|
|
1286
|
+
* @param {*} oParsedShellHash
|
|
1287
|
+
* @param {*} oResolvedHashFragment
|
|
1288
|
+
* @param {*} bNavigationFromHome
|
|
1289
|
+
* @param {*} bNavigationWithInnerAppRoute
|
|
1290
|
+
* @returns
|
|
1384
1291
|
*/
|
|
1385
|
-
this.
|
|
1386
|
-
let bReturnedFromKeepAlivePoolFLPV2 = false;
|
|
1387
|
-
let bReturnedFromKeepAlivePoolGuiV1 = false;
|
|
1292
|
+
this.createApplication = async function (sAppId, oParsedShellHash, oResolvedHashFragment, bNavigationFromHome, bNavigationWithInnerAppRoute) {
|
|
1388
1293
|
const sStorageAppId = `application-${sAppId}`;
|
|
1389
|
-
let bNewlyCreatedApplicationContainer = false;
|
|
1390
|
-
let bNavigationInSameStatefulContainer = false;
|
|
1391
|
-
let oApplicationContainer,
|
|
1392
|
-
bReuseStatefulContainer,
|
|
1393
|
-
oTargetAppContainer,
|
|
1394
|
-
iLastValidTimeDelta,
|
|
1395
|
-
bKeptAliveApp,
|
|
1396
|
-
oCachedEntry;
|
|
1397
|
-
|
|
1398
|
-
//get the potential target stateful container and check if it's valid. if not, destroy it
|
|
1399
|
-
//before we try to create the new application
|
|
1400
|
-
oTargetAppContainer = BlueBoxHandler.getBlueBoxByUrl(oResolvedHashFragment.url);
|
|
1401
|
-
// todo: [FLPCOREANDUX-10024] DELETES iframe
|
|
1402
|
-
if (BlueBoxHandler.isStatefulContainer(oTargetAppContainer)) {
|
|
1403
|
-
iLastValidTimeDelta = new Date().getTime() - oTargetAppContainer.getIsIframeValidTime().time;
|
|
1404
|
-
if ((BlueBoxHandler.isIframeIsValidSupported(oTargetAppContainer) && iLastValidTimeDelta >= 3500) ||
|
|
1405
|
-
oTargetAppContainer.getIsInvalidIframe()) {
|
|
1406
|
-
const sReason = oTargetAppContainer.getIsInvalidIframe() ? `iframe did not ping in the last '${iLastValidTimeDelta}' ms` : "iframe is in invalid state";
|
|
1407
|
-
Log.warning(
|
|
1408
|
-
`Destroying stateful container iframe due to unresponsiveness (${oTargetAppContainer.getId()})`,
|
|
1409
|
-
`reason: ${sReason}`,
|
|
1410
|
-
"sap.ushell.components.applicationIntegration.AppLifeCycle"
|
|
1411
|
-
);
|
|
1412
1294
|
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
sOldShellHash = undefined;
|
|
1421
|
-
}
|
|
1422
|
-
}
|
|
1295
|
+
await this._cleanupBeforeNewApp(
|
|
1296
|
+
sAppId,
|
|
1297
|
+
oParsedShellHash,
|
|
1298
|
+
oResolvedHashFragment,
|
|
1299
|
+
bNavigationFromHome,
|
|
1300
|
+
bNavigationWithInnerAppRoute
|
|
1301
|
+
);
|
|
1423
1302
|
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
// 2. this is a legacy keep alive app, and we navigate back (this in order to return the container to the pool
|
|
1427
|
-
// of containers to it can be used again for the upcoming opened app)
|
|
1428
|
-
// todo: [FLPCOREANDUX-10024] DELETES more iframe
|
|
1429
|
-
if (!bNavigationFromHome) {
|
|
1430
|
-
const oCurrentAppContainer = this.getCurrentApplication()?.container;
|
|
1431
|
-
bReuseStatefulContainer = BlueBoxHandler.isStatefulContainer(oCurrentAppContainer);
|
|
1432
|
-
// todo [FLPCOREANDUX-10024] why is id required here?
|
|
1433
|
-
const bSourceIsKeepAliveFromPool = oCurrentAppContainer && !!oCurrentAppContainer.getCurrentAppId() && BlueBoxHandler.isStatefulContainerInKeepAlivePool(oCurrentAppContainer);
|
|
1434
|
-
if (bReuseStatefulContainer || bSourceIsKeepAliveFromPool) {
|
|
1435
|
-
await this._handleExitApplication(oCurrentAppContainer, false, false);
|
|
1436
|
-
if (oCurrentAppContainer === oTargetAppContainer) {
|
|
1437
|
-
bNavigationInSameStatefulContainer = true;
|
|
1438
|
-
}
|
|
1439
|
-
}
|
|
1440
|
-
}
|
|
1303
|
+
this._sendFocusBackToShell();
|
|
1304
|
+
this._announceAppOpening(oResolvedHashFragment);
|
|
1441
1305
|
|
|
1442
|
-
//now, we can open the new application
|
|
1443
1306
|
const sKeepAliveMode = this._calculateKeepAliveMode(sStorageAppId, oResolvedHashFragment, oParsedShellHash);
|
|
1444
|
-
const bShouldBeCached =
|
|
1445
|
-
|
|
1446
|
-
oApplicationContainer = BlueBoxHandler.getBlueBoxByUrl(oResolvedHashFragment.url);
|
|
1447
|
-
bReuseStatefulContainer = BlueBoxHandler.isStatefulContainer(oApplicationContainer);
|
|
1448
|
-
// todo: [FLPCOREANDUX-10024] GETTER of innerControl for keep alive / stateful
|
|
1449
|
-
if (!bReuseStatefulContainer) {
|
|
1450
|
-
// only clear oApplicationContainer in case it is not a navigation from an application to the same application
|
|
1451
|
-
if (oCurrentApplication && sStorageAppId !== oCurrentApplication.appId) {
|
|
1452
|
-
oApplicationContainer = undefined;
|
|
1453
|
-
}
|
|
1307
|
+
const bShouldBeCached = sKeepAliveMode !== KEEP_ALIVE_MODES.False;
|
|
1454
1308
|
|
|
1455
|
-
|
|
1456
|
-
oApplicationContainer = oCachedEntry?.container;
|
|
1309
|
+
const oApplicationContainer = this._createOrReuseApplicationContainer(sStorageAppId, oResolvedHashFragment, bShouldBeCached);
|
|
1457
1310
|
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
}
|
|
1461
|
-
}
|
|
1462
|
-
|
|
1463
|
-
// todo: [FLPCOREANDUX-10024] CREATE / SETTER of currentApplication
|
|
1464
|
-
if (bReuseStatefulContainer) {
|
|
1465
|
-
if (!oApplicationContainer) {
|
|
1466
|
-
oApplicationContainer = await this._createApplicationContainer(sAppId, oParsedShellHash, oResolvedHashFragment);
|
|
1311
|
+
// check after cleanup, but before creating the storage entry
|
|
1312
|
+
const bWasKeptAlive = !!KeepAliveApps.get(sStorageAppId);
|
|
1467
1313
|
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
// The immediately following method call internally calls
|
|
1487
|
-
// `this.oViewPortContainer.addCenterViewPort(oApplicationContainer)`
|
|
1488
|
-
// when Gui V1 Stateful Container is true, and in that case
|
|
1489
|
-
// `oApplicationContainer` will be the component control of an existing session.
|
|
1490
|
-
oApplicationContainer = await this._createApplicationContainer(sAppId, oParsedShellHash, oResolvedHashFragment);
|
|
1491
|
-
|
|
1492
|
-
//if we got an iframe from cache, simulate stateful container
|
|
1493
|
-
//open that should happen later here
|
|
1494
|
-
if (oApplicationContainer.getIsFetchedFromCache()) {
|
|
1495
|
-
if (oApplicationContainer.getStatefulType() === BlueBoxHandler.STATEFUL_TYPES.GUI_V1_KEEP_ALIVE) {
|
|
1496
|
-
bReturnedFromKeepAlivePoolGuiV1 = true;
|
|
1497
|
-
} else {
|
|
1498
|
-
bReuseStatefulContainer = true;
|
|
1499
|
-
bReturnedFromKeepAlivePoolFLPV2 = true;
|
|
1500
|
-
}
|
|
1501
|
-
}
|
|
1502
|
-
}
|
|
1503
|
-
|
|
1504
|
-
// todo: [FLPCOREANDUX-10024] rework empty applicationContainer case
|
|
1505
|
-
// fallback?
|
|
1506
|
-
|
|
1507
|
-
await ushellUtils.promisify(oApplicationContainer.getDeffedControlCreation());
|
|
1508
|
-
|
|
1509
|
-
//here, we simply show (turning to visible) the container of the new opened application in case it is not stateful container
|
|
1510
|
-
//and not old gui v1 stateful
|
|
1511
|
-
if (oApplicationContainer.getStatefulType() !== BlueBoxHandler.STATEFUL_TYPES.GUI_V1 && !bReuseStatefulContainer) {
|
|
1512
|
-
if (bKeptAliveApp) {
|
|
1513
|
-
EventBus.getInstance().publish("launchpad", "appOpening", oResolvedHashFragment);
|
|
1514
|
-
}
|
|
1515
|
-
const oStorageEntry = Storage.get(oApplicationContainer.getId());
|
|
1516
|
-
if (oStorageEntry) {
|
|
1517
|
-
oCurrentApplication = oStorageEntry;
|
|
1518
|
-
}
|
|
1519
|
-
|
|
1520
|
-
if (bKeptAliveApp) {
|
|
1521
|
-
EventBus.getInstance().publish("sap.ushell", "appOpened", oResolvedHashFragment);
|
|
1522
|
-
}
|
|
1314
|
+
// Set current application
|
|
1315
|
+
if (bShouldBeCached) {
|
|
1316
|
+
oCurrentApplication = this._addStorageEntry(
|
|
1317
|
+
sStorageAppId,
|
|
1318
|
+
oApplicationContainer,
|
|
1319
|
+
oResolvedHashFragment,
|
|
1320
|
+
oParsedShellHash,
|
|
1321
|
+
sKeepAliveMode
|
|
1322
|
+
);
|
|
1323
|
+
} else {
|
|
1324
|
+
// create application that is not persisted and not cached
|
|
1325
|
+
oCurrentApplication = {
|
|
1326
|
+
appId: sStorageAppId,
|
|
1327
|
+
stt: "loading",
|
|
1328
|
+
container: oApplicationContainer,
|
|
1329
|
+
meta: undefined, // is set after application start
|
|
1330
|
+
app: undefined
|
|
1331
|
+
};
|
|
1523
1332
|
}
|
|
1524
1333
|
|
|
1525
|
-
|
|
1526
|
-
// going to be reused, we prompt the container to load the new application context.
|
|
1527
|
-
|
|
1528
|
-
// SAP GUI is sending post messages for back navigation as soon the create application event is sent to the iframe,
|
|
1529
|
-
// so this makes sure the container is active before sending the event.
|
|
1530
|
-
// For WD applications, the application is active only after the application is created.
|
|
1531
|
-
// So it is not navigated twice.
|
|
1532
|
-
if (oApplicationContainer.getApplicationType() === ApplicationType.TR.type) {
|
|
1533
|
-
this._activeContainer(oApplicationContainer);
|
|
1534
|
-
}
|
|
1334
|
+
ushellUtils.setPerformanceMark("FLP - addAppContainer");
|
|
1535
1335
|
|
|
1536
|
-
|
|
1336
|
+
// restore the app info parameters before activating the application container
|
|
1337
|
+
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
1537
1338
|
if (oStorageEntry) {
|
|
1538
1339
|
AppInfoParameters.restore(oStorageEntry);
|
|
1539
1340
|
} else {
|
|
1540
1341
|
AppInfoParameters.flush();
|
|
1541
1342
|
}
|
|
1542
1343
|
|
|
1344
|
+
// enable the PostMessageAPI for the application
|
|
1345
|
+
this._setApplicationContainerActive(oApplicationContainer);
|
|
1543
1346
|
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
}
|
|
1552
|
-
// eslint-disable-next-line max-len
|
|
1553
|
-
await this._handleOpenStateful(bNewlyCreatedApplicationContainer, bShouldBeCached, sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode, bNavigationInSameStatefulContainer, bReturnedFromKeepAlivePoolFLPV2);
|
|
1347
|
+
const sNavigationRedirectHash = await this._openApp(
|
|
1348
|
+
sStorageAppId,
|
|
1349
|
+
oApplicationContainer,
|
|
1350
|
+
oResolvedHashFragment,
|
|
1351
|
+
oParsedShellHash,
|
|
1352
|
+
bWasKeptAlive
|
|
1353
|
+
);
|
|
1554
1354
|
|
|
1555
|
-
|
|
1556
|
-
//
|
|
1557
|
-
|
|
1355
|
+
if (typeof sNavigationRedirectHash === "string") {
|
|
1356
|
+
// do not add the deleted application to the view port
|
|
1357
|
+
return sNavigationRedirectHash;
|
|
1558
1358
|
}
|
|
1559
1359
|
|
|
1560
|
-
//
|
|
1360
|
+
// todo: [FLPCOREANDUX-10024] fix this
|
|
1361
|
+
// initialize now because the app is required for additional information
|
|
1362
|
+
this._initializeAppWithMetadata(oApplicationContainer, oResolvedHashFragment);
|
|
1363
|
+
|
|
1364
|
+
// todo: [FLPCOREANDUX-10024] fix this
|
|
1365
|
+
// finally add the application container to the view port (triggers render call)
|
|
1366
|
+
// do not add it earlier to prevent the application container
|
|
1367
|
+
// from creating the component before this process is done
|
|
1368
|
+
this._addApplicationContainerToViewPort(oApplicationContainer);
|
|
1561
1369
|
ushellUtils.setPerformanceMark("FLP -- centerViewPort");
|
|
1562
|
-
if (oApplicationContainer.getApplicationType() !== ApplicationType.TR.type) {
|
|
1563
|
-
// Activate container before showing it (start reacting to postMessage calls)
|
|
1564
|
-
this._activeContainer(oApplicationContainer);
|
|
1565
|
-
}
|
|
1566
1370
|
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
* The oCurrentApplication object does not reflect the currently opened application.
|
|
1570
|
-
* This leads to store/restore calls on the wrong application.
|
|
1571
|
-
* Create application that is not persisted and not cashed as a fallback.
|
|
1572
|
-
*
|
|
1573
|
-
* This issue occurs for iframe applications reusing the iframe.
|
|
1574
|
-
*/
|
|
1575
|
-
if (oCurrentApplication.appId !== sStorageAppId) {
|
|
1576
|
-
oCurrentApplication = {
|
|
1577
|
-
appId: sStorageAppId,
|
|
1578
|
-
stt: "loading",
|
|
1579
|
-
container: oApplicationContainer,
|
|
1580
|
-
meta: AppConfiguration.getMetadata(oResolvedHashFragment),
|
|
1581
|
-
app: undefined
|
|
1582
|
-
};
|
|
1583
|
-
}
|
|
1371
|
+
EventBus.getInstance().publish("sap.ushell", "appOpened", oResolvedHashFragment);
|
|
1372
|
+
Log.info("app was opened");
|
|
1584
1373
|
};
|
|
1585
1374
|
|
|
1586
1375
|
/**
|
|
@@ -1611,7 +1400,7 @@ sap.ui.define([
|
|
|
1611
1400
|
*/
|
|
1612
1401
|
this.switchViewState = function (sLaunchpadState, sAppId, sAppType, bIsExplaceNavigation) {
|
|
1613
1402
|
// Store state before creating a new one
|
|
1614
|
-
const oFromStorageEntry =
|
|
1403
|
+
const oFromStorageEntry = KeepAliveApps.get(oCurrentApplication.appId);
|
|
1615
1404
|
if (!oFromStorageEntry) {
|
|
1616
1405
|
// We have to destroy managed queue BEFORE we're applying the pending changes
|
|
1617
1406
|
StateManager.destroyManagedControls();
|
|
@@ -1633,7 +1422,7 @@ sap.ui.define([
|
|
|
1633
1422
|
|
|
1634
1423
|
// Restore state if it already exists
|
|
1635
1424
|
const sToStorageAppId = `application-${sAppId}`;
|
|
1636
|
-
const oToStorageEntry =
|
|
1425
|
+
const oToStorageEntry = KeepAliveApps.get(sToStorageAppId);
|
|
1637
1426
|
if (oToStorageEntry) {
|
|
1638
1427
|
KeepAlive.restore(oToStorageEntry);
|
|
1639
1428
|
} else {
|
|
@@ -1644,13 +1433,6 @@ sap.ui.define([
|
|
|
1644
1433
|
StateManager.applyStalledChanges();
|
|
1645
1434
|
};
|
|
1646
1435
|
|
|
1647
|
-
/**
|
|
1648
|
-
* @param {object} oCommunicationHandler
|
|
1649
|
-
*/
|
|
1650
|
-
this.registerShellCommunicationHandler = function (oCommunicationHandler) {
|
|
1651
|
-
Application.registerShellCommunicationHandler(oCommunicationHandler);
|
|
1652
|
-
};
|
|
1653
|
-
|
|
1654
1436
|
/**
|
|
1655
1437
|
* @returns {boolean} Whether the floating container is docked.
|
|
1656
1438
|
*/
|
|
@@ -1705,48 +1487,24 @@ sap.ui.define([
|
|
|
1705
1487
|
}, 0);
|
|
1706
1488
|
};
|
|
1707
1489
|
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
* @returns {object} The app container.
|
|
1714
|
-
*/
|
|
1715
|
-
this._createApplicationContainer = async function (sAppId, oParsedShellHash, oResolvedHashFragment) {
|
|
1716
|
-
const oMetadata = AppConfiguration.getMetadata(oResolvedHashFragment, oResolvedHashFragment?.sFixedShellHash);
|
|
1717
|
-
const bFullWidth = this._isFullWidth(oResolvedHashFragment);
|
|
1718
|
-
|
|
1719
|
-
/*
|
|
1720
|
-
* The external navigation mode in the resolution result is calculated
|
|
1721
|
-
* statically, and indicates a future state. It currently answers the
|
|
1722
|
-
* question: "is the application going to be opened explace?".
|
|
1723
|
-
*
|
|
1724
|
-
* The target navigation mode, instead, answers the question: "was
|
|
1725
|
-
* the application opened explace?".
|
|
1726
|
-
*
|
|
1727
|
-
* We need to have this logic, because embedded applications do not
|
|
1728
|
-
* check the coldstart condition.
|
|
1729
|
-
*/
|
|
1730
|
-
oResolvedHashFragment.targetNavigationMode = ushellUtils.isColdStart() ? "explace" : "inplace";
|
|
1731
|
-
oResolvedHashFragment.shellUIService = oGlobalShellUIService.getInterface();
|
|
1732
|
-
|
|
1733
|
-
// send focus back to shell for new ApplicationContainers
|
|
1734
|
-
this._sendFocusBackToShell();
|
|
1735
|
-
|
|
1736
|
-
this._announceAppOpening(oResolvedHashFragment);
|
|
1490
|
+
this._initializeApplicationContainer = function (oApplicationContainer, oResolvedHashFragment) {
|
|
1491
|
+
if (ushellUtils.isSAPLegacyApplicationType(oApplicationContainer.getApplicationType(), oApplicationContainer.getFrameworkId())) {
|
|
1492
|
+
oApplicationContainer.addStyleClass("sapUShellApplicationContainerShiftedIframe");
|
|
1493
|
+
}
|
|
1494
|
+
};
|
|
1737
1495
|
|
|
1738
|
-
|
|
1739
|
-
const
|
|
1496
|
+
this._initializeAppWithMetadata = function (oApplicationContainer, oResolvedHashFragment) {
|
|
1497
|
+
const oMetadata = AppConfiguration.getMetadata(oResolvedHashFragment, oResolvedHashFragment?.sFixedShellHash);
|
|
1740
1498
|
|
|
1741
|
-
|
|
1499
|
+
oCurrentApplication.meta = oMetadata;
|
|
1742
1500
|
|
|
1743
|
-
|
|
1744
|
-
|
|
1501
|
+
// ApplicationContainer is newly created
|
|
1502
|
+
if (!oApplicationContainer.getIsFetchedFromCache()) {
|
|
1503
|
+
this._publishNavigationStateEvents(oApplicationContainer, oResolvedHashFragment, oMetadata);
|
|
1745
1504
|
|
|
1746
|
-
|
|
1747
|
-
oApplicationContainer.addStyleClass("sapUShellApplicationContainerShiftedIframe");
|
|
1748
|
-
}
|
|
1505
|
+
oApplicationContainer.toggleStyleClass("sapUshellDefaultBackground", !oMetadata.hideLightBackground);
|
|
1749
1506
|
|
|
1507
|
+
const bFullWidth = this._isFullWidth(oResolvedHashFragment, oMetadata);
|
|
1750
1508
|
if (!bFullWidth) {
|
|
1751
1509
|
oApplicationContainer.addStyleClass("sapUShellApplicationContainerLimitedWidth");
|
|
1752
1510
|
}
|
|
@@ -1760,115 +1518,124 @@ sap.ui.define([
|
|
|
1760
1518
|
oApplicationContainer.removeStyleClass("sapUShellApplicationContainerLimitedWidth");
|
|
1761
1519
|
}
|
|
1762
1520
|
|
|
1763
|
-
oApplicationContainer.toggleStyleClass("sapUshellDefaultBackground", !oMetadata.hideLightBackground);
|
|
1764
|
-
|
|
1765
1521
|
AppMeta._applyContentDensityByPriority();
|
|
1766
|
-
|
|
1767
|
-
// Add inner control for next request
|
|
1768
|
-
this._addApplicationContainerToViewPort(oApplicationContainer);
|
|
1769
1522
|
}
|
|
1770
|
-
|
|
1771
|
-
ushellUtils.setPerformanceMark("FLP - addAppContainer");
|
|
1772
|
-
|
|
1773
|
-
return oApplicationContainer;
|
|
1774
1523
|
};
|
|
1775
1524
|
|
|
1776
1525
|
/**
|
|
1777
|
-
*
|
|
1526
|
+
* - prevent duplicated ids in the viewport container.
|
|
1527
|
+
* - prevent reuse of stateful containers for different servers.
|
|
1528
|
+
* - destroy the keep alive app for certain navigation cases.
|
|
1529
|
+
* - destroy the app if the iframe is invalid/unresponsive.
|
|
1530
|
+
* - exit the current application if it is a stateful container.
|
|
1531
|
+
*
|
|
1532
|
+
* @param {string} sAppId
|
|
1533
|
+
* @param {string} oParsedShellHash
|
|
1778
1534
|
* @param {object} oResolvedHashFragment
|
|
1779
1535
|
* @param {boolean} bNavigationFromHome
|
|
1780
1536
|
* @param {boolean} bNavigationWithInnerAppRoute
|
|
1781
1537
|
*/
|
|
1782
|
-
this.
|
|
1783
|
-
|
|
1784
|
-
|
|
1785
|
-
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
const
|
|
1791
|
-
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
} else if (bComponentLoaded || !sTargetUi5ComponentName) { // non UI5 Application
|
|
1796
|
-
if ((
|
|
1797
|
-
oResolvedHashFragment.applicationType === "URL"
|
|
1798
|
-
|| ushellUtils.isSAPLegacyApplicationType(oResolvedHashFragment.applicationType)
|
|
1799
|
-
)
|
|
1800
|
-
&& oInMemoryApplicationInstance.destroyApplication
|
|
1801
|
-
&& oInMemoryApplicationInstance.appId
|
|
1802
|
-
) {
|
|
1803
|
-
await this._destroyApplication(oInMemoryApplicationInstance.appId, oInMemoryApplicationInstance.container);
|
|
1804
|
-
}
|
|
1538
|
+
this._cleanupBeforeNewApp = async function (sAppId, oParsedShellHash, oResolvedHashFragment, bNavigationFromHome, bNavigationWithInnerAppRoute) {
|
|
1539
|
+
// todo: [FLPCOREANDUX-10024] add staged logging for createApplication including the cleanup similar to CSTR
|
|
1540
|
+
// ====== Exit current iframe app ======
|
|
1541
|
+
/*
|
|
1542
|
+
* for stateful containers, we need to exit/close the current application BEFORE any
|
|
1543
|
+
* navigation in the viewportContainer
|
|
1544
|
+
*/
|
|
1545
|
+
const oCurrentApplicationContainer = this.getCurrentApplication()?.container;
|
|
1546
|
+
const bIsReusableContainer = oCurrentApplicationContainer && oCurrentApplicationContainer.getStatefulType() !== StatefulType.NotSupported;
|
|
1547
|
+
if (bIsReusableContainer) {
|
|
1548
|
+
await this._handleExitApplication(oCurrentApplicationContainer, false);
|
|
1549
|
+
}
|
|
1805
1550
|
|
|
1806
|
-
|
|
1807
|
-
|
|
1808
|
-
|
|
1551
|
+
const sStorageAppId = `application-${sAppId}`;
|
|
1552
|
+
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
1553
|
+
const bTargetAppWasKeptAlive = !!oStorageEntry;
|
|
1554
|
+
// the appId on the storage entry and the appId on the application container might be different.
|
|
1555
|
+
const oStoredApplicationContainer = oStorageEntry?.container;
|
|
1809
1556
|
|
|
1810
|
-
|
|
1811
|
-
|
|
1812
|
-
|
|
1557
|
+
// For SAPUI5 apps, the application type is still "URL" due to backwards compatibility, but the
|
|
1558
|
+
// NavTargetResolutionInternal service already extracts the component name, so this can directly be used as indicator
|
|
1559
|
+
const bIsUI5AppWithoutIframe = !!oResolvedHashFragment?.ui5ComponentName;
|
|
1560
|
+
|
|
1561
|
+
// ====== Handle special navigation scenarios for keep alive apps ======
|
|
1562
|
+
if (bTargetAppWasKeptAlive) {
|
|
1563
|
+
const sNewShellHash = `#${UrlParsing.constructShellHash(oParsedShellHash)}`;
|
|
1564
|
+
const oComparison = UrlParsing.compareHashes(sNewShellHash, oStorageEntry.shellHash);
|
|
1565
|
+
const bSameTarget = oComparison.sameIntent && oComparison.sameParameters;
|
|
1566
|
+
|
|
1567
|
+
// Case: different app
|
|
1568
|
+
if (!bSameTarget) {
|
|
1569
|
+
Log.warning(`The keepAlive app '${sStorageAppId}' has to be destroyed because of id clashes.`);
|
|
1570
|
+
await this._destroyApplication(sStorageAppId, oStoredApplicationContainer);
|
|
1571
|
+
|
|
1572
|
+
// Case: Navigating from homepage to a keepAlive application via deep link (bookmark).
|
|
1573
|
+
// In this case, although keepAlive is active we need to destroy the application and re-open it.
|
|
1574
|
+
} else if (bNavigationFromHome && bNavigationWithInnerAppRoute) {
|
|
1575
|
+
Log.warning(`The keepAlive app '${sStorageAppId}' has to be destroyed because of a bookmark start.`);
|
|
1576
|
+
await this._destroyApplication(sStorageAppId, oStoredApplicationContainer);
|
|
1813
1577
|
}
|
|
1814
1578
|
|
|
1815
|
-
//
|
|
1816
|
-
await this._closeKeepAliveApps((oStorageEntry) => oStorageEntry.ui5ComponentName === oResolvedHashFragment.ui5ComponentName);
|
|
1579
|
+
// => we are navigating to the right keep alive app, so we keep it alive
|
|
1817
1580
|
}
|
|
1818
|
-
};
|
|
1819
1581
|
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
// NavTargetResolutionInternal service already extracts the component name, so this can directly be used as indicator
|
|
1832
|
-
const sTargetUi5ComponentName = oResolvedHashFragment?.ui5ComponentName;
|
|
1833
|
-
const bIsUI5App = !!sTargetUi5ComponentName;
|
|
1834
|
-
const oInMemoryApplicationInstance = this._getInMemoryInstance(sIntent, sShellHash, bNavigationFromHome, bNavigationWithInnerAppRoute);
|
|
1835
|
-
|
|
1836
|
-
// todo: [FLPCOREANDUX-10024] checking on the destroyApplication flag is odd at this point
|
|
1837
|
-
if (bIsUI5App && !bComponentLoaded && oInMemoryApplicationInstance.destroyApplication) { // UI5 Application
|
|
1838
|
-
AppConfiguration.setApplicationInInitMode();
|
|
1839
|
-
|
|
1840
|
-
/*
|
|
1841
|
-
* normal application:
|
|
1842
|
-
* fire the _prior.newUI5ComponentInstantion event before creating the new component instance, so that
|
|
1843
|
-
* the ApplicationContainer can stop the router of the current app (avoid inner-app hash change notifications)
|
|
1844
|
-
* NOTE: this dependency to the ApplicationContainer is not nice, but we need a fast fix now; we should refactor
|
|
1845
|
-
* the ApplicationContainer code, because most of the logic has to be done by the shell controller;
|
|
1846
|
-
* maybe rather introduce a utility module
|
|
1847
|
-
*/
|
|
1848
|
-
EventBus.getInstance().publish("ApplicationContainer", "_prior.newUI5ComponentInstantion",
|
|
1849
|
-
{ name: sTargetUi5ComponentName }
|
|
1850
|
-
);
|
|
1582
|
+
// ====== Ensure that no id clashes occur ======
|
|
1583
|
+
// Get the application container by its control id
|
|
1584
|
+
// This might be different from the appId
|
|
1585
|
+
const oApplicationContainer = this._getApplicationContainerFromViewPort(sAppId);
|
|
1586
|
+
const bMatchesTheKeepAliveApp = oApplicationContainer === oStoredApplicationContainer;
|
|
1587
|
+
|
|
1588
|
+
if (oApplicationContainer && !bMatchesTheKeepAliveApp) { // non kept alive app
|
|
1589
|
+
// Collision with a stateful container
|
|
1590
|
+
if (bIsUI5AppWithoutIframe) {
|
|
1591
|
+
Log.warning(`The app '${oApplicationContainer.getCurrentAppId()}' has to be destroyed because of id clashes.`);
|
|
1592
|
+
await this._destroyApplication(oApplicationContainer.getCurrentAppId(), oApplicationContainer, true); // force destroy
|
|
1851
1593
|
|
|
1852
|
-
|
|
1853
|
-
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1864
|
-
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1870
|
-
|
|
1871
|
-
|
|
1594
|
+
} else if (!ApplicationContainerCache.canBeReused(oApplicationContainer, oResolvedHashFragment.url)) {
|
|
1595
|
+
|
|
1596
|
+
// the application container found via id is from a different server
|
|
1597
|
+
Log.warning(`The app '${oApplicationContainer.getCurrentAppId()}' has to be destroyed because of id clashes.`);
|
|
1598
|
+
await this._destroyApplication(oApplicationContainer.getCurrentAppId(), oApplicationContainer, true); // force destroy
|
|
1599
|
+
}
|
|
1600
|
+
} // else means either no app container found or there is a stateful container with a matching url
|
|
1601
|
+
|
|
1602
|
+
// ====== Ensure that component name clashes are prevented ======
|
|
1603
|
+
if (bIsUI5AppWithoutIframe) {
|
|
1604
|
+
// close all keep alive apps with the same component name (except the current one)
|
|
1605
|
+
// otherwise we have clashes on the component name
|
|
1606
|
+
await this._destroyKeepAliveApps((oStorageEntry) => {
|
|
1607
|
+
return oStorageEntry.appId !== sStorageAppId
|
|
1608
|
+
&& oStorageEntry.ui5ComponentName === oResolvedHashFragment.ui5ComponentName;
|
|
1609
|
+
}, true); // force destroy
|
|
1610
|
+
}
|
|
1611
|
+
|
|
1612
|
+
// ====== Handle invalid iframes ======
|
|
1613
|
+
// get the potential target stateful container and check if it's valid. if not, destroy it
|
|
1614
|
+
// before we try to create the new application within the same stateful container
|
|
1615
|
+
const oPotentialApplicationContainer = ApplicationContainerCache.findFreeContainerByUrl(oResolvedHashFragment.url);
|
|
1616
|
+
if (oPotentialApplicationContainer && oPotentialApplicationContainer.getStatefulType() === StatefulType.ContractV2) {
|
|
1617
|
+
let bIframeInvalid = false;
|
|
1618
|
+
let sReason;
|
|
1619
|
+
if (oPotentialApplicationContainer.getIsInvalidIframe()) {
|
|
1620
|
+
bIframeInvalid = true;
|
|
1621
|
+
sReason = "iframe is in invalid state";
|
|
1622
|
+
|
|
1623
|
+
} else if (StatefulContainerV2Handler.isIframeIsValidSupported(oPotentialApplicationContainer)) {
|
|
1624
|
+
const iLastValidTimeDelta = new Date().getTime() - oPotentialApplicationContainer.getIsIframeValidTime().time;
|
|
1625
|
+
bIframeInvalid = iLastValidTimeDelta >= iValidIframeTimeout;
|
|
1626
|
+
sReason = `iframe did not ping in the last '${iLastValidTimeDelta}' ms`;
|
|
1627
|
+
}
|
|
1628
|
+
|
|
1629
|
+
if (bIframeInvalid) {
|
|
1630
|
+
Log.warning(
|
|
1631
|
+
`Destroying stateful container iframe due to unresponsiveness (${oPotentialApplicationContainer.getId()})`,
|
|
1632
|
+
`reason: ${sReason}`,
|
|
1633
|
+
"sap.ushell.components.applicationIntegration.AppLifeCycle"
|
|
1634
|
+
);
|
|
1635
|
+
|
|
1636
|
+
// not able to exit gracefully, destroy the container directly forcefully
|
|
1637
|
+
return this._destroyApplication(sStorageAppId, oPotentialApplicationContainer, true); // force destroy
|
|
1638
|
+
}
|
|
1872
1639
|
}
|
|
1873
1640
|
};
|
|
1874
1641
|
|
|
@@ -1876,7 +1643,7 @@ sap.ui.define([
|
|
|
1876
1643
|
*
|
|
1877
1644
|
* @param {sap.ui.core.Component} oApplication
|
|
1878
1645
|
*/
|
|
1879
|
-
this.
|
|
1646
|
+
this._onAppAfterRendering = function (oApplication) {
|
|
1880
1647
|
// wrapped in setTimeout since "publish" is not async
|
|
1881
1648
|
window.setTimeout(() => {
|
|
1882
1649
|
EventBus.getInstance().publish("sap.ushell", "appOpened", oApplication);
|
|
@@ -1905,7 +1672,31 @@ sap.ui.define([
|
|
|
1905
1672
|
this.setViewPortContainer = function (oNewViewPortContainer) {
|
|
1906
1673
|
oViewPortContainer = oNewViewPortContainer;
|
|
1907
1674
|
};
|
|
1675
|
+
|
|
1676
|
+
/**
|
|
1677
|
+
* Only for testing
|
|
1678
|
+
*/
|
|
1679
|
+
this.reset = function () {
|
|
1680
|
+
oCurrentApplication = {};
|
|
1681
|
+
KeepAliveApps._clean();
|
|
1682
|
+
ApplicationContainerCache.destroyAllContainers();
|
|
1683
|
+
PostMessageManager.reset();
|
|
1684
|
+
};
|
|
1685
|
+
|
|
1686
|
+
this._setContainerReadyForReuse = function (oApplicationContainer) {
|
|
1687
|
+
if (!oApplicationContainer) {
|
|
1688
|
+
return;
|
|
1689
|
+
}
|
|
1690
|
+
|
|
1691
|
+
ApplicationContainerCache.setContainerReadyForReuse(oApplicationContainer, oApplicationContainer.getCurrentAppUrl());
|
|
1692
|
+
|
|
1693
|
+
oApplicationContainer.setProperty("isKeepAlive", false, true);
|
|
1694
|
+
oApplicationContainer.setProperty("currentAppUrl", "", true);
|
|
1695
|
+
oApplicationContainer.setProperty("isFetchedFromCache", false, true);
|
|
1696
|
+
};
|
|
1908
1697
|
}
|
|
1909
1698
|
|
|
1699
|
+
AppLifeCycle.prototype.KeepAliveMode = KEEP_ALIVE_MODES;
|
|
1700
|
+
|
|
1910
1701
|
return new AppLifeCycle();
|
|
1911
|
-
}
|
|
1702
|
+
});
|