govuk_publishing_components 12.20.0 → 12.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/govuk_publishing_components/components/_image-card.scss +2 -2
  3. data/app/assets/stylesheets/govuk_publishing_components/components/_related-navigation.scss +8 -0
  4. data/app/views/govuk_publishing_components/components/_contextual_breadcrumbs.html.erb +8 -8
  5. data/app/views/govuk_publishing_components/components/_contextual_footer.html.erb +10 -0
  6. data/app/views/govuk_publishing_components/components/_contextual_sidebar.html.erb +5 -14
  7. data/app/views/govuk_publishing_components/components/_layout_footer.html.erb +5 -3
  8. data/app/views/govuk_publishing_components/components/_related_navigation.html.erb +10 -6
  9. data/app/views/govuk_publishing_components/components/docs/contextual_breadcrumbs.yml +3 -2
  10. data/app/views/govuk_publishing_components/components/docs/contextual_footer.yml +71 -0
  11. data/app/views/govuk_publishing_components/components/docs/contextual_sidebar.yml +18 -9
  12. data/app/views/govuk_publishing_components/components/docs/layout_footer.yml +17 -0
  13. data/app/views/govuk_publishing_components/components/docs/related_navigation.yml +53 -0
  14. data/app/views/govuk_publishing_components/components/related_navigation/_section.html.erb +10 -5
  15. data/config/locales/en.yml +5 -6
  16. data/lib/govuk_publishing_components.rb +0 -2
  17. data/lib/govuk_publishing_components/presenters/contextual_navigation.rb +0 -4
  18. data/lib/govuk_publishing_components/presenters/related_navigation_helper.rb +108 -90
  19. data/lib/govuk_publishing_components/version.rb +1 -1
  20. data/node_modules/govuk-frontend/components/back-link/README.md +4 -73
  21. data/node_modules/govuk-frontend/components/breadcrumbs/README.md +4 -238
  22. data/node_modules/govuk-frontend/components/button/README.md +4 -174
  23. data/node_modules/govuk-frontend/components/character-count/README.md +4 -340
  24. data/node_modules/govuk-frontend/components/character-count/template.njk +0 -3
  25. data/node_modules/govuk-frontend/components/checkboxes/README.md +4 -705
  26. data/node_modules/govuk-frontend/components/checkboxes/template.njk +1 -0
  27. data/node_modules/govuk-frontend/components/date-input/README.md +4 -563
  28. data/node_modules/govuk-frontend/components/date-input/template.njk +1 -0
  29. data/node_modules/govuk-frontend/components/details/README.md +4 -128
  30. data/node_modules/govuk-frontend/components/error-message/README.md +4 -58
  31. data/node_modules/govuk-frontend/components/error-summary/README.md +4 -94
  32. data/node_modules/govuk-frontend/components/fieldset/README.md +4 -92
  33. data/node_modules/govuk-frontend/components/file-upload/README.md +4 -199
  34. data/node_modules/govuk-frontend/components/file-upload/template.njk +1 -0
  35. data/node_modules/govuk-frontend/components/footer/README.md +4 -91
  36. data/node_modules/govuk-frontend/components/footer/_footer.scss +22 -13
  37. data/node_modules/govuk-frontend/components/header/README.md +4 -351
  38. data/node_modules/govuk-frontend/components/hint/README.md +5 -77
  39. data/node_modules/govuk-frontend/components/input/README.md +4 -407
  40. data/node_modules/govuk-frontend/components/input/template.njk +1 -0
  41. data/node_modules/govuk-frontend/components/inset-text/README.md +4 -76
  42. data/node_modules/govuk-frontend/components/label/README.md +5 -97
  43. data/node_modules/govuk-frontend/components/panel/README.md +4 -93
  44. data/node_modules/govuk-frontend/components/phase-banner/README.md +4 -67
  45. data/node_modules/govuk-frontend/components/radios/README.md +4 -665
  46. data/node_modules/govuk-frontend/components/radios/template.njk +1 -0
  47. data/node_modules/govuk-frontend/components/select/README.md +4 -257
  48. data/node_modules/govuk-frontend/components/select/template.njk +1 -0
  49. data/node_modules/govuk-frontend/components/skip-link/README.md +4 -57
  50. data/node_modules/govuk-frontend/components/table/README.md +4 -368
  51. data/node_modules/govuk-frontend/components/tabs/README.md +4 -242
  52. data/node_modules/govuk-frontend/components/tag/README.md +4 -77
  53. data/node_modules/govuk-frontend/components/textarea/README.md +4 -193
  54. data/node_modules/govuk-frontend/components/textarea/template.njk +1 -0
  55. data/node_modules/govuk-frontend/components/warning-text/README.md +4 -63
  56. data/node_modules/govuk-frontend/components/warning-text/_warning-text.scss +1 -2
  57. data/node_modules/govuk-frontend/core/_lists.scss +17 -8
  58. data/node_modules/govuk-frontend/package.json +10 -10
  59. metadata +4 -5
  60. data/app/views/govuk_publishing_components/components/_taxonomy_navigation.html.erb +0 -116
  61. data/app/views/govuk_publishing_components/components/docs/taxonomy_navigation.yml +0 -119
  62. data/lib/govuk_publishing_components/presenters/taxonomy_navigation.rb +0 -47
@@ -16,10 +16,6 @@ module GovukPublishingComponents
16
16
  content_item['document_type'] === "simple_smart_answer"
17
17
  end
18
18
 
19
- def taxonomy_sidebar
20
- @taxonomy_sidebar ||= TaxonomyNavigation.new(content_item).sidebar
21
- end
22
-
23
19
  def taxon_breadcrumbs
24
20
  @taxon_breadcrumbs ||= ContentBreadcrumbsBasedOnTaxons.new(content_item).breadcrumbs
25
21
  end
@@ -13,35 +13,69 @@ module GovukPublishingComponents
13
13
  statistical_data_sets
14
14
  ).freeze
15
15
 
16
- def initialize(content_item)
16
+ def initialize(content_item:, context: nil)
17
17
  @content_item = content_item
18
+ @context = context
18
19
  end
19
20
 
20
21
  def related_navigation
21
- {
22
- "related_items" => related_items,
23
- "related_guides" => related_guides,
24
- "collections" => related_collections,
25
- "topics" => related_topics,
26
- "topical_events" => related_topical_events,
27
- "world_locations" => related_world_locations,
28
- "statistical_data_sets" => related_statistical_data_sets,
29
- "related_external_links" => related_external_links,
30
- "related_contacts" => related_contacts,
31
- }
22
+ case @context.try(:to_sym)
23
+ when :sidebar
24
+ {
25
+ "related_items" => related_items,
26
+ "related_guides" => related_guides,
27
+ "collections" => related_document_collections,
28
+ }
29
+ when :footer
30
+ {
31
+ "topics" => related_topics,
32
+ "topical_events" => related_topical_events,
33
+ "world_locations" => related_world_locations,
34
+ "statistical_data_sets" => related_statistical_data_sets,
35
+ "related_external_links" => related_external_links,
36
+ "related_contacts" => related_contacts,
37
+ }
38
+ else
39
+ {
40
+ "related_items" => related_items,
41
+ "related_guides" => related_guides,
42
+ "collections" => related_document_collections,
43
+ "topics" => related_topics,
44
+ "topical_events" => related_topical_events,
45
+ "world_locations" => related_world_locations,
46
+ "statistical_data_sets" => related_statistical_data_sets,
47
+ "related_external_links" => related_external_links,
48
+ "related_contacts" => related_contacts,
49
+ }
50
+ end
32
51
  end
33
52
 
34
53
  def construct_section_heading(section_title)
35
54
  unless section_title === "related_items"
36
- I18n.t('components.related_navigation.' + section_title, default: section_title.tr('_', ' '))
55
+ I18n.t("components.related_#{@context}_navigation." + section_title,
56
+ default: [
57
+ I18n.t('components.related_navigation.' + section_title),
58
+ section_title.tr('_', ' '),
59
+ ])
37
60
  end
38
61
  end
39
62
 
40
63
  def section_css_class(css_class, section_title, link = {})
64
+ css_classes = [css_class, "#{css_class}--#{@context}"]
65
+
41
66
  unless DEFINED_SECTIONS.include?(section_title) || link.fetch(:finder, false)
42
- css_class += " #{css_class}--other"
67
+ css_classes << " #{css_class}--other"
43
68
  end
44
- css_class
69
+
70
+ css_classes.join(' ')
71
+ end
72
+
73
+ def section_data_track_count(section_title)
74
+ String(@context || 'sidebar') + String(section_title).camelcase
75
+ end
76
+
77
+ def section_heading_level
78
+ @context == :footer ? 'h2' : 'h3'
45
79
  end
46
80
 
47
81
  def calculate_section_link_limit(links)
@@ -52,121 +86,105 @@ module GovukPublishingComponents
52
86
  links.length - MAX_SECTION_LENGTH
53
87
  end
54
88
 
55
- def anything_to_show?
89
+ def related_navigation?
56
90
  related_navigation.flat_map(&:last).any?
57
91
  end
58
92
 
59
93
  private
60
94
 
61
- def build_links_for_sidebar(collection, path_key = "base_path", additional_attr = {})
62
- collection.map do |link|
63
- {
64
- path: link[path_key],
65
- text: link["title"]
66
- }.merge(additional_attr)
67
- end
68
- end
69
-
70
- def world_location_base_path(title)
71
- "/world/#{parameterise(title)}/news"
72
- end
73
-
74
95
  def related_items
75
- links = build_links_for_sidebar(quick_links, "url")
76
- mainstream_links = related_mainstream_content
77
- related_ordered_items = link_group("ordered_related_items")
78
- if links.any?
79
- links + mainstream_links
96
+ related_quick_links = content_item_details_for('quick_links')
97
+
98
+ if related_quick_links.any?
99
+ related_quick_links + related_mainstream_content
80
100
  else
81
- build_links_for_sidebar(related_ordered_items) + mainstream_links
101
+ content_item_links_for('ordered_related_items') + related_mainstream_content
82
102
  end
83
103
  end
84
104
 
85
- def quick_links
86
- @content_item.dig("details", "quick_links").to_a
87
- end
88
-
89
105
  def related_world_locations
90
- locations = link_group("world_locations")
91
- locations.map! { |link| link.merge("base_path" => world_location_base_path(link["title"])) }
92
- build_links_for_sidebar(locations)
106
+ content_item_links_for('world_locations')
107
+ .map { |link| link.merge(path: "/world/#{link[:text].parameterize}/news") }
93
108
  end
94
109
 
95
- def related_collections
96
- collections = filter_link_type("document_collections", "document_collection")
97
- build_links_for_sidebar(collections)
110
+ def related_statistical_data_sets
111
+ content_item_links_for('related_statistical_data_sets', only: 'statistical_data_set')
98
112
  end
99
113
 
100
- def filter_link_type(group, type)
101
- links = link_group(group)
102
- links.select do |link|
103
- link["document_type"] == type
104
- end
114
+ def related_taxons
115
+ content_item_links_for('taxons', only: 'taxon')
105
116
  end
106
117
 
107
- def related_statistical_data_sets
108
- statistical_data_sets = filter_link_type("related_statistical_data_sets", "statistical_data_set")
109
- build_links_for_sidebar(statistical_data_sets)
118
+ def related_topics
119
+ if related_legacy_topics.any?
120
+ related_legacy_topics
121
+ elsif related_taxons.any?
122
+ related_taxons
123
+ else
124
+ []
125
+ end
110
126
  end
111
127
 
112
- def related_topics
113
- mainstream_browse_pages = filter_link_type("mainstream_browse_pages", "mainstream_browse_page")
128
+ def related_legacy_topics
129
+ mainstream_browse_page_links = content_item_links_for('mainstream_browse_pages', only: 'mainstream_browse_page')
130
+ topic_links = content_item_links_for('topics', only: 'topic')
114
131
 
115
- topics_that_dont_duplicate_browse = filter_link_type("topics", "topic").select do |topic|
116
- mainstream_browse_pages.none? { |browse_page| browse_page["title"] == topic["title"] }
132
+ mainstream_browse_page_links + topic_links.find_all do |topic_link|
133
+ mainstream_browse_page_links.none? do |mainstream_browse_page_link|
134
+ mainstream_browse_page_link[:text] == topic_link[:text]
135
+ end
117
136
  end
118
-
119
- links = build_links_for_sidebar(mainstream_browse_pages + topics_that_dont_duplicate_browse)
120
- links.compact
121
137
  end
122
138
 
123
139
  def related_topical_events
124
- topical_events = filter_link_type("topical_events", "topical_event")
125
- build_links_for_sidebar(topical_events)
140
+ content_item_links_for('topical_events', only: 'topical_event')
126
141
  end
127
142
 
128
143
  def related_contacts
129
- contacts = filter_link_type("related", "contact")
130
- build_links_for_sidebar(contacts)
144
+ content_item_links_for('related', only: 'contact')
131
145
  end
132
146
 
133
147
  def related_external_links
134
- external_links = @content_item.dig("details", "external_related_links").to_a
135
- build_links_for_sidebar(external_links, "url", rel: "external")
136
- end
137
-
138
- def parameterise(str, sep = "-")
139
- parameterised_str = str.gsub(/[^\w\-]+/, sep)
140
- unless sep.nil? || sep.empty?
141
- re_sep = Regexp.escape(sep)
142
- # No more than one of the separator in a row.
143
- parameterised_str.gsub!(/#{re_sep}{2,}/, sep)
144
- # Remove leading/trailing separator.
145
- parameterised_str.gsub!(/^#{re_sep}|#{re_sep}$/, '')
146
- end
147
- parameterised_str.downcase
148
- end
149
-
150
- def related_links
151
- link_group("ordered_related_items")
148
+ content_item_details_for('external_related_links')
152
149
  end
153
150
 
154
151
  def related_mainstream_content
155
- return [] unless @content_item["document_type"] == "detailed_guide"
152
+ return [] unless detailed_guide?
156
153
 
157
- content = link_group("related_mainstream_content")
158
- build_links_for_sidebar(content)
154
+ content_item_links_for('related_mainstream_content')
159
155
  end
160
156
 
161
157
  def related_guides
162
- return [] unless @content_item["document_type"] == "detailed_guide"
158
+ return [] unless detailed_guide?
163
159
 
164
- guides = link_group("related_guides")
165
- build_links_for_sidebar(guides)
160
+ content_item_links_for('related_guides')
166
161
  end
167
162
 
168
- def link_group(type)
169
- @content_item.dig("links", type).to_a
163
+ def related_document_collections
164
+ content_item_links_for('document_collections', only: 'document_collection')
165
+ end
166
+
167
+ def detailed_guide?
168
+ @content_item['document_type'] == 'detailed_guide'
169
+ end
170
+
171
+ def content_item_details_for(key)
172
+ Array(@content_item.dig('details', key))
173
+ .map { |link| { path: link['url'], text: link['title'], rel: 'external' } }
174
+ end
175
+
176
+ def content_item_links_for(key, only: nil)
177
+ links = Array(@content_item.dig('links', key))
178
+
179
+ if key == 'taxons'
180
+ links = links.find_all { |link| link['phase'] == 'live' }
181
+ end
182
+
183
+ if only.present?
184
+ links = links.find_all { |link| link['document_type'] == only }
185
+ end
186
+
187
+ links.map { |link| { path: link['base_path'], text: link['title'] } }
170
188
  end
171
189
  end
172
190
  end
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = '12.20.0'.freeze
2
+ VERSION = '12.21.0'.freeze
3
3
  end
@@ -1,84 +1,15 @@
1
1
  # Back link
2
2
 
3
- ## Introduction
3
+ ## Installation
4
4
 
5
- Link back component, to go back a page.
5
+ See the [main README quick start guide](https://github.com/alphagov/govuk-frontend#quick-start) for how to install this component.
6
6
 
7
- ## Guidance
7
+ ## Guidance and Examples
8
8
 
9
9
  Find out when to use the back link component in your service in the [GOV.UK Design System](https://design-system.service.gov.uk/components/back-link).
10
10
 
11
- ## Quick start examples
12
-
13
- ### Back link
14
-
15
- [Preview this example in the Frontend review app](http://govuk-frontend-review.herokuapp.com/components/back-link/preview)
16
-
17
- #### Markup
18
-
19
- <a href="#" class="govuk-back-link">Back</a>
20
-
21
- #### Macro
22
-
23
- {% from "back-link/macro.njk" import govukBackLink %}
24
-
25
- {{ govukBackLink({
26
- "href": "#"
27
- }) }}
28
-
29
- ### Back link with custom text
30
-
31
- [Preview this example in the Frontend review app](http://govuk-frontend-review.herokuapp.com/components/back-link/with-custom-text/preview)
32
-
33
- #### Markup
34
-
35
- <a href="#" class="govuk-back-link">Back to home</a>
36
-
37
- #### Macro
38
-
39
- {% from "back-link/macro.njk" import govukBackLink %}
40
-
41
- {{ govukBackLink({
42
- "href": "#",
43
- "text": "Back to home"
44
- }) }}
45
-
46
- ## Requirements
47
-
48
- ### Build tool configuration
49
-
50
- When compiling the Sass files you'll need to define includePaths to reference the node_modules directory. Below is a sample configuration using gulp
51
-
52
- .pipe(sass({
53
- includePaths: 'node_modules/'
54
- }))
55
-
56
- ### Static asset path configuration
57
-
58
- In order to include the images used in the components, you need to configure your app to show these assets. Below is a sample configuration using Express js:
59
-
60
- app.use('/assets', express.static(path.join(__dirname, '/node_modules/govuk-frontend/assets')))
61
-
62
11
  ## Component options
63
12
 
64
13
  Use options to customise the appearance, content and behaviour of a component when using a macro, for example, changing the text.
65
14
 
66
- See [options table](https://design-system.service.gov.uk/components/back-link/#options-example-default) for details.
67
-
68
- ### Setting up Nunjucks views and paths
69
-
70
- Below is an example setup using express configure views:
71
-
72
- nunjucks.configure('node_modules/govuk-frontend/components', {
73
- autoescape: true,
74
- cache: false,
75
- express: app
76
- })
77
-
78
- ## Contribution
79
-
80
- Guidelines can be found at [on our Github repository.](https://github.com/alphagov/govuk-frontend/blob/master/CONTRIBUTING.md "link to contributing guidelines on our github repository")
81
-
82
- ## License
83
-
84
- MIT
15
+ See [options table](https://design-system.service.gov.uk/components/back-link/#options-example-default) for details.
@@ -1,249 +1,15 @@
1
1
  # Breadcrumbs
2
2
 
3
- ## Introduction
3
+ ## Installation
4
4
 
5
- The Breadcrumbs component helps users to understand where they are within a website’s structure and move between levels.
5
+ See the [main README quick start guide](https://github.com/alphagov/govuk-frontend#quick-start) for how to install this component.
6
6
 
7
- ## Guidance
7
+ ## Guidance and Examples
8
8
 
9
9
  Find out when to use the breadcrumbs component in your service in the [GOV.UK Design System](https://design-system.service.gov.uk/components/breadcrumbs).
10
10
 
11
- ## Quick start examples
12
-
13
- ### Breadcrumbs
14
-
15
- [Preview this example in the Frontend review app](http://govuk-frontend-review.herokuapp.com/components/breadcrumbs/preview)
16
-
17
- #### Markup
18
-
19
- <div class="govuk-breadcrumbs">
20
- <ol class="govuk-breadcrumbs__list">
21
-
22
- <li class="govuk-breadcrumbs__list-item">
23
- <a class="govuk-breadcrumbs__link" href="/section">Section</a>
24
- </li>
25
-
26
- <li class="govuk-breadcrumbs__list-item">
27
- <a class="govuk-breadcrumbs__link" href="/section/sub-section">Sub-section</a>
28
- </li>
29
-
30
- </ol>
31
- </div>
32
-
33
- #### Macro
34
-
35
- {% from "breadcrumbs/macro.njk" import govukBreadcrumbs %}
36
-
37
- {{ govukBreadcrumbs({
38
- "items": [
39
- {
40
- "text": "Section",
41
- "href": "/section"
42
- },
43
- {
44
- "text": "Sub-section",
45
- "href": "/section/sub-section"
46
- }
47
- ]
48
- }) }}
49
-
50
- ### Breadcrumbs with one level
51
-
52
- [Preview this example in the Frontend review app](http://govuk-frontend-review.herokuapp.com/components/breadcrumbs/with-one-level/preview)
53
-
54
- #### Markup
55
-
56
- <div class="govuk-breadcrumbs">
57
- <ol class="govuk-breadcrumbs__list">
58
-
59
- <li class="govuk-breadcrumbs__list-item">
60
- <a class="govuk-breadcrumbs__link" href="/section">Section</a>
61
- </li>
62
-
63
- </ol>
64
- </div>
65
-
66
- #### Macro
67
-
68
- {% from "breadcrumbs/macro.njk" import govukBreadcrumbs %}
69
-
70
- {{ govukBreadcrumbs({
71
- "items": [
72
- {
73
- "text": "Section",
74
- "href": "/section"
75
- }
76
- ]
77
- }) }}
78
-
79
- ### Breadcrumbs with multiple levels
80
-
81
- [Preview this example in the Frontend review app](http://govuk-frontend-review.herokuapp.com/components/breadcrumbs/with-multiple-levels/preview)
82
-
83
- #### Markup
84
-
85
- <div class="govuk-breadcrumbs">
86
- <ol class="govuk-breadcrumbs__list">
87
-
88
- <li class="govuk-breadcrumbs__list-item">
89
- <a class="govuk-breadcrumbs__link" href="/">Home</a>
90
- </li>
91
-
92
- <li class="govuk-breadcrumbs__list-item">
93
- <a class="govuk-breadcrumbs__link" href="/section">Section</a>
94
- </li>
95
-
96
- <li class="govuk-breadcrumbs__list-item">
97
- <a class="govuk-breadcrumbs__link" href="/section/sub-section">Sub-section</a>
98
- </li>
99
-
100
- <li class="govuk-breadcrumbs__list-item">
101
- <a class="govuk-breadcrumbs__link" href="/section/sub-section/sub-sub-section">Sub Sub-section</a>
102
- </li>
103
-
104
- </ol>
105
- </div>
106
-
107
- #### Macro
108
-
109
- {% from "breadcrumbs/macro.njk" import govukBreadcrumbs %}
110
-
111
- {{ govukBreadcrumbs({
112
- "items": [
113
- {
114
- "text": "Home",
115
- "href": "/"
116
- },
117
- {
118
- "text": "Section",
119
- "href": "/section"
120
- },
121
- {
122
- "text": "Sub-section",
123
- "href": "/section/sub-section"
124
- },
125
- {
126
- "text": "Sub Sub-section",
127
- "href": "/section/sub-section/sub-sub-section"
128
- }
129
- ]
130
- }) }}
131
-
132
- ### Breadcrumbs without the home section
133
-
134
- [Preview this example in the Frontend review app](http://govuk-frontend-review.herokuapp.com/components/breadcrumbs/without-the-home-section/preview)
135
-
136
- #### Markup
137
-
138
- <div class="govuk-breadcrumbs">
139
- <ol class="govuk-breadcrumbs__list">
140
-
141
- <li class="govuk-breadcrumbs__list-item">
142
- <a class="govuk-breadcrumbs__link" href="/service-manual">Service Manual</a>
143
- </li>
144
-
145
- <li class="govuk-breadcrumbs__list-item">
146
- <a class="govuk-breadcrumbs__link" href="/service-manual/agile-delivery">Agile Delivery</a>
147
- </li>
148
-
149
- </ol>
150
- </div>
151
-
152
- #### Macro
153
-
154
- {% from "breadcrumbs/macro.njk" import govukBreadcrumbs %}
155
-
156
- {{ govukBreadcrumbs({
157
- "items": [
158
- {
159
- "text": "Service Manual",
160
- "href": "/service-manual"
161
- },
162
- {
163
- "text": "Agile Delivery",
164
- "href": "/service-manual/agile-delivery"
165
- }
166
- ]
167
- }) }}
168
-
169
- ### Breadcrumbs with last breadcrumb as current page
170
-
171
- [Preview this example in the Frontend review app](http://govuk-frontend-review.herokuapp.com/components/breadcrumbs/with-last-breadcrumb-as-current-page/preview)
172
-
173
- #### Markup
174
-
175
- <div class="govuk-breadcrumbs">
176
- <ol class="govuk-breadcrumbs__list">
177
-
178
- <li class="govuk-breadcrumbs__list-item">
179
- <a class="govuk-breadcrumbs__link" href="/">Home</a>
180
- </li>
181
-
182
- <li class="govuk-breadcrumbs__list-item">
183
- <a class="govuk-breadcrumbs__link" href="/browse/abroad">Passports, travel and living abroad</a>
184
- </li>
185
-
186
- <li class="govuk-breadcrumbs__list-item" aria-current="page">Travel abroad</li>
187
-
188
- </ol>
189
- </div>
190
-
191
- #### Macro
192
-
193
- {% from "breadcrumbs/macro.njk" import govukBreadcrumbs %}
194
-
195
- {{ govukBreadcrumbs({
196
- "items": [
197
- {
198
- "text": "Home",
199
- "href": "/"
200
- },
201
- {
202
- "text": "Passports, travel and living abroad",
203
- "href": "/browse/abroad"
204
- },
205
- {
206
- "text": "Travel abroad"
207
- }
208
- ]
209
- }) }}
210
-
211
- ## Requirements
212
-
213
- ### Build tool configuration
214
-
215
- When compiling the Sass files you'll need to define includePaths to reference the node_modules directory. Below is a sample configuration using gulp
216
-
217
- .pipe(sass({
218
- includePaths: 'node_modules/'
219
- }))
220
-
221
- ### Static asset path configuration
222
-
223
- In order to include the images used in the components, you need to configure your app to show these assets. Below is a sample configuration using Express js:
224
-
225
- app.use('/assets', express.static(path.join(__dirname, '/node_modules/govuk-frontend/assets')))
226
-
227
11
  ## Component options
228
12
 
229
13
  Use options to customise the appearance, content and behaviour of a component when using a macro, for example, changing the text.
230
14
 
231
- See [options table](https://design-system.service.gov.uk/components/breadcrumbs/#options-example-default) for details.
232
-
233
- ### Setting up Nunjucks views and paths
234
-
235
- Below is an example setup using express configure views:
236
-
237
- nunjucks.configure('node_modules/govuk-frontend/components', {
238
- autoescape: true,
239
- cache: false,
240
- express: app
241
- })
242
-
243
- ## Contribution
244
-
245
- Guidelines can be found at [on our Github repository.](https://github.com/alphagov/govuk-frontend/blob/master/CONTRIBUTING.md "link to contributing guidelines on our github repository")
246
-
247
- ## License
248
-
249
- MIT
15
+ See [options table](https://design-system.service.gov.uk/components/breadcrumbs/#options-example-default) for details.