@openui5/sap.m
Version:
OpenUI5 UI Library sap.m
105 lines (94 loc) • 3.5 kB
JavaScript
/*!
* OpenUI5
* (c) Copyright 2026 SAP SE or an SAP affiliate company.
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
*/
/**
* Defines support rules of the MessagePage control of sap.m library.
*/
sap.ui.define(["sap/ui/support/library"],
function(SupportLib) {
"use strict";
// shortcuts
var Categories = SupportLib.Categories, // Accessibility, Performance, Memory, ...
Severity = SupportLib.Severity, // Hint, Warning, Error
Audiences = SupportLib.Audiences; // Control, Internal, Application
//**********************************************************
// Rule Definitions
//**********************************************************
/**
* Determines <code>Control</code> computed height.
* @param {sap.ui.core.Control} oControl
* @returns {number}
*/
var getControlHeight = function(oControl) {
return oControl.getDomRef().getBoundingClientRect().height;
};
/**
* Checks, if MessagePage is in a container which has no set height
*/
var oMessagePageHeightRule = {
id: "messagePageShouldNotBeInAContainerWithoutSetHeight",
audiences: [Audiences.Application],
categories: [Categories.Usability],
enabled: true,
minversion: "1.28",
title: "Message Page: In a container without set height",
description: "Message Page should not be used in a container which has no set height",
resolution: "Use Message Page in a container with set height, such as sap.m.App",
resolutionurls: [{
text: "sap.m.MessagePage API Reference",
href: "https://sdk.openui5.org/api/sap.m.MessagePage"
}],
check: function (oIssueManager, oCoreFacade, oScope) {
oScope.getElementsByClassName("sap.m.MessagePage").forEach(function(oMPage) {
var sMPageId = oMPage.getId(),
iMPageHeight = getControlHeight(oMPage),
iMPageHeaderHeight = oMPage.getShowHeader() ? getControlHeight(oMPage.getAggregation("_internalHeader")) : 0,
iMPageContentHeight = iMPageHeight - iMPageHeaderHeight;
if (oMPage.getParent() === oMPage.getUIArea() && iMPageContentHeight <= 0) {
oIssueManager.addIssue({
severity: Severity.High,
details: "Message Page" + " (" + sMPageId + ") is used in a container which has no height set.",
context: {
id: sMPageId
}
});
}
});
}
};
/**
* Checks, if MessagePage is a top-level control
*/
var oMessagePageHierarchyRule = {
id: "messagePageShouldNotBeTopLevel",
audiences: [Audiences.Application],
categories: [Categories.Usability],
enabled: true,
minversion: "1.28",
title: "Message Page: Top-level control",
description: "Message Page should not be a top-level control",
resolution: "Use Message Page as described in the SAP Fiori Design Guidelines",
resolutionurls: [{
text: "SAP Fiori Design Guidelines: Message Page",
href: "https://experience.sap.com/fiori-design-web/message-page"
}],
check: function (oIssueManager, oCoreFacade, oScope) {
oScope.getElementsByClassName("sap.m.MessagePage").forEach(function(oMPage) {
var oMPageUIAreaControls = oMPage.getUIArea().getAggregation("content"),
sMPageId = oMPage.getId();
if (oMPageUIAreaControls.length > 1 && oMPage.getParent() === oMPage.getUIArea()) {
oIssueManager.addIssue({
severity: Severity.Medium,
details: "Message Page" + " (" + sMPageId + ") is a top-level control.",
context: {
id: sMPageId
}
});
}
});
}
};
return [oMessagePageHeightRule, oMessagePageHierarchyRule];
}, true);