govuk_publishing_components 16.22.0 → 16.23.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 (22) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/govuk_publishing_components/components/_contents-list.scss +7 -7
  3. data/app/assets/stylesheets/govuk_publishing_components/components/_document-list.scss +13 -13
  4. data/app/assets/stylesheets/govuk_publishing_components/components/_error-alert.scss +9 -9
  5. data/app/assets/stylesheets/govuk_publishing_components/components/print/_contents-list.scss +1 -1
  6. data/app/views/govuk_publishing_components/components/_attachment.html.erb +5 -2
  7. data/app/views/govuk_publishing_components/components/_attachment_link.html.erb +6 -1
  8. data/app/views/govuk_publishing_components/components/docs/attachment.yml +10 -0
  9. data/app/views/govuk_publishing_components/components/docs/attachment_link.yml +7 -0
  10. data/app/views/govuk_publishing_components/components/docs/error_alert.yml +1 -1
  11. data/config/locales/cy.yml +2 -0
  12. data/lib/govuk_publishing_components/presenters/button_helper.rb +2 -1
  13. data/lib/govuk_publishing_components/presenters/machine_readable/article_schema.rb +9 -121
  14. data/lib/govuk_publishing_components/presenters/machine_readable/creative_work_schema.rb +141 -0
  15. data/lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb +15 -2
  16. data/lib/govuk_publishing_components/presenters/machine_readable/page.rb +8 -0
  17. data/lib/govuk_publishing_components/presenters/machine_readable/potential_search_action_schema.rb +32 -0
  18. data/lib/govuk_publishing_components/presenters/machine_readable/search_results_page_schema.rb +1 -1
  19. data/lib/govuk_publishing_components/presenters/schema_org.rb +2 -0
  20. data/lib/govuk_publishing_components/version.rb +1 -1
  21. data/node_modules/accessible-autocomplete/package.json +1 -1
  22. metadata +4 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 95b56a2aa6bd25868976fc3e5b291839d2c11cf5271bb9b3e6f8ac32a46d6f59
4
- data.tar.gz: 7d38992eb4c6b0e2845f32d4daf8cc3338c64506e5d8e8323f131e0a0523a509
3
+ metadata.gz: 499dc46add59311a3228553f892592d6bd315d5c887065a8f9c081e624a17e2e
4
+ data.tar.gz: f783e7aa840aea99df1f17df0004fd384c24188729b84b5a85b21888fd958df1
5
5
  SHA512:
6
- metadata.gz: 638f80387030561bd91619036672512c91aacb1b5e30ac21865835b5f0bc35db3f207f874ff4f15dec418fac7450b95e5856d9bc40f2f7606f517d0cb7683808
7
- data.tar.gz: 22b64064ff1128e5563c562502e4742a08de5d78d37475f207a23779c3c0d01903cc374390c4b0254b154535284ce942570b006179b25173dffc04b50225eac0
6
+ metadata.gz: 58f75ee4333cf62f89c8dca38bba7307e011397d8dad70469cc91e23add2a38e72951a0010365551358d71d14a41168d4fd8420a78ba8dd930510b0a3cf00136
7
+ data.tar.gz: d92eb082c8e43725c177f7852d85b1dc23cc0eaf9cc4c2d7722c0335425b4f89233750ba590197f1079b08e0d6a45cdf6d8665a8003c482ec897c6913ecb7e5e
@@ -4,10 +4,10 @@
4
4
  // Always render the contents list above a
5
5
  // back to contents link
6
6
  position: relative;
7
- margin: 0 0 $gutter-two-thirds 0;
7
+ margin: 0 0 govuk-spacing(4) 0;
8
8
  z-index: 1;
9
- background: $white;
10
- box-shadow: 0 20px 15px -10px $white;
9
+ background: govuk-colour("white");
10
+ box-shadow: 0 20px 15px -10px govuk-colour("white");
11
11
  }
12
12
 
13
13
  .gem-c-contents-list__title {
@@ -49,17 +49,17 @@
49
49
  }
50
50
 
51
51
  .gem-c-contents-list__list-item {
52
- padding-top: $gutter-one-third;
52
+ padding-top: govuk-spacing(2);
53
53
  line-height: 1.3;
54
54
  list-style-type: none;
55
55
 
56
- @include media(tablet) {
57
- padding-top: $gutter-one-quarter;
56
+ @include govuk-media-query($from: tablet) {
57
+ padding-top: govuk-spacing(6) / 4;
58
58
  }
59
59
  }
60
60
 
61
61
  .gem-c-contents-list__list-item--dashed {
62
- $contents-spacing: $gutter-half + 10;
62
+ $contents-spacing: govuk-spacing(5);
63
63
  margin-left: $contents-spacing;
64
64
  padding-right: $contents-spacing;
65
65
 
@@ -1,15 +1,15 @@
1
1
  .gem-c-document-list {
2
2
  @include govuk-text-colour;
3
- @include core-19;
3
+ @include govuk-font(19);
4
4
  margin: 0;
5
5
  padding: 0;
6
6
  }
7
7
 
8
8
  .gem-c-document-list__item {
9
9
  overflow: hidden;
10
- margin-bottom: $gutter-one-third;
11
- padding-bottom: $gutter-one-third;
12
- border-bottom: 1px solid $border-colour;
10
+ margin-bottom: govuk-spacing(2);
11
+ padding-bottom: govuk-spacing(2);
12
+ border-bottom: 1px solid $govuk-border-colour;
13
13
  list-style: none;
14
14
 
15
15
  &:last-child {
@@ -20,21 +20,21 @@
20
20
  .gem-c-document-list__item-title {
21
21
  @include govuk-link-common;
22
22
  @include govuk-link-style-default;
23
- @include bold-19;
23
+ @include govuk-font($size: 19, $weight: bold);
24
24
  display: inline-block;
25
25
  }
26
26
 
27
27
  .gem-c-document-list__item-title--context {
28
- margin-right: $gutter-one-third;
28
+ margin-right: govuk-spacing(2);
29
29
 
30
30
  .direction-rtl & {
31
31
  margin-right: 0;
32
- margin-left: $gutter-one-third;
32
+ margin-left: govuk-spacing(2);
33
33
  }
34
34
  }
35
35
 
36
36
  .gem-c-document-list__item-context {
37
- color: $grey-1;
37
+ color: govuk-colour("grey-1");
38
38
  }
39
39
 
40
40
  .gem-c-document-list__item-description {
@@ -49,23 +49,23 @@
49
49
 
50
50
  .gem-c-document-list__attribute {
51
51
  @include govuk-text-colour;
52
- @include core-14;
52
+ @include govuk-font(14);
53
53
  display: inline-block;
54
54
  list-style: none;
55
- padding-right: $gutter-two-thirds;
55
+ padding-right: govuk-spacing(4);
56
56
 
57
57
  .direction-rtl & {
58
58
  padding-right: 0;
59
- padding-left: $gutter-two-thirds;
59
+ padding-left: govuk-spacing(4);
60
60
  }
61
61
  }
62
62
 
63
63
  .gem-c-document-list--bottom-margin {
64
- margin-bottom: $gutter-two-thirds;
64
+ margin-bottom: govuk-spacing(4);
65
65
  }
66
66
 
67
67
  .gem-c-document-list--top-margin {
68
- margin-top: $gutter-two-thirds;
68
+ margin-top: govuk-spacing(4);
69
69
  }
70
70
 
71
71
  .gem-c-document-list__multi-list {
@@ -1,33 +1,33 @@
1
1
  .gem-c-error-alert {
2
2
  color: $gem-text-colour;
3
- padding: $gem-spacing-scale-3;
3
+ padding: govuk-spacing(3);
4
4
  border: $gem-border-width-mobile solid $gem-error-colour;
5
5
  @include govuk-responsive-margin(8, "bottom");
6
6
 
7
- @include media(tablet) {
8
- padding: $gem-spacing-scale-4;
7
+ @include govuk-media-query($from: tablet) {
8
+ padding: govuk-spacing(4);
9
9
  border-width: $gem-border-width-tablet;
10
10
  }
11
11
  }
12
12
 
13
13
  .gem-c-error-alert__message {
14
- @include bold-19;
14
+ @include govuk-font(19, $weight: bold);
15
15
  margin: 0;
16
16
  }
17
17
 
18
18
  .gem-c-error-summary__title {
19
19
  margin-top: 0;
20
- margin-bottom: $gem-spacing-scale-3;
20
+ margin-bottom: govuk-spacing(3);
21
21
 
22
- @include media(tablet) {
23
- margin-bottom: $gem-spacing-scale-4;
22
+ @include govuk-media-query($from: tablet) {
23
+ margin-bottom: govuk-spacing(4);
24
24
  }
25
25
 
26
- @include bold-24;
26
+ @include govuk-font(24, $weight: bold);
27
27
  }
28
28
 
29
29
  .gem-c-error-summary__body {
30
- @include core-19;
30
+ @include govuk-font(19);
31
31
  margin: 0;
32
32
  }
33
33
 
@@ -9,7 +9,7 @@
9
9
 
10
10
  // Put indentation back where we use list style types
11
11
  .gem-c-contents-list__list-item--dashed {
12
- margin-left: $gutter / 2;
12
+ margin-left: govuk-spacing(3);
13
13
  list-style-type: disc;
14
14
  }
15
15
 
@@ -3,6 +3,7 @@
3
3
  target ||= "_self"
4
4
  hide_opendocument_metadata ||= false
5
5
  attributes = []
6
+ data_attributes ||= {}
6
7
 
7
8
  if attachment.content_type_name
8
9
  content = if attachment.content_type_abbr
@@ -35,7 +36,8 @@
35
36
  class: "govuk-link",
36
37
  target: target,
37
38
  tabindex: "-1",
38
- "aria-hidden": true do %>
39
+ "aria-hidden": true,
40
+ data: data_attributes do %>
39
41
  <% if attachment.document? %>
40
42
  <%= render "govuk_publishing_components/components/attachment/thumbnail_document.svg" %>
41
43
  <% elsif attachment.spreadsheet? %>
@@ -50,7 +52,8 @@
50
52
  <%= tag.h2 class: "gem-c-attachment__title" do %>
51
53
  <%= link_to attachment.title, attachment.url,
52
54
  class: "govuk-link",
53
- target: target %>
55
+ target: target,
56
+ data: data_attributes %>
54
57
  <% end %>
55
58
 
56
59
  <% if attributes.any? %>
@@ -1,6 +1,7 @@
1
1
  <%
2
2
  attachment = GovukPublishingComponents::Presenters::Attachment.new(attachment)
3
3
  target ||= nil
4
+ data_attributes ||= {}
4
5
  attributes = []
5
6
  if attachment.content_type_name
6
7
  content = if attachment.content_type_abbr
@@ -29,6 +30,10 @@
29
30
  end
30
31
  %>
31
32
  <%= tag.span(class: "gem-c-attachment-link") do %>
32
- <%= link_to(attachment.title, attachment.url, class: "govuk-link", target: target) %>
33
+ <%= link_to(attachment.title, attachment.url,
34
+ class: "govuk-link",
35
+ target: target,
36
+ data: data_attributes) %>
37
+
33
38
  <%= raw("(#{attributes.join(', ')})") if attributes.any? %>
34
39
  <% end %>
@@ -78,3 +78,13 @@ examples:
78
78
  content_type: application/pdf
79
79
  file_size: 20000
80
80
  alternative_format_contact_email: defra.helpline@defra.gsi.gov.uk
81
+ with_data_attributes:
82
+ data:
83
+ attachment:
84
+ title: "Department for Transport information asset register"
85
+ url: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/747661/department-for-transport-information-asset-register.csv
86
+ filename: department-for-transport-information-asset-register.csv
87
+ content_type: application/pdf
88
+ file_size: 20000
89
+ data_attributes:
90
+ gtm: "attachment-preview"
@@ -60,3 +60,10 @@ examples:
60
60
  title: "Temporary snow ploughs: guidance note"
61
61
  url: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/259634/temporary-snow-ploughs.pdf
62
62
  target: _blank
63
+ with_data_attributes:
64
+ data:
65
+ attachment:
66
+ title: "Temporary snow ploughs: guidance note"
67
+ url: https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/259634/temporary-snow-ploughs.pdf
68
+ data_attributes:
69
+ gtm: "attachment-preview"
@@ -1,4 +1,4 @@
1
- name: Error Alert
1
+ name: Error alert
2
2
  description: Used at the top of the page, to summarise a unsuccessful user action.
3
3
  accessibility_criteria: |
4
4
  - should be focused on page load, to ensure the message is noticed by
@@ -6,3 +6,5 @@ cy:
6
6
  or: 'neu'
7
7
  back_link:
8
8
  back: "Yn ôl"
9
+ contents_list:
10
+ contents: Cynnwys
@@ -4,7 +4,8 @@ module GovukPublishingComponents
4
4
  module Presenters
5
5
  class ButtonHelper
6
6
  attr_reader :href, :text, :title, :info_text, :rel, :data_attributes,
7
- :margin_bottom, :inline_layout, :target, :type, :start, :secondary, :secondary_quiet, :destructive
7
+ :margin_bottom, :inline_layout, :target, :type, :start,
8
+ :secondary, :secondary_quiet, :destructive
8
9
 
9
10
  def initialize(local_assigns)
10
11
  @href = local_assigns[:href]
@@ -5,38 +5,19 @@ module GovukPublishingComponents
5
5
 
6
6
  def initialize(page)
7
7
  @page = page
8
- @pages = {}
9
8
  end
10
9
 
11
10
  def structured_data
12
11
  # http://schema.org/Article
13
- {
14
- "@context" => "http://schema.org",
15
- "@type" => "Article",
16
- "mainEntityOfPage" => {
17
- "@type" => "WebPage",
18
- "@id" => page.canonical_url,
19
- },
20
- "headline" => page.title,
21
- "datePublished" => page.content_item["first_published_at"],
22
- "dateModified" => page.content_item["public_updated_at"],
23
- "description" => page.description,
24
- "publisher" => {
25
- "@type" => "Organization",
26
- "name" => "GOV.UK",
27
- "url" => "https://www.gov.uk",
28
- "logo" => {
29
- "@type" => "ImageObject",
30
- "url" => page.logo_url,
31
- }
32
- }
33
- }.merge(image_schema).merge(author_schema).merge(body).merge(is_part_of).merge(about).merge(has_part)
12
+ data = CreativeWorkSchema.new(@page).structured_data
13
+ .merge(body)
14
+ .merge(search_action)
15
+ data["@type"] = "Article"
16
+ data
34
17
  end
35
18
 
36
19
  private
37
20
 
38
- attr_reader :presenter
39
-
40
21
  # Not all formats have a `body` - some have their content split over
41
22
  # multiple fields. In this case we'll skip the `articleBody` field
42
23
  def body
@@ -47,104 +28,11 @@ module GovukPublishingComponents
47
28
  }
48
29
  end
49
30
 
50
- def image_schema
51
- {
52
- "image" => page.has_image? ? [page.image_url] : page.image_placeholders
53
- }
54
- end
55
-
56
- def author_schema
57
- return {} unless publishing_organisation
58
-
59
- {
60
- "author" => {
61
- "@type" => "Organization",
62
- "name" => publishing_organisation["title"],
63
- "url" => Plek.current.website_root + publishing_organisation["base_path"],
64
- }
65
- }
66
- end
67
-
68
- def publishing_organisation
69
- page.content_item.dig("links", "primary_publishing_organisation").to_a.first
70
- end
71
-
72
- def is_part_of
73
- return {} unless step_by_step_schemas.any? || document_collections.any?
74
-
75
- {
76
- "isPartOf" => document_collections + step_by_step_schemas
77
- }
78
- end
79
-
80
- def step_by_step_schemas
81
- # We could include `related_to_step_navs` eventually too, but initially
82
- # link to those that we render in the "step_by_step_nav_related" component
83
- @step_by_step_schemas ||= fetch_step_by_step_schemas
84
- end
85
-
86
- def fetch_step_by_step_schemas
87
- page.content_item.dig("links", "part_of_step_navs").to_a.map do |step_by_step|
88
- step_by_step_page = linked_page(step_by_step)
89
- structured_data = HowToSchema.new(step_by_step_page.canonical_url).structured_data
90
-
91
- structured_data.merge(image_schema)
92
- end
93
- end
94
-
95
- def linked_page(step_by_step)
96
- Page.new(
97
- content_item: step_by_step,
98
- schema: :article,
99
- logo_url: page.logo_url,
100
- image_placeholders: page.image_placeholders
101
- )
102
- end
103
-
104
- def has_part
105
- return {} unless collection_pages("documents").any?
106
-
107
- {
108
- "hasPart" => collection_pages("documents").map { |document| HasPartSchema.new(document).structured_data }
109
- }
110
- end
111
-
112
- def document_collections
113
- @document_collections ||= collection_pages("document_collections")
114
- .map { |document| IsPartOfSchema.new(document).structured_data }
115
- end
116
-
117
- def collection_pages(linked_type)
118
- @pages[linked_type] ||= fetch_collection_pages(linked_type)
119
- end
120
-
121
- def fetch_collection_pages(linked_type)
122
- page.content_item.dig("links", linked_type).to_a.map { |document| document["web_url"] }
123
- end
124
-
125
- def about
126
- return {} unless live_taxons.any?
127
-
128
- {
129
- "about" => linked_taxons
130
- }
131
- end
132
-
133
- def live_taxons
134
- taxons = page.content_item.dig("links", "taxons")
135
- return [] unless taxons
136
-
137
- taxons.select { |taxon| taxon["phase"] == "live" }
138
- end
31
+ def search_action
32
+ return {} unless page.document_type == "manual"
139
33
 
140
- def linked_taxons
141
- live_taxons.map do |taxon|
142
- {
143
- "@context" => "http://schema.org",
144
- "@type" => "Thing",
145
- "sameAs" => taxon["web_url"]
146
- }
147
- end
34
+ manuals_facet_params = { manual: page.base_path }
35
+ PotentialSearchActionSchema.new(manuals_facet_params).structured_data
148
36
  end
149
37
  end
150
38
  end
@@ -0,0 +1,141 @@
1
+ module GovukPublishingComponents
2
+ module Presenters
3
+ class CreativeWorkSchema
4
+ attr_reader :page
5
+
6
+ def initialize(page)
7
+ @page = page
8
+ @pages = {}
9
+ end
10
+
11
+ def structured_data
12
+ # http://schema.org/CreativeWork
13
+ {
14
+ "@context" => "http://schema.org",
15
+ "@type" => "CreativeWork",
16
+ "mainEntityOfPage" => {
17
+ "@type" => "WebPage",
18
+ "@id" => page.canonical_url,
19
+ },
20
+ "headline" => page.title,
21
+ "datePublished" => page.content_item["first_published_at"],
22
+ "dateModified" => page.content_item["public_updated_at"],
23
+ "description" => page.description,
24
+ "publisher" => {
25
+ "@type" => "Organization",
26
+ "name" => "GOV.UK",
27
+ "url" => "https://www.gov.uk",
28
+ "logo" => {
29
+ "@type" => "ImageObject",
30
+ "url" => page.logo_url,
31
+ }
32
+ }
33
+ }.merge(image_schema).merge(author_schema).merge(is_part_of).merge(about).merge(has_part)
34
+ end
35
+
36
+ private
37
+
38
+ attr_reader :presenter
39
+
40
+ def image_schema
41
+ {
42
+ "image" => page.has_image? ? [page.image_url] : page.image_placeholders
43
+ }
44
+ end
45
+
46
+ def author_schema
47
+ return {} unless publishing_organisation
48
+
49
+ {
50
+ "author" => {
51
+ "@type" => "Organization",
52
+ "name" => publishing_organisation["title"],
53
+ "url" => Plek.current.website_root + publishing_organisation["base_path"],
54
+ }
55
+ }
56
+ end
57
+
58
+ def publishing_organisation
59
+ page.content_item.dig("links", "primary_publishing_organisation").to_a.first
60
+ end
61
+
62
+ def is_part_of
63
+ return {} unless step_by_step_schemas.any? || document_collections.any?
64
+
65
+ {
66
+ "isPartOf" => document_collections + step_by_step_schemas
67
+ }
68
+ end
69
+
70
+ def step_by_step_schemas
71
+ # We could include `related_to_step_navs` eventually too, but initially
72
+ # link to those that we render in the "step_by_step_nav_related" component
73
+ @step_by_step_schemas ||= fetch_step_by_step_schemas
74
+ end
75
+
76
+ def fetch_step_by_step_schemas
77
+ page.content_item.dig("links", "part_of_step_navs").to_a.map do |step_by_step|
78
+ step_by_step_page = linked_page(step_by_step)
79
+ structured_data = HowToSchema.new(step_by_step_page.canonical_url).structured_data
80
+
81
+ structured_data.merge(image_schema)
82
+ end
83
+ end
84
+
85
+ def linked_page(step_by_step)
86
+ Page.new(
87
+ content_item: step_by_step,
88
+ schema: :article,
89
+ logo_url: page.logo_url,
90
+ image_placeholders: page.image_placeholders
91
+ )
92
+ end
93
+
94
+ def has_part
95
+ return {} unless collection_pages("documents").any?
96
+
97
+ {
98
+ "hasPart" => collection_pages("documents").map { |document| HasPartSchema.new(document).structured_data }
99
+ }
100
+ end
101
+
102
+ def document_collections
103
+ @document_collections ||= collection_pages("document_collections")
104
+ .map { |document| IsPartOfSchema.new(document).structured_data }
105
+ end
106
+
107
+ def collection_pages(linked_type)
108
+ @pages[linked_type] ||= fetch_collection_pages(linked_type)
109
+ end
110
+
111
+ def fetch_collection_pages(linked_type)
112
+ page.content_item.dig("links", linked_type).to_a.map { |document| document["web_url"] }
113
+ end
114
+
115
+ def about
116
+ return {} unless live_taxons.any?
117
+
118
+ {
119
+ "about" => linked_taxons
120
+ }
121
+ end
122
+
123
+ def live_taxons
124
+ taxons = page.content_item.dig("links", "taxons")
125
+ return [] unless taxons
126
+
127
+ taxons.select { |taxon| taxon["phase"] == "live" }
128
+ end
129
+
130
+ def linked_taxons
131
+ live_taxons.map do |taxon|
132
+ {
133
+ "@context" => "http://schema.org",
134
+ "@type" => "Thing",
135
+ "sameAs" => taxon["web_url"]
136
+ }
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
@@ -17,8 +17,8 @@ module GovukPublishingComponents
17
17
  "@id" => page.canonical_url,
18
18
  },
19
19
  "name" => page.title,
20
- "description" => page.description || page.body
21
- }.merge(parent_organisations).merge(sub_organisations)
20
+ "description" => page.description || page.body,
21
+ }.merge(parent_organisations).merge(sub_organisations).merge(search_action)
22
22
  end
23
23
 
24
24
  private
@@ -53,6 +53,19 @@ module GovukPublishingComponents
53
53
  "sameAs" => url
54
54
  }
55
55
  end
56
+
57
+ def search_action
58
+ PotentialSearchActionSchema.new(organisation_facet_params).structured_data
59
+ end
60
+
61
+ def slug
62
+ uri = URI.parse(page.canonical_url)
63
+ File.basename(uri.path)
64
+ end
65
+
66
+ def organisation_facet_params
67
+ { organisations: [slug] }
68
+ end
56
69
  end
57
70
  end
58
71
  end
@@ -43,6 +43,14 @@ module GovukPublishingComponents
43
43
  local_assigns[:image_placeholders]
44
44
  end
45
45
 
46
+ def document_type
47
+ content_item["document_type"]
48
+ end
49
+
50
+ def base_path
51
+ content_item["base_path"]
52
+ end
53
+
46
54
  def content_item
47
55
  local_assigns[:content_item]
48
56
  end
@@ -0,0 +1,32 @@
1
+ require 'plek'
2
+
3
+ module GovukPublishingComponents
4
+ module Presenters
5
+ class PotentialSearchActionSchema
6
+ attr_reader :facet_params
7
+
8
+ BASE_SEARCH_URL = "#{Plek.current.website_root}/search/all?keywords={query}&order=relevance".freeze
9
+
10
+ def initialize(facet_params)
11
+ @facet_params = facet_params
12
+ end
13
+
14
+ def structured_data
15
+ # http://schema.org/SearchAction - minimal
16
+ {
17
+ "potentialAction" => {
18
+ "@type": "SearchAction",
19
+ "target": search_template,
20
+ "query": "required"
21
+ }
22
+ }
23
+ end
24
+
25
+ private
26
+
27
+ def search_template
28
+ "#{BASE_SEARCH_URL}&#{facet_params.to_query}"
29
+ end
30
+ end
31
+ end
32
+ end
@@ -7,7 +7,7 @@ module GovukPublishingComponents
7
7
 
8
8
  def structured_data
9
9
  # http://schema.org/SearchResultsPage
10
- data = ArticleSchema.new(@page).structured_data
10
+ data = CreativeWorkSchema.new(@page).structured_data
11
11
  data["@type"] = "SearchResultsPage"
12
12
  data
13
13
  end
@@ -1,11 +1,13 @@
1
1
  require 'govuk_publishing_components/presenters/machine_readable/page'
2
2
  require 'govuk_publishing_components/presenters/machine_readable/article_schema'
3
+ require 'govuk_publishing_components/presenters/machine_readable/creative_work_schema'
3
4
  require 'govuk_publishing_components/presenters/machine_readable/how_to_schema'
4
5
  require 'govuk_publishing_components/presenters/machine_readable/has_part_schema'
5
6
  require 'govuk_publishing_components/presenters/machine_readable/is_part_of_schema'
6
7
  require 'govuk_publishing_components/presenters/machine_readable/news_article_schema'
7
8
  require 'govuk_publishing_components/presenters/machine_readable/organisation_schema'
8
9
  require 'govuk_publishing_components/presenters/machine_readable/person_schema'
10
+ require 'govuk_publishing_components/presenters/machine_readable/potential_search_action_schema'
9
11
  require 'govuk_publishing_components/presenters/machine_readable/search_results_page_schema'
10
12
 
11
13
  module GovukPublishingComponents
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = '16.22.0'.freeze
2
+ VERSION = '16.23.0'.freeze
3
3
  end
@@ -49,7 +49,7 @@
49
49
  "/"
50
50
  ],
51
51
  "_resolved": "git://github.com/alphagov/accessible-autocomplete.git#0c518b4fa79b9a95b544410858486ed9e6403c84",
52
- "_shasum": "6724fb3799bd5eaf745a4504a6514ccd224def3a",
52
+ "_shasum": "0e8451ecad5df899dfb32b674eaf77890c7654ef",
53
53
  "_shrinkwrap": null,
54
54
  "_spec": "accessible-autocomplete@git://github.com/alphagov/accessible-autocomplete.git#add-multiselect-support",
55
55
  "_where": "/var/lib/jenkins/workspace/ublishing_components_master-N4FWJIUY4CIFHKGZOAAEVVXODRY3YBORQOPIBBXWX72VUPSGJRRQ",
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: 16.22.0
4
+ version: 16.23.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: 2019-05-21 00:00:00.000000000 Z
11
+ date: 2019-05-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gds-api-adapters
@@ -660,6 +660,7 @@ files:
660
660
  - lib/govuk_publishing_components/presenters/highlight_boxes_helper.rb
661
661
  - lib/govuk_publishing_components/presenters/image_card_helper.rb
662
662
  - lib/govuk_publishing_components/presenters/machine_readable/article_schema.rb
663
+ - lib/govuk_publishing_components/presenters/machine_readable/creative_work_schema.rb
663
664
  - lib/govuk_publishing_components/presenters/machine_readable/has_part_schema.rb
664
665
  - lib/govuk_publishing_components/presenters/machine_readable/how_to_schema.rb
665
666
  - lib/govuk_publishing_components/presenters/machine_readable/is_part_of_schema.rb
@@ -667,6 +668,7 @@ files:
667
668
  - lib/govuk_publishing_components/presenters/machine_readable/organisation_schema.rb
668
669
  - lib/govuk_publishing_components/presenters/machine_readable/page.rb
669
670
  - lib/govuk_publishing_components/presenters/machine_readable/person_schema.rb
671
+ - lib/govuk_publishing_components/presenters/machine_readable/potential_search_action_schema.rb
670
672
  - lib/govuk_publishing_components/presenters/machine_readable/search_results_page_schema.rb
671
673
  - lib/govuk_publishing_components/presenters/meta_tags.rb
672
674
  - lib/govuk_publishing_components/presenters/organisation_logo_helper.rb