govuk_tech_docs 2.3.0 → 2.4.3
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.
Potentially problematic release.
This version of govuk_tech_docs might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.nvmrc +1 -1
- data/CHANGELOG.md +25 -0
- data/README.md +15 -1
- data/example/config/tech-docs.yml +1 -0
- data/example/source/single-page-nav.html.md +13 -0
- data/govuk_tech_docs.gemspec +1 -1
- data/lib/assets/javascripts/_modules/collapsible-navigation.js +7 -7
- data/lib/assets/javascripts/_modules/in-page-navigation.js +2 -4
- data/lib/assets/javascripts/_vendor/jquery.js +2 -5
- data/lib/assets/javascripts/_vendor/lodash.js +5 -3
- data/lib/assets/stylesheets/modules/_search.scss +1 -10
- data/lib/assets/stylesheets/modules/_technical-documentation.scss +1 -1
- data/lib/govuk_tech_docs/table_of_contents/heading.rb +5 -1
- data/lib/govuk_tech_docs/table_of_contents/heading_tree_renderer.rb +2 -2
- data/lib/govuk_tech_docs/table_of_contents/helpers.rb +22 -11
- data/lib/govuk_tech_docs/tech_docs_html_renderer.rb +1 -1
- data/lib/govuk_tech_docs/version.rb +1 -1
- data/lib/govuk_tech_docs.rb +1 -1
- data/lib/source/layouts/_header.erb +1 -2
- data/lib/source/layouts/layout.erb +3 -1
- data/node_modules/govuk-frontend/govuk/all.js +61 -3
- data/node_modules/govuk-frontend/govuk/components/breadcrumbs/_index.scss +1 -0
- data/node_modules/govuk-frontend/govuk/components/button/_index.scss +10 -4
- data/node_modules/govuk-frontend/govuk/components/checkboxes/_index.scss +49 -34
- data/node_modules/govuk-frontend/govuk/components/checkboxes/checkboxes.js +61 -3
- data/node_modules/govuk-frontend/govuk/components/footer/_index.scss +22 -10
- data/node_modules/govuk-frontend/govuk/components/header/_index.scss +11 -7
- data/node_modules/govuk-frontend/govuk/components/input/_index.scss +4 -0
- data/node_modules/govuk-frontend/govuk/components/skip-link/_index.scss +2 -0
- data/node_modules/govuk-frontend/govuk/components/warning-text/_index.scss +0 -1
- data/node_modules/govuk-frontend/govuk/core/_template.scss +0 -1
- data/node_modules/govuk-frontend/govuk/helpers/_links.scss +6 -0
- data/node_modules/govuk-frontend/govuk/objects/_button-group.scss +9 -2
- data/node_modules/govuk-frontend/govuk/objects/_width-container.scss +4 -0
- data/package-lock.json +3 -3
- data/package.json +1 -1
- metadata +5 -5
- data/CONTRIBUTING.md +0 -12
@@ -241,6 +241,8 @@
|
|
241
241
|
|
242
242
|
display: -webkit-inline-box;
|
243
243
|
|
244
|
+
display: -webkit-inline-flex;
|
245
|
+
|
244
246
|
display: -ms-inline-flexbox;
|
245
247
|
|
246
248
|
display: inline-flex;
|
@@ -248,6 +250,8 @@
|
|
248
250
|
|
249
251
|
-webkit-box-pack: center;
|
250
252
|
|
253
|
+
-webkit-justify-content: center;
|
254
|
+
|
251
255
|
-ms-flex-pack: center;
|
252
256
|
|
253
257
|
justify-content: center;
|
@@ -260,10 +264,12 @@
|
|
260
264
|
margin-left: govuk-spacing(2);
|
261
265
|
}
|
262
266
|
vertical-align: middle;
|
263
|
-
-
|
264
|
-
flex-
|
265
|
-
|
266
|
-
|
267
|
+
-webkit-flex-shrink: 0;
|
268
|
+
-ms-flex-negative: 0;
|
269
|
+
flex-shrink: 0;
|
270
|
+
-webkit-align-self: center;
|
271
|
+
-ms-flex-item-align: center;
|
272
|
+
align-self: center;
|
267
273
|
}
|
268
274
|
|
269
275
|
@if $govuk-use-legacy-font {
|
@@ -73,47 +73,49 @@
|
|
73
73
|
touch-action: manipulation;
|
74
74
|
}
|
75
75
|
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
76
|
+
@include govuk-not-ie8 {
|
77
|
+
// [ ] Check box
|
78
|
+
.govuk-checkboxes__label:before {
|
79
|
+
content: "";
|
80
|
+
box-sizing: border-box;
|
81
|
+
position: absolute;
|
82
|
+
top: 0;
|
83
|
+
left: 0;
|
84
|
+
width: $govuk-checkboxes-size;
|
85
|
+
height: $govuk-checkboxes-size;
|
86
|
+
border: $govuk-border-width-form-element solid currentColor;
|
87
|
+
background: transparent;
|
88
|
+
}
|
88
89
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
90
|
+
// ✔ Check mark
|
91
|
+
//
|
92
|
+
// The check mark is a box with a border on the left and bottom side (└──),
|
93
|
+
// rotated 45 degrees
|
94
|
+
.govuk-checkboxes__label:after {
|
95
|
+
content: "";
|
96
|
+
box-sizing: border-box;
|
96
97
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
98
|
+
position: absolute;
|
99
|
+
top: 11px;
|
100
|
+
left: 9px;
|
101
|
+
width: 23px;
|
102
|
+
height: 12px;
|
102
103
|
|
103
|
-
|
104
|
+
-webkit-transform: rotate(-45deg);
|
104
105
|
|
105
|
-
|
106
|
+
-ms-transform: rotate(-45deg);
|
106
107
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
108
|
+
transform: rotate(-45deg);
|
109
|
+
border: solid;
|
110
|
+
border-width: 0 0 5px 5px;
|
111
|
+
// Fix bug in IE11 caused by transform rotate (-45deg).
|
112
|
+
// See: alphagov/govuk_elements/issues/518
|
113
|
+
border-top-color: transparent;
|
113
114
|
|
114
|
-
|
115
|
+
opacity: 0;
|
115
116
|
|
116
|
-
|
117
|
+
background: transparent;
|
118
|
+
}
|
117
119
|
}
|
118
120
|
|
119
121
|
.govuk-checkboxes__hint {
|
@@ -143,6 +145,19 @@
|
|
143
145
|
opacity: .5;
|
144
146
|
}
|
145
147
|
|
148
|
+
// =========================================================
|
149
|
+
// Dividers ('or')
|
150
|
+
// =========================================================
|
151
|
+
|
152
|
+
.govuk-checkboxes__divider {
|
153
|
+
$govuk-divider-size: $govuk-checkboxes-size !default;
|
154
|
+
@include govuk-font($size: 19);
|
155
|
+
@include govuk-text-colour;
|
156
|
+
width: $govuk-divider-size;
|
157
|
+
margin-bottom: govuk-spacing(2);
|
158
|
+
text-align: center;
|
159
|
+
}
|
160
|
+
|
146
161
|
// =========================================================
|
147
162
|
// Conditional reveals
|
148
163
|
// =========================================================
|
@@ -1110,6 +1110,47 @@ Checkboxes.prototype.syncConditionalRevealWithInputState = function ($input) {
|
|
1110
1110
|
}
|
1111
1111
|
};
|
1112
1112
|
|
1113
|
+
/**
|
1114
|
+
* Uncheck other checkboxes
|
1115
|
+
*
|
1116
|
+
* Find any other checkbox inputs with the same name value, and uncheck them.
|
1117
|
+
* This is useful for when a “None of these" checkbox is checked.
|
1118
|
+
*/
|
1119
|
+
Checkboxes.prototype.unCheckAllInputsExcept = function ($input) {
|
1120
|
+
var allInputsWithSameName = document.querySelectorAll('input[type="checkbox"][name="' + $input.name + '"]');
|
1121
|
+
|
1122
|
+
nodeListForEach(allInputsWithSameName, function ($inputWithSameName) {
|
1123
|
+
var hasSameFormOwner = ($input.form === $inputWithSameName.form);
|
1124
|
+
if (hasSameFormOwner && $inputWithSameName !== $input) {
|
1125
|
+
$inputWithSameName.checked = false;
|
1126
|
+
}
|
1127
|
+
});
|
1128
|
+
|
1129
|
+
this.syncAllConditionalReveals();
|
1130
|
+
};
|
1131
|
+
|
1132
|
+
/**
|
1133
|
+
* Uncheck exclusive inputs
|
1134
|
+
*
|
1135
|
+
* Find any checkbox inputs with the same name value and the 'exclusive' behaviour,
|
1136
|
+
* and uncheck them. This helps prevent someone checking both a regular checkbox and a
|
1137
|
+
* "None of these" checkbox in the same fieldset.
|
1138
|
+
*/
|
1139
|
+
Checkboxes.prototype.unCheckExclusiveInputs = function ($input) {
|
1140
|
+
var allInputsWithSameNameAndExclusiveBehaviour = document.querySelectorAll(
|
1141
|
+
'input[data-behaviour="exclusive"][type="checkbox"][name="' + $input.name + '"]'
|
1142
|
+
);
|
1143
|
+
|
1144
|
+
nodeListForEach(allInputsWithSameNameAndExclusiveBehaviour, function ($exclusiveInput) {
|
1145
|
+
var hasSameFormOwner = ($input.form === $exclusiveInput.form);
|
1146
|
+
if (hasSameFormOwner) {
|
1147
|
+
$exclusiveInput.checked = false;
|
1148
|
+
}
|
1149
|
+
});
|
1150
|
+
|
1151
|
+
this.syncAllConditionalReveals();
|
1152
|
+
};
|
1153
|
+
|
1113
1154
|
/**
|
1114
1155
|
* Click event handler
|
1115
1156
|
*
|
@@ -1121,12 +1162,29 @@ Checkboxes.prototype.syncConditionalRevealWithInputState = function ($input) {
|
|
1121
1162
|
Checkboxes.prototype.handleClick = function (event) {
|
1122
1163
|
var $target = event.target;
|
1123
1164
|
|
1124
|
-
//
|
1125
|
-
|
1165
|
+
// Ignore clicks on things that aren't checkbox inputs
|
1166
|
+
if ($target.type !== 'checkbox') {
|
1167
|
+
return
|
1168
|
+
}
|
1169
|
+
|
1170
|
+
// If the checkbox conditionally-reveals some content, sync the state
|
1126
1171
|
var hasAriaControls = $target.getAttribute('aria-controls');
|
1127
|
-
if (
|
1172
|
+
if (hasAriaControls) {
|
1128
1173
|
this.syncConditionalRevealWithInputState($target);
|
1129
1174
|
}
|
1175
|
+
|
1176
|
+
// No further behaviour needed for unchecking
|
1177
|
+
if (!$target.checked) {
|
1178
|
+
return
|
1179
|
+
}
|
1180
|
+
|
1181
|
+
// Handle 'exclusive' checkbox behaviour (ie "None of these")
|
1182
|
+
var hasBehaviourExclusive = ($target.getAttribute('data-behaviour') === 'exclusive');
|
1183
|
+
if (hasBehaviourExclusive) {
|
1184
|
+
this.unCheckAllInputsExcept($target);
|
1185
|
+
} else {
|
1186
|
+
this.unCheckExclusiveInputs($target);
|
1187
|
+
}
|
1130
1188
|
};
|
1131
1189
|
|
1132
1190
|
return Checkboxes;
|
@@ -68,16 +68,20 @@
|
|
68
68
|
|
69
69
|
.govuk-footer__meta {
|
70
70
|
display: -webkit-box;
|
71
|
+
display: -webkit-flex;
|
71
72
|
display: -ms-flexbox;
|
72
73
|
display: flex; // Support: Flexbox
|
73
74
|
margin-right: -$govuk-gutter-half;
|
74
75
|
margin-left: -$govuk-gutter-half;
|
75
|
-
-
|
76
|
-
flex-wrap: wrap;
|
76
|
+
-webkit-flex-wrap: wrap;
|
77
|
+
-ms-flex-wrap: wrap;
|
78
|
+
flex-wrap: wrap; // Support: Flexbox
|
77
79
|
-webkit-box-align: end;
|
80
|
+
-webkit-align-items: flex-end;
|
78
81
|
-ms-flex-align: end;
|
79
82
|
align-items: flex-end; // Support: Flexbox
|
80
83
|
-webkit-box-pack: center;
|
84
|
+
-webkit-justify-content: center;
|
81
85
|
-ms-flex-pack: center;
|
82
86
|
justify-content: center; // Support: Flexbox
|
83
87
|
}
|
@@ -90,11 +94,13 @@
|
|
90
94
|
|
91
95
|
.govuk-footer__meta-item--grow {
|
92
96
|
-webkit-box-flex: 1;
|
97
|
+
-webkit-flex: 1;
|
93
98
|
-ms-flex: 1;
|
94
99
|
flex: 1; // Support: Flexbox
|
95
100
|
@include govuk-media-query ($until: tablet) {
|
96
|
-
-
|
97
|
-
flex-
|
101
|
+
-webkit-flex-basis: 320px;
|
102
|
+
-ms-flex-preferred-size: 320px;
|
103
|
+
flex-basis: 320px; // Support: Flexbox
|
98
104
|
}
|
99
105
|
}
|
100
106
|
|
@@ -153,12 +159,14 @@
|
|
153
159
|
|
154
160
|
.govuk-footer__navigation {
|
155
161
|
display: -webkit-box;
|
162
|
+
display: -webkit-flex;
|
156
163
|
display: -ms-flexbox;
|
157
164
|
display: flex; // Support: Flexbox
|
158
165
|
margin-right: -$govuk-gutter-half;
|
159
166
|
margin-left: -$govuk-gutter-half;
|
160
|
-
-
|
161
|
-
flex-wrap: wrap;
|
167
|
+
-webkit-flex-wrap: wrap;
|
168
|
+
-ms-flex-wrap: wrap;
|
169
|
+
flex-wrap: wrap; // Support: Flexbox
|
162
170
|
}
|
163
171
|
|
164
172
|
.govuk-footer__section {
|
@@ -169,15 +177,18 @@
|
|
169
177
|
vertical-align: top;
|
170
178
|
// Ensure columns take up equal width (typically one-half:one-half)
|
171
179
|
-webkit-box-flex: 1;
|
180
|
+
-webkit-flex-grow: 1;
|
172
181
|
-ms-flex-positive: 1;
|
173
182
|
flex-grow: 1; // Support: Flexbox
|
174
|
-
-
|
175
|
-
flex-
|
183
|
+
-webkit-flex-shrink: 1;
|
184
|
+
-ms-flex-negative: 1;
|
185
|
+
flex-shrink: 1; // Support: Flexbox
|
176
186
|
@include govuk-media-query ($until: desktop) {
|
177
187
|
// Make sure columns do not drop below 200px in width
|
178
188
|
// Will typically result in wrapping, and end up in a single column on smaller screens.
|
179
|
-
-
|
180
|
-
flex-
|
189
|
+
-webkit-flex-basis: 200px;
|
190
|
+
-ms-flex-preferred-size: 200px;
|
191
|
+
flex-basis: 200px; // Support: Flexbox
|
181
192
|
}
|
182
193
|
}
|
183
194
|
|
@@ -187,6 +198,7 @@
|
|
187
198
|
// To ensure the section is one of two, we can count backwards using `:nth-last-child(2)`.
|
188
199
|
.govuk-footer__section:first-child:nth-last-child(2) {
|
189
200
|
-webkit-box-flex: 2;
|
201
|
+
-webkit-flex-grow: 2;
|
190
202
|
-ms-flex-positive: 2;
|
191
203
|
flex-grow: 2; // Support: Flexbox
|
192
204
|
}
|
@@ -36,15 +36,19 @@
|
|
36
36
|
.govuk-header__logotype {
|
37
37
|
display: inline-block;
|
38
38
|
|
39
|
-
// Add a gap
|
39
|
+
// Add a gap after the logo in case it's followed by a product name. This
|
40
|
+
// gets removed later if the logotype is a :last-child.
|
40
41
|
margin-right: govuk-spacing(1);
|
41
42
|
|
42
|
-
// Prevent readability backplate from obscuring underline in Windows
|
43
|
-
//
|
44
|
-
forced-
|
43
|
+
// Prevent readability backplate from obscuring underline in Windows High
|
44
|
+
// Contrast Mode
|
45
|
+
@media (forced-colors: active) {
|
46
|
+
forced-color-adjust: none;
|
47
|
+
color: linktext;
|
48
|
+
}
|
45
49
|
|
46
|
-
//
|
47
|
-
// states neat
|
50
|
+
// Remove the gap after the logo if there's no product name to keep hover
|
51
|
+
// and focus states neat
|
48
52
|
&:last-child {
|
49
53
|
margin-right: 0;
|
50
54
|
}
|
@@ -62,7 +66,7 @@
|
|
62
66
|
width: 36px;
|
63
67
|
height: 32px;
|
64
68
|
border: 0;
|
65
|
-
vertical-align:
|
69
|
+
vertical-align: bottom;
|
66
70
|
}
|
67
71
|
|
68
72
|
.govuk-header__product-name {
|
@@ -95,11 +95,13 @@
|
|
95
95
|
|
96
96
|
.govuk-input__wrapper {
|
97
97
|
display: -webkit-box;
|
98
|
+
display: -webkit-flex;
|
98
99
|
display: -ms-flexbox;
|
99
100
|
display: flex;
|
100
101
|
|
101
102
|
.govuk-input {
|
102
103
|
-webkit-box-flex: 0;
|
104
|
+
-webkit-flex: 0 1 auto;
|
103
105
|
-ms-flex: 0 1 auto;
|
104
106
|
flex: 0 1 auto;
|
105
107
|
}
|
@@ -150,6 +152,8 @@
|
|
150
152
|
|
151
153
|
-webkit-box-flex: 0;
|
152
154
|
|
155
|
+
-webkit-flex: 0 0 auto;
|
156
|
+
|
153
157
|
-ms-flex: 0 0 auto;
|
154
158
|
|
155
159
|
flex: 0 0 auto;
|
@@ -11,7 +11,9 @@
|
|
11
11
|
|
12
12
|
// Respect 'display cutout' safe area (avoids notches and rounded corners)
|
13
13
|
@supports (padding: unquote("max(calc(0px))")) {
|
14
|
+
$padding-safe-area-right: -webkit-calc(#{govuk-spacing(3)} + env(safe-area-inset-right));
|
14
15
|
$padding-safe-area-right: calc(#{govuk-spacing(3)} + env(safe-area-inset-right));
|
16
|
+
$padding-safe-area-left: -webkit-calc(#{govuk-spacing(3)} + env(safe-area-inset-left));
|
15
17
|
$padding-safe-area-left: calc(#{govuk-spacing(3)} + env(safe-area-inset-left));
|
16
18
|
|
17
19
|
// Use max() to pick largest padding, default or with safe area
|
@@ -15,7 +15,6 @@
|
|
15
15
|
// Prevent automatic text sizing, as we already cater for small devices and
|
16
16
|
// would like the browser to stay on 100% text zoom by default.
|
17
17
|
-webkit-text-size-adjust: 100%;
|
18
|
-
-moz-text-size-adjust: 100%;
|
19
18
|
-ms-text-size-adjust: 100%;
|
20
19
|
text-size-adjust: 100%;
|
21
20
|
|
@@ -52,6 +52,12 @@
|
|
52
52
|
@mixin govuk-link-hover-decoration {
|
53
53
|
@if ($govuk-new-link-styles and $govuk-link-hover-underline-thickness) {
|
54
54
|
text-decoration-thickness: $govuk-link-hover-underline-thickness;
|
55
|
+
// Disable ink skipping on underlines on hover. Browsers haven't
|
56
|
+
// standardised on this part of the spec yet, so set both properties
|
57
|
+
-webkit-text-decoration-skip-ink: none;
|
58
|
+
text-decoration-skip-ink: none; // Chromium, Firefox
|
59
|
+
-webkit-text-decoration-skip: none;
|
60
|
+
text-decoration-skip: none; // Safari
|
55
61
|
}
|
56
62
|
}
|
57
63
|
|
@@ -30,13 +30,16 @@
|
|
30
30
|
// doesn't play nicely with it
|
31
31
|
// (https://github.com/w3c/csswg-drafts/issues/3559)
|
32
32
|
display: -webkit-box;
|
33
|
+
display: -webkit-flex;
|
33
34
|
display: -ms-flexbox;
|
34
35
|
display: flex;
|
35
36
|
-webkit-box-orient: vertical;
|
36
37
|
-webkit-box-direction: normal;
|
38
|
+
-webkit-flex-direction: column;
|
37
39
|
-ms-flex-direction: column;
|
38
40
|
flex-direction: column;
|
39
41
|
-webkit-box-align: center;
|
42
|
+
-webkit-align-items: center;
|
40
43
|
-ms-flex-align: center;
|
41
44
|
align-items: center;
|
42
45
|
|
@@ -72,12 +75,16 @@
|
|
72
75
|
|
73
76
|
-webkit-box-direction: normal;
|
74
77
|
|
78
|
+
-webkit-flex-direction: row;
|
79
|
+
|
75
80
|
-ms-flex-direction: row;
|
76
81
|
|
77
82
|
flex-direction: row;
|
78
|
-
-
|
79
|
-
flex-wrap: wrap;
|
83
|
+
-webkit-flex-wrap: wrap;
|
84
|
+
-ms-flex-wrap: wrap;
|
85
|
+
flex-wrap: wrap;
|
80
86
|
-webkit-box-align: baseline;
|
87
|
+
-webkit-align-items: baseline;
|
81
88
|
-ms-flex-align: baseline;
|
82
89
|
align-items: baseline;
|
83
90
|
|