@openui5/sap.m
Version:
OpenUI5 UI Library sap.m
156 lines (125 loc) • 4.22 kB
JavaScript
/*!
* UI development toolkit for HTML5 (OpenUI5)
* (c) Copyright 2009-2022 SAP SE or an SAP affiliate company.
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
*/
sap.ui.define(['sap/m/library',
'sap/ui/Device'],
function(library,
Device) {
"use strict";
// shortcut for sap.m.IconTabFilterDesign
var IconTabFilterDesign = library.IconTabFilterDesign;
/**
* HBox renderer.
* @namespace
*/
var IconTabHeaderRenderer = {
};
/**
* 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.ui.core.Control} oControl an object representation of the control that should be rendered
*/
IconTabHeaderRenderer.render = function(oRM, oControl){
// return immediately if control is not visible
if (!oControl.getVisible()) {
return;
}
var aItems = oControl.getItems(),
iItemsCount = aItems.length,
aVisibleTabFilters = oControl.getVisibleTabFilters(),
iVisibleTabFiltersCount = aVisibleTabFilters.length,
iVisibleTabFilterIndex = 0,
bTextOnly = oControl._checkTextOnly(aItems),
bNoText = oControl._checkNoText(aItems),
bInLine = oControl._checkInLine(aItems) || oControl.isInlineMode(),
bShowOverflowSelectList = oControl.getShowOverflowSelectList(),
oItem,
bIsHorizontalDesign,
bHasHorizontalDesign;
var oIconTabBar = oControl.getParent();
var bUpperCase = oIconTabBar && oIconTabBar instanceof sap.m.IconTabBar && oIconTabBar.getUpperCase();
// render wrapper div
oRM.write("<div role='tablist' ");
oRM.addClass("sapMITH");
oRM.addClass("sapContrastPlus");
oRM.addClass("sapMITHBackgroundDesign" + oControl.getBackgroundDesign());
if (bShowOverflowSelectList) {
oRM.addClass("sapMITHOverflowList");
}
if (oControl._scrollable) {
oRM.addClass("sapMITBScrollable");
if (oControl._bPreviousScrollForward) {
oRM.addClass("sapMITBScrollForward");
} else {
oRM.addClass("sapMITBNoScrollForward");
}
if (oControl._bPreviousScrollBack) {
oRM.addClass("sapMITBScrollBack");
} else {
oRM.addClass("sapMITBNoScrollBack");
}
} else {
oRM.addClass("sapMITBNotScrollable");
}
// Check for upperCase property on IconTabBar
if (bUpperCase) {
oRM.addClass("sapMITBTextUpperCase");
}
oRM.writeControlData(oControl);
oRM.writeClasses();
oRM.write(">");
// render left scroll arrow
oRM.renderControl(oControl._getScrollingArrow("left"));
var sAriaHidden = Device.browser.msie ? "aria-hidden='true'" : "";
// render scroll container on touch devices
oRM.write("<div id='" + oControl.getId() + "-scrollContainer' " + sAriaHidden + " class='sapMITBScrollContainer'>");
oRM.write("<div id='" + oControl.getId() + "-head' " + sAriaHidden);
oRM.addClass("sapMITBHead");
if (bTextOnly) {
oRM.addClass("sapMITBTextOnly");
}
if (bNoText) {
oRM.addClass("sapMITBNoText");
}
if (bInLine) {
oRM.addClass("sapMITBInLine");
}
oRM.writeClasses();
oRM.write(">");
for (var i = 0; i < iItemsCount; i++) {
oItem = aItems[i];
oItem.render(oRM, iVisibleTabFilterIndex, iVisibleTabFiltersCount);
if (oItem instanceof sap.m.IconTabFilter) {
bIsHorizontalDesign = oItem.getDesign() === IconTabFilterDesign.Horizontal;
if (bIsHorizontalDesign) {
bHasHorizontalDesign = true;
}
if (oItem.getVisible()) {
iVisibleTabFilterIndex++;
}
}
}
oRM.write("</div>");
oRM.write("</div>"); //scrollContainer
// render right scroll arrow
oRM.renderControl(oControl._getScrollingArrow("right"));
// render overflow button
if (bShowOverflowSelectList) {
var oOverflowButton = oControl._getOverflowButton();
if (bInLine) {
oOverflowButton.addStyleClass('sapMBtnInline');
} else if (bTextOnly) {
oOverflowButton.addStyleClass('sapMBtnTextOnly');
} else if (bNoText || bHasHorizontalDesign) {
oOverflowButton.addStyleClass('sapMBtnNoText');
}
oRM.renderControl(oOverflowButton);
}
// end wrapper div
oRM.write("</div>");
};
return IconTabHeaderRenderer;
}, /* bExport= */ true);