govuk_publishing_components 21.23.1 → 21.24.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/stylesheets/govuk_publishing_components/components/_back-link.scss +37 -0
- data/app/views/govuk_publishing_components/components/_breadcrumbs.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_radio.html.erb +2 -0
- data/app/views/govuk_publishing_components/components/_step_by_step_nav_header.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/docs/breadcrumbs.yml +6 -23
- data/app/views/govuk_publishing_components/components/docs/checkboxes.yml +17 -0
- data/app/views/govuk_publishing_components/components/docs/radio.yml +15 -1
- data/lib/govuk_publishing_components/presenters/breadcrumbs.rb +10 -11
- data/lib/govuk_publishing_components/presenters/checkboxes_helper.rb +5 -2
- data/lib/govuk_publishing_components/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 852f3e158e84b94b02db8e065964955db1e252c11fb8e90db04284e56a998a12
|
4
|
+
data.tar.gz: 187b7946e006dd1b84b0e949736d32f286be107d2ee182766abbac45a75fc623
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f83735ddd15083e567d8ff030fc0bf9fe933b929fa265bc7c76637a880000d4f1ac24a5c724728e64be55f5cca61debc9134bc132bb2a2542ec375e533c71170
|
7
|
+
data.tar.gz: 8e1af044ebd75237948275b713ba1276e54b09a1303adc8f6ac48f88414e50b2ed59a8d9ff77825f21d06a0b1a0d5ce641d46cc18b249c6c704ac8a86f5e9c27
|
@@ -1 +1,38 @@
|
|
1
1
|
@import "govuk/components/back-link/back-link";
|
2
|
+
|
3
|
+
.govuk-back-link {
|
4
|
+
&[href] {
|
5
|
+
text-decoration: underline;
|
6
|
+
border-bottom: 1px solid transparent;
|
7
|
+
|
8
|
+
&:focus {
|
9
|
+
text-decoration: none;
|
10
|
+
}
|
11
|
+
}
|
12
|
+
|
13
|
+
&:before {
|
14
|
+
content: "";
|
15
|
+
display: block;
|
16
|
+
position: absolute;
|
17
|
+
top: 0;
|
18
|
+
bottom: 1px;
|
19
|
+
left: 3px;
|
20
|
+
width: 7px;
|
21
|
+
height: 7px;
|
22
|
+
-webkit-transform: rotate(225deg);
|
23
|
+
-ms-transform: rotate(225deg);
|
24
|
+
transform: rotate(225deg);
|
25
|
+
border: solid;
|
26
|
+
border-width: 1px 1px 0 0;
|
27
|
+
clip-path: inherit;
|
28
|
+
}
|
29
|
+
}
|
30
|
+
|
31
|
+
.govuk-back-link::after {
|
32
|
+
content: "";
|
33
|
+
position: absolute;
|
34
|
+
top: -14px;
|
35
|
+
right: 0;
|
36
|
+
left: 0;
|
37
|
+
bottom: -14px;
|
38
|
+
}
|
@@ -2,7 +2,7 @@
|
|
2
2
|
breadcrumbs ||= []
|
3
3
|
inverse ||= false
|
4
4
|
invert_class = inverse ? "gem-c-breadcrumbs--inverse" : ""
|
5
|
-
breadcrumb_presenter = GovukPublishingComponents::Presenters::Breadcrumbs.new(breadcrumbs
|
5
|
+
breadcrumb_presenter = GovukPublishingComponents::Presenters::Breadcrumbs.new(breadcrumbs)
|
6
6
|
%>
|
7
7
|
|
8
8
|
<script type="application/ld+json">
|
@@ -4,6 +4,7 @@
|
|
4
4
|
|
5
5
|
label ||= nil
|
6
6
|
heading ||= nil
|
7
|
+
heading_caption ||= nil
|
7
8
|
small ||= false
|
8
9
|
inline ||= false
|
9
10
|
is_page_heading ||= false
|
@@ -39,6 +40,7 @@
|
|
39
40
|
<% if heading.present? %>
|
40
41
|
<% if is_page_heading %>
|
41
42
|
<%= tag.legend class: "govuk-fieldset__legend govuk-fieldset__legend--xl gem-c-title" do %>
|
43
|
+
<%= tag.span(heading_caption, class: "govuk-caption-xl") if heading_caption.present? %>
|
42
44
|
<%= tag.h1 heading, class: "gem-c-title__text" %>
|
43
45
|
<% end %>
|
44
46
|
<% else %>
|
@@ -6,7 +6,7 @@
|
|
6
6
|
{ title: "Home", url: "/" },
|
7
7
|
{ title: title, url: path }
|
8
8
|
]
|
9
|
-
breadcrumb_presenter = GovukPublishingComponents::Presenters::Breadcrumbs.new(breadcrumbs
|
9
|
+
breadcrumb_presenter = GovukPublishingComponents::Presenters::Breadcrumbs.new(breadcrumbs)
|
10
10
|
%>
|
11
11
|
<% if title %>
|
12
12
|
<script type="application/ld+json">
|
@@ -3,6 +3,8 @@ description: "Navigational breadcrumbs, showing page hierarchy"
|
|
3
3
|
body: |
|
4
4
|
Accepts an array of breadcrumb objects. Each crumb must have a title and a URL.
|
5
5
|
Links have tracking data but links to the homepage (any link with a url of "/") will be tracked separately as `homeLinkClicked`
|
6
|
+
|
7
|
+
Note: Only the first and last (or parent) item in the breadcrumb will be displayed when the page width is less than the "tablet" govuk-breakpoint.
|
6
8
|
shared_accessibility_criteria:
|
7
9
|
- link
|
8
10
|
accessibility_criteria:
|
@@ -28,7 +30,6 @@ examples:
|
|
28
30
|
- title: 'Sub-section'
|
29
31
|
url: '/section/sub-section'
|
30
32
|
title: 'Education of disadvantaged children'
|
31
|
-
is_current_page: true
|
32
33
|
inverse: true
|
33
34
|
context:
|
34
35
|
dark_background: true
|
@@ -67,26 +68,8 @@ examples:
|
|
67
68
|
url: '/browse/abroad'
|
68
69
|
- title: 'Travel abroad'
|
69
70
|
url: '/browse/abroad/travel-abroad'
|
70
|
-
|
71
|
-
|
72
|
-
breadcrumbs:
|
73
|
-
- title: 'Home'
|
74
|
-
url: '/'
|
75
|
-
- title: 'Passports, travel and living abroad'
|
76
|
-
url: '/browse/abroad'
|
77
|
-
- title: 'Travel abroad'
|
78
|
-
highlight_current_page:
|
79
|
-
description: This is currently used on pages tagged to the taxonomy, such as [on this page](https://www.gov.uk/guidance/pupil-premium-information-for-schools-and-alternative-provision-settings).
|
80
|
-
data:
|
81
|
-
breadcrumbs:
|
82
|
-
- title: 'Home'
|
83
|
-
url: '/'
|
84
|
-
- title: 'Education, training and skills'
|
85
|
-
url: '/education'
|
86
|
-
- title: 'Education of disadvantaged children'
|
87
|
-
is_current_page: true
|
88
|
-
collapse_on_mobile:
|
89
|
-
description: This is currently used within on pages tagged to the taxonomy, such as [on this page](https://www.gov.uk/guidance/pupil-premium-information-for-schools-and-alternative-provision-settings).
|
71
|
+
long_taxon_on_mobile:
|
72
|
+
description: This is an example of a breadcrumb (specifically for mobile) with long taxons on the the parent item and a greater touch target area
|
90
73
|
data:
|
91
74
|
collapse_on_mobile: true
|
92
75
|
breadcrumbs:
|
@@ -94,5 +77,5 @@ examples:
|
|
94
77
|
url: '/'
|
95
78
|
- title: 'Education, training and skills'
|
96
79
|
url: '/education'
|
97
|
-
|
98
|
-
|
80
|
+
- title: 'Education of disadvantaged children appended with some extra long content to make this a very very very very long taxon'
|
81
|
+
url: '/education'
|
@@ -106,6 +106,23 @@ examples:
|
|
106
106
|
value: "green"
|
107
107
|
- label: "Blue"
|
108
108
|
value: "blue"
|
109
|
+
with_page_header_and_caption:
|
110
|
+
description: |
|
111
|
+
If a caption text is provided with a page heading, it will be displayed above the heading.
|
112
|
+
A caption can only be used with a page heading. If a heading is not provided the caption will not render.
|
113
|
+
The pattern is used across GOV.UK to show a high-level section that this page question falls into.
|
114
|
+
data:
|
115
|
+
name: "favourite_skittle"
|
116
|
+
heading: "Choose your favourite skittles"
|
117
|
+
heading_caption: "Question 3 of 9"
|
118
|
+
is_page_heading: true
|
119
|
+
items:
|
120
|
+
- label: "Red"
|
121
|
+
value: "red"
|
122
|
+
- label: "Green"
|
123
|
+
value: "green"
|
124
|
+
- label: "Blue"
|
125
|
+
value: "blue"
|
109
126
|
without_hint_text:
|
110
127
|
description: Hint text can be removed entirely with this option. Note that this option can be combined with the visually_hide_heading option.
|
111
128
|
data:
|
@@ -108,6 +108,21 @@ examples:
|
|
108
108
|
text: "Yes"
|
109
109
|
- value: "no"
|
110
110
|
text: "No"
|
111
|
+
with_page_header_and_caption:
|
112
|
+
description: |
|
113
|
+
If a caption text is provided with a page heading, it will be displayed above the heading.
|
114
|
+
A caption can only be used with a page heading. If a heading is not provided the caption will not render.
|
115
|
+
The pattern is used across GOV.UK to show a high-level section that this page question falls into.
|
116
|
+
data:
|
117
|
+
name: "radio-group-heading"
|
118
|
+
heading: "Is it snowing?"
|
119
|
+
heading_caption: "Question 3 of 9"
|
120
|
+
is_page_heading: true
|
121
|
+
items:
|
122
|
+
- value: "yes"
|
123
|
+
text: "Yes"
|
124
|
+
- value: "no"
|
125
|
+
text: "No"
|
111
126
|
with_page_heading_and_hint:
|
112
127
|
data:
|
113
128
|
name: "radio-group-heading"
|
@@ -179,7 +194,6 @@ examples:
|
|
179
194
|
text: "Green"
|
180
195
|
- value: "blue"
|
181
196
|
text: "Blue"
|
182
|
-
|
183
197
|
with_hint_text_on_radios:
|
184
198
|
data:
|
185
199
|
name: "radio-group-hint-text"
|
@@ -1,9 +1,8 @@
|
|
1
1
|
module GovukPublishingComponents
|
2
2
|
module Presenters
|
3
3
|
class Breadcrumbs
|
4
|
-
def initialize(breadcrumbs
|
4
|
+
def initialize(breadcrumbs)
|
5
5
|
@breadcrumbs = breadcrumbs
|
6
|
-
@request_path = request_path
|
7
6
|
end
|
8
7
|
|
9
8
|
def structured_data
|
@@ -16,12 +15,12 @@ module GovukPublishingComponents
|
|
16
15
|
|
17
16
|
private
|
18
17
|
|
19
|
-
attr_reader :breadcrumbs
|
18
|
+
attr_reader :breadcrumbs
|
20
19
|
|
21
20
|
def item_list_element
|
22
21
|
breadcrumbs.each_with_index.map { |crumb, index| Breadcrumb.new(crumb, index) }.
|
23
22
|
select(&:is_link?).
|
24
|
-
map
|
23
|
+
map(&:item_list_element)
|
25
24
|
end
|
26
25
|
end
|
27
26
|
|
@@ -34,24 +33,24 @@ module GovukPublishingComponents
|
|
34
33
|
@index = index + 1
|
35
34
|
end
|
36
35
|
|
37
|
-
def item_list_element
|
36
|
+
def item_list_element
|
38
37
|
{
|
39
38
|
"@type" => "ListItem",
|
40
39
|
"position" => index,
|
41
|
-
"item" => list_item_item
|
40
|
+
"item" => list_item_item
|
42
41
|
}
|
43
42
|
end
|
44
43
|
|
45
44
|
def is_link?
|
46
|
-
crumb[:url].present?
|
45
|
+
crumb[:url].present?
|
47
46
|
end
|
48
47
|
|
49
48
|
def path
|
50
|
-
crumb[:
|
49
|
+
crumb[:url]
|
51
50
|
end
|
52
51
|
|
53
52
|
def aria_current
|
54
|
-
|
53
|
+
'false'
|
55
54
|
end
|
56
55
|
|
57
56
|
def tracking_data(breadcrumbs_length)
|
@@ -81,8 +80,8 @@ module GovukPublishingComponents
|
|
81
80
|
|
82
81
|
attr_reader :crumb, :index
|
83
82
|
|
84
|
-
def list_item_item
|
85
|
-
path = crumb[:
|
83
|
+
def list_item_item
|
84
|
+
path = crumb[:url]
|
86
85
|
item = { "name" => crumb[:title] }
|
87
86
|
item["@id"] = Plek.new.website_root + path if path
|
88
87
|
item
|
@@ -4,7 +4,8 @@ module GovukPublishingComponents
|
|
4
4
|
include ActionView::Helpers
|
5
5
|
include ActionView::Context
|
6
6
|
|
7
|
-
attr_reader :items, :name, :css_classes, :list_classes, :error, :has_conditional,
|
7
|
+
attr_reader :items, :name, :css_classes, :list_classes, :error, :has_conditional,
|
8
|
+
:has_nested, :id, :hint_text, :description, :heading_size, :heading_caption
|
8
9
|
|
9
10
|
def initialize(options)
|
10
11
|
@items = options[:items] || []
|
@@ -24,6 +25,7 @@ module GovukPublishingComponents
|
|
24
25
|
@heading = options[:heading] || nil
|
25
26
|
@heading_size = options[:heading_size]
|
26
27
|
@heading_size = 'm' unless %w(s m l xl).include?(@heading_size)
|
28
|
+
@heading_caption = options[:heading_caption] || nil
|
27
29
|
@is_page_heading = options[:is_page_heading]
|
28
30
|
@description = options[:description] || nil
|
29
31
|
@no_hint_text = options[:no_hint_text]
|
@@ -54,7 +56,8 @@ module GovukPublishingComponents
|
|
54
56
|
:legend,
|
55
57
|
class: "govuk-fieldset__legend govuk-fieldset__legend--xl gem-c-title"
|
56
58
|
) do
|
57
|
-
content_tag(:
|
59
|
+
concat content_tag(:span, heading_caption, class: "govuk-caption-xl") if heading_caption.present?
|
60
|
+
concat content_tag(:h1, @heading, class: "gem-c-title__text")
|
58
61
|
end
|
59
62
|
else
|
60
63
|
classes = %w(govuk-fieldset__legend)
|