govuk_publishing_components 1.1.0 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/govuk_publishing_components/accessibility-test.js +73 -7
- data/app/assets/stylesheets/govuk_publishing_components/application.scss +37 -2
- data/app/views/govuk_publishing_components/component_guide/component_doc/_component.html.erb +5 -0
- data/app/views/govuk_publishing_components/component_guide/component_doc/_preview.html.erb +3 -2
- data/app/views/govuk_publishing_components/component_guide/preview.html.erb +3 -1
- data/lib/govuk_publishing_components/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d096d826f4036a0b4d935adcb65e7046e30c036
|
4
|
+
data.tar.gz: 73166cb75dbfdda9d960f790c6f4f0833ffdc800
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0f40af4038b72fb80da00abb67fc9fb944495df6006a5b4609e650819717a291f30c8cb17908d17298fbdc0740c891e1d36a9fc9f13438520553040472e412ca
|
7
|
+
data.tar.gz: 35d8bb1bc8d0812eb6bfe580c0edf05c015bf40eb980d64d015d0f99fbe5a161bb073922b72261f5c202f7236dc51bca8711419d4fdda2bc5e262dc8e0659843
|
@@ -21,14 +21,24 @@
|
|
21
21
|
}
|
22
22
|
|
23
23
|
var violations = (typeof results === 'undefined') ? [] : results.violations
|
24
|
+
var incompleteWarnings = (typeof results === 'undefined') ? [] : results.incomplete
|
24
25
|
|
25
|
-
if (violations.length === 0) {
|
26
|
+
if (violations.length === 0 && incompleteWarnings.length === 0) {
|
26
27
|
return callback('No accessibility issues found')
|
27
28
|
}
|
28
29
|
|
29
|
-
var
|
30
|
+
var incompleteWarningsObj = _processIncompleteWarnings(incompleteWarnings)
|
31
|
+
var errorText = _processViolations(violations, results.url)
|
32
|
+
|
33
|
+
callback(undefined, errorText, incompleteWarningsObj)
|
34
|
+
})
|
35
|
+
}
|
36
|
+
|
37
|
+
var _processViolations = function(violations, url) {
|
38
|
+
if (violations.length !== 0) {
|
39
|
+
return (
|
30
40
|
'\n' + 'Accessibility issues at ' +
|
31
|
-
|
41
|
+
url + '\n\n' +
|
32
42
|
violations.map(function (violation) {
|
33
43
|
var help = 'Problem: ' + violation.help
|
34
44
|
var helpUrl = 'Try fixing it with this help: ' + _formatHelpUrl(violation.helpUrl)
|
@@ -41,8 +51,33 @@
|
|
41
51
|
].join('\n\n\n')
|
42
52
|
}).join('\n\n- - -\n\n')
|
43
53
|
)
|
44
|
-
|
45
|
-
|
54
|
+
}
|
55
|
+
else {
|
56
|
+
console.info("aXe: No accessibility errors found")
|
57
|
+
}
|
58
|
+
}
|
59
|
+
|
60
|
+
var _processIncompleteWarnings = function(incompleteWarnings) {
|
61
|
+
return (
|
62
|
+
incompleteWarnings.map(function (incomplete) {
|
63
|
+
var help = incomplete.help
|
64
|
+
var helpUrl = _formatHelpUrl(incomplete.helpUrl)
|
65
|
+
var cssSelector = incomplete.nodes.map(function (node) {
|
66
|
+
return {
|
67
|
+
'selector': node.target,
|
68
|
+
'reason': node.any.map(function(item) {
|
69
|
+
return item.message
|
70
|
+
})
|
71
|
+
}
|
72
|
+
})
|
73
|
+
|
74
|
+
return {
|
75
|
+
'summary': help,
|
76
|
+
'selectors': cssSelector,
|
77
|
+
'url': helpUrl
|
78
|
+
}
|
79
|
+
})
|
80
|
+
)
|
46
81
|
}
|
47
82
|
|
48
83
|
var _formatHelpUrl = function (helpUrl) {
|
@@ -62,6 +97,36 @@
|
|
62
97
|
)
|
63
98
|
}
|
64
99
|
|
100
|
+
var _findParent = function (element, selector) {
|
101
|
+
while (element.tagName !== 'HTML') {
|
102
|
+
if (element.matches(selector)) {
|
103
|
+
return element
|
104
|
+
}
|
105
|
+
element = element.parentNode
|
106
|
+
}
|
107
|
+
}
|
108
|
+
|
109
|
+
var _renderIncompleteWarnings = function (incompleteWarnings) {
|
110
|
+
incompleteWarnings.forEach(function (warning) {
|
111
|
+
warning.selectors.forEach(function (selectorObj) {
|
112
|
+
var activeEl = document.querySelector(selectorObj.selector)
|
113
|
+
var activeElParent = _findParent(activeEl, '[data-module="test-a11y"]')
|
114
|
+
var warningWrapper = activeElParent.querySelector('[data-module="test-a11y-warning"]')
|
115
|
+
|
116
|
+
if (warningWrapper) {
|
117
|
+
// Add warning to warnings box
|
118
|
+
var warningsHTML = '<h3>' + warning.summary + ' <a href="' + warning.url + '">(see guidance)</a></h3>' +
|
119
|
+
'<p>Reason: ' + selectorObj.reason + '</p>' +
|
120
|
+
'<p>Element can be found using the following CSS selector: <span class="selector">' +
|
121
|
+
selectorObj.selector +
|
122
|
+
'</span></p>'
|
123
|
+
|
124
|
+
warningWrapper.insertAdjacentHTML('beforeend', warningsHTML)
|
125
|
+
}
|
126
|
+
})
|
127
|
+
})
|
128
|
+
}
|
129
|
+
|
65
130
|
var _throwUncaughtError = function (error) {
|
66
131
|
// aXe swallows throw errors so we pass it through a setTimeout
|
67
132
|
// so that it's not in aXe's context
|
@@ -76,11 +141,12 @@
|
|
76
141
|
// http://responsivenews.co.uk/post/18948466399/cutting-the-mustard
|
77
142
|
if (document.addEventListener) {
|
78
143
|
document.addEventListener('DOMContentLoaded', function () {
|
79
|
-
AccessibilityTest('[data-module="test-a11y"]', function (err,
|
144
|
+
AccessibilityTest('[data-module="test-a11y"]', function (err, violations, incompleteWarnings) {
|
80
145
|
if (err) {
|
81
146
|
return
|
82
147
|
}
|
83
|
-
|
148
|
+
if (incompleteWarnings) _renderIncompleteWarnings(incompleteWarnings)
|
149
|
+
if (violations) _throwUncaughtError(violations)
|
84
150
|
})
|
85
151
|
})
|
86
152
|
}
|
@@ -116,13 +116,14 @@ $border-color: #ccc;
|
|
116
116
|
|
117
117
|
&:before {
|
118
118
|
@include core-14;
|
119
|
-
content:
|
119
|
+
content: attr(data-content);
|
120
120
|
position: absolute;
|
121
121
|
top: 0;
|
122
122
|
left: 0;
|
123
123
|
padding: 0.21053em 0.78947em;
|
124
124
|
background: $border-colour;
|
125
|
-
color: $
|
125
|
+
color: $black;
|
126
|
+
font-weight: bold;
|
126
127
|
}
|
127
128
|
|
128
129
|
div[class^="govuk-"] {
|
@@ -133,6 +134,40 @@ $border-color: #ccc;
|
|
133
134
|
}
|
134
135
|
}
|
135
136
|
|
137
|
+
.component-guide-preview--simple {
|
138
|
+
border: 0;
|
139
|
+
padding: 0;
|
140
|
+
|
141
|
+
&:before {
|
142
|
+
display: none;
|
143
|
+
}
|
144
|
+
}
|
145
|
+
|
146
|
+
.component-guide-preview--warning {
|
147
|
+
margin-top: $gutter-half;
|
148
|
+
border-color: $yellow;
|
149
|
+
|
150
|
+
&:empty {
|
151
|
+
display: none;
|
152
|
+
}
|
153
|
+
|
154
|
+
&:before {
|
155
|
+
background-color: $yellow;
|
156
|
+
}
|
157
|
+
|
158
|
+
h3 {
|
159
|
+
@include bold-16;
|
160
|
+
}
|
161
|
+
|
162
|
+
h3:not(:first-child) {
|
163
|
+
margin-top: $gutter;
|
164
|
+
}
|
165
|
+
|
166
|
+
.selector {
|
167
|
+
font-style: italic;
|
168
|
+
}
|
169
|
+
}
|
170
|
+
|
136
171
|
.examples {
|
137
172
|
.component-example {
|
138
173
|
margin: 0 0 $gutter * 1.5;
|
@@ -1,3 +1,4 @@
|
|
1
|
-
<div data-module="test-a11y"
|
2
|
-
<%= render component_doc
|
1
|
+
<div data-module="test-a11y">
|
2
|
+
<%= render "govuk_publishing_components/component_guide/component_doc/component", component_doc: @component_doc, example: example, preview_page: false %>
|
3
|
+
<div class="component-guide-preview component-guide-preview--warning" data-module="test-a11y-warning" data-content="Potential Accessibility Issues: Need Manual Check"></div>
|
3
4
|
</div>
|
@@ -3,6 +3,8 @@
|
|
3
3
|
<% if @component_examples.length > 1 %>
|
4
4
|
<h2 class="preview-title"><a href="<%= component_example_path(@component_doc.id, example.id) %>"><%= example.name %></a></h2>
|
5
5
|
<% end %>
|
6
|
-
|
6
|
+
<div data-module="test-a11y">
|
7
|
+
<%= render "govuk_publishing_components/component_guide/component_doc/component", component_doc: @component_doc, example: example, preview_page: true %>
|
8
|
+
</div>
|
7
9
|
</div>
|
8
10
|
<% end %>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_publishing_components
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GOV.UK Dev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-09-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -187,6 +187,7 @@ files:
|
|
187
187
|
- app/models/govuk_publishing_components/component_doc_resolver.rb
|
188
188
|
- app/models/govuk_publishing_components/component_example.rb
|
189
189
|
- app/views/govuk_publishing_components/component_guide/component_doc/_call.html.erb
|
190
|
+
- app/views/govuk_publishing_components/component_guide/component_doc/_component.html.erb
|
190
191
|
- app/views/govuk_publishing_components/component_guide/component_doc/_preview.html.erb
|
191
192
|
- app/views/govuk_publishing_components/component_guide/example.html.erb
|
192
193
|
- app/views/govuk_publishing_components/component_guide/index.html.erb
|