/*! * UI development toolkit for HTML5 (OpenUI5) * (c) Copyright 2009-2018 SAP SE or an SAP affiliate company. * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. */ // Provides default renderer for control sap.ui.commons.Button sap.ui.define(['jquery.sap.global'], function(jQuery) { "use strict"; /** * @author SAP SE * @version 1.60.23 * @namespace */ var ButtonRenderer = { }; /** * Renders the HTML for the given control, using the provided {@link sap.ui.core.RenderManager}. * * @param {sap.ui.core.RenderManager} rm The RenderManager that can be used for writing to the render output buffer. * @param {sap.ui.core.Control} oButton An object representation of the control that should be rendered. */ ButtonRenderer.render = function(rm, oButton) { rm.addClass("sapUiBtn"); // button is rendered as a ""); }; /** * Function called by button control on mouse down event. * @param {sap.ui.commons.Button} oButton The button to be rendered */ ButtonRenderer.onactive = function(oButton) { oButton.$().addClass("sapUiBtnAct").removeClass("sapUiBtnStd"); oButton.$("img").attr("src", this._getIconForState(oButton, "active")); }; /** * Function called by button control on mouse up event. * @param {sap.ui.commons.Button} oButton The button to be rendered */ ButtonRenderer.ondeactive = function(oButton) { oButton.$().addClass("sapUiBtnStd").removeClass("sapUiBtnAct"); oButton.$("img").attr("src", this._getIconForState(oButton, "deactive")); }; /** * Function called by button control on blur. * @param {sap.ui.commons.Button} oButton The button to be rendered */ ButtonRenderer.onblur = function(oButton) { oButton.$().removeClass("sapUiBtnFoc"); oButton.$("img").attr("src", this._getIconForState(oButton, "blur")); if (!!sap.ui.Device.browser.internet_explorer) { ButtonRenderer.onmouseout(oButton); } }; /** * Function called by button control on focus. * @param {sap.ui.commons.Button} oButton The button to be rendered */ ButtonRenderer.onfocus = function(oButton) { oButton.$().addClass("sapUiBtnFoc"); oButton.$("img").attr("src", this._getIconForState(oButton, "focus")); }; /** * Function called when mouse leaves button. * @param {sap.ui.commons.Button} oButton The button to be rendered */ ButtonRenderer.onmouseout = function(oButton) { oButton.$().removeClass("sapUiBtnAct"); oButton.$().addClass("sapUiBtnStd"); oButton.$("img").attr("src", this._getIconForState(oButton, "mouseout")); }; /** * Function called when mouse enters button. * @param {sap.ui.commons.Button} oButton The button to be rendered * @private */ ButtonRenderer.onmouseover = function(oButton) { oButton.$("img").attr("src", this._getIconForState(oButton, "mouseover")); }; /** * Returns the icon URI for the given button state. * @param {sap.ui.commons.Button} oButton The button to be rendered * @param {string} sState The state of the button * @returns {Object} The icon of the button according to the state of the button * @private */ ButtonRenderer._getIconForState = function(oButton, sState) { if (!oButton.getEnabled()) { sState = "disabled"; } switch (sState) { case "focus": case "blur": case "base": if (oButton.$().hasClass("sapUiBtnAct")) { var sIcon = oButton.getIconSelected() || oButton.getIconHovered(); return sIcon ? sIcon : oButton.getIcon(); } else if (oButton.$().hasClass("sapUiBtnFoc")) { return oButton.getIcon(); } return oButton.getIcon(); case "mouseout": if (oButton.$().hasClass("sapUiBtnFoc")) { return oButton.getIcon(); } return oButton.getIcon(); case "active": var sIcon = oButton.getIconSelected() || oButton.getIconHovered(); return sIcon ? sIcon : oButton.getIcon(); case "mouseover": case "deactive": var sIcon = oButton.getIconHovered(); return sIcon ? sIcon : oButton.getIcon(); } return oButton.getIcon(); }; /** * HTML for icon as image. * @param {sap.ui.core.RenderManager} oRenderManager The RenderManager that can be used for writing to the render output buffer * @param {sap.ui.commons.Button} oButton The button to be rendered * @param {boolean} bImageOnly Whether the button has only image or it has text too */ ButtonRenderer.writeImgHtml = function(oRenderManager, oButton, bImageOnly) { var rm = oRenderManager, iconUrl = this._getIconForState(oButton, "base"); rm.write(""); }; /** * HTML for icon as icon font. * @param {sap.ui.core.RenderManager} oRenderManager The RenderManager that can be used for writing to the render output buffer * @param {sap.ui.commons.Button} oButton The button to be rendered */ ButtonRenderer.writeIconHtml = function(oRenderManager, oButton) { var rm = oRenderManager; var aClasses = []; var mAttributes = buildIconAttributes(oButton); aClasses.push("sapUiBtnIco"); if (oButton.getText()) { // only add a distance to the text if there is text aClasses.push(oButton.getIconFirst() ? "sapUiBtnIcoL" : "sapUiBtnIcoR"); } rm.writeIcon(oButton.getIcon(), aClasses, mAttributes); }; ButtonRenderer.changeIcon = function(oButton) { if (sap.ui.core.IconPool.isIconURI(oButton.getIcon())) { var oIconInfo = sap.ui.core.IconPool.getIconInfo(oButton.getIcon()); var oIcon = oButton.$("icon"); oIcon.attr("data-sap-ui-icon-content", oIconInfo.content); if (!oIconInfo.skipMirroring) { oIcon.addClass("sapUiIconMirrorInRTL"); } else { oIcon.removeClass("sapUiIconMirrorInRTL"); } } else if (oButton.$().hasClass("sapUiBtnAct")) { oButton.$("img").attr("src", this._getIconForState(oButton, "active")); } else if (oButton.$().hasClass("sapUiBtnFoc")) { oButton.$("img").attr("src", this._getIconForState(oButton, "focus")); } else if (oButton.$().hasClass("sapUiBtnStd")) { oButton.$("img").attr("src", this._getIconForState(oButton, "base")); } }; /** * * @private * @param {sap.ui.commons.Button} oButton The button to be rendered * @returns {Object} Icon attributes */ function buildIconAttributes(oButton) { var oAttributes = {}, sTooltip = oButton.getTooltip_AsString(); oAttributes["id"] = oButton.getId() + "-icon"; if (sTooltip) { // prevents default icon tooltip oAttributes["title"] = null; oAttributes["aria-label"] = null; oAttributes["aria-hidden"] = true; } return oAttributes; } return ButtonRenderer; }, /* bExport= */ true);