@openui5/sap.m
Version:
OpenUI5 UI Library sap.m
204 lines (186 loc) • 7.1 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.
*/
// Provides default renderer for the sap.m.FeedListItem
sap.ui.define(["./ListItemBaseRenderer", "sap/ui/core/Renderer", "sap/ui/Device"],
function(ListItemBaseRenderer, Renderer, Device) {
"use strict";
/**
* FeedListItem renderer.
* @namespace
*/
var FeedListItemRenderer = Renderer.extend(ListItemBaseRenderer);
/**
* Make sure that parent li is displayed as a horizontal webkit-box.
*
* @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 feed list item that should be rendered
*/
FeedListItemRenderer.renderLIAttributes = function(oRm, oControl) {
oRm.addClass("sapMFeedListItemTitleDiv");
oRm.addClass("sapMFeedListShowSeparatorsAll");
};
/**
* 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 feed list item that should be rendered
*/
FeedListItemRenderer.renderLIContent = function(oRm, oControl) {
// convenience variable
var sMyId = oControl.getId(), bIsPhone = Device.system.phone;
oRm.write('<div');
oRm.addClass('sapMFeedListItem');
oRm.writeClasses();
oRm.write('>');
// icon
if (oControl.getShowIcon()) {
this._writeImageControl(oRm, oControl, sMyId);
}
// action button
if (oControl.getActions().length > 0) {
oRm.write("<div");
oRm.writeAttributeEscaped("id", sMyId + "-action-button");
oRm.addClass('sapMFeedListItemActionButton');
oRm.writeClasses();
oRm.write(">");
oRm.renderControl(oControl.getAggregation("_actionButton"));
oRm.write("</div>");
}
// text (starting with sender)
if (bIsPhone) {
oRm.write('<div class= "sapMFeedListItemHeader sapUiSelectable ');
if (oControl.getShowIcon()) {
oRm.write('sapMFeedListItemHasFigure ');
}
if (oControl.getSender() && oControl.getTimestamp()) {
oRm.write('sapMFeedListItemFullHeight');
}
oRm.write('" >');
if (oControl.getSender()) {
oRm.write('<p id="' + sMyId + '-name" class="sapMFeedListItemTextName sapUiSelectable">');
oRm.renderControl(oControl._getLinkSender(false));
oRm.write('</p>');
}
if (oControl.getTimestamp()) {
// write date
oRm.write('<p id="' + sMyId + '-timestamp" class="sapMFeedListItemTimestamp sapUiSelectable">');
oRm.writeEscaped(oControl.getTimestamp());
oRm.write('</p>');
}
oRm.write('</div>');
oRm.write('<div class="sapMFeedListItemText sapUiSelectable">');
oRm.write('<span id="' + sMyId + '-realtext" class="sapMFeedListItemText sapUiSelectable">');
if (oControl._checkTextIsExpandable()) {
this._writeCollapsedText(oRm, oControl, sMyId);
} else {
oRm.write(oControl._sFullText);
oRm.write('</span>');
}
oRm.write('</div>');
if (oControl.getInfo()) {
// info
oRm.write('<p class="sapMFeedListItemFooter sapUiSelectable">');
if (oControl.getInfo()) {
oRm.write('<span id="' + sMyId + '-info" class="sapMFeedListItemInfo sapUiSelectable">');
oRm.writeEscaped(oControl.getInfo());
oRm.write('</span>');
}
oRm.write('</p>');
}
} else {
oRm.write('<div class= "sapMFeedListItemText ');
if (oControl.getShowIcon()) {
oRm.write('sapMFeedListItemHasFigure');
}
oRm.write('" >');
oRm.write('<div id="' + sMyId + '-text" class="sapMFeedListItemTextText sapUiSelectable">');
if (oControl.getSender()) {
oRm.write('<span id="' + sMyId + '-name" class="sapMFeedListItemTextName sapUiSelectable">');
oRm.renderControl(oControl._getLinkSender(true));
oRm.write('</span>');
}
oRm.write('<span id="' + sMyId + '-realtext" class="sapMFeedListItemTextString sapUiSelectable">');
if (oControl._checkTextIsExpandable()) {
this._writeCollapsedText(oRm, oControl, sMyId);
} else {
oRm.write(oControl._sFullText);
oRm.write('</span>');
}
oRm.write('</div>');
if (oControl.getInfo() || oControl.getTimestamp()) {
// info and date
oRm.write('<p class="sapMFeedListItemFooter sapUiSelectable">');
if (!sap.ui.getCore().getConfiguration().getRTL()) {
if (oControl.getInfo()) {
this._writeInfo(oRm, oControl, sMyId);
// Write Interpunct separator if necessary (with spaces before and after)
if (oControl.getTimestamp()) {
oRm.write("<span>  ·  </span>");
}
}
if (oControl.getTimestamp()) {
this._writeTimestamp(oRm, oControl, sMyId);
}
} else {
if (oControl.getTimestamp()) {
this._writeTimestamp(oRm, oControl, sMyId);
}
if (oControl.getInfo()) {
// Write Interpunct separator if necessary (with spaces before and after)
if (oControl.getTimestamp()) {
oRm.write("<span>  ·  </span>");
}
this._writeInfo(oRm, oControl, sMyId);
}
}
oRm.write('</p>');
}
oRm.write('</div>');
}
oRm.write('</div>');
};
FeedListItemRenderer._writeImageControl = function(oRm, oControl, sId) {
oRm.write('<figure id="' + sId + '-figure"');
oRm.addClass('sapMFeedListItemFigure');
if (!oControl.getIcon()) {
oRm.addClass('sapMFeedListItemIsDefaultIcon');
}
oRm.writeClasses();
oRm.write('>');
oRm.renderControl(oControl._getImageControl());
oRm.write('</figure>');
};
FeedListItemRenderer._writeCollapsedText = function(oRm, oControl, sId) {
// 'oFeedListItem._bTextExpanded' is true if the text has been expanded and rendering needs to be done again.
if (oControl._bTextExpanded) {
oRm.write(oControl._sFullText);
oRm.write('</span>');
oRm.write('<span id="' + sId + '-threeDots" class ="sapMFeedListItemTextString">');
oRm.write(" "); // space
oRm.write('</span>');
} else {
oRm.write(oControl._sShortText);
oRm.write('</span>');
oRm.write('<span id="' + sId + '-threeDots" class ="sapMFeedListItemTextString">');
oRm.write(" ... "); // space + three dots + space
oRm.write('</span>');
}
var oLinkExpandCollapse = oControl._getLinkExpandCollapse();
oLinkExpandCollapse.addStyleClass("sapMFeedListItemLinkExpandCollapse");
oRm.renderControl(oLinkExpandCollapse);
};
FeedListItemRenderer._writeTimestamp = function(oRm, oControl, sId) {
oRm.write('<span id="' + sId + '-timestamp" class="sapMFeedListItemTimestampText sapUiSelectable">');
oRm.writeEscaped(oControl.getTimestamp());
oRm.write('</span>');
};
FeedListItemRenderer._writeInfo = function(oRm, oControl, sId) {
oRm.write('<span id="' + sId + '-info" class="sapMFeedListItemInfoText sapUiSelectable">');
oRm.writeEscaped(oControl.getInfo());
oRm.write('</span>');
};
return FeedListItemRenderer;
}, /* bExport= */ true);