UNPKG

@openui5/sap.m

Version:

OpenUI5 UI Library sap.m

156 lines (129 loc) 5 kB
/*! * OpenUI5 * (c) Copyright 2026 SAP SE or an SAP affiliate company. * Licensed under the Apache License, Version 2.0 - see LICENSE.txt. */ sap.ui.define(["sap/ui/core/Lib", "sap/ui/core/library", "sap/ui/core/Renderer", "./ListItemBaseRenderer", "./ColumnListItemRenderer"], function(Library, coreLibrary, Renderer, ListItemBaseRenderer, ColumnListItemRenderer) { "use strict"; // shortcut for sap.ui.core.TextDirection var TextDirection = coreLibrary.TextDirection; /** * GroupHeaderListItem renderer. * @namespace */ var GroupHeaderListItemRenderer = Renderer.extend(ListItemBaseRenderer); GroupHeaderListItemRenderer.apiVersion = 2; GroupHeaderListItemRenderer.renderType = function(rm, oLI) { var oTable = oLI.getTable(); if (!oTable || !oTable.doItemsNeedTypeColumn()) { return; } rm.openStart("td", oLI.getId() + "-TypeCell"); rm.class("sapMListTblNavCol"); rm.attr("role", "presentation"); rm.openEnd().close("td"); }; GroupHeaderListItemRenderer.renderNavigated = function(rm, oLI) { var oBaseRenderer = oLI.getTable() ? ColumnListItemRenderer : ListItemBaseRenderer; oBaseRenderer.renderNavigated.apply(oBaseRenderer, arguments); }; // for dummy cell rendering position inherit from ColumnListItemRenderer GroupHeaderListItemRenderer.renderContentLatter = function(rm, oLI) { ColumnListItemRenderer.renderContentLatter.apply(this, arguments); }; // GroupHeaderListItem does not respect mode and counter property of the LIB GroupHeaderListItemRenderer.renderMode = function() {}; GroupHeaderListItemRenderer.renderCounter = function() {}; // Hightlist cells should be rendered to satisfy the Jaws with the colspan calculation for the correct column count GroupHeaderListItemRenderer.renderHighlight = function(rm, oLI) { if (oLI.getTable()) { rm.openStart("td"); rm.class("sapMListTblHighlightCell"); rm.attr("role", "presentation"); rm.openEnd(); rm.close("td"); } else { ListItemBaseRenderer.renderHighlight(rm, oLI); } }; // accesibility position is only relevant for the Table case therefore use the logic of CLI GroupHeaderListItemRenderer.getAccessbilityPosition = ColumnListItemRenderer.getAccessbilityPosition; /** * Renders the attributes for the given list item, 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.m.GroupHeaderListItem} * oLI an object representation of the list item that should be * rendered */ GroupHeaderListItemRenderer.renderLIAttributes = function(rm, oLI) { rm.class("sapMGHLI"); if (oLI.getUpperCase()) { rm.class("sapMGHLIUpperCase"); } var oTable = oLI.getTable(); if (oTable) { rm.attr("aria-roledescription", Library.getResourceBundleFor("sap.m").getText("TABLE_GROUP_ROW")); } }; /** * Renders the List item content * * @param {sap.ui.core.RenderManager} * rm the RenderManager that can be used for writing to the * Render-Output-Buffer * @param {sap.m.GroupHeaderListItem} * oLI an object representation of the list item that should be * rendered */ GroupHeaderListItemRenderer.renderLIContentWrapper = function(rm, oLI) { var oTable = oLI.getTable(); if (oTable) { rm.openStart("td", oLI.getId() + "-cell"); rm.class("sapMGHLICell"); rm.attr("role", "gridcell"); ColumnListItemRenderer.makeFocusable(rm); rm.attr("colspan", oTable.getColCount() - oTable.doItemsNeedTypeColumn() - oTable.shouldRenderDummyColumn() - 2 /* Navigated and Highlight cells are always rendered */); rm.openEnd(); } ListItemBaseRenderer.renderLIContentWrapper.apply(this, arguments); if (oTable) { // create dummy contents for the item navigation to mimic a matrix for (var i = 1; i < oTable._colHeaderAriaOwns.length; i++) { rm.openStart("div").class("sapMTblItemNav").openEnd().close("div"); } rm.close("td"); } }; GroupHeaderListItemRenderer.renderLIContent = function(rm, oLI) { var sTextDir = oLI.getTitleTextDirection(); rm.openStart("span", `${oLI.getId()}-title`); rm.class("sapMGHLITitle"); if (sTextDir != TextDirection.Inherit) { rm.attr("dir", sTextDir.toLowerCase()); } rm.openEnd(); rm.text(oLI.getTitle()); rm.close("span"); var iCount = oLI.getCount() || oLI.getCounter(); if (iCount) { rm.openStart("span"); rm.class("sapMGHLICounter"); rm.openEnd(); rm.text(" (" + iCount + ")"); rm.close("span"); } }; GroupHeaderListItemRenderer.addLegacyOutlineClass = function(rm, oLI) { var fnBase = oLI.getTable() ? ColumnListItemRenderer : ListItemBaseRenderer; fnBase.addLegacyOutlineClass.apply(this, arguments); }; GroupHeaderListItemRenderer.getAriaRole = function(oLI) { return oLI.getTable() ? "row" : "listitem"; }; return GroupHeaderListItemRenderer; }, /* bExport= */ true);