@uuv/a11y 1.0.0-beta.2 → 1.0.0-beta.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +168 -0
- package/CONTRIBUTING.md +46 -0
- package/LICENSE +1 -1
- package/README.md +32 -249
- package/STRUCTURE.md +10 -0
- package/bundle/uuv-a11y.bundle.js +2 -2
- package/bundle/uuv-a11y.bundle.js.LICENSE.txt +1 -19
- package/dist/CHANGELOG.md +169 -0
- package/dist/CONTRIBUTING.md +46 -0
- package/dist/README.md +32 -249
- package/dist/STRUCTURE.md +10 -0
- package/dist/lib/engine/engine.js +28 -16
- package/dist/lib/model/index.d.ts +1 -1
- package/dist/lib/model/index.js +1 -1
- package/dist/lib/model/result.d.ts +2 -1
- package/dist/lib/model/rule.d.ts +0 -7
- package/dist/lib/model/rule.js +0 -2
- package/dist/lib/query/00-query.d.ts +6 -1
- package/dist/lib/query/00-query.js +10 -0
- package/dist/lib/query/accessible-name.query.d.ts +4 -2
- package/dist/lib/query/accessible-name.query.js +10 -7
- package/dist/lib/query/by-role.query.d.ts +4 -3
- package/dist/lib/query/by-role.query.js +22 -6
- package/dist/lib/query/by-sibling.query.d.ts +12 -0
- package/dist/lib/query/by-sibling.query.js +100 -0
- package/dist/lib/query/by-tag.query.d.ts +2 -2
- package/dist/lib/query/by-tag.query.js +4 -5
- package/dist/lib/query/compliant-attributes/attribut-specification.d.ts +34 -0
- package/dist/lib/query/compliant-attributes/attribut-specification.js +96 -0
- package/dist/lib/query/compliant-attributes/attribute-checker.d.ts +47 -0
- package/dist/lib/query/compliant-attributes/attribute-checker.js +73 -0
- package/dist/lib/query/compliant-attributes/compliant-attributes.query.d.ts +9 -0
- package/dist/lib/query/compliant-attributes/compliant-attributes.query.js +24 -0
- package/dist/lib/query/doctype.query.d.ts +2 -2
- package/dist/lib/query/doctype.query.js +2 -1
- package/dist/lib/query/form.query.d.ts +2 -2
- package/dist/lib/query/index.d.ts +7 -0
- package/dist/lib/query/index.js +7 -0
- package/dist/lib/query/operators/and-query.d.ts +8 -0
- package/dist/lib/query/operators/and-query.js +25 -0
- package/dist/lib/query/operators/operator-query.d.ts +8 -0
- package/dist/lib/query/operators/operator-query.js +14 -0
- package/dist/lib/query/operators/or-query.d.ts +8 -0
- package/dist/lib/query/operators/or-query.js +24 -0
- package/dist/lib/reference/rgaa/coverage/coverage-statement.json +56 -17
- package/dist/lib/reference/rgaa/rules/1-image.d.ts +0 -1
- package/dist/lib/reference/rgaa/rules/1-image.js +51 -77
- package/dist/lib/reference/rgaa/rules/11-form.d.ts +0 -1
- package/dist/lib/reference/rgaa/rules/11-form.js +0 -1
- package/dist/lib/reference/rgaa/rules/2-frame.d.ts +0 -1
- package/dist/lib/reference/rgaa/rules/2-frame.js +8 -7
- package/dist/lib/reference/rgaa/rules/3-color.d.ts +0 -1
- package/dist/lib/reference/rgaa/rules/3-color.js +0 -3
- package/dist/lib/reference/rgaa/rules/5-table.d.ts +12 -1
- package/dist/lib/reference/rgaa/rules/5-table.js +292 -1
- package/dist/lib/reference/rgaa/rules/6-link.d.ts +12 -1
- package/dist/lib/reference/rgaa/rules/6-link.js +147 -1
- package/dist/lib/reference/rgaa/rules/8-required-element.d.ts +0 -1
- package/dist/lib/reference/rgaa/rules/8-required-element.js +57 -9
- package/dist/lib/reference/rgaa/selector-helper.d.ts +40 -1
- package/dist/lib/reference/rgaa/selector-helper.js +82 -10
- package/dist/package.json +15 -4
- package/package.json +15 -4
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DoctypeQuery = void 0;
|
|
4
|
+
const _00_query_1 = require("./00-query");
|
|
4
5
|
class DoctypeQuery {
|
|
5
6
|
execute() {
|
|
6
7
|
if (document?.doctype?.name !== "html") {
|
|
7
|
-
return [document.documentElement];
|
|
8
|
+
return [new _00_query_1.QueryResult(document.documentElement)];
|
|
8
9
|
}
|
|
9
10
|
return [];
|
|
10
11
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Query } from "./00-query";
|
|
1
|
+
import { Query, QueryResult } from "./00-query";
|
|
2
2
|
export declare class FormQuery implements Query {
|
|
3
3
|
LABEL_ATTRIBUTE: string;
|
|
4
4
|
FORMFIELD_SELECTORS: string[];
|
|
5
5
|
FORMFIELD_LABEL_ATTRIBUTES: string[];
|
|
6
|
-
execute():
|
|
6
|
+
execute(): QueryResult[];
|
|
7
7
|
getSelector(): string;
|
|
8
8
|
}
|
|
@@ -3,4 +3,11 @@ export * from "./by-tag.query";
|
|
|
3
3
|
export * from "./doctype.query";
|
|
4
4
|
export * from "./form.query";
|
|
5
5
|
export * from "./by-role.query";
|
|
6
|
+
export * from "./by-sibling.query";
|
|
7
|
+
export * from "./operators/operator-query";
|
|
8
|
+
export * from "./operators/or-query";
|
|
9
|
+
export * from "./operators/and-query";
|
|
6
10
|
export * from "./accessible-name.query";
|
|
11
|
+
export * from "./compliant-attributes/compliant-attributes.query";
|
|
12
|
+
export * from "./compliant-attributes/attribute-checker";
|
|
13
|
+
export * from "./compliant-attributes/attribut-specification";
|
package/dist/lib/query/index.js
CHANGED
|
@@ -19,4 +19,11 @@ __exportStar(require("./by-tag.query"), exports);
|
|
|
19
19
|
__exportStar(require("./doctype.query"), exports);
|
|
20
20
|
__exportStar(require("./form.query"), exports);
|
|
21
21
|
__exportStar(require("./by-role.query"), exports);
|
|
22
|
+
__exportStar(require("./by-sibling.query"), exports);
|
|
23
|
+
__exportStar(require("./operators/operator-query"), exports);
|
|
24
|
+
__exportStar(require("./operators/or-query"), exports);
|
|
25
|
+
__exportStar(require("./operators/and-query"), exports);
|
|
22
26
|
__exportStar(require("./accessible-name.query"), exports);
|
|
27
|
+
__exportStar(require("./compliant-attributes/compliant-attributes.query"), exports);
|
|
28
|
+
__exportStar(require("./compliant-attributes/attribute-checker"), exports);
|
|
29
|
+
__exportStar(require("./compliant-attributes/attribut-specification"), exports);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IOperatorQuery } from "./operator-query";
|
|
2
|
+
import { Query, QueryResult } from "../00-query";
|
|
3
|
+
export declare class AndQuery implements IOperatorQuery, Query {
|
|
4
|
+
readonly queries: Query[];
|
|
5
|
+
constructor(queries: Query[]);
|
|
6
|
+
execute(): QueryResult[];
|
|
7
|
+
getSelector(): string;
|
|
8
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.AndQuery = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const DOM_NODE_ATTRIBUTE = "domNode";
|
|
9
|
+
class AndQuery {
|
|
10
|
+
queries;
|
|
11
|
+
constructor(queries) {
|
|
12
|
+
this.queries = queries;
|
|
13
|
+
}
|
|
14
|
+
execute() {
|
|
15
|
+
const queryResults = this.queries.map(query => query.execute());
|
|
16
|
+
return queryResults.reduce((left, right) => {
|
|
17
|
+
return lodash_1.default.intersectionBy(left, right, DOM_NODE_ATTRIBUTE);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
getSelector() {
|
|
21
|
+
const result = this.queries.map(query => query.execute());
|
|
22
|
+
return `${lodash_1.default.intersection(...result).map(query => query.domNode).join(",")}`;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.AndQuery = AndQuery;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OperatorQuery = void 0;
|
|
4
|
+
const or_query_1 = require("./or-query");
|
|
5
|
+
const and_query_1 = require("./and-query");
|
|
6
|
+
class OperatorQuery {
|
|
7
|
+
static Or = (...queries) => {
|
|
8
|
+
return new or_query_1.OrQuery(queries);
|
|
9
|
+
};
|
|
10
|
+
static And = (...queries) => {
|
|
11
|
+
return new and_query_1.AndQuery(queries);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
exports.OperatorQuery = OperatorQuery;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IOperatorQuery } from "./operator-query";
|
|
2
|
+
import { Query, QueryResult } from "../00-query";
|
|
3
|
+
export declare class OrQuery implements IOperatorQuery, Query {
|
|
4
|
+
readonly queries: Query[];
|
|
5
|
+
constructor(queries: Query[]);
|
|
6
|
+
execute(): QueryResult[];
|
|
7
|
+
getSelector(): string;
|
|
8
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.OrQuery = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const DOM_NODE_ATTRIBUTE = "domNode";
|
|
9
|
+
class OrQuery {
|
|
10
|
+
queries;
|
|
11
|
+
constructor(queries) {
|
|
12
|
+
this.queries = queries;
|
|
13
|
+
}
|
|
14
|
+
execute() {
|
|
15
|
+
const queryResults = this.queries.map(query => query.execute());
|
|
16
|
+
return queryResults.reduce((left, right) => {
|
|
17
|
+
return lodash_1.default.unionBy(left, right, DOM_NODE_ATTRIBUTE);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
getSelector() {
|
|
21
|
+
return `${this.queries.map(query => query.getSelector()).join(",")}`;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.OrQuery = OrQuery;
|
|
@@ -3,11 +3,45 @@
|
|
|
3
3
|
"1.1.1",
|
|
4
4
|
"1.1.2",
|
|
5
5
|
"1.1.3",
|
|
6
|
-
"1.1.5"
|
|
6
|
+
"1.1.5",
|
|
7
|
+
"1.1.6",
|
|
8
|
+
"2.1.1",
|
|
9
|
+
"2.2.1",
|
|
10
|
+
"5.1.1",
|
|
11
|
+
"5.2.1",
|
|
12
|
+
"5.3.1",
|
|
13
|
+
"5.4.1",
|
|
14
|
+
"5.5.1",
|
|
15
|
+
"5.6.1",
|
|
16
|
+
"5.6.2",
|
|
17
|
+
"5.6.3",
|
|
18
|
+
"5.6.4",
|
|
19
|
+
"5.7.1",
|
|
20
|
+
"5.7.2",
|
|
21
|
+
"5.7.3",
|
|
22
|
+
"5.7.4",
|
|
23
|
+
"5.7.5",
|
|
24
|
+
"5.8.1",
|
|
25
|
+
"6.1.1",
|
|
26
|
+
"6.1.2",
|
|
27
|
+
"6.1.3",
|
|
28
|
+
"6.1.4",
|
|
29
|
+
"6.1.5",
|
|
30
|
+
"6.2.1",
|
|
31
|
+
"8.1.1",
|
|
32
|
+
"8.1.2",
|
|
33
|
+
"8.1.3",
|
|
34
|
+
"8.3.1",
|
|
35
|
+
"8.4.1",
|
|
36
|
+
"8.5.1",
|
|
37
|
+
"8.6.1",
|
|
38
|
+
"8.7.1",
|
|
39
|
+
"8.8.1",
|
|
40
|
+
"8.10.1",
|
|
41
|
+
"8.10.2"
|
|
7
42
|
],
|
|
8
43
|
"inProgress": [
|
|
9
44
|
"1.1.4",
|
|
10
|
-
"1.1.6",
|
|
11
45
|
"1.1.7",
|
|
12
46
|
"1.1.8",
|
|
13
47
|
"1.2.1",
|
|
@@ -40,51 +74,56 @@
|
|
|
40
74
|
"1.6.4",
|
|
41
75
|
"1.6.5",
|
|
42
76
|
"1.6.6",
|
|
43
|
-
"1.6.7"
|
|
77
|
+
"1.6.7",
|
|
78
|
+
"8.2.1",
|
|
79
|
+
"8.9.1"
|
|
44
80
|
],
|
|
45
81
|
"wontBeImplemented": [
|
|
46
82
|
"1.1.6"
|
|
47
83
|
],
|
|
48
84
|
"comments": {
|
|
49
85
|
"1": {
|
|
50
|
-
"warning": "La différence entre une image décorative et une image porteuse d'informations étant subjective (comme précisé sur par le [W3C](https://www.w3.org/WAI/tutorials/images/informative/)), nous avons choisi de définir une image porteuse d'informations comme une image ayant une alternative textuelle pour favoriser l'automatisation des contrôles.\\\nPour les contrôles concernant les alternatives
|
|
86
|
+
"warning": "La différence entre une image décorative et une image porteuse d'informations étant subjective (comme précisé sur par le [W3C](https://www.w3.org/WAI/tutorials/images/informative/)), nous avons choisi de définir une image porteuse d'informations comme une image ayant une alternative textuelle pour favoriser l'automatisation des contrôles.\\\nPour les contrôles concernant les alternatives textuelles, nous utilisons la librairie [dom-accessibility-api](https://www.npmjs.com/package/dom-accessibility-api) qui implémente les [règles du W3C](https://w3c.github.io/accname/)"
|
|
51
87
|
},
|
|
52
88
|
"1.1.1": {
|
|
53
|
-
"warning": "Pour les contrôles concernant les alternatives
|
|
89
|
+
"warning": "Pour les contrôles concernant les alternatives textuelles, nous utilisons la librairie [dom-accessibility-api](https://www.npmjs.com/package/dom-accessibility-api) qui implémente les [règles du W3C](https://w3c.github.io/accname/)"
|
|
54
90
|
},
|
|
55
91
|
"1.1.2": {
|
|
56
|
-
"warning": "Pour les contrôles concernant les alternatives
|
|
92
|
+
"warning": "Pour les contrôles concernant les alternatives textuelles, nous utilisons la librairie [dom-accessibility-api](https://www.npmjs.com/package/dom-accessibility-api) qui implémente les [règles du W3C](https://w3c.github.io/accname/)"
|
|
57
93
|
},
|
|
58
94
|
"1.1.5": {
|
|
59
|
-
"warning": "Pour les contrôles concernant les alternatives
|
|
95
|
+
"warning": "Pour les contrôles concernant les alternatives textuelles, nous utilisons la librairie [dom-accessibility-api](https://www.npmjs.com/package/dom-accessibility-api) qui implémente les [règles du W3C](https://w3c.github.io/accname/)"
|
|
60
96
|
},
|
|
61
97
|
"1.1.6": {
|
|
62
|
-
"danger": "Soit un mécanisme permet à l'utilisateur de remplacer l'élément `<object>` par un contenu alternatif.",
|
|
63
|
-
"warning": "
|
|
98
|
+
"danger": "Vérifier de votre côté la règle : Soit un mécanisme permet à l'utilisateur de remplacer l'élément `<object>` par un contenu alternatif.",
|
|
99
|
+
"warning": "nous considérons comme adjacent, le bouton et le lien url accessible avec une tabulation ou une tabulation arrière"
|
|
64
100
|
},
|
|
65
101
|
"1.1.7": {
|
|
66
|
-
"warning": "Pour les contrôles concernant les alternatives
|
|
102
|
+
"warning": "Pour les contrôles concernant les alternatives textuelles, nous utilisons la librairie [dom-accessibility-api](https://www.npmjs.com/package/dom-accessibility-api) qui implémente les [règles du W3C](https://w3c.github.io/accname/)"
|
|
67
103
|
},
|
|
68
104
|
"1.1.8": {
|
|
69
|
-
"warning": "Pour les contrôles concernant les alternatives
|
|
105
|
+
"warning": "Pour les contrôles concernant les alternatives textuelles, nous utilisons la librairie [dom-accessibility-api](https://www.npmjs.com/package/dom-accessibility-api) qui implémente les [règles du W3C](https://w3c.github.io/accname/)"
|
|
70
106
|
},
|
|
71
107
|
"1.2.1": {
|
|
72
|
-
"warning": "Pour les contrôles concernant les alternatives
|
|
108
|
+
"warning": "Pour les contrôles concernant les alternatives textuelles, nous utilisons la librairie [dom-accessibility-api](https://www.npmjs.com/package/dom-accessibility-api) qui implémente les [règles du W3C](https://w3c.github.io/accname/)"
|
|
73
109
|
},
|
|
74
110
|
"1.2.2": {
|
|
75
|
-
"warning": "Pour les contrôles concernant les alternatives
|
|
111
|
+
"warning": "Pour les contrôles concernant les alternatives textuelles, nous utilisons la librairie [dom-accessibility-api](https://www.npmjs.com/package/dom-accessibility-api) qui implémente les [règles du W3C](https://w3c.github.io/accname/)"
|
|
76
112
|
},
|
|
77
113
|
"1.2.3": {
|
|
78
|
-
"warning": "Pour les contrôles concernant les alternatives
|
|
114
|
+
"warning": "Pour les contrôles concernant les alternatives textuelles, nous utilisons la librairie [dom-accessibility-api](https://www.npmjs.com/package/dom-accessibility-api) qui implémente les [règles du W3C](https://w3c.github.io/accname/)"
|
|
79
115
|
},
|
|
80
116
|
"1.2.4": {
|
|
81
|
-
"warning": "Pour les contrôles concernant les alternatives
|
|
117
|
+
"warning": "Pour les contrôles concernant les alternatives textuelles, nous utilisons la librairie [dom-accessibility-api](https://www.npmjs.com/package/dom-accessibility-api) qui implémente les [règles du W3C](https://w3c.github.io/accname/)"
|
|
82
118
|
},
|
|
83
119
|
"1.2.5": {
|
|
84
|
-
"warning": "Pour les contrôles concernant les alternatives
|
|
120
|
+
"warning": "Pour les contrôles concernant les alternatives textuelles, nous utilisons la librairie [dom-accessibility-api](https://www.npmjs.com/package/dom-accessibility-api) qui implémente les [règles du W3C](https://w3c.github.io/accname/)"
|
|
85
121
|
},
|
|
86
122
|
"1.2.6": {
|
|
87
|
-
"warning": "Pour les contrôles concernant les alternatives
|
|
123
|
+
"warning": "Pour les contrôles concernant les alternatives textuelles, nous utilisons la librairie [dom-accessibility-api](https://www.npmjs.com/package/dom-accessibility-api) qui implémente les [règles du W3C](https://w3c.github.io/accname/)"
|
|
124
|
+
},
|
|
125
|
+
"5": {
|
|
126
|
+
"warning": "Nous considérons qu'un *tableau de mise en forme* est une balise *table* possédant le rôle *presentation* \\\n Nous considérons qu'un *tableau avec header* est une balise *table* ou un rôle *table* possédant une balise *th* ou un élément avec un rôle *rowheader* ou un élément avec un rôle *columnheader*"
|
|
88
127
|
}
|
|
89
128
|
}
|
|
90
129
|
}
|