@qualweb/act-rules 0.7.0-alpha2 → 0.7.0
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/README.md +109 -76
- package/dist/ACTRulesModule.d.ts +11 -0
- package/dist/ACTRulesModule.d.ts.map +1 -0
- package/dist/ACTRulesModule.js +65 -0
- package/dist/ACTRulesRunner.d.ts +14 -0
- package/dist/ACTRulesRunner.d.ts.map +1 -0
- package/dist/ACTRulesRunner.js +44 -0
- package/dist/__webpack/act.bundle.js +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/lib/ACTRulesTester.object.d.ts +15 -0
- package/dist/lib/ACTRulesTester.object.d.ts.map +1 -0
- package/dist/lib/ACTRulesTester.object.js +150 -0
- package/dist/lib/AtomicRule.object.d.ts +7 -0
- package/dist/lib/AtomicRule.object.d.ts.map +1 -0
- package/dist/lib/AtomicRule.object.js +7 -0
- package/dist/lib/CompositeRule.object.d.ts +13 -0
- package/dist/lib/CompositeRule.object.d.ts.map +1 -0
- package/dist/lib/CompositeRule.object.js +80 -0
- package/dist/lib/Rule.object.d.ts +19 -0
- package/dist/lib/Rule.object.d.ts.map +1 -0
- package/dist/lib/Rule.object.js +76 -0
- package/dist/lib/mapping.d.ts +36 -0
- package/dist/lib/mapping.d.ts.map +1 -0
- package/dist/lib/mapping.js +38 -0
- package/dist/lib/mappingComposite.d.ts +39 -0
- package/dist/lib/mappingComposite.d.ts.map +1 -0
- package/dist/lib/mappingComposite.js +23 -0
- package/dist/lib/rules.json +1523 -0
- package/dist/lib/types.d.ts +15 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +2 -0
- package/dist/rules/QW-ACT-R1.d.ts +7 -0
- package/dist/rules/QW-ACT-R1.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R1.js +49 -0
- package/dist/rules/QW-ACT-R10.d.ts +8 -0
- package/dist/rules/QW-ACT-R10.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R10.js +98 -0
- package/dist/rules/QW-ACT-R11.d.ts +7 -0
- package/dist/rules/QW-ACT-R11.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R11.js +40 -0
- package/dist/rules/QW-ACT-R12.d.ts +7 -0
- package/dist/rules/QW-ACT-R12.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R12.js +40 -0
- package/dist/rules/QW-ACT-R13.d.ts +9 -0
- package/dist/rules/QW-ACT-R13.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R13.js +76 -0
- package/dist/rules/QW-ACT-R14.d.ts +7 -0
- package/dist/rules/QW-ACT-R14.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R14.js +73 -0
- package/dist/rules/QW-ACT-R15.d.ts +6 -0
- package/dist/rules/QW-ACT-R15.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R15.js +26 -0
- package/dist/rules/QW-ACT-R16.d.ts +7 -0
- package/dist/rules/QW-ACT-R16.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R16.js +52 -0
- package/dist/rules/QW-ACT-R17.d.ts +7 -0
- package/dist/rules/QW-ACT-R17.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R17.js +52 -0
- package/dist/rules/QW-ACT-R19.d.ts +7 -0
- package/dist/rules/QW-ACT-R19.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R19.js +42 -0
- package/dist/rules/QW-ACT-R2.d.ts +7 -0
- package/dist/rules/QW-ACT-R2.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R2.js +40 -0
- package/dist/rules/QW-ACT-R20.d.ts +7 -0
- package/dist/rules/QW-ACT-R20.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R20.js +39 -0
- package/dist/rules/QW-ACT-R21.d.ts +8 -0
- package/dist/rules/QW-ACT-R21.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R21.js +50 -0
- package/dist/rules/QW-ACT-R22.d.ts +9 -0
- package/dist/rules/QW-ACT-R22.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R22.js +69 -0
- package/dist/rules/QW-ACT-R23.d.ts +6 -0
- package/dist/rules/QW-ACT-R23.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R23.js +26 -0
- package/dist/rules/QW-ACT-R24.d.ts +12 -0
- package/dist/rules/QW-ACT-R24.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R24.js +298 -0
- package/dist/rules/QW-ACT-R25.d.ts +7 -0
- package/dist/rules/QW-ACT-R25.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R25.js +67 -0
- package/dist/rules/QW-ACT-R26.d.ts +6 -0
- package/dist/rules/QW-ACT-R26.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R26.js +26 -0
- package/dist/rules/QW-ACT-R27.d.ts +7 -0
- package/dist/rules/QW-ACT-R27.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R27.js +55 -0
- package/dist/rules/QW-ACT-R28.d.ts +7 -0
- package/dist/rules/QW-ACT-R28.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R28.js +83 -0
- package/dist/rules/QW-ACT-R29.d.ts +6 -0
- package/dist/rules/QW-ACT-R29.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R29.js +26 -0
- package/dist/rules/QW-ACT-R30.d.ts +9 -0
- package/dist/rules/QW-ACT-R30.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R30.js +69 -0
- package/dist/rules/QW-ACT-R31.d.ts +6 -0
- package/dist/rules/QW-ACT-R31.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R31.js +26 -0
- package/dist/rules/QW-ACT-R32.d.ts +6 -0
- package/dist/rules/QW-ACT-R32.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R32.js +26 -0
- package/dist/rules/QW-ACT-R33.d.ts +8 -0
- package/dist/rules/QW-ACT-R33.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R33.js +89 -0
- package/dist/rules/QW-ACT-R34.d.ts +7 -0
- package/dist/rules/QW-ACT-R34.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R34.js +112 -0
- package/dist/rules/QW-ACT-R35.d.ts +7 -0
- package/dist/rules/QW-ACT-R35.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R35.js +40 -0
- package/dist/rules/QW-ACT-R36.d.ts +7 -0
- package/dist/rules/QW-ACT-R36.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R36.js +108 -0
- package/dist/rules/QW-ACT-R37.d.ts +23 -0
- package/dist/rules/QW-ACT-R37.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R37.js +358 -0
- package/dist/rules/QW-ACT-R38.d.ts +9 -0
- package/dist/rules/QW-ACT-R38.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R38.js +100 -0
- package/dist/rules/QW-ACT-R39.d.ts +8 -0
- package/dist/rules/QW-ACT-R39.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R39.js +155 -0
- package/dist/rules/QW-ACT-R4.d.ts +8 -0
- package/dist/rules/QW-ACT-R4.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R4.js +85 -0
- package/dist/rules/QW-ACT-R40.d.ts +7 -0
- package/dist/rules/QW-ACT-R40.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R40.js +58 -0
- package/dist/rules/QW-ACT-R41.d.ts +7 -0
- package/dist/rules/QW-ACT-R41.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R41.js +42 -0
- package/dist/rules/QW-ACT-R42.d.ts +7 -0
- package/dist/rules/QW-ACT-R42.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R42.js +40 -0
- package/dist/rules/QW-ACT-R43.d.ts +8 -0
- package/dist/rules/QW-ACT-R43.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R43.js +98 -0
- package/dist/rules/QW-ACT-R44.d.ts +8 -0
- package/dist/rules/QW-ACT-R44.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R44.js +92 -0
- package/dist/rules/QW-ACT-R48.d.ts +7 -0
- package/dist/rules/QW-ACT-R48.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R48.js +38 -0
- package/dist/rules/QW-ACT-R49.d.ts +8 -0
- package/dist/rules/QW-ACT-R49.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R49.js +81 -0
- package/dist/rules/QW-ACT-R5.d.ts +8 -0
- package/dist/rules/QW-ACT-R5.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R5.js +44 -0
- package/dist/rules/QW-ACT-R50.d.ts +8 -0
- package/dist/rules/QW-ACT-R50.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R50.js +72 -0
- package/dist/rules/QW-ACT-R51.d.ts +7 -0
- package/dist/rules/QW-ACT-R51.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R51.js +41 -0
- package/dist/rules/QW-ACT-R53.d.ts +7 -0
- package/dist/rules/QW-ACT-R53.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R53.js +41 -0
- package/dist/rules/QW-ACT-R54.d.ts +7 -0
- package/dist/rules/QW-ACT-R54.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R54.js +41 -0
- package/dist/rules/QW-ACT-R55.d.ts +7 -0
- package/dist/rules/QW-ACT-R55.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R55.js +41 -0
- package/dist/rules/QW-ACT-R56.d.ts +7 -0
- package/dist/rules/QW-ACT-R56.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R56.js +41 -0
- package/dist/rules/QW-ACT-R58.d.ts +7 -0
- package/dist/rules/QW-ACT-R58.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R58.js +33 -0
- package/dist/rules/QW-ACT-R59.d.ts +7 -0
- package/dist/rules/QW-ACT-R59.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R59.js +33 -0
- package/dist/rules/QW-ACT-R6.d.ts +7 -0
- package/dist/rules/QW-ACT-R6.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R6.js +40 -0
- package/dist/rules/QW-ACT-R60.d.ts +7 -0
- package/dist/rules/QW-ACT-R60.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R60.js +41 -0
- package/dist/rules/QW-ACT-R61.d.ts +7 -0
- package/dist/rules/QW-ACT-R61.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R61.js +41 -0
- package/dist/rules/QW-ACT-R62.d.ts +7 -0
- package/dist/rules/QW-ACT-R62.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R62.js +37 -0
- package/dist/rules/QW-ACT-R63.d.ts +8 -0
- package/dist/rules/QW-ACT-R63.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R63.js +60 -0
- package/dist/rules/QW-ACT-R64.d.ts +8 -0
- package/dist/rules/QW-ACT-R64.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R64.js +60 -0
- package/dist/rules/QW-ACT-R65.d.ts +7 -0
- package/dist/rules/QW-ACT-R65.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R65.js +58 -0
- package/dist/rules/QW-ACT-R66.d.ts +7 -0
- package/dist/rules/QW-ACT-R66.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R66.js +40 -0
- package/dist/rules/QW-ACT-R67.d.ts +12 -0
- package/dist/rules/QW-ACT-R67.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R67.js +94 -0
- package/dist/rules/QW-ACT-R68.d.ts +14 -0
- package/dist/rules/QW-ACT-R68.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R68.js +117 -0
- package/dist/rules/QW-ACT-R69.d.ts +12 -0
- package/dist/rules/QW-ACT-R69.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R69.js +94 -0
- package/dist/rules/QW-ACT-R7.d.ts +14 -0
- package/dist/rules/QW-ACT-R7.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R7.js +167 -0
- package/dist/rules/QW-ACT-R70.d.ts +7 -0
- package/dist/rules/QW-ACT-R70.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R70.js +52 -0
- package/dist/rules/QW-ACT-R71.d.ts +8 -0
- package/dist/rules/QW-ACT-R71.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R71.js +81 -0
- package/dist/rules/QW-ACT-R73.d.ts +8 -0
- package/dist/rules/QW-ACT-R73.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R73.js +60 -0
- package/dist/rules/QW-ACT-R74.d.ts +8 -0
- package/dist/rules/QW-ACT-R74.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R74.js +80 -0
- package/dist/rules/QW-ACT-R75.d.ts +6 -0
- package/dist/rules/QW-ACT-R75.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R75.js +27 -0
- package/dist/rules/QW-ACT-R76.d.ts +23 -0
- package/dist/rules/QW-ACT-R76.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R76.js +336 -0
- package/dist/rules/QW-ACT-R77.d.ts +7 -0
- package/dist/rules/QW-ACT-R77.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R77.js +53 -0
- package/dist/rules/QW-ACT-R9.d.ts +7 -0
- package/dist/rules/QW-ACT-R9.d.ts.map +1 -0
- package/dist/rules/QW-ACT-R9.js +87 -0
- package/dist/rules/index.d.ts +69 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +84 -0
- package/package.json +38 -32
- package/LICENSE +0 -15
- package/dist/act.bundle.js +0 -1
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.QW_ACT_R69 = void 0;
|
|
13
|
+
const applicability_1 = require("@qualweb/util/applicability");
|
|
14
|
+
const evaluation_1 = require("@qualweb/core/evaluation");
|
|
15
|
+
const AtomicRule_object_1 = require("../lib/AtomicRule.object");
|
|
16
|
+
class QW_ACT_R69 extends AtomicRule_object_1.AtomicRule {
|
|
17
|
+
execute(element) {
|
|
18
|
+
const test = new evaluation_1.Test();
|
|
19
|
+
if (element.hasCSSProperty('word-spacing') || this.findParentWithCSSProperty(element) !== null) {
|
|
20
|
+
const styleAttribute = element.getElementAttribute('style');
|
|
21
|
+
const declaredWordSpacing = this.parseStyle(styleAttribute);
|
|
22
|
+
const computedRawWordSpacing = element.getCSSProperty('word-spacing');
|
|
23
|
+
const computedWordSpacing = element.getElementStyleProperty('word-spacing', null);
|
|
24
|
+
const fontSize = element.getElementStyleProperty('font-size', null);
|
|
25
|
+
if (element.hasCSSProperty('word-spacing') && !this.isImportant(computedRawWordSpacing, element)) {
|
|
26
|
+
test.verdict = evaluation_1.Verdict.PASSED;
|
|
27
|
+
test.resultCode = 'P1';
|
|
28
|
+
}
|
|
29
|
+
else if (this.isWide(computedWordSpacing, fontSize)) {
|
|
30
|
+
test.verdict = evaluation_1.Verdict.PASSED;
|
|
31
|
+
test.resultCode = 'P2';
|
|
32
|
+
}
|
|
33
|
+
else if (!this.isCascade(declaredWordSpacing, computedRawWordSpacing)) {
|
|
34
|
+
test.verdict = evaluation_1.Verdict.PASSED;
|
|
35
|
+
test.resultCode = 'P3';
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
test.verdict = evaluation_1.Verdict.FAILED;
|
|
39
|
+
test.resultCode = 'F1';
|
|
40
|
+
}
|
|
41
|
+
test.addElement(element, true, false, true);
|
|
42
|
+
this.addTestResult(test);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
parseStyle(style) {
|
|
46
|
+
if (style === null) {
|
|
47
|
+
style = '';
|
|
48
|
+
}
|
|
49
|
+
const startLS = style.indexOf('word-spacing:');
|
|
50
|
+
let endLS = style.indexOf(';', startLS);
|
|
51
|
+
if (endLS === -1) {
|
|
52
|
+
endLS = style.length;
|
|
53
|
+
}
|
|
54
|
+
return style === null || style === void 0 ? void 0 : style.substring(startLS + 13, endLS);
|
|
55
|
+
}
|
|
56
|
+
isImportant(cssValue, element) {
|
|
57
|
+
if (cssValue.value === 'inherit' || cssValue.value === 'unset') {
|
|
58
|
+
const parent = this.findParentWithCSSProperty(element.getElementParent());
|
|
59
|
+
if (parent === null)
|
|
60
|
+
return false;
|
|
61
|
+
return this.isImportant(parent === null || parent === void 0 ? void 0 : parent.getCSSProperty('word-spacing'), parent);
|
|
62
|
+
}
|
|
63
|
+
return cssValue.important;
|
|
64
|
+
}
|
|
65
|
+
isWide(wordSpacing, fontSize) {
|
|
66
|
+
const spacing = parseFloat(wordSpacing.slice(0, -2));
|
|
67
|
+
const font = parseFloat(fontSize.slice(0, -2));
|
|
68
|
+
return spacing >= font * 0.16;
|
|
69
|
+
}
|
|
70
|
+
isCascade(declaredStyle, computedStyle) {
|
|
71
|
+
if (computedStyle && computedStyle.value) {
|
|
72
|
+
return declaredStyle.includes(computedStyle.value);
|
|
73
|
+
}
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
findParentWithCSSProperty(element) {
|
|
77
|
+
while (element !== null) {
|
|
78
|
+
if (element === null || element === void 0 ? void 0 : element.getCSSProperty('word-spacing')) {
|
|
79
|
+
return element;
|
|
80
|
+
}
|
|
81
|
+
element = element.getElementParent();
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
exports.QW_ACT_R69 = QW_ACT_R69;
|
|
87
|
+
__decorate([
|
|
88
|
+
applicability_1.ElementExists,
|
|
89
|
+
applicability_1.ElementIsVisible,
|
|
90
|
+
applicability_1.ElementHasTextNode,
|
|
91
|
+
__metadata("design:type", Function),
|
|
92
|
+
__metadata("design:paramtypes", [Function]),
|
|
93
|
+
__metadata("design:returntype", void 0)
|
|
94
|
+
], QW_ACT_R69.prototype, "execute", null);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { QWElement } from '@qualweb/qw-element';
|
|
2
|
+
import { AtomicRule } from '../lib/AtomicRule.object';
|
|
3
|
+
declare class QW_ACT_R7 extends AtomicRule {
|
|
4
|
+
execute(element: QWElement): void;
|
|
5
|
+
private checkRotation;
|
|
6
|
+
private parseDegrees;
|
|
7
|
+
private calculateRotationDegree;
|
|
8
|
+
private identity;
|
|
9
|
+
private rotateZ;
|
|
10
|
+
private fromString;
|
|
11
|
+
private format;
|
|
12
|
+
}
|
|
13
|
+
export { QW_ACT_R7 };
|
|
14
|
+
//# sourceMappingURL=QW-ACT-R7.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QW-ACT-R7.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R7.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA+C,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGlG,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,cAAM,SAAU,SAAQ,UAAU;IAKhC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IAmDjC,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,OAAO;IAWf,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,MAAM;CAuBf;AAED,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.QW_ACT_R7 = void 0;
|
|
13
|
+
const applicability_1 = require("@qualweb/util/applicability");
|
|
14
|
+
const evaluation_1 = require("@qualweb/core/evaluation");
|
|
15
|
+
const AtomicRule_object_1 = require("../lib/AtomicRule.object");
|
|
16
|
+
class QW_ACT_R7 extends AtomicRule_object_1.AtomicRule {
|
|
17
|
+
execute(element) {
|
|
18
|
+
const rules = element.getCSSRules();
|
|
19
|
+
let transformValue = null;
|
|
20
|
+
for (const property in rules || {}) {
|
|
21
|
+
if (rules && rules[property]) {
|
|
22
|
+
if (property === 'transform') {
|
|
23
|
+
const value = rules[property].value;
|
|
24
|
+
if (value.startsWith('rotate') || value.startsWith('rotate3d') || value.startsWith('rotateZ')) {
|
|
25
|
+
const angle = value.replace(value.split('(')[0], '').replace('(', '').replace(')', '');
|
|
26
|
+
transformValue = this.parseDegrees(angle);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else if (property === 'rotate') {
|
|
30
|
+
const value = rules[property].value;
|
|
31
|
+
transformValue = this.parseDegrees(value);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const media = rules === null || rules === void 0 ? void 0 : rules.media;
|
|
36
|
+
if (media) {
|
|
37
|
+
for (const condition in media) {
|
|
38
|
+
if (condition.includes('orientation:') && (condition.includes('portrait') || condition.includes('landscape'))) {
|
|
39
|
+
for (const property in media[condition] || {}) {
|
|
40
|
+
if (property === 'transform') {
|
|
41
|
+
const cssProperty = media[condition][property];
|
|
42
|
+
const value = cssProperty.value;
|
|
43
|
+
if (value.startsWith('rotate') || value.startsWith('rotate3d') || value.startsWith('rotateZ')) {
|
|
44
|
+
let angle = value.replace(value.split('(')[0], '').replace('(', '').replace(')', '');
|
|
45
|
+
angle = this.parseDegrees(angle.toString()).toString();
|
|
46
|
+
const matrix = this.rotateZ(transformValue ? parseFloat(angle) - transformValue : parseFloat(angle));
|
|
47
|
+
angle = this.calculateRotationDegree(matrix).toString();
|
|
48
|
+
this.checkRotation(element, parseInt(angle));
|
|
49
|
+
}
|
|
50
|
+
else if (value.startsWith('matrix(') || value.startsWith('matrix3d(')) {
|
|
51
|
+
const matrix = this.fromString(value);
|
|
52
|
+
this.calculateRotationDegree(matrix);
|
|
53
|
+
const angle = this.calculateRotationDegree(matrix);
|
|
54
|
+
this.checkRotation(element, angle);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else if (property === 'rotate') {
|
|
58
|
+
const cssProperty = media[condition][property];
|
|
59
|
+
const value = cssProperty.value;
|
|
60
|
+
const angle = this.parseDegrees(value.toString());
|
|
61
|
+
this.checkRotation(element, angle);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
checkRotation(element, angle) {
|
|
69
|
+
const test = new evaluation_1.Test();
|
|
70
|
+
if (angle === 90 || angle === 270) {
|
|
71
|
+
test.verdict = evaluation_1.Verdict.FAILED;
|
|
72
|
+
test.resultCode = 'F1';
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
test.verdict = evaluation_1.Verdict.PASSED;
|
|
76
|
+
test.resultCode = 'P1';
|
|
77
|
+
}
|
|
78
|
+
test.addElement(element);
|
|
79
|
+
this.addTestResult(test);
|
|
80
|
+
}
|
|
81
|
+
parseDegrees(angle) {
|
|
82
|
+
angle = angle.toLowerCase();
|
|
83
|
+
if (angle.includes('deg')) {
|
|
84
|
+
return parseFloat(angle.replace('deg', ''));
|
|
85
|
+
}
|
|
86
|
+
else if (angle.includes('rad')) {
|
|
87
|
+
const radians = parseFloat(angle.replace('rad', ''));
|
|
88
|
+
return (radians * 180) / Math.PI;
|
|
89
|
+
}
|
|
90
|
+
else if (angle.includes('turn')) {
|
|
91
|
+
const turnDegrees = 360;
|
|
92
|
+
const turns = parseFloat(angle.replace('turn', ''));
|
|
93
|
+
return turns * turnDegrees;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
return -1;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
calculateRotationDegree(matrix) {
|
|
100
|
+
const radians = Math.atan2(matrix[1], matrix[0]);
|
|
101
|
+
let degrees = Math.round((radians * 180) / Math.PI);
|
|
102
|
+
if (degrees < 0) {
|
|
103
|
+
degrees = 360 + degrees;
|
|
104
|
+
}
|
|
105
|
+
return Math.abs(degrees);
|
|
106
|
+
}
|
|
107
|
+
identity() {
|
|
108
|
+
const matrix = new Array();
|
|
109
|
+
for (let i = 0; i < 16; i++) {
|
|
110
|
+
i % 5 === 0 ? matrix.push(1) : matrix.push(0);
|
|
111
|
+
}
|
|
112
|
+
return matrix;
|
|
113
|
+
}
|
|
114
|
+
rotateZ(angle) {
|
|
115
|
+
const theta = (Math.PI / 180) * angle;
|
|
116
|
+
const matrix = this.identity();
|
|
117
|
+
matrix[0] = matrix[5] = Math.cos(theta);
|
|
118
|
+
matrix[1] = matrix[4] = Math.sin(theta);
|
|
119
|
+
matrix[4] *= -1;
|
|
120
|
+
return matrix;
|
|
121
|
+
}
|
|
122
|
+
fromString(source) {
|
|
123
|
+
if (typeof source === 'string') {
|
|
124
|
+
const match = source.match(/matrix(3d)?\(([^)]+)\)/);
|
|
125
|
+
if (match) {
|
|
126
|
+
const raw = match[2].split(',').map(parseFloat);
|
|
127
|
+
return this.format(raw);
|
|
128
|
+
}
|
|
129
|
+
if (source === 'none' || source === '') {
|
|
130
|
+
return this.identity();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
throw new TypeError('Expected a string containing `matrix()` or `matrix3d()');
|
|
134
|
+
}
|
|
135
|
+
format(source) {
|
|
136
|
+
const values = source
|
|
137
|
+
.filter(function (value) {
|
|
138
|
+
return typeof value === 'number';
|
|
139
|
+
})
|
|
140
|
+
.filter(function (value) {
|
|
141
|
+
return !isNaN(value);
|
|
142
|
+
});
|
|
143
|
+
if (source.length === 6 && values.length === 6) {
|
|
144
|
+
const matrix = this.identity();
|
|
145
|
+
matrix[0] = values[0];
|
|
146
|
+
matrix[1] = values[1];
|
|
147
|
+
matrix[4] = values[2];
|
|
148
|
+
matrix[5] = values[3];
|
|
149
|
+
matrix[12] = values[4];
|
|
150
|
+
matrix[13] = values[5];
|
|
151
|
+
return matrix;
|
|
152
|
+
}
|
|
153
|
+
else if (source.length === 16 && values.length === 16) {
|
|
154
|
+
return source;
|
|
155
|
+
}
|
|
156
|
+
throw new TypeError('Expected a `number[]` with length 6 or 16.');
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
exports.QW_ACT_R7 = QW_ACT_R7;
|
|
160
|
+
__decorate([
|
|
161
|
+
applicability_1.ElementExists,
|
|
162
|
+
applicability_1.ElementIsVisible,
|
|
163
|
+
applicability_1.ElementHasCSSRules,
|
|
164
|
+
__metadata("design:type", Function),
|
|
165
|
+
__metadata("design:paramtypes", [Function]),
|
|
166
|
+
__metadata("design:returntype", void 0)
|
|
167
|
+
], QW_ACT_R7.prototype, "execute", null);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QW-ACT-R70.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R70.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,cAAM,UAAW,SAAQ,UAAU;IAIjC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;CA4BlC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.QW_ACT_R70 = void 0;
|
|
13
|
+
const applicability_1 = require("@qualweb/util/applicability");
|
|
14
|
+
const evaluation_1 = require("@qualweb/core/evaluation");
|
|
15
|
+
const AtomicRule_object_1 = require("../lib/AtomicRule.object");
|
|
16
|
+
class QW_ACT_R70 extends AtomicRule_object_1.AtomicRule {
|
|
17
|
+
execute(element) {
|
|
18
|
+
const test = new evaluation_1.Test();
|
|
19
|
+
const elementList = window.qwPage.getElements('*', undefined);
|
|
20
|
+
const childrenInSequentialFocusList = elementList.filter((elem) => {
|
|
21
|
+
return (window.AccessibilityUtils.isPartOfSequentialFocusNavigation(elem) && window.DomUtils.isElementVisible(elem));
|
|
22
|
+
});
|
|
23
|
+
if (childrenInSequentialFocusList.length === 0) {
|
|
24
|
+
test.verdict = evaluation_1.Verdict.INAPPLICABLE;
|
|
25
|
+
test.resultCode = 'I1';
|
|
26
|
+
test.addElement(element);
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
const tabindex = arguments[0].getElementAttribute('tabindex');
|
|
30
|
+
if (tabindex && parseInt(tabindex) <= -1) {
|
|
31
|
+
test.verdict = evaluation_1.Verdict.FAILED;
|
|
32
|
+
test.resultCode = 'F1';
|
|
33
|
+
test.addElement(element, false);
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
test.verdict = evaluation_1.Verdict.PASSED;
|
|
37
|
+
test.resultCode = 'P1';
|
|
38
|
+
test.addElement(element);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
this.addTestResult(test);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
exports.QW_ACT_R70 = QW_ACT_R70;
|
|
45
|
+
__decorate([
|
|
46
|
+
applicability_1.ElementExists,
|
|
47
|
+
applicability_1.ElementIsNotInert,
|
|
48
|
+
applicability_1.ElementIsVisible,
|
|
49
|
+
__metadata("design:type", Function),
|
|
50
|
+
__metadata("design:paramtypes", [Function]),
|
|
51
|
+
__metadata("design:returntype", void 0)
|
|
52
|
+
], QW_ACT_R70.prototype, "execute", null);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { QWElement } from '@qualweb/qw-element';
|
|
2
|
+
import { AtomicRule } from '../lib/AtomicRule.object';
|
|
3
|
+
declare class QW_ACT_R71 extends AtomicRule {
|
|
4
|
+
execute(element: QWElement): void;
|
|
5
|
+
private checkIfIsNumber;
|
|
6
|
+
}
|
|
7
|
+
export { QW_ACT_R71 };
|
|
8
|
+
//# sourceMappingURL=QW-ACT-R71.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QW-ACT-R71.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R71.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,cAAM,UAAW,SAAQ,UAAU;IAMjC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IAuDjC,OAAO,CAAC,eAAe;CAWxB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.QW_ACT_R71 = void 0;
|
|
13
|
+
const applicability_1 = require("@qualweb/util/applicability");
|
|
14
|
+
const evaluation_1 = require("@qualweb/core/evaluation");
|
|
15
|
+
const AtomicRule_object_1 = require("../lib/AtomicRule.object");
|
|
16
|
+
class QW_ACT_R71 extends AtomicRule_object_1.AtomicRule {
|
|
17
|
+
execute(element) {
|
|
18
|
+
const content = element.getElementAttribute('content');
|
|
19
|
+
if (this.rule.metadata.passed + this.rule.metadata.failed > 0) {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
let n = -1;
|
|
23
|
+
const indexOf = content.indexOf(';');
|
|
24
|
+
if (indexOf === -1) {
|
|
25
|
+
if (this.checkIfIsNumber(content) && Number.isInteger(parseInt(content, 0))) {
|
|
26
|
+
n = Number(content);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
const split = content.split(';');
|
|
31
|
+
if (split.length === 2 &&
|
|
32
|
+
split[0].trim() !== '' &&
|
|
33
|
+
split[1].trim() !== '' &&
|
|
34
|
+
this.checkIfIsNumber(split[0]) &&
|
|
35
|
+
Number.isInteger(parseInt(split[0], 0))) {
|
|
36
|
+
n = Number(split[0]);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (n >= 0) {
|
|
40
|
+
const test = new evaluation_1.Test();
|
|
41
|
+
if (n === 0) {
|
|
42
|
+
test.verdict = evaluation_1.Verdict.PASSED;
|
|
43
|
+
test.resultCode = 'P1';
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
test.verdict = evaluation_1.Verdict.FAILED;
|
|
47
|
+
if (indexOf === -1) {
|
|
48
|
+
test.description = this.translate('F1', { seconds: n });
|
|
49
|
+
test.resultCode = 'F1';
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
test.description = this.translate('F2', { seconds: n });
|
|
53
|
+
test.resultCode = 'F2';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
test.addElement(element);
|
|
57
|
+
this.addTestResult(test);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
checkIfIsNumber(num) {
|
|
61
|
+
let success = true;
|
|
62
|
+
for (const n of num || []) {
|
|
63
|
+
if (isNaN(parseInt(n, 0))) {
|
|
64
|
+
success = false;
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return success;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
exports.QW_ACT_R71 = QW_ACT_R71;
|
|
72
|
+
__decorate([
|
|
73
|
+
applicability_1.ElementExists,
|
|
74
|
+
(0, applicability_1.ElementHasAttribute)('content'),
|
|
75
|
+
(0, applicability_1.ElementHasNonEmptyAttribute)('content'),
|
|
76
|
+
(0, applicability_1.ElementHasAttribute)('http-equiv'),
|
|
77
|
+
(0, applicability_1.ElementHasNonEmptyAttribute)('http-equiv'),
|
|
78
|
+
__metadata("design:type", Function),
|
|
79
|
+
__metadata("design:paramtypes", [Function]),
|
|
80
|
+
__metadata("design:returntype", void 0)
|
|
81
|
+
], QW_ACT_R71.prototype, "execute", null);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { QWElement } from '@qualweb/qw-element';
|
|
2
|
+
import { AtomicRule } from '../lib/AtomicRule.object';
|
|
3
|
+
declare class QW_ACT_R73 extends AtomicRule {
|
|
4
|
+
execute(element: QWElement): void;
|
|
5
|
+
private checkDestination;
|
|
6
|
+
}
|
|
7
|
+
export { QW_ACT_R73 };
|
|
8
|
+
//# sourceMappingURL=QW-ACT-R73.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QW-ACT-R73.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R73.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,cAAM,UAAW,SAAQ,UAAU;IAGjC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IAiCjC,OAAO,CAAC,gBAAgB;CASzB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.QW_ACT_R73 = void 0;
|
|
13
|
+
const applicability_1 = require("@qualweb/util/applicability");
|
|
14
|
+
const evaluation_1 = require("@qualweb/core/evaluation");
|
|
15
|
+
const AtomicRule_object_1 = require("../lib/AtomicRule.object");
|
|
16
|
+
class QW_ACT_R73 extends AtomicRule_object_1.AtomicRule {
|
|
17
|
+
execute(element) {
|
|
18
|
+
var _a;
|
|
19
|
+
const test = new evaluation_1.Test();
|
|
20
|
+
let hasLinks = false;
|
|
21
|
+
const links = element.getElements('a');
|
|
22
|
+
if (links) {
|
|
23
|
+
const host = location.hostname;
|
|
24
|
+
for (const link of links) {
|
|
25
|
+
if (link.elementHasAttribute('href')) {
|
|
26
|
+
const href = (_a = link.getElementAttribute('href')) === null || _a === void 0 ? void 0 : _a.trim();
|
|
27
|
+
if (href &&
|
|
28
|
+
!this.checkDestination(href) &&
|
|
29
|
+
(href.startsWith('/') || href.startsWith('.') || href.startsWith(host))) {
|
|
30
|
+
test.verdict = evaluation_1.Verdict.WARNING;
|
|
31
|
+
test.resultCode = 'W1';
|
|
32
|
+
hasLinks = true;
|
|
33
|
+
break;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (!hasLinks) {
|
|
39
|
+
test.verdict = evaluation_1.Verdict.PASSED;
|
|
40
|
+
test.resultCode = 'P1';
|
|
41
|
+
}
|
|
42
|
+
test.addElement(element, false);
|
|
43
|
+
this.addTestResult(test);
|
|
44
|
+
}
|
|
45
|
+
checkDestination(destination) {
|
|
46
|
+
const url = window.qwPage.getURL();
|
|
47
|
+
return (destination.startsWith('#') ||
|
|
48
|
+
destination.startsWith('/#') ||
|
|
49
|
+
destination.startsWith(url + '#') ||
|
|
50
|
+
destination.startsWith(url + '/#'));
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.QW_ACT_R73 = QW_ACT_R73;
|
|
54
|
+
__decorate([
|
|
55
|
+
applicability_1.ElementExists,
|
|
56
|
+
applicability_1.IsHTMLDocument,
|
|
57
|
+
__metadata("design:type", Function),
|
|
58
|
+
__metadata("design:paramtypes", [Function]),
|
|
59
|
+
__metadata("design:returntype", void 0)
|
|
60
|
+
], QW_ACT_R73.prototype, "execute", null);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { QWElement } from '@qualweb/qw-element';
|
|
2
|
+
import { AtomicRule } from '../lib/AtomicRule.object';
|
|
3
|
+
declare class QW_ACT_R74 extends AtomicRule {
|
|
4
|
+
execute(element: QWElement): void;
|
|
5
|
+
private checkDestination;
|
|
6
|
+
}
|
|
7
|
+
export { QW_ACT_R74 };
|
|
8
|
+
//# sourceMappingURL=QW-ACT-R74.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QW-ACT-R74.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R74.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAGrD,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,cAAM,UAAW,SAAQ,UAAU;IAIjC,OAAO,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI;IA2DjC,OAAO,CAAC,gBAAgB;CASzB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.QW_ACT_R74 = void 0;
|
|
13
|
+
const applicability_1 = require("@qualweb/util/applicability");
|
|
14
|
+
const evaluation_1 = require("@qualweb/core/evaluation");
|
|
15
|
+
const AtomicRule_object_1 = require("../lib/AtomicRule.object");
|
|
16
|
+
class QW_ACT_R74 extends AtomicRule_object_1.AtomicRule {
|
|
17
|
+
execute(element) {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
const test = new evaluation_1.Test();
|
|
20
|
+
let hasLinks = false;
|
|
21
|
+
const links = window.qwPage.getElements('a');
|
|
22
|
+
if (links) {
|
|
23
|
+
const host = location.hostname;
|
|
24
|
+
const linksWithAnchors = new Array();
|
|
25
|
+
for (const link of links) {
|
|
26
|
+
if (link.elementHasAttribute('href')) {
|
|
27
|
+
const href = (_a = link.getElementAttribute('href')) === null || _a === void 0 ? void 0 : _a.trim();
|
|
28
|
+
if (href && this.checkDestination(href)) {
|
|
29
|
+
linksWithAnchors.push(link);
|
|
30
|
+
}
|
|
31
|
+
else if (href && (href.startsWith('/') || href.startsWith('.') || href.startsWith(host))) {
|
|
32
|
+
hasLinks = true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (hasLinks) {
|
|
37
|
+
let nSkipLinks = 0;
|
|
38
|
+
for (const anchor of linksWithAnchors) {
|
|
39
|
+
const href = (_b = anchor.getElementAttribute('href')) === null || _b === void 0 ? void 0 : _b.trim();
|
|
40
|
+
if (href) {
|
|
41
|
+
const id = href.split('#')[1];
|
|
42
|
+
if (window.qwPage.getElementByID(id)) {
|
|
43
|
+
nSkipLinks++;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (nSkipLinks > 0) {
|
|
48
|
+
test.verdict = evaluation_1.Verdict.WARNING;
|
|
49
|
+
test.resultCode = 'W1';
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
test.verdict = evaluation_1.Verdict.WARNING;
|
|
53
|
+
test.resultCode = 'W2';
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (!hasLinks) {
|
|
58
|
+
test.verdict = evaluation_1.Verdict.PASSED;
|
|
59
|
+
test.resultCode = 'P1';
|
|
60
|
+
}
|
|
61
|
+
test.addElement(element, false);
|
|
62
|
+
this.addTestResult(test);
|
|
63
|
+
}
|
|
64
|
+
checkDestination(destination) {
|
|
65
|
+
const url = window.qwPage.getURL();
|
|
66
|
+
return (destination.startsWith('#') ||
|
|
67
|
+
destination.startsWith('/#') ||
|
|
68
|
+
destination.startsWith(url + '#') ||
|
|
69
|
+
destination.startsWith(url + '/#'));
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
exports.QW_ACT_R74 = QW_ACT_R74;
|
|
73
|
+
__decorate([
|
|
74
|
+
applicability_1.ElementExists,
|
|
75
|
+
applicability_1.IsHTMLDocument,
|
|
76
|
+
applicability_1.IsInMainContext,
|
|
77
|
+
__metadata("design:type", Function),
|
|
78
|
+
__metadata("design:paramtypes", [Function]),
|
|
79
|
+
__metadata("design:returntype", void 0)
|
|
80
|
+
], QW_ACT_R74.prototype, "execute", null);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QW-ACT-R75.d.ts","sourceRoot":"","sources":["../../src/rules/QW-ACT-R75.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAE5D,cAAM,UAAW,SAAQ,aAAa;IAGpC,OAAO,IAAI,IAAI;CAGhB;AAED,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.QW_ACT_R75 = void 0;
|
|
13
|
+
const applicability_1 = require("@qualweb/util/applicability");
|
|
14
|
+
const CompositeRule_object_1 = require("../lib/CompositeRule.object");
|
|
15
|
+
class QW_ACT_R75 extends CompositeRule_object_1.CompositeRule {
|
|
16
|
+
execute() {
|
|
17
|
+
throw new Error('Method not implemented.');
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.QW_ACT_R75 = QW_ACT_R75;
|
|
21
|
+
__decorate([
|
|
22
|
+
applicability_1.ElementExists,
|
|
23
|
+
applicability_1.IsHTMLDocument,
|
|
24
|
+
__metadata("design:type", Function),
|
|
25
|
+
__metadata("design:paramtypes", []),
|
|
26
|
+
__metadata("design:returntype", void 0)
|
|
27
|
+
], QW_ACT_R75.prototype, "execute", null);
|