DefinitelyTyped/types/aria-query/aria-query-tests.ts
Sebastian Silbermann 24665a0223 feat(aria-query): Add types (#38515)
* Ported flow types

* Fix example from readme

* Add type tests for elementRoles and roleElements

* Fix lint issues
2019-09-23 14:21:32 -07:00

29 lines
1.3 KiB
TypeScript

import { elementRoles, roleElements, roles, ARIARoleDefintionKey, ARIARoleRelation } from 'aria-query';
function prettRole(roleName: ARIARoleDefintionKey) {
const role = roles.get(roleName)!;
console.log(`required props: ${Object.keys(role.requiredProps).join(', ')}`);
console.log(`props: ${Object.keys(role.props).join(', ')}`);
console.log(`Is ${!role.abstract ? 'not abstract' : 'abstract'}`);
console.log(
`${role.childrenPresentational ? 'Has Child Presentational characteristics' : 'No special cahracteristics'}`,
);
console.log('baseConcepts:');
role.baseConcepts.forEach(prettyRoleRelation);
console.log('relatedConcepts:');
role.relatedConcepts.forEach(prettyRoleRelation);
}
function prettyRoleRelation(relation: ARIARoleRelation): void {
console.log(`module: ${relation.module}`);
console.log(`concept: ${relation.concept !== undefined ? relation.concept.name : 'none'}`);
if (relation.concept !== undefined) {
console.log(
`attributes: ${(relation.concept.attributes || []).map(({ name, value }) => `name=${value}`).join(', ')}`,
);
}
}
const [selectElement] = Array.from(roleElements.get('combobox')!);
const selectRoles: string[] = Array.from(elementRoles.get(selectElement)!);