govuk_publishing_components 35.0.0 → 35.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 90043704d7994696d49541ef766ca866648e3594be347483450194425d229dc7
4
- data.tar.gz: 43f81d610ba1484584043399cd9b69219aaa010f00241dcb11fbffc24d6ea2de
3
+ metadata.gz: fd345b52485fb5fefdb529d929af976ca97fe31f8c9d73d5d8aa42868dbc55b0
4
+ data.tar.gz: 3a41640de2f4784004f724604bdc7dc1a9a9202f963e1304c2c4ae4d2db2dfa9
5
5
  SHA512:
6
- metadata.gz: a656046225d2491310ba439b342b639844dbdcdfcf908ace0d26a2db995c2aa4813a9273298591a595b2224a018167f17a3aea2ae67555b472f2ac75f7f26e5e
7
- data.tar.gz: 6f1110a0611153a5d1d494f7afc38523efb1db88949757756b11acfad77306408d12794be83753aed7bc618f10a30c6463e0719e8a7f4f24a67328a071d147c2
6
+ metadata.gz: 0cfddee718886b034fcef934d97479726c0cf74257c268a8671f8ce2d88de9715416021dff81cc948d0791b70a115ba9545e6bde329ccf0fccaac1530687c915
7
+ data.tar.gz: 561a511659dd0a07ca6d6b8432bdddff207770cc6a782d54ddd769dfbfd17c30583b9e2585688ad1decb645bd4390ae17d61e5e52b97fc33859ef801e9c73c4d
@@ -705,7 +705,7 @@ $after-button-padding-left: govuk-spacing(4);
705
705
  }
706
706
 
707
707
  @include govuk-media-query($from: "desktop") {
708
- @include columns($items: 17, $columns: 2, $selector: "li", $flow: column);
708
+ @include columns($items: 16, $columns: 2, $selector: "li", $flow: column);
709
709
  }
710
710
  }
711
711
 
@@ -148,7 +148,7 @@
148
148
 
149
149
  code {
150
150
  padding: 0 5px;
151
- color: govuk-colour("red");
151
+ color: #d13118;
152
152
  background-color: govuk-colour("light-grey");
153
153
  }
154
154
  }
@@ -9,12 +9,14 @@
9
9
  if items.empty? && !title
10
10
  raise ArgumentError, "The error_summary component needs at least one item or a title in order to render."
11
11
  end
12
+
13
+ component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns)
14
+ component_helper.set_id(id)
15
+ component_helper.add_class("gem-c-error-summary govuk-error-summary")
16
+ component_helper.add_data_attribute({ module: "govuk-error-summary" })
12
17
  %>
13
- <%= tag.div(
14
- class: "gem-c-error-summary govuk-error-summary",
15
- data: { module: "govuk-error-summary" }.merge(data_attributes),
16
- id: id,
17
- ) do %>
18
+
19
+ <%= tag.div(**component_helper.all_attributes) do %>
18
20
  <%= tag.div(
19
21
  role: "alert",
20
22
  ) do %>
@@ -6,15 +6,16 @@
6
6
  with_border ||= false
7
7
  classes = %w(gem-c-layout-footer govuk-footer)
8
8
  classes << "gem-c-layout-footer--border" if with_border
9
+ layout_footer_helper = GovukPublishingComponents::Presenters::LayoutFooterHelper.new(navigation, meta)
9
10
  %>
10
- <%= tag.footer class: classes, role: "contentinfo" do %>
11
+ <%= tag.footer class: classes, role: "contentinfo", 'data-module': "ga4-link-tracker" do %>
11
12
  <div class="govuk-width-container">
12
13
  <% if navigation.any? %>
13
14
  <div class="govuk-footer__navigation" data-module="gem-track-click" data-track-links-only>
14
- <% navigation.each do |item| %>
15
- <% if item[:items] %>
15
+ <% navigation.each_with_index do |section, ga4_section_index| %>
16
+ <% if section[:items] %>
16
17
  <%
17
- case item[:columns]
18
+ case section[:columns]
18
19
  when 2
19
20
  width_class = "govuk-grid-column-two-thirds"
20
21
  when 3
@@ -26,25 +27,29 @@
26
27
  # If the list has multiple columns and there is only one link.
27
28
  # This is to prevent a long link wrapping in a column, which
28
29
  # leaves an obvious blank space to the right.
29
- single_item_list = (( item[:columns] == 2 || item[:columns] == 3 ) && item[:items].length == 1 )
30
+ single_item_list = (( section[:columns] == 2 || section[:columns] == 3 ) && section[:items].length == 1 )
30
31
 
31
32
  list_classes = %w[govuk-footer__list]
32
- list_classes << "govuk-footer__list--columns-#{item[:columns]}" if item[:columns] unless single_item_list
33
+ list_classes << "govuk-footer__list--columns-#{section[:columns]}" if section[:columns] unless single_item_list
33
34
  %>
34
35
  <div class="<%= width_class %> govuk-!-display-none-print">
35
- <h2 class="govuk-footer__heading govuk-heading-m"><%= item[:title] %></h2>
36
+ <h2 class="govuk-footer__heading govuk-heading-m"><%= section[:title] %></h2>
36
37
  <ul class="<%= list_classes.join(' ') %>">
37
- <% item[:items].each do |item| %>
38
+ <% section[:items].each_with_index do |item, index| %>
38
39
  <% if item[:href] && item[:text] %>
39
40
  <li class="govuk-footer__list-item">
40
41
  <%
41
42
  attributes = {
42
43
  class: "govuk-footer__link",
43
44
  data: {
44
- "track-category": "footerClicked"
45
+ "track-category": "footerClicked",
45
46
  }
46
47
  }.merge(item.fetch(:attributes, {}))
47
48
  attributes[:rel] = "noopener" if attributes[:target] == "_blank" && !attributes[:rel]
49
+
50
+ unless attributes[:data][:ga4_link]
51
+ attributes[:data][:ga4_link] = layout_footer_helper.generate_ga4_link_attribute(index, ga4_section_index, section[:title])
52
+ end
48
53
  %>
49
54
  <%= link_to item[:text], item[:href], attributes %>
50
55
  </li>
@@ -63,11 +68,18 @@
63
68
  <% if meta.any? %>
64
69
  <h2 class="govuk-visually-hidden"><%= t("components.layout_footer.support_links") %></h2>
65
70
  <ul class="govuk-footer__inline-list govuk-!-display-none-print" data-module="gem-track-click" data-track-links-only>
66
- <% meta[:items].each do |item| %>
71
+ <% meta[:items].each_with_index do |item, index| %>
67
72
  <li class="govuk-footer__inline-list-item">
68
73
  <%
69
- attributes = { class: "govuk-footer__link" }.merge(item.fetch(:attributes, {}))
74
+ attributes = {
75
+ class: "govuk-footer__link",
76
+ }.merge(item.fetch(:attributes, {}))
77
+ attributes[:data] ||= {}
70
78
  attributes[:rel] = "noopener" if attributes[:target] == "_blank" && !attributes[:rel]
79
+
80
+ unless attributes[:data][:ga4_link]
81
+ attributes[:data][:ga4_link] = layout_footer_helper.generate_ga4_link_attribute(index, navigation.length, "Support links")
82
+ end
71
83
  %>
72
84
  <%= link_to item[:text], item[:href], attributes %>
73
85
  </li>
@@ -89,6 +101,19 @@
89
101
  data-track-label="https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/"
90
102
  data-track-options='{"dimension29": "Open Government Licence v3.0"}'
91
103
  data-track-links-only
104
+ data-ga4-track-links-only
105
+ data-ga4-link="<%= {
106
+ "event_name": "navigation",
107
+ "section": "Licence",
108
+ "index": {
109
+ "index_section": layout_footer_helper.ga4_ogl_link_index_section.to_s,
110
+ "index_link": "1",
111
+ "index_section_count": layout_footer_helper.ga4_index_section_count.to_s,
112
+ },
113
+ "text": "Open Government Licence v3.0",
114
+ "index_total": layout_footer_helper.ga4_index_total.to_s,
115
+ "type": "footer",
116
+ }.to_json %>"
92
117
  >
93
118
  <%= t("components.layout_footer.licence_html") %>
94
119
  </span>
@@ -102,6 +127,18 @@
102
127
  data-track-label="https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/"
103
128
  data-track-options='{"dimension29": "© Crown copyright"}'
104
129
  data-track-links-only
130
+ data-ga4-link="<%= {
131
+ "event_name": "navigation",
132
+ "section": "Copyright",
133
+ "index": {
134
+ "index_section": layout_footer_helper.ga4_copyright_link_index_section.to_s,
135
+ "index_link": "1",
136
+ "index_section_count": layout_footer_helper.ga4_index_section_count.to_s,
137
+ },
138
+ "text": "© Crown copyright",
139
+ "index_total": layout_footer_helper.ga4_index_total.to_s,
140
+ "type": "footer",
141
+ }.to_json %>"
105
142
  >
106
143
  <%= t("components.layout_footer.copyright_html") %>
107
144
  </div>
@@ -7,6 +7,7 @@ shared_accessibility_criteria:
7
7
  - link
8
8
  accessibility_excluded_rules:
9
9
  - skip-link # This component is creating references to to sections on the page that do not exist in examples
10
+ uses_component_wrapper_helper: true
10
11
  examples:
11
12
  default:
12
13
  data:
@@ -26,18 +27,6 @@ examples:
26
27
  - text: Descriptive link to the question with an error 2
27
28
  href: '#example-error-2'
28
29
  - text: Description of error without link
29
- with_data_attributes:
30
- description: |
31
- The example shown applies a tracking attribute specifically for use by Google Tag Manager in [Content Publisher](https://github.com/alphagov/content-publisher).
32
-
33
- Other data attributes can also be applied as required. Note that the component does not include built in tracking. If this is required consider using the [track click script](https://github.com/alphagov/govuk_publishing_components/blob/main/docs/analytics/track-click.md).
34
- data:
35
- title: Message to alert the user to a problem goes here
36
- description: Optional description of the errors and how to correct them
37
- data_attributes:
38
- tracking: GTM-123AB
39
- items:
40
- - text: Descriptive link to the question with an error 1
41
30
  with_custom_target_on_links:
42
31
  data:
43
32
  title: Message to alert the user to a problem goes here
@@ -102,8 +102,6 @@ en:
102
102
  href: "/browse/childcare-parenting"
103
103
  - text: Citizenship and living in the UK
104
104
  href: "/browse/citizenship"
105
- - text: Cost of living support
106
- href: "/cost-of-living"
107
105
  - text: Crime, justice and the law
108
106
  href: "/browse/justice"
109
107
  - text: Disabled people
@@ -185,8 +183,6 @@ en:
185
183
  href: "/browse/childcare-parenting"
186
184
  - label: Citizenship and living in the UK
187
185
  href: "/browse/citizenship"
188
- - label: Cost of living support
189
- href: "/cost-of-living"
190
186
  - label: Crime, justice and the law
191
187
  href: "/browse/justice"
192
188
  - label: Disabled people
@@ -0,0 +1,47 @@
1
+ module GovukPublishingComponents
2
+ module Presenters
3
+ class LayoutFooterHelper
4
+ attr_reader :ga4_index_total, :ga4_index_section_count, :ga4_ogl_link_index_section, :ga4_copyright_link_index_section
5
+
6
+ def initialize(footer_navigation_section, footer_meta_section)
7
+ @ga4_index_total = 0
8
+ @ga4_index_section_count = 0
9
+ @amount_of_meta_sections = 0
10
+
11
+ footer_navigation_section.each do |section|
12
+ @ga4_index_section_count += 1
13
+ if section[:items]
14
+ @ga4_index_total += section[:items].length
15
+ end
16
+ end
17
+
18
+ if footer_meta_section.any?
19
+ @amount_of_meta_sections = 1
20
+ @ga4_index_section_count += 1
21
+ @ga4_index_total += footer_meta_section[:items].length
22
+ end
23
+
24
+ # For our GOVUK footer links, we need to add 2 to the index_total and index_section_count. This is due to the "Open Government License" and "Crown Copyright" links being defined separately to the rest of our footer links.
25
+ @ga4_index_total += 2
26
+ @ga4_index_section_count += 2
27
+
28
+ @ga4_ogl_link_index_section = footer_navigation_section.length + @amount_of_meta_sections + 1
29
+ @ga4_copyright_link_index_section = footer_navigation_section.length + @amount_of_meta_sections + 2
30
+ end
31
+
32
+ def generate_ga4_link_attribute(index_link, index_section, section)
33
+ {
34
+ "event_name": "navigation",
35
+ "type": "footer",
36
+ "index": {
37
+ "index_link": (index_link + 1).to_s,
38
+ "index_section": (index_section + 1).to_s,
39
+ "index_section_count": @ga4_index_section_count.to_s,
40
+ },
41
+ "index-total": @ga4_index_total.to_s,
42
+ "section": section,
43
+ }
44
+ end
45
+ end
46
+ end
47
+ end
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = "35.0.0".freeze
2
+ VERSION = "35.1.0".freeze
3
3
  end
@@ -16,6 +16,7 @@ require "govuk_publishing_components/presenters/button_helper"
16
16
  require "govuk_publishing_components/presenters/contextual_navigation"
17
17
  require "govuk_publishing_components/presenters/devolved_nations_helper"
18
18
  require "govuk_publishing_components/presenters/emergency_banner_helper"
19
+ require "govuk_publishing_components/presenters/layout_footer_helper"
19
20
  require "govuk_publishing_components/presenters/related_navigation_helper"
20
21
  require "govuk_publishing_components/presenters/step_by_step_nav_helper"
21
22
  require "govuk_publishing_components/presenters/page_with_step_by_step_navigation"
@@ -43,8 +44,6 @@ require "govuk_publishing_components/app_helpers/brand_helper"
43
44
  require "govuk_publishing_components/app_helpers/environment"
44
45
  require "govuk_publishing_components/app_helpers/asset_helper"
45
46
 
46
- require "govuk_publishing_components/railtie" if defined?(Rails::Railtie)
47
-
48
47
  # Add i18n paths and views for usage outside of a Rails app
49
48
  I18n.load_path.unshift(
50
49
  *Dir.glob(File.expand_path("config/locales/*.yml", GovukPublishingComponents::Config.gem_directory)),
@@ -56,6 +55,10 @@ ActiveSupport.on_load(:action_controller) do
56
55
  )
57
56
  end
58
57
 
58
+ ActiveSupport.on_load(:action_view) do
59
+ include GovukPublishingComponents::AppHelpers::AssetHelper
60
+ end
61
+
59
62
  module GovukPublishingComponents
60
63
  def self.render(component, options = {})
61
64
  I18n.with_locale(options.fetch(:locale, "en")) do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_publishing_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 35.0.0
4
+ version: 35.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-15 00:00:00.000000000 Z
11
+ date: 2023-03-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_app_config
@@ -934,6 +934,7 @@ files:
934
934
  - lib/govuk_publishing_components/presenters/heading_helper.rb
935
935
  - lib/govuk_publishing_components/presenters/image_card_helper.rb
936
936
  - lib/govuk_publishing_components/presenters/intervention_helper.rb
937
+ - lib/govuk_publishing_components/presenters/layout_footer_helper.rb
937
938
  - lib/govuk_publishing_components/presenters/machine_readable/article_schema.rb
938
939
  - lib/govuk_publishing_components/presenters/machine_readable/creative_work_schema.rb
939
940
  - lib/govuk_publishing_components/presenters/machine_readable/dataset_schema.rb
@@ -960,7 +961,6 @@ files:
960
961
  - lib/govuk_publishing_components/presenters/step_by_step_nav_helper.rb
961
962
  - lib/govuk_publishing_components/presenters/subscription_links_helper.rb
962
963
  - lib/govuk_publishing_components/presenters/translation_nav_helper.rb
963
- - lib/govuk_publishing_components/railtie.rb
964
964
  - lib/govuk_publishing_components/version.rb
965
965
  - node_modules/axe-core/LICENSE
966
966
  - node_modules/axe-core/README.md
@@ -1415,7 +1415,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1415
1415
  - !ruby/object:Gem::Version
1416
1416
  version: '0'
1417
1417
  requirements: []
1418
- rubygems_version: 3.4.8
1418
+ rubygems_version: 3.4.9
1419
1419
  signing_key:
1420
1420
  specification_version: 4
1421
1421
  summary: A gem to document components in GOV.UK frontend applications
@@ -1,7 +0,0 @@
1
- module GovukPublishingComponents
2
- class Railtie < Rails::Railtie
3
- initializer "govuk_publishing_components.view_helpers" do
4
- ActiveSupport.on_load(:action_view) { include GovukPublishingComponents::AppHelpers::AssetHelper }
5
- end
6
- end
7
- end