govuk_publishing_components 35.3.4 → 35.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/component_guide/audit-filter.js +81 -0
  3. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-core.js +4 -0
  4. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-link-tracker.js +4 -3
  5. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/ga4-specialist-link-tracker.js +5 -1
  6. data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/init-ga4.js +1 -1
  7. data/app/assets/javascripts/govuk_publishing_components/components/step-by-step-nav.js +1 -1
  8. data/app/assets/javascripts/govuk_publishing_components/vendor/lux/lux-reporter.js +245 -176
  9. data/app/assets/stylesheets/component_guide/application.scss +16 -0
  10. data/app/assets/stylesheets/govuk_publishing_components/components/_layout-super-navigation-header.scss +0 -5
  11. data/app/assets/stylesheets/govuk_publishing_components/components/_search.scss +0 -12
  12. data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_attachment.scss +0 -11
  13. data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_brand-colours.scss +0 -24
  14. data/app/models/govuk_publishing_components/audit_applications.rb +14 -0
  15. data/app/models/govuk_publishing_components/audit_comparer.rb +14 -0
  16. data/app/models/govuk_publishing_components/audit_components.rb +34 -32
  17. data/app/views/govuk_publishing_components/audit/_applications.html.erb +40 -32
  18. data/app/views/govuk_publishing_components/audit/_component_contents.html.erb +56 -12
  19. data/app/views/govuk_publishing_components/audit/_components.html.erb +9 -7
  20. data/app/views/govuk_publishing_components/audit/show.html.erb +5 -1
  21. data/app/views/govuk_publishing_components/components/_hint.html.erb +5 -1
  22. data/app/views/govuk_publishing_components/components/_label.html.erb +6 -6
  23. data/app/views/govuk_publishing_components/components/_related_navigation.html.erb +3 -1
  24. data/app/views/govuk_publishing_components/components/docs/hint.yml +1 -1
  25. data/app/views/govuk_publishing_components/components/related_navigation/_section.html.erb +1 -1
  26. data/config/locales/en.yml +2 -2
  27. data/lib/generators/govuk_publishing_components/component_generator.rb +2 -2
  28. data/lib/govuk_publishing_components/presenters/related_navigation_helper.rb +8 -8
  29. data/lib/govuk_publishing_components/version.rb +1 -1
  30. data/node_modules/axe-core/README.md +1 -3
  31. data/node_modules/axe-core/axe.js +4385 -1157
  32. data/node_modules/axe-core/axe.min.js +2 -2
  33. data/node_modules/axe-core/locales/_template.json +12 -0
  34. data/node_modules/axe-core/package.json +2 -1
  35. data/node_modules/axe-core/sri-history.json +4 -0
  36. metadata +4 -3
@@ -537,3 +537,19 @@ $code-delete-bg: #fadddd;
537
537
  .component-doc__content-list {
538
538
  margin-top: govuk-spacing(5);
539
539
  }
540
+
541
+ .component__application-name {
542
+ display: block;
543
+ @include govuk-font($size: 16);
544
+ font-weight: normal;
545
+ }
546
+
547
+ .component__count {
548
+ &:before {
549
+ content: "(";
550
+ }
551
+
552
+ &:after {
553
+ content: ")";
554
+ }
555
+ }
@@ -532,10 +532,6 @@ $after-button-padding-left: govuk-spacing(4);
532
532
  margin: 0;
533
533
  padding: govuk-spacing(1) govuk-spacing(4);
534
534
 
535
- @include govuk-media-query($from: "desktop") {
536
- border-right: 0;
537
- }
538
-
539
535
  @include govuk-media-query($from: 360px) {
540
536
  &:before {
541
537
  @include chevron(govuk-colour("white"));
@@ -575,7 +571,6 @@ $after-button-padding-left: govuk-spacing(4);
575
571
  right: 0;
576
572
 
577
573
  @include focus-not-focus-visible {
578
- background: $govuk-brand-colour;
579
574
  border-bottom: 1px solid govuk-colour("dark-blue");
580
575
  border-left: none;
581
576
  position: relative;
@@ -62,12 +62,6 @@ $large-input-size: 50px;
62
62
  // Double the border by adding its width again. Use `box-shadow` for this // instead of changing `border-width`
63
63
  // Also, `outline` cannot be utilised here as it is already used for the yellow focus state.
64
64
  box-shadow: inset 0 0 0 $govuk-border-width-form-element;
65
-
66
- @include govuk-if-ie8 {
67
- // IE8 doesn't support `box-shadow` so double the border with
68
- // `border-width`.
69
- border-width: $govuk-border-width-form-element * 2;
70
- }
71
65
  }
72
66
 
73
67
  .gem-c-search__input[type="search"] { // overly specific to prevent some overrides from outside
@@ -136,12 +130,6 @@ $large-input-size: 50px;
136
130
  // Also, `outline` cannot be utilised
137
131
  // here as it is already used for the yellow focus state.
138
132
  box-shadow: inset 0 0 0 $govuk-border-width-form-element * 2 govuk-colour("black");
139
-
140
- @include govuk-if-ie8 {
141
- // IE8 doesn't support `box-shadow` so double the border with
142
- // `border-width`.
143
- border-width: $govuk-border-width-form-element * 2;
144
- }
145
133
  }
146
134
 
147
135
  &::-moz-focus-inner {
@@ -44,17 +44,6 @@
44
44
  height: 140px;
45
45
  background: govuk-colour("white");
46
46
  outline: $govuk-border-width solid transparentize(govuk-colour("black"), .9);
47
-
48
- @include govuk-if-ie8 {
49
- // IE8 incorrectly asserts the "max-width: 100%" rule to be 0
50
- // because of the collapsed width on its floating container
51
- // Reset the max-width so that thumbnails render at the specified
52
- // width above.
53
- // http://www.456bereastreet.com/archive/201202/using_max-width_on_images_can_make_them_disappear_in_ie8/
54
- max-width: none;
55
- border: $govuk-border-width solid govuk-colour("mid-grey", $legacy: "grey-3");
56
- }
57
-
58
47
  box-shadow: 0 2px 2px rgba(govuk-colour("black"), .4);
59
48
  }
60
49
 
@@ -96,27 +96,3 @@
96
96
  border-color: #045f71;
97
97
  }
98
98
  }
99
-
100
- // This change should be removed after relevant govuk-frontend release
101
-
102
- .brand--department-for-business-and-trade {
103
- .brand__color {
104
- color: #cf102d;
105
-
106
- &:link,
107
- &:visited,
108
- &:active {
109
- color: #cf102d;
110
- }
111
-
112
- &:hover,
113
- &:focus {
114
- color: $govuk-focus-text-colour;
115
- }
116
- }
117
-
118
- &.brand__border-color,
119
- .brand__border-color {
120
- border-color: #cf102d;
121
- }
122
- }
@@ -55,6 +55,19 @@ module GovukPublishingComponents
55
55
  components: components_in_ruby,
56
56
  },
57
57
  ]
58
+
59
+ # applications might not have all of these things for all components
60
+ options = {
61
+ application_name: name,
62
+ templates_path: "app/views/components",
63
+ stylesheets_path: "app/assets/stylesheets/components",
64
+ javascripts_path: "app/assets/javascripts/components/",
65
+ tests_path: "spec/components/",
66
+ javascript_tests_path: "spec/javascripts/components/",
67
+ helpers_path: "app/helpers/",
68
+ }
69
+ application_components = AuditComponents.new(path, options)
70
+ application_components = application_components.data if application_components
58
71
  end
59
72
 
60
73
  @data = {
@@ -66,6 +79,7 @@ module GovukPublishingComponents
66
79
  component_locations: @component_locations,
67
80
  helper_references: @helper_references,
68
81
  uses_individual_asset_model: @uses_individual_asset_model,
82
+ application_components: application_components || [],
69
83
  }
70
84
  end
71
85
 
@@ -23,6 +23,7 @@ module GovukPublishingComponents
23
23
  @applications_data = sort_results(results)
24
24
  @gem_data[:components_by_application] = get_components_by_application || []
25
25
  @gem_data[:helpers_used_by_applications] = get_helpers_used_by_applications || []
26
+ @gem_data[:component_file_details] = combine_all_component_file_details(@gem_data[:component_file_details], @applications_data)
26
27
  end
27
28
  end
28
29
 
@@ -102,6 +103,7 @@ module GovukPublishingComponents
102
103
  component_locations: result[:component_locations],
103
104
  helper_references: result[:helper_references],
104
105
  uses_individual_asset_model: result[:uses_individual_asset_model],
106
+ application_components: result[:application_components],
105
107
  }
106
108
  else
107
109
  data << {
@@ -314,5 +316,17 @@ module GovukPublishingComponents
314
316
 
315
317
  results
316
318
  end
319
+
320
+ def combine_all_component_file_details(gem_components, applications)
321
+ applications.each do |application|
322
+ next unless application[:application_components]
323
+
324
+ application[:application_components][:component_file_details].each do |component|
325
+ gem_components << component
326
+ end
327
+ end
328
+
329
+ gem_components.sort_by { |c| c[:name] }
330
+ end
317
331
  end
318
332
  end
@@ -2,16 +2,17 @@ module GovukPublishingComponents
2
2
  class AuditComponents
3
3
  attr_reader :data
4
4
 
5
- def initialize(path)
5
+ def initialize(path, options = {})
6
6
  # paths to key file locations
7
- @templates_path = "app/views/govuk_publishing_components/components"
8
- @stylesheets_path = "app/assets/stylesheets/govuk_publishing_components/components"
9
- @print_stylesheets_path = "app/assets/stylesheets/govuk_publishing_components/components/print"
10
- @javascripts_path = "app/assets/javascripts/govuk_publishing_components/components"
11
- @tests_path = "spec/components"
12
- @javascript_tests_path = "spec/javascripts/components"
13
- @helpers_path = "lib/govuk_publishing_components/presenters"
14
-
7
+ @templates_path = options[:templates_path] || "app/views/govuk_publishing_components/components"
8
+ @stylesheets_path = options[:stylesheets_path] || "app/assets/stylesheets/govuk_publishing_components/components"
9
+ @print_stylesheets_path = options[:print_stylesheets_path] || "app/assets/stylesheets/govuk_publishing_components/components/print"
10
+ @javascripts_path = options[:javascripts_path] || "app/assets/javascripts/govuk_publishing_components/components"
11
+ @tests_path = options[:tests_path] || "spec/components"
12
+ @javascript_tests_path = options[:javascript_tests_path] || "spec/javascripts/components"
13
+ @helpers_path = options[:helpers_path] || "lib/govuk_publishing_components/presenters"
14
+
15
+ @application_name = options[:application_name] || "govuk_publishing_components"
15
16
  @all_templates = Dir["#{path}/#{@templates_path}/*.erb"].sort
16
17
  @templates_full_path = "#{path}/#{@templates_path}/"
17
18
 
@@ -28,36 +29,36 @@ module GovukPublishingComponents
28
29
  @data = {
29
30
  gem_found: false,
30
31
  }
32
+ @auditing_an_application = true unless @application_name == "govuk_publishing_components"
31
33
  @data = compile_data(path) if Dir.exist?(path)
32
34
  end
33
35
 
34
36
  private
35
37
 
36
38
  def compile_data(path)
39
+ data = {}
40
+ data[:gem_found] = true unless @auditing_an_application
37
41
  component_file_details = get_component_file_details(path)
38
- helper_usage = get_helper_usage(component_file_details)
42
+ data[:helper_usage] = get_helper_usage(component_file_details) unless @auditing_an_application
39
43
 
40
44
  # remove the template file reference as not needed
41
45
  component_file_details.map { |detail| detail.delete(:template_file) }
42
46
 
43
- {
44
- gem_found: true,
45
- component_code: clean_files(@all_templates, @templates_full_path).sort,
46
- components_containing_components: find_all_partials_in(@all_templates),
47
- component_file_details: component_file_details,
48
- component_numbers: @component_numbers,
49
- helper_usage: helper_usage,
50
- }
47
+ data[:component_code] = clean_files(@all_templates, @templates_full_path).sort unless @auditing_an_application
48
+ data[:component_file_details] = component_file_details
49
+ data[:component_numbers] = @component_numbers
50
+ data[:components_containing_components] = find_all_partials_in(@all_templates) unless @auditing_an_application
51
+ data
51
52
  end
52
53
 
53
54
  def get_component_file_details(path)
54
55
  component_templates = clean_files(@all_templates, @templates_full_path).sort
55
56
  details = []
56
57
  component_templates.each do |component|
57
- component_detail = {
58
- name: component,
59
- link: get_component_link(component),
60
- }
58
+ component_detail = {}
59
+ component_detail[:name] = component
60
+ component_detail[:application] = @application_name
61
+ component_detail[:link] = get_component_link(component) unless @auditing_an_application
61
62
  file_details = [
62
63
  {
63
64
  type: "template",
@@ -102,10 +103,10 @@ module GovukPublishingComponents
102
103
  details = {}
103
104
  type = detail[:type]
104
105
  file = detail[:file]
105
- details["#{type}_exists".to_sym] = false
106
- # save the location of the template to later grep for helper use
107
- details["#{type}_file".to_sym] = file if type == "template"
108
106
  if File.file?(file)
107
+ details["#{type}_exists".to_sym] = false
108
+ # save the location of the template to later grep for helper use
109
+ details["#{type}_file".to_sym] = file if type == "template"
109
110
  # we don't have separate print stylesheets anymore
110
111
  # so check the main stylesheet for print styles
111
112
  if type == "print_stylesheet"
@@ -139,8 +140,8 @@ module GovukPublishingComponents
139
140
  .gsub(".scss", "")
140
141
  .gsub(".js", "")
141
142
  .gsub("spec", "")
143
+ .gsub("helper.rb", "")
142
144
  .gsub(".rb", "")
143
- .gsub("helper", "")
144
145
  .strip
145
146
  end
146
147
 
@@ -202,21 +203,22 @@ module GovukPublishingComponents
202
203
  def components_within_component(file)
203
204
  file = get_component_name_from_full_path(file)
204
205
  file = "#{@templates_full_path}#{file}.html.erb".sub(/.*\K\//, "/_")
205
- data = File.read(file)
206
- match = data.scan(/["']{1}(govuk_publishing_components\/components\/[\/a-z_-]+["']{1})/)
207
- match.flatten.uniq.map(&:to_s).sort.map do |m|
208
- m.gsub("govuk_publishing_components/components/", "").tr('\"\'', "")
206
+ if File.exist?(file)
207
+ data = File.read(file)
208
+ match = data.scan(/["']{1}(govuk_publishing_components\/components\/[\/a-z_-]+["']{1})/)
209
+ match.flatten.uniq.map(&:to_s).sort.map do |m|
210
+ m.gsub("govuk_publishing_components/components/", "").tr('\"\'', "")
211
+ end
209
212
  end
210
213
  end
211
214
 
212
215
  def get_asset_link(a_thing, component)
213
216
  url = "https://github.com/alphagov"
214
- repo = "govuk_publishing_components"
217
+ repo = @application_name
215
218
  blob = "blob/main"
216
219
  link = nil
217
220
  link = "#{url}/#{repo}/#{blob}/#{@templates_path}/_#{component.gsub(' ', '_')}.html.erb" if a_thing == "template"
218
221
  link = "#{url}/#{repo}/#{blob}/#{@stylesheets_path}/_#{component.gsub(' ', '-')}.scss" if a_thing == "stylesheet"
219
- link = "#{url}/#{repo}/#{blob}/#{@print_stylesheets_path}/_#{component.gsub(' ', '-')}.scss" if a_thing == "print_stylesheet"
220
222
  link = "#{url}/#{repo}/#{blob}/#{@javascripts_path}/#{component.gsub(' ', '-')}.js" if a_thing == "javascript"
221
223
  link = "#{url}/#{repo}/#{blob}/#{@tests_path}/#{component.gsub(' ', '_')}_spec.rb" if a_thing == "test"
222
224
  link = "#{url}/#{repo}/#{blob}/#{@javascript_tests_path}/#{component.gsub(' ', '-')}-spec.js" if a_thing == "javascript_test"
@@ -38,23 +38,15 @@
38
38
 
39
39
  <% if @other_applications %>
40
40
  <% if application[:uses_individual_asset_model] %>
41
- <div class="govuk-warning-text">
42
- <span class="govuk-warning-text__icon" aria-hidden="true">!</span>
43
- <strong class="govuk-warning-text__text">
44
- <span class="govuk-warning-text__assistive">Warning</span>
45
- This application uses <a class="govuk-link" href="https://github.com/alphagov/govuk_publishing_components/blob/main/docs/set-up-individual-component-css-loading.md">per page asset loading</a> for components. Warnings about missing stylesheets have been suppressed.
46
- </strong>
47
- </div>
41
+ <%= render "govuk_publishing_components/components/warning_text", {
42
+ text: raw("This application uses <a class=\"govuk-link\" href=\"https://github.com/alphagov/govuk_publishing_components/blob/main/docs/set-up-individual-component-css-loading.md\">per page asset loading</a> for components. Warnings about missing stylesheets have been suppressed.")
43
+ } %>
48
44
  <% end %>
49
45
 
50
46
  <% if application[:uses_static] %>
51
- <div class="govuk-warning-text">
52
- <span class="govuk-warning-text__icon" aria-hidden="true">!</span>
53
- <strong class="govuk-warning-text__text">
54
- <span class="govuk-warning-text__assistive">Warning</span>
55
- This application uses <a href="https://github.com/alphagov/static" class="govuk-link">static</a>, which can contain assets for components used in more than one application. Warnings for missing component assets in this application that are already included in static have been suppressed.
56
- </strong>
57
- </div>
47
+ <%= render "govuk_publishing_components/components/warning_text", {
48
+ text: raw("This application uses <a href=\"https://github.com/alphagov/static\" class=\"govuk-link\">static</a>, which can contain assets for components used in more than one application. Warnings for missing component assets in this application that are already included in static have been suppressed.")
49
+ } %>
58
50
  <% end %>
59
51
 
60
52
  <% application[:warnings].each do |warning| %>
@@ -74,24 +66,28 @@
74
66
  heading_level: 3,
75
67
  } %>
76
68
 
77
- <dl class="govuk-summary-list">
78
- <% application[:summary].each do |item| %>
79
- <div class="govuk-summary-list__row">
80
- <dt class="govuk-summary-list__key">
81
- <%= item[:name] %> (<%= item[:value].length %>)
82
- </dt>
83
- <dd class="govuk-summary-list__value">
84
- <% if item[:value].length > 0 %>
85
- <%= item[:value].join(", ") %>
86
- <% elsif application[:uses_individual_asset_model] && item[:name] == "In stylesheets" %>
87
- Uses per page component asset loading
88
- <% else %>
89
- None
90
- <% end %>
91
- </dd>
92
- </div>
69
+ <% items = [] %>
70
+ <% application[:summary].each do |item| %>
71
+ <% content = capture do %>
72
+ <% if item[:value].length > 0 %>
73
+ <%= item[:value].join(", ") %>
74
+ <% elsif application[:uses_individual_asset_model] && item[:name] == "In stylesheets" %>
75
+ Uses per page component asset loading
76
+ <% else %>
77
+ None
78
+ <% end %>
93
79
  <% end %>
94
- </dl>
80
+ <%
81
+ items << {
82
+ field: "#{item[:name]} (#{item[:value].length})",
83
+ value: content
84
+ }
85
+ %>
86
+ <% end %>
87
+
88
+ <%= render "govuk_publishing_components/components/summary_list", {
89
+ items: items
90
+ } %>
95
91
 
96
92
  <% if application[:gem_style_references].any? %>
97
93
  <%= render "govuk_publishing_components/components/heading", {
@@ -127,6 +123,18 @@
127
123
  <% end %>
128
124
  </ul>
129
125
  <% end %>
126
+
127
+ <% application_components = application[:application_components] %>
128
+ <% if application_components[:component_file_details].any? %>
129
+ <%= render "govuk_publishing_components/components/heading", {
130
+ text: "Application components (#{application_components[:component_file_details].length})",
131
+ font_size: "m",
132
+ margin_bottom: 4,
133
+ heading_level: 3,
134
+ } %>
135
+ <p class="govuk-body">This is a list of components found in this application. Note that some components may appear to be missing files due to inconsistencies in directory structure and naming conventions.</p>
136
+ <%= render "component_contents", passed_components: application_components, show_application_name: false %>
137
+ <% end %>
130
138
  <% else %>
131
139
  <p class="govuk-body">This application was not found. This could be because you do not have this repository checked out locally.</p>
132
140
  <% end %>
@@ -141,7 +149,7 @@
141
149
  text: sanitize(summary)
142
150
  },
143
151
  content: {
144
- html: sanitize(accordion_content)
152
+ html: accordion_content
145
153
  },
146
154
  }
147
155
  %>
@@ -1,23 +1,67 @@
1
- <table class="govuk-table">
1
+ <table class="govuk-table" <% if show_application_name %>data-audit-list<% end %>>
2
2
  <thead class="govuk-table__head">
3
3
  <tr class="govuk-table__row">
4
4
  <th scope="col" class="govuk-table__header sticky-table-header">Component</th>
5
- <th scope="col" class="govuk-table__header sticky-table-header">Template (<%= @components[:component_numbers][:template] %>)</th>
6
- <th scope="col" class="govuk-table__header sticky-table-header">CSS (<%= @components[:component_numbers][:stylesheet] %>)</th>
7
- <th scope="col" class="govuk-table__header sticky-table-header">Print styles (<%= @components[:component_numbers][:print_stylesheet] %>)</th>
8
- <th scope="col" class="govuk-table__header sticky-table-header">JS (<%= @components[:component_numbers][:javascript] %>)</th>
9
- <th scope="col" class="govuk-table__header sticky-table-header">Test (<%= @components[:component_numbers][:test] %>)</th>
10
- <th scope="col" class="govuk-table__header sticky-table-header">JS test (<%= @components[:component_numbers][:javascript_test] %>)</th>
11
- <th scope="col" class="govuk-table__header sticky-table-header">Helper (<%= @components[:component_numbers][:helper] %>)</th>
5
+ <th scope="col" class="govuk-table__header sticky-table-header" data-component-type="template">
6
+ Template
7
+ <% unless show_application_name %>
8
+ <span class="component__count"><%= passed_components[:component_numbers][:template] %></span>
9
+ <% end %>
10
+ </th>
11
+ <th scope="col" class="govuk-table__header sticky-table-header" data-component-type="stylesheet">
12
+ CSS
13
+ <% unless show_application_name %>
14
+ <span class="component__count"><%= passed_components[:component_numbers][:stylesheet] %></span>
15
+ <% end %>
16
+ </th>
17
+ <th scope="col" class="govuk-table__header sticky-table-header" data-component-type="print_stylesheet">
18
+ Print styles
19
+ <% unless show_application_name %>
20
+ <span class="component__count"><%= passed_components[:component_numbers][:print_stylesheet] %></span>
21
+ <% end %>
22
+ </th>
23
+ <th scope="col" class="govuk-table__header sticky-table-header" data-component-type="javascript">
24
+ JS
25
+ <% unless show_application_name %>
26
+ <span class="component__count"><%= passed_components[:component_numbers][:javascript] %></span>
27
+ <% end %>
28
+ </th>
29
+ <th scope="col" class="govuk-table__header sticky-table-header" data-component-type="test">
30
+ Test
31
+ <% unless show_application_name %>
32
+ <span class="component__count"><%= passed_components[:component_numbers][:test] %></span>
33
+ <% end %>
34
+ </th>
35
+ <th scope="col" class="govuk-table__header sticky-table-header" data-component-type="javascript_test">
36
+ JS test
37
+ <% unless show_application_name %>
38
+ <span class="component__count"><%= passed_components[:component_numbers][:javascript_test] %></span>
39
+ <% end %>
40
+ </th>
41
+ <th scope="col" class="govuk-table__header sticky-table-header" data-component-type="helper">
42
+ Helper
43
+ <% unless show_application_name %>
44
+ <span class="component__count"><%= passed_components[:component_numbers][:helper] %></span>
45
+ <% end %>
46
+ </th>
12
47
  </tr>
13
48
  </thead>
14
49
  <tbody class="govuk-table__body">
15
- <% @components[:component_file_details].each do |component| %>
16
- <tr class="govuk-table__row">
50
+ <% passed_components[:component_file_details].each do |component| %>
51
+ <tr class="govuk-table__row" data-application="<%= component[:application] %>">
17
52
  <th scope="row" class="govuk-table__header">
18
- <a href="<%= component[:link] %>" class="govuk-link">
53
+ <% if component[:link] %>
54
+ <a href="<%= component[:link] %>" class="govuk-link">
55
+ <%= component[:name] %>
56
+ </a>
57
+ <% else %>
19
58
  <%= component[:name] %>
20
- </a>
59
+ <% end %>
60
+ <% if show_application_name %>
61
+ <span class="component__application-name">
62
+ <%= component[:application] %>
63
+ </span>
64
+ <% end %>
21
65
  </th>
22
66
  <td class="govuk-table__cell">
23
67
  <% if component[:template_exists] %>
@@ -1,6 +1,6 @@
1
1
  <% if @other_applications %>
2
2
  <%= render "govuk_publishing_components/components/heading", {
3
- text: "Components in the gem",
3
+ text: "Components",
4
4
  font_size: "l",
5
5
  margin_bottom: 6,
6
6
  } %>
@@ -10,7 +10,9 @@
10
10
  <% component_items = [] %>
11
11
 
12
12
  <% component_files = capture do %>
13
- <%= render partial: "component_contents" %>
13
+ <div data-module="audit-filter">
14
+ <%= render "component_contents", passed_components: @components, show_application_name: true %>
15
+ </div>
14
16
  <% end %>
15
17
 
16
18
  <%
@@ -57,8 +59,8 @@
57
59
  %>
58
60
 
59
61
  <%= render 'items_in_applications',
60
- heading: 'Components by application',
61
- summary: 'Shows which applications use each component',
62
+ heading: 'Gem components used by applications',
63
+ summary: 'Shows which applications use gem components',
62
64
  content: @components[:components_by_application],
63
65
  items: component_items
64
66
  %>
@@ -97,10 +99,10 @@
97
99
  <%
98
100
  component_items << {
99
101
  heading: {
100
- text: "Helpers by component",
102
+ text: "Helpers used by gem components",
101
103
  },
102
104
  summary: {
103
- text: "Shows which components use common helpers",
105
+ text: "Shows which gem components use common helpers",
104
106
  },
105
107
  content: {
106
108
  html: helpers_by_component
@@ -109,7 +111,7 @@
109
111
  %>
110
112
 
111
113
  <%= render 'items_in_applications',
112
- heading: 'Helpers by application',
114
+ heading: 'Gem helpers used by applications',
113
115
  summary: 'Shows any applications that use helpers from the components gem',
114
116
  content: @components[:helpers_used_by_applications],
115
117
  items: component_items
@@ -1,5 +1,9 @@
1
- <% content_for :title, "Component audit" %>
1
+ <%
2
+ add_gem_component_stylesheet("table")
3
+ add_gem_component_stylesheet("select")
4
+ %>
2
5
 
6
+ <% content_for :title, "Component audit" %>
3
7
  <%= render 'govuk_publishing_components/components/title', title: "Components audit", margin_top: 0; %>
4
8
 
5
9
  <% applications = capture do %>
@@ -2,11 +2,15 @@
2
2
  add_gem_component_stylesheet("hint")
3
3
 
4
4
  id ||= "hint-#{SecureRandom.hex(4)}"
5
+ is_radio_label_hint ||= false
5
6
  right_to_left ||= false
6
7
  shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns)
7
8
 
8
9
  css_classes = %w( gem-c-hint govuk-hint )
9
- css_classes << shared_helper.get_margin_bottom
10
+ css_classes << "govuk-radios__hint" if is_radio_label_hint
11
+
12
+ custom_margin_bottom_class = shared_helper.get_margin_bottom if [*0..9].include?(local_assigns[:margin_bottom])
13
+ css_classes << custom_margin_bottom_class if local_assigns[:margin_bottom]
10
14
  %>
11
15
 
12
16
  <%= tag.div id: id, class: css_classes, dir: right_to_left ? "rtl" : nil do %>
@@ -15,9 +15,6 @@
15
15
  css_classes << "govuk-label--s" if bold
16
16
  css_classes << "govuk-radios__label" if is_radio_label
17
17
  css_classes << "govuk-label--#{heading_size}" if heading_size
18
-
19
- hint_text_css_classes = %w[govuk-hint]
20
- hint_text_css_classes << "govuk-radios__hint" if is_radio_label
21
18
  %>
22
19
 
23
20
  <% if is_page_heading %>
@@ -29,7 +26,10 @@
29
26
  <% end %>
30
27
 
31
28
  <% if hint_text.present? %>
32
- <%= tag.div id: hint_id, class: hint_text_css_classes, dir: right_to_left ? "rtl" : nil do %>
33
- <%= hint_text %>
34
- <% end %>
29
+ <%= render "govuk_publishing_components/components/hint", {
30
+ id: hint_id,
31
+ text: hint_text,
32
+ right_to_left: right_to_left ? "rtl" : nil,
33
+ is_radio_label_hint: is_radio_label
34
+ } %>
35
35
  <% end %>
@@ -2,6 +2,7 @@
2
2
  related_nav_helper = GovukPublishingComponents::Presenters::RelatedNavigationHelper.new(local_assigns)
3
3
  shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns)
4
4
  ga4_tracking ||= false
5
+ ga4_type = local_assigns[:context] == :footer ? "contextual footer" : "related content"
5
6
  data = {}
6
7
  data[:module] = "gem-track-click"
7
8
  data[:module] << " ga4-link-tracker" if ga4_tracking
@@ -42,7 +43,8 @@
42
43
  section_index: section_index,
43
44
  section_count: ga4_tracking_counts.index_section_count,
44
45
  random: random,
45
- ga4_tracking: ga4_tracking %>
46
+ ga4_tracking: ga4_tracking,
47
+ ga4_type: ga4_type %>
46
48
  <% end %>
47
49
  <% end %>
48
50
  <% end %>
@@ -15,7 +15,7 @@ examples:
15
15
  data:
16
16
  text: "It’s on your National Insurance card, benefit letter, payslip or P60. For example, ‘QQ 12 34 56 C’."
17
17
  with_margin_bottom:
18
- description: The component accepts a number for margin bottom from `0` to `9` (`0px` to `60px`) using the [GOV.UK Frontend spacing scale](https://design-system.service.gov.uk/styles/spacing/#the-responsive-spacing-scale). It defaults to a margin bottom of `3` (`15px`).
18
+ description: The component accepts a number for margin bottom from `0` to `9` (`0px` to `60px`) using the [GOV.UK Frontend spacing scale](https://design-system.service.gov.uk/styles/spacing/#the-responsive-spacing-scale).
19
19
  data:
20
20
  text: "You qualify if you were born in the UK before June 1960."
21
21
  margin_bottom: 9
@@ -34,7 +34,7 @@
34
34
  link_class = "govuk-link #{related_nav_helper.section_css_class("govuk-link gem-c-related-navigation__section-link", section_title, link: link, link_is_inline: (index >= section_link_limit))}"
35
35
  ga4_attributes = {
36
36
  event_name: "navigation",
37
- type: "related content",
37
+ type: ga4_type,
38
38
  index: {
39
39
  index_section: "#{section_index}",
40
40
  index_link: "#{index}",
@@ -236,10 +236,10 @@ en:
236
236
  href: "/guidance/getting-the-energy-bills-support-scheme-discount"
237
237
  - label: Find a job
238
238
  href: "/find-a-job"
239
- - label: Coronavirus (COVID-19)
240
- href: "/coronavirus"
241
239
  - label: 'Universal Credit account: sign in'
242
240
  href: "/sign-in-universal-credit"
241
+ - label: Check your National Insurance record
242
+ href: "/check-national-insurance-record"
243
243
  popular_links_heading: Popular on GOV.UK
244
244
  search_text: Search GOV.UK
245
245
  metadata: