@openui5/sap.m
Version:
OpenUI5 UI Library sap.m
70 lines (62 loc) • 2.11 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.
*/
/**
* Defines support rules of the List, Table and Tree controls 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
//**********************************************************
/**
* Input field needs to have a label association
*/
var oInputNeedsLabelRule = {
id: "inputNeedsLabel",
audiences: [Audiences.Control],
categories: [Categories.Usability],
enabled: true,
minversion: "1.28",
title: "Input field: Missing label",
description:"An input field needs a label",
resolution: "Define a sap.m.Label for the input field in the xml view and set the labelFor property to this input field Id.",
resolutionurls: [{
text: "SAP Fiori Design Guidelines: Input field",
href:"https://experience.sap.com/fiori-design-web/input-field/#guidelines"
}],
check: function (issueManager, oCoreFacade, oScope) {
var aInputIds = oScope.getElementsByClassName("sap.m.Input")
.map(function(oInput) {
return oInput.getId();
});
oScope.getElementsByClassName("sap.m.Label")
.forEach(function (oLabel){
var sLabelFor = oLabel.getLabelFor();
if (aInputIds.indexOf(sLabelFor) > -1) {
var iIndex = aInputIds.indexOf(sLabelFor);
aInputIds.splice(iIndex, 1);
}
});
if (aInputIds.length > 0) {
aInputIds.forEach(function(sInputId) {
issueManager.addIssue({
severity: Severity.Medium,
details: "Input field" + " (" + sInputId + ") is missing a label.",
context: {
id: sInputId
}
});
});
}
}
};
return [oInputNeedsLabelRule];
}, true);