govuk_publishing_components 47.0.0 → 48.0.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/rum-custom-data.js +18 -0
- data/app/assets/javascripts/govuk_publishing_components/vendor/lux/lux-measurer.js +0 -37
- data/app/assets/stylesheets/govuk_publishing_components/components/_govspeak.scss +0 -1
- data/app/views/govuk_publishing_components/components/_intervention.html.erb +10 -14
- data/app/views/govuk_publishing_components/components/_layout_for_public.html.erb +1 -0
- data/app/views/govuk_publishing_components/components/_layout_super_navigation_header.html.erb +10 -21
- data/app/views/govuk_publishing_components/components/_list.html.erb +6 -12
- data/app/views/govuk_publishing_components/components/_search.html.erb +17 -21
- data/app/views/govuk_publishing_components/components/_subscription_links.html.erb +5 -11
- data/app/views/govuk_publishing_components/components/_success_alert.html.erb +8 -12
- data/app/views/govuk_publishing_components/components/_summary_card.html.erb +4 -2
- data/app/views/govuk_publishing_components/components/_summary_list.html.erb +6 -2
- data/app/views/govuk_publishing_components/components/_translation_nav.html.erb +7 -5
- data/app/views/govuk_publishing_components/components/_warning_text.html.erb +5 -1
- data/app/views/govuk_publishing_components/components/docs/devolved_nations.yml +3 -3
- data/app/views/govuk_publishing_components/components/docs/govspeak.yml +0 -6
- data/app/views/govuk_publishing_components/components/docs/intervention.yml +1 -0
- data/app/views/govuk_publishing_components/components/docs/layout_super_navigation_header.yml +1 -0
- data/app/views/govuk_publishing_components/components/docs/list.yml +3 -1
- data/app/views/govuk_publishing_components/components/docs/search.yml +2 -2
- data/app/views/govuk_publishing_components/components/docs/subscription_links.yml +1 -0
- data/app/views/govuk_publishing_components/components/docs/success_alert.yml +1 -0
- data/app/views/govuk_publishing_components/components/docs/summary_card.yml +1 -0
- data/app/views/govuk_publishing_components/components/docs/summary_list.yml +1 -0
- data/app/views/govuk_publishing_components/components/docs/translation_nav.yml +1 -0
- data/app/views/govuk_publishing_components/components/docs/warning_text.yml +1 -0
- data/app/views/govuk_publishing_components/components/layout_header/_search.html.erb +1 -1
- data/lib/govuk_publishing_components/presenters/component_wrapper_helper.rb +16 -0
- data/lib/govuk_publishing_components/presenters/devolved_nations_helper.rb +4 -4
- data/lib/govuk_publishing_components/version.rb +1 -1
- metadata +3 -3
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_advisory.scss +0 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36a9c949e5b0818fd9a88c6e3d391589f2856b2354b061526323ee0da268663b
|
4
|
+
data.tar.gz: 9e50cfbc67ab2a7ad2be57cc08de07d962555de601f760a1737f99100fb20608
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d43bd8d3c8c0f58404798658c83e7b5349776b123dd1f3be9f9b380a8124ee510fce6d36ffbc634f33cdd0f4c5f7a4be2002a6c1225869e5289ab9f1c9c65183
|
7
|
+
data.tar.gz: a26a44f9bc7ba5b824d9f145662675935cf329f8cb98cfd076f217b18b1e2a557aff6df08b8bc03dc3c84f1d0b90330eb26c211569a3d99d3836bb765b4e5fe2
|
@@ -0,0 +1,18 @@
|
|
1
|
+
(function () {
|
2
|
+
/* global LUX, performance */
|
3
|
+
if (typeof LUX === 'undefined') { return }
|
4
|
+
|
5
|
+
const navigationPerformance = performance.getEntriesByType('navigation')[0]
|
6
|
+
if (!navigationPerformance) { return }
|
7
|
+
|
8
|
+
// As per RFC 147[1], this adds in monitoring of the type of HTTP protocol that
|
9
|
+
// is used when a browser loads a page.
|
10
|
+
// [1]: https://github.com/alphagov/govuk-rfcs/pull/148
|
11
|
+
LUX.addData('http-protocol', navigationPerformance.nextHopProtocol)
|
12
|
+
|
13
|
+
const serverTiming = navigationPerformance.serverTiming
|
14
|
+
if (serverTiming) {
|
15
|
+
const cacheState = serverTiming.find(entry => ['cacheHit', 'cacheMiss'].includes(entry.name))
|
16
|
+
if (cacheState) { LUX.addData('cache', cacheState.name) }
|
17
|
+
}
|
18
|
+
}())
|
@@ -157,40 +157,3 @@ if (
|
|
157
157
|
LongTaskObserver.observe({ type: ["longtask"] });
|
158
158
|
} catch (e) {}
|
159
159
|
}
|
160
|
-
|
161
|
-
// As per RFC 147[1], this adds in monitoring of the type of HTTP protocol that
|
162
|
-
// is used when a browser loads a page.
|
163
|
-
//
|
164
|
-
// The User Timing API (aka window.performance) is used to record the data - to
|
165
|
-
// avoid the use of this from breaking the JavaScript for the small number of
|
166
|
-
// browsers that don't support it, it's been wrapped in a try/catch block plus a
|
167
|
-
// couple of checks to prevent "is not defined" errors.
|
168
|
-
//
|
169
|
-
// Because the `nextHopProtocol` isn't immediately available - it seems to need
|
170
|
-
// a request to be made before it's populated - we need to wait for the
|
171
|
-
// `DOMContentReady` event before we can see what the HTTP version is.
|
172
|
-
//
|
173
|
-
// [1]: https://github.com/alphagov/govuk-rfcs/pull/148
|
174
|
-
|
175
|
-
var measureHTTPProtocol = function () {
|
176
|
-
var getEntriesByType = performance.getEntriesByType('navigation')
|
177
|
-
|
178
|
-
if (typeof getEntriesByType !== 'undefined' && getEntriesByType.length > 0) {
|
179
|
-
var httpProtocol = getEntriesByType[0].nextHopProtocol
|
180
|
-
LUX.addData("http-protocol", httpProtocol)
|
181
|
-
}
|
182
|
-
}
|
183
|
-
|
184
|
-
try {
|
185
|
-
if (typeof performance !== 'undefined' && typeof performance.getEntriesByType !== 'undefined') {
|
186
|
-
if (document.readyState === 'complete') {
|
187
|
-
measureHTTPProtocol()
|
188
|
-
} else {
|
189
|
-
window.addEventListener('load', function() {
|
190
|
-
measureHTTPProtocol()
|
191
|
-
})
|
192
|
-
}
|
193
|
-
}
|
194
|
-
} catch (e) {
|
195
|
-
console.error('Error in LUX reporting the HTTP protocol (%s):', window.location, e)
|
196
|
-
}
|
@@ -9,15 +9,10 @@
|
|
9
9
|
hide ||= false
|
10
10
|
new_tab ||= false
|
11
11
|
|
12
|
-
data_attributes = {}
|
13
12
|
suggestion_data_attributes = {}
|
14
13
|
dismiss_data_attributes = {}
|
15
14
|
dismiss_link_data_attributes = {}
|
16
|
-
data_attributes[:module] = "intervention"
|
17
|
-
data_attributes["intervention-name"] = name
|
18
15
|
|
19
|
-
aria_attributes ||= {}
|
20
|
-
aria_attributes[:label] = 'Intervention'
|
21
16
|
|
22
17
|
options = {
|
23
18
|
name: name,
|
@@ -35,7 +30,6 @@
|
|
35
30
|
disable_ga4 ||= false
|
36
31
|
suggestion_data_attributes[:module] = "#{suggestion_data_attributes[:module]} ga4-link-tracker".strip unless disable_ga4
|
37
32
|
suggestion_data_attributes[:ga4_link] = { event_name: "navigation", type: "intervention", section: suggestion_text, index_link: 1, index_total: 1 }.to_json unless disable_ga4
|
38
|
-
data_attributes[:ga4_intervention_banner] = "" unless disable_ga4 # Added to the parent element for the GA4 pageview object to use
|
39
33
|
|
40
34
|
suggestion_tag_options = {
|
41
35
|
class: "govuk-link gem-c-force-print-link-styles",
|
@@ -52,18 +46,20 @@
|
|
52
46
|
suggestion_link_text = intervention_helper.accessible_text
|
53
47
|
end
|
54
48
|
|
55
|
-
section_options = {
|
56
|
-
class: "gem-c-intervention",
|
57
|
-
role: "region", aria: aria_attributes,
|
58
|
-
data: data_attributes,
|
59
|
-
}
|
60
|
-
section_options.merge!({ hidden: true }) if hide
|
61
|
-
|
62
49
|
dismiss_link_data_attributes[:module] = "#{dismiss_link_data_attributes[:module]} ga4-event-tracker".strip unless disable_ga4
|
63
50
|
dismiss_link_data_attributes[:ga4_event] = { event_name: "select_content", type: "intervention", section: suggestion_text, action: 'closed' }.to_json unless disable_ga4
|
51
|
+
|
52
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
53
|
+
component_helper.add_class("gem-c-intervention")
|
54
|
+
component_helper.add_role("region")
|
55
|
+
component_helper.add_aria_attribute({ label: "Intervention"})
|
56
|
+
component_helper.add_data_attribute({ module: "intervention", intervention_name: name })
|
57
|
+
component_helper.add_data_attribute({ ga4_intervention_banner: "" }) unless disable_ga4 # Added to the parent element for the GA4 pageview object to use
|
58
|
+
component_helper.set_hidden("hidden") if hide
|
59
|
+
|
64
60
|
%>
|
65
61
|
<% if intervention_helper.show? %>
|
66
|
-
<%= tag.section
|
62
|
+
<%= tag.section(**component_helper.all_attributes) do %>
|
67
63
|
<p class="govuk-body">
|
68
64
|
<%= tag.span suggestion_text, class: "gem-c-intervention__textwrapper" if suggestion_text %>
|
69
65
|
<% if suggestion_link_text && suggestion_link_url %>
|
@@ -65,6 +65,7 @@
|
|
65
65
|
<title><%= title %></title>
|
66
66
|
|
67
67
|
<%= javascript_include_tag "govuk_publishing_components/vendor/lux/lux-measurer", { async: true } %>
|
68
|
+
<%= javascript_include_tag "govuk_publishing_components/rum-custom-data", type: "module" %>
|
68
69
|
<%= javascript_include_tag "govuk_publishing_components/rum-loader",
|
69
70
|
{
|
70
71
|
async: true,
|
data/app/views/govuk_publishing_components/components/_layout_super_navigation_header.html.erb
CHANGED
@@ -35,9 +35,6 @@
|
|
35
35
|
search_toggle_button_classes << "gem-c-layout-super-navigation-header__search-toggle-button--blue-background" if blue_background
|
36
36
|
search_toggle_button_classes << "gem-c-layout-super-navigation-header__search-toggle-button--large-navbar" if large_navbar
|
37
37
|
|
38
|
-
layout_super_navigation_header_classes = %w(gem-c-layout-super-navigation-header)
|
39
|
-
layout_super_navigation_header_classes << "gem-c-layout-super-navigation-header--blue-background" if blue_background
|
40
|
-
|
41
38
|
item_link_classes = %w(gem-c-layout-super-navigation-header__navigation-item-link)
|
42
39
|
item_link_classes << "gem-c-layout-super-navigation-header__navigation-item-link--blue-background" if blue_background
|
43
40
|
item_link_classes << "gem-c-layout-super-navigation-header__navigation-item-link--large-navbar" if large_navbar
|
@@ -64,16 +61,14 @@
|
|
64
61
|
dropdown_menu_classes << "gem-c-layout-super-navigation-header__navigation-dropdown-menu--large-navbar" if large_navbar
|
65
62
|
|
66
63
|
absolute_links_helper = GovukPublishingComponents::Presenters::AbsoluteLinksHelper.new()
|
64
|
+
|
65
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
66
|
+
component_helper.add_class("gem-c-layout-super-navigation-header")
|
67
|
+
component_helper.add_class("gem-c-layout-super-navigation-header--blue-background") if blue_background
|
68
|
+
component_helper.add_role("banner")
|
69
|
+
component_helper.add_data_attribute({ module: "ga4-event-tracker ga4-link-tracker", ga4_expandable: "" })
|
67
70
|
%>
|
68
|
-
<%=
|
69
|
-
{
|
70
|
-
role: "banner",
|
71
|
-
class: layout_super_navigation_header_classes,
|
72
|
-
data: {
|
73
|
-
module: "ga4-event-tracker ga4-link-tracker",
|
74
|
-
"ga4-expandable": '',
|
75
|
-
}
|
76
|
-
}) do %>
|
71
|
+
<%= tag.header(**component_helper.all_attributes) do %>
|
77
72
|
<div class="gem-c-layout-super-navigation-header__container govuk-clearfix">
|
78
73
|
<div class="govuk-width-container">
|
79
74
|
<%= content_tag(:div, {
|
@@ -317,7 +312,7 @@
|
|
317
312
|
label: "Site-wide",
|
318
313
|
}
|
319
314
|
) do %>
|
320
|
-
|
315
|
+
<%= render "govuk_publishing_components/components/search_with_autocomplete", {
|
321
316
|
name: "keywords",
|
322
317
|
inline_label: false,
|
323
318
|
label_size: "m",
|
@@ -326,15 +321,9 @@
|
|
326
321
|
size: "large",
|
327
322
|
margin_bottom: 0,
|
328
323
|
disable_corrections: true,
|
324
|
+
source_url: [Plek.new.website_root, "/api/search/autocomplete.json"].join,
|
325
|
+
source_key: "suggestions",
|
329
326
|
} %>
|
330
|
-
<% if ENV["GOVUK_DISABLE_SEARCH_AUTOCOMPLETE"] %>
|
331
|
-
<%= render "govuk_publishing_components/components/search", search_options %>
|
332
|
-
<% else %>
|
333
|
-
<%= render "govuk_publishing_components/components/search_with_autocomplete", search_options.merge({
|
334
|
-
source_url: [Plek.new.website_root, "/api/search/autocomplete.json"].join,
|
335
|
-
source_key: "suggestions",
|
336
|
-
}) %>
|
337
|
-
<% end %>
|
338
327
|
<% end %>
|
339
328
|
</div>
|
340
329
|
</div>
|
@@ -1,20 +1,14 @@
|
|
1
1
|
<%
|
2
|
-
aria_label ||= nil
|
3
2
|
extra_spacing ||= nil
|
4
|
-
id ||= nil
|
5
3
|
items ||= []
|
6
4
|
list_type ||= "unordered"
|
7
5
|
visible_counters ||= nil
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
classes << "govuk-list--spaced" if extra_spacing
|
15
|
-
# Setting the `margin_bottom` to 4 is the same as the default margin - so we
|
16
|
-
# can omit the override class. To do this we leave out `4` from the array:
|
17
|
-
classes << shared_helper.get_margin_bottom if [0,1,2,3,5,6,7,8,9].include?(local_assigns[:margin_bottom])
|
7
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
8
|
+
component_helper.add_class("gem-c-list govuk-list")
|
9
|
+
component_helper.add_class("govuk-list--bullet") if visible_counters and list_type === "unordered"
|
10
|
+
component_helper.add_class("govuk-list--number") if visible_counters and list_type === "number"
|
11
|
+
component_helper.add_class("govuk-list--spaced") if extra_spacing
|
18
12
|
|
19
13
|
# Default list type is unordered list.
|
20
14
|
list_tag = "ul"
|
@@ -23,7 +17,7 @@
|
|
23
17
|
list_tag = "ol" if list_type === "number"
|
24
18
|
%>
|
25
19
|
<% if items.any? %>
|
26
|
-
<%= content_tag list_tag,
|
20
|
+
<%= content_tag list_tag, **component_helper.all_attributes do %>
|
27
21
|
<% items.each do |item| %>
|
28
22
|
<li><%= raw(item) %></li>
|
29
23
|
<% end %>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
aria_controls ||= nil
|
8
8
|
button_text ||= t("components.search_box.search_button")
|
9
9
|
correction_value = "off" if local_assigns[:disable_corrections]
|
10
|
-
|
10
|
+
label_id ||= "search-main-" + SecureRandom.hex(4)
|
11
11
|
wrap_label_in_a_heading ||= false
|
12
12
|
label_margin_bottom ||= nil
|
13
13
|
label_size ||= nil
|
@@ -19,21 +19,17 @@
|
|
19
19
|
size ||= ""
|
20
20
|
value ||= ""
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
else
|
34
|
-
classes << "gem-c-search--on-white"
|
35
|
-
end
|
36
|
-
classes << "gem-c-search--separate-label" if local_assigns.include?(:inline_label) or local_assigns.include?(:label_size)
|
22
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
23
|
+
component_helper.add_data_attribute({ module: "gem-toggle-input-class-on-focus" })
|
24
|
+
component_helper.add_class("gem-c-search govuk-!-display-none-print")
|
25
|
+
component_helper.add_class(shared_helper.get_margin_top)
|
26
|
+
component_helper.add_class("gem-c-search--large") if size == "large"
|
27
|
+
component_helper.add_class("gem-c-search--large-on-mobile") if size == "large-mobile"
|
28
|
+
component_helper.add_class("gem-c-search--homepage") if homepage
|
29
|
+
component_helper.add_class("gem-c-search--no-border") if no_border
|
30
|
+
component_helper.add_class("gem-c-search--on-govuk-blue") if local_assigns[:on_govuk_blue].eql?(true)
|
31
|
+
component_helper.add_class("gem-c-search--on-white") unless local_assigns[:on_govuk_blue].eql?(true)
|
32
|
+
component_helper.add_class("gem-c-search--separate-label") if local_assigns.include?(:inline_label) or local_assigns.include?(:label_size)
|
37
33
|
|
38
34
|
label_classes = []
|
39
35
|
if (shared_helper.valid_heading_size?(label_size))
|
@@ -46,12 +42,12 @@
|
|
46
42
|
label_classes << label_custom_class if label_custom_class
|
47
43
|
|
48
44
|
tag_label = capture do
|
49
|
-
tag.label(for:
|
45
|
+
tag.label(for: label_id, class: label_classes) do
|
50
46
|
label_text
|
51
47
|
end
|
52
48
|
end
|
53
49
|
%>
|
54
|
-
|
50
|
+
<%= tag.div(**component_helper.all_attributes) do %>
|
55
51
|
<% if wrap_label_in_a_heading %>
|
56
52
|
<%= content_tag(shared_helper.get_heading_level, class: "govuk-!-margin-0") do %>
|
57
53
|
<%= tag_label %>
|
@@ -67,7 +63,7 @@
|
|
67
63
|
},
|
68
64
|
enterkeyhint: "search",
|
69
65
|
class: "gem-c-search__item gem-c-search__input js-class-toggle",
|
70
|
-
id:
|
66
|
+
id: label_id,
|
71
67
|
name: name,
|
72
68
|
title: t("components.search_box.input_title"),
|
73
69
|
type: "search",
|
@@ -77,10 +73,10 @@
|
|
77
73
|
) %>
|
78
74
|
</div>
|
79
75
|
<div class="gem-c-search__item gem-c-search__submit-wrapper">
|
80
|
-
<%= tag.button class: "gem-c-search__submit", type: "submit",
|
76
|
+
<%= tag.button class: "gem-c-search__submit", type: "submit", enterkeyhint: "search" do %>
|
81
77
|
<%= button_text %>
|
82
78
|
<%= render "govuk_publishing_components/components/search/search_icon" %>
|
83
79
|
<% end %>
|
84
80
|
</div>
|
85
81
|
</div>
|
86
|
-
|
82
|
+
<% end %>
|
@@ -5,17 +5,11 @@
|
|
5
5
|
brand_helper = GovukPublishingComponents::AppHelpers::BrandHelper.new(brand)
|
6
6
|
|
7
7
|
sl_helper = GovukPublishingComponents::Presenters::SubscriptionLinksHelper.new(local_assigns)
|
8
|
-
shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns)
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
css_classes << shared_helper.get_margin_bottom unless local_assigns[:margin_bottom] == 0
|
15
|
-
css_classes << brand_helper.brand_class
|
16
|
-
css_classes << "gem-c-subscription-links--with-feed-box" if sl_helper.feed_link_box_value
|
17
|
-
|
18
|
-
data = {"module": "gem-toggle"} if sl_helper.feed_link_box_value
|
9
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
10
|
+
component_helper.add_class("gem-c-subscription-links govuk-!-display-none-print #{brand_helper.brand_class}")
|
11
|
+
component_helper.add_class("gem-c-subscription-links--with-feed-box") if sl_helper.feed_link_box_value
|
12
|
+
component_helper.add_data_attribute({ module: "gem-toggle" }) if sl_helper.feed_link_box_value
|
19
13
|
|
20
14
|
hide_heading ||= false
|
21
15
|
|
@@ -23,7 +17,7 @@
|
|
23
17
|
feed_link_text_locale = local_assigns[:feed_link_text_locale].presence
|
24
18
|
%>
|
25
19
|
<% if sl_helper.component_data_is_valid? %>
|
26
|
-
<%= tag.section
|
20
|
+
<%= tag.section(**component_helper.all_attributes) do %>
|
27
21
|
<% unless hide_heading %>
|
28
22
|
<h2 class="gem-c-subscription-links__hidden-header visuallyhidden"><%= t("components.subscription_links.subscriptions") %></h2>
|
29
23
|
<% end %>
|
@@ -3,20 +3,16 @@
|
|
3
3
|
|
4
4
|
description ||= nil
|
5
5
|
title_id ||= "govuk-notification-banner-title-#{SecureRandom.hex(4)}"
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
|
7
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
8
|
+
component_helper.add_class("gem-c-success-alert govuk-notification-banner govuk-notification-banner--success")
|
9
|
+
component_helper.add_role("alert")
|
10
|
+
component_helper.set_tabindex(-1)
|
11
|
+
component_helper.add_aria_attribute({ labelledby: title_id })
|
12
|
+
component_helper.add_data_attribute({ module: "initial-focus" })
|
9
13
|
%>
|
10
14
|
|
11
|
-
<%= tag.div
|
12
|
-
role: "alert",
|
13
|
-
tabindex: "-1",
|
14
|
-
aria: {
|
15
|
-
labelledby: title_id,
|
16
|
-
},
|
17
|
-
data: {
|
18
|
-
module: "initial-focus",
|
19
|
-
} do %>
|
15
|
+
<%= tag.div(**component_helper.all_attributes) do %>
|
20
16
|
<div class="govuk-notification-banner__header">
|
21
17
|
<%= tag.h2 t("components.success_alert.success"), class: "govuk-notification-banner__title", id: title_id %>
|
22
18
|
</div>
|
@@ -3,12 +3,14 @@
|
|
3
3
|
|
4
4
|
id ||= nil
|
5
5
|
title ||= nil
|
6
|
-
data_attributes ||= {}
|
7
6
|
summary_card_actions ||= []
|
8
7
|
rows ||=[]
|
8
|
+
|
9
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
10
|
+
component_helper.add_class("gem-c-summary-card")
|
9
11
|
%>
|
10
12
|
<% if title || rows.any? %>
|
11
|
-
<%= tag.div
|
13
|
+
<%= tag.div(**component_helper.all_attributes) do %>
|
12
14
|
<%= tag.div class: "govuk-summary-card" do %>
|
13
15
|
<%= tag.div class: "govuk-summary-card__title-wrapper" do %>
|
14
16
|
<%= tag.h2 class: "govuk-summary-card__title" do %>
|
@@ -5,7 +5,6 @@
|
|
5
5
|
shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns)
|
6
6
|
heading_size = "m" unless shared_helper.valid_heading_size?(heading_size)
|
7
7
|
|
8
|
-
id ||= nil
|
9
8
|
title ||= nil
|
10
9
|
borderless ||= false
|
11
10
|
edit ||= {}
|
@@ -13,9 +12,14 @@
|
|
13
12
|
items ||= []
|
14
13
|
block ||= yield
|
15
14
|
wide_title ||= false
|
15
|
+
|
16
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
17
|
+
component_helper.add_class("gem-c-summary-list")
|
18
|
+
component_helper.add_class("govuk-summary-list--no-border") if borderless
|
19
|
+
component_helper.add_class("gem-c-summary-list--wide-title") if wide_title
|
16
20
|
%>
|
17
21
|
<% if title || items.any? %>
|
18
|
-
<%= tag.div
|
22
|
+
<%= tag.div(**component_helper.all_attributes) do %>
|
19
23
|
<% if title %>
|
20
24
|
<%= content_tag(shared_helper.get_heading_level, title, class: "govuk-heading-#{heading_size} gem-c-summary-list__group-title") %>
|
21
25
|
|
@@ -4,12 +4,14 @@
|
|
4
4
|
brand ||= false
|
5
5
|
brand_helper = GovukPublishingComponents::AppHelpers::BrandHelper.new(brand)
|
6
6
|
translation_helper = GovukPublishingComponents::Presenters::TranslationNavHelper.new(local_assigns)
|
7
|
+
|
8
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
9
|
+
component_helper.add_role("navigation")
|
10
|
+
component_helper.add_class("gem-c-translation-nav govuk-!-display-none-print #{translation_helper.classes} #{brand_helper.brand_class}")
|
11
|
+
component_helper.add_aria_attribute({ label: t("common.translations") })
|
7
12
|
%>
|
8
13
|
<% if translation_helper.has_translations? %>
|
9
|
-
|
10
|
-
class="gem-c-translation-nav govuk-!-display-none-print <%= translation_helper.classes %> <%= brand_helper.brand_class %>"
|
11
|
-
aria-label="<%= t("common.translations") %>"
|
12
|
-
>
|
14
|
+
<%= tag.nav(**component_helper.all_attributes) do %>
|
13
15
|
<ul class="gem-c-translation-nav__list">
|
14
16
|
<% translation_helper.translations.each.with_index do |translation, i| %>
|
15
17
|
<li class="gem-c-translation-nav__list-item">
|
@@ -27,5 +29,5 @@
|
|
27
29
|
</li>
|
28
30
|
<% end %>
|
29
31
|
</ul>
|
30
|
-
|
32
|
+
<% end %>
|
31
33
|
<% end %>
|
@@ -14,9 +14,13 @@
|
|
14
14
|
text_classes << "gem-c-warning-text__text--no-indent" if text_icon.empty?
|
15
15
|
text_classes << "gem-c-warning-text__text--large" if large_font
|
16
16
|
text_classes << "gem-c-warning-text__text--highlight" if highlight_text
|
17
|
+
|
18
|
+
component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
|
19
|
+
component_helper.set_id(id)
|
20
|
+
component_helper.add_class("gem-c-warning-text govuk-warning-text")
|
17
21
|
%>
|
18
22
|
|
19
|
-
<%= tag.div
|
23
|
+
<%= tag.div(**component_helper.all_attributes) do %>
|
20
24
|
<% unless text_icon.empty? %>
|
21
25
|
<%= tag.span text_icon, class: "govuk-warning-text__icon", "aria-hidden": "true" %>
|
22
26
|
<% end %>
|
@@ -72,7 +72,7 @@ examples:
|
|
72
72
|
northern_ireland:
|
73
73
|
applicable: false
|
74
74
|
alternative_url: /
|
75
|
-
|
75
|
+
content_type: consultation
|
76
76
|
applies_to_one_nation_individual_guidance_available:
|
77
77
|
description: Specify alternative type for the content e.g. Guidance
|
78
78
|
data:
|
@@ -82,7 +82,7 @@ examples:
|
|
82
82
|
northern_ireland:
|
83
83
|
applicable: false
|
84
84
|
alternative_url: /
|
85
|
-
|
85
|
+
content_type: detailed_guide
|
86
86
|
specific_heading level:
|
87
87
|
description: Use a different heading level for the main link title. Defaults to `h2` if not passed.
|
88
88
|
data:
|
@@ -104,5 +104,5 @@ examples:
|
|
104
104
|
northern_ireland:
|
105
105
|
applicable: false
|
106
106
|
alternative_url: /
|
107
|
-
|
107
|
+
content_type: detailed_guide
|
108
108
|
disable_ga4: true
|
@@ -842,12 +842,6 @@ examples:
|
|
842
842
|
The water in the mouth of a blue whale weighs more than its body.
|
843
843
|
</p>
|
844
844
|
</div>
|
845
|
-
advisory:
|
846
|
-
data:
|
847
|
-
block: |
|
848
|
-
<h3 role="note" aria-label="Important" class="advisory">
|
849
|
-
<span>This is a very important message or warning</span>
|
850
|
-
</h3>
|
851
845
|
form_download:
|
852
846
|
data:
|
853
847
|
block: |
|
@@ -5,6 +5,7 @@ body: |
|
|
5
5
|
|
6
6
|
The `items` parameter can include HTML to display - such as links or another
|
7
7
|
list. This HTML can either be directly coded or come from another component.
|
8
|
+
uses_component_wrapper_helper: true
|
8
9
|
accessibility_criteria: |
|
9
10
|
The list must:
|
10
11
|
|
@@ -31,7 +32,8 @@ examples:
|
|
31
32
|
unordered_list_with_aria-label:
|
32
33
|
description: "A list with an aria-label"
|
33
34
|
data:
|
34
|
-
|
35
|
+
aria:
|
36
|
+
label: "A list of delicious chocolate bars."
|
35
37
|
<<: *default-example-data
|
36
38
|
unordered_list_with_bullet_points:
|
37
39
|
description: "An unordered list with visible bullet points."
|
@@ -12,7 +12,7 @@ accessibility_criteria: |
|
|
12
12
|
|
13
13
|
- be used inside a form with the role of 'search', to indicate it as a [search landmark](https://www.w3.org/TR/wai-aria-practices-1.1/#aria_lh_search)
|
14
14
|
- have a clear label to identify the search functionality, which is visible to all users
|
15
|
-
|
15
|
+
uses_component_wrapper_helper: true
|
16
16
|
examples:
|
17
17
|
default:
|
18
18
|
data: {}
|
@@ -49,7 +49,7 @@ examples:
|
|
49
49
|
label_text: "Search"
|
50
50
|
set_id_for_search_input:
|
51
51
|
data:
|
52
|
-
|
52
|
+
label_id: "my_unique_id"
|
53
53
|
large_version:
|
54
54
|
data:
|
55
55
|
size: "large"
|
@@ -5,6 +5,7 @@ govuk_frontend_components:
|
|
5
5
|
- warning-text
|
6
6
|
accessibility_criteria: |
|
7
7
|
All text must have a contrast ratio higher than 4.5:1 against the background colour to meet [WCAG AA](https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast)
|
8
|
+
uses_component_wrapper_helper: true
|
8
9
|
examples:
|
9
10
|
default:
|
10
11
|
data:
|
@@ -21,7 +21,7 @@
|
|
21
21
|
>
|
22
22
|
<%= render "govuk_publishing_components/components/search", {
|
23
23
|
button_text: t("components.layout_header.search_button"),
|
24
|
-
|
24
|
+
label_id: "site-search-text",
|
25
25
|
margin_bottom: 0,
|
26
26
|
no_border: true,
|
27
27
|
disable_corrections: true,
|
@@ -14,6 +14,7 @@ module GovukPublishingComponents
|
|
14
14
|
check_hidden_is_valid(@options[:hidden]) if @options.include?(:hidden)
|
15
15
|
check_tabindex_is_valid(@options[:tabindex]) if @options.include?(:tabindex)
|
16
16
|
check_dir_is_valid(@options[:dir]) if @options.include?(:dir)
|
17
|
+
check_type_is_valid(@options[:type]) if @options.include?(:type)
|
17
18
|
check_margin_bottom_is_valid(@options[:margin_bottom]) if @options.include?(:margin_bottom)
|
18
19
|
end
|
19
20
|
|
@@ -33,6 +34,7 @@ module GovukPublishingComponents
|
|
33
34
|
attributes[:hidden] = @options[:hidden] unless @options[:hidden].nil?
|
34
35
|
attributes[:tabindex] = @options[:tabindex] unless @options[:tabindex].blank?
|
35
36
|
attributes[:dir] = @options[:dir] unless @options[:dir].blank?
|
37
|
+
attributes[:type] = @options[:type] unless @options[:type].blank?
|
36
38
|
|
37
39
|
attributes
|
38
40
|
end
|
@@ -87,6 +89,11 @@ module GovukPublishingComponents
|
|
87
89
|
@options[:dir] = dir_attribute
|
88
90
|
end
|
89
91
|
|
92
|
+
def set_type(type_attribute)
|
93
|
+
check_type_is_valid(type_attribute)
|
94
|
+
@options[:type] = type_attribute
|
95
|
+
end
|
96
|
+
|
90
97
|
def set_margin_bottom(margin_bottom)
|
91
98
|
check_margin_bottom_is_valid(margin_bottom)
|
92
99
|
@options[:margin_bottom] = margin_bottom
|
@@ -192,6 +199,15 @@ module GovukPublishingComponents
|
|
192
199
|
end
|
193
200
|
end
|
194
201
|
|
202
|
+
def check_type_is_valid(type_attribute)
|
203
|
+
return if type_attribute.nil?
|
204
|
+
|
205
|
+
options = %w[button checkbox color date datetime-local email file hidden image month number password radio range reset search submit tel text time url week]
|
206
|
+
unless options.include? type_attribute
|
207
|
+
raise(ArgumentError, "type attribute (#{type_attribute}) is not recognised")
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
195
211
|
def extend_string(option, string)
|
196
212
|
((@options[option] ||= "") << " #{string}").strip!
|
197
213
|
end
|
@@ -1,11 +1,11 @@
|
|
1
1
|
module GovukPublishingComponents
|
2
2
|
module Presenters
|
3
3
|
class DevolvedNationsHelper
|
4
|
-
attr_reader :national_applicability, :
|
4
|
+
attr_reader :national_applicability, :content_type
|
5
5
|
|
6
6
|
def initialize(local_assigns)
|
7
7
|
@national_applicability = local_assigns[:national_applicability]
|
8
|
-
@
|
8
|
+
@content_type = local_assigns[:content_type] || "publication"
|
9
9
|
end
|
10
10
|
|
11
11
|
def applicable_nations_title_text(use_english_translation = nil)
|
@@ -42,8 +42,8 @@ module GovukPublishingComponents
|
|
42
42
|
def alternative_content_text(name)
|
43
43
|
nation = I18n.t("components.devolved_nations.#{name}")
|
44
44
|
|
45
|
-
if I18n.exists?("components.devolved_nations.type.#{@
|
46
|
-
I18n.t("components.devolved_nations.type.#{@
|
45
|
+
if I18n.exists?("components.devolved_nations.type.#{@content_type}")
|
46
|
+
I18n.t("components.devolved_nations.type.#{@content_type}", nation:)
|
47
47
|
else
|
48
48
|
I18n.t("components.devolved_nations.type.publication", nation:)
|
49
49
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: govuk_publishing_components
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 48.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- GOV.UK Dev
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-01-
|
10
|
+
date: 2025-01-13 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: govuk_app_config
|
@@ -505,6 +505,7 @@ files:
|
|
505
505
|
- app/assets/javascripts/govuk_publishing_components/lib/trigger-event.js
|
506
506
|
- app/assets/javascripts/govuk_publishing_components/load-analytics.js
|
507
507
|
- app/assets/javascripts/govuk_publishing_components/modules.js
|
508
|
+
- app/assets/javascripts/govuk_publishing_components/rum-custom-data.js
|
508
509
|
- app/assets/javascripts/govuk_publishing_components/rum-loader.js
|
509
510
|
- app/assets/javascripts/govuk_publishing_components/single-consent-functions.js
|
510
511
|
- app/assets/javascripts/govuk_publishing_components/vendor/lux/lux-measurer.js
|
@@ -593,7 +594,6 @@ files:
|
|
593
594
|
- app/assets/stylesheets/govuk_publishing_components/components/_title.scss
|
594
595
|
- app/assets/stylesheets/govuk_publishing_components/components/_translation-nav.scss
|
595
596
|
- app/assets/stylesheets/govuk_publishing_components/components/_warning-text.scss
|
596
|
-
- app/assets/stylesheets/govuk_publishing_components/components/govspeak/_advisory.scss
|
597
597
|
- app/assets/stylesheets/govuk_publishing_components/components/govspeak/_attachment.scss
|
598
598
|
- app/assets/stylesheets/govuk_publishing_components/components/govspeak/_button.scss
|
599
599
|
- app/assets/stylesheets/govuk_publishing_components/components/govspeak/_call-to-action.scss
|
@@ -1,36 +0,0 @@
|
|
1
|
-
$info-background: #d5e8f3;
|
2
|
-
$high-alert-border: #cc0000;
|
3
|
-
|
4
|
-
.govspeak, // Legacy class name that's still used in some content items - needs to be kept until `.govspeak` is removed from the content items.
|
5
|
-
.gem-c-govspeak {
|
6
|
-
.advisory {
|
7
|
-
background-image: url("govuk_publishing_components/icon-important.svg");
|
8
|
-
background-repeat: no-repeat;
|
9
|
-
background-size: 30px 30px;
|
10
|
-
background-position: 98% center;
|
11
|
-
background-color: $info-background;
|
12
|
-
line-height: 1.3em;
|
13
|
-
margin: 0 0 1em;
|
14
|
-
padding: govuk-spacing(3) govuk-spacing(8) govuk-spacing(3) govuk-spacing(3);
|
15
|
-
text-align: left;
|
16
|
-
|
17
|
-
p {
|
18
|
-
margin: 0 .75em 0 0;
|
19
|
-
min-height: 1.75em;
|
20
|
-
padding-right: 3em;
|
21
|
-
}
|
22
|
-
|
23
|
-
strong {
|
24
|
-
font-weight: 400;
|
25
|
-
}
|
26
|
-
|
27
|
-
&.high-alert {
|
28
|
-
background-color: govuk-colour("light-grey");
|
29
|
-
border: 1px solid $high-alert-border;
|
30
|
-
}
|
31
|
-
|
32
|
-
@include govuk-media-query($until: tablet) {
|
33
|
-
margin: 0 0 1em;
|
34
|
-
}
|
35
|
-
}
|
36
|
-
}
|