Sha256: f1936be13ea1de6bf01bcda36546584bcba29c43c246a3422e10585e90991d4c

Contents?: true

Size: 996 Bytes

Versions: 250

Compression:

Stored size: 996 Bytes

Contents

/**
 * Applicability:
 * Rule applies to any element that has
 * a) a semantic role that is `widget` that supports name from content
 * b) has visible text content
 * c) has accessible name (eg: `aria-label`)
 */
const { aria, text } = axe.commons;

const role = aria.getRole(node);
if (!role) {
	return false;
}

const widgetRoles = Object.keys(aria.lookupTable.role).filter(
	key => aria.lookupTable.role[key].type === `widget`
);
const isWidgetType = widgetRoles.includes(role);
if (!isWidgetType) {
	return false;
}

const rolesWithNameFromContents = aria.getRolesWithNameFromContents();
if (!rolesWithNameFromContents.includes(role)) {
	return false;
}

/**
 * if no `aria-label` or `aria-labelledby` attribute - ignore `node`
 */
if (
	!text.sanitize(aria.arialabelText(virtualNode)) &&
	!text.sanitize(aria.arialabelledbyText(node))
) {
	return false;
}

/**
 * if no `contentText` - ignore `node`
 */
if (!text.sanitize(text.visibleVirtual(virtualNode))) {
	return false;
}

return true;

Version data entries

250 entries across 250 versions & 1 rubygems

Version Path
govuk_publishing_components-30.4.1 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-30.4.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-30.3.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-30.2.1 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-30.2.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-30.1.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-30.0.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-29.15.3 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-29.15.2 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-29.15.1 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-29.15.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-29.14.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-29.13.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-29.12.1 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-29.12.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-29.11.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-29.10.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-29.9.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-29.8.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js
govuk_publishing_components-29.7.0 node_modules/axe-core/lib/rules/label-content-name-mismatch-matches.js