@uuv/a11y
Version:
A javascript lib for running a11y validation based on multiple reference(RGAA, etc)
97 lines (96 loc) • 4.32 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.NotEmptyInnerTextSpecification = exports.EmptyInnerTextSpecification = exports.AccessibleNameNotContainsVisibleTextSpecification = exports.EqualsAttributeSpecification = exports.NotEqualsAttributeSpecification = exports.NotUniqueIdAttributeSpecification = exports.EmptyElementWithIdSpecification = exports.NotEmptyAttributeSpecification = exports.EmptyAttributeSpecification = void 0;
const lodash_1 = __importDefault(require("lodash"));
// eslint-disable-next-line @typescript-eslint/no-var-requires
const $ = require("jquery/dist/jquery.min");
const dom_accessibility_api_1 = require("dom-accessibility-api");
class EmptyAttributeSpecification {
isSatisfiedBy(element, attributeName) {
const attributeValue = element.getAttribute(attributeName);
return lodash_1.default.isEmpty(attributeValue);
}
}
exports.EmptyAttributeSpecification = EmptyAttributeSpecification;
class NotEmptyAttributeSpecification {
isSatisfiedBy(element, attributeName) {
const attributeValue = element.getAttribute(attributeName);
return !lodash_1.default.isEmpty(attributeValue);
}
}
exports.NotEmptyAttributeSpecification = NotEmptyAttributeSpecification;
class EmptyElementWithIdSpecification {
isSatisfiedBy(element, attributeName) {
const attributeValue = element.getAttribute(attributeName);
if (attributeValue === null || lodash_1.default.isEmpty(attributeValue)) {
return true;
}
const bindingNodeId = $(`#${attributeValue.replaceAll(".", "\\.")}`).text();
return lodash_1.default.isEmpty(bindingNodeId);
}
}
exports.EmptyElementWithIdSpecification = EmptyElementWithIdSpecification;
class NotUniqueIdAttributeSpecification {
isSatisfiedBy(element, attributeName) {
if (lodash_1.default.isNull(element.id) || lodash_1.default.isEmpty(element.id)) {
return true;
}
return $(`[id=${element.id}]`).length > 1;
}
}
exports.NotUniqueIdAttributeSpecification = NotUniqueIdAttributeSpecification;
class NotEqualsAttributeSpecification {
expectedValueList;
constructor(expectedValueList) {
this.expectedValueList = expectedValueList;
}
isSatisfiedBy(element, attributeName) {
const attributeValue = element.getAttribute(attributeName);
if (attributeValue === null) {
return true;
}
return !this.expectedValueList.includes(attributeValue);
}
}
exports.NotEqualsAttributeSpecification = NotEqualsAttributeSpecification;
class EqualsAttributeSpecification {
expectedValueList;
constructor(expectedValueList) {
this.expectedValueList = expectedValueList;
}
isSatisfiedBy(element, attributeName) {
const attributeValue = element.getAttribute(attributeName);
if (attributeValue === null) {
return false;
}
return this.expectedValueList.includes(attributeValue);
}
}
exports.EqualsAttributeSpecification = EqualsAttributeSpecification;
class AccessibleNameNotContainsVisibleTextSpecification {
isSatisfiedBy(element, attributeName) {
const visibleText = element.textContent;
if (visibleText === null || lodash_1.default.isEmpty(visibleText)) {
return false;
}
const accessibleName = (0, dom_accessibility_api_1.computeAccessibleName)(element);
console.debug("visibleText", visibleText, "accessibleName", accessibleName);
return accessibleName?.toLowerCase().indexOf(visibleText.toLowerCase()) === -1;
}
}
exports.AccessibleNameNotContainsVisibleTextSpecification = AccessibleNameNotContainsVisibleTextSpecification;
class EmptyInnerTextSpecification {
isSatisfiedBy(element, attributeName) {
return lodash_1.default.isEmpty(element.textContent);
}
}
exports.EmptyInnerTextSpecification = EmptyInnerTextSpecification;
class NotEmptyInnerTextSpecification {
isSatisfiedBy(element, attributeName) {
return !lodash_1.default.isEmpty(element.textContent);
}
}
exports.NotEmptyInnerTextSpecification = NotEmptyInnerTextSpecification;