1234567891011121314151617181920212223242526272829303132 |
- import { getNodeFromTree } from '../../core/utils';
- import AbstractVirtuaNode from '../../core/base/virtual-node/abstract-virtual-node';
- import getImplicitRole from './implicit-role';
- import getElementSpec from '../standards/get-element-spec';
- /**
- * @description validate if a given role is an allowed ARIA role for the supplied node
- * @method isAriaRoleAllowedOnElement
- * @param {HTMLElement} node the node to verify
- * @param {String} role aria role to check
- * @return {Boolean} retruns true/false
- */
- function isAriaRoleAllowedOnElement(node, role) {
- const vNode =
- node instanceof AbstractVirtuaNode ? node : getNodeFromTree(node);
- const implicitRole = getImplicitRole(vNode);
- // always allow the explicit role to match the implicit role
- if (role === implicitRole) {
- return true;
- }
- const spec = getElementSpec(vNode);
- if (Array.isArray(spec.allowedRoles)) {
- return spec.allowedRoles.includes(role);
- }
- return !!spec.allowedRoles;
- }
- export default isAriaRoleAllowedOnElement;
|