UNPKG

@openui5/sap.m

Version:

OpenUI5 UI Library sap.m

213 lines (175 loc) 5.5 kB
/*! * OpenUI5 * (c) Copyright 2009-2023 SAP SE or an SAP affiliate company. * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. */ sap.ui.define([ 'sap/ui/core/Renderer', 'sap/ui/core/library', './library', 'sap/ui/core/Core' ], function(Renderer, coreLibrary, library, oCore) { "use strict"; // shortcut for sap.ui.core.ValueState var ValueState = coreLibrary.ValueState; // shortcut for sap.ui.core.TextDirection var TextDirection = coreLibrary.TextDirection; /** * String to prefix CSS class for number status. */ var _sCSSPrefixObjNumberStatus = 'sapMObjectNumberStatus'; // shortcut for sap.m.EmptyIndicator var EmptyIndicatorMode = library.EmptyIndicatorMode; /** * ObjectNumber renderer. * @namespace */ var ObjectNumberRenderer = { apiVersion: 2 }; /** * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}. * * @param {sap.ui.core.RenderManager} oRm The RenderManager that can be used for writing to the render output buffer * @param {sap.m.ObjectNumber} oON An object representation of the control that should be rendered */ ObjectNumberRenderer.render = function(oRm, oON) { var sTooltip = oON.getTooltip_AsString(), sTextDir = oON.getTextDirection(), sTextAlign = oON.getTextAlign(), oAccAttributes = {}; oRm.openStart("div", oON); oRm.class("sapMObjectNumber"); if (oON._isActive()) { oRm.class("sapMObjectNumberActive"); oRm.attr("tabindex", "0"); oAccAttributes.role = "button"; } oRm.class(_sCSSPrefixObjNumberStatus + oON.getState()); if (oON.getEmphasized()) { oRm.class("sapMObjectNumberEmph"); } if (oON.getInverted()) { oRm.class("sapMObjectNumberInverted"); } if (sTooltip) { oRm.attr("title", sTooltip); } if (sTextDir !== TextDirection.Inherit) { oRm.attr("dir", sTextDir.toLowerCase()); } sTextAlign = Renderer.getTextAlign(sTextAlign, sTextDir); if (sTextAlign) { oRm.style("text-align", sTextAlign); } if (oON._hasExternalLabelling()) { oAccAttributes["labelledby"] = { value: oON._generateSelfLabellingIds(), append: true }; } oRm.accessibilityState(oON, oAccAttributes); oRm.openEnd(); oRm.openStart("span", oON.getId() + "-inner"); oRm.class("sapMObjectNumberInner"); oRm.openEnd(); if (oON.getEmptyIndicatorMode() !== EmptyIndicatorMode.Off && !oON.getNumber()) { this.renderEmptyIndicator(oRm, oON); } else { this.renderText(oRm, oON); this.renderUnit(oRm, oON); } oRm.close("span"); this.renderEmphasizedInfoElement(oRm, oON); this.renderHiddenARIAElement(oRm, oON); this.renderRoleDescriptionInfo(oRm, oON); oRm.close("div"); }; /** * @param {sap.ui.core.RenderManager} oRm * @param {sap.m.ObjectNumber} oON * @private */ ObjectNumberRenderer.renderText = function(oRm, oON) { var sUnit = oON.getUnit() || oON.getNumberUnit(); oRm.openStart("span", oON.getId() + "-number"); oRm.class("sapMObjectNumberText"); oRm.openEnd(); oRm.text(oON.getNumber()); if (sUnit !== "") { oRm.text(" "); } oRm.close("span"); }; /** * @param {sap.ui.core.RenderManager} oRm * @param {sap.m.ObjectNumber} oON * @private */ ObjectNumberRenderer.renderUnit = function(oRm, oON) { var sUnit = oON.getUnit() || oON.getNumberUnit(); if (sUnit !== "") { oRm.openStart("span", oON.getId() + "-unit"); oRm.class("sapMObjectNumberUnit"); oRm.openEnd(); oRm.text(sUnit); oRm.close("span"); } }; ObjectNumberRenderer.renderEmphasizedInfoElement = function(oRm, oON) { if (!oON.getEmphasized() || !oON.getNumber()) { return; } oRm.openStart("span", oON.getId() + "-emphasized"); oRm.class("sapUiPseudoInvisibleText"); oRm.openEnd(); oRm.text(oCore.getLibraryResourceBundle("sap.m").getText("OBJECTNUMBER_EMPHASIZED")); oRm.close("span"); }; ObjectNumberRenderer.renderHiddenARIAElement = function(oRm, oON) { if (oON.getState() == ValueState.None) { return; } oRm.openStart("span", oON.getId() + "-state"); oRm.class("sapUiPseudoInvisibleText"); oRm.openEnd(); oRm.text(oON._getStateText()); oRm.close("span"); }; ObjectNumberRenderer.renderRoleDescriptionInfo = function(oRm, oON) { oRm.openStart("span", oON.getId() + "-roledescription"); oRm.class("sapUiPseudoInvisibleText"); oRm.openEnd(); oRm.text(oCore.getLibraryResourceBundle("sap.m").getText("OBJECTNUMBER_NAME")); oRm.close("span"); }; /** * Renders the empty text indicator. * * @param {sap.ui.core.RenderManager} oRm The RenderManager that can be used for writing to the render output buffer. * @param {sap.m.ObjectNumber} oON An object representation of the control that should be rendered. */ ObjectNumberRenderer.renderEmptyIndicator = function(oRm, oON) { var oRb = oCore.getLibraryResourceBundle("sap.m"); oRm.openStart("span"); oRm.class("sapMEmptyIndicator"); if (oON.getEmptyIndicatorMode() === EmptyIndicatorMode.Auto) { oRm.class("sapMEmptyIndicatorAuto"); } oRm.openEnd(); oRm.openStart("span"); oRm.attr("aria-hidden", true); oRm.openEnd(); oRm.text(oRb.getText("EMPTY_INDICATOR")); oRm.close("span"); //Empty space text to be announced by screen readers oRm.openStart("span"); oRm.class("sapUiPseudoInvisibleText"); oRm.openEnd(); oRm.text(oRb.getText("EMPTY_INDICATOR_TEXT")); oRm.close("span"); oRm.close("span"); }; return ObjectNumberRenderer; }, /* bExport= */ true);