UNPKG

@openui5/sap.ui.core

Version:

OpenUI5 Core Library sap.ui.core

148 lines (131 loc) 5.55 kB
/*! * OpenUI5 * (c) Copyright 2009-2023 SAP SE or an SAP affiliate company. * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. */ // Provides class sap.ui.core.ComponentMetadata sap.ui.define(['./ComponentMetadata', 'sap/ui/core/mvc/ViewType'], function(ComponentMetadata, ViewType) { "use strict"; /** * Creates a new metadata object for a UIComponent subclass. * * @param {string} sClassName Fully qualified name of the class that is described by this metadata object * @param {object} oClassInfo Static info to construct the metadata from * * @experimental Since 1.15.1. The Component concept is still under construction, so some implementation details can be changed in future. * @class * @author SAP SE * @version 1.111.5 * @since 1.15.1 * @alias sap.ui.core.UIComponentMetadata * @extends sap.ui.core.ComponentMetadata * @private */ var UIComponentMetadata = function(sClassName, oClassInfo) { // call super constructor ComponentMetadata.apply(this, arguments); }; //chain the prototypes UIComponentMetadata.prototype = Object.create(ComponentMetadata.prototype); UIComponentMetadata.prototype.constructor = UIComponentMetadata; UIComponentMetadata.preprocessClassInfo = function(oClassInfo) { // if the component is a string we convert this into a "_src" metadata entry // the specific metadata object can decide to support this or gracefully ignore it // basically the ComponentMetadata makes use of this feature if (oClassInfo && typeof oClassInfo.metadata === "string") { oClassInfo.metadata = { _src: oClassInfo.metadata }; } return oClassInfo; }; /** * Returns the root view of the component. * * <b>Important:</b></br> * If a Component is loaded using the manifest URL (or according the * "manifest first" strategy), this function ignores the entries of the * manifest file! It returns only the entries which have been defined in * the Component metadata or in the proper Component manifest. * * @param {boolean} [bDoNotMerge] Returns the local root view configuration if set to <code>true</code>. * @return {object|null} root view as configuration object or null ({@link sap.ui.view}) * @protected * @since 1.15.1 * @deprecated Since 1.27.1. Please use {@link sap.ui.core.Component#getManifestEntry}("/sap.ui5/rootView") */ UIComponentMetadata.prototype.getRootView = function(bDoNotMerge) { return this.getManifestEntry("/sap.ui5/rootView", !bDoNotMerge); }; /** * Returns the routing configuration. * * <b>Important:</b></br> * If a Component is loaded using the manifest URL (or according the * "manifest first" strategy), this function ignores the entries of the * manifest file! It returns only the entries which have been defined in * the Component metadata or in the proper Component manifest. * * @return {object} routing configuration * @param {boolean} [bDoNotMerge] Returns the local routing config if set to <code>true</code> * @private * @since 1.16.1 * @experimental Since 1.16.1. Implementation might change. * @deprecated Since 1.27.1. Please use {@link sap.ui.core.Component#getManifestEntry}("/sap.ui5/routing/config") */ UIComponentMetadata.prototype.getRoutingConfig = function(bDoNotMerge) { return this.getManifestEntry("/sap.ui5/routing/config", !bDoNotMerge); }; /** * Returns the array of routes. If not defined the array is undefined. * * <b>Important:</b></br> * If a Component is loaded using the manifest URL (or according the * "manifest first" strategy), this function ignores the entries of the * manifest file! It returns only the entries which have been defined in * the Component metadata or in the proper Component manifest. * * @return {array} routes * @param {boolean} [bDoNotMerge] Returns the local routes if set to <code>true</code> * @private * @since 1.16.1 * @experimental Since 1.16.1. Implementation might change. * @deprecated Since 1.27.1. Please use {@link sap.ui.core.Component#getManifestEntry}("/sap.ui5/routing/routes") */ UIComponentMetadata.prototype.getRoutes = function(bDoNotMerge) { return this.getManifestEntry("/sap.ui5/routing/routes", !bDoNotMerge); }; /** * Converts the legacy metadata into the new manifest format * * @param {object} oStaticInfo Static info containing the legacy metadata * @param {object} oManifest The new manifest * @private */ UIComponentMetadata.prototype._convertLegacyMetadata = function(oStaticInfo, oManifest) { ComponentMetadata.prototype._convertLegacyMetadata.call(this, oStaticInfo, oManifest); // add the old information on component metadata to the manifest info // if no manifest entry exists otherwise the metadata entry will be // ignored by the converter var oUI5Manifest = oManifest["sap.ui5"]; var oRootView = oUI5Manifest["rootView"] || oStaticInfo["rootView"]; if (oRootView) { oUI5Manifest["rootView"] = oRootView; } var oRouting = oUI5Manifest["routing"] || oStaticInfo["routing"]; if (oRouting) { oUI5Manifest["routing"] = oRouting; } // if the root view is a string we convert it into a view // configuration object and assume that it is an XML view // !This should be kept in sync with the UIComponent#createContent functionality! if (oUI5Manifest["rootView"] && typeof oUI5Manifest["rootView"] === "string") { oUI5Manifest["rootView"] = { viewName: oUI5Manifest["rootView"], type: ViewType.XML }; } }; return UIComponentMetadata; }, /* bExport= */ true);