UNPKG

@openui5/sap.m

Version:

OpenUI5 UI Library sap.m

171 lines (143 loc) 5.04 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 control sap.m.MenuListItem. sap.ui.define([ './ListItemBase', './library', 'sap/ui/core/IconPool', 'sap/ui/core/library', './MenuListItemRenderer' ], function(ListItemBase, library, IconPool, coreLibrary, MenuListItemRenderer) { "use strict"; // shortcut for sap.ui.core.TextDirection var TextDirection = coreLibrary.TextDirection; // shortcut for sap.m.ListType var ListType = library.ListType; /** * Constructor for a new <code>MenuListItem</code>. * * @param {string} [sId] ID for the new control, generated automatically if no ID is given * @param {object} [mSettings] Initial settings for the new control * * @class * The <code>sap.m.MenuListItem</code> is a list item used in the <code>sap.m.Menu</code>. * @extends sap.m.ListItemBase * * @author SAP SE * @version 1.117.4 * * @constructor * @private * @alias sap.m.MenuListItem */ var MenuListItem = ListItemBase.extend("sap.m.MenuListItem", /** @lends sap.m.MenuListItem.prototype */ { metadata : { library : "sap.m", properties : { /** * Enabled items can be selected. */ enabled : {type : "boolean", group : "Misc", defaultValue : true}, /** * Defines the title of the <code>MenuListItem</code>. */ title : {type : "string", group : "Misc", defaultValue : null}, /** * Defines the icon of the <code>MenuListItem</code>. */ icon : {type : "sap.ui.core.URI", group : "Misc", defaultValue : null}, /** * By default, one or more requests are sent to get the density perfect version of the icon if the given version of the icon doesn't exist on the server. * <b>Note:</b> If bandwidth is a key factor for the application, set this value to <code>false</code>. */ iconDensityAware : {type : "boolean", group : "Misc", defaultValue : true}, /** * Defines the <code>title</code> text directionality with enumerated options. By default, the control inherits text direction from the DOM. */ titleTextDirection : {type : "sap.ui.core.TextDirection", group : "Appearance", defaultValue : TextDirection.Inherit}, /** * Defines whether a visual separator should be rendered before the item. * <b>Note:</b> If an item is invisible, its separator is also not displayed. */ startsSection : {type : "boolean", group : "Behavior", defaultValue : false} }, associations: { /** * The <code>MenuItem</code> that this control renders. * Used internally in sap.m.Menu. */ menuItem: { type: "sap.m.MenuItem", multiple: false } } }, renderer: MenuListItemRenderer }); MenuListItem.prototype.exit = function() { if (this._image) { this._image.destroy(); } if (this._imageRightArrow) { this._imageRightArrow.destroy(); } ListItemBase.prototype.exit.apply(this, arguments); }; /** * @private * @param {string} sImgId The ID of the image * @param {string} sImgStyle The style of the image * @param {string} sSrc The source of the image * @param {boolean} bIconDensityAware If the icon is density aware * @returns {object} The image */ MenuListItem.prototype._getImage = function(sImgId, sImgStyle, sSrc, bIconDensityAware) { var oImage = this._image; if (oImage) { oImage.setSrc(sSrc); if (oImage.isA("sap.m.Image")) { oImage.setDensityAware(bIconDensityAware); } } else { oImage = IconPool.createControlByURI({ id: sImgId, src : sSrc, densityAware : bIconDensityAware, useIconTooltip : false }, sap.m.Image).setParent(this, null, true); } if (oImage.isA("sap.m.Image")) { oImage.addStyleClass(sImgStyle, true); } else { oImage.addStyleClass(sImgStyle + "Icon", true); } this._image = oImage; return this._image; }; /** * @private */ MenuListItem.prototype._getIconArrowRight = function() { if (!this._imageRightArrow) { this._imageRightArrow = IconPool.createControlByURI({ id: this.getId() + "-arrowRight", src : "sap-icon://slim-arrow-right", useIconTooltip : false }, sap.m.Image).setParent(this, null, true); this._imageRightArrow.addStyleClass("sapMMenuLIArrowRightIcon", true); } return this._imageRightArrow; }; MenuListItem.prototype._hasSubItems = function() { return !!(this.getMenuItem() && sap.ui.getCore().byId(this.getMenuItem()).getItems().length); }; MenuListItem.prototype.setProperty = function(sPropertyKey, vPropertyValue) { ListItemBase.prototype.setProperty.apply(this, arguments); this.fireEvent("propertyChanged", {propertyKey: sPropertyKey, propertyValue: vPropertyValue }); if (sPropertyKey === "enabled") { this.setType(vPropertyValue ? ListType.Active : ListType.Inactive); } }; return MenuListItem; });