Sha256: 200bb502ed858be74e50696acc81d926015eee80f68610d505b067080755d1c7

Contents?: true

Size: 1.49 KB

Versions: 271

Compression:

Stored size: 1.49 KB

Contents

/* global aria, dom */

/**
 * Validate the value of an ARIA attribute
 * @method validateAttrValue
 * @memberof axe.commons.aria
 * @instance
 * @param  {HTMLElement} node The element to check
 * @param  {String} attr The name of the attribute
 * @return {Boolean}
 */
aria.validateAttrValue = function validateAttrValue(node, attr) {
	'use strict';
	var matches,
		list,
		value = node.getAttribute(attr),
		attrInfo = aria.lookupTable.attributes[attr];

	var doc = dom.getRootNode(node);

	if (!attrInfo) {
		return true;
	}
	if (attrInfo.allowEmpty && (!value || value.trim() === '')) {
		return true;
	}

	switch (attrInfo.type) {
		case 'boolean':
		case 'nmtoken':
			return (
				typeof value === 'string' &&
				attrInfo.values.includes(value.toLowerCase())
			);

		case 'nmtokens':
			list = axe.utils.tokenList(value);
			// Check if any value isn't in the list of values
			return list.reduce(function(result, token) {
				return result && attrInfo.values.includes(token);
				// Initial state, fail if the list is empty
			}, list.length !== 0);

		case 'idref':
			return !!(value && doc.getElementById(value));

		case 'idrefs':
			list = axe.utils.tokenList(value);
			return list.some(token => doc.getElementById(token));

		case 'string':
			// Not allowed empty except with allowEmpty: true
			return value.trim() !== '';

		case 'decimal':
			matches = value.match(/^[-+]?([0-9]*)\.?([0-9]*)$/);
			return !!(matches && (matches[1] || matches[2]));

		case 'int':
			return /^[-+]?[0-9]+$/.test(value);
	}
};

Version data entries

271 entries across 271 versions & 1 rubygems

Version Path
govuk_publishing_components-30.4.1 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-30.4.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-30.3.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-30.2.1 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-30.2.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-30.1.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-30.0.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-29.15.3 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-29.15.2 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-29.15.1 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-29.15.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-29.14.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-29.13.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-29.12.1 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-29.12.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-29.11.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-29.10.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-29.9.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-29.8.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js
govuk_publishing_components-29.7.0 node_modules/axe-core/lib/commons/aria/validate-attr-value.js