UNPKG

@openui5/sap.m

Version:

OpenUI5 UI Library sap.m

212 lines (180 loc) 5.51 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.IconTabSeparator. sap.ui.define([ "sap/ui/core/Core", "sap/ui/core/Element", "sap/ui/core/Item", "sap/m/IconTabFilter", "sap/m/ImageHelper" ], function ( Core, Element, Item, IconTabFilter, ImageHelper ) { "use strict"; /** * Constructor for a new IconTabSeparator. * * @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 * Represents an Icon used to separate 2 tab filters. * * @extends sap.ui.core.Element * @implements sap.m.IconTab * * @author SAP SE * @version 1.117.4 * * @constructor * @public * @alias sap.m.IconTabSeparator */ var IconTabSeparator = Element.extend("sap.m.IconTabSeparator", /** @lends sap.m.IconTabSeparator.prototype */ { metadata: { interfaces: [ "sap.m.IconTab" ], library: "sap.m", designtime: "sap/m/designtime/IconTabSeparator.designtime", properties: { /** * The icon to display for this separator. If no icon is given, a separator line is used instead. */ icon: { type: "sap.ui.core.URI", group: "Misc", defaultValue: '' }, /** * Specifies whether the separator is rendered. */ visible: { type: "boolean", group: "Behavior", defaultValue: true }, /** * If set to true, it sends one or more requests, * trying to get the density perfect version of the image if this version of * the image doesn't exist on the server. Default value is set to true. * * If bandwidth is key for the application, set this value to false. */ iconDensityAware: { type: "boolean", group: "Appearance", defaultValue: true } } } }); /** * Lazy load feed icon image. * * @param {Array} aCssClasses Array of CSS classes, which will be added if the image needs to be created. * @param {sap.ui.core.Control} oParent This element's parent. * @private */ IconTabSeparator.prototype._getImageControl = function (aCssClasses, oParent) { var mProperties = { src: this.getIcon(), densityAware: this.getIconDensityAware(), useIconTooltip: false }; this._oImageControl = ImageHelper.getImageControl(this.getId() + "-icon", this._oImageControl, oParent, mProperties, aCssClasses); return this._oImageControl; }; /** * Function is called when exiting the element. * * @private */ IconTabSeparator.prototype.exit = function (oEvent) { if (this._oImageControl) { this._oImageControl.destroy(); } Element.prototype.exit.call(this, oEvent); }; /** * @returns {sap.m.IconTabSeparator} the underlying instance of a separator * @private */ IconTabSeparator.prototype._getRealTab = function () { return IconTabFilter.prototype._getRealTab.call(this); }; /** * @returns {int} the level at which this item has been nested, or 1 if an item has not been nested * @private */ IconTabSeparator.prototype._getNestedLevel = function () { return IconTabFilter.prototype._getNestedLevel.call(this); }; /** * Renders the item in the IconTabHeader. * @param {sap.ui.core.RenderManager} oRM the RenderManager that can be used for writing to the render output buffer * @protected */ IconTabSeparator.prototype.render = function (oRM) { if (!this.getVisible()) { return; } var sIcon = this.getIcon(), oIconTabHeader = this.getParent(), oRB = Core.getLibraryResourceBundle('sap.m'), mAriaParams = {}; if (sIcon) { mAriaParams.role = "img"; mAriaParams.label = oRB.getText("ICONTABBAR_NEXTSTEP"); } else { mAriaParams.role = "separator"; } oRM.openStart("div", this) .accessibilityState(mAriaParams) .class("sapMITBItem") .class("sapMITBSep"); if (!sIcon) { oRM.class("sapMITBSepLine"); } oRM.openEnd(); if (sIcon) { oRM.renderControl(this._getImageControl(["sapMITBSepIcon"], oIconTabHeader)); } oRM.close("div"); }; /** * Renders this item in the IconTabSelectList. * @param {sap.ui.core.RenderManager} oRM RenderManager used for writing to the render output buffer * @param {sap.m.IconTabBarSelectList} oSelectList the select list in which this filter is rendered * @param {int} iIndexInSet this item's index within the aggregation of items * @param {int} iSetSize total length of the aggregation of items * @param {float} fPaddingValue the padding with which the item should be indented * @protected */ IconTabSeparator.prototype.renderInSelectList = function (oRM, oSelectList, iIndexInSet, iSetSize, fPaddingValue) { if (!this.getVisible()) { return; } var sIcon = this.getIcon(), oIconTabHeader = oSelectList._oIconTabHeader, oRB = Core.getLibraryResourceBundle('sap.m'), mAriaParams = {}; if (sIcon) { mAriaParams.role = "img"; mAriaParams.label = oRB.getText("ICONTABBAR_NEXTSTEP"); } else { mAriaParams.role = "separator"; } oRM.openStart("li", this) .class("sapMITBSelectItem") .class("sapMITBSep") .accessibilityState(mAriaParams); if (fPaddingValue && !sIcon) { oRM.style("padding-left", fPaddingValue + "rem"); } if (!sIcon) { oRM.class("sapMITBSepLine"); } oRM.openEnd(); if (sIcon) { oRM.renderControl(this._getImageControl(["sapMITBSepIcon"], oIconTabHeader)); } oRM.close("li"); }; return IconTabSeparator; });