@sapui5/sap.ushell 1.134.1 → 1.135.0
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 +2 -1
- package/src/main/js/sap/ushell/AppInfoParameters.js +29 -6
- package/src/main/js/sap/ushell/ApplicationType/UrlPostProcessing.js +3 -3
- package/src/main/js/sap/ushell/ApplicationType/guiResolution.js +185 -174
- package/src/main/js/sap/ushell/ApplicationType/urlTemplateResolution.js +1 -1
- package/src/main/js/sap/ushell/ApplicationType/wdaResolution.js +69 -61
- package/src/main/js/sap/ushell/EventHub.js +1 -3
- package/src/main/js/sap/ushell/Fiori20Adapter.js +1 -1
- package/src/main/js/sap/ushell/Fiori20AdapterTest.js +1 -1
- package/src/main/js/sap/ushell/NWBCInterface.js +2 -2
- package/src/main/js/sap/ushell/SessionHandler.js +3 -3
- package/src/main/js/sap/ushell/TechnicalParameters.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/DefinitionParameterSetBuilder.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/DependencyGraph.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/Functions.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/Resolvers.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/TemplateParameterParser.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor/utils.js +1 -1
- package/src/main/js/sap/ushell/URLTemplateProcessor.js +1 -1
- package/src/main/js/sap/ushell/Ui5NativeServiceFactory.js +1 -1
- package/src/main/js/sap/ushell/Ui5ServiceFactory.js +1 -1
- package/src/main/js/sap/ushell/User.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/ClientSideTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/CommonDataModelAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/ConfigurationDefaultsAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/ContainerAdapter.js +3 -11
- package/src/main/js/sap/ushell/adapters/cdm/LaunchPageAdapter.js +13 -4
- package/src/main/js/sap/ushell/adapters/cdm/PagesCommonDataModelAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/PersonalizationAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/PersonalizationV2Adapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/Settings/UserLanguageAndRegion/UserLanguageAndRegion.view.xml +4 -2
- package/src/main/js/sap/ushell/adapters/cdm/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/modifyHome.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readCatalogs.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/readHome.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/_LaunchPage/uri.transform.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/util/AppForInbound.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/util/cdmSiteUtils.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/AdapterBase.js +12 -3
- package/src/main/js/sap/ushell/adapters/cdm/v3/FlpLaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/LaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/StaticGroupsAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readApplications.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readCatalogs.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readHome.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readPages.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readUtils.js +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/v3/_LaunchPage/readVisualizations.js +1 -1
- package/src/main/js/sap/ushell/adapters/cep/MenuAdapter.js +11 -5
- package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cep/NavTargetResolutionInternalAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cep/SearchCEPAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/cflp/UserDefaultParameterPersistenceAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/AdapterContainer.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/AppStateAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/ClientSideTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/ContainerAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/FlpLaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/LaunchPageAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/NavTargetResolutionInternalAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/PageBuildingAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/PagePersistenceAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/PersonalizationAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/PersonalizationV2Adapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/SearchAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/SearchCEPAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/SupportTicketAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/UserDefaultParameterPersistenceAdapter.js +1 -1
- package/src/main/js/sap/ushell/adapters/local/UserInfoAdapter.js +1 -1
- package/src/main/js/sap/ushell/api/DWS.js +87 -0
- package/src/main/js/sap/ushell/api/Inbox.js +20 -4
- package/src/main/js/sap/ushell/api/common/ComponentInstantiation.js +36 -36
- package/src/main/js/sap/ushell/appIntegration/AppLifeCycle/KeepAliveMode.js +43 -0
- package/src/main/js/sap/ushell/appIntegration/AppLifeCycle.js +1667 -0
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/ApplicationContainer.js +136 -11
- package/src/main/js/sap/ushell/appIntegration/ApplicationContainerRenderer.js +54 -0
- package/src/main/js/sap/ushell/appIntegration/ApplicationHandle.js +57 -0
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/IframeApplicationContainer.js +102 -15
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/IframeApplicationContainerRenderer.js +26 -20
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/KeepAliveApps.js +1 -1
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/PostMessageManager/AppruntimeHandler.js +7 -5
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/PostMessageManager/LifecycleHandler.js +17 -17
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/PostMessageManager/MessageBrokerHandler.js +1 -1
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/PostMessageManager/NWBCHandler.js +4 -4
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/PostMessageManager/ServiceHandler.js +4 -3
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/PostMessageManager.js +37 -20
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/PostMessagePluginInterface.js +1 -1
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/UI5ApplicationContainer.js +31 -8
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/UI5ApplicationContainerRenderer.js +14 -1
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/contracts/EmbeddedUI5Handler.js +10 -9
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/contracts/StatefulContainerV1Handler.js +6 -19
- package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/contracts/StatefulContainerV2Handler.js +20 -55
- package/src/main/js/sap/ushell/appRuntime/ui5/AppCommunicationMgr.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntime.js +15 -0
- package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/RendererExtensions.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppConfiguration.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycle.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppState.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Bookmark.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/BookmarkV2.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/CommonDataModel.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Container.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/CrossApplicationNavigation.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension/Item.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Extension.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/FlpLaunchPage.js +30 -0
- package/src/main/js/sap/ushell/appRuntime/ui5/services/FrameBoundExtension.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/LaunchPage.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/MessageBroker.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolution.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolutionInternal.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Navigation.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ReferenceResolver.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigation.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigationInternal.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellUIService.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/UserInfo.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/adapters/Ui5ComponentLoaderAdapter.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/logger.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/SchedulingAgent/state.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.configure.ui5datetimeformat.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.create.configcontract.core.js +62 -35
- package/src/main/js/sap/ushell/bootstrap/sandbox2.js +1 -1
- package/src/main/js/sap/ushell/components/HomepageManager.js +1 -0
- package/src/main/js/sap/ushell/components/appfinder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegration/AppLifeCycle.js +6 -1684
- package/src/main/js/sap/ushell/components/applicationIntegration/Storage.js +1 -7
- package/src/main/js/sap/ushell/components/applicationIntegration/application/Application.js +2 -35
- package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxHandler.js +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageAPI.js +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegration/configuration/AppMeta.js +2 -176
- package/src/main/js/sap/ushell/components/applicationIntegration/relatedServices/RelatedServices.js +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/AppLifeCycle.js +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/Application.js +3 -3
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/BlueBoxHandler.js +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/PostMessageAPI.js +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/configuration/AppMeta.js +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/relatedServices/RelatedServices.js +1 -1
- package/src/main/js/sap/ushell/components/container/ApplicationContainer.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/CatalogService.js +12 -6
- package/src/main/js/sap/ushell/components/contentFinder/Component.js +41 -3
- package/src/main/js/sap/ushell/components/contentFinder/controller/AppSearch.controller.js +103 -38
- package/src/main/js/sap/ushell/components/contentFinder/controller/ContentFinderDialog.controller.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/dialog/Component.js +1 -1
- 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/resources/resources.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ar.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_bg.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ca.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_cnr.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_cs.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_cy.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_da.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_de.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_el.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_en.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_en_GB.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_en_US_saprigi.properties +4 -2
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_es.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_es_MX.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_et.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_fi.properties +4 -2
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_fr.properties +4 -2
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_fr_CA.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_hi.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_hr.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_hu.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_id.properties +4 -2
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_it.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_iw.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ja.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_kk.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ko.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_lt.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_lv.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_mk.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ms.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_nl.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_no.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_pl.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_pt.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_pt_PT.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ro.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ru.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sh.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sk.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sl.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sr.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sv.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_th.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_tr.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_uk.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_vi.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_zh_CN.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_zh_TW.properties +3 -1
- package/src/main/js/sap/ushell/components/contentFinder/view/AppSearch.view.xml +6 -0
- package/src/main/js/sap/ushell/components/contentFinder/view/AppSearchCategoryTree.fragment.xml +2 -2
- package/src/main/js/sap/ushell/components/contentFinder/view/AppSearchCategoryTreeTable.fragment.xml +70 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/Component.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinderStandalone/controller/ContentFinderStandalone.controller.js +8 -3
- package/src/main/js/sap/ushell/components/contentFinderStandalone/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ar.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_bg.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ca.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_cnr.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_cs.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_cy.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_da.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_de.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_el.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_en.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_en_GB.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_en_US_saprigi.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_es.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_es_MX.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_et.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_fi.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_fr.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_fr_CA.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_hi.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_hr.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_hu.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_id.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_it.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_iw.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ja.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_kk.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ko.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_lt.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_lv.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_mk.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ms.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_nl.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_no.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_pl.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_pt.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_pt_PT.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ro.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_ru.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_sh.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_sk.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_sl.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_sr.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_sv.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_th.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_tr.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_uk.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_vi.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_zh_CN.properties +3 -0
- package/src/main/js/sap/ushell/components/contentFinderStandalone/resources/resources_zh_TW.properties +3 -0
- package/src/main/js/sap/ushell/components/factsheet/Component.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/ActionMode.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/DashboardContent.view.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/DashboardGroupsBox.js +4 -4
- package/src/main/js/sap/ushell/components/homepage/DashboardUIActions.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/pages/ActionMode.js +1 -1
- package/src/main/js/sap/ushell/components/pages/Component.js +1 -1
- package/src/main/js/sap/ushell/components/pages/MyHomeImport.js +1 -1
- package/src/main/js/sap/ushell/components/pages/controller/PageRuntime.controller.js +3 -3
- package/src/main/js/sap/ushell/components/pages/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/runtimeSwitcher/controller/RuntimeSwitcher.controller.js +1 -1
- package/src/main/js/sap/ushell/components/runtimeSwitcher/manifest.json +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 +9 -8
- package/src/main/js/sap/ushell/components/shell/MenuBar/controller/MenuBar.controller.js +0 -1
- package/src/main/js/sap/ushell/components/shell/MenuBar/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/MenuBar/view/MenuBarPersonalized.view.xml +25 -0
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/Component.js +10 -21
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenu.controller.js +12 -5
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenuButton.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/manifest.json +1 -7
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/view/ContextMenu.fragment.xml +6 -4
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/view/NavigationBarMenu.fragment.xml +76 -0
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/view/NavigationBarMenu.view.xml +6 -65
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/view/NavigationBarMenuButton.view.xml +2 -2
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/view/NavigationBarMenuPopover.fragment.xml +6 -65
- package/src/main/js/sap/ushell/components/shell/Notifications/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/ProductSwitch/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Search/ESearch.js +15 -2
- package/src/main/js/sap/ushell/components/shell/Search/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/FrequentActivityProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/RecentSearchProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SearchCEP/SearchProviders/SearchServiceProvider.js +1 -1
- package/src/main/js/sap/ushell/components/shell/Settings/Component.js +23 -11
- package/src/main/js/sap/ushell/components/shell/Settings/userLanguageRegion/LanguageRegionSelector.controller.js +1 -1
- package/src/main/js/sap/ushell/components/shell/ShellBar/Component.js +114 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/controller/ShellBar.controller.js +248 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/manifest.json +48 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources.properties +11 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_en_US_saprigi.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/view/ShellBar.view.xml +48 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/Component.js +74 -51
- package/src/main/js/sap/ushell/components/shell/SideNavigation/controller/SideNavigation.controller.js +27 -30
- package/src/main/js/sap/ushell/components/shell/SideNavigation/fragment/AllSpaces.fragment.xml +21 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/fragment/Popover.fragment.xml +6 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/manifest.json +5 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/AllSpaces.js +56 -5
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/Favorites.js +24 -9
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/GenericNavigationListProvider.js +46 -67
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/MyHome.js +22 -4
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/NavigationHelper.js +3 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/Spaces.js +187 -160
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/SpacesNavigationListProvider.js +27 -11
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ar.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_bg.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ca.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_cnr.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_cs.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_cy.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_da.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_de.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_el.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_en.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_en_GB.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_en_US_saprigi.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_es.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_es_MX.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_et.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_fi.properties +4 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_fr.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_fr_CA.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_hi.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_hr.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_hu.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_id.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_it.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_iw.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ja.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_kk.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ko.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_lt.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_lv.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_mk.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ms.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_nl.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_no.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_pl.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_pt.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_pt_PT.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ro.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_ru.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sh.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sk.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sl.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sr.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_sv.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_th.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_tr.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_uk.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_vi.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_zh_CN.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/resources/resources_zh_TW.properties +3 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/view/Main.view.xml +21 -6
- package/src/main/js/sap/ushell/components/shell/UserActionsMenu/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/UserImage/Component.js +1 -1
- package/src/main/js/sap/ushell/components/visualizationOrganizer/Component.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/Component.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.accessibility.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.controller.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPage.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageButton.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageCell.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumn.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumnResizer.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageRow.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/resources/resources_fr.properties +1 -1
- package/src/main/js/sap/ushell/components/workPageRuntime/Component.js +1 -1
- package/src/main/js/sap/ushell/components/workPageRuntime/controller/WorkPageRuntime.controller.js +1 -1
- package/src/main/js/sap/ushell/components/workPageRuntime/manifest.json +1 -1
- package/src/main/js/sap/ushell/designtime/ApplicationContainer.designtime.js +1 -1
- package/src/main/js/sap/ushell/library.js +30 -10
- package/src/main/js/sap/ushell/navigationMode.js +1 -1
- package/src/main/js/sap/ushell/performance/ShellAnalytics.js +1 -1
- package/src/main/js/sap/ushell/performance/StatisticalRecord.js +1 -1
- package/src/main/js/sap/ushell/plugins/appwarmup/Component.js +1 -1
- package/src/main/js/sap/ushell/renderer/NavContainer.js +266 -0
- package/src/main/js/sap/ushell/renderer/NavContainerRenderer.js +42 -0
- package/src/main/js/sap/ushell/renderer/Renderer.js +129 -112
- package/src/main/js/sap/ushell/renderer/RendererRootView.fragment.xml +2 -2
- package/src/main/js/sap/ushell/renderer/RendererRootViewFallback.fragment.xml +8 -0
- package/src/main/js/sap/ushell/renderer/Shell.controller.js +119 -60
- package/src/main/js/sap/ushell/renderer/Shell.view.js +78 -26
- package/src/main/js/sap/ushell/renderer/resources/resources.properties +3 -1
- package/src/main/js/sap/ushell/renderer/resources/resources_ar.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_bg.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_ca.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_cnr.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_cs.properties +10 -1
- package/src/main/js/sap/ushell/renderer/resources/resources_cy.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_da.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_de.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_el.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_en.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_en_GB.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_en_US_saprigi.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_es.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_es_MX.properties +10 -1
- package/src/main/js/sap/ushell/renderer/resources/resources_et.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_fi.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_fr.properties +11 -2
- package/src/main/js/sap/ushell/renderer/resources/resources_fr_CA.properties +14 -5
- package/src/main/js/sap/ushell/renderer/resources/resources_hi.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_hr.properties +42 -33
- package/src/main/js/sap/ushell/renderer/resources/resources_hu.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_id.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_it.properties +12 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_iw.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_ja.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_kk.properties +11 -2
- package/src/main/js/sap/ushell/renderer/resources/resources_ko.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_lt.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_lv.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_mk.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_ms.properties +11 -2
- package/src/main/js/sap/ushell/renderer/resources/resources_nl.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_no.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_pl.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_pt.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_pt_PT.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_ro.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_ru.properties +11 -2
- package/src/main/js/sap/ushell/renderer/resources/resources_sh.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_sk.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_sl.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_sr.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_sv.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_th.properties +11 -2
- package/src/main/js/sap/ushell/renderer/resources/resources_tr.properties +11 -2
- package/src/main/js/sap/ushell/renderer/resources/resources_uk.properties +11 -2
- package/src/main/js/sap/ushell/renderer/resources/resources_vi.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_zh_CN.properties +9 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_zh_TW.properties +9 -0
- package/src/main/js/sap/ushell/renderer/search/searchComponent/manifest.json +1 -1
- package/src/main/js/sap/ushell/renderers/fiori2/Shell.view.js +18 -2
- package/src/main/js/sap/ushell/services/AppConfiguration.js +4 -4
- package/src/main/js/sap/ushell/services/AppLifeCycle.js +374 -377
- package/src/main/js/sap/ushell/services/AppState.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 +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundIndex.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/InboundProvider.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/PrelaunchOperations.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Search.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/StagedLogger.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/SystemContext.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/Utils.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/VirtualInbounds.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution/XAppStateProcessing.js +1 -1
- package/src/main/js/sap/ushell/services/ClientSideTargetResolution.js +298 -198
- package/src/main/js/sap/ushell/services/CommonDataModel/SiteConverter.js +1 -1
- package/src/main/js/sap/ushell/services/CommonDataModel/vizTypeDefaults/VizTypeDefaults.js +1 -1
- package/src/main/js/sap/ushell/services/CommonDataModel.js +1 -1
- package/src/main/js/sap/ushell/services/Configuration.js +1 -1
- package/src/main/js/sap/ushell/services/ConfigurationDefaults.js +1 -1
- package/src/main/js/sap/ushell/services/ContentExtensionAdapterFactory.js +1 -1
- package/src/main/js/sap/ushell/services/CrossApplicationNavigation.js +2 -2
- package/src/main/js/sap/ushell/services/DarkModeSupport.js +1 -1
- package/src/main/js/sap/ushell/services/Extension/Item.js +1 -1
- package/src/main/js/sap/ushell/services/Extension.js +1 -1
- package/src/main/js/sap/ushell/services/FlpLaunchPage.js +2 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/FloatingContainer.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/Footer.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/Item.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/SidePane.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/ToolArea.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension/UserSettingsEntry.js +1 -1
- package/src/main/js/sap/ushell/services/FrameBoundExtension.js +1 -1
- package/src/main/js/sap/ushell/services/LaunchPage.js +98 -7
- package/src/main/js/sap/ushell/services/Menu.js +1 -1
- package/src/main/js/sap/ushell/services/Message.js +1 -1
- package/src/main/js/sap/ushell/services/MessageBroker/MessageBrokerEngine.js +5 -5
- package/src/main/js/sap/ushell/services/MessageBroker.js +1 -1
- package/src/main/js/sap/ushell/services/MessageInternal.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 +1 -1
- package/src/main/js/sap/ushell/services/Navigation.js +3 -3
- package/src/main/js/sap/ushell/services/NavigationDataProvider.js +12 -11
- package/src/main/js/sap/ushell/services/PageBuilding.js +1 -1
- package/src/main/js/sap/ushell/services/PagePersistence.js +1 -1
- package/src/main/js/sap/ushell/services/PageReferencing.js +1 -1
- package/src/main/js/sap/ushell/services/Pages.js +1 -1
- package/src/main/js/sap/ushell/services/Personalization.js +1 -1
- package/src/main/js/sap/ushell/services/PersonalizationV2.js +1 -1
- package/src/main/js/sap/ushell/services/PluginManager/Extensions.js +1 -1
- package/src/main/js/sap/ushell/services/PluginManager/HeaderExtensions.js +1 -1
- package/src/main/js/sap/ushell/services/PluginManager/MenuExtensions.js +1 -1
- package/src/main/js/sap/ushell/services/PluginManager/SimpleExpression.js +1 -1
- package/src/main/js/sap/ushell/services/PluginManager.js +81 -63
- package/src/main/js/sap/ushell/services/ReferenceResolver.js +1 -1
- package/src/main/js/sap/ushell/services/Search.js +1 -1
- package/src/main/js/sap/ushell/services/SearchCEP.js +1 -1
- package/src/main/js/sap/ushell/services/SearchableContent.js +1 -1
- package/src/main/js/sap/ushell/services/ShellNavigation.js +1 -1
- package/src/main/js/sap/ushell/services/SmartNavigation.js +1 -1
- package/src/main/js/sap/ushell/services/SpaceContent.js +1 -1
- package/src/main/js/sap/ushell/services/UITracer.js +1 -1
- package/src/main/js/sap/ushell/services/URLShortening.js +1 -1
- package/src/main/js/sap/ushell/services/URLTemplate.js +1 -1
- package/src/main/js/sap/ushell/services/Ui5ComponentLoader.js +687 -272
- package/src/main/js/sap/ushell/services/UserDefaultParameterPersistence.js +1 -1
- package/src/main/js/sap/ushell/services/UserDefaultParameters.js +1 -1
- package/src/main/js/sap/ushell/services/UserInfo.js +1 -1
- package/src/main/js/sap/ushell/services/UserRecents.js +1 -1
- package/src/main/js/sap/ushell/services/VisualizationDataProvider.js +1 -1
- package/src/main/js/sap/ushell/services/VisualizationInstantiation.js +1 -1
- package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/ContentExtensionAdapterConfig.js +1 -1
- package/src/main/js/sap/ushell/services/_ContentExtensionAdapterFactory/FeaturedGroupConfig.js +1 -1
- package/src/main/js/sap/ushell/services/_CrossApplicationNavigation/utils.js +1 -1
- package/src/main/js/sap/ushell/services/_PageReferencing/PageReferencer.js +1 -1
- package/src/main/js/sap/ushell/state/BackNavigation.js +1 -1
- package/src/main/js/sap/ushell/state/ContentDensity.js +213 -0
- package/src/main/js/sap/ushell/state/Favicon.js +119 -0
- package/src/main/js/sap/ushell/state/StateManager.js +1 -0
- package/src/main/js/sap/ushell/state/StrategyFactory/UserActionsStrategy.js +3 -2
- package/src/main/js/sap/ushell/support/plugins/flpConfig/FlpConfigurationPlugin.js +1 -1
- package/src/main/js/sap/ushell/themes/base/ApplicationContainer.less +3 -2
- package/src/main/js/sap/ushell/themes/base/FlexibleColumnLayout.less +10 -0
- package/src/main/js/sap/ushell/themes/base/NavContainer.less +6 -0
- package/src/main/js/sap/ushell/themes/base/ShellHeader.less +8 -8
- package/src/main/js/sap/ushell/themes/base/library.source.less +2 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/ApplicationContainer.less +9 -1
- package/src/main/js/sap/ushell/themes/sap_belize_base/NavContainer.less +6 -0
- package/src/main/js/sap/ushell/themes/sap_belize_base/library.source.less +1 -0
- package/src/main/js/sap/ushell/themes/sap_bluecrystal_base/ApplicationContainer.less +9 -1
- package/src/main/js/sap/ushell/themes/sap_bluecrystal_base/NavContainer.less +6 -0
- package/src/main/js/sap/ushell/themes/sap_bluecrystal_base/library.source.less +1 -0
- package/src/main/js/sap/ushell/themes/sap_hcb/base_ApplicationContainer.less +9 -1
- package/src/main/js/sap/ushell/themes/sap_hcb/base_NavContainer.less +6 -0
- package/src/main/js/sap/ushell/themes/sap_hcb/base_ShellHeader.less +1 -1
- package/src/main/js/sap/ushell/themes/sap_hcb/library.source.less +1 -0
- package/src/main/js/sap/ushell/thirdparty/Icons.js +49 -49
- package/src/main/js/sap/ushell/thirdparty/MenuItem.js +355 -0
- package/src/main/js/sap/ushell/thirdparty/ShellBar.js +1892 -0
- package/src/main/js/sap/ushell/thirdparty/ShellBarItem.js +89 -0
- package/src/main/js/sap/ushell/thirdparty/ShellBarSpacer.js +40 -0
- package/src/main/js/sap/ushell/thirdparty/UserMenu.js +120 -204
- package/src/main/js/sap/ushell/thirdparty/UserMenuAccount.js +10 -0
- package/src/main/js/sap/ushell/thirdparty/UserMenuItem.js +55 -414
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg2.js +16 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs3.js +44 -8
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da3.js +43 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de2.js +16 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi2.js +9 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi3.js +16 -4
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es2.js +16 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr2.js +20 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr3.js +43 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr2.js +21 -6
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr3.js +42 -6
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/{messagebundle_in.js → messagebundle_id.js} +2 -2
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_id2.js +665 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_id3.js +551 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it2.js +33 -18
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it3.js +76 -40
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko3.js +43 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv2.js +26 -11
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk3.js +43 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms2.js +17 -2
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms3.js +42 -6
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl2.js +20 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt2.js +16 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro2.js +16 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru2.js +18 -3
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk2.js +16 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl2.js +16 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl3.js +42 -6
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv2.js +16 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv3.js +43 -7
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk3.js +42 -6
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW2.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW3.js +41 -5
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css10.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css11.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css12.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css13.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css14.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css15.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css16.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css17.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css18.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css19.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css2.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css20.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css21.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css22.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css23.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css24.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css3.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css4.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css5.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css6.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css7.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css8.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css9.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/event-strict.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/i18n-defaults.js +146 -0
- package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css25.js +99 -82
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/dist/MenuItem.js +5 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-base.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/ShellBar.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/ShellBarItem.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/ShellBarSpacer.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/ShellBar.js +138 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/ShellBarItem.js +61 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/ShellBarSpacer.js +46 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/UserMenuAccount.js +5 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori.js +6 -2
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents.js +2 -1
- package/src/main/js/sap/ushell/thirdparty/webcomponents-base.js +8 -8
- package/src/main/js/sap/ushell/thirdparty/webcomponents-fiori.js +2 -2
- package/src/main/js/sap/ushell/thirdparty/webcomponents.js +4 -4
- package/src/main/js/sap/ushell/ui/AppContainer.js +6 -0
- package/src/main/js/sap/ushell/ui/ShellHeader.js +4 -40
- package/src/main/js/sap/ushell/ui/cards/RecentActivitiesExtension.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/AboutDialog.controller.js +28 -27
- package/src/main/js/sap/ushell/ui/footerbar/SaveAsTile.controller.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/ExtendedChangeDetection.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/Section.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceCdm.js +1 -7
- package/src/main/js/sap/ushell/ui/launchpad/section/CompactArea.js +1 -1
- package/src/main/js/sap/ushell/ui/shell/RightFloatingContainer.js +249 -249
- package/src/main/js/sap/ushell/ui/shell/ShellAppTitle.js +35 -3
- package/src/main/js/sap/ushell/ui/shell/ToolAreaItem.js +1 -1
- package/src/main/js/sap/ushell/ui/utils.js +1 -1
- package/src/main/js/sap/ushell/ui5service/ShellUIServiceFactory.js +1 -1
- package/src/main/js/sap/ushell/ui5service/UserStatus.js +1 -1
- package/src/main/js/sap/ushell/utils/RestrictedJSONModel.js +16 -0
- package/src/main/js/sap/ushell/utils/UrlParsing.js +96 -94
- package/src/main/js/sap/ushell/utils/UrlShortening.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 +12 -6
- package/src/main/js/sap/ushell/utils/workpage/WorkPageVizInstantiation.js +1 -1
- package/src/test/js/sap/ushell/bootstrap/sandbox.js +1 -1
- package/ui5.yaml +1 -1
- package/src/main/js/sap/ushell/components/applicationIntegration/ApplicationContainerRenderer.js +0 -35
- package/src/main/js/sap/ushell/components/shell/SideNavigation/view/SideNavigation.view.xml +0 -52
- package/src/main/js/sap/ushell/services/Ui5ComponentLoader/utils.js +0 -375
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_in2.js +0 -266
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_in3.js +0 -143
- /package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/ApplicationContainerCache.js +0 -0
- /package/src/main/js/sap/ushell/{components/applicationIntegration → appIntegration}/PostMessageManager/ExtensionItems.js +0 -0
- /package/src/main/js/sap/ushell/components/shell/MenuBar/view/{MenuBarPersonalization.view.xml → MenuBarWithPersonalizationButton.view.xml} +0 -0
|
@@ -2,98 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* @fileOverview handle all the resources for the different applications.
|
|
5
|
-
* @version 1.
|
|
5
|
+
* @version 1.135.0
|
|
6
6
|
*/
|
|
7
7
|
sap.ui.define([
|
|
8
|
-
"sap/base/util/deepEqual",
|
|
9
8
|
"sap/base/util/ObjectPath",
|
|
10
|
-
"sap/
|
|
11
|
-
"sap/
|
|
12
|
-
"sap/ui/core/EventBus",
|
|
13
|
-
"sap/ushell/components/applicationIntegration/KeepAliveApps",
|
|
14
|
-
"sap/ushell/state/BackNavigation",
|
|
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",
|
|
29
|
-
"sap/ushell/services/AppConfiguration",
|
|
30
|
-
"sap/ushell/utils",
|
|
31
|
-
"sap/ushell/Config",
|
|
32
|
-
"sap/ushell/ApplicationType",
|
|
33
|
-
"sap/base/util/deepExtend",
|
|
34
|
-
"sap/ushell/utils/UriParameters",
|
|
35
|
-
"sap/base/Log",
|
|
36
|
-
"sap/ushell/EventHub",
|
|
37
|
-
"sap/ushell/utils/UrlParsing",
|
|
38
|
-
"sap/ui/thirdparty/hasher",
|
|
39
|
-
"sap/ushell/services/MessageBroker/MessageBrokerEngine",
|
|
40
|
-
"sap/ushell/renderer/utils",
|
|
41
|
-
"sap/m/library",
|
|
42
|
-
"sap/ushell/AppInfoParameters",
|
|
43
|
-
"sap/ushell/Container",
|
|
44
|
-
"sap/ushell/resources",
|
|
45
|
-
"sap/ushell/state/ShellModel",
|
|
46
|
-
"sap/ushell/state/StateManager",
|
|
47
|
-
"sap/ushell/state/KeepAlive",
|
|
48
|
-
"sap/ushell/ui5service/ShellUIServiceFactory",
|
|
49
|
-
"sap/ui/core/service/ServiceFactoryRegistry",
|
|
50
|
-
"sap/ushell/library",
|
|
51
|
-
"sap/ushell/components/applicationIntegrationOld/AppLifeCycle"
|
|
9
|
+
"sap/ushell/components/applicationIntegrationOld/AppLifeCycle",
|
|
10
|
+
"sap/ushell/Config"
|
|
52
11
|
], (
|
|
53
|
-
deepEqual,
|
|
54
12
|
ObjectPath,
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
EventBus,
|
|
58
|
-
KeepAliveApps,
|
|
59
|
-
BackNavigation,
|
|
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,
|
|
74
|
-
AppConfiguration,
|
|
75
|
-
ushellUtils,
|
|
76
|
-
Config,
|
|
77
|
-
ApplicationType,
|
|
78
|
-
deepExtend,
|
|
79
|
-
UriParameters,
|
|
80
|
-
Log,
|
|
81
|
-
EventHub,
|
|
82
|
-
UrlParsing,
|
|
83
|
-
hasher,
|
|
84
|
-
MessageBrokerEngine,
|
|
85
|
-
RendererUtils,
|
|
86
|
-
mobileLibrary,
|
|
87
|
-
AppInfoParameters,
|
|
88
|
-
Container,
|
|
89
|
-
ushellResources,
|
|
90
|
-
ShellModel,
|
|
91
|
-
StateManager,
|
|
92
|
-
KeepAlive,
|
|
93
|
-
ShellUIServiceFactory,
|
|
94
|
-
ServiceFactoryRegistry,
|
|
95
|
-
ushellLibrary,
|
|
96
|
-
AppLifeCycleFallback
|
|
13
|
+
AppLifeCycleFallback,
|
|
14
|
+
Config
|
|
97
15
|
) => {
|
|
98
16
|
"use strict";
|
|
99
17
|
|
|
@@ -102,1601 +20,5 @@ sap.ui.define([
|
|
|
102
20
|
return AppLifeCycleFallback;
|
|
103
21
|
}
|
|
104
22
|
|
|
105
|
-
|
|
106
|
-
const StatefulType = ushellLibrary.components.applicationIntegration.contracts.StatefulType;
|
|
107
|
-
|
|
108
|
-
// shortcut for sap.ushell.state.StateManager.ShellMode
|
|
109
|
-
const ShellMode = StateManager.ShellMode;
|
|
110
|
-
|
|
111
|
-
// shortcut for sap.ushell.state.StateManager.LaunchpadState
|
|
112
|
-
const LaunchpadState = StateManager.LaunchpadState;
|
|
113
|
-
|
|
114
|
-
// shortcut for sap.ushell.state.StateManager.Operation
|
|
115
|
-
const Operation = StateManager.Operation;
|
|
116
|
-
|
|
117
|
-
// shortcut for sap.m.URLHelper
|
|
118
|
-
const URLHelper = mobileLibrary.URLHelper;
|
|
119
|
-
|
|
120
|
-
// todo: [FLPCOREANDUX-10024] cleanup
|
|
121
|
-
// const CACHED_APP_TYPES = ["URL"];
|
|
122
|
-
|
|
123
|
-
const KEEP_ALIVE_MODES = {
|
|
124
|
-
True: "true",
|
|
125
|
-
Restricted: "restricted",
|
|
126
|
-
False: ""
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
const iValidIframeTimeout = 3500;
|
|
130
|
-
|
|
131
|
-
function AppLifeCycle () {
|
|
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.
|
|
133
|
-
let bDisableHomeAppCache = false;
|
|
134
|
-
let bEnableRouterRetrigger = true;
|
|
135
|
-
let oCurrentApplication = {};
|
|
136
|
-
const oComponentCreatedPromises = {};
|
|
137
|
-
let oGlobalShellUIService,
|
|
138
|
-
fnOldTriggerEmail,
|
|
139
|
-
oViewPortContainer;
|
|
140
|
-
|
|
141
|
-
//connect FLP to the message broker
|
|
142
|
-
if (window.QUnit === undefined) {
|
|
143
|
-
MessageBrokerEngine.connect("FLP");
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Sets the componentCreated promise for a given appId if it does not exist yet.
|
|
148
|
-
* Returns the promise along with the resolve and reject functions.
|
|
149
|
-
* @private
|
|
150
|
-
* @since 1.125.0
|
|
151
|
-
* @param {string} sStorageAppId The id of the created application.
|
|
152
|
-
* @returns {{
|
|
153
|
-
* promise: Promise,
|
|
154
|
-
* resolve: function,
|
|
155
|
-
* reject: function
|
|
156
|
-
* }} An object containing the promise and the resolve and reject functions.
|
|
157
|
-
*/
|
|
158
|
-
this._setComponentCreatedPromise = function (sStorageAppId) {
|
|
159
|
-
if (!oComponentCreatedPromises[sStorageAppId]) {
|
|
160
|
-
oComponentCreatedPromises[sStorageAppId] = {};
|
|
161
|
-
oComponentCreatedPromises[sStorageAppId].promise = new Promise((resolve, reject) => {
|
|
162
|
-
oComponentCreatedPromises[sStorageAppId].resolve = resolve;
|
|
163
|
-
oComponentCreatedPromises[sStorageAppId].reject = reject;
|
|
164
|
-
});
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
return oComponentCreatedPromises[sStorageAppId];
|
|
168
|
-
};
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Resolves the componentCreated promise for the given appId. If the promise does not yet exist, it is created.
|
|
172
|
-
* @param {string} sStorageAppId The id of the created application.
|
|
173
|
-
* @private
|
|
174
|
-
* @since 1.125.0
|
|
175
|
-
*/
|
|
176
|
-
this._resolveComponentCreatedPromise = function (sStorageAppId) {
|
|
177
|
-
if (!sStorageAppId) {
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
this._setComponentCreatedPromise(sStorageAppId).resolve();
|
|
181
|
-
};
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* Returns the componentCreated promise for the given appId. If the promise does not yet exist, it is created.
|
|
185
|
-
* @param {string} sStorageAppId The id of the created application.
|
|
186
|
-
* @returns {Promise} The componentCreated promise for the given appId.
|
|
187
|
-
* @private
|
|
188
|
-
* @since 1.125.0
|
|
189
|
-
*/
|
|
190
|
-
this._getComponentCreatedPromise = async function (sStorageAppId) {
|
|
191
|
-
if (!sStorageAppId) {
|
|
192
|
-
return;
|
|
193
|
-
}
|
|
194
|
-
return this._setComponentCreatedPromise(sStorageAppId).promise;
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
/**
|
|
198
|
-
* @param {string} sId Id of the control might end with "-component"
|
|
199
|
-
* @returns {string} Returns the normalized appId
|
|
200
|
-
*/
|
|
201
|
-
this._normalizeAppId = function (sId) {
|
|
202
|
-
const sCmp = "-component";
|
|
203
|
-
const isCmp = sId.endsWith(sCmp);
|
|
204
|
-
|
|
205
|
-
if (isCmp) {
|
|
206
|
-
return sId.substring(0, sId.length - sCmp.length);
|
|
207
|
-
}
|
|
208
|
-
return sId;
|
|
209
|
-
};
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* @param {object} oEvent
|
|
213
|
-
* @param {string} sChannel
|
|
214
|
-
* @param {object} oData
|
|
215
|
-
*/
|
|
216
|
-
this._onComponentCreated = function (oEvent, sChannel, oData) {
|
|
217
|
-
const oAppComponent = oData.component;
|
|
218
|
-
const sStorageAppId = this._normalizeAppId(oAppComponent.getId());
|
|
219
|
-
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
220
|
-
|
|
221
|
-
if (oStorageEntry) {
|
|
222
|
-
oStorageEntry.app = oAppComponent;
|
|
223
|
-
} else {
|
|
224
|
-
oCurrentApplication.app = oAppComponent;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
if (oAppComponent.active) {
|
|
228
|
-
oAppComponent.active();
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
this._resolveComponentCreatedPromise(sStorageAppId);
|
|
232
|
-
};
|
|
233
|
-
|
|
234
|
-
/**
|
|
235
|
-
* @param {object} oEvent
|
|
236
|
-
* @param {string} sChannel
|
|
237
|
-
* @param {object} oData
|
|
238
|
-
*/
|
|
239
|
-
this._onGetMe = function (oEvent, sChannel, oData) {
|
|
240
|
-
oData.AppLifeCycle = this;
|
|
241
|
-
};
|
|
242
|
-
|
|
243
|
-
/**
|
|
244
|
-
* @param {string} sStorageAppId
|
|
245
|
-
*/
|
|
246
|
-
this._storeApplication = async function (sStorageAppId) {
|
|
247
|
-
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
248
|
-
|
|
249
|
-
if (oStorageEntry) {
|
|
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
|
|
281
|
-
oStorageEntry.stateStored = true;
|
|
282
|
-
|
|
283
|
-
// todo: [FLPCOREANDUX-10024] clarify how to handle appClosed events
|
|
284
|
-
EventBus.getInstance().publish("sap.ushell", "appClosed", oApplicationContainer);
|
|
285
|
-
}
|
|
286
|
-
};
|
|
287
|
-
|
|
288
|
-
/**
|
|
289
|
-
* Should remove their foot print and prepare for possible reuse.
|
|
290
|
-
* @param {string} sStorageAppId
|
|
291
|
-
* @param {object} oApplicationContainer
|
|
292
|
-
* @param {boolean} [bIgnoreReuse=false]
|
|
293
|
-
* @returns {Promise} Resolves when the app is destroyed.
|
|
294
|
-
*/
|
|
295
|
-
this._destroyApplication = async function (sStorageAppId, oApplicationContainer, bIgnoreReuse) {
|
|
296
|
-
if (typeof sStorageAppId !== "string" || !oApplicationContainer) {
|
|
297
|
-
return;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
if (!oApplicationContainer.getCurrentAppId() && !bIgnoreReuse) {
|
|
301
|
-
// no active app in the container, only destroy this app if it shall not be reused.
|
|
302
|
-
return;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
306
|
-
|
|
307
|
-
KeepAliveApps.removeById(sStorageAppId);
|
|
308
|
-
KeepAlive.destroy(oStorageEntry);
|
|
309
|
-
|
|
310
|
-
// ===============================================================================
|
|
311
|
-
// try to reuse the iframe
|
|
312
|
-
|
|
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);
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
// todo: [FLPCOREANDUX-10024] clarify how to handle appClosed events
|
|
328
|
-
EventBus.getInstance().publish("sap.ushell", "appClosed", oApplicationContainer);
|
|
329
|
-
return;
|
|
330
|
-
}
|
|
331
|
-
|
|
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);
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
// remove all other related apps from the storage
|
|
344
|
-
KeepAliveApps.removeByContainer(oApplicationContainer, (oStorageEntry) => {
|
|
345
|
-
KeepAlive.destroy(oStorageEntry);
|
|
346
|
-
});
|
|
347
|
-
|
|
348
|
-
/**
|
|
349
|
-
* If the application running in an iframe registered for "before close" event,
|
|
350
|
-
* we first post it a message to prepare for closing (usually, the app will close
|
|
351
|
-
* its session or release locks held on the server), and only when the iframe send a response
|
|
352
|
-
* back that it finished processing the event, we will continue to destroy the app (iframe).
|
|
353
|
-
* If the app in the iframe did not register to the event, we destroy the app immediately exactly
|
|
354
|
-
* as it was done before.
|
|
355
|
-
* Note that even if the response from the iframe is not successful, we still destroy the app
|
|
356
|
-
* because the second app that we navigated to was already created so we can not stop
|
|
357
|
-
* the actual navigation (this is the same behaviour that we had before).
|
|
358
|
-
* This mechanism was added to solve the change made in Chrome to disallow Sync XHR on
|
|
359
|
-
* browser close.
|
|
360
|
-
*/
|
|
361
|
-
try {
|
|
362
|
-
const oThenable = oApplicationContainer.sendBeforeAppCloseEvent();
|
|
363
|
-
await ushellUtils.promisify(oThenable);
|
|
364
|
-
} catch (sError) {
|
|
365
|
-
Log.error(
|
|
366
|
-
"FLP got a failed response from the iframe for the 'sap.ushell.services.CrossApplicationNavigation.beforeAppCloseEvent' message sent",
|
|
367
|
-
sError,
|
|
368
|
-
"sap.ushell.components.applicationIntegration.AppLifeCycle.js"
|
|
369
|
-
);
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
ApplicationContainerCache.removeByContainer(oApplicationContainer);
|
|
373
|
-
this._removeApplicationContainerFromViewPort(oApplicationContainer);
|
|
374
|
-
|
|
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
|
-
}
|
|
384
|
-
};
|
|
385
|
-
|
|
386
|
-
/**
|
|
387
|
-
* @param {string} sStorageAppId
|
|
388
|
-
*/
|
|
389
|
-
this._restoreApplication = async function (sStorageAppId) {
|
|
390
|
-
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
391
|
-
|
|
392
|
-
if (oStorageEntry?.stateStored) {
|
|
393
|
-
// 1) Extensions
|
|
394
|
-
BackNavigation.restore(oStorageEntry.service);
|
|
395
|
-
AppMeta.restore(oStorageEntry.meta);
|
|
396
|
-
|
|
397
|
-
// 2) Extension API
|
|
398
|
-
ShellUIServiceFactory.restore(oStorageEntry);
|
|
399
|
-
|
|
400
|
-
// 3) Application
|
|
401
|
-
const oApplicationContainer = oStorageEntry.container;
|
|
402
|
-
if (oApplicationContainer.isA("sap.ushell.components.applicationIntegration.IframeApplicationContainer")) {
|
|
403
|
-
await oApplicationContainer.sendRequest("sap.ushell.appRuntime.keepAliveAppShow", {}, false);
|
|
404
|
-
|
|
405
|
-
} else if (oApplicationContainer.isA("sap.ushell.components.applicationIntegration.UI5ApplicationContainer")) {
|
|
406
|
-
await EmbeddedUI5Handler.restoreAppAfterNavigate(oApplicationContainer, oStorageEntry);
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
};
|
|
410
|
-
|
|
411
|
-
/**
|
|
412
|
-
* @param {object} oOldApplicationContainer
|
|
413
|
-
* @param {boolean} bNavigationToFlpComponent
|
|
414
|
-
* @returns {Promise} Resolves when the app is closed.
|
|
415
|
-
*/
|
|
416
|
-
this._handleExitApplication = async function (oOldApplicationContainer, bNavigationToFlpComponent) {
|
|
417
|
-
if (!oOldApplicationContainer) {
|
|
418
|
-
return;
|
|
419
|
-
}
|
|
420
|
-
|
|
421
|
-
const sOldStorageAppId = oOldApplicationContainer.getCurrentAppId();
|
|
422
|
-
if (!sOldStorageAppId) {
|
|
423
|
-
// no active app in the container
|
|
424
|
-
return;
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
const bNavigationBackToApp = BackNavigation.isBackNavigation() && !bNavigationToFlpComponent;
|
|
428
|
-
|
|
429
|
-
// Back Navigation Case
|
|
430
|
-
if (bNavigationBackToApp) {
|
|
431
|
-
await this._destroyApplication(sOldStorageAppId, oOldApplicationContainer); // todo: [FLPCOREANDUX-10024] new marker
|
|
432
|
-
|
|
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")) {
|
|
438
|
-
// Wait until navigation's source app has been started completely, so that a later back navigation finds a proper app that
|
|
439
|
-
// can be re-enabled (keep-alive scenario)
|
|
440
|
-
await this._getComponentCreatedPromise(sOldStorageAppId);
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
if (oOldApplicationContainer.getIsKeepAlive()) {
|
|
444
|
-
return this._storeApplication(sOldStorageAppId);
|
|
445
|
-
}
|
|
446
|
-
return this._destroyApplication(sOldStorageAppId, oOldApplicationContainer);
|
|
447
|
-
}
|
|
448
|
-
};
|
|
449
|
-
|
|
450
|
-
/**
|
|
451
|
-
* @param {function(): boolean} fnFilterApps The filter function
|
|
452
|
-
* @param {boolean} [bIgnoreReuse=false]
|
|
453
|
-
* @returns {Promise} Resolves when all keep alive apps are closed.
|
|
454
|
-
*/
|
|
455
|
-
this._destroyKeepAliveApps = async function (fnFilterApps, bIgnoreReuse) {
|
|
456
|
-
try {
|
|
457
|
-
const aFilteredApps = [];
|
|
458
|
-
|
|
459
|
-
KeepAliveApps.forEach((oStorageEntry) => {
|
|
460
|
-
if (fnFilterApps(oStorageEntry)) {
|
|
461
|
-
aFilteredApps.push(oStorageEntry);
|
|
462
|
-
}
|
|
463
|
-
});
|
|
464
|
-
const aClosePromises = aFilteredApps.map((oFilteredApp) => {
|
|
465
|
-
return this._destroyApplication(oFilteredApp.appId, oFilteredApp.container, bIgnoreReuse);
|
|
466
|
-
});
|
|
467
|
-
|
|
468
|
-
await Promise.allSettled(aClosePromises);
|
|
469
|
-
} catch (e) {
|
|
470
|
-
Log.error("_destroyKeepAliveApps call failed", e);
|
|
471
|
-
}
|
|
472
|
-
};
|
|
473
|
-
|
|
474
|
-
/**
|
|
475
|
-
* @param {string} sFromId
|
|
476
|
-
* @param {object} oFrom
|
|
477
|
-
*/
|
|
478
|
-
this.onBeforeNavigate = function (sFromId, oFrom) {
|
|
479
|
-
if (sFromId && oFrom && oFrom.isA("sap.ushell.components.applicationIntegration.ApplicationContainer")) {
|
|
480
|
-
const sStorageAppId = sFromId;
|
|
481
|
-
const oApplicationContainer = oFrom;
|
|
482
|
-
|
|
483
|
-
const bHasIframe = !!oApplicationContainer.isA("sap.ushell.components.applicationIntegration.IframeApplicationContainer"); // todo: [FLPCOREANDUX-10024] is this really required?
|
|
484
|
-
const bIsSupportedType = oApplicationContainer.getStatefulType() > StatefulType.NotSupported;
|
|
485
|
-
|
|
486
|
-
const bCached = !!KeepAliveApps.get(sStorageAppId);
|
|
487
|
-
const bSessionHandlingSupported = bHasIframe && bIsSupportedType;
|
|
488
|
-
|
|
489
|
-
if (bHasIframe && (bCached || bSessionHandlingSupported)) {
|
|
490
|
-
oApplicationContainer.sendRequest("sap.ushell.sessionHandler.beforeApplicationHide", {}, false);
|
|
491
|
-
}
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
};
|
|
495
|
-
|
|
496
|
-
/**
|
|
497
|
-
* @param {string} sFromId
|
|
498
|
-
* @param {object} oFrom
|
|
499
|
-
* @param {string} sToId
|
|
500
|
-
* @param {object} oTo
|
|
501
|
-
*/
|
|
502
|
-
this.onAfterNavigate = async function (sFromId, oFrom, sToId, oTo) { //call lifecycle interface "setInitialConfiguration"
|
|
503
|
-
if (!sToId) {
|
|
504
|
-
sToId = "";
|
|
505
|
-
}
|
|
506
|
-
if (!sFromId) {
|
|
507
|
-
sFromId = "";
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
const aFlpComponentIds = [
|
|
511
|
-
"Shell-appfinder-component",
|
|
512
|
-
"Shell-home-component",
|
|
513
|
-
"pages-component-container",
|
|
514
|
-
"homeApp-component-container",
|
|
515
|
-
"workPageRuntime-component-container",
|
|
516
|
-
"runtimeSwitcher-component-container"
|
|
517
|
-
];
|
|
518
|
-
|
|
519
|
-
const bNavigationToFlpComponent = aFlpComponentIds.some((sFlpComponentId) => sToId.includes(sFlpComponentId));
|
|
520
|
-
|
|
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
|
-
}
|
|
535
|
-
|
|
536
|
-
if (KeepAliveApps.get(sStorageAppId)) {
|
|
537
|
-
await this._restoreApplication(sStorageAppId);
|
|
538
|
-
}
|
|
539
|
-
|
|
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
|
-
}
|
|
546
|
-
|
|
547
|
-
// Clear custom About Dialog parameters
|
|
548
|
-
AppInfoParameters.flush();
|
|
549
|
-
}
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
if (sFromId && oFrom) {
|
|
553
|
-
// ==== Navigation from app to [any] ====
|
|
554
|
-
if (oFrom.isA("sap.ushell.components.applicationIntegration.ApplicationContainer")) {
|
|
555
|
-
const oApplicationContainer = oFrom;
|
|
556
|
-
|
|
557
|
-
await this._handleExitApplication(oApplicationContainer, bNavigationToFlpComponent);
|
|
558
|
-
|
|
559
|
-
// ==== Navigation from renderer managed component to [any] ====
|
|
560
|
-
} else {
|
|
561
|
-
const sFromControlId = sFromId;
|
|
562
|
-
const oFromControl = oFrom;
|
|
563
|
-
|
|
564
|
-
// handle the case of appFinder
|
|
565
|
-
if (sToId.indexOf("Shell-appfinder-component") > 0) {
|
|
566
|
-
EventBus.getInstance().publish("sap.ushell", "appFinderAfterNavigate");
|
|
567
|
-
}
|
|
568
|
-
|
|
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
|
-
}
|
|
577
|
-
}
|
|
578
|
-
}
|
|
579
|
-
};
|
|
580
|
-
|
|
581
|
-
/**
|
|
582
|
-
* @param {string} sStorageAppId
|
|
583
|
-
* @param {object} oApplicationContainer
|
|
584
|
-
* @param {object} oResolvedHashFragment
|
|
585
|
-
* @param {string} oParsedShellHash
|
|
586
|
-
* @param {string} sKeepAliveMode
|
|
587
|
-
* @returns {object} Returns the storage entry.
|
|
588
|
-
*/
|
|
589
|
-
this._addStorageEntry = function (sStorageAppId, oApplicationContainer, oResolvedHashFragment, oParsedShellHash, sKeepAliveMode) {
|
|
590
|
-
const oOldStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
591
|
-
if (oOldStorageEntry) {
|
|
592
|
-
return oOldStorageEntry;
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
const oNewStorageEntry = {
|
|
596
|
-
service: {},
|
|
597
|
-
shellHash: `#${UrlParsing.constructShellHash(oParsedShellHash)}`,
|
|
598
|
-
appId: sStorageAppId,
|
|
599
|
-
stt: "loading",
|
|
600
|
-
currentState: null, // current state is stored before close see: sap/ushell/state/CurrentState
|
|
601
|
-
controlManager: null, // control manager state is stored before close see: sap/ushell/state/ControlManager
|
|
602
|
-
container: oApplicationContainer,
|
|
603
|
-
meta: undefined, // is set after application start
|
|
604
|
-
app: undefined,
|
|
605
|
-
keepAliveMode: sKeepAliveMode,
|
|
606
|
-
appTarget: oResolvedHashFragment,
|
|
607
|
-
ui5ComponentName: oResolvedHashFragment.ui5ComponentName,
|
|
608
|
-
enableRouterRetrigger: bEnableRouterRetrigger,
|
|
609
|
-
stateStored: false
|
|
610
|
-
};
|
|
611
|
-
|
|
612
|
-
KeepAliveApps.set(sStorageAppId, oNewStorageEntry);
|
|
613
|
-
|
|
614
|
-
return oNewStorageEntry;
|
|
615
|
-
};
|
|
616
|
-
|
|
617
|
-
/**
|
|
618
|
-
* Stores the state of the current application
|
|
619
|
-
* - back navigation
|
|
620
|
-
* - title, hierarchy, relatedApps
|
|
621
|
-
* - currentState, controlManager
|
|
622
|
-
* @returns {Promise} Resolves when the store is done.
|
|
623
|
-
*
|
|
624
|
-
* @since 1.128.0
|
|
625
|
-
* @private
|
|
626
|
-
*/
|
|
627
|
-
this.storeAppExtensions = async function () {
|
|
628
|
-
const oCurrentApp = this.getCurrentApplication();
|
|
629
|
-
if (!oCurrentApp) {
|
|
630
|
-
return;
|
|
631
|
-
}
|
|
632
|
-
const sStorageAppId = oCurrentApp.appId;
|
|
633
|
-
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
634
|
-
|
|
635
|
-
if (!oStorageEntry) {
|
|
636
|
-
// do not store for non-keep-alive apps
|
|
637
|
-
return;
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
if (oStorageEntry.container.isA("sap.ushell.components.applicationIntegration.UI5ApplicationContainer")) {
|
|
641
|
-
await this._getComponentCreatedPromise(sStorageAppId);
|
|
642
|
-
}
|
|
643
|
-
|
|
644
|
-
// back navigation
|
|
645
|
-
BackNavigation.store(oStorageEntry.service);
|
|
646
|
-
// currentState, controlManager
|
|
647
|
-
KeepAlive.store(oStorageEntry);
|
|
648
|
-
// About Dialog
|
|
649
|
-
AppInfoParameters.store(oStorageEntry);
|
|
650
|
-
};
|
|
651
|
-
|
|
652
|
-
/**
|
|
653
|
-
* @param {string} sStorageAppId
|
|
654
|
-
* @param {object} oResolvedHashFragment
|
|
655
|
-
* @param {object} oParsedShellHash
|
|
656
|
-
* @returns {string} Returns the keep alive mode.
|
|
657
|
-
*/
|
|
658
|
-
this._calculateKeepAliveMode = function (sStorageAppId, oResolvedHashFragment, oParsedShellHash) {
|
|
659
|
-
const aKeepAliveModes = Object.values(KEEP_ALIVE_MODES);
|
|
660
|
-
|
|
661
|
-
//generic intent currently can never be keep alive
|
|
662
|
-
if (sStorageAppId === "application-Shell-startIntent") {
|
|
663
|
-
return KEEP_ALIVE_MODES.False;
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
// Global override in query parameters
|
|
667
|
-
let sKeepAlive = new URLSearchParams(window.location.search).get("sap-keep-alive");
|
|
668
|
-
if (aKeepAliveModes.includes(sKeepAlive)) {
|
|
669
|
-
return sKeepAlive;
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
// App override in intent parameters
|
|
673
|
-
sKeepAlive = oParsedShellHash.params?.["sap-keep-alive"];
|
|
674
|
-
if (aKeepAliveModes.includes(sKeepAlive)) {
|
|
675
|
-
return sKeepAlive;
|
|
676
|
-
}
|
|
677
|
-
|
|
678
|
-
// Magic override in resolved hash fragment
|
|
679
|
-
if (oResolvedHashFragment.url) {
|
|
680
|
-
sKeepAlive = UriParameters.fromURL(oResolvedHashFragment.url).get("sap-keep-alive");
|
|
681
|
-
if (aKeepAliveModes.includes(sKeepAlive)) {
|
|
682
|
-
return sKeepAlive;
|
|
683
|
-
}
|
|
684
|
-
}
|
|
685
|
-
|
|
686
|
-
// if the app is a root intent, it should be kept alive (e.g. workzone advanced)
|
|
687
|
-
// can be overridden by the above checks
|
|
688
|
-
const sShellHash = UrlParsing.constructShellHash(oParsedShellHash);
|
|
689
|
-
if (sShellHash && ushellUtils.isRootIntent(sShellHash)) {
|
|
690
|
-
return KEEP_ALIVE_MODES.True;
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
return KEEP_ALIVE_MODES.False;
|
|
694
|
-
};
|
|
695
|
-
|
|
696
|
-
/**
|
|
697
|
-
* @param {object} oResolvedHashFragment
|
|
698
|
-
* @returns {string} Returns the application type.
|
|
699
|
-
*/
|
|
700
|
-
this._calculateAppType = function (oResolvedHashFragment) {
|
|
701
|
-
if (oResolvedHashFragment.applicationType === "URL" && oResolvedHashFragment.additionalInformation?.startsWith?.("SAPUI5.Component=")) {
|
|
702
|
-
return "SAPUI5";
|
|
703
|
-
}
|
|
704
|
-
return oResolvedHashFragment.applicationType;
|
|
705
|
-
};
|
|
706
|
-
|
|
707
|
-
/**
|
|
708
|
-
* @param {object} oData
|
|
709
|
-
* @returns {Promise} Resolves when the app is reloaded.
|
|
710
|
-
*/
|
|
711
|
-
this._reloadCurrentApp = async function (oData) {
|
|
712
|
-
const oTargetApplicationContainer = ApplicationContainerCache.getById(oData.sAppContainerId);
|
|
713
|
-
if (oTargetApplicationContainer) {
|
|
714
|
-
await this._destroyApplication(oTargetApplicationContainer.getCurrentAppId(), oTargetApplicationContainer);
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
const ShellNavigationInternal = await Container.getServiceAsync("ShellNavigationInternal");
|
|
718
|
-
try {
|
|
719
|
-
ShellNavigationInternal.hashChanger.treatHashChanged(oData.sCurrentHash);
|
|
720
|
-
} catch (error) {
|
|
721
|
-
Log.error("Error when trying to re-load the current displayed application", error, "sap.ushell.services.AppLifeCycle");
|
|
722
|
-
}
|
|
723
|
-
};
|
|
724
|
-
|
|
725
|
-
/**
|
|
726
|
-
* Opens an application in an application container and sets it as the current application.
|
|
727
|
-
*
|
|
728
|
-
* @param {string} sStorageAppId the id of the application.
|
|
729
|
-
* @param {object} oResolvedHashFragment the resolved hash fragment.
|
|
730
|
-
* @param {object} bShouldBeCached Wether it should be cached.
|
|
731
|
-
*/
|
|
732
|
-
this._createOrReuseApplicationContainer = function (sStorageAppId, oResolvedHashFragment, bShouldBeCached) {
|
|
733
|
-
let oApplicationContainer;
|
|
734
|
-
|
|
735
|
-
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
736
|
-
// app was kept alive
|
|
737
|
-
if (oStorageEntry && oStorageEntry.container) {
|
|
738
|
-
oApplicationContainer = oStorageEntry.container;
|
|
739
|
-
}
|
|
740
|
-
|
|
741
|
-
// try to find a reusable container
|
|
742
|
-
if (!oApplicationContainer) {
|
|
743
|
-
const oStatefulApplicationContainer = ApplicationContainerCache.findFreeContainerByUrl(oResolvedHashFragment.url);
|
|
744
|
-
|
|
745
|
-
const bIsReusableContainer = oStatefulApplicationContainer?.getStatefulType() !== StatefulType.NotSupported;
|
|
746
|
-
if (bIsReusableContainer) {
|
|
747
|
-
oApplicationContainer = oStatefulApplicationContainer;
|
|
748
|
-
}
|
|
749
|
-
}
|
|
750
|
-
|
|
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
|
|
772
|
-
};
|
|
773
|
-
|
|
774
|
-
if (bIsUI5App) {
|
|
775
|
-
oApplicationContainer = new UI5ApplicationContainer({
|
|
776
|
-
...oCommonProperties,
|
|
777
|
-
ui5ComponentName: oResolvedHashFragment.ui5ComponentName
|
|
778
|
-
});
|
|
779
|
-
} else {
|
|
780
|
-
oApplicationContainer = new IframeApplicationContainer({
|
|
781
|
-
...oCommonProperties
|
|
782
|
-
});
|
|
783
|
-
}
|
|
784
|
-
|
|
785
|
-
this._initializeApplicationContainer(oApplicationContainer, oResolvedHashFragment);
|
|
786
|
-
} else {
|
|
787
|
-
oApplicationContainer.setProperty("isFetchedFromCache", true, true);
|
|
788
|
-
}
|
|
789
|
-
|
|
790
|
-
ApplicationContainerCache.setContainerActive(oApplicationContainer);
|
|
791
|
-
oApplicationContainer.setProperty("isKeepAlive", bShouldBeCached, true);
|
|
792
|
-
|
|
793
|
-
return oApplicationContainer;
|
|
794
|
-
};
|
|
795
|
-
|
|
796
|
-
/**
|
|
797
|
-
* Any event one wishes to subscribe to during the AppLifeCycle.init() call should be added here.
|
|
798
|
-
* Events will only be added the first time AppLifeCycle.init() is called.
|
|
799
|
-
*/
|
|
800
|
-
this._addEvents = (function () {
|
|
801
|
-
let hasBeenCalled = false;
|
|
802
|
-
return function () {
|
|
803
|
-
if (!hasBeenCalled) {
|
|
804
|
-
hasBeenCalled = true;
|
|
805
|
-
|
|
806
|
-
// Subscribe to events.
|
|
807
|
-
EventHub.on("disableKeepAliveRestoreRouterRetrigger").do((oData) => {
|
|
808
|
-
const sAppId = `${oData.intent.semanticObject}-${oData.intent.action}`;
|
|
809
|
-
const sStorageAppId = `application-${sAppId}`;
|
|
810
|
-
|
|
811
|
-
bEnableRouterRetrigger = oData.disable;
|
|
812
|
-
|
|
813
|
-
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
814
|
-
if (oStorageEntry) {
|
|
815
|
-
oStorageEntry.enableRouterRetrigger = oData.disable;
|
|
816
|
-
}
|
|
817
|
-
});
|
|
818
|
-
EventHub.on("setApplicationFullWidth").do((oData) => {
|
|
819
|
-
this._setApplicationFullWidth(oData.bValue);
|
|
820
|
-
});
|
|
821
|
-
|
|
822
|
-
EventHub.on("reloadCurrentApp").do((oData) => {
|
|
823
|
-
this._reloadCurrentApp(oData);
|
|
824
|
-
});
|
|
825
|
-
}
|
|
826
|
-
};
|
|
827
|
-
}());
|
|
828
|
-
|
|
829
|
-
/**
|
|
830
|
-
* @param {object} oInViewPortContainer
|
|
831
|
-
* @param {boolean} bInDisableHomeAppCache
|
|
832
|
-
*/
|
|
833
|
-
this.init = function (oInViewPortContainer, bInDisableHomeAppCache) {
|
|
834
|
-
if (Container && Config.last("/core/shell/enablePersistantAppstateWhenSharing")) {
|
|
835
|
-
Container.getServiceAsync("AppState").then((oAppStateService) => {
|
|
836
|
-
fnOldTriggerEmail = URLHelper.triggerEmail.bind(URLHelper);
|
|
837
|
-
URLHelper.triggerEmail = function (sTo, sSubject, sBody, sCc, sBcc) {
|
|
838
|
-
const sFLPUrl = document.URL;
|
|
839
|
-
oAppStateService.setAppStateToPublic(sFLPUrl)
|
|
840
|
-
.done((sNewURL, sXStateKey, sIStateKey, sXStateKeyNew, sIStateKeyNew) => {
|
|
841
|
-
sSubject = sSubject && sXStateKey && sXStateKeyNew && sSubject.includes(sXStateKey) ? sSubject.replace(sXStateKey, sXStateKeyNew) : sSubject;
|
|
842
|
-
sSubject = sSubject && sIStateKey && sIStateKeyNew && sSubject.includes(sIStateKey) ? sSubject.replace(sIStateKey, sIStateKeyNew) : sSubject;
|
|
843
|
-
sBody = sBody && sXStateKey && sXStateKeyNew && sBody.includes(sXStateKey) ? sBody.replace(sXStateKey, sXStateKeyNew) : sBody;
|
|
844
|
-
sBody = sBody && sIStateKey && sIStateKeyNew && sBody.includes(sIStateKey) ? sBody.replace(sIStateKey, sIStateKeyNew) : sBody;
|
|
845
|
-
fnOldTriggerEmail(sTo, sSubject, sBody, sCc, sBcc);
|
|
846
|
-
})
|
|
847
|
-
.fail((sTo, sSubject, sBody, sCc, sBcc) => {
|
|
848
|
-
fnOldTriggerEmail(sTo, sSubject, sBody, sCc, sBcc);
|
|
849
|
-
});
|
|
850
|
-
};
|
|
851
|
-
});
|
|
852
|
-
}
|
|
853
|
-
|
|
854
|
-
this._startPostMessageHandling();
|
|
855
|
-
|
|
856
|
-
ShellUIServiceFactory.init().then(() => {
|
|
857
|
-
ServiceFactoryRegistry.register(
|
|
858
|
-
"sap.ushell.ui5service.ShellUIService",
|
|
859
|
-
ShellUIServiceFactory
|
|
860
|
-
);
|
|
861
|
-
});
|
|
862
|
-
this._createGlobalShellUIService();
|
|
863
|
-
|
|
864
|
-
oViewPortContainer = oInViewPortContainer;
|
|
865
|
-
bDisableHomeAppCache = bInDisableHomeAppCache;
|
|
866
|
-
|
|
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));
|
|
911
|
-
}
|
|
912
|
-
);
|
|
913
|
-
}
|
|
914
|
-
});
|
|
915
|
-
}
|
|
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");
|
|
927
|
-
}
|
|
928
|
-
|
|
929
|
-
if (oInterface.isActiveOnly) {
|
|
930
|
-
oTarget.activeOnly = true;
|
|
931
|
-
}
|
|
932
|
-
|
|
933
|
-
PostMessageManager.setDistributionPolicy(sServiceRequest, oTarget);
|
|
934
|
-
});
|
|
935
|
-
}
|
|
936
|
-
});
|
|
937
|
-
}
|
|
938
|
-
);
|
|
939
|
-
};
|
|
940
|
-
|
|
941
|
-
this._waitForPluginsAndReplayPostMessages = async function () {
|
|
942
|
-
const PluginManager = await Container.getServiceAsync("PluginManager");
|
|
943
|
-
const oPluginDeferred = PluginManager.getPluginLoadingPromise("RendererExtensions");
|
|
944
|
-
|
|
945
|
-
await ushellUtils.promisify(oPluginDeferred);
|
|
946
|
-
|
|
947
|
-
PostMessageManager.replayStoredMessages();
|
|
948
|
-
};
|
|
949
|
-
|
|
950
|
-
/**
|
|
951
|
-
* @param {object} oShellNavigationInternal
|
|
952
|
-
*/
|
|
953
|
-
this.registerHandleHashChange = function (oShellNavigationInternal) {
|
|
954
|
-
oShellNavigationInternal.hashChanger.attachEvent("hashChanged", (oHashChange) => {
|
|
955
|
-
//FIX for internal incident #1980317281 - In general, hash structure in FLP is splitted into 3 parts:
|
|
956
|
-
//A - application identification & B - Application parameters & C - Internal application area
|
|
957
|
-
// Now, when an IFrame changes its hash, it sends PostMessage up to the FLP. The FLP does 2 things: Change its URL
|
|
958
|
-
// and send a PostMessage back to the IFrame. This fix, initiated in the PostMessageAPI.js, blocks only
|
|
959
|
-
// the message back to the IFrame.
|
|
960
|
-
if (hasher.disableBlueBoxHashChangeTrigger) {
|
|
961
|
-
return;
|
|
962
|
-
}
|
|
963
|
-
if (oHashChange.mParameters && oShellNavigationInternal.hashChanger.isInnerAppNavigation(oHashChange.mParameters.newHash, oHashChange.mParameters.oldHash)) {
|
|
964
|
-
PostMessageManager.sendRequestToAllApplications("sap.ushell.appRuntime.innerAppRouteChange", {
|
|
965
|
-
oHash: oHashChange.mParameters
|
|
966
|
-
}, false);
|
|
967
|
-
}
|
|
968
|
-
|
|
969
|
-
PostMessageManager.sendRequestToAllApplications("sap.ushell.appRuntime.hashChange", {
|
|
970
|
-
sHash: oHashChange.mParameters.fullHash
|
|
971
|
-
}, false);
|
|
972
|
-
});
|
|
973
|
-
};
|
|
974
|
-
|
|
975
|
-
/**
|
|
976
|
-
* @param {object} oApplicationContainer
|
|
977
|
-
*/
|
|
978
|
-
this._addApplicationContainerToViewPort = function (oApplicationContainer) {
|
|
979
|
-
oViewPortContainer.addCenterViewPort(oApplicationContainer);
|
|
980
|
-
};
|
|
981
|
-
|
|
982
|
-
/**
|
|
983
|
-
* @param {string} sId
|
|
984
|
-
*/
|
|
985
|
-
this._removeApplicationContainerFromViewPort = function (oApplicationContainer) {
|
|
986
|
-
oViewPortContainer.removeCenterViewPort(oApplicationContainer.getId(), true);
|
|
987
|
-
};
|
|
988
|
-
|
|
989
|
-
/**
|
|
990
|
-
* @param {string} sAppId
|
|
991
|
-
* @returns {object} Returns the control.
|
|
992
|
-
*/
|
|
993
|
-
this._getApplicationContainerFromViewPort = function (sAppId) {
|
|
994
|
-
if (!oViewPortContainer) {
|
|
995
|
-
return;
|
|
996
|
-
}
|
|
997
|
-
return oViewPortContainer.getViewPortControl("centerViewPort", `application-${sAppId}`)
|
|
998
|
-
|| oViewPortContainer.getViewPortControl("centerViewPort", `applicationShellPage-${sAppId}`);
|
|
999
|
-
};
|
|
1000
|
-
|
|
1001
|
-
/**
|
|
1002
|
-
* @returns {object} Returns the view port container.
|
|
1003
|
-
*/
|
|
1004
|
-
this._getViewPortContainer = function () {
|
|
1005
|
-
return oViewPortContainer;
|
|
1006
|
-
};
|
|
1007
|
-
|
|
1008
|
-
/**
|
|
1009
|
-
* @param {string} sId
|
|
1010
|
-
*/
|
|
1011
|
-
this._navTo = function (sId) {
|
|
1012
|
-
oViewPortContainer.navTo("centerViewPort", sId, "show");
|
|
1013
|
-
};
|
|
1014
|
-
|
|
1015
|
-
/**
|
|
1016
|
-
* @returns {object} Returns the current application.
|
|
1017
|
-
*/
|
|
1018
|
-
this.getCurrentApplication = function () {
|
|
1019
|
-
return oCurrentApplication;
|
|
1020
|
-
};
|
|
1021
|
-
|
|
1022
|
-
/**
|
|
1023
|
-
* @param {boolean} bIsFull
|
|
1024
|
-
*/
|
|
1025
|
-
this._setApplicationFullWidth = function (bIsFull) {
|
|
1026
|
-
const oCurrent = this.getCurrentApplication();
|
|
1027
|
-
|
|
1028
|
-
//validate that we have a valid applicationContainer
|
|
1029
|
-
if (oCurrent.container) {
|
|
1030
|
-
oCurrent.container.toggleStyleClass("sapUShellApplicationContainerLimitedWidth", !bIsFull);
|
|
1031
|
-
}
|
|
1032
|
-
};
|
|
1033
|
-
|
|
1034
|
-
/**
|
|
1035
|
-
* Returns the global ShellUIService instance.
|
|
1036
|
-
* @returns {object} The global ShellUIService instance
|
|
1037
|
-
*/
|
|
1038
|
-
this.getShellUIService = function () {
|
|
1039
|
-
return oGlobalShellUIService;
|
|
1040
|
-
};
|
|
1041
|
-
|
|
1042
|
-
/**
|
|
1043
|
-
*/
|
|
1044
|
-
this.resetGlobalShellUIService = function () {
|
|
1045
|
-
if (oGlobalShellUIService) {
|
|
1046
|
-
oGlobalShellUIService.resetService();
|
|
1047
|
-
}
|
|
1048
|
-
};
|
|
1049
|
-
|
|
1050
|
-
/**
|
|
1051
|
-
* Creates the ShellUIService instance of the AppLifeCycle in application integration if not already created.
|
|
1052
|
-
*
|
|
1053
|
-
* @returns {Promise} A promise that resolves when the ShellUIService instance is created
|
|
1054
|
-
*
|
|
1055
|
-
* @since 1.127.0
|
|
1056
|
-
* @private
|
|
1057
|
-
*/
|
|
1058
|
-
this._createGlobalShellUIService = async function () {
|
|
1059
|
-
oGlobalShellUIService = await ShellUIServiceFactory.createInstanceInternal();
|
|
1060
|
-
};
|
|
1061
|
-
|
|
1062
|
-
/**
|
|
1063
|
-
* In the FLP, only one container at a time can be active. If we have
|
|
1064
|
-
* multiple ApplicationContainers, they may still be active in the
|
|
1065
|
-
* background, and still be able to send/receive postMessages (e.g.,
|
|
1066
|
-
* change the title while the user is on the FLP home).
|
|
1067
|
-
*
|
|
1068
|
-
* Also, we distinguish between visible containers and active
|
|
1069
|
-
* containers. As it is desirable that when a container is being opened
|
|
1070
|
-
* it starts setting the FLP title for example. It results in better
|
|
1071
|
-
* perceived performance.
|
|
1072
|
-
*
|
|
1073
|
-
* This method sets only one container as active and de-activates all
|
|
1074
|
-
* other application containers around.
|
|
1075
|
-
*
|
|
1076
|
-
* @param {object} oTargetApplicationContainer
|
|
1077
|
-
* The application container to activate. Pass <code>null</code> in
|
|
1078
|
-
* case no application container must be activated.
|
|
1079
|
-
*
|
|
1080
|
-
* @private
|
|
1081
|
-
*/
|
|
1082
|
-
this._setApplicationContainerActive = function (oTargetApplicationContainer) {
|
|
1083
|
-
ApplicationContainerCache.forEach((oApplicationContainer) => {
|
|
1084
|
-
if (oApplicationContainer && oApplicationContainer !== oTargetApplicationContainer) {
|
|
1085
|
-
try {
|
|
1086
|
-
Log.info(`Deactivating container ${oApplicationContainer.getId()}`);
|
|
1087
|
-
oApplicationContainer.setActive(false);
|
|
1088
|
-
} catch (e) {
|
|
1089
|
-
/* empty */
|
|
1090
|
-
}
|
|
1091
|
-
}
|
|
1092
|
-
});
|
|
1093
|
-
|
|
1094
|
-
if (oTargetApplicationContainer) {
|
|
1095
|
-
Log.info(`Activating container "${oTargetApplicationContainer.getId()}"`);
|
|
1096
|
-
oTargetApplicationContainer.setActive(true);
|
|
1097
|
-
}
|
|
1098
|
-
};
|
|
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
|
-
|
|
1188
|
-
/**
|
|
1189
|
-
* @param {object} oApplicationContainer
|
|
1190
|
-
* @param {object} oResolvedHashFragment
|
|
1191
|
-
* @param {function} fnOnAfterRendering
|
|
1192
|
-
*/
|
|
1193
|
-
this._publishNavigationStateEvents = function (oApplicationContainer, oResolvedHashFragment, oMetadata) {
|
|
1194
|
-
//after the app container is rendered, publish an event to notify
|
|
1195
|
-
//that an app was opened
|
|
1196
|
-
const sId = oApplicationContainer.getId ? oApplicationContainer.getId() : "";
|
|
1197
|
-
const sIcon = oMetadata.icon;
|
|
1198
|
-
const sTitle = oMetadata.title;
|
|
1199
|
-
|
|
1200
|
-
const fnOnAfterRendering = this._onAppAfterRendering.bind(this, oResolvedHashFragment);
|
|
1201
|
-
//Attach an event handler which will be called onAfterRendering
|
|
1202
|
-
oApplicationContainer.addEventDelegate({ onAfterRendering: fnOnAfterRendering });
|
|
1203
|
-
|
|
1204
|
-
//after the app container exit, publish an event to notify
|
|
1205
|
-
//that an app was closed
|
|
1206
|
-
const that = this;
|
|
1207
|
-
const origExit = oApplicationContainer.exit;
|
|
1208
|
-
oApplicationContainer.exit = function () {
|
|
1209
|
-
if (origExit) {
|
|
1210
|
-
origExit.apply(this, arguments);
|
|
1211
|
-
}
|
|
1212
|
-
//apply the original density settings
|
|
1213
|
-
AppMeta._applyContentDensityByPriority();
|
|
1214
|
-
|
|
1215
|
-
//wrapped in setTimeout since "publish" is not async
|
|
1216
|
-
setTimeout(() => {
|
|
1217
|
-
// TODO: do not mutate an internal structure (in a Timeout!),
|
|
1218
|
-
// create a new object
|
|
1219
|
-
const oEventData = deepExtend({}, oResolvedHashFragment);
|
|
1220
|
-
delete oEventData.componentHandle;
|
|
1221
|
-
oEventData.appId = sId;
|
|
1222
|
-
oEventData.usageIcon = sIcon;
|
|
1223
|
-
oEventData.usageTitle = sTitle;
|
|
1224
|
-
EventBus.getInstance().publish("sap.ushell", "appClosed", oEventData);
|
|
1225
|
-
Log.info("app was closed");
|
|
1226
|
-
}, 0);
|
|
1227
|
-
|
|
1228
|
-
// the former code leaked an *internal* data structure, making it part of a public API
|
|
1229
|
-
// restrict hte public api to the minimal set of precise documented properties which can be retained under
|
|
1230
|
-
// under future evolutions
|
|
1231
|
-
const oPublicEventData = that._publicEventDataFromResolutionResult(oResolvedHashFragment);
|
|
1232
|
-
//publish the event externally
|
|
1233
|
-
RendererUtils.publishExternalEvent("appClosed", oPublicEventData);
|
|
1234
|
-
};
|
|
1235
|
-
};
|
|
1236
|
-
|
|
1237
|
-
/**
|
|
1238
|
-
* Creates a new object Expose a minimal set of values to public external stakeholders
|
|
1239
|
-
* only expose what you can guarantee under any evolution of the unified shell on all platforms
|
|
1240
|
-
* @param {object} oApplication an internal result of NavTargetResolutionInternal
|
|
1241
|
-
* @returns {object} an object exposing certain information to external stakeholders
|
|
1242
|
-
*/
|
|
1243
|
-
this._publicEventDataFromResolutionResult = function (oApplication) {
|
|
1244
|
-
const oPublicEventData = {};
|
|
1245
|
-
if (!oApplication) {
|
|
1246
|
-
return oApplication;
|
|
1247
|
-
}
|
|
1248
|
-
["applicationType", "ui5ComponentName", "url", "additionalInformation", "text"].forEach((sProp) => {
|
|
1249
|
-
oPublicEventData[sProp] = oApplication[sProp];
|
|
1250
|
-
});
|
|
1251
|
-
Object.freeze(oPublicEventData);
|
|
1252
|
-
return oPublicEventData;
|
|
1253
|
-
};
|
|
1254
|
-
|
|
1255
|
-
/**
|
|
1256
|
-
* @param {*} oResolvedHashFragment
|
|
1257
|
-
* @returns
|
|
1258
|
-
*/
|
|
1259
|
-
this._isFullWidth = function (oResolvedHashFragment, oMetadata) {
|
|
1260
|
-
let bFullWidth;
|
|
1261
|
-
const sAppType = this._calculateAppType(oResolvedHashFragment);
|
|
1262
|
-
const bDefaultFullWidth = ApplicationType.getDefaultFullWidthSetting(sAppType);
|
|
1263
|
-
|
|
1264
|
-
const bFullWidthCapability = oResolvedHashFragment.appCapabilities?.fullWidth;
|
|
1265
|
-
//Here there's a double check for the fullwidth - once as a type of boolean and one as a string.
|
|
1266
|
-
//This is because we found that developers configured this variable in the manifest also as a string,
|
|
1267
|
-
//so the checks of the oMetadata and the oResolvedHashFragment are to avoid regression with the use of this field.
|
|
1268
|
-
if (bDefaultFullWidth) {
|
|
1269
|
-
if (oResolvedHashFragment.fullWidth === false || oResolvedHashFragment.fullWidth === "false" ||
|
|
1270
|
-
oMetadata.fullWidth === false || oMetadata.fullWidth === "false" || bFullWidthCapability === false) {
|
|
1271
|
-
bFullWidth = false;
|
|
1272
|
-
}
|
|
1273
|
-
} else if (oResolvedHashFragment.fullWidth || oResolvedHashFragment.fullWidth === "true" ||
|
|
1274
|
-
oMetadata.fullWidth || oMetadata.fullWidth === "true") {
|
|
1275
|
-
bFullWidth = true;
|
|
1276
|
-
}
|
|
1277
|
-
|
|
1278
|
-
if (bFullWidth === undefined) {
|
|
1279
|
-
bFullWidth = bDefaultFullWidth;
|
|
1280
|
-
}
|
|
1281
|
-
return bFullWidth;
|
|
1282
|
-
};
|
|
1283
|
-
|
|
1284
|
-
/**
|
|
1285
|
-
* @param {*} sAppId
|
|
1286
|
-
* @param {*} oParsedShellHash
|
|
1287
|
-
* @param {*} oResolvedHashFragment
|
|
1288
|
-
* @param {*} bNavigationFromHome
|
|
1289
|
-
* @param {*} bNavigationWithInnerAppRoute
|
|
1290
|
-
* @returns
|
|
1291
|
-
*/
|
|
1292
|
-
this.createApplication = async function (sAppId, oParsedShellHash, oResolvedHashFragment, bNavigationFromHome, bNavigationWithInnerAppRoute) {
|
|
1293
|
-
const sStorageAppId = `application-${sAppId}`;
|
|
1294
|
-
|
|
1295
|
-
await this._cleanupBeforeNewApp(
|
|
1296
|
-
sAppId,
|
|
1297
|
-
oParsedShellHash,
|
|
1298
|
-
oResolvedHashFragment,
|
|
1299
|
-
bNavigationFromHome,
|
|
1300
|
-
bNavigationWithInnerAppRoute
|
|
1301
|
-
);
|
|
1302
|
-
|
|
1303
|
-
this._sendFocusBackToShell();
|
|
1304
|
-
this._announceAppOpening(oResolvedHashFragment);
|
|
1305
|
-
|
|
1306
|
-
const sKeepAliveMode = this._calculateKeepAliveMode(sStorageAppId, oResolvedHashFragment, oParsedShellHash);
|
|
1307
|
-
const bShouldBeCached = sKeepAliveMode !== KEEP_ALIVE_MODES.False;
|
|
1308
|
-
|
|
1309
|
-
const oApplicationContainer = this._createOrReuseApplicationContainer(sStorageAppId, oResolvedHashFragment, bShouldBeCached);
|
|
1310
|
-
|
|
1311
|
-
// check after cleanup, but before creating the storage entry
|
|
1312
|
-
const bWasKeptAlive = !!KeepAliveApps.get(sStorageAppId);
|
|
1313
|
-
|
|
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
|
-
};
|
|
1332
|
-
}
|
|
1333
|
-
|
|
1334
|
-
ushellUtils.setPerformanceMark("FLP - addAppContainer");
|
|
1335
|
-
|
|
1336
|
-
// restore the app info parameters before activating the application container
|
|
1337
|
-
const oStorageEntry = KeepAliveApps.get(sStorageAppId);
|
|
1338
|
-
if (oStorageEntry) {
|
|
1339
|
-
AppInfoParameters.restore(oStorageEntry);
|
|
1340
|
-
} else {
|
|
1341
|
-
AppInfoParameters.flush();
|
|
1342
|
-
}
|
|
1343
|
-
|
|
1344
|
-
// enable the PostMessageAPI for the application
|
|
1345
|
-
this._setApplicationContainerActive(oApplicationContainer);
|
|
1346
|
-
|
|
1347
|
-
const sNavigationRedirectHash = await this._openApp(
|
|
1348
|
-
sStorageAppId,
|
|
1349
|
-
oApplicationContainer,
|
|
1350
|
-
oResolvedHashFragment,
|
|
1351
|
-
oParsedShellHash,
|
|
1352
|
-
bWasKeptAlive
|
|
1353
|
-
);
|
|
1354
|
-
|
|
1355
|
-
if (typeof sNavigationRedirectHash === "string") {
|
|
1356
|
-
// do not add the deleted application to the view port
|
|
1357
|
-
return sNavigationRedirectHash;
|
|
1358
|
-
}
|
|
1359
|
-
|
|
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);
|
|
1369
|
-
ushellUtils.setPerformanceMark("FLP -- centerViewPort");
|
|
1370
|
-
|
|
1371
|
-
EventBus.getInstance().publish("sap.ushell", "appOpened", oResolvedHashFragment);
|
|
1372
|
-
Log.info("app was opened");
|
|
1373
|
-
};
|
|
1374
|
-
|
|
1375
|
-
/**
|
|
1376
|
-
*/
|
|
1377
|
-
this.navToCurrentApp = function () {
|
|
1378
|
-
const oApplicationContainer = this.getCurrentApplication().container;
|
|
1379
|
-
// todo: [FLPCOREANDUX-10024] maybe switch to 'this.getCurrentApplication().appId' instead
|
|
1380
|
-
this._navTo(oApplicationContainer.getId());
|
|
1381
|
-
|
|
1382
|
-
// todo: [FLPCOREANDUX-10024]
|
|
1383
|
-
// - Move styles into control? or at least out of here
|
|
1384
|
-
// - Is this even needed? This doesn't seem to trigger the onAfterNavigate as indicated by the following comment.
|
|
1385
|
-
//Added this because in cases when navigating to the same id (can happen when stateful container, I need the on onAfterNavigate)
|
|
1386
|
-
//This must only be done after the _navTo as the ViewPortContainer's navTo function relies on the state of those classes.
|
|
1387
|
-
if (oApplicationContainer.hasStyleClass("sapUShellApplicationContainerShiftedIframe")) {
|
|
1388
|
-
oApplicationContainer.toggleStyleClass("sapUShellApplicationContainerIframeHidden", false);
|
|
1389
|
-
} else {
|
|
1390
|
-
oApplicationContainer.toggleStyleClass("hidden", false);
|
|
1391
|
-
}
|
|
1392
|
-
};
|
|
1393
|
-
|
|
1394
|
-
/**
|
|
1395
|
-
* New app was created and we now have to switch the state
|
|
1396
|
-
* @param {string} sLaunchpadState
|
|
1397
|
-
* @param {string} sAppId
|
|
1398
|
-
* @param {string} sAppType
|
|
1399
|
-
* @param {boolean} bIsExplaceNavigation
|
|
1400
|
-
*/
|
|
1401
|
-
this.switchViewState = function (sLaunchpadState, sAppId, sAppType, bIsExplaceNavigation) {
|
|
1402
|
-
// Store state before creating a new one
|
|
1403
|
-
const oFromStorageEntry = KeepAliveApps.get(oCurrentApplication.appId);
|
|
1404
|
-
if (!oFromStorageEntry) {
|
|
1405
|
-
// We have to destroy managed queue BEFORE we're applying the pending changes
|
|
1406
|
-
StateManager.destroyManagedControls();
|
|
1407
|
-
}
|
|
1408
|
-
|
|
1409
|
-
const sShellMode = StateManager.getShellMode();
|
|
1410
|
-
// GUI Applications need a back button to work properly
|
|
1411
|
-
const oShellModeOverrides = {
|
|
1412
|
-
TR: {
|
|
1413
|
-
headerless: ShellMode.Minimal
|
|
1414
|
-
}
|
|
1415
|
-
};
|
|
1416
|
-
|
|
1417
|
-
let sShellModeOverride;
|
|
1418
|
-
if (!bIsExplaceNavigation) {
|
|
1419
|
-
sShellModeOverride = oShellModeOverrides[sAppType]?.[sShellMode];
|
|
1420
|
-
}
|
|
1421
|
-
StateManager.switchState(sLaunchpadState, sShellModeOverride);
|
|
1422
|
-
|
|
1423
|
-
// Restore state if it already exists
|
|
1424
|
-
const sToStorageAppId = `application-${sAppId}`;
|
|
1425
|
-
const oToStorageEntry = KeepAliveApps.get(sToStorageAppId);
|
|
1426
|
-
if (oToStorageEntry) {
|
|
1427
|
-
KeepAlive.restore(oToStorageEntry);
|
|
1428
|
-
} else {
|
|
1429
|
-
KeepAlive.flush();
|
|
1430
|
-
}
|
|
1431
|
-
|
|
1432
|
-
//Process Dangling UI elements and continue.
|
|
1433
|
-
StateManager.applyStalledChanges();
|
|
1434
|
-
};
|
|
1435
|
-
|
|
1436
|
-
/**
|
|
1437
|
-
* @returns {boolean} Whether the floating container is docked.
|
|
1438
|
-
*/
|
|
1439
|
-
this._isFloatingContainerDocked = function () {
|
|
1440
|
-
const bDocked = ShellModel.getModel().getProperty("/floatingContainer/state").includes("docked");
|
|
1441
|
-
const bVisible = ShellModel.getModel().getProperty("/floatingContainer/visible");
|
|
1442
|
-
return bDocked && bVisible;
|
|
1443
|
-
};
|
|
1444
|
-
|
|
1445
|
-
/**
|
|
1446
|
-
*/
|
|
1447
|
-
this._sendFocusBackToShell = function () {
|
|
1448
|
-
if (!Device.system.desktop) {
|
|
1449
|
-
return;
|
|
1450
|
-
}
|
|
1451
|
-
|
|
1452
|
-
sap.ui.require(["sap/ushell/renderer/AccessKeysHandler"], (AccessKeysHandler) => {
|
|
1453
|
-
const sCurrentLaunchpadState = StateManager.getLaunchpadState();
|
|
1454
|
-
const bDefaultShellMode = StateManager.getShellMode() === ShellMode.Default;
|
|
1455
|
-
const oShellAppTitle = Element.getElementById("shellAppTitle");
|
|
1456
|
-
|
|
1457
|
-
if (oShellAppTitle && sCurrentLaunchpadState === LaunchpadState.App && bDefaultShellMode) {
|
|
1458
|
-
const oShellAppTitleDomRef = oShellAppTitle.getFocusDomRef();
|
|
1459
|
-
if (oShellAppTitleDomRef) {
|
|
1460
|
-
AccessKeysHandler.sendFocusBackToShell(oShellAppTitleDomRef.getAttribute("id"));
|
|
1461
|
-
}
|
|
1462
|
-
}
|
|
1463
|
-
});
|
|
1464
|
-
};
|
|
1465
|
-
|
|
1466
|
-
/**
|
|
1467
|
-
* @param {object} oResolvedHashFragment
|
|
1468
|
-
*/
|
|
1469
|
-
this._announceAppOpening = function (oResolvedHashFragment) {
|
|
1470
|
-
//Screen reader: "Loading Complete"
|
|
1471
|
-
window.setTimeout(() => {
|
|
1472
|
-
window.setTimeout(() => {
|
|
1473
|
-
const oAccessibilityHelperLoadingComplete = document.getElementById("sapUshellLoadingAccessibilityHelper-loadingComplete");
|
|
1474
|
-
|
|
1475
|
-
if (oAccessibilityHelperLoadingComplete) {
|
|
1476
|
-
oAccessibilityHelperLoadingComplete.setAttribute("aria-live", "polite");
|
|
1477
|
-
oAccessibilityHelperLoadingComplete.innerHTML = ushellResources.i18n.getText("loadingComplete");
|
|
1478
|
-
window.setTimeout(() => {
|
|
1479
|
-
oAccessibilityHelperLoadingComplete.setAttribute("aria-live", "off");
|
|
1480
|
-
oAccessibilityHelperLoadingComplete.innerHTML = "";
|
|
1481
|
-
}, 0);
|
|
1482
|
-
}
|
|
1483
|
-
}, 600);
|
|
1484
|
-
|
|
1485
|
-
EventBus.getInstance().publish("launchpad", "appOpening", oResolvedHashFragment);
|
|
1486
|
-
Log.info("app is being opened");
|
|
1487
|
-
}, 0);
|
|
1488
|
-
};
|
|
1489
|
-
|
|
1490
|
-
this._initializeApplicationContainer = function (oApplicationContainer, oResolvedHashFragment) {
|
|
1491
|
-
if (ushellUtils.isSAPLegacyApplicationType(oApplicationContainer.getApplicationType(), oApplicationContainer.getFrameworkId())) {
|
|
1492
|
-
oApplicationContainer.addStyleClass("sapUShellApplicationContainerShiftedIframe");
|
|
1493
|
-
}
|
|
1494
|
-
};
|
|
1495
|
-
|
|
1496
|
-
this._initializeAppWithMetadata = function (oApplicationContainer, oResolvedHashFragment) {
|
|
1497
|
-
const oMetadata = AppConfiguration.getMetadata(oResolvedHashFragment, oResolvedHashFragment?.sFixedShellHash);
|
|
1498
|
-
|
|
1499
|
-
oCurrentApplication.meta = oMetadata;
|
|
1500
|
-
|
|
1501
|
-
// ApplicationContainer is newly created
|
|
1502
|
-
if (!oApplicationContainer.getIsFetchedFromCache()) {
|
|
1503
|
-
this._publishNavigationStateEvents(oApplicationContainer, oResolvedHashFragment, oMetadata);
|
|
1504
|
-
|
|
1505
|
-
oApplicationContainer.toggleStyleClass("sapUshellDefaultBackground", !oMetadata.hideLightBackground);
|
|
1506
|
-
|
|
1507
|
-
const bFullWidth = this._isFullWidth(oResolvedHashFragment, oMetadata);
|
|
1508
|
-
if (!bFullWidth) {
|
|
1509
|
-
oApplicationContainer.addStyleClass("sapUShellApplicationContainerLimitedWidth");
|
|
1510
|
-
}
|
|
1511
|
-
|
|
1512
|
-
// todo: [FLPCOREANDUX-10024] clarify whether this should be reactive instead of one time only
|
|
1513
|
-
// todo: [FLPCOREANDUX-10024] move this block to ShellController
|
|
1514
|
-
if (this._isFloatingContainerDocked() && window.matchMedia("(min-width: 106.4rem)").matches) {
|
|
1515
|
-
oApplicationContainer.addStyleClass("sapUShellDockingContainer");
|
|
1516
|
-
oApplicationContainer.removeStyleClass("sapUShellApplicationContainerLimitedWidth");
|
|
1517
|
-
} else if (this._isFloatingContainerDocked()) {
|
|
1518
|
-
oApplicationContainer.removeStyleClass("sapUShellApplicationContainerLimitedWidth");
|
|
1519
|
-
}
|
|
1520
|
-
|
|
1521
|
-
AppMeta._applyContentDensityByPriority();
|
|
1522
|
-
}
|
|
1523
|
-
};
|
|
1524
|
-
|
|
1525
|
-
/**
|
|
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
|
|
1534
|
-
* @param {object} oResolvedHashFragment
|
|
1535
|
-
* @param {boolean} bNavigationFromHome
|
|
1536
|
-
* @param {boolean} bNavigationWithInnerAppRoute
|
|
1537
|
-
*/
|
|
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
|
-
}
|
|
1550
|
-
|
|
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;
|
|
1556
|
-
|
|
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);
|
|
1577
|
-
}
|
|
1578
|
-
|
|
1579
|
-
// => we are navigating to the right keep alive app, so we keep it alive
|
|
1580
|
-
}
|
|
1581
|
-
|
|
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
|
|
1593
|
-
|
|
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
|
-
}
|
|
1639
|
-
}
|
|
1640
|
-
};
|
|
1641
|
-
|
|
1642
|
-
/**
|
|
1643
|
-
*
|
|
1644
|
-
* @param {sap.ui.core.Component} oApplication
|
|
1645
|
-
*/
|
|
1646
|
-
this._onAppAfterRendering = function (oApplication) {
|
|
1647
|
-
// wrapped in setTimeout since "publish" is not async
|
|
1648
|
-
window.setTimeout(() => {
|
|
1649
|
-
EventBus.getInstance().publish("sap.ushell", "appOpened", oApplication);
|
|
1650
|
-
Log.info("app was opened");
|
|
1651
|
-
}, 0);
|
|
1652
|
-
|
|
1653
|
-
// publish the event externally
|
|
1654
|
-
// TODO: cloned, frozen object!
|
|
1655
|
-
const oAppOpenedEventData = this._publicEventDataFromResolutionResult(oApplication);
|
|
1656
|
-
|
|
1657
|
-
// Event is emitted internally (EventHub) _and_ externally (for compatibility reasons)
|
|
1658
|
-
EventHub.emit("AppRendered", oAppOpenedEventData, true);
|
|
1659
|
-
RendererUtils.publishExternalEvent("appOpened", oAppOpenedEventData);
|
|
1660
|
-
ushellUtils.setPerformanceMark("FLP.appOpened");
|
|
1661
|
-
|
|
1662
|
-
const sIcon = AppMeta.getAppIcon();
|
|
1663
|
-
StateManager.updateCurrentState("application.icon", Operation.Set, sIcon);
|
|
1664
|
-
};
|
|
1665
|
-
|
|
1666
|
-
/**
|
|
1667
|
-
* Only for testing
|
|
1668
|
-
* @param {sap.ui.core.Control} oNewViewPortContainer
|
|
1669
|
-
*
|
|
1670
|
-
* @private
|
|
1671
|
-
*/
|
|
1672
|
-
this.setViewPortContainer = function (oNewViewPortContainer) {
|
|
1673
|
-
oViewPortContainer = oNewViewPortContainer;
|
|
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
|
-
};
|
|
1697
|
-
}
|
|
1698
|
-
|
|
1699
|
-
AppLifeCycle.prototype.KeepAliveMode = KEEP_ALIVE_MODES;
|
|
1700
|
-
|
|
1701
|
-
return new AppLifeCycle();
|
|
23
|
+
throw new Error("This module 'sap/ushell/components/applicationIntegration/AppLifeCycle' should not be used when the fallback is disabled");
|
|
1702
24
|
});
|