govuk_publishing_components 27.10.5 → 27.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/govuk_publishing_components/components/layout-super-navigation-header.js +1 -1
  3. data/app/assets/javascripts/govuk_publishing_components/components/single-page-notification-button.js +48 -0
  4. data/app/assets/stylesheets/govuk_publishing_components/_all_components.scss +1 -0
  5. data/app/assets/stylesheets/govuk_publishing_components/components/_accordion.scss +6 -4
  6. data/app/assets/stylesheets/govuk_publishing_components/components/_govspeak.scss +0 -1
  7. data/app/assets/stylesheets/govuk_publishing_components/components/_layout-super-navigation-header.scss +246 -113
  8. data/app/assets/stylesheets/govuk_publishing_components/components/_single-page-notification-button.scss +30 -0
  9. data/app/assets/stylesheets/govuk_publishing_components/components/mixins/_margins.scss +2 -2
  10. data/app/assets/stylesheets/govuk_publishing_components/components/mixins/_prefixed-transform.scss +5 -0
  11. data/app/assets/stylesheets/govuk_publishing_components/govuk_frontend_support.scss +9 -0
  12. data/app/models/govuk_publishing_components/shared_accessibility_criteria.rb +17 -0
  13. data/app/views/govuk_publishing_components/components/_input.html.erb +35 -22
  14. data/app/views/govuk_publishing_components/components/_layout_super_navigation_header.html.erb +31 -43
  15. data/app/views/govuk_publishing_components/components/_metadata.html.erb +2 -0
  16. data/app/views/govuk_publishing_components/components/_search.html.erb +2 -1
  17. data/app/views/govuk_publishing_components/components/_single_page_notification_button.html.erb +17 -0
  18. data/app/views/govuk_publishing_components/components/contextual_sidebar/_brexit_cta.html.erb +4 -5
  19. data/app/views/govuk_publishing_components/components/docs/govspeak.yml +0 -6
  20. data/app/views/govuk_publishing_components/components/docs/input.yml +10 -0
  21. data/app/views/govuk_publishing_components/components/docs/metadata.yml +7 -0
  22. data/app/views/govuk_publishing_components/components/docs/single_page_notification_button.yml +50 -0
  23. data/app/views/govuk_publishing_components/components/search/_search_icon.html.erb +5 -5
  24. data/config/locales/ar.yml +0 -3
  25. data/config/locales/az.yml +0 -3
  26. data/config/locales/be.yml +0 -3
  27. data/config/locales/bg.yml +0 -3
  28. data/config/locales/bn.yml +0 -3
  29. data/config/locales/cs.yml +0 -3
  30. data/config/locales/cy.yml +0 -3
  31. data/config/locales/da.yml +0 -3
  32. data/config/locales/de.yml +0 -3
  33. data/config/locales/dr.yml +0 -3
  34. data/config/locales/el.yml +0 -3
  35. data/config/locales/en.yml +8 -9
  36. data/config/locales/es-419.yml +0 -3
  37. data/config/locales/es.yml +0 -3
  38. data/config/locales/et.yml +0 -3
  39. data/config/locales/fa.yml +0 -3
  40. data/config/locales/fi.yml +0 -3
  41. data/config/locales/fr.yml +0 -3
  42. data/config/locales/gd.yml +0 -3
  43. data/config/locales/gu.yml +0 -3
  44. data/config/locales/he.yml +0 -3
  45. data/config/locales/hi.yml +0 -3
  46. data/config/locales/hr.yml +0 -3
  47. data/config/locales/hu.yml +0 -3
  48. data/config/locales/hy.yml +0 -3
  49. data/config/locales/id.yml +0 -3
  50. data/config/locales/is.yml +0 -3
  51. data/config/locales/it.yml +0 -3
  52. data/config/locales/ja.yml +0 -3
  53. data/config/locales/ka.yml +0 -3
  54. data/config/locales/kk.yml +0 -3
  55. data/config/locales/ko.yml +0 -3
  56. data/config/locales/lt.yml +0 -3
  57. data/config/locales/lv.yml +0 -3
  58. data/config/locales/ms.yml +0 -3
  59. data/config/locales/mt.yml +0 -3
  60. data/config/locales/nl.yml +0 -3
  61. data/config/locales/no.yml +0 -3
  62. data/config/locales/pa-pk.yml +0 -3
  63. data/config/locales/pa.yml +0 -3
  64. data/config/locales/pl.yml +0 -3
  65. data/config/locales/ps.yml +0 -3
  66. data/config/locales/pt.yml +0 -3
  67. data/config/locales/ro.yml +0 -3
  68. data/config/locales/ru.yml +0 -3
  69. data/config/locales/si.yml +0 -3
  70. data/config/locales/sk.yml +0 -3
  71. data/config/locales/sl.yml +0 -3
  72. data/config/locales/so.yml +0 -3
  73. data/config/locales/sq.yml +0 -3
  74. data/config/locales/sr.yml +0 -3
  75. data/config/locales/sv.yml +0 -3
  76. data/config/locales/sw.yml +0 -3
  77. data/config/locales/ta.yml +0 -3
  78. data/config/locales/th.yml +0 -3
  79. data/config/locales/tk.yml +0 -3
  80. data/config/locales/tr.yml +0 -3
  81. data/config/locales/uk.yml +0 -3
  82. data/config/locales/ur.yml +0 -3
  83. data/config/locales/uz.yml +0 -3
  84. data/config/locales/vi.yml +0 -3
  85. data/config/locales/zh-hk.yml +0 -3
  86. data/config/locales/zh-tw.yml +0 -3
  87. data/config/locales/zh.yml +0 -3
  88. data/lib/govuk_publishing_components/presenters/button_helper.rb +1 -0
  89. data/lib/govuk_publishing_components/presenters/contextual_navigation.rb +15 -4
  90. data/lib/govuk_publishing_components/presenters/single_page_notification_button_helper.rb +40 -0
  91. data/lib/govuk_publishing_components/version.rb +1 -1
  92. data/lib/govuk_publishing_components.rb +1 -1
  93. data/node_modules/govuk-frontend/govuk/components/accordion/macro-options.json +2 -2
  94. data/node_modules/govuk-frontend/govuk/components/back-link/macro-options.json +3 -3
  95. data/node_modules/govuk-frontend/govuk/components/button/_index.scss +3 -4
  96. data/node_modules/govuk-frontend/govuk/components/button/fixtures.json +9 -0
  97. data/node_modules/govuk-frontend/govuk/components/character-count/macro-options.json +6 -6
  98. data/node_modules/govuk-frontend/govuk/components/checkboxes/_index.scss +14 -0
  99. data/node_modules/govuk-frontend/govuk/components/checkboxes/macro-options.json +8 -8
  100. data/node_modules/govuk-frontend/govuk/components/cookie-banner/macro-options.json +1 -1
  101. data/node_modules/govuk-frontend/govuk/components/date-input/macro-options.json +5 -5
  102. data/node_modules/govuk-frontend/govuk/components/details/_index.scss +2 -1
  103. data/node_modules/govuk-frontend/govuk/components/details/macro-options.json +2 -2
  104. data/node_modules/govuk-frontend/govuk/components/error-message/macro-options.json +3 -3
  105. data/node_modules/govuk-frontend/govuk/components/fieldset/macro-options.json +1 -1
  106. data/node_modules/govuk-frontend/govuk/components/file-upload/_index.scss +1 -0
  107. data/node_modules/govuk-frontend/govuk/components/file-upload/macro-options.json +4 -4
  108. data/node_modules/govuk-frontend/govuk/components/footer/_index.scss +3 -0
  109. data/node_modules/govuk-frontend/govuk/components/footer/macro-options.json +2 -2
  110. data/node_modules/govuk-frontend/govuk/components/header/macro-options.json +6 -6
  111. data/node_modules/govuk-frontend/govuk/components/hint/macro-options.json +1 -1
  112. data/node_modules/govuk-frontend/govuk/components/input/macro-options.json +7 -7
  113. data/node_modules/govuk-frontend/govuk/components/inset-text/macro-options.json +1 -1
  114. data/node_modules/govuk-frontend/govuk/components/label/macro-options.json +1 -1
  115. data/node_modules/govuk-frontend/govuk/components/panel/_index.scss +13 -1
  116. data/node_modules/govuk-frontend/govuk/components/panel/macro-options.json +1 -1
  117. data/node_modules/govuk-frontend/govuk/components/radios/_index.scss +14 -0
  118. data/node_modules/govuk-frontend/govuk/components/radios/macro-options.json +8 -8
  119. data/node_modules/govuk-frontend/govuk/components/select/macro-options.json +3 -3
  120. data/node_modules/govuk-frontend/govuk/components/summary-list/fixtures.json +2 -2
  121. data/node_modules/govuk-frontend/govuk/components/summary-list/macro-options.json +7 -7
  122. data/node_modules/govuk-frontend/govuk/components/tabs/macro-options.json +4 -4
  123. data/node_modules/govuk-frontend/govuk/components/textarea/macro-options.json +5 -5
  124. data/node_modules/govuk-frontend/govuk/helpers/_colour.scss +2 -2
  125. data/node_modules/govuk-frontend/govuk/helpers/_spacing.scss +22 -4
  126. data/node_modules/govuk-frontend/govuk/overrides/_all.scss +1 -0
  127. data/node_modules/govuk-frontend/govuk/overrides/_text-align.scss +20 -0
  128. data/node_modules/govuk-frontend/package.json +1 -1
  129. metadata +9 -18
  130. data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_summary.scss +0 -27
  131. data/lib/govuk_publishing_components/presenters/brexit_cta_helper.rb +0 -33
@@ -3,19 +3,19 @@
3
3
  "name": "text",
4
4
  "type": "string",
5
5
  "required": false,
6
- "description": "Text to use within the back link component. If `html` is provided, the `text` argument will be ignored. Defaults to \"Back\"."
6
+ "description": "Text to use within the back link component. If `html` is provided, the `text` argument will be ignored. Defaults to 'Back'."
7
7
  },
8
8
  {
9
9
  "name": "html",
10
10
  "type": "string",
11
11
  "required": false,
12
- "description": "HTML to use within the back link component. If `html` is provided, the `text` argument will be ignored. Defaults to \"Back\"."
12
+ "description": "HTML to use within the back link component. If `html` is provided, the `text` argument will be ignored. Defaults to 'Back'."
13
13
  },
14
14
  {
15
15
  "name": "href",
16
16
  "type": "string",
17
17
  "required": true,
18
- "description": "The value of the link href attribute."
18
+ "description": "The value of the link's `href` attribute."
19
19
  },
20
20
  {
21
21
  "name": "classes",
@@ -158,10 +158,6 @@
158
158
  cursor: default;
159
159
  }
160
160
 
161
- &:focus {
162
- outline: none;
163
- }
164
-
165
161
  &:active {
166
162
  top: 0;
167
163
  box-shadow: 0 $button-shadow-size 0 $govuk-button-shadow-colour; // s0
@@ -270,6 +266,9 @@
270
266
  -webkit-align-self: center;
271
267
  -ms-flex-item-align: center;
272
268
  align-self: center;
269
+ // Work around SVGs not inheriting color from parent in forced color mode
270
+ // (https://github.com/w3c/csswg-drafts/issues/6310)
271
+ forced-color-adjust: auto;
273
272
  }
274
273
 
275
274
  @if $govuk-use-legacy-font {
@@ -37,6 +37,15 @@
37
37
  "html": "<a href=\"/\" role=\"button\" draggable=\"false\" class=\"govuk-button govuk-button--disabled\" data-module=\"govuk-button\">\n Disabled link button\n</a>",
38
38
  "hidden": false
39
39
  },
40
+ {
41
+ "name": "start",
42
+ "options": {
43
+ "text": "Start now button",
44
+ "isStartButton": true
45
+ },
46
+ "html": "<button class=\"govuk-button govuk-button--start\" data-module=\"govuk-button\">\n Start now button\n <svg class=\"govuk-button__start-icon\" xmlns=\"http://www.w3.org/2000/svg\" width=\"17.5\" height=\"19\" viewBox=\"0 0 33 40\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M0 0h13l20 20-20 20H0l20-20z\"/>\n </svg></button>",
47
+ "hidden": false
48
+ },
40
49
  {
41
50
  "name": "start link",
42
51
  "options": {
@@ -3,7 +3,7 @@
3
3
  "name": "id",
4
4
  "type": "string",
5
5
  "required": true,
6
- "description": "The id of the textarea."
6
+ "description": "The ID of the textarea."
7
7
  },
8
8
  {
9
9
  "name": "name",
@@ -66,13 +66,13 @@
66
66
  "name": "formGroup",
67
67
  "type": "object",
68
68
  "required": false,
69
- "description": "Options for the form-group wrapper",
69
+ "description": "Options for the form-group wrapper.",
70
70
  "params": [
71
71
  {
72
72
  "name": "classes",
73
73
  "type": "string",
74
74
  "required": false,
75
- "description": "Classes to add to the form group (for example to show error state for the whole group)"
75
+ "description": "Classes to add to the form group (for example to show error state for the whole group)."
76
76
  }
77
77
  ]
78
78
  },
@@ -92,19 +92,19 @@
92
92
  "name": "spellcheck",
93
93
  "type": "boolean",
94
94
  "required": false,
95
- "description": "Optional field to enable or disable the spellcheck attribute on the character count."
95
+ "description": "Optional field to enable or disable the `spellcheck` attribute on the character count."
96
96
  },
97
97
  {
98
98
  "name": "countMessage",
99
99
  "type": "object",
100
100
  "required": false,
101
- "description": "Options for the count message",
101
+ "description": "Options for the count message.",
102
102
  "params": [
103
103
  {
104
104
  "name": "classes",
105
105
  "type": "string",
106
106
  "required": false,
107
- "description": "Classes to add to the count message"
107
+ "description": "Classes to add to the count message."
108
108
  }
109
109
  ]
110
110
  }
@@ -127,6 +127,20 @@
127
127
  // Focused state
128
128
  .govuk-checkboxes__input:focus + .govuk-checkboxes__label:before {
129
129
  border-width: 4px;
130
+
131
+ // When colours are overridden, the yellow box-shadow becomes invisible
132
+ // which means the focus state is less obvious. By adding a transparent
133
+ // outline, which becomes solid (text-coloured) in that context, we ensure
134
+ // the focus remains clearly visible.
135
+ outline: $govuk-focus-width solid transparent;
136
+ outline-offset: 1px;
137
+
138
+ // When in an explicit forced-color mode, we can use the Highlight system
139
+ // color for the outline to better match focus states of native controls
140
+ @media screen and (forced-colors: active), (-ms-high-contrast: active) {
141
+ outline-color: Highlight;
142
+ }
143
+
130
144
  box-shadow: 0 0 0 $govuk-focus-width $govuk-focus-colour;
131
145
  }
132
146
 
@@ -30,13 +30,13 @@
30
30
  "name": "formGroup",
31
31
  "type": "object",
32
32
  "required": false,
33
- "description": "Options for the form-group wrapper",
33
+ "description": "Options for the form-group wrapper.",
34
34
  "params": [
35
35
  {
36
36
  "name": "classes",
37
37
  "type": "string",
38
38
  "required": false,
39
- "description": "Classes to add to the form group (for example to show error state for the whole group)"
39
+ "description": "Classes to add to the form group (for example to show error state for the whole group)."
40
40
  }
41
41
  ]
42
42
  },
@@ -74,7 +74,7 @@
74
74
  "name": "id",
75
75
  "type": "string",
76
76
  "required": false,
77
- "description": "Specific id attribute for the checkbox item. If omitted, then component global `idPrefix` option will be applied."
77
+ "description": "Specific ID attribute for the checkbox item. If omitted, then component global `idPrefix` option will be applied."
78
78
  },
79
79
  {
80
80
  "name": "name",
@@ -106,19 +106,19 @@
106
106
  "name": "divider",
107
107
  "type": "string",
108
108
  "required": false,
109
- "description": "Divider text to separate checkbox items, for example the text \"or\"."
109
+ "description": "Divider text to separate checkbox items, for example the text 'or'."
110
110
  },
111
111
  {
112
112
  "name": "checked",
113
113
  "type": "boolean",
114
114
  "required": false,
115
- "description": "If true, checkbox will be checked."
115
+ "description": "If `true`, checkbox will be checked."
116
116
  },
117
117
  {
118
118
  "name": "conditional",
119
119
  "type": "boolean",
120
120
  "required": false,
121
- "description": "If true, content provided will be revealed when the item is checked."
121
+ "description": "If `true`, content provided will be revealed when the item is checked."
122
122
  },
123
123
  {
124
124
  "name": "conditional.html",
@@ -130,13 +130,13 @@
130
130
  "name": "behaviour",
131
131
  "type": "string",
132
132
  "required": false,
133
- "description": "If set to `exclusive`, implements a \"None of these\" type behaviour via javascript when checkboxes are clicked"
133
+ "description": "If set to `exclusive`, implements a 'None of these' type behaviour via JavaScript when checkboxes are clicked."
134
134
  },
135
135
  {
136
136
  "name": "disabled",
137
137
  "type": "boolean",
138
138
  "required": false,
139
- "description": "If true, checkbox will be disabled."
139
+ "description": "If `true`, checkbox will be disabled."
140
140
  },
141
141
  {
142
142
  "name": "attributes",
@@ -3,7 +3,7 @@
3
3
  "name": "ariaLabel",
4
4
  "type": "string",
5
5
  "required": false,
6
- "description": "The text for the `aria-label` which labels the cookie banner region. This region applies to all messages that the cookie banner includes. For example, the cookie message and the confirmation message. Defaults to \"Cookie banner\"."
6
+ "description": "The text for the `aria-label` which labels the cookie banner region. This region applies to all messages that the cookie banner includes. For example, the cookie message and the confirmation message. Defaults to 'Cookie banner'."
7
7
  },
8
8
  {
9
9
  "name": "hidden",
@@ -3,7 +3,7 @@
3
3
  "name": "id",
4
4
  "type": "string",
5
5
  "required": true,
6
- "description": "This is used for the main component and to compose id attribute for each item."
6
+ "description": "This is used for the main component and to compose the ID attribute for each item."
7
7
  },
8
8
  {
9
9
  "name": "namePrefix",
@@ -21,7 +21,7 @@
21
21
  "name": "id",
22
22
  "type": "string",
23
23
  "required": false,
24
- "description": "Item-specific id. If provided, it will be used instead of the generated id."
24
+ "description": "Item-specific ID. If provided, it will be used instead of the generated ID."
25
25
  },
26
26
  {
27
27
  "name": "name",
@@ -45,7 +45,7 @@
45
45
  "name": "autocomplete",
46
46
  "type": "string",
47
47
  "required": false,
48
- "description": "Attribute to [identify input purpose](https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html), for instance \"bday-day\". See [autofill](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill) for full list of attributes that can be used."
48
+ "description": "Attribute to [identify input purpose](https://www.w3.org/WAI/WCAG21/Understanding/identify-input-purpose.html), for instance `bday-day`. See [autofill](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill) for full list of attributes that can be used."
49
49
  },
50
50
  {
51
51
  "name": "pattern",
@@ -85,13 +85,13 @@
85
85
  "name": "formGroup",
86
86
  "type": "object",
87
87
  "required": false,
88
- "description": "Options for the form-group wrapper",
88
+ "description": "Options for the form-group wrapper.",
89
89
  "params": [
90
90
  {
91
91
  "name": "classes",
92
92
  "type": "string",
93
93
  "required": false,
94
- "description": "Classes to add to the form group (for example to show error state for the whole group)"
94
+ "description": "Classes to add to the form group (for example to show error state for the whole group)."
95
95
  }
96
96
  ]
97
97
  },
@@ -71,7 +71,8 @@
71
71
  }
72
72
 
73
73
  .govuk-details__text {
74
- padding: govuk-spacing(3);
74
+ padding-top: govuk-spacing(3);
75
+ padding-bottom: govuk-spacing(3);
75
76
  padding-left: govuk-spacing(4);
76
77
  border-left: $govuk-border-width solid $govuk-border-colour;
77
78
  }
@@ -27,13 +27,13 @@
27
27
  "name": "id",
28
28
  "type": "string",
29
29
  "required": false,
30
- "description": "Id to add to the details element."
30
+ "description": "ID to add to the details element."
31
31
  },
32
32
  {
33
33
  "name": "open",
34
34
  "type": "boolean",
35
35
  "required": false,
36
- "description": "If true, details element will be expanded."
36
+ "description": "If `true`, details element will be expanded."
37
37
  },
38
38
  {
39
39
  "name": "classes",
@@ -15,7 +15,7 @@
15
15
  "name": "id",
16
16
  "type": "string",
17
17
  "required": false,
18
- "description": "Id attribute to add to the error message span tag."
18
+ "description": "ID attribute to add to the error message span tag."
19
19
  },
20
20
  {
21
21
  "name": "classes",
@@ -27,12 +27,12 @@
27
27
  "name": "attributes",
28
28
  "type": "object",
29
29
  "required": false,
30
- "description": "HTML attributes (for example data attributes) to add to the error message span tag"
30
+ "description": "HTML attributes (for example data attributes) to add to the error message span tag."
31
31
  },
32
32
  {
33
33
  "name": "visuallyHiddenText",
34
34
  "type": "string",
35
35
  "required": false,
36
- "description": "A visually hidden prefix used before the error message. Defaults to \"Error\"."
36
+ "description": "A visually hidden prefix used before the error message. Defaults to 'Error'."
37
37
  }
38
38
  ]
@@ -65,6 +65,6 @@
65
65
  "name": "caller",
66
66
  "type": "nunjucks-block",
67
67
  "required": false,
68
- "description": "Not strictly a parameter but [Nunjucks code convention](https://mozilla.github.io/nunjucks/templating.html#call). Using a `call` block enables you to call a macro with all the text inside the tag. This is helpful if you want to pass a lot of content into a macro. To use it, you will need to wrap the entire fielset component in a `call` block."
68
+ "description": "Not strictly a parameter but [Nunjucks code convention](https://mozilla.github.io/nunjucks/templating.html#call). Using a `call` block enables you to call a macro with all the text inside the tag. This is helpful if you want to pass a lot of content into a macro. To use it, you will need to wrap the entire fieldset component in a `call` block."
69
69
  }
70
70
  ]
@@ -8,6 +8,7 @@
8
8
  .govuk-file-upload {
9
9
  @include govuk-font($size: 19);
10
10
  @include govuk-text-colour;
11
+ max-width: 100%;
11
12
  margin-left: -$component-padding;
12
13
  padding: $component-padding;
13
14
 
@@ -9,13 +9,13 @@
9
9
  "name": "id",
10
10
  "type": "string",
11
11
  "required": true,
12
- "description": "The id of the input"
12
+ "description": "The ID of the input."
13
13
  },
14
14
  {
15
15
  "name": "value",
16
16
  "type": "string",
17
17
  "required": false,
18
- "description": "Optional initial value of the input"
18
+ "description": "Optional initial value of the input."
19
19
  },
20
20
  {
21
21
  "name": "describedBy",
@@ -48,13 +48,13 @@
48
48
  "name": "formGroup",
49
49
  "type": "object",
50
50
  "required": false,
51
- "description": "Options for the form-group wrapper",
51
+ "description": "Options for the form-group wrapper.",
52
52
  "params": [
53
53
  {
54
54
  "name": "classes",
55
55
  "type": "string",
56
56
  "required": false,
57
- "description": "Classes to add to the form group (for example to show error state for the whole group)"
57
+ "description": "Classes to add to the form group (for example to show error state for the whole group)."
58
58
  }
59
59
  ]
60
60
  },
@@ -111,6 +111,9 @@
111
111
  margin-bottom: govuk-spacing(3);
112
112
  }
113
113
  vertical-align: top;
114
+ // Work around SVGs not inheriting color from parent in forced color mode
115
+ // (https://github.com/w3c/csswg-drafts/issues/6310)
116
+ forced-color-adjust: auto;
114
117
  }
115
118
 
116
119
  .govuk-footer__licence-description {
@@ -9,7 +9,7 @@
9
9
  "name": "visuallyHiddenTitle",
10
10
  "type": "string",
11
11
  "required": false,
12
- "description": "Title for a meta item section, which defaults to Support links"
12
+ "description": "Title for a meta item section. Defaults to 'Support links'."
13
13
  },
14
14
  {
15
15
  "name": "html",
@@ -61,7 +61,7 @@
61
61
  "name": "title",
62
62
  "type": "string",
63
63
  "required": true,
64
- "description": "Title for a section"
64
+ "description": "Title for a section."
65
65
  },
66
66
  {
67
67
  "name": "columns",
@@ -3,7 +3,7 @@
3
3
  "name": "homepageUrl",
4
4
  "type": "string",
5
5
  "required": false,
6
- "description": "The url of the homepage. Defaults to /"
6
+ "description": "The URL of the homepage. Defaults to `/`"
7
7
  },
8
8
  {
9
9
  "name": "assetsPath",
@@ -15,7 +15,7 @@
15
15
  "name": "productName",
16
16
  "type": "string",
17
17
  "required": false,
18
- "description": "Product name, used when the product name follows on directly from ‘GOV.UK’. For example, GOV.UK Pay or GOV.UK Design System. In most circumstances, you should use serviceName."
18
+ "description": "Product name, used when the product name follows on directly from ‘GOV.UK’. For example, GOV.UK Pay or GOV.UK Design System. In most circumstances, you should use `serviceName`."
19
19
  },
20
20
  {
21
21
  "name": "serviceName",
@@ -27,7 +27,7 @@
27
27
  "name": "serviceUrl",
28
28
  "type": "string",
29
29
  "required": false,
30
- "description": "Url for the service name anchor."
30
+ "description": "URL for the service name anchor."
31
31
  },
32
32
  {
33
33
  "name": "navigation",
@@ -51,7 +51,7 @@
51
51
  "name": "href",
52
52
  "type": "string",
53
53
  "required": false,
54
- "description": "Url of the navigation item anchor."
54
+ "description": "URL of the navigation item anchor."
55
55
  },
56
56
  {
57
57
  "name": "active",
@@ -77,13 +77,13 @@
77
77
  "name": "navigationLabel",
78
78
  "type": "string",
79
79
  "required": false,
80
- "description": "Text for the `aria-label` attribute of the navigation. Defaults to \"Navigation menu\"."
80
+ "description": "Text for the `aria-label` attribute of the navigation. Defaults to 'Navigation menu'."
81
81
  },
82
82
  {
83
83
  "name": "menuButtonLabel",
84
84
  "type": "string",
85
85
  "required": false,
86
- "description": "Text for the `aria-label` attribute of the button that toggles the navigation. Defaults to \"Show or hide navigation menu\"."
86
+ "description": "Text for the `aria-label` attribute of the button that toggles the navigation. Defaults to 'Show or hide navigation menu'."
87
87
  },
88
88
  {
89
89
  "name": "containerClasses",
@@ -15,7 +15,7 @@
15
15
  "name": "id",
16
16
  "type": "string",
17
17
  "required": false,
18
- "description": "Optional id attribute to add to the hint span tag."
18
+ "description": "Optional ID attribute to add to the hint span tag."
19
19
  },
20
20
  {
21
21
  "name": "classes",
@@ -3,7 +3,7 @@
3
3
  "name": "id",
4
4
  "type": "string",
5
5
  "required": true,
6
- "description": "The id of the input."
6
+ "description": "The ID of the input."
7
7
  },
8
8
  {
9
9
  "name": "name",
@@ -15,7 +15,7 @@
15
15
  "name": "type",
16
16
  "type": "string",
17
17
  "required": false,
18
- "description": "Type of input control to render. Defaults to \"text\"."
18
+ "description": "Type of input control to render. Defaults to `text`."
19
19
  },
20
20
  {
21
21
  "name": "inputmode",
@@ -98,13 +98,13 @@
98
98
  "name": "text",
99
99
  "type": "string",
100
100
  "required": true,
101
- "description": "Required. If `html` is set, this is not required. Text to use within the label. If `html` is provided, the `text` argument will be ignored."
101
+ "description": "If `html` is set, this is not required. Text to use within the label. If `html` is provided, the `text` argument will be ignored."
102
102
  },
103
103
  {
104
104
  "name": "html",
105
105
  "type": "string",
106
106
  "required": true,
107
- "description": "Required. If `text` is set, this is not required. HTML to use within the label. If `html` is provided, the `text` argument will be ignored."
107
+ "description": "If `text` is set, this is not required. HTML to use within the label. If `html` is provided, the `text` argument will be ignored."
108
108
  },
109
109
  {
110
110
  "name": "classes",
@@ -124,13 +124,13 @@
124
124
  "name": "formGroup",
125
125
  "type": "object",
126
126
  "required": false,
127
- "description": "Options for the form-group wrapper",
127
+ "description": "Options for the form-group wrapper.",
128
128
  "params": [
129
129
  {
130
130
  "name": "classes",
131
131
  "type": "string",
132
132
  "required": false,
133
- "description": "Classes to add to the form group (for example to show error state for the whole group)"
133
+ "description": "Classes to add to the form group (for example to show error state for the whole group)."
134
134
  }
135
135
  ]
136
136
  },
@@ -156,7 +156,7 @@
156
156
  "name": "spellcheck",
157
157
  "type": "boolean",
158
158
  "required": false,
159
- "description": "Optional field to enable or disable the spellcheck attribute on the input."
159
+ "description": "Optional field to enable or disable the `spellcheck` attribute on the input."
160
160
  },
161
161
  {
162
162
  "name": "attributes",
@@ -15,7 +15,7 @@
15
15
  "name": "id",
16
16
  "type": "string",
17
17
  "required": false,
18
- "description": "Id attribute to add to the inset text container."
18
+ "description": "ID attribute to add to the inset text container."
19
19
  },
20
20
  {
21
21
  "name": "classes",
@@ -15,7 +15,7 @@
15
15
  "name": "for",
16
16
  "type": "string",
17
17
  "required": false,
18
- "description": "The value of the for attribute, the id of the input the label is associated with."
18
+ "description": "The value of the `for` attribute, the ID of the input the label is associated with."
19
19
  },
20
20
  {
21
21
  "name": "isPageHeading",
@@ -12,7 +12,19 @@
12
12
  text-align: center;
13
13
 
14
14
  @include govuk-media-query($until: tablet) {
15
- padding: govuk-spacing(6) - $govuk-border-width;
15
+ padding: govuk-spacing(3) - $govuk-border-width;
16
+
17
+ // This is an if-all-else-fails attempt to stop long words from overflowing the container
18
+ // on very narrow viewports by forcing them to break and wrap instead. This
19
+ // overflowing is more likely to happen when user increases text size on a mobile eg. using
20
+ // iOS Safari text resize controls.
21
+ //
22
+ // The overflowing is a particular problem with the panel component since it uses white
23
+ // text: when the text overflows the container, it is invisible on the white (page)
24
+ // background. When the text in our other components overflow, the user might have to scroll
25
+ // horizontally to view it but the the text remains legible.
26
+ overflow-wrap: break-word;
27
+ word-wrap: break-word; // Support IE (autoprefixer doesn't add this as it's not a prefix)
16
28
  }
17
29
  }
18
30
 
@@ -15,7 +15,7 @@
15
15
  "name": "headingLevel",
16
16
  "type": "integer",
17
17
  "required": false,
18
- "description": "Heading level, from 1 to 6. Default is 1."
18
+ "description": "Heading level, from `1` to `6`. Default is `1`."
19
19
  },
20
20
  {
21
21
  "name": "text",
@@ -121,6 +121,20 @@
121
121
  // Focused state
122
122
  .govuk-radios__input:focus + .govuk-radios__label:before {
123
123
  border-width: 4px;
124
+
125
+ // When colours are overridden, the yellow box-shadow becomes invisible
126
+ // which means the focus state is less obvious. By adding a transparent
127
+ // outline, which becomes solid (text-coloured) in that context, we ensure
128
+ // the focus remains clearly visible.
129
+ outline: $govuk-focus-width solid transparent;
130
+ outline-offset: 1px;
131
+
132
+ // When in an explicit forced-color mode, we can use the Highlight system
133
+ // color for the outline to better match focus states of native controls
134
+ @media screen and (forced-colors: active), (-ms-high-contrast: active) {
135
+ outline-color: Highlight;
136
+ }
137
+
124
138
  box-shadow: 0 0 0 $govuk-radios-focus-width $govuk-focus-colour;
125
139
  }
126
140