govuk_publishing_components 21.55.2 → 21.56.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/govuk_publishing_components/lib/govspeak/youtube-link-enhancement.js +5 -4
  3. data/app/assets/stylesheets/govuk_publishing_components/component_support.scss +1 -0
  4. data/app/assets/stylesheets/govuk_publishing_components/components/_feedback.scss +1 -4
  5. data/app/assets/stylesheets/govuk_publishing_components/components/_input.scss +9 -5
  6. data/app/assets/stylesheets/govuk_publishing_components/components/_summary-list.scss +18 -5
  7. data/app/assets/stylesheets/govuk_publishing_components/components/helpers/_link.scss +17 -0
  8. data/app/controllers/govuk_publishing_components/component_guide_controller.rb +26 -16
  9. data/app/views/govuk_publishing_components/components/_contextual_breadcrumbs.html.erb +11 -7
  10. data/app/views/govuk_publishing_components/components/_input.html.erb +3 -4
  11. data/app/views/govuk_publishing_components/components/_summary_list.html.erb +34 -14
  12. data/app/views/govuk_publishing_components/components/docs/input.yml +9 -1
  13. data/app/views/govuk_publishing_components/components/docs/summary_list.yml +27 -0
  14. data/config/locales/en.yml +3 -0
  15. data/lib/govuk_publishing_components.rb +2 -1
  16. data/lib/govuk_publishing_components/presenters/breadcrumb_selector.rb +50 -42
  17. data/lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors.rb +41 -0
  18. data/lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_priority.rb +1 -0
  19. data/lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons.rb +4 -0
  20. data/lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_topic.rb +38 -0
  21. data/lib/govuk_publishing_components/presenters/contextual_navigation.rb +15 -4
  22. data/lib/govuk_publishing_components/presenters/page_with_step_by_step_navigation.rb +3 -1
  23. data/lib/govuk_publishing_components/presenters/related_navigation_helper.rb +18 -17
  24. data/lib/govuk_publishing_components/version.rb +1 -1
  25. data/node_modules/axe-core/CHANGELOG.md +11 -0
  26. data/node_modules/axe-core/axe.js +36 -9
  27. data/node_modules/axe-core/axe.min.js +2 -2
  28. data/node_modules/axe-core/bower.json +1 -1
  29. data/node_modules/axe-core/lib/checks/color/color-contrast.js +2 -2
  30. data/node_modules/axe-core/lib/checks/lists/listitem.js +1 -1
  31. data/node_modules/axe-core/lib/checks/mobile/meta-viewport-scale.js +3 -0
  32. data/node_modules/axe-core/lib/commons/dom/is-visible.js +37 -19
  33. data/node_modules/axe-core/lib/core/public/configure.js +26 -0
  34. data/node_modules/axe-core/lib/rules/aria-input-field-name.json +1 -1
  35. data/node_modules/axe-core/package.json +14 -14
  36. data/node_modules/axe-core/sri-history.json +4 -0
  37. data/node_modules/govuk-frontend/package.json +2 -2
  38. data/node_modules/jquery/package.json +2 -2
  39. metadata +5 -3
  40. data/lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_parent.rb +0 -39
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1b11f193106c7f8e22efc13ef5bbd2c342d1785eb3b115ebe583b647688c5aae
4
- data.tar.gz: 7f108f279a4f9b8bd39f9c068894631046a3622876ad0e33cd0b4425ea0bc31d
3
+ metadata.gz: c4c762079459f5284a3c2d8077bb92136586f9a3fb1bd41f38b5a37b8c557b04
4
+ data.tar.gz: 9a458d78da7c878aa9f1863e485b4b59bce139f5d4295d76df88a5da2144ede0
5
5
  SHA512:
6
- metadata.gz: 2b1a19a275e8610a96b3071f6ef29bb3462f04b61f6d625d0a0e9f2287a98bf9b577d1c3ebacbac2f35bf805f3c95b867afc35deceb734dea015c327b9242527
7
- data.tar.gz: 7a18630041fda4328d384c42e1e1de1579413ec29e5a9b620eb4a33fe84039aaeb30275bc56dd8985983d09f0c666d45017337c37b3ce335137ff24c8c123270
6
+ metadata.gz: '0879f5adc27997f08246bc8b8fc17a3538c1892fb90cfea51354aa2414d8b353fc5bc74287cb76299ecaf2f09c1f59f6306f7b7bff6362b4f22c21392ed79aaa'
7
+ data.tar.gz: 1cc60f11f0acfb2132922599454a1888663e4b5c864c092a77f84e44bea82559322812c6154d830db7163d3dc6aff8f1e1165e4576b4d96ce028ba7cf56cf69e
@@ -109,6 +109,8 @@
109
109
  event.target.f.title = videoTitle + ' (video)'
110
110
  },
111
111
  onStateChange: function (event) {
112
+ var eventData = event.data
113
+ var eventTarget = event.target
112
114
  var states = {
113
115
  "-1": "VideoUnstarted",
114
116
  "0": "VideoEnded",
@@ -117,14 +119,13 @@
117
119
  "3": "VideoBuffering",
118
120
  "5": "VideoCued"
119
121
  }
120
-
121
- if (states[event.data] && options.tracking && options.tracking.hasTracking
122
+ if (states[eventData] && options.tracking && options.tracking.hasTracking
122
123
  && window.GOVUK.analytics && window.GOVUK.analytics.trackEvent)
123
124
  {
124
125
  var tracking = {
125
126
  category: options.tracking.category,
126
- action: states[event.data],
127
- label: { transport: 'beacon', label: event.target.getVideoUrl() }
127
+ action: states[eventData],
128
+ label: { transport: 'beacon', label: eventTarget.getVideoData && eventTarget.getVideoData().title }
128
129
  }
129
130
 
130
131
  window.GOVUK.analytics.trackEvent(tracking.category, tracking.action, tracking.label)
@@ -8,6 +8,7 @@
8
8
 
9
9
  @import "govuk_publishing_components/components/helpers/variables";
10
10
  @import "govuk_publishing_components/components/helpers/brand-colours";
11
+ @import "govuk_publishing_components/components/helpers/link";
11
12
  @import "govuk_publishing_components/components/mixins/govuk-template-link-focus-override";
12
13
  @import "govuk_publishing_components/components/mixins/media-down";
13
14
  @import "govuk_publishing_components/components/mixins/margins";
@@ -1,8 +1,6 @@
1
1
  .gem-c-feedback {
2
2
  background: govuk-colour("white");
3
- margin: govuk-spacing(6) auto 0 auto;
4
- max-width: $govuk-page-width;
5
- position: relative;
3
+ margin-top: govuk-spacing(6);
6
4
 
7
5
  @include govuk-media-query($from: tablet) {
8
6
  margin-top: govuk-spacing(9);
@@ -182,7 +180,6 @@
182
180
  }
183
181
 
184
182
  .gem-c-feedback__form {
185
- margin: govuk-spacing(3) govuk-spacing(2) 0 govuk-spacing(2);
186
183
  padding: govuk-spacing(3) 0;
187
184
  border-top: govuk-spacing(2) solid govuk-colour("blue");
188
185
 
@@ -10,6 +10,7 @@
10
10
  // TODO: remove these styles once static is made less aggressive
11
11
  .gem-c-input.govuk-input {
12
12
  margin: 0;
13
+ min-width: 0;
13
14
  padding: govuk-spacing(1);
14
15
 
15
16
  &.gem-c-input--search-icon {
@@ -40,16 +41,19 @@
40
41
  box-sizing: border-box;
41
42
  cursor: default; // emphasise non-editable status of prefixes and suffixes
42
43
  display: inline-block;
43
- white-space: nowrap;
44
- width: auto;
45
- text-align: center;
44
+ flex: 0 0 auto;
46
45
  height: 40px;
47
- padding: govuk-spacing(1);
46
+ margin-top: 0;
48
47
  min-width: 40px;
48
+ padding: govuk-spacing(1);
49
+ text-align: center;
50
+ white-space: nowrap;
51
+ width: auto;
52
+
49
53
  @if $govuk-typography-use-rem {
54
+ height: govuk-px-to-rem(40px);
50
55
  min-width: govuk-px-to-rem(40px);
51
56
  }
52
- margin-top: 0;
53
57
  }
54
58
 
55
59
  .gem-c-input__prefix {
@@ -1,7 +1,6 @@
1
1
  @import "govuk/components/summary-list/summary-list";
2
2
 
3
3
  .gem-c-summary-list {
4
- position: relative;
5
4
  border-bottom: 1px solid $govuk-border-colour;
6
5
 
7
6
  @include govuk-font(19);
@@ -14,12 +13,26 @@
14
13
  &:nth-last-of-type(1) {
15
14
  border-bottom: 0;
16
15
  }
16
+
17
+ .govuk-summary-list {
18
+ clear: both;
19
+ }
17
20
  }
18
21
 
19
- .gem-c-summary-list__edit-section-link {
20
- position: absolute;
21
- top: 0;
22
- right: 0;
22
+ .gem-c-summary-list__group-title {
23
+ @include govuk-media-query($from: tablet) {
24
+ display: inline-block;
25
+ margin-right: govuk-spacing(3);
26
+ }
27
+ }
28
+
29
+ .gem-c-summary-list__group-actions-list {
30
+ margin-bottom: govuk-spacing(3);
31
+
32
+ @include govuk-media-query($from: tablet) {
33
+ float: right;
34
+ width: auto;
35
+ }
23
36
  }
24
37
 
25
38
  .gem-c-summary__block {
@@ -0,0 +1,17 @@
1
+ .gem-link--destructive {
2
+ @include govuk-font(19);
3
+
4
+ &:link {
5
+ color: $govuk-error-colour;
6
+ }
7
+
8
+ &:visited,
9
+ &:hover,
10
+ &:active {
11
+ color: darken($govuk-error-colour, 5%);
12
+ }
13
+
14
+ &:focus {
15
+ color: $govuk-focus-text-colour;
16
+ }
17
+ }
@@ -2,6 +2,8 @@ module GovukPublishingComponents
2
2
  class ComponentGuideController < GovukPublishingComponents::ApplicationController
3
3
  append_view_path File.join(Rails.root, "app", "views", GovukPublishingComponents::Config.component_directory_name)
4
4
 
5
+ MATCH_COMPONENTS = /(?<=govuk_publishing_components\/components\/)[\/a-zA-Z_-]+(?=['"])/.freeze
6
+
5
7
  def index
6
8
  @application_path = Rails.root
7
9
  @component_gem_path = Gem.loaded_specs["govuk_publishing_components"].full_gem_path
@@ -86,24 +88,30 @@ module GovukPublishingComponents
86
88
 
87
89
  files.each do |file|
88
90
  data = File.read(file)
89
- matches << data.scan(/(govuk_publishing_components\/components\/[a-z_-]+)/)
91
+ matches << data.scan(MATCH_COMPONENTS)
90
92
  end
91
93
 
92
- matches.flatten.uniq.map(&:to_s).sort.map { |m| m.gsub("govuk_publishing_components/components/", "") }
94
+ matches.flatten.uniq.map(&:to_s).sort
93
95
  end
94
96
 
95
- def find_all_partials_in(components)
96
- components_to_search = components
97
- partials_found = true
97
+ def find_all_partials_in(templates)
98
+ components = [templates]
99
+
100
+ templates.each do |template|
101
+ partials_found = true
102
+ components_to_search = [template]
103
+ components_found = []
98
104
 
99
- while partials_found
100
- extra_components = find_partials_in(components_to_search)
105
+ while partials_found
106
+ extra_components = find_partials_in(components_to_search)
101
107
 
102
- if extra_components.any?
103
- components << extra_components
104
- components_to_search = extra_components
105
- else
106
- partials_found = false
108
+ if extra_components.any?
109
+ components_found << extra_components
110
+ components_to_search = extra_components
111
+ else
112
+ partials_found = false
113
+ components << components_found.uniq.sort if components_found.any?
114
+ end
107
115
  end
108
116
  end
109
117
 
@@ -113,8 +121,7 @@ module GovukPublishingComponents
113
121
  def find_partials_in(components)
114
122
  extra_components = []
115
123
  components.each do |component|
116
- components_in_component = components_within_component(component)
117
- extra_components << components_in_component
124
+ extra_components << components_within_component(component)
118
125
  end
119
126
 
120
127
  extra_components.flatten.uniq.sort
@@ -132,9 +139,12 @@ module GovukPublishingComponents
132
139
  def components_within_component(component)
133
140
  filename = @component_gem_path + "/app/views/govuk_publishing_components/components/#{component}.html.erb"
134
141
  filename = filename.sub(/.*\K\//, "/_") # files begin with _ but the method may have been passed 'filename' or 'dir/partial'
142
+
143
+ return [] unless File.file?(filename)
144
+
135
145
  data = File.read(filename)
136
- match = data.scan(/(govuk_publishing_components\/components\/[\/a-z_-]+)/)
137
- match.flatten.uniq.map(&:to_s).sort.map { |m| m.gsub("govuk_publishing_components/components/", "") }
146
+ match = data.scan(MATCH_COMPONENTS)
147
+ match.flatten.uniq.map(&:to_s).sort
138
148
  end
139
149
 
140
150
  def index_breadcrumb
@@ -1,16 +1,20 @@
1
1
  <% prioritise_taxon_breadcrumbs ||= false %>
2
- <% breadcrumb_selector = GovukPublishingComponents::Presenters::BreadcrumbSelector.call(content_item, request, prioritise_taxon_breadcrumbs) %>
2
+ <% breadcrumb_selector = GovukPublishingComponents::Presenters::BreadcrumbSelector.new(content_item, request, prioritise_taxon_breadcrumbs) %>
3
3
  <% inverse ||= false %>
4
4
  <% collapse_on_mobile ||= true unless local_assigns[:collapse_on_mobile].eql?(false) %>
5
5
 
6
- <div class='gem-c-contextual-breadcrumbs'>
7
- <% if breadcrumb_selector[:step_by_step] %>
8
- <%= render 'govuk_publishing_components/components/step_by_step_nav_header',
9
- breadcrumb_selector[:breadcrumbs] %>
10
- <% elsif breadcrumb_selector[:breadcrumbs] %>
6
+ <div class="gem-c-contextual-breadcrumbs">
7
+ <% if breadcrumb_selector.step_by_step %>
8
+ <%= render 'govuk_publishing_components/components/step_by_step_nav_header', breadcrumb_selector.breadcrumbs %>
9
+ <% elsif breadcrumb_selector.breadcrumbs %>
11
10
  <%= render 'govuk_publishing_components/components/breadcrumbs',
12
- breadcrumbs: breadcrumb_selector[:breadcrumbs],
11
+ breadcrumbs: breadcrumb_selector.breadcrumbs,
13
12
  inverse: inverse,
14
13
  collapse_on_mobile: collapse_on_mobile %>
15
14
  <% end %>
15
+
16
+ <%= render(
17
+ 'govuk_publishing_components/components/step_by_step_nav_header', breadcrumb_selector.priority_breadcrumbs
18
+ ) if breadcrumb_selector.priority_breadcrumbs
19
+ %>
16
20
  </div>
@@ -95,15 +95,14 @@
95
95
 
96
96
  <% if prefix && suffix %>
97
97
  <%= tag.div class: "gem-c-input__wrapper" do %>
98
- <%= tag.span prefix, class: "gem-c-input__prefix", aria: { hidden: true } %>
99
- <%= input_tag %>
100
- <%= tag.span suffix, class: "gem-c-input__suffix", aria: { hidden: true } %>
98
+ <% # The line below relies on in-line styling for legacy browsers and it's whitespace-sensitive %>
99
+ <%= tag.span prefix, class: "gem-c-input__prefix", aria: { hidden: true } %><%= input_tag %><%= tag.span suffix, class: "gem-c-input__suffix", aria: { hidden: true } %>
101
100
  <% end %>
102
101
  <% elsif prefix %>
103
102
  <%= tag.div class: "gem-c-input__wrapper" do %>
104
103
  <%= tag.span prefix, class: "gem-c-input__prefix", aria: { hidden: true } %><%= input_tag %>
105
104
  <% end %>
106
- <% elsif suffix %>
105
+ <% elsif suffix %>
107
106
  <%= tag.div class: "gem-c-input__wrapper" do %>
108
107
  <%= input_tag %><%= tag.span suffix, class: "gem-c-input__suffix", aria: { hidden: true } %>
109
108
  <% end %>
@@ -1,23 +1,42 @@
1
1
  <%
2
+ local_assigns[:heading_level] ||= 3
3
+ heading_size = 'm' unless ['s', 'm', 'l', 'xl'].include?(heading_size)
4
+ shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns)
5
+
2
6
  id ||= nil
3
7
  title ||= nil
4
8
  borderless ||= false
5
9
  edit ||= {}
10
+ delete ||= {}
6
11
  items ||= []
7
12
  block ||= yield
8
13
  %>
9
14
  <% if title || items.any? %>
10
15
  <%= tag.div class: "gem-c-summary-list #{"govuk-summary-list--no-border" if borderless}", id: id do %>
11
16
  <% if title %>
12
- <%= tag.h3 title, class: "govuk-heading-m" %>
13
- <% if edit.any? %>
14
- <%= tag.ul class: "govuk-summary-list__actions-list" do %>
15
- <%= tag.li class: "govuk-summary-list__actions-list-item" do %>
16
- <%= link_to edit.fetch(:href),
17
- class: "govuk-link gem-c-summary-list__edit-section-link",
18
- title: "#{edit.fetch(:link_text, "Change")} #{title}",
19
- data: edit.fetch(:data_attributes, {}) do %>
20
- <%= edit.fetch(:link_text, "Change") %> <%= tag.span title, class: "govuk-visually-hidden" %>
17
+ <%= content_tag(shared_helper.get_heading_level, title, class: "govuk-heading-#{heading_size} gem-c-summary-list__group-title") %>
18
+ <% if edit.any? || delete.any? %>
19
+ <%= tag.ul class: "govuk-summary-list__actions-list gem-c-summary-list__group-actions-list" do %>
20
+ <%- if edit.any? %>
21
+ <% edit_section_link_text = edit[:link_text] || t("components.summary_list.edit") %>
22
+ <%= tag.li class: "govuk-summary-list__actions-list-item" do -%>
23
+ <%= link_to edit.fetch(:href),
24
+ class: "govuk-link",
25
+ title: "#{edit_section_link_text} #{title}",
26
+ data: edit.fetch(:data_attributes, {}) do %>
27
+ <%= edit_section_link_text %><%= tag.span " #{title}", class: "govuk-visually-hidden" -%>
28
+ <% end %>
29
+ <% end %>
30
+ <% end %>
31
+ <% if delete.any? %>
32
+ <% delete_section_link_text = delete[:link_text] || t("components.summary_list.delete") %>
33
+ <%= tag.li class: "govuk-summary-list__actions-list-item" do -%>
34
+ <%= link_to delete.fetch(:href),
35
+ class: "govuk-link gem-link--destructive",
36
+ title: "#{delete_section_link_text} #{title}",
37
+ data: delete.fetch(:data_attributes, {}) do %>
38
+ <%= delete_section_link_text %><%= tag.span " #{title}", class: "govuk-visually-hidden" -%>
39
+ <% end %>
21
40
  <% end %>
22
41
  <% end %>
23
42
  <% end %>
@@ -37,22 +56,23 @@
37
56
  <%= tag.ul class: "govuk-summary-list__actions-list" do %>
38
57
  <% if item.fetch(:edit, {}).any? %>
39
58
  <%= tag.li class: "govuk-summary-list__actions-list-item" do %>
40
- <% edit_link_text = item[:edit][:link_text] || "Change" %>
59
+ <% edit_link_text = item[:edit][:link_text] || t("components.summary_list.edit") %>
41
60
  <%= link_to item[:edit].fetch(:href),
42
61
  class: "govuk-link",
43
62
  title: "#{edit_link_text} #{item[:field]}",
44
63
  data: item[:edit].fetch(:data_attributes, {}) do %>
45
- <%= edit_link_text %><%= tag.span " #{item[:field]}", class: "govuk-visually-hidden" %><% end %>
64
+ <%= edit_link_text %><%= tag.span " #{item[:field]}", class: "govuk-visually-hidden" -%>
65
+ <% end %>
46
66
  <% end %>
47
67
  <% end %>
48
68
  <% if item.fetch(:delete, {}).any? %>
49
69
  <%= tag.li class: "govuk-summary-list__actions-list-item" do %>
50
- <% delete_link_text = item[:delete][:link_text] || "Delete" %>
70
+ <% delete_link_text = item[:delete][:link_text] || t("components.summary_list.delete") %>
51
71
  <%= link_to item[:delete].fetch(:href),
52
- class: "govuk-link",
72
+ class: "govuk-link gem-link--destructive",
53
73
  title: "#{delete_link_text} #{item[:field]}",
54
74
  data: item[:delete].fetch(:data_attributes, {}) do %>
55
- <%= delete_link_text %><%= tag.span " #{item[:field]}", class: "govuk-visually-hidden" %>
75
+ <%= delete_link_text %><%= tag.span " #{item[:field]}", class: "govuk-visually-hidden" -%>
56
76
  <% end %>
57
77
  <% end %>
58
78
  <% end %>
@@ -132,6 +132,14 @@ examples:
132
132
  text: "What is your name?"
133
133
  name: "name"
134
134
  heading_size: "l"
135
+ with_prefix:
136
+ description: To help users understand how the input should look like. Often used for units of measurement.
137
+ data:
138
+ label:
139
+ text: "Cost, in pounds"
140
+ name: "cost"
141
+ width: 10
142
+ prefix: "£"
135
143
  with_suffix:
136
144
  description: To help users understand how the input should look like. Often used for units of measurement.
137
145
  data:
@@ -145,7 +153,7 @@ examples:
145
153
  data:
146
154
  label:
147
155
  text: "Cost per item, in pounds"
148
- name: "Cost-per-item"
156
+ name: "cost-per-item"
149
157
  width: 10
150
158
  prefix: "£"
151
159
  suffix: "per item"
@@ -1,5 +1,6 @@
1
1
  name: Summary list
2
2
  description: Use the summary list to summarise information, for example, a user’s responses at the end of a form.
3
+ body: This component extends the [Summary list component in the Design System](https://design-system.service.gov.uk/components/summary-list/) allowing the rendering of multiple groups of lists, and actions at the group level.
3
4
  accessibility_criteria: |
4
5
  Action links in the component must:
5
6
 
@@ -41,6 +42,32 @@ examples:
41
42
  data_attributes:
42
43
  gtm: "edit-title-summary-body"
43
44
 
45
+ with_delete_on_section:
46
+ data:
47
+ <<: *default-example-data
48
+ delete:
49
+ href: "delete-title-summary-body"
50
+ data_attributes:
51
+ gtm: "delete-title-summary-body"
52
+
53
+ with_edit_and_delete_on_section:
54
+ data:
55
+ <<: *default-example-data
56
+ edit:
57
+ href: "edit-title-summary-body"
58
+ data_attributes:
59
+ gtm: "edit-title-summary-body"
60
+ delete:
61
+ href: "delete-title-summary-body"
62
+ data_attributes:
63
+ gtm: "delete-title-summary-body"
64
+
65
+ with_custom_section_heading:
66
+ data:
67
+ <<: *default-example-data
68
+ heading_level: 2
69
+ heading_size: l
70
+
44
71
  with_custom_link_on_section:
45
72
  description: |
46
73
  Take care that the provided `link_text` still makes sense to screen readers when combined with the title.
@@ -71,3 +71,6 @@ en:
71
71
  email_signup_link_text: "Get email alerts"
72
72
  feed_link_text: "Subscribe to feed"
73
73
  subscriptions: "Subscriptions"
74
+ summary_list:
75
+ edit: "Change"
76
+ delete: "Delete"
@@ -12,9 +12,10 @@ require "govuk_publishing_components/presenters/contextual_navigation"
12
12
  require "govuk_publishing_components/presenters/related_navigation_helper"
13
13
  require "govuk_publishing_components/presenters/step_by_step_nav_helper"
14
14
  require "govuk_publishing_components/presenters/page_with_step_by_step_navigation"
15
- require "govuk_publishing_components/presenters/content_breadcrumbs_based_on_parent"
15
+ require "govuk_publishing_components/presenters/content_breadcrumbs_based_on_ancestors"
16
16
  require "govuk_publishing_components/presenters/content_breadcrumbs_based_on_priority"
17
17
  require "govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons"
18
+ require "govuk_publishing_components/presenters/content_breadcrumbs_based_on_topic"
18
19
  require "govuk_publishing_components/presenters/checkboxes_helper"
19
20
  require "govuk_publishing_components/presenters/select"
20
21
  require "govuk_publishing_components/presenters/meta_tags"