@sapui5/sap.ushell 1.135.0 → 1.136.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 +1 -1
- package/src/main/js/sap/ushell/AppInfoParameters.js +13 -16
- package/src/main/js/sap/ushell/ApplicationType/UrlPostProcessing.js +0 -4
- package/src/main/js/sap/ushell/ApplicationType/urlTemplateResolution.js +5 -12
- package/src/main/js/sap/ushell/Container.js +11 -11
- package/src/main/js/sap/ushell/Fiori20Adapter.js +5 -3
- package/src/main/js/sap/ushell/Fiori20AdapterTest.js +6 -4
- package/src/main/js/sap/ushell/Layout.js +3 -3
- package/src/main/js/sap/ushell/NWBCInterface.js +8 -11
- package/src/main/js/sap/ushell/SessionHandler.js +16 -77
- 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 +8 -19
- 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 +1 -1
- package/src/main/js/sap/ushell/adapters/cdm/LaunchPageAdapter.js +1 -1
- 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 +5 -5
- 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 +25 -25
- package/src/main/js/sap/ushell/adapters/cdm/v3/FlpLaunchPageAdapter.js +50 -50
- 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 +13 -13
- 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/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 +1 -1
- package/src/main/js/sap/ushell/api/NewExperience.js +24 -2
- package/src/main/js/sap/ushell/api/RTA.js +65 -4
- package/src/main/js/sap/ushell/appIntegration/AppLifeCycle.js +59 -49
- package/src/main/js/sap/ushell/appIntegration/ApplicationContainer.js +57 -11
- package/src/main/js/sap/ushell/appIntegration/ApplicationContainerCache.js +2 -8
- package/src/main/js/sap/ushell/appIntegration/ApplicationContainerRenderer.js +1 -6
- package/src/main/js/sap/ushell/appIntegration/ApplicationHandle.js +0 -6
- package/src/main/js/sap/ushell/appIntegration/IframeApplicationContainer.js +27 -4
- package/src/main/js/sap/ushell/appIntegration/IframeApplicationContainerRenderer.js +8 -6
- package/src/main/js/sap/ushell/appIntegration/KeepAliveApps.js +0 -6
- package/src/main/js/sap/ushell/appIntegration/PostMessageManager/AppruntimeHandler.js +1 -7
- package/src/main/js/sap/ushell/appIntegration/PostMessageManager/ExtensionItems.js +3 -9
- package/src/main/js/sap/ushell/appIntegration/PostMessageManager/LifecycleHandler.js +3 -9
- package/src/main/js/sap/ushell/appIntegration/PostMessageManager/MessageBrokerHandler.js +0 -4
- package/src/main/js/sap/ushell/appIntegration/PostMessageManager/NWBCHandler.js +0 -6
- package/src/main/js/sap/ushell/appIntegration/PostMessageManager/ServiceHandler.js +6 -12
- package/src/main/js/sap/ushell/appIntegration/PostMessageManager.js +2 -8
- package/src/main/js/sap/ushell/appIntegration/PostMessagePluginInterface.js +2 -8
- package/src/main/js/sap/ushell/appIntegration/UI5ApplicationContainer.js +0 -6
- package/src/main/js/sap/ushell/appIntegration/UI5ApplicationContainerRenderer.js +3 -8
- package/src/main/js/sap/ushell/appIntegration/contracts/EmbeddedUI5Handler.js +1 -7
- package/src/main/js/sap/ushell/appIntegration/contracts/StatefulContainerV1Handler.js +0 -6
- package/src/main/js/sap/ushell/appIntegration/contracts/StatefulContainerV2Handler.js +9 -13
- package/src/main/js/sap/ushell/appRuntime/neo/AppInfoService.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/neo/ProxyAppUtils.js +2 -2
- package/src/main/js/sap/ushell/appRuntime/ui5/AppCommunicationMgr.js +0 -7
- package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntime.js +17 -19
- package/src/main/js/sap/ushell/appRuntime/ui5/AppRuntimeService.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/AccessKeysAgent.js +2 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/Renderer.js +17 -29
- package/src/main/js/sap/ushell/appRuntime/ui5/renderers/fiori2/RendererExtensions.js +3 -5
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppConfiguration.js +3 -4
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycle.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppLifeCycleAgent.js +33 -30
- package/src/main/js/sap/ushell/appRuntime/ui5/services/AppState.js +7 -13
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Bookmark.js +25 -39
- package/src/main/js/sap/ushell/appRuntime/ui5/services/BookmarkV2.js +24 -26
- package/src/main/js/sap/ushell/appRuntime/ui5/services/CommonDataModel.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Container.js +6 -9
- package/src/main/js/sap/ushell/appRuntime/ui5/services/CrossApplicationNavigation.js +58 -75
- 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 +1 -1
- 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 +14 -20
- package/src/main/js/sap/ushell/appRuntime/ui5/services/NavTargetResolutionInternal.js +14 -21
- package/src/main/js/sap/ushell/appRuntime/ui5/services/Navigation.js +30 -45
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ReferenceResolver.js +1 -1
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigation.js +11 -16
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellNavigationInternal.js +8 -12
- package/src/main/js/sap/ushell/appRuntime/ui5/services/ShellUIService.js +16 -21
- package/src/main/js/sap/ushell/appRuntime/ui5/services/UserDefaultParameters.js +3 -4
- 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 +3 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.override.registermodulepath.js +1 -1
- package/src/main/js/sap/ushell/bootstrap/common/common.util.js +3 -3
- package/src/main/js/sap/ushell/bootstrap/sandbox2.js +1 -1
- package/src/main/js/sap/ushell/components/CatalogsManager.js +11 -11
- package/src/main/js/sap/ushell/components/ComponentKeysHandler.js +6 -6
- package/src/main/js/sap/ushell/components/HomepageManager.js +2 -2
- package/src/main/js/sap/ushell/components/_HomepageManager/DashboardLoadingManager.js +1 -1
- package/src/main/js/sap/ushell/components/_HomepageManager/PersistentPageOperationAdapter.js +1 -1
- package/src/main/js/sap/ushell/components/_HomepageManager/TransientPageOperationAdapter.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/AppFinder.controller.js +21 -21
- package/src/main/js/sap/ushell/components/appfinder/Catalog.controller.js +6 -6
- package/src/main/js/sap/ushell/components/appfinder/Component.js +1 -1
- package/src/main/js/sap/ushell/components/appfinder/HierarchyApps.controller.js +4 -5
- package/src/main/js/sap/ushell/components/appfinder/VisualizationOrganizerHelper.js +2 -2
- package/src/main/js/sap/ushell/components/appfinder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/cepsearchresult/app/util/controls/Category.js +3 -3
- package/src/main/js/sap/ushell/components/container/resources/resources_de.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/CatalogService.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/Component.js +9 -9
- package/src/main/js/sap/ushell/components/contentFinder/controller/AppSearch.controller.js +5 -5
- 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 +4 -4
- package/src/main/js/sap/ushell/components/contentFinder/dialog/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/model/formatter.js +2 -2
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ar.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_bg.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ca.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_cnr.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_cs.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_cy.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_da.properties +2 -2
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_de.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_el.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_en.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_en_GB.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_es.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_es_MX.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_et.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_fi.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_fr.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_fr_CA.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_hi.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_hr.properties +2 -2
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_hu.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_id.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_it.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_iw.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ja.properties +2 -2
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_kk.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ko.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_lt.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_lv.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_mk.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ms.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_nl.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_no.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_pl.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_pt.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_pt_PT.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ro.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_ru.properties +2 -2
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sh.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sk.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sl.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sr.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_sv.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_th.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_tr.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_uk.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_vi.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_zh_CN.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/resources/resources_zh_TW.properties +1 -1
- package/src/main/js/sap/ushell/components/contentFinder/view/AppSearchCategoryTreeTable.fragment.xml +0 -1
- package/src/main/js/sap/ushell/components/contentFinderStandalone/Component.js +1 -1
- package/src/main/js/sap/ushell/components/contentFinderStandalone/controller/ContentFinderStandalone.controller.js +3 -3
- package/src/main/js/sap/ushell/components/contentFinderStandalone/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/factsheet/Component.js +1 -1
- package/src/main/js/sap/ushell/components/factsheet/tools/ODataUrlTemplating.js +1 -0
- package/src/main/js/sap/ushell/components/homeApp/error/HomeAppError.view.xml +1 -1
- package/src/main/js/sap/ushell/components/homepage/ActionMode.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/Component.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/DashboardContent.controller.js +1 -1
- package/src/main/js/sap/ushell/components/homepage/DashboardContent.view.js +2 -2
- package/src/main/js/sap/ushell/components/homepage/DashboardGroupsBox.js +1 -1
- 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 +8 -3
- package/src/main/js/sap/ushell/components/pages/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/pages/view/MyHomeStart.view.xml +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/controller/MenuBar.controller.js +4 -0
- package/src/main/js/sap/ushell/components/shell/MenuBar/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/NavigationBarMenu/controller/NavigationBarMenu.controller.js +1 -1
- 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 -1
- package/src/main/js/sap/ushell/components/shell/Notifications/Component.js +191 -64
- package/src/main/js/sap/ushell/components/shell/Notifications/NotificationsList.controller.js +876 -0
- package/src/main/js/sap/ushell/components/shell/Notifications/NotificationsListPopoverContent.view.xml +84 -0
- package/src/main/js/sap/ushell/components/shell/Notifications/NotificationsListPopoverHeader.fragment.xml +35 -0
- package/src/main/js/sap/ushell/components/shell/PostLoadingHeaderEnhancement/Component.js +23 -9
- package/src/main/js/sap/ushell/components/shell/ProductSwitch/Component.js +22 -9
- 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 +19 -14
- package/src/main/js/sap/ushell/components/shell/Settings/UserSettings.controller.js +2 -2
- package/src/main/js/sap/ushell/components/shell/Settings/UserSettings.view.xml +5 -4
- package/src/main/js/sap/ushell/components/shell/Settings/appearance/Appearance.controller.js +12 -17
- package/src/main/js/sap/ushell/components/shell/ShellBar/Component.js +11 -2
- package/src/main/js/sap/ushell/components/shell/ShellBar/controller/ShellBar.controller.js +123 -21
- package/src/main/js/sap/ushell/components/shell/ShellBar/manifest.json +1 -1
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_ar.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_bg.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_ca.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_cnr.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_cs.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_cy.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_da.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_de.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_el.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_en.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_en_GB.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_es.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_es_MX.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_et.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_fi.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_fr.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_fr_CA.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_hi.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_hr.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_hu.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_id.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_it.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_iw.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_ja.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_kk.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_ko.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_lt.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_lv.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_mk.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_ms.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_nl.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_no.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_pl.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_pt.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_pt_PT.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_ro.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_ru.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_sh.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_sk.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_sl.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_sr.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_sv.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_th.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_tr.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_uk.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_vi.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_zh_CN.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/resources/resources_zh_TW.properties +5 -0
- package/src/main/js/sap/ushell/components/shell/ShellBar/view/ShellBar.view.xml +22 -3
- package/src/main/js/sap/ushell/components/shell/SideNavigation/Component.js +5 -2
- package/src/main/js/sap/ushell/components/shell/SideNavigation/controller/SideNavigation.controller.js +83 -36
- package/src/main/js/sap/ushell/components/shell/SideNavigation/css/style.css +5 -0
- package/src/main/js/sap/ushell/components/shell/SideNavigation/manifest.json +8 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/Favorites.js +137 -26
- package/src/main/js/sap/ushell/components/shell/SideNavigation/modules/Spaces.js +1 -1
- package/src/main/js/sap/ushell/components/shell/SideNavigation/view/Main.view.xml +2 -1
- package/src/main/js/sap/ushell/components/shell/UserActionsMenu/Component.js +1 -1
- package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenu.controller.js +2 -0
- package/src/main/js/sap/ushell/components/shell/UserActionsMenu/UserActionsMenu.fragment.xml +1 -0
- package/src/main/js/sap/ushell/components/shell/UserImage/Component.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/generic.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorDual/DualTile.controller.js +1 -1
- package/src/main/js/sap/ushell/components/tiles/indicatorDualComparison/DualComparison.controller.js +2 -2
- package/src/main/js/sap/ushell/components/tiles/indicatorDualDeviation/DualDeviation.controller.js +4 -4
- package/src/main/js/sap/ushell/components/tiles/indicatorDualTrend/DualTrend.controller.js +18 -18
- package/src/main/js/sap/ushell/components/tiles/indicatorTileUtils/smartBusinessUtil.js +11 -11
- package/src/main/js/sap/ushell/components/visualizationOrganizer/Component.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/Component.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.accessibility.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.controller.js +30 -36
- package/src/main/js/sap/ushell/components/workPageBuilder/controller/WorkPageBuilder.layout.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPage.js +2 -2
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageButton.js +1 -1
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageCell.js +4 -4
- package/src/main/js/sap/ushell/components/workPageBuilder/controls/WorkPageColumn.js +2 -2
- 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_es_MX.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 +2 -2
- 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 +10 -2
- package/src/main/js/sap/ushell/modules/NavigationMenu.js +90 -0
- 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 +4 -10
- package/src/main/js/sap/ushell/renderer/Renderer.js +29 -27
- package/src/main/js/sap/ushell/renderer/RendererAppContainer.js +236 -0
- package/src/main/js/sap/ushell/renderer/Shell.controller.js +25 -212
- package/src/main/js/sap/ushell/renderer/Shell.view.js +34 -24
- package/src/main/js/sap/ushell/renderer/allMyApps/AllMyAppsManager.js +6 -6
- package/src/main/js/sap/ushell/renderer/rendererTargetWrapper/Component.js +105 -0
- package/src/main/js/sap/ushell/renderer/rendererTargetWrapper/RendererTarget.controller.js +83 -0
- package/src/main/js/sap/ushell/renderer/rendererTargetWrapper/RendererTarget.view.xml +12 -0
- package/src/main/js/sap/ushell/renderer/rendererTargetWrapper/manifest.json +43 -0
- package/src/main/js/sap/ushell/renderer/resources/resources.properties +34 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_ar.properties +19 -1
- package/src/main/js/sap/ushell/renderer/resources/resources_bg.properties +19 -1
- package/src/main/js/sap/ushell/renderer/resources/resources_ca.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_cnr.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_cs.properties +19 -1
- package/src/main/js/sap/ushell/renderer/resources/resources_cy.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_da.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_de.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_el.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_en.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_en_GB.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_en_US_saprigi.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_es.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_es_MX.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_et.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_fi.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_fr.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_fr_CA.properties +19 -1
- package/src/main/js/sap/ushell/renderer/resources/resources_hi.properties +21 -3
- package/src/main/js/sap/ushell/renderer/resources/resources_hr.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_hu.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_id.properties +33 -15
- package/src/main/js/sap/ushell/renderer/resources/resources_it.properties +19 -1
- package/src/main/js/sap/ushell/renderer/resources/resources_iw.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_ja.properties +19 -1
- package/src/main/js/sap/ushell/renderer/resources/resources_kk.properties +19 -1
- package/src/main/js/sap/ushell/renderer/resources/resources_ko.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_lt.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_lv.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_mk.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_ms.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_nl.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_no.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_pl.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_pt.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_pt_PT.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_ro.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_ru.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_sh.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_sk.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_sl.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_sr.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_sv.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_th.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_tr.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_uk.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_vi.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_zh_CN.properties +18 -0
- package/src/main/js/sap/ushell/renderer/resources/resources_zh_TW.properties +18 -0
- package/src/main/js/sap/ushell/renderer/search/searchComponent/manifest.json +1 -1
- package/src/main/js/sap/ushell/renderer/shellHeader/ShellHeader.controller.js +5 -11
- package/src/main/js/sap/ushell/renderers/fiori2/History.js +6 -6
- package/src/main/js/sap/ushell/renderers/fiori2/LogonFrameProvider.js +6 -6
- package/src/main/js/sap/ushell/renderers/fiori2/Renderer.js +11 -11
- package/src/main/js/sap/ushell/renderers/fiori2/RendererExtensions.js +2 -2
- package/src/main/js/sap/ushell/renderers/fiori2/Shell.view.js +2 -8
- package/src/main/js/sap/ushell/renderers/fiori2/allMyApps/AllMyAppsManager.js +6 -6
- package/src/main/js/sap/ushell/services/AppConfiguration.js +6 -6
- package/src/main/js/sap/ushell/services/AppLifeCycle.js +10 -16
- package/src/main/js/sap/ushell/services/AppState.js +1 -1
- package/src/main/js/sap/ushell/services/AppType.js +1 -1
- package/src/main/js/sap/ushell/services/Bookmark.js +2 -2
- package/src/main/js/sap/ushell/services/BookmarkV2.js +14 -14
- 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 +1 -1
- 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 +6 -6
- package/src/main/js/sap/ushell/services/CrossApplicationNavigation.js +3 -3
- package/src/main/js/sap/ushell/services/DarkModeSupport.js +9 -4
- 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 +54 -53
- 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 +4 -4
- 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 +21 -53
- package/src/main/js/sap/ushell/services/MessageBroker.js +1 -1
- package/src/main/js/sap/ushell/services/MessageInternal.js +1 -3
- package/src/main/js/sap/ushell/services/NavTargetResolution.js +2 -2
- package/src/main/js/sap/ushell/services/NavTargetResolutionInternal.js +0 -1
- package/src/main/js/sap/ushell/services/Navigation/compatibility.js +3 -2
- package/src/main/js/sap/ushell/services/Navigation/utils.js +1 -1
- package/src/main/js/sap/ushell/services/Navigation.js +1 -1
- package/src/main/js/sap/ushell/services/NavigationDataProvider.js +1 -1
- package/src/main/js/sap/ushell/services/Notifications.js +2 -1
- package/src/main/js/sap/ushell/services/NotificationsV2.js +7 -1
- 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 +3 -3
- 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 +7 -20
- 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/ShellNavigationHashChanger.js +2 -2
- package/src/main/js/sap/ushell/services/ShellNavigationInternal.js +1 -1
- package/src/main/js/sap/ushell/services/SmartNavigation.js +5 -5
- 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 +2 -2
- package/src/main/js/sap/ushell/services/URLTemplate.js +1 -1
- package/src/main/js/sap/ushell/services/Ui5ComponentLoader.js +2 -2
- package/src/main/js/sap/ushell/services/UsageAnalytics.js +10 -10
- 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 +2 -2
- package/src/main/js/sap/ushell/services/_AppState/AppStatePersistencyMethod.js +1 -0
- 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 +9 -10
- package/src/main/js/sap/ushell/services/_PageReferencing/PageReferencer.js +1 -1
- package/src/main/js/sap/ushell/services/_Personalization/ContextContainer.js +6 -6
- package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainer.js +11 -13
- package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainerVariant.js +4 -4
- package/src/main/js/sap/ushell/services/_Personalization/PersonalizationContainerVariantSet.js +12 -11
- package/src/main/js/sap/ushell/services/_Personalization/Personalizer.js +5 -3
- package/src/main/js/sap/ushell/services/_Personalization/TransientPersonalizer.js +4 -4
- package/src/main/js/sap/ushell/services/_Personalization/Variant.js +7 -7
- package/src/main/js/sap/ushell/services/_Personalization/VariantSet.js +3 -5
- package/src/main/js/sap/ushell/services/_Personalization/WindowAdapter.js +2 -2
- package/src/main/js/sap/ushell/services/_Personalization/WindowAdapterContainer.js +2 -1
- package/src/main/js/sap/ushell/services/_Personalization/constants.js +9 -10
- package/src/main/js/sap/ushell/services/_Personalization/constants.private.js +3 -4
- package/src/main/js/sap/ushell/services/_Personalization/utils.js +2 -1
- package/src/main/js/sap/ushell/services/personalization/VariantSetAdapter.js +4 -2
- package/src/main/js/sap/ushell/state/BackNavigation.js +1 -7
- package/src/main/js/sap/ushell/state/ContentDensity.js +1 -7
- package/src/main/js/sap/ushell/state/Favicon.js +1 -5
- package/src/main/js/sap/ushell/state/StateManager.js +9 -3
- package/src/main/js/sap/ushell/state/StateRules.js +5 -0
- package/src/main/js/sap/ushell/state/StrategyFactory/HeadEndItemsStrategy.js +8 -1
- package/src/main/js/sap/ushell/support/plugins/flpConfig/FlpConfigurationPlugin.js +1 -1
- package/src/main/js/sap/ushell/themes/base/MenuBar.less +3 -0
- package/src/main/js/sap/ushell/themes/base/Notifications.less +29 -0
- package/src/main/js/sap/ushell/themes/base/ShellBar.less +7 -0
- package/src/main/js/sap/ushell/themes/base/ShellHeader.less +5 -0
- package/src/main/js/sap/ushell/themes/base/library.source.less +1 -0
- package/src/main/js/sap/ushell/themes/sap_fiori_3_hcb/Notifications.less +4 -0
- package/src/main/js/sap/ushell/themes/sap_fiori_3_hcw/Notifications.less +4 -0
- package/src/main/js/sap/ushell/themes/sap_hcb/base_MenuBar.less +3 -0
- package/src/main/js/sap/ushell/themes/sap_hcb/base_ShellBar.less +7 -0
- package/src/main/js/sap/ushell/themes/sap_hcb/base_ShellHeader.less +5 -0
- package/src/main/js/sap/ushell/themes/sap_hcb/library.source.less +1 -0
- package/src/main/js/sap/ushell/themes/sap_horizon_hcb/Notifications.less +3 -0
- package/src/main/js/sap/ushell/themes/sap_horizon_hcw/Notifications.less +4 -0
- package/src/main/js/sap/ushell/thirdparty/Avatar.js +381 -0
- package/src/main/js/sap/ushell/thirdparty/BusyIndicator.js +464 -0
- package/src/main/js/sap/ushell/thirdparty/Button.js +7 -0
- package/src/main/js/sap/ushell/thirdparty/Button2.js +524 -0
- package/src/main/js/sap/ushell/thirdparty/Icon.js +296 -0
- package/src/main/js/sap/ushell/thirdparty/Icons.js +38 -35
- package/src/main/js/sap/ushell/thirdparty/Label.js +115 -0
- package/src/main/js/sap/ushell/thirdparty/Link.js +315 -0
- package/src/main/js/sap/ushell/thirdparty/List.js +1705 -0
- package/src/main/js/sap/ushell/thirdparty/ListItemCustom.js +95 -0
- package/src/main/js/sap/ushell/thirdparty/ListItemTemplate.js +3917 -0
- package/src/main/js/sap/ushell/thirdparty/Menu.js +406 -0
- package/src/main/js/sap/ushell/thirdparty/MenuItem.js +2 -350
- package/src/main/js/sap/ushell/thirdparty/MenuItem2.js +355 -0
- package/src/main/js/sap/ushell/thirdparty/NotificationList.js +291 -0
- package/src/main/js/sap/ushell/thirdparty/NotificationListGroupItem.js +310 -0
- package/src/main/js/sap/ushell/thirdparty/NotificationListItem.js +531 -0
- package/src/main/js/sap/ushell/thirdparty/NotificationListItemBase.js +98 -0
- package/src/main/js/sap/ushell/thirdparty/ShellBar.js +319 -547
- package/src/main/js/sap/ushell/thirdparty/Tag.js +307 -0
- package/src/main/js/sap/ushell/thirdparty/Text.js +127 -0
- package/src/main/js/sap/ushell/thirdparty/UserMenu.js +68 -866
- package/src/main/js/sap/ushell/thirdparty/UserMenuItem.js +2 -2
- package/src/main/js/sap/ushell/thirdparty/_dynamics/ListItemStandardExpandableTextTemplate.js +193 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons-TNT.js +561 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons-TNT2.js +561 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons-business-suite.js +1194 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/SAP-icons-business-suite2.js +1194 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ar3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_bg3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ca3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cnr3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cs3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_cy3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_da3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_de3.js +4 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_el3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_GB3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_sappsd3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi2.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saprigi3.js +6 -6
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_en_US_saptrc3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_es_MX3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_et3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fi3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_fr_CA3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hi3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hr3.js +11 -8
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_hu3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_id3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_it3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_iw3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ja3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_kk3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ko3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lt3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_lv3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_mk3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ms3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_nl3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_no3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pl3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_pt_PT3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ro3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_ru3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sh3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sk3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sl3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sr3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_sv3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_th3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_tr3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_uk3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi2.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_vi3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_CN3.js +3 -0
- package/src/main/js/sap/ushell/thirdparty/_dynamics/messagebundle_zh_TW3.js +3 -0
- 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.css25.js +7 -0
- 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/i18n-defaults.js +141 -135
- package/src/main/js/sap/ushell/thirdparty/i18n-defaults2.js +93 -0
- package/src/main/js/sap/ushell/thirdparty/information.js +103 -0
- package/src/main/js/sap/ushell/thirdparty/overflow.js +45 -0
- package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css.js +8 -0
- package/src/main/js/sap/ushell/thirdparty/toLowercaseEnumValue.js +15 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/Avatar.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/Button.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/Label.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/Menu.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/MenuItem.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/dist/Avatar.js +113 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/dist/Button.js +123 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/dist/Label.js +75 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents/dist/Menu.js +90 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-base.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/NotificationList.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/NotificationListGroupItem.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/NotificationListItem.js +4 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/NotificationList.js +60 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/NotificationListGroupItem.js +72 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/NotificationListItem.js +96 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/NotificationListItemBase.js +51 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori/dist/ShellBar.js +18 -6
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-fiori.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-icons-business-suite/AllIcons.js +26 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents-icons-tnt/AllIcons.js +26 -0
- package/src/main/js/sap/ushell/thirdparty/ui5/webcomponents.js +1 -1
- package/src/main/js/sap/ushell/thirdparty/webcomponents-base.js +41 -37
- package/src/main/js/sap/ushell/thirdparty/webcomponents-fiori.js +8 -8
- package/src/main/js/sap/ushell/thirdparty/webcomponents.js +16 -16
- package/src/main/js/sap/ushell/ui/ShellHeaderRenderer.js +5 -1
- package/src/main/js/sap/ushell/ui/appfinder/AppBoxRenderer.js +2 -1
- package/src/main/js/sap/ushell/ui/cards/RecentActivitiesExtension.js +1 -1
- package/src/main/js/sap/ushell/ui/footerbar/AddBookmarkButton.js +5 -1
- package/src/main/js/sap/ushell/ui/footerbar/SaveAsTile.controller.js +2 -1
- package/src/main/js/sap/ushell/ui/footerbar/SaveAsTile.view.js +2 -1
- package/src/main/js/sap/ushell/ui/footerbar/SendAsEmailButton.js +2 -1
- package/src/main/js/sap/ushell/ui/launchpad/AnchorItem.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/AnchorItemRenderer.js +2 -1
- package/src/main/js/sap/ushell/ui/launchpad/AnchorNavigationBar.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/AnchorNavigationBarRenderer.js +1 -1
- package/src/main/js/sap/ushell/ui/launchpad/DashboardGroupsContainer.js +2 -1
- package/src/main/js/sap/ushell/ui/launchpad/DashboardGroupsContainerRenderer.js +3 -2
- 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/ViewPortState.js +3 -3
- package/src/main/js/sap/ushell/ui/launchpad/VizInstance.js +23 -1
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceAbap.js +35 -34
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceCdm.js +5 -2
- package/src/main/js/sap/ushell/ui/launchpad/VizInstanceLaunchPage.js +1 -1
- 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 +73 -6
- package/src/main/js/sap/ushell/ui/shell/ShellHeadItem.js +2 -2
- 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/UriParameters.js +1 -0
- package/src/main/js/sap/ushell/utils/UrlShortening.js +3 -3
- package/src/main/js/sap/ushell/utils/workpage/WorkPageHost.js +4 -4
- package/src/main/js/sap/ushell/utils/workpage/WorkPageService.js +1 -1
- package/src/main/js/sap/ushell/utils/workpage/WorkPageVizInstantiation.js +1 -1
- package/src/main/js/sap/ushell/utils/workpage/resources/resources_es_MX.properties +1 -1
- package/src/test/js/sap/ushell/bootstrap/sandbox.js +1 -1
- package/ui5.yaml +0 -1
- package/src/main/js/sap/ushell/components/applicationIntegration/AppLifeCycle.js +0 -24
- package/src/main/js/sap/ushell/components/applicationIntegration/Storage.js +0 -19
- package/src/main/js/sap/ushell/components/applicationIntegration/application/Application.js +0 -23
- package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxHandler.js +0 -23
- package/src/main/js/sap/ushell/components/applicationIntegration/application/BlueBoxesCache.js +0 -16
- package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageAPI.js +0 -22
- package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageAPIInterface.js +0 -17
- package/src/main/js/sap/ushell/components/applicationIntegration/application/PostMessageUtils.js +0 -19
- package/src/main/js/sap/ushell/components/applicationIntegration/application/WebGUIStatefulHandler.js +0 -20
- package/src/main/js/sap/ushell/components/applicationIntegration/configuration/AppMeta.js +0 -24
- package/src/main/js/sap/ushell/components/applicationIntegration/relatedServices/RelatedServices.js +0 -24
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/AppLifeCycle.js +0 -1926
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/Storage.js +0 -62
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/Application.js +0 -709
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/BlueBoxHandler.js +0 -406
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/BlueBoxesCache.js +0 -263
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/PostMessageAPI.js +0 -2382
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/PostMessageAPIInterface.js +0 -143
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/PostMessageUtils.js +0 -192
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/application/WebGUIStatefulHandler.js +0 -90
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/configuration/AppMeta.js +0 -193
- package/src/main/js/sap/ushell/components/applicationIntegrationOld/relatedServices/RelatedServices.js +0 -91
- package/src/main/js/sap/ushell/components/container/ApplicationContainer.js +0 -1769
- package/src/main/js/sap/ushell/components/container/IframePOSTUtils.js +0 -232
- package/src/main/js/sap/ushell/renderer/RendererRootViewFallback.fragment.xml +0 -8
- package/src/main/js/sap/ushell/thirdparty/_dynamics/parameters-bundle.css.js +0 -7
- package/src/main/js/sap/ushell/thirdparty/parameters-bundle.css25.js +0 -7194
- package/src/main/js/sap/ushell/ui/AppContainer.js +0 -271
- package/src/main/js/sap/ushell/ui/AppContainerRenderer.js +0 -42
|
@@ -1,1769 +0,0 @@
|
|
|
1
|
-
// Copyright (c) 2009-2025 SAP SE, All Rights Reserved
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* @fileOverview The UI integration's SAPUI5 control which supports application embedding.
|
|
5
|
-
* @version 1.135.0
|
|
6
|
-
*/
|
|
7
|
-
sap.ui.define([
|
|
8
|
-
"sap/base/Log",
|
|
9
|
-
"sap/base/util/deepEqual",
|
|
10
|
-
"sap/base/util/uid",
|
|
11
|
-
"sap/ushell/utils/UriParameters",
|
|
12
|
-
"sap/m/MessagePopover",
|
|
13
|
-
"sap/m/Text",
|
|
14
|
-
"sap/ui/core/Component",
|
|
15
|
-
"sap/ui/core/ComponentContainer",
|
|
16
|
-
"sap/ui/core/Control",
|
|
17
|
-
"sap/ui/core/EventBus",
|
|
18
|
-
"sap/ui/core/Icon",
|
|
19
|
-
"sap/ui/core/RenderManager",
|
|
20
|
-
"sap/ui/core/Supportability",
|
|
21
|
-
"sap/ui/core/mvc/View",
|
|
22
|
-
"sap/ui/Device",
|
|
23
|
-
"sap/ui/thirdparty/jquery",
|
|
24
|
-
"sap/ui/thirdparty/URI",
|
|
25
|
-
"sap/ushell/ApplicationType",
|
|
26
|
-
"sap/ushell/Config",
|
|
27
|
-
"sap/ushell/EventHub",
|
|
28
|
-
"sap/ushell/library", // css style dependency
|
|
29
|
-
"sap/ushell/resources",
|
|
30
|
-
"sap/ushell/System",
|
|
31
|
-
"sap/ushell/User",
|
|
32
|
-
"sap/ushell/utils",
|
|
33
|
-
"sap/ui/thirdparty/hasher",
|
|
34
|
-
"sap/ushell/components/container/IframePOSTUtils",
|
|
35
|
-
"sap/ushell/Container",
|
|
36
|
-
"sap/ushell/ApplicationType/systemAlias",
|
|
37
|
-
"sap/ushell/utils/UrlParsing"
|
|
38
|
-
], function (
|
|
39
|
-
Log,
|
|
40
|
-
deepEqual,
|
|
41
|
-
fnGetUid,
|
|
42
|
-
UriParameters,
|
|
43
|
-
MessagePopover,
|
|
44
|
-
Text,
|
|
45
|
-
Component,
|
|
46
|
-
ComponentContainer,
|
|
47
|
-
Control,
|
|
48
|
-
EventBus,
|
|
49
|
-
Icon,
|
|
50
|
-
RenderManager,
|
|
51
|
-
Supportability,
|
|
52
|
-
View,
|
|
53
|
-
Device,
|
|
54
|
-
jQuery,
|
|
55
|
-
URI,
|
|
56
|
-
ApplicationType,
|
|
57
|
-
Config,
|
|
58
|
-
EventHub,
|
|
59
|
-
ushellLibrary,
|
|
60
|
-
resources,
|
|
61
|
-
System,
|
|
62
|
-
User,
|
|
63
|
-
ushellUtils,
|
|
64
|
-
hasher,
|
|
65
|
-
IframePOSTUtils,
|
|
66
|
-
Container,
|
|
67
|
-
systemAlias,
|
|
68
|
-
UrlParsing
|
|
69
|
-
) {
|
|
70
|
-
"use strict";
|
|
71
|
-
|
|
72
|
-
if (!Config.last("/core/navigation/enableAppLifeCycleFallback")) {
|
|
73
|
-
return {};
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
var sPREFIX = "sap.ushell.components.container.";
|
|
77
|
-
var sCOMPONENT = sPREFIX + "ApplicationContainer";
|
|
78
|
-
var sDIRTY_STATE_PREFIX = "sap.ushell.Container.dirtyState.";
|
|
79
|
-
var mLogouts,
|
|
80
|
-
oShellCommunicationHandlersObj,
|
|
81
|
-
fnHandleMessageEvent,
|
|
82
|
-
oMessageBrokerServicePromise;
|
|
83
|
-
var bPluginsStatusChecked = false;
|
|
84
|
-
var bKeepMessagesForPlugins = false;
|
|
85
|
-
var arrMessagesForPlugins = [];
|
|
86
|
-
var arrMessagesIdx = 0;
|
|
87
|
-
var iIframeIdx = 0;
|
|
88
|
-
|
|
89
|
-
// we have to cache the UI5 version first to have it available sync for the renderer
|
|
90
|
-
let sUI5Version = null;
|
|
91
|
-
let oUI5VersionPromise = ushellUtils.getUi5Version().then((sVersion) => {
|
|
92
|
-
Log.debug(`Using ui5-version: ${sVersion}`, null, sCOMPONENT);
|
|
93
|
-
sUI5Version = sVersion;
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* Method to adapt the CrossApplicationNavigation service method
|
|
98
|
-
* isUrlSupported to the request as issued by the SAP UI5 MessagePopover control
|
|
99
|
-
*
|
|
100
|
-
* @param {object} an object defined by the MessagePopover control containing the URL
|
|
101
|
-
* which should be validated and an ES6 promise object which has to be used to receive the validation results.
|
|
102
|
-
* This promise always needs to be resolved expecting { allowed: true|false } as a an argument to the resolve function.
|
|
103
|
-
*
|
|
104
|
-
* @since 1.30.0
|
|
105
|
-
* @private
|
|
106
|
-
*/
|
|
107
|
-
function adaptIsUrlSupportedResultForMessagePopover (oToBeValidated) {
|
|
108
|
-
Container.getServiceAsync("CrossApplicationNavigation").then(function (oCAService) {
|
|
109
|
-
oCAService.isUrlSupported(oToBeValidated.url).then(function () {
|
|
110
|
-
oToBeValidated.promise.resolve({ allowed: true, id: oToBeValidated.id });
|
|
111
|
-
}, function () {
|
|
112
|
-
oToBeValidated.promise.resolve({ allowed: false, id: oToBeValidated.id });
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
function initializeMessagePopover (eventData) {
|
|
118
|
-
//Hook CrossApplicationNavigation URL validation logic into the sap.m.MessagePopover control
|
|
119
|
-
var oMessageConceptDefaultHandlers = {
|
|
120
|
-
asyncURLHandler: ApplicationContainer.prototype._adaptIsUrlSupportedResultForMessagePopover
|
|
121
|
-
};
|
|
122
|
-
if (MessagePopover && MessagePopover.setDefaultHandlers) {
|
|
123
|
-
MessagePopover.setDefaultHandlers(oMessageConceptDefaultHandlers);
|
|
124
|
-
}
|
|
125
|
-
EventHub.emit("StepDone", eventData.stepName);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// MessagePopover and its dependent controls resources are ~200K. In order to minimize core-min file it is bundled in core-ext file.
|
|
129
|
-
// Therefore we need to wait until all resorces are loaded, before we initialize the MessagePopover.
|
|
130
|
-
EventHub.once("initMessagePopover").do(initializeMessagePopover);
|
|
131
|
-
|
|
132
|
-
mLogouts = new ushellUtils.Map();
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* Returns the logout handler function for the given container object.
|
|
136
|
-
*
|
|
137
|
-
* @param {sap.ushell.components.container.ApplicationContainer} oContainer
|
|
138
|
-
* the container object for which the logout handler is of interest
|
|
139
|
-
* @returns {function}
|
|
140
|
-
* the logout handler function for the given container. If no handler is registered
|
|
141
|
-
* <code>undefined</code> is returned.
|
|
142
|
-
* @private
|
|
143
|
-
*/
|
|
144
|
-
function getLogoutHandler (oContainer) {
|
|
145
|
-
return mLogouts.get(oContainer.getId());
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
function getCommunicationHandlers () {
|
|
149
|
-
return oShellCommunicationHandlersObj;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
/**
|
|
153
|
-
* Returns a map of all search parameters present in the search string of the given URL.
|
|
154
|
-
*
|
|
155
|
-
* @param {string} sUrl
|
|
156
|
-
* the URL
|
|
157
|
-
* @returns {object}
|
|
158
|
-
* in member <code>startupParameters</code> <code>map<string, string[]}></code> from key to array of values,
|
|
159
|
-
* in members <code>sap-xapp-state</code> an array of Cross application Navigation state keys, if present
|
|
160
|
-
* Note that this key is removed from startupParameters!
|
|
161
|
-
* @private
|
|
162
|
-
*/
|
|
163
|
-
function getParameterMap (sUrl) {
|
|
164
|
-
var mParams = UriParameters.fromURL(sUrl).mParams,
|
|
165
|
-
xAppState = mParams["sap-xapp-state"],
|
|
166
|
-
xAppStateData = mParams["sap-xapp-state-data"],
|
|
167
|
-
oResult;
|
|
168
|
-
delete mParams["sap-xapp-state"];
|
|
169
|
-
delete mParams["sap-xapp-state-data"];
|
|
170
|
-
oResult = {
|
|
171
|
-
startupParameters: mParams
|
|
172
|
-
};
|
|
173
|
-
if (xAppStateData) {
|
|
174
|
-
oResult["sap-xapp-state"] = xAppStateData;
|
|
175
|
-
}
|
|
176
|
-
if (xAppState) { // sap-xapp-state has priority over sap-xapp-state-data
|
|
177
|
-
oResult["sap-xapp-state"] = xAppState;
|
|
178
|
-
}
|
|
179
|
-
return oResult;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* Returns a translated text from the resource bundle.
|
|
184
|
-
*
|
|
185
|
-
* @param {string} sKey
|
|
186
|
-
* the key in the resource bundle
|
|
187
|
-
* @param {string[]} [aArgs]
|
|
188
|
-
* arguments to replace {0}..{9}
|
|
189
|
-
* @returns {string}
|
|
190
|
-
* the translated text
|
|
191
|
-
*/
|
|
192
|
-
function getTranslatedText (sKey, aArgs) {
|
|
193
|
-
return resources.i18n.getText(sKey, aArgs);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
/**
|
|
197
|
-
* Creates some SAPUI5 control telling the user that an error has occured.
|
|
198
|
-
*
|
|
199
|
-
* @returns {sap.ui.core.Control}
|
|
200
|
-
*/
|
|
201
|
-
function createErrorControl () {
|
|
202
|
-
return new Icon({
|
|
203
|
-
size: "2rem",
|
|
204
|
-
src: "sap-icon://error",
|
|
205
|
-
tooltip: ApplicationContainer.prototype._getTranslatedText("an_error_has_occured")
|
|
206
|
-
});
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
/**
|
|
210
|
-
* Destroys the child aggregation.
|
|
211
|
-
*/
|
|
212
|
-
function destroyChild (oContainer) {
|
|
213
|
-
const oChild = oContainer.getAggregation("child");
|
|
214
|
-
|
|
215
|
-
if (oChild instanceof ComponentContainer) {
|
|
216
|
-
// name contains .Component - must be trimmed
|
|
217
|
-
const sComponentName = oChild.getComponentInstance().getMetadata().getName().replace(/\.Component$/, "");
|
|
218
|
-
Log.debug("unloading component " + sComponentName, null, sCOMPONENT);
|
|
219
|
-
}
|
|
220
|
-
oContainer.destroyAggregation("child");
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
/**
|
|
224
|
-
* Creates a new SAPUI5 view or component for the given container and makes it a child. A view
|
|
225
|
-
* is created if the name ends with ".view.(viewType)".
|
|
226
|
-
* @param {sap.ushell.components.container.ApplicationContainer} oContainer
|
|
227
|
-
* the container
|
|
228
|
-
* @param {string} sUrl
|
|
229
|
-
* the base URL
|
|
230
|
-
* @param {string} sAdditionalInformation
|
|
231
|
-
* the additional information in the form "SAPUI5=<view_or_component_name>"
|
|
232
|
-
* @returns {Promise}
|
|
233
|
-
* when resolved, the view, or some "error" control
|
|
234
|
-
*/
|
|
235
|
-
function createUi5View (oContainer, sUrl, sAdditionalInformation) {
|
|
236
|
-
return new Promise(function (fnResolve) {
|
|
237
|
-
var iIndex,
|
|
238
|
-
iLast,
|
|
239
|
-
aMatches,
|
|
240
|
-
oUrlData,
|
|
241
|
-
sNamespace,
|
|
242
|
-
oViewData = {},
|
|
243
|
-
sViewName,
|
|
244
|
-
sViewType;
|
|
245
|
-
|
|
246
|
-
function setControlProps (oControl) {
|
|
247
|
-
oControl.setWidth(oContainer.getWidth());
|
|
248
|
-
oControl.setHeight(oContainer.getHeight());
|
|
249
|
-
oControl.addStyleClass("sapUShellApplicationContainer");
|
|
250
|
-
// Note: As a composite control, we need to aggregate our children (at least internally)!
|
|
251
|
-
oContainer.setAggregation("child", oControl, true);
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
iIndex = sUrl.indexOf("?");
|
|
255
|
-
if (iIndex >= 0) {
|
|
256
|
-
// pass GET parameters of URL via view data
|
|
257
|
-
oUrlData = ApplicationContainer.prototype._getParameterMap(sUrl);
|
|
258
|
-
oViewData = oUrlData.startupParameters;
|
|
259
|
-
sUrl = sUrl.slice(0, iIndex);
|
|
260
|
-
}
|
|
261
|
-
|
|
262
|
-
if (sUrl.slice(-1) !== "/") {
|
|
263
|
-
sUrl += "/"; // ensure URL ends with a slash
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
if (/\.view\.(\w+)$/i.test(sAdditionalInformation)) {
|
|
267
|
-
// ends with ".view.(viewType)": a view description
|
|
268
|
-
// /SAPUI5=(namespace)/(viewName).view.(viewType)/
|
|
269
|
-
aMatches = /^SAPUI5=(?:([^/]+)\/)?([^/]+)\.view\.(\w+)$/i.exec(sAdditionalInformation);
|
|
270
|
-
if (!aMatches) {
|
|
271
|
-
Log.error("Invalid SAPUI5 URL", sAdditionalInformation, sCOMPONENT);
|
|
272
|
-
fnResolve(ApplicationContainer.prototype._createErrorControl());
|
|
273
|
-
return;
|
|
274
|
-
}
|
|
275
|
-
// determine namespace, view name, and view type
|
|
276
|
-
sNamespace = aMatches[1];
|
|
277
|
-
sViewName = aMatches[2];
|
|
278
|
-
sViewType = aMatches[3].toUpperCase(); // @see sap.ui.core.mvc.ViewType
|
|
279
|
-
|
|
280
|
-
if (sNamespace) {
|
|
281
|
-
// prefix view name with namespace
|
|
282
|
-
sViewName = sNamespace + "." + sViewName;
|
|
283
|
-
} else {
|
|
284
|
-
// derive namespace from view name's "package"
|
|
285
|
-
iLast = sViewName.lastIndexOf(".");
|
|
286
|
-
if (iLast < 1) {
|
|
287
|
-
Log.error("Missing namespace", sAdditionalInformation, sCOMPONENT);
|
|
288
|
-
return ApplicationContainer.prototype._createErrorControl();
|
|
289
|
-
}
|
|
290
|
-
sNamespace = sViewName.slice(0, iLast);
|
|
291
|
-
}
|
|
292
|
-
} else {
|
|
293
|
-
// a component
|
|
294
|
-
sNamespace = sAdditionalInformation.replace(/^SAPUI5=/, "");
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
var paths = {};
|
|
298
|
-
var sAmdNamespace = sNamespace.replace(/\./g, "/");
|
|
299
|
-
paths[sNamespace] = sUrl + sAmdNamespace;
|
|
300
|
-
sap.ui.loader.config({
|
|
301
|
-
paths: paths
|
|
302
|
-
});
|
|
303
|
-
|
|
304
|
-
// destroy the child control before creating a new control with the same ID
|
|
305
|
-
ApplicationContainer.prototype._destroyChild(oContainer);
|
|
306
|
-
if (sViewName) {
|
|
307
|
-
if (oContainer.getApplicationConfiguration()) {
|
|
308
|
-
oViewData.config = oContainer.getApplicationConfiguration();
|
|
309
|
-
}
|
|
310
|
-
View.create({
|
|
311
|
-
id: oContainer.getId() + "-content",
|
|
312
|
-
type: sViewType,
|
|
313
|
-
viewData: oViewData || {},
|
|
314
|
-
viewName: sViewName
|
|
315
|
-
})
|
|
316
|
-
.then(function (oControl) {
|
|
317
|
-
oContainer.fireEvent("applicationConfiguration");
|
|
318
|
-
setControlProps(oControl);
|
|
319
|
-
fnResolve(oControl);
|
|
320
|
-
});
|
|
321
|
-
} else {
|
|
322
|
-
Log.debug("loading component " + sNamespace, null, sCOMPONENT);
|
|
323
|
-
// presence of startupParameters member indicates root component, thus
|
|
324
|
-
// we assure it's always filled with at least empty object
|
|
325
|
-
var componentData = oUrlData ? {
|
|
326
|
-
startupParameters: oUrlData.startupParameters
|
|
327
|
-
} : { startupParameters: {} };
|
|
328
|
-
if (oUrlData && oUrlData["sap-xapp-state-data"]) {
|
|
329
|
-
componentData["sap-xapp-state"] = oUrlData["sap-xapp-state-data"];
|
|
330
|
-
}
|
|
331
|
-
if (oUrlData && oUrlData["sap-xapp-state"]) { // sap-xapp-state has priority over sap-xapp-state-data
|
|
332
|
-
componentData["sap-xapp-state"] = oUrlData["sap-xapp-state"];
|
|
333
|
-
}
|
|
334
|
-
if (oContainer.getApplicationConfiguration()) {
|
|
335
|
-
componentData.config = oContainer.getApplicationConfiguration();
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
Component.create({
|
|
339
|
-
id: oContainer.getId() + "-component",
|
|
340
|
-
componentData: componentData,
|
|
341
|
-
name: sNamespace
|
|
342
|
-
})
|
|
343
|
-
.then(function (oComponent) {
|
|
344
|
-
//TODO ensure event is fired even in error case (try/catch)
|
|
345
|
-
oContainer.fireEvent("applicationConfiguration",
|
|
346
|
-
{ configuration: oComponent.getManifestEntry("/sap.ui5/config") });
|
|
347
|
-
var oNewControl = new ComponentContainer({
|
|
348
|
-
id: oContainer.getId() + "-content",
|
|
349
|
-
component: oComponent
|
|
350
|
-
});
|
|
351
|
-
setControlProps(oNewControl);
|
|
352
|
-
fnResolve(oNewControl);
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
});
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
/**
|
|
359
|
-
* publish an external event asynchronously via the event bus
|
|
360
|
-
* The channel id is hard coded to sap.ushell
|
|
361
|
-
* @param {string} sEventName event name
|
|
362
|
-
* @param {object} oData event parameters
|
|
363
|
-
*/
|
|
364
|
-
function publishExternalEvent (sEventName, oData) {
|
|
365
|
-
setTimeout(function () {
|
|
366
|
-
EventBus.getInstance().publish("sap.ushell", sEventName, oData);
|
|
367
|
-
}, 0);
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
/**
|
|
371
|
-
* Creates a new SAPUI5 component for the given container and makes it a child.
|
|
372
|
-
* @param {sap.ushell.components.container.ApplicationContainer} oContainer
|
|
373
|
-
* the container
|
|
374
|
-
* @param {string} sUrl
|
|
375
|
-
* the base URL
|
|
376
|
-
* @param {string} sComponentName the component name
|
|
377
|
-
* @returns {{oControl: object, oPromise: Promise}}
|
|
378
|
-
* the control already created or the promise to the control to be created
|
|
379
|
-
*/
|
|
380
|
-
function createUi5Component (oContainer, sUrl, sComponentName) {
|
|
381
|
-
var that = this,
|
|
382
|
-
oDeferred,
|
|
383
|
-
oResult = {
|
|
384
|
-
oControl: undefined,
|
|
385
|
-
oPromise: undefined
|
|
386
|
-
},
|
|
387
|
-
iIndex,
|
|
388
|
-
oComponentContainer,
|
|
389
|
-
oUrlData,
|
|
390
|
-
oComponentData = { startupParameters: {} },
|
|
391
|
-
oComponentConfig,
|
|
392
|
-
oComponentHandle = oContainer.getComponentHandle(),
|
|
393
|
-
oPluginLoadingPromise,
|
|
394
|
-
sPluginLoadingPromiseState;
|
|
395
|
-
|
|
396
|
-
function setControlProps (oComponent) {
|
|
397
|
-
// TODO ensure event is fired even in error case (try/catch)
|
|
398
|
-
oContainer.fireEvent("applicationConfiguration", { configuration: oComponent.getManifestEntry("/sap.ui5/config") });
|
|
399
|
-
oComponentContainer = new ComponentContainer({
|
|
400
|
-
id: oContainer.getId() + "-content",
|
|
401
|
-
component: oComponent
|
|
402
|
-
});
|
|
403
|
-
|
|
404
|
-
oComponentContainer.setHeight(oContainer.getHeight());
|
|
405
|
-
oComponentContainer.setWidth(oContainer.getWidth());
|
|
406
|
-
oComponentContainer.addStyleClass("sapUShellApplicationContainer");
|
|
407
|
-
oContainer._disableRouterEventHandler = ApplicationContainer.prototype._disableRouter.bind(that, oComponent);
|
|
408
|
-
EventBus.getInstance().subscribe("sap.ushell.components.container.ApplicationContainer", "_prior.newUI5ComponentInstantion", oContainer._disableRouterEventHandler);
|
|
409
|
-
|
|
410
|
-
// Note: As a composite control, we need to aggregate our children (at least internally)!
|
|
411
|
-
oContainer.setAggregation("child", oComponentContainer, true);
|
|
412
|
-
|
|
413
|
-
Container.getServiceAsync("PluginManager").then(function (oPluginManager) {
|
|
414
|
-
oPluginLoadingPromise = oPluginManager.getPluginLoadingPromise("RendererExtensions");
|
|
415
|
-
sPluginLoadingPromiseState = oPluginLoadingPromise && oPluginLoadingPromise.state();
|
|
416
|
-
if (sPluginLoadingPromiseState === "pending") {
|
|
417
|
-
oPluginLoadingPromise
|
|
418
|
-
.done(function () {
|
|
419
|
-
ApplicationContainer.prototype._publishExternalEvent("appComponentLoaded", { component: oComponent });
|
|
420
|
-
})
|
|
421
|
-
.fail(function () {
|
|
422
|
-
ApplicationContainer.prototype._publishExternalEvent("appComponentLoaded", { component: oComponent });
|
|
423
|
-
});
|
|
424
|
-
}
|
|
425
|
-
if (sPluginLoadingPromiseState === "resolved" || sPluginLoadingPromiseState === "rejected") {
|
|
426
|
-
ApplicationContainer.prototype._publishExternalEvent("appComponentLoaded", { component: oComponent });
|
|
427
|
-
}
|
|
428
|
-
});
|
|
429
|
-
|
|
430
|
-
return oComponentContainer;
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
iIndex = sUrl.indexOf("?");
|
|
434
|
-
if (iIndex >= 0) {
|
|
435
|
-
// pass GET parameters of URL via component data as member startupParameters and as xAppState
|
|
436
|
-
// (to allow blending with other oComponentData usage, e.g. extensibility use case)
|
|
437
|
-
oUrlData = ApplicationContainer.prototype._getParameterMap(sUrl);
|
|
438
|
-
oComponentData = {
|
|
439
|
-
startupParameters: oUrlData.startupParameters
|
|
440
|
-
};
|
|
441
|
-
if (oUrlData["sap-xapp-state-data"]) {
|
|
442
|
-
oComponentData["sap-xapp-state"] = oUrlData["sap-xapp-state-data"];
|
|
443
|
-
}
|
|
444
|
-
if (oUrlData["sap-xapp-state"]) { // sap-xapp-state has priority over sap-xapp-state-data
|
|
445
|
-
oComponentData["sap-xapp-state"] = oUrlData["sap-xapp-state"];
|
|
446
|
-
}
|
|
447
|
-
sUrl = sUrl.slice(0, iIndex);
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
if (oContainer.getApplicationConfiguration()) {
|
|
451
|
-
oComponentData.config = oContainer.getApplicationConfiguration();
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
if (sUrl.slice(-1) !== "/") {
|
|
455
|
-
sUrl += "/"; // ensure URL ends with a slash
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
// destroy the child control before creating a new control with the same ID
|
|
459
|
-
ApplicationContainer.prototype._destroyChild(oContainer);
|
|
460
|
-
|
|
461
|
-
oComponentConfig = {
|
|
462
|
-
id: oContainer.getId() + "-component",
|
|
463
|
-
name: sComponentName,
|
|
464
|
-
componentData: oComponentData
|
|
465
|
-
};
|
|
466
|
-
|
|
467
|
-
Log.debug("Creating component instance for " + sComponentName, JSON.stringify(oComponentConfig), sCOMPONENT);
|
|
468
|
-
|
|
469
|
-
EventBus.getInstance().publish("sap.ushell.components.container.ApplicationContainer", "_prior.newUI5ComponentInstantion", {
|
|
470
|
-
name: sComponentName
|
|
471
|
-
});
|
|
472
|
-
|
|
473
|
-
if (oComponentHandle) {
|
|
474
|
-
var oComponent = oComponentHandle.getInstance(oComponentConfig);
|
|
475
|
-
oResult.oControl = setControlProps(oComponent);
|
|
476
|
-
} else {
|
|
477
|
-
oDeferred = new jQuery.Deferred();
|
|
478
|
-
|
|
479
|
-
var paths = {};
|
|
480
|
-
var sAmdComponentName = sComponentName.replace(/\./g, "/");
|
|
481
|
-
paths[sAmdComponentName] = sUrl;
|
|
482
|
-
sap.ui.loader.config({
|
|
483
|
-
paths: paths
|
|
484
|
-
});
|
|
485
|
-
|
|
486
|
-
Log.error("No component handle available for '" + sComponentName + "'; fallback to component.load()", null, sCOMPONENT);
|
|
487
|
-
|
|
488
|
-
Component.create({
|
|
489
|
-
id: oContainer.getId() + "-component",
|
|
490
|
-
name: sComponentName,
|
|
491
|
-
manifest: false,
|
|
492
|
-
componentData: oComponentData
|
|
493
|
-
})
|
|
494
|
-
.then(function (oComponent) {
|
|
495
|
-
oDeferred.resolve(setControlProps(oComponent));
|
|
496
|
-
});
|
|
497
|
-
oResult.oPromise = oDeferred.promise();
|
|
498
|
-
}
|
|
499
|
-
return oResult;
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
/**
|
|
503
|
-
* Invoke <code>getRouter.stop()<code> on the oComponentAn event handler for the onNewAppInstantiated event
|
|
504
|
-
* @param {object} oComponent
|
|
505
|
-
* a SAPUI5 Component instance
|
|
506
|
-
*/
|
|
507
|
-
function disableRouter (oComponent) {
|
|
508
|
-
var rt;
|
|
509
|
-
if ((oComponent instanceof Component) && (typeof oComponent.getRouter === "function")) {
|
|
510
|
-
rt = oComponent.getRouter();
|
|
511
|
-
if (rt && (typeof rt.stop === "function")) {
|
|
512
|
-
Log.info("router stopped for instance " + oComponent.getId());
|
|
513
|
-
rt.stop();
|
|
514
|
-
}
|
|
515
|
-
}
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
/**
|
|
519
|
-
* Creates a system object that describes the URL's server.
|
|
520
|
-
* @param {string} sUrl
|
|
521
|
-
* the URL
|
|
522
|
-
* @param {object}
|
|
523
|
-
* the system object with <code>alias</code>, <code>baseUrl</code> describing the URL's
|
|
524
|
-
* server and <code>client</code> the client from the request property
|
|
525
|
-
* <code>sap-client</code>.
|
|
526
|
-
*/
|
|
527
|
-
function createSystemForUrl (sUrl) {
|
|
528
|
-
var oAnchor = document.createElement("a"),
|
|
529
|
-
sClient = UriParameters.fromURL(sUrl).get("sap-client"),
|
|
530
|
-
sBase;
|
|
531
|
-
|
|
532
|
-
oAnchor.href = sUrl;
|
|
533
|
-
sBase = oAnchor.protocol + "//" + oAnchor.host;
|
|
534
|
-
return new System({
|
|
535
|
-
alias: sClient ? sBase + "?sap-client=" + sClient : sBase,
|
|
536
|
-
baseUrl: sBase,
|
|
537
|
-
client: sClient || undefined,
|
|
538
|
-
platform: "abap"
|
|
539
|
-
});
|
|
540
|
-
}
|
|
541
|
-
|
|
542
|
-
/**
|
|
543
|
-
* Determine if the source of a received postMessage can be considered as trusted. We consider
|
|
544
|
-
* the content window of the application container's iframe as trusted
|
|
545
|
-
*
|
|
546
|
-
* @param {object} oContainer
|
|
547
|
-
* the application container instance
|
|
548
|
-
* @param {object} oMessage
|
|
549
|
-
* the postMessage event object
|
|
550
|
-
* @returns {boolean}
|
|
551
|
-
* true if source is considered to be trustworthy
|
|
552
|
-
* @private
|
|
553
|
-
* @since 1.24
|
|
554
|
-
*/
|
|
555
|
-
function isTrustedPostMessageSource (oContainer, oMessage) {
|
|
556
|
-
var bTrusted = false,
|
|
557
|
-
oDomRef = oContainer.getDomRef(),
|
|
558
|
-
oUri,
|
|
559
|
-
sOrigin;
|
|
560
|
-
|
|
561
|
-
// In case the app runs in iFrame, we need to change the position of the oDomRef from the (parent) div element to the IFrame element
|
|
562
|
-
if (oContainer.getIframeWithPost() === true && oDomRef && oDomRef.getAttribute && oDomRef.getAttribute("sap-iframe-app") == "true") {
|
|
563
|
-
oDomRef = jQuery("#" + oDomRef.getAttribute("id") + "-iframe")[0];
|
|
564
|
-
}
|
|
565
|
-
|
|
566
|
-
if (oDomRef) {
|
|
567
|
-
// In case the app runs in iFrame we trust the iframe itself and all the URLs from the same origin
|
|
568
|
-
// as configured in iFrame.
|
|
569
|
-
oUri = URI(oContainer._getIFrameUrl(oDomRef) || window.location && window.location.href || "");
|
|
570
|
-
sOrigin = oUri.protocol() + "://" + oUri.host();
|
|
571
|
-
|
|
572
|
-
bTrusted = (oMessage.source === oDomRef.contentWindow) || (oMessage.origin === sOrigin);
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
return bTrusted;
|
|
576
|
-
}
|
|
577
|
-
|
|
578
|
-
/**
|
|
579
|
-
* Returns the IFrame rendered by this application container.
|
|
580
|
-
*
|
|
581
|
-
* @returns {object}
|
|
582
|
-
* The iFrame DOM element or null if this cannot be retrieved.
|
|
583
|
-
*/
|
|
584
|
-
function getIFrame () {
|
|
585
|
-
var oIFrame = this.getDomRef();
|
|
586
|
-
if (!oIFrame || oIFrame.tagName !== "IFRAME") {
|
|
587
|
-
if (this.getIframeWithPost() === true && oIFrame && oIFrame.getAttribute && oIFrame.getAttribute("sap-iframe-app") == "true") {
|
|
588
|
-
return jQuery("#" + oIFrame.getAttribute("id") + "-iframe")[0];
|
|
589
|
-
}
|
|
590
|
-
return null;
|
|
591
|
-
}
|
|
592
|
-
return oIFrame;
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
/**
|
|
596
|
-
* Returns the IFrame URL (both in a simple iframe or in iframe with form+post)
|
|
597
|
-
*
|
|
598
|
-
* @param {object} oIFrame
|
|
599
|
-
* optional. the iframe DOM element.
|
|
600
|
-
* @returns {string}
|
|
601
|
-
* The iFrame URL.
|
|
602
|
-
*/
|
|
603
|
-
function getIFrameUrl (oIFrame) {
|
|
604
|
-
var sUrl;
|
|
605
|
-
|
|
606
|
-
if (oIFrame === undefined) {
|
|
607
|
-
oIFrame = this._getIFrame();
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
if (this.getIframeWithPost() === true) {
|
|
611
|
-
sUrl = jQuery("#" + oIFrame.getAttribute("id").replace("-iframe", "-form"))[0].action;
|
|
612
|
-
if (sUrl === undefined && (new URI()).query(true).hasOwnProperty("sap-isolation-enabled")) {
|
|
613
|
-
sUrl = oIFrame.src;
|
|
614
|
-
}
|
|
615
|
-
} else {
|
|
616
|
-
sUrl = oIFrame.src;
|
|
617
|
-
}
|
|
618
|
-
|
|
619
|
-
return sUrl;
|
|
620
|
-
}
|
|
621
|
-
|
|
622
|
-
/**
|
|
623
|
-
* Event handler receiving post message events
|
|
624
|
-
*
|
|
625
|
-
* @param {object} oContainer
|
|
626
|
-
* the current application container.
|
|
627
|
-
* @param {Event} oMessage
|
|
628
|
-
* the received postMessage event
|
|
629
|
-
*
|
|
630
|
-
* @private
|
|
631
|
-
* @since 1.21.2
|
|
632
|
-
*
|
|
633
|
-
*/
|
|
634
|
-
function handleMessageEvent (oContainer, oMessage) {
|
|
635
|
-
//first, check that the messages arrived from the iframe this listener was created for
|
|
636
|
-
// if (oContainer && oContainer._getIFrame && oContainer._getIFrame() && oContainer._getIFrame().contentWindow !== oMessage.source) {
|
|
637
|
-
// return;
|
|
638
|
-
// }
|
|
639
|
-
|
|
640
|
-
var sUi5ComponentName = oContainer && oContainer.getUi5ComponentName && oContainer.getUi5ComponentName(),
|
|
641
|
-
oMessageData = oMessage.data,
|
|
642
|
-
bIframeIsValidMsg = typeof oMessageData === "string" && oMessageData.indexOf("sap.ushell.appRuntime.iframeIsValid") > 0;
|
|
643
|
-
|
|
644
|
-
if (oContainer && !oContainer.getActive() && bIframeIsValidMsg !== true) {
|
|
645
|
-
Log.debug(
|
|
646
|
-
"Skipping handling of postMessage 'message' event with data '" + JSON.stringify(oMessageData) + "' on inactive container '" + oContainer.getId() + "'",
|
|
647
|
-
"Only active containers can handle 'message' postMessage event",
|
|
648
|
-
"sap.ushell.components.container.ApplicationContainer"
|
|
649
|
-
);
|
|
650
|
-
return;
|
|
651
|
-
}
|
|
652
|
-
|
|
653
|
-
if (typeof sUi5ComponentName === "string") {
|
|
654
|
-
Log.debug(
|
|
655
|
-
"Skipping handling of postMessage 'message' event with data '" + JSON.stringify(oMessageData) + "' on container of UI5 application '" + sUi5ComponentName + "'",
|
|
656
|
-
"Only non UI5 application containers can handle 'message' postMessage event",
|
|
657
|
-
"sap.ushell.components.container.ApplicationContainer"
|
|
658
|
-
);
|
|
659
|
-
return;
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
var oMessageStatus = {
|
|
663
|
-
bPluginsStatusChecked: bPluginsStatusChecked,
|
|
664
|
-
bKeepMessagesForPlugins: bKeepMessagesForPlugins,
|
|
665
|
-
bApiRegistered: true
|
|
666
|
-
};
|
|
667
|
-
|
|
668
|
-
fnHandleMessageEvent(oContainer, oMessage, oMessageStatus);
|
|
669
|
-
ApplicationContainer.prototype._handlePostMessagesForPluginsPostLoading(oContainer, oMessage, oMessageStatus);
|
|
670
|
-
}
|
|
671
|
-
|
|
672
|
-
/**
|
|
673
|
-
* Handle post message requests that could not be processed before the
|
|
674
|
-
* 'RendererExtensions' plugins finished loading.
|
|
675
|
-
* The function collects that unprocessed messages while the plugins
|
|
676
|
-
* are still loaded. After the plugins finished loading, we run
|
|
677
|
-
* on the queue and process the post messages again, and after
|
|
678
|
-
* that we disable the mechanism and empty the queue.
|
|
679
|
-
*
|
|
680
|
-
* @param {sap.ushell.components.container.ApplicationContainer} oContainer
|
|
681
|
-
* application container received the post message
|
|
682
|
-
* @param {object} oMessage
|
|
683
|
-
* the post message received
|
|
684
|
-
* @param {object} oMessageStatus
|
|
685
|
-
* processing result status of the message
|
|
686
|
-
*
|
|
687
|
-
* @private
|
|
688
|
-
*/
|
|
689
|
-
function handlePostMessagesForPluginsPostLoading (oContainer, oMessage, oMessageStatus) {
|
|
690
|
-
var oPluginPromise,
|
|
691
|
-
sPluginPromiseState;
|
|
692
|
-
|
|
693
|
-
if (oMessageStatus.bApiRegistered !== false) {
|
|
694
|
-
return;
|
|
695
|
-
}
|
|
696
|
-
|
|
697
|
-
Container.getServiceAsync("PluginManager").then(function (oPluginManager) {
|
|
698
|
-
if (bPluginsStatusChecked === false) {
|
|
699
|
-
bPluginsStatusChecked = true;
|
|
700
|
-
oPluginPromise = oPluginManager.getPluginLoadingPromise("RendererExtensions");
|
|
701
|
-
sPluginPromiseState = oPluginPromise && oPluginPromise.state();
|
|
702
|
-
if (sPluginPromiseState === "pending") {
|
|
703
|
-
bKeepMessagesForPlugins = true;
|
|
704
|
-
oPluginPromise.always(function () {
|
|
705
|
-
var oMsgObj;
|
|
706
|
-
bKeepMessagesForPlugins = false;
|
|
707
|
-
Log.debug("Processing post messages queue after 'RendererExtensions' plugins loaded, queue size is: "
|
|
708
|
-
+ arrMessagesForPlugins.length,
|
|
709
|
-
null,
|
|
710
|
-
"sap.ushell.components.container.ApplicationContainer");
|
|
711
|
-
for (var i = 0; i < arrMessagesForPlugins.length; i++) {
|
|
712
|
-
oMsgObj = arrMessagesForPlugins[i];
|
|
713
|
-
try {
|
|
714
|
-
ApplicationContainer.prototype._handleMessageEvent.call(oMsgObj.that, oMsgObj.oContainer, oMsgObj.oMessage);
|
|
715
|
-
} catch (ex) {
|
|
716
|
-
Log.error(ex.message || ex, null, "sap.ushell.components.container.ApplicationContainer");
|
|
717
|
-
}
|
|
718
|
-
}
|
|
719
|
-
arrMessagesForPlugins = [];
|
|
720
|
-
});
|
|
721
|
-
}
|
|
722
|
-
}
|
|
723
|
-
|
|
724
|
-
if (bKeepMessagesForPlugins === true) {
|
|
725
|
-
arrMessagesForPlugins.push({
|
|
726
|
-
index: arrMessagesIdx++,
|
|
727
|
-
that: this,
|
|
728
|
-
oContainer: oContainer,
|
|
729
|
-
oMessage: oMessage
|
|
730
|
-
});
|
|
731
|
-
}
|
|
732
|
-
});
|
|
733
|
-
}
|
|
734
|
-
|
|
735
|
-
/**
|
|
736
|
-
* Reset all global variables related to the messages processing when
|
|
737
|
-
* plugins are not loaded yet.
|
|
738
|
-
* This function is called from the qunit only.
|
|
739
|
-
*
|
|
740
|
-
* @private
|
|
741
|
-
*/
|
|
742
|
-
function resetPluginsLoadIndications () {
|
|
743
|
-
bPluginsStatusChecked = false;
|
|
744
|
-
bKeepMessagesForPlugins = false;
|
|
745
|
-
arrMessagesForPlugins = [];
|
|
746
|
-
arrMessagesIdx = 0;
|
|
747
|
-
}
|
|
748
|
-
|
|
749
|
-
/**
|
|
750
|
-
* Logout Event Handler.
|
|
751
|
-
* Calls the logout URL when the NWBC is used in the canvas.
|
|
752
|
-
*
|
|
753
|
-
* @param {sap.ushell.components.container.ApplicationContainer} oContainer
|
|
754
|
-
* application container having the NWBC iframe
|
|
755
|
-
* @param {sap.ui.base.Event} oEvent
|
|
756
|
-
* oEvent.preventDefault() is called to let the caller know that the
|
|
757
|
-
* following redirect has to be deferred in order get the NWBC logout done.
|
|
758
|
-
*
|
|
759
|
-
* @private
|
|
760
|
-
*/
|
|
761
|
-
function logout (oContainer, oEvent) {
|
|
762
|
-
var oIframe = oContainer._getIFrame(),
|
|
763
|
-
sApplicationType = oContainer.getApplicationType();
|
|
764
|
-
|
|
765
|
-
if (ushellUtils.isApplicationTypeEmbeddedInIframe(oContainer.getApplicationType(sApplicationType)) && oIframe) {
|
|
766
|
-
var oUri = new URI(oContainer._getIFrameUrl(oIframe));
|
|
767
|
-
var targetDomain = oUri.protocol() + "://" + oUri.host();
|
|
768
|
-
|
|
769
|
-
oIframe.contentWindow.postMessage(JSON.stringify(
|
|
770
|
-
{ action: "pro54_disableDirtyHandler" }
|
|
771
|
-
), targetDomain);
|
|
772
|
-
// tell caller that at least one NWBC needs some time to receive a message
|
|
773
|
-
oEvent.preventDefault();
|
|
774
|
-
}
|
|
775
|
-
}
|
|
776
|
-
|
|
777
|
-
/**
|
|
778
|
-
* Renders the given child control inside a DIV representing the given container.
|
|
779
|
-
*
|
|
780
|
-
* @param {sap.ui.core.RenderManager} oRenderManager
|
|
781
|
-
* @param {sap.ushell.components.container.ApplicationContainer} oContainer
|
|
782
|
-
* the application container which is "replaced" by the error control
|
|
783
|
-
* @param {sap.ui.core.Control} [oChild]
|
|
784
|
-
*/
|
|
785
|
-
function renderControlInDiv (oRenderManager, oContainer, oChild) {
|
|
786
|
-
oRenderManager
|
|
787
|
-
.openStart("div", oContainer)
|
|
788
|
-
.accessibilityState(oContainer)
|
|
789
|
-
.class("sapUShellApplicationContainer")
|
|
790
|
-
.style("height", oContainer.getHeight())
|
|
791
|
-
.style("width", oContainer.getWidth())
|
|
792
|
-
.openEnd();
|
|
793
|
-
|
|
794
|
-
if (oChild) {
|
|
795
|
-
oRenderManager.renderControl(oChild);
|
|
796
|
-
}
|
|
797
|
-
oRenderManager.close("div");
|
|
798
|
-
}
|
|
799
|
-
|
|
800
|
-
/**
|
|
801
|
-
* Check if adjustNwbcUrl needs to be called, and if needed - call it
|
|
802
|
-
*
|
|
803
|
-
* @param {sap.ushell.components.container.ApplicationContainer} oContainer Application Container
|
|
804
|
-
* @param {ApplicationType.enum} sApplicationType Application type
|
|
805
|
-
* @param {string} sUrl Url that needs to be adjusted
|
|
806
|
-
* @param {boolean} bForFramelessWindow whether the url is for a frameless window
|
|
807
|
-
* the base URL
|
|
808
|
-
* @returns {string} Url what was adjusted
|
|
809
|
-
* @private
|
|
810
|
-
*/
|
|
811
|
-
function checkNwbcUrlAdjustment (oContainer, sApplicationType, sUrl, bForFramelessWindow) {
|
|
812
|
-
if (bForFramelessWindow === undefined) {
|
|
813
|
-
bForFramelessWindow = false;
|
|
814
|
-
}
|
|
815
|
-
if (ushellUtils.isApplicationTypeEmbeddedInIframe(sApplicationType, true) || (oContainer && ushellUtils.isApplicationTypeEmbeddedInIframe(oContainer.getFrameworkId()))) {
|
|
816
|
-
var sTargetNavigationMode = oContainer && oContainer.getTargetNavigationMode();
|
|
817
|
-
|
|
818
|
-
// amend already resolved url with additional parameters
|
|
819
|
-
sUrl = ApplicationContainer.prototype._adjustNwbcUrl(sUrl, sApplicationType, sTargetNavigationMode, oContainer && oContainer.getStatefulType() > 0, bForFramelessWindow);
|
|
820
|
-
|
|
821
|
-
// add this container to list of NWBC-containing containers
|
|
822
|
-
if (oContainer && bForFramelessWindow === false) {
|
|
823
|
-
ushellUtils.localStorageSetItem(oContainer.globalDirtyStorageKey, Container.DirtyState.INITIAL);
|
|
824
|
-
}
|
|
825
|
-
}
|
|
826
|
-
|
|
827
|
-
return sUrl;
|
|
828
|
-
}
|
|
829
|
-
|
|
830
|
-
/**
|
|
831
|
-
* Amends the NavTargetResolutionInternal response with theme, sap-ushell-version, accessibility and post parameters if present.
|
|
832
|
-
* Theme and accessibility information is only added for the NWBC application type.
|
|
833
|
-
*
|
|
834
|
-
* @param {string} sUrl
|
|
835
|
-
* Already resolved url (NavTargetResolutionInternal response)
|
|
836
|
-
* @param {string} sUrlApplicationType
|
|
837
|
-
* The application type of <code>sUrl</code>
|
|
838
|
-
* @param {string} sTargetNavigationMode
|
|
839
|
-
* The (external) navigation mode to add in the sap-target-navmode parameter
|
|
840
|
-
* @param {boolean} bReuseSession whether the session should is reused
|
|
841
|
-
* @param {boolean} bForFramelessWindow whether the url is for a frameless window
|
|
842
|
-
* @returns {string}
|
|
843
|
-
* Modified url having additional parameters
|
|
844
|
-
* @private
|
|
845
|
-
*/
|
|
846
|
-
function adjustNwbcUrl (sUrl, sUrlApplicationType, sTargetNavigationMode, bReuseSession, bForFramelessWindow) {
|
|
847
|
-
|
|
848
|
-
// Parameters of the shell specific part to be added for NWBC Url
|
|
849
|
-
var oShPara = {};
|
|
850
|
-
|
|
851
|
-
if (bForFramelessWindow === undefined) {
|
|
852
|
-
bForFramelessWindow = false;
|
|
853
|
-
}
|
|
854
|
-
var sTheme;
|
|
855
|
-
|
|
856
|
-
function addSearchOrShellParamsToURL (sUrlorHash, oShellParams) {
|
|
857
|
-
if (sUrlorHash.indexOf("#") === -1) {
|
|
858
|
-
return UrlParsing.addParamsToUrl(sUrlorHash, oShellParams);
|
|
859
|
-
}
|
|
860
|
-
return UrlParsing.addShellParamsToURL(sUrlorHash, oShellParams);
|
|
861
|
-
}
|
|
862
|
-
|
|
863
|
-
function getAccessibility () {
|
|
864
|
-
var vUrl = ushellUtils.getParameterValueBoolean("sap-accessibility");
|
|
865
|
-
if (vUrl !== undefined) {
|
|
866
|
-
return vUrl;
|
|
867
|
-
}
|
|
868
|
-
return Container.getUser().getAccessibilityMode();
|
|
869
|
-
}
|
|
870
|
-
function getTheme () {
|
|
871
|
-
var oResolvedUrlParameters = UriParameters.fromURL(sUrl) || { mParams: {} };
|
|
872
|
-
|
|
873
|
-
// To take care of the precedence of the intent over UI5 configuration
|
|
874
|
-
if (oResolvedUrlParameters.mParams["sap-theme"] === undefined) {
|
|
875
|
-
return Container.getUser()
|
|
876
|
-
.getTheme(User.prototype.constants.themeFormat.NWBC);
|
|
877
|
-
}
|
|
878
|
-
return undefined;
|
|
879
|
-
}
|
|
880
|
-
function getStatistics () {
|
|
881
|
-
var bAddStatistics = false,
|
|
882
|
-
oResolvedUrlParameters = UriParameters.fromURL(sUrl) || { mParams: {} };
|
|
883
|
-
|
|
884
|
-
// To take care of the precedence of the intent over UI5 configuration
|
|
885
|
-
bAddStatistics = Supportability.isStatisticsEnabled()
|
|
886
|
-
&& oResolvedUrlParameters.mParams["sap-statistics"] === undefined;
|
|
887
|
-
return bAddStatistics;
|
|
888
|
-
}
|
|
889
|
-
function getInAppState () {
|
|
890
|
-
var sHash = hasher && hasher.getHash(),
|
|
891
|
-
sKey = "",
|
|
892
|
-
aParams;
|
|
893
|
-
|
|
894
|
-
if (sHash && sHash.length > 0 && sHash.indexOf("sap-iapp-state=") > 0) {
|
|
895
|
-
aParams = /(?:sap-iapp-state=)([^&/]+)/.exec(sHash);
|
|
896
|
-
if (aParams && aParams.length === 2) {
|
|
897
|
-
sKey = aParams[1];
|
|
898
|
-
}
|
|
899
|
-
}
|
|
900
|
-
|
|
901
|
-
return sKey;
|
|
902
|
-
}
|
|
903
|
-
function getDensity () {
|
|
904
|
-
var sVal = "";
|
|
905
|
-
var bIsCompact = (!!jQuery("body.sapUiSizeCompact").length);
|
|
906
|
-
var bIsCozy = (!!jQuery("body.sapUiSizeCozy").length);
|
|
907
|
-
|
|
908
|
-
if (bIsCompact === true) {
|
|
909
|
-
sVal = "0";
|
|
910
|
-
} else if (bIsCozy) {
|
|
911
|
-
sVal = "1";
|
|
912
|
-
}
|
|
913
|
-
|
|
914
|
-
return sVal;
|
|
915
|
-
}
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
// force IE to edge mode
|
|
919
|
-
oShPara["sap-ie"] = "edge";
|
|
920
|
-
|
|
921
|
-
sTheme = getTheme();
|
|
922
|
-
if (sTheme) {
|
|
923
|
-
// note, we do not replace existing parameters
|
|
924
|
-
oShPara["sap-theme"] = sTheme;
|
|
925
|
-
}
|
|
926
|
-
|
|
927
|
-
if (getAccessibility()) {
|
|
928
|
-
// propagate accessibility mode
|
|
929
|
-
// Note: This is handled by the WebGUI/WDA framework which expects a value of "X"!
|
|
930
|
-
oShPara["sap-accessibility"] = "X";
|
|
931
|
-
// note, we do not replace existing parameters
|
|
932
|
-
}
|
|
933
|
-
if (getStatistics()) {
|
|
934
|
-
// propagate statistics = true
|
|
935
|
-
// Note: This is handled by the IFC handler on ABAP, which expects a value of "true" (not "X")
|
|
936
|
-
oShPara["sap-statistics"] = "true";
|
|
937
|
-
// note, we do not replace existing parameters
|
|
938
|
-
}
|
|
939
|
-
|
|
940
|
-
var sDensity = getDensity();
|
|
941
|
-
if (sDensity && sDensity.length > 0) {
|
|
942
|
-
oShPara["sap-touch"] = sDensity;
|
|
943
|
-
}
|
|
944
|
-
|
|
945
|
-
if (bForFramelessWindow === false) {
|
|
946
|
-
if (sTargetNavigationMode) {
|
|
947
|
-
oShPara["sap-target-navmode"] = sTargetNavigationMode;
|
|
948
|
-
// note, we do not replace existing parameters
|
|
949
|
-
}
|
|
950
|
-
|
|
951
|
-
if (sUrlApplicationType === "TR" || sUrlApplicationType === "GUI") {
|
|
952
|
-
oShPara["sap-keepclientsession"] = "2";
|
|
953
|
-
} else if (bReuseSession) { // 'NWBC', 'WCF', 'WDA'
|
|
954
|
-
oShPara["sap-keepclientsession"] = "1";
|
|
955
|
-
}
|
|
956
|
-
|
|
957
|
-
var sKey = getInAppState();
|
|
958
|
-
if (sKey && sKey.length > 0) {
|
|
959
|
-
oShPara["sap-iapp-state"] = sKey;
|
|
960
|
-
}
|
|
961
|
-
|
|
962
|
-
var sessionTimeout = 0;
|
|
963
|
-
if (Config.last("/core/shell/sessionTimeoutIntervalInMinutes") > 0) {
|
|
964
|
-
sessionTimeout = Config.last("/core/shell/sessionTimeoutIntervalInMinutes");
|
|
965
|
-
}
|
|
966
|
-
oShPara["sap-ushell-timeout"] = sessionTimeout;
|
|
967
|
-
|
|
968
|
-
sUrl = addSearchOrShellParamsToURL(sUrl, oShPara);
|
|
969
|
-
|
|
970
|
-
// The renderer "waits" for the ui5 version to be available
|
|
971
|
-
return ushellUtils.appendSapShellParamSync(sUrl, sUrlApplicationType, sUI5Version);
|
|
972
|
-
}
|
|
973
|
-
return addSearchOrShellParamsToURL(sUrl, oShPara);
|
|
974
|
-
}
|
|
975
|
-
|
|
976
|
-
/**
|
|
977
|
-
* Renders the SAPUI5 component with the given name and URL. If the child aggregation is already set and no properties have changed,
|
|
978
|
-
* the component is not recreated.
|
|
979
|
-
*/
|
|
980
|
-
function renderUi5Component (oRenderManager, oContainer, sUrl, sComponentName) {
|
|
981
|
-
var oChild = oContainer.getAggregation("child"),
|
|
982
|
-
oNewRenderManager,
|
|
983
|
-
oResult;
|
|
984
|
-
|
|
985
|
-
if (!oChild || oContainer._bRecreateChild) {
|
|
986
|
-
oResult = ApplicationContainer.prototype._createUi5Component(oContainer, sUrl, sComponentName);
|
|
987
|
-
if (oResult.oControl !== undefined) {
|
|
988
|
-
//the control was already created, not need to wait for async result
|
|
989
|
-
oContainer._bRecreateChild = false;
|
|
990
|
-
ApplicationContainer.prototype._renderControlInDiv(oRenderManager, oContainer, oResult.oControl);
|
|
991
|
-
} else {
|
|
992
|
-
oContainer.oDeferredControlCreation = new jQuery.Deferred();
|
|
993
|
-
ApplicationContainer.prototype._renderControlInDiv(oRenderManager, oContainer);
|
|
994
|
-
oResult.oPromise.then(function (oControl) {
|
|
995
|
-
oContainer._bRecreateChild = false;
|
|
996
|
-
oNewRenderManager = new RenderManager().getInterface();
|
|
997
|
-
oNewRenderManager.renderControl(oControl);
|
|
998
|
-
oNewRenderManager.flush(jQuery("#" + oContainer.getId())[0]);
|
|
999
|
-
oNewRenderManager.destroy();
|
|
1000
|
-
oContainer.oDeferredControlCreation.resolve();
|
|
1001
|
-
});
|
|
1002
|
-
}
|
|
1003
|
-
} else {
|
|
1004
|
-
ApplicationContainer.prototype._renderControlInDiv(oRenderManager, oContainer, oChild);
|
|
1005
|
-
}
|
|
1006
|
-
}
|
|
1007
|
-
|
|
1008
|
-
/**
|
|
1009
|
-
* Sets the property with the specified key and value and sets the flag _bPropertyChanged to true
|
|
1010
|
-
*/
|
|
1011
|
-
function setProperty (oContainer, sKey, vValue) {
|
|
1012
|
-
var vOldValue = oContainer.getProperty(sKey);
|
|
1013
|
-
|
|
1014
|
-
if (deepEqual(vOldValue, vValue)) {
|
|
1015
|
-
return;
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
|
-
oContainer.setProperty(sKey, vValue);
|
|
1019
|
-
oContainer._bRecreateChild = true;
|
|
1020
|
-
}
|
|
1021
|
-
|
|
1022
|
-
/**
|
|
1023
|
-
* Renders the given container control with the help of the given render manager using the given
|
|
1024
|
-
* attributes.
|
|
1025
|
-
*
|
|
1026
|
-
* @param {sap.ui.core.RenderManager} oRenderManager
|
|
1027
|
-
* @param {sap.ushell.components.container.ApplicationContainer} oContainer
|
|
1028
|
-
* @param {ApplicationType.enum} sApplicationType
|
|
1029
|
-
* the application type
|
|
1030
|
-
* @param {string} sUrl
|
|
1031
|
-
* the base URL
|
|
1032
|
-
* @param {string} sAdditionalInformation
|
|
1033
|
-
* the additional information in the form "SAPUI5=<view name>"
|
|
1034
|
-
*/
|
|
1035
|
-
function render (oRenderManager, oContainer, sApplicationType, sUrl, sAdditionalInformation) {
|
|
1036
|
-
var fnLogout,
|
|
1037
|
-
bPostMechanismEnabled;
|
|
1038
|
-
var bForceOpenWithPost = false;
|
|
1039
|
-
|
|
1040
|
-
// remove container from list of NWBC-containing containers
|
|
1041
|
-
// (if this container was an NWBC container before)
|
|
1042
|
-
localStorage.removeItem(oContainer.globalDirtyStorageKey);
|
|
1043
|
-
|
|
1044
|
-
oContainer.oDeferredControlCreation = undefined;
|
|
1045
|
-
|
|
1046
|
-
// render as SAPUI5 component if specified in additionalInformation
|
|
1047
|
-
if (sAdditionalInformation &&
|
|
1048
|
-
sAdditionalInformation.indexOf("SAPUI5.Component=") === 0 &&
|
|
1049
|
-
sApplicationType === ApplicationType.URL.type) {
|
|
1050
|
-
|
|
1051
|
-
renderUi5Component(oRenderManager, oContainer, sUrl, sAdditionalInformation.replace(/^SAPUI5\.Component=/, ""));
|
|
1052
|
-
return;
|
|
1053
|
-
}
|
|
1054
|
-
|
|
1055
|
-
// render as SAPUI5 view if specified in additionalInformation
|
|
1056
|
-
if (sAdditionalInformation
|
|
1057
|
-
&& sAdditionalInformation.indexOf("SAPUI5=") === 0
|
|
1058
|
-
&& sApplicationType === ApplicationType.URL.type) {
|
|
1059
|
-
ApplicationContainer.prototype._renderControlInDiv(oRenderManager, oContainer, undefined, "open");
|
|
1060
|
-
oContainer.oDeferredControlCreation = new jQuery.Deferred();
|
|
1061
|
-
ApplicationContainer.prototype._createUi5View(oContainer, sUrl, sAdditionalInformation).then(function (oControl) {
|
|
1062
|
-
var oNewRenderManager,
|
|
1063
|
-
oDivElement = jQuery("#" + oContainer.getId());
|
|
1064
|
-
if (oDivElement && oDivElement.length > 0) {
|
|
1065
|
-
oNewRenderManager = new RenderManager().getInterface();
|
|
1066
|
-
oNewRenderManager.renderControl(oControl);
|
|
1067
|
-
oNewRenderManager.flush(jQuery("#" + oContainer.getId())[0]);
|
|
1068
|
-
oNewRenderManager.destroy();
|
|
1069
|
-
} else {
|
|
1070
|
-
oRenderManager.renderControl(oControl);
|
|
1071
|
-
}
|
|
1072
|
-
oContainer.oDeferredControlCreation.resolve();
|
|
1073
|
-
});
|
|
1074
|
-
ApplicationContainer.prototype._renderControlInDiv(oRenderManager, oContainer, undefined, "close");
|
|
1075
|
-
return;
|
|
1076
|
-
}
|
|
1077
|
-
Log.debug("Not resolved as \"SAPUI5.Component=\" or \"SAPUI5=\" , " +
|
|
1078
|
-
"will attempt to load into iframe " + sAdditionalInformation);
|
|
1079
|
-
|
|
1080
|
-
if (!oContainer.getActive()) {
|
|
1081
|
-
Log.debug("Skipping rendering container iframe", "Container '" + oContainer.getId() + "' is inactive");
|
|
1082
|
-
return;
|
|
1083
|
-
}
|
|
1084
|
-
|
|
1085
|
-
try {
|
|
1086
|
-
sUrl = oContainer.getFrameSource(sApplicationType, sUrl);
|
|
1087
|
-
} catch (ex) {
|
|
1088
|
-
Log.error(ex.message || ex, null, sCOMPONENT);
|
|
1089
|
-
oContainer.fireEvent("applicationConfiguration");
|
|
1090
|
-
oRenderManager.renderControl(ApplicationContainer.prototype._createErrorControl());
|
|
1091
|
-
return;
|
|
1092
|
-
}
|
|
1093
|
-
|
|
1094
|
-
if (Container) {
|
|
1095
|
-
fnLogout = ApplicationContainer.prototype._getLogoutHandler(oContainer);
|
|
1096
|
-
if (!fnLogout) {
|
|
1097
|
-
if (ushellUtils.isApplicationTypeEmbeddedInIframe(sApplicationType)) {
|
|
1098
|
-
// create only for NWBC if not already existing
|
|
1099
|
-
fnLogout = ApplicationContainer.prototype._logout.bind(null, oContainer);
|
|
1100
|
-
mLogouts.put(oContainer.getId(), fnLogout);
|
|
1101
|
-
Container.attachLogoutEvent(fnLogout);
|
|
1102
|
-
Container.addRemoteSystem(ApplicationContainer.prototype._createSystemForUrl(sUrl));
|
|
1103
|
-
}
|
|
1104
|
-
} else if (!ushellUtils.isApplicationTypeEmbeddedInIframe(sApplicationType)) {
|
|
1105
|
-
// detach if not used *anymore*
|
|
1106
|
-
Container.detachLogoutEvent(fnLogout);
|
|
1107
|
-
mLogouts.remove(oContainer.getId());
|
|
1108
|
-
}
|
|
1109
|
-
}
|
|
1110
|
-
|
|
1111
|
-
sUrl = oContainer._checkNwbcUrlAdjustment(oContainer, sApplicationType, sUrl);
|
|
1112
|
-
|
|
1113
|
-
// generic mechanism for allowing to pass parameters to the iframe URL
|
|
1114
|
-
var urlParams = UriParameters.fromURL(document.URL);
|
|
1115
|
-
if (urlParams.has("sap-iframe-params")) {
|
|
1116
|
-
var sIframeParams = urlParams.get("sap-iframe-params") || "",
|
|
1117
|
-
aParams = sIframeParams.split(",");
|
|
1118
|
-
|
|
1119
|
-
if (aParams.length > 0) {
|
|
1120
|
-
var tmpURI = new URI(sUrl);
|
|
1121
|
-
aParams.forEach(function (sParam) {
|
|
1122
|
-
if (sParam && sParam.length > 0) {
|
|
1123
|
-
if (urlParams.has(sParam)) {
|
|
1124
|
-
tmpURI.addQuery(sParam, urlParams.get(sParam));
|
|
1125
|
-
}
|
|
1126
|
-
}
|
|
1127
|
-
});
|
|
1128
|
-
sUrl = tmpURI.toString();
|
|
1129
|
-
}
|
|
1130
|
-
}
|
|
1131
|
-
|
|
1132
|
-
//add the url origin to the allowed origins list of the message broker
|
|
1133
|
-
if (oMessageBrokerServicePromise) {
|
|
1134
|
-
oMessageBrokerServicePromise.then(function (oMessageBrokerService) {
|
|
1135
|
-
oMessageBrokerService.addAcceptedOrigin(new URI(sUrl).origin());
|
|
1136
|
-
});
|
|
1137
|
-
}
|
|
1138
|
-
|
|
1139
|
-
//preperations to open the iframe with POST (vs the default GET)
|
|
1140
|
-
if (sApplicationType === "TR") {
|
|
1141
|
-
oContainer.setProperty("iframePostAllParams", true, true);
|
|
1142
|
-
}
|
|
1143
|
-
|
|
1144
|
-
bPostMechanismEnabled = Config.last("/core/shell/enableOpenIframeWithPost");
|
|
1145
|
-
if (bPostMechanismEnabled === undefined) {
|
|
1146
|
-
bPostMechanismEnabled = true;
|
|
1147
|
-
}
|
|
1148
|
-
|
|
1149
|
-
if (urlParams.get("sap-post") === "false") {
|
|
1150
|
-
bPostMechanismEnabled = false;
|
|
1151
|
-
} else if (window.QUnit !== undefined) {
|
|
1152
|
-
bPostMechanismEnabled = oContainer.getIframeWithPost();
|
|
1153
|
-
}
|
|
1154
|
-
if (bPostMechanismEnabled === true && oContainer.getOpenWithPostByAppParam() === false) {
|
|
1155
|
-
bPostMechanismEnabled = false;
|
|
1156
|
-
}
|
|
1157
|
-
if (urlParams.get("sap-post") === "true") {
|
|
1158
|
-
bForceOpenWithPost = true;
|
|
1159
|
-
}
|
|
1160
|
-
|
|
1161
|
-
//This block is relevant for "Starting WebGUI/WebDynpro apps with a POST" BLI since 1.68
|
|
1162
|
-
if (bPostMechanismEnabled === true &&
|
|
1163
|
-
(sApplicationType === "NWBC" || sApplicationType === "TR" || sApplicationType === "WDA" || sApplicationType === "WCF") || bForceOpenWithPost === true) {
|
|
1164
|
-
IframePOSTUtils.renderIframeWithPOST(oRenderManager, oContainer, sUrl, ++iIframeIdx);
|
|
1165
|
-
return;
|
|
1166
|
-
}
|
|
1167
|
-
|
|
1168
|
-
var sUrlWithSystemAlias = systemAlias.addSystemAlias(sUrl, oContainer);
|
|
1169
|
-
// embed URL via <IFRAME>
|
|
1170
|
-
oContainer.fireEvent("applicationConfiguration");
|
|
1171
|
-
oRenderManager
|
|
1172
|
-
.openStart("iframe", oContainer)
|
|
1173
|
-
.accessibilityState(oContainer)
|
|
1174
|
-
.attr("src", sUrlWithSystemAlias)
|
|
1175
|
-
.attr("title", resources.i18n.getText("AppilcationContainer.IframeTitle"))
|
|
1176
|
-
.attr("sap-iframe-idx", ++iIframeIdx)
|
|
1177
|
-
.class("sapUShellApplicationContainer")
|
|
1178
|
-
.style("height", oContainer.getHeight())
|
|
1179
|
-
.style("width", oContainer.getWidth());
|
|
1180
|
-
|
|
1181
|
-
if (Config.last("/core/shell/enableFeaturePolicyInIframes") === true) {
|
|
1182
|
-
oRenderManager.attr("allow", ushellUtils.getIframeFeaturePolicies());
|
|
1183
|
-
}
|
|
1184
|
-
oRenderManager
|
|
1185
|
-
.openEnd()
|
|
1186
|
-
.close("iframe");
|
|
1187
|
-
}
|
|
1188
|
-
|
|
1189
|
-
/**
|
|
1190
|
-
* @alias sap.ushell.components.container.ApplicationContainer
|
|
1191
|
-
* Creates a new container control embedding the application with the given URL. The default
|
|
1192
|
-
* application type is "URL" and allows to embed web applications into an <code>IFRAME</code>.
|
|
1193
|
-
* By default, the container is visible and occupies the whole width and height of its parent.
|
|
1194
|
-
*
|
|
1195
|
-
* @class
|
|
1196
|
-
* @classdesc A container control capable of embedding a variety of application types.
|
|
1197
|
-
* <p>
|
|
1198
|
-
* <strong>Experimental API: This container is still under construction, so some
|
|
1199
|
-
* implementation details can be changed in future.</strong>
|
|
1200
|
-
* </p><p>
|
|
1201
|
-
* <b>Note:</b> The browser does not allow to move an <code>IFRAME</code> around in the DOM
|
|
1202
|
-
* while keeping its state. Thus every rerendering of this control necessarily resets the
|
|
1203
|
-
* embedded web application to its initial state!
|
|
1204
|
-
* </p><p>
|
|
1205
|
-
* <b>Note:</b> You <b>must</b> <code>exit</code> the control when you no longer need it.
|
|
1206
|
-
*
|
|
1207
|
-
* </p><p>
|
|
1208
|
-
* <b>Embedding SAPUI5 Components:</b>
|
|
1209
|
-
* </p><p>
|
|
1210
|
-
* The container is able to embed an SAPUI5 component. It is embedded directly into the page,
|
|
1211
|
-
* no <code>IFRAME</code> is used.
|
|
1212
|
-
* </p><p>
|
|
1213
|
-
* SAPUI5 components are described with <code>applicationType</code> "URL", a base URL and the
|
|
1214
|
-
* component name in <code>additionalInformation</code>. The format is
|
|
1215
|
-
* <code>SAPUI5=<i>componentNamespace</i></code>. The application container will register a
|
|
1216
|
-
* module path for the URL with the component's namespace.
|
|
1217
|
-
* </p><p>
|
|
1218
|
-
* The query parameters from the URL will be passed into the component. They can be retrieved
|
|
1219
|
-
* using the method <code>getComponentData()</code>. Query parameters are always passed as
|
|
1220
|
-
* arrays (see example 2 below).
|
|
1221
|
-
* </p><p>
|
|
1222
|
-
* <b>Example 1:</b> Let <code>url</code> be "http://anyhost:1234/path/to/app" and
|
|
1223
|
-
* <code>additionalInformation</code> be "SAPUI5=some.random.package". Then the
|
|
1224
|
-
* container registers the path "http://anyhost:1234/path/to/app/some/random/package" for the
|
|
1225
|
-
* namespace "some.random.package", loads and creates "some.random.package.Component".
|
|
1226
|
-
* </p><p>
|
|
1227
|
-
* <b>Example 2:</b> Let <code>url</code> be "http://anyhost:1234/?foo=bar&foo=baz&bar=baz".
|
|
1228
|
-
* Then the <code>componentData</code> object will be
|
|
1229
|
-
* <code>{foo: ["bar", "baz"], bar: ["baz"]}</code>.
|
|
1230
|
-
* </p><p>
|
|
1231
|
-
* <b>Warning:</b> The container control embeds a <i>component</i> only. This can only work if
|
|
1232
|
-
* this component is fully encapsulated and properly declares all dependencies in its metadata
|
|
1233
|
-
* object. If you want to support that your component can be embedded into a shell using this
|
|
1234
|
-
* container, you have to prepare it accordingly:
|
|
1235
|
-
* <ul>
|
|
1236
|
-
* <li>The container control can only embed components that originate on the same server as the
|
|
1237
|
-
* shell due to the browser's same origin policy. Consider using an SAP Web Dispatcher if this
|
|
1238
|
-
* is not the case.
|
|
1239
|
-
* <li>If your component relies on some additional Javascript, declare the dependencies to
|
|
1240
|
-
* libraries or other components in the component's metadata object.
|
|
1241
|
-
* <li>Do <i>not</i> use <code>jQuery.sap.registerModulePath()</code> with a relative URL. The
|
|
1242
|
-
* base for this relative URL is the web page. And this page is the shell when embedding the
|
|
1243
|
-
* component via the container, not the page you used when developing the component.
|
|
1244
|
-
* <li>If your component needs additional styles, declare them using the <code>includes</code>
|
|
1245
|
-
* property of the component metadata object.
|
|
1246
|
-
* <li> Consider calling <code>jQuery.sap.getModulePath(<componentName>)</code> to
|
|
1247
|
-
* determine the root path of your component.
|
|
1248
|
-
* <li>If any of these requirements is not met, it is still possible to embed this view with
|
|
1249
|
-
* its own page using <code>applicationType="URL"</code>, no <code>additionalInformation</code>
|
|
1250
|
-
* and the URL of the web page in <code>url</code>. Then of course it is embedded using an
|
|
1251
|
-
* <code>IFRAME</code>. This has many restrictions, especially the resource-based navigation
|
|
1252
|
-
* using hash changes will not be supported.
|
|
1253
|
-
* </ul>
|
|
1254
|
-
*
|
|
1255
|
-
* </p><p>
|
|
1256
|
-
* <b>Embedding SAPUI5 Views</b>
|
|
1257
|
-
* <p>
|
|
1258
|
-
* Embedding views is <strong>deprecated</strong> and might not be supported in future versions.
|
|
1259
|
-
* </p>
|
|
1260
|
-
* <p>
|
|
1261
|
-
* It is also possible to embed a SAPUI5 view. It is embedded directly into the page, no
|
|
1262
|
-
* <code>IFRAME</code> is used.
|
|
1263
|
-
* </p><p>
|
|
1264
|
-
* SAPUI5 views are described with <code>applicationType</code> "URL", a base URL and the view
|
|
1265
|
-
* description in <code>additionalInformation</code>. The format is
|
|
1266
|
-
* <code>SAPUI5=<i>namespace</i>.<i>viewName</i>.view.<i>viewType</i></code>. From
|
|
1267
|
-
* this information the module path and the view URL is determined. Request parameters present
|
|
1268
|
-
* in the URL will be passed to the created view and can be accessed via
|
|
1269
|
-
* <code>sap.ui.core.mvc.View#getViewData()</code>. The object passed to the view data is the
|
|
1270
|
-
* same as describe for the component data above.
|
|
1271
|
-
* </p><p>
|
|
1272
|
-
* <b>Warning:</b> The container control embeds a <i>view</i> only. So similar restrictions
|
|
1273
|
-
* as for components apply. Since the view has no metadata object to describe dependencies you
|
|
1274
|
-
* will have to use <code>sap.ui.require()</code> to load needed modules.
|
|
1275
|
-
*
|
|
1276
|
-
* @extends sap.ui.core.Control
|
|
1277
|
-
* @since 1.15.0
|
|
1278
|
-
*/
|
|
1279
|
-
var ApplicationContainer = Control.extend(sCOMPONENT, /** @lends sap.ushell.components.container.ApplicationContainer.prototype */{
|
|
1280
|
-
metadata: {
|
|
1281
|
-
properties: {
|
|
1282
|
-
/**
|
|
1283
|
-
* Additional information about the application. Currently this is used to describe a SAPUI5
|
|
1284
|
-
* component or a view in a SAPUI5 application.
|
|
1285
|
-
*/
|
|
1286
|
-
additionalInformation: { defaultValue: "", type: "string" },
|
|
1287
|
-
/**
|
|
1288
|
-
* The application descriptor as received from the start-up service. If an application is
|
|
1289
|
-
* given the properties <code>url</code>, <code>applicationType</code> and
|
|
1290
|
-
* <code>additionalInformation</code> are taken from the application and <i>not</i> from the
|
|
1291
|
-
* control properties.
|
|
1292
|
-
*/
|
|
1293
|
-
application: { type: "object" },
|
|
1294
|
-
/**
|
|
1295
|
-
* The configuration data of this application as defined in the application descriptor
|
|
1296
|
-
* or in the flexible configuration object.
|
|
1297
|
-
*/
|
|
1298
|
-
applicationConfiguration: { type: "object" },
|
|
1299
|
-
/**
|
|
1300
|
-
* The type of the embedded application.
|
|
1301
|
-
*/
|
|
1302
|
-
applicationType: { defaultValue: "URL", type: sPREFIX + "ApplicationType" },
|
|
1303
|
-
/**
|
|
1304
|
-
* The container's height as a CSS size. This attribute is provided to the browser "as is"!
|
|
1305
|
-
* <b>Note:</b> The HTML 4.01 specification allows pixels and percentages,
|
|
1306
|
-
* but the HTML 5 specification allows pixels only!
|
|
1307
|
-
*/
|
|
1308
|
-
height: { defaultValue: "100%", type: "sap.ui.core.CSSSize" },
|
|
1309
|
-
navigationMode: { defaultValue: "", type: "string" },
|
|
1310
|
-
targetNavigationMode: { defaultValue: "", type: "string" },
|
|
1311
|
-
text: { defaultValue: "", type: "string" },
|
|
1312
|
-
/**
|
|
1313
|
-
* The URL to the embedded application.
|
|
1314
|
-
*/
|
|
1315
|
-
url: { defaultValue: "", type: "string" },
|
|
1316
|
-
currentAppUrl: { defaultValue: "", type: "string" },
|
|
1317
|
-
currentAppId: { defaultValue: "", type: "string" },
|
|
1318
|
-
currentAppTargetResolution: { type: "object" },
|
|
1319
|
-
/**
|
|
1320
|
-
* Whether the container control is visible at all. <b>Note:</b> An invisible container does
|
|
1321
|
-
* not render any DOM content. Changing the visibility leads to rerendering!
|
|
1322
|
-
*/
|
|
1323
|
-
visible: { defaultValue: true, type: "boolean" },
|
|
1324
|
-
active: { defaultValue: true, type: "boolean" },
|
|
1325
|
-
"sap-system": { type: "string" },
|
|
1326
|
-
applicationDependencies: { type: "object" },
|
|
1327
|
-
/**
|
|
1328
|
-
* The component handle - for SAPUI5 components, this contains a handle to the
|
|
1329
|
-
* component metadata and constructor which might already be loaded
|
|
1330
|
-
*/
|
|
1331
|
-
componentHandle: { type: "object" },
|
|
1332
|
-
ui5ComponentName: { type: "string" },
|
|
1333
|
-
/**
|
|
1334
|
-
* The container's width as a CSS size. This attribute is provided to the browser "as is"!
|
|
1335
|
-
* <b>Note:</b> The HTML 4.01 specification allows pixels and percentages,
|
|
1336
|
-
* but the HTML 5 specification allows pixels only!
|
|
1337
|
-
*/
|
|
1338
|
-
width: { defaultValue: "100%", type: "sap.ui.core.CSSSize" },
|
|
1339
|
-
shellUIService: { type: "object" },
|
|
1340
|
-
reservedParameters: { type: "object" },
|
|
1341
|
-
coreResourcesFullyLoaded: { type: "boolean" },
|
|
1342
|
-
statefulType: { defaultValue: 0, type: "int" },
|
|
1343
|
-
iframeHandlers: { defaultValue: "", type: "string" },
|
|
1344
|
-
openWithPostByAppParam: { defaultValue: true, type: "boolean" },
|
|
1345
|
-
iframeWithPost: { defaultValue: false, type: "boolean" },
|
|
1346
|
-
beforeAppCloseEvent: { type: "object" },
|
|
1347
|
-
extendedInfo: { type: "object" },
|
|
1348
|
-
systemAlias: { defaultValue: "", type: "string" },
|
|
1349
|
-
iframePostAllParams: { defaultValue: false, type: "boolean" },
|
|
1350
|
-
isKeepAlive: { defaultValue: false, type: "boolean" },
|
|
1351
|
-
frameworkId: { defaultValue: "", type: "string" },
|
|
1352
|
-
iframeReusedForApp: { defaultValue: false, type: "boolean" },
|
|
1353
|
-
isIframeValidTime: { defaultValue: {time: 0}, type: "object" },
|
|
1354
|
-
isInvalidIframe: { defaultValue: false, type: "boolean" },
|
|
1355
|
-
isFetchedFromCache: { defaultValue: false, type: "boolean" },
|
|
1356
|
-
blueBoxCapabilities: { defaultValue: {}, type: "object" }
|
|
1357
|
-
},
|
|
1358
|
-
events: {
|
|
1359
|
-
/**
|
|
1360
|
-
* Event which is fired when the <code>ApplicationContainer</code> control is rendered. The
|
|
1361
|
-
* event holds a technology specific configuration object for the embedded application.
|
|
1362
|
-
* As of now, only configuration for an embedded <em>SAPUI5 component</em> is supported.
|
|
1363
|
-
*/
|
|
1364
|
-
applicationConfiguration: {
|
|
1365
|
-
parameters: {
|
|
1366
|
-
/**
|
|
1367
|
-
* The technology specific configuration object of the embedded application.
|
|
1368
|
-
* <code>undefined</code>, if the <code>ApplicationContainer</code> control does not
|
|
1369
|
-
* provide a configuration for the technology of the embedded application or if there is a
|
|
1370
|
-
* rendering issue with the application.<br/>
|
|
1371
|
-
* For SAPUI5 components, the <code>config</code> property of the component metadata is
|
|
1372
|
-
* provided.
|
|
1373
|
-
*/
|
|
1374
|
-
configuration: { type: "object" }
|
|
1375
|
-
}
|
|
1376
|
-
}
|
|
1377
|
-
},
|
|
1378
|
-
aggregations: {
|
|
1379
|
-
child: { multiple: false, type: "sap.ui.core.Control", visibility: "hidden" }
|
|
1380
|
-
},
|
|
1381
|
-
library: "sap.ushell",
|
|
1382
|
-
designtime: "sap/ushell/designtime/ApplicationContainer.designtime"
|
|
1383
|
-
},
|
|
1384
|
-
|
|
1385
|
-
exit: function () {
|
|
1386
|
-
if (Container) {
|
|
1387
|
-
const fnLogout = ApplicationContainer.prototype._getLogoutHandler(this);
|
|
1388
|
-
if (fnLogout) {
|
|
1389
|
-
Container.detachLogoutEvent(fnLogout);
|
|
1390
|
-
mLogouts.remove(this.getId());
|
|
1391
|
-
}
|
|
1392
|
-
}
|
|
1393
|
-
// remove container from list of NWBC-containing containers
|
|
1394
|
-
// (if this container was an NWBC container before)
|
|
1395
|
-
localStorage.removeItem(this.globalDirtyStorageKey);
|
|
1396
|
-
|
|
1397
|
-
// remove all event listeners
|
|
1398
|
-
if (this._unloadEventListener) {
|
|
1399
|
-
removeEventListener("pagehide", this._unloadEventListener);
|
|
1400
|
-
}
|
|
1401
|
-
|
|
1402
|
-
if (this._disableRouterEventHandler) {
|
|
1403
|
-
EventBus.getInstance().unsubscribe(
|
|
1404
|
-
"sap.ushell.components.container.ApplicationContainer",
|
|
1405
|
-
"_prior.newUI5ComponentInstantion", this._disableRouterEventHandler);//{ sValue : sServiceUrl }
|
|
1406
|
-
}
|
|
1407
|
-
|
|
1408
|
-
if (this._storageEventListener) {
|
|
1409
|
-
removeEventListener("storage", this._storageEventListener);
|
|
1410
|
-
}
|
|
1411
|
-
|
|
1412
|
-
if (this._messageEventListener) {
|
|
1413
|
-
removeEventListener("message", this._messageEventListener);
|
|
1414
|
-
}
|
|
1415
|
-
|
|
1416
|
-
ApplicationContainer.prototype._destroyChild(this);
|
|
1417
|
-
|
|
1418
|
-
// before initial render the child aggregation is not set
|
|
1419
|
-
const oComponentHandle = this.getComponentHandle();
|
|
1420
|
-
if (oComponentHandle) {
|
|
1421
|
-
oComponentHandle.destroy();
|
|
1422
|
-
}
|
|
1423
|
-
|
|
1424
|
-
// just to be sure in case it will be added some time
|
|
1425
|
-
if (Control.exit) {
|
|
1426
|
-
Control.exit.apply(this);
|
|
1427
|
-
}
|
|
1428
|
-
},
|
|
1429
|
-
|
|
1430
|
-
setHandleMessageEvent: function (inFnHandleMessageEvent) {
|
|
1431
|
-
fnHandleMessageEvent = inFnHandleMessageEvent;
|
|
1432
|
-
},
|
|
1433
|
-
|
|
1434
|
-
/**
|
|
1435
|
-
* Initialization of <code>ApplicationContainer</code> instance.
|
|
1436
|
-
*/
|
|
1437
|
-
init: function () {
|
|
1438
|
-
var that = this;
|
|
1439
|
-
that.globalDirtyStorageKey = sDIRTY_STATE_PREFIX + fnGetUid();
|
|
1440
|
-
|
|
1441
|
-
// set object default values again to prevent them from being "synced"
|
|
1442
|
-
this.setProperty("isIframeValidTime", { time: 0 }, true);
|
|
1443
|
-
this.setProperty("blueBoxCapabilities", {}, true);
|
|
1444
|
-
|
|
1445
|
-
// be sure to remove entry from list of NWBC-containing containers
|
|
1446
|
-
// when the window is closed
|
|
1447
|
-
that._unloadEventListener = that.exit.bind(that);
|
|
1448
|
-
// As of chrome 117 the unload event is deprecated and therefore was changed
|
|
1449
|
-
addEventListener("pagehide", that._unloadEventListener); //TODO doesn't work in IE9 when F5 is pressed?!
|
|
1450
|
-
|
|
1451
|
-
that._storageEventListener = function (oStorageEvent) {
|
|
1452
|
-
var sApplicationType = that.getApplicationType();
|
|
1453
|
-
if (oStorageEvent.key === that.globalDirtyStorageKey
|
|
1454
|
-
&& oStorageEvent.newValue === Container.DirtyState.PENDING
|
|
1455
|
-
&& ushellUtils.isApplicationTypeEmbeddedInIframe(sApplicationType)) {
|
|
1456
|
-
|
|
1457
|
-
var oIframe = that._getIFrame();
|
|
1458
|
-
if (oIframe) {
|
|
1459
|
-
Log.debug(
|
|
1460
|
-
"getGlobalDirty() send pro54_getGlobalDirty ",
|
|
1461
|
-
null,
|
|
1462
|
-
"sap.ushell.components.container.ApplicationContainer"
|
|
1463
|
-
);
|
|
1464
|
-
|
|
1465
|
-
var oUri = new URI(that._getIFrameUrl(oIframe));
|
|
1466
|
-
var targetDomain = oUri.protocol() + "://" + oUri.host();
|
|
1467
|
-
oIframe.contentWindow.postMessage(
|
|
1468
|
-
JSON.stringify({ action: "pro54_getGlobalDirty" }),
|
|
1469
|
-
targetDomain
|
|
1470
|
-
);
|
|
1471
|
-
}
|
|
1472
|
-
}
|
|
1473
|
-
};
|
|
1474
|
-
addEventListener("storage", that._storageEventListener);
|
|
1475
|
-
|
|
1476
|
-
that._messageEventListener = ApplicationContainer.prototype._handleMessageEvent.bind(null, that);
|
|
1477
|
-
addEventListener("message", that._messageEventListener);
|
|
1478
|
-
if (!oMessageBrokerServicePromise && Container.isInitialized()) {
|
|
1479
|
-
oMessageBrokerServicePromise = Container.getServiceAsync("MessageBroker");
|
|
1480
|
-
}
|
|
1481
|
-
},
|
|
1482
|
-
|
|
1483
|
-
onAfterRendering: function (/*oEvent*/) {
|
|
1484
|
-
var that = this;
|
|
1485
|
-
|
|
1486
|
-
// iOS Safari ignores CSS width and height of the iframe. The iframe is as big as its contents.
|
|
1487
|
-
// Scrolling inside of a such an iframe is not possible. Scroll the parent container instead.
|
|
1488
|
-
if (Device.os.ios && this.$().prop("tagName") === "IFRAME") {
|
|
1489
|
-
this.$().parent().css("overflow", "auto");
|
|
1490
|
-
}
|
|
1491
|
-
|
|
1492
|
-
if (this.oDeferredRenderer) {
|
|
1493
|
-
this.oDeferredRenderer.done(function () {
|
|
1494
|
-
var oForm = document.getElementById(that.getId() + "-form");
|
|
1495
|
-
if (oForm) {
|
|
1496
|
-
oForm.submit();
|
|
1497
|
-
}
|
|
1498
|
-
});
|
|
1499
|
-
}
|
|
1500
|
-
},
|
|
1501
|
-
|
|
1502
|
-
invalidate: function () {
|
|
1503
|
-
if (this.getDomRef()) {
|
|
1504
|
-
//always prevent re-rendering of application container once it's rendered
|
|
1505
|
-
return this;
|
|
1506
|
-
}
|
|
1507
|
-
|
|
1508
|
-
return Control.prototype.invalidate.apply(this, arguments);
|
|
1509
|
-
},
|
|
1510
|
-
|
|
1511
|
-
/**
|
|
1512
|
-
* Renders the given container control with the help of the given render manager.
|
|
1513
|
-
*
|
|
1514
|
-
* @param {sap.ui.core.RenderManager} oRenderManager
|
|
1515
|
-
* @param {sap.ushell.components.container.ApplicationContainer} oContainer
|
|
1516
|
-
*
|
|
1517
|
-
* @private
|
|
1518
|
-
*/
|
|
1519
|
-
renderer: {
|
|
1520
|
-
apiVersion: 2,
|
|
1521
|
-
render: function (oRenderManager, oContainer) {
|
|
1522
|
-
// we have to cache the UI5 version first
|
|
1523
|
-
if (sUI5Version === null) {
|
|
1524
|
-
oUI5VersionPromise.then(() => {
|
|
1525
|
-
oContainer.invalidate();
|
|
1526
|
-
});
|
|
1527
|
-
return;
|
|
1528
|
-
}
|
|
1529
|
-
// Note: "this" refers to the renderer instance, which does not matter here!
|
|
1530
|
-
var oApplication = oContainer.getApplication();
|
|
1531
|
-
var oLaunchpadData = oContainer.launchpadData;
|
|
1532
|
-
var oLoadingIndicator;
|
|
1533
|
-
|
|
1534
|
-
if (!oContainer.getVisible()) {
|
|
1535
|
-
// Note: even invisible controls need to render their ID for later re-rendering
|
|
1536
|
-
ApplicationContainer.prototype._renderControlInDiv(oRenderManager, oContainer);
|
|
1537
|
-
return;
|
|
1538
|
-
}
|
|
1539
|
-
|
|
1540
|
-
if (oContainer.bTestControl) {
|
|
1541
|
-
ApplicationContainer.prototype._renderControlInDiv(oRenderManager, oContainer, oContainer.oTestControl);
|
|
1542
|
-
} else if (oContainer.error) {
|
|
1543
|
-
delete oContainer.error;
|
|
1544
|
-
ApplicationContainer.prototype._renderControlInDiv(oRenderManager, oContainer, ApplicationContainer.prototype._createErrorControl());
|
|
1545
|
-
} else if (!oApplication) {
|
|
1546
|
-
// the standard properties
|
|
1547
|
-
ApplicationContainer.prototype._render(oRenderManager, oContainer, oContainer.getApplicationType(),
|
|
1548
|
-
oContainer.getUrl(), oContainer.getAdditionalInformation());
|
|
1549
|
-
} else if (!oApplication.isResolvable()) {
|
|
1550
|
-
// the standard application data
|
|
1551
|
-
ApplicationContainer.prototype._render(oRenderManager, oContainer, oApplication.getType(),
|
|
1552
|
-
oApplication.getUrl(), "");
|
|
1553
|
-
} else if (oLaunchpadData) {
|
|
1554
|
-
// the application, already resolved
|
|
1555
|
-
// Note that ResolveLink appends a "?" to the URL if additionalData (aka
|
|
1556
|
-
// additionalInformation) is supplied.
|
|
1557
|
-
ApplicationContainer.prototype._render(oRenderManager, oContainer, oLaunchpadData.applicationType,
|
|
1558
|
-
oLaunchpadData.Absolute.url.replace(/\?$/, ""),
|
|
1559
|
-
oLaunchpadData.applicationData);
|
|
1560
|
-
} else {
|
|
1561
|
-
Log.debug("Resolving " + oApplication.getUrl(), null,
|
|
1562
|
-
sCOMPONENT);
|
|
1563
|
-
|
|
1564
|
-
oApplication.resolve(function (oResolved) {
|
|
1565
|
-
Log.debug("Resolved " + oApplication.getUrl(),
|
|
1566
|
-
JSON.stringify(oResolved),
|
|
1567
|
-
sCOMPONENT);
|
|
1568
|
-
// TODO: where to keep the internal property launchpadData? At the Application!
|
|
1569
|
-
oContainer.launchpadData = oResolved;
|
|
1570
|
-
ApplicationContainer.prototype._destroyChild(oContainer);
|
|
1571
|
-
}, function (sError) {
|
|
1572
|
-
var fnApplicationErrorHandler = oApplication.getMenu().getDefaultErrorHandler();
|
|
1573
|
-
if (fnApplicationErrorHandler) {
|
|
1574
|
-
fnApplicationErrorHandler(sError);
|
|
1575
|
-
}
|
|
1576
|
-
ApplicationContainer.prototype._destroyChild(oContainer);
|
|
1577
|
-
oContainer.error = sError;
|
|
1578
|
-
});
|
|
1579
|
-
oLoadingIndicator = new Text({
|
|
1580
|
-
text: ApplicationContainer.prototype._getTranslatedText("loading", [oApplication.getText()])
|
|
1581
|
-
});
|
|
1582
|
-
ApplicationContainer.prototype._destroyChild(oContainer);
|
|
1583
|
-
oContainer.setAggregation("child", oLoadingIndicator);
|
|
1584
|
-
ApplicationContainer.prototype._renderControlInDiv(oRenderManager, oContainer, oLoadingIndicator);
|
|
1585
|
-
}
|
|
1586
|
-
}
|
|
1587
|
-
}
|
|
1588
|
-
});
|
|
1589
|
-
|
|
1590
|
-
/**
|
|
1591
|
-
* Returns the resulting source URL for the (internal) frame used to embed the given application.
|
|
1592
|
-
* This hook method may be overridden; we recommend to replace it per object, not at the
|
|
1593
|
-
* prototype.
|
|
1594
|
-
* <p>
|
|
1595
|
-
* The default implementation returns the URL "as is", but checks that the given application
|
|
1596
|
-
* type is one of <code>ApplicationType.enum</code> and throws
|
|
1597
|
-
* an error in case it is not. It ignores the additional information.
|
|
1598
|
-
* <p>
|
|
1599
|
-
* You may want to end your implementation with
|
|
1600
|
-
* <code>return
|
|
1601
|
-
* sap.ushell.components.container.ApplicationContainer.prototype.getFrameSource.call(this,
|
|
1602
|
-
* sApplicationType, sUrl, sAdditionalInformation);</code> in order to reuse the default
|
|
1603
|
-
* behavior. To override the error checks, simply replace any additional application types you
|
|
1604
|
-
* wish to support with <code>ApplicationType.enum.URL</code>.
|
|
1605
|
-
*
|
|
1606
|
-
* @param {ApplicationType.enum} sApplicationType
|
|
1607
|
-
* the application type
|
|
1608
|
-
* @param {string} sUrl
|
|
1609
|
-
* the base URL
|
|
1610
|
-
* @param {string} sAdditionalInformation
|
|
1611
|
-
* the additional information
|
|
1612
|
-
* @returns {string}
|
|
1613
|
-
* @since 1.15.0
|
|
1614
|
-
*/
|
|
1615
|
-
ApplicationContainer.prototype.getFrameSource = function (sApplicationType, sUrl/*, sAdditionalInformation*/) {
|
|
1616
|
-
if (!Object.prototype.hasOwnProperty.call(
|
|
1617
|
-
ApplicationType.enum,
|
|
1618
|
-
sApplicationType
|
|
1619
|
-
)) {
|
|
1620
|
-
// Note: do not use sap.ushell.utils.Error here as the exception is already caught
|
|
1621
|
-
// and logged in render()
|
|
1622
|
-
throw new Error("Illegal application type: " + sApplicationType);
|
|
1623
|
-
}
|
|
1624
|
-
return sUrl;
|
|
1625
|
-
};
|
|
1626
|
-
|
|
1627
|
-
// overwrite setters to trigger component recreation only if relevant properties have changed
|
|
1628
|
-
ApplicationContainer.prototype.setUrl = function (sValue) {
|
|
1629
|
-
setProperty(this, "url", sValue);
|
|
1630
|
-
};
|
|
1631
|
-
|
|
1632
|
-
ApplicationContainer.prototype.setAdditionalInformation = function (sValue) {
|
|
1633
|
-
setProperty(this, "additionalInformation", sValue);
|
|
1634
|
-
};
|
|
1635
|
-
|
|
1636
|
-
ApplicationContainer.prototype.setApplicationType = function (sValue) {
|
|
1637
|
-
setProperty(this, "applicationType", sValue);
|
|
1638
|
-
};
|
|
1639
|
-
|
|
1640
|
-
/**
|
|
1641
|
-
* Method called by the appLifeCycle to post a "before close" message to the app
|
|
1642
|
-
* running in the iframe before the iframe its destroyed.
|
|
1643
|
-
* The message is sent only if the iframe registered to be informed with this message.
|
|
1644
|
-
* This mechanism was added to solve the change made in Chrome to disallow Sync XHR on
|
|
1645
|
-
* browser close.
|
|
1646
|
-
*
|
|
1647
|
-
* @returns {Promise}
|
|
1648
|
-
* A promise object in case a post message is sent, and "undefined" in case no message needs
|
|
1649
|
-
* to be sent. In case of real promise, it will be resolved when the iframe response back that
|
|
1650
|
-
* it processed the message.
|
|
1651
|
-
*
|
|
1652
|
-
* @private
|
|
1653
|
-
*/
|
|
1654
|
-
ApplicationContainer.prototype.sendBeforeAppCloseEvent = function () {
|
|
1655
|
-
var that = this,
|
|
1656
|
-
oEventData = this.getBeforeAppCloseEvent && this.getBeforeAppCloseEvent();
|
|
1657
|
-
if (oEventData && oEventData.enabled && oEventData.enabled === true) {
|
|
1658
|
-
return new Promise(function (fnResolve, fnReject) {
|
|
1659
|
-
sap.ui.require(["sap/ushell/components/applicationIntegration/application/PostMessageUtils"], function (PostMessageUtils) {
|
|
1660
|
-
PostMessageUtils.postMessageToIframeApp(
|
|
1661
|
-
that, "sap.ushell.services.CrossApplicationNavigation", "beforeAppCloseEvent", oEventData.params, true).then(fnResolve, fnReject);
|
|
1662
|
-
});
|
|
1663
|
-
});
|
|
1664
|
-
}
|
|
1665
|
-
|
|
1666
|
-
return undefined;
|
|
1667
|
-
};
|
|
1668
|
-
|
|
1669
|
-
ApplicationContainer.prototype.getDeffedControlCreation = function (sUrl) {
|
|
1670
|
-
return this.oDeferredControlCreation ? this.oDeferredControlCreation.promise() : new jQuery.Deferred().resolve().promise();
|
|
1671
|
-
};
|
|
1672
|
-
|
|
1673
|
-
// todo: [FLPCOREANDUX-10024] this should rather be part of an UI5 specific ApplicationContainer implementation
|
|
1674
|
-
ApplicationContainer.prototype.isUI5ApplicationWithoutIframe = function () {
|
|
1675
|
-
return this.getApplicationType() === ApplicationType.URL.type && this.getUi5ComponentName();
|
|
1676
|
-
};
|
|
1677
|
-
|
|
1678
|
-
/**
|
|
1679
|
-
* Merges the given capabilities into the existing blue box capabilities.
|
|
1680
|
-
* Existing capabilities are overwritten.
|
|
1681
|
-
* @param {{ service:string, action: string }[]} aNewCapabilities The additional capabilities.
|
|
1682
|
-
* @returns {this} this instance for method chaining
|
|
1683
|
-
*
|
|
1684
|
-
* @since 1.130.0
|
|
1685
|
-
* @private
|
|
1686
|
-
*/
|
|
1687
|
-
ApplicationContainer.prototype.addBlueBoxCapabilities = function (aNewCapabilities) {
|
|
1688
|
-
// todo: [FLPCOREANDUX-10024] rename this
|
|
1689
|
-
const oCapabilities = this.getBlueBoxCapabilities();
|
|
1690
|
-
|
|
1691
|
-
aNewCapabilities.forEach((oCapability) => {
|
|
1692
|
-
oCapabilities[`${oCapability.service}.${oCapability.action}`.toLowerCase()] = true;
|
|
1693
|
-
});
|
|
1694
|
-
return this;
|
|
1695
|
-
};
|
|
1696
|
-
|
|
1697
|
-
/**
|
|
1698
|
-
* Removes the given capabilities from the existing blue box capabilities.
|
|
1699
|
-
* If no capabilities are provided, all capabilities are removed.
|
|
1700
|
-
* @param {{ service:string, action: string }[]} [aCapabilitiesToRemove] The capabilities to remove.
|
|
1701
|
-
* @returns {this} this instance for method chaining
|
|
1702
|
-
*
|
|
1703
|
-
* @since 1.130.0
|
|
1704
|
-
* @private
|
|
1705
|
-
*/
|
|
1706
|
-
ApplicationContainer.prototype.removeBlueBoxCapabilities = function (aCapabilitiesToRemove) {
|
|
1707
|
-
const oCapabilities = this.getBlueBoxCapabilities();
|
|
1708
|
-
|
|
1709
|
-
if (!aCapabilitiesToRemove) {
|
|
1710
|
-
this.setProperty("blueBoxCapabilities", {}, true);
|
|
1711
|
-
return this;
|
|
1712
|
-
}
|
|
1713
|
-
|
|
1714
|
-
aCapabilitiesToRemove.forEach((oCapability) => {
|
|
1715
|
-
delete oCapabilities[`${oCapability.service}.${oCapability.action}`.toLowerCase()];
|
|
1716
|
-
});
|
|
1717
|
-
return this;
|
|
1718
|
-
};
|
|
1719
|
-
|
|
1720
|
-
/**
|
|
1721
|
-
* Checks if this application container supports the given capabilities.
|
|
1722
|
-
* @param {{ service:string, action: string }[]} aRequiredCapabilities The capabilities to check.
|
|
1723
|
-
* @returns {boolean} true if the blue box capabilities contain the given service and action
|
|
1724
|
-
*
|
|
1725
|
-
* @since 1.130.0
|
|
1726
|
-
* @private
|
|
1727
|
-
*/
|
|
1728
|
-
ApplicationContainer.prototype.supportsBlueBoxCapabilities = function (aRequiredCapabilities) {
|
|
1729
|
-
const oCapabilities = this.getBlueBoxCapabilities();
|
|
1730
|
-
|
|
1731
|
-
return aRequiredCapabilities.every((oRequiredCapability) => {
|
|
1732
|
-
return oCapabilities[`${oRequiredCapability.service}.${oRequiredCapability.action}`.toLowerCase()];
|
|
1733
|
-
});
|
|
1734
|
-
};
|
|
1735
|
-
|
|
1736
|
-
//Attach private functions which should be testable via unit tests to the prototype of the ApplicationContainer
|
|
1737
|
-
//to make them available outside for testing.
|
|
1738
|
-
ApplicationContainer.prototype._getCommunicationHandlers = getCommunicationHandlers;
|
|
1739
|
-
ApplicationContainer.prototype._adaptIsUrlSupportedResultForMessagePopover = adaptIsUrlSupportedResultForMessagePopover;
|
|
1740
|
-
ApplicationContainer.prototype._getLogoutHandler = getLogoutHandler;
|
|
1741
|
-
ApplicationContainer.prototype._getParameterMap = getParameterMap;
|
|
1742
|
-
ApplicationContainer.prototype._getTranslatedText = getTranslatedText;
|
|
1743
|
-
ApplicationContainer.prototype._createErrorControl = createErrorControl;
|
|
1744
|
-
ApplicationContainer.prototype._destroyChild = destroyChild;
|
|
1745
|
-
ApplicationContainer.prototype._createUi5View = createUi5View;
|
|
1746
|
-
ApplicationContainer.prototype._publishExternalEvent = publishExternalEvent;
|
|
1747
|
-
ApplicationContainer.prototype._createUi5Component = createUi5Component;
|
|
1748
|
-
ApplicationContainer.prototype._disableRouter = disableRouter;
|
|
1749
|
-
ApplicationContainer.prototype._createSystemForUrl = createSystemForUrl;
|
|
1750
|
-
ApplicationContainer.prototype._isTrustedPostMessageSource = isTrustedPostMessageSource;
|
|
1751
|
-
ApplicationContainer.prototype._handleMessageEvent = handleMessageEvent;
|
|
1752
|
-
ApplicationContainer.prototype._logout = logout;
|
|
1753
|
-
ApplicationContainer.prototype._renderControlInDiv = renderControlInDiv;
|
|
1754
|
-
ApplicationContainer.prototype._checkNwbcUrlAdjustment = checkNwbcUrlAdjustment;
|
|
1755
|
-
ApplicationContainer.prototype._adjustNwbcUrl = adjustNwbcUrl;
|
|
1756
|
-
ApplicationContainer.prototype._render = render;
|
|
1757
|
-
ApplicationContainer.prototype._getIFrame = getIFrame;
|
|
1758
|
-
ApplicationContainer.prototype._getIFrameUrl = getIFrameUrl;
|
|
1759
|
-
ApplicationContainer.prototype._resetPluginsLoadIndications = resetPluginsLoadIndications;
|
|
1760
|
-
ApplicationContainer.prototype._handlePostMessagesForPluginsPostLoading = handlePostMessagesForPluginsPostLoading;
|
|
1761
|
-
// helper for tests
|
|
1762
|
-
ApplicationContainer.prototype._setCachedUI5Version = function (sNewVersion) {
|
|
1763
|
-
sUI5Version = sNewVersion;
|
|
1764
|
-
oUI5VersionPromise = oUI5VersionPromise.then(() => {
|
|
1765
|
-
sUI5Version = sNewVersion;
|
|
1766
|
-
});
|
|
1767
|
-
};
|
|
1768
|
-
return ApplicationContainer;
|
|
1769
|
-
}, true);
|