metadata_presenter 2.16.10 → 2.16.13

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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/metadata_presenter/engine_controller.rb +25 -0
  3. data/app/models/metadata_presenter/component.rb +8 -0
  4. data/app/validators/metadata_presenter/base_validator.rb +10 -5
  5. data/app/validators/metadata_presenter/date_validator.rb +8 -0
  6. data/app/views/layouts/metadata_presenter/application.html.erb +9 -1
  7. data/app/views/metadata_presenter/analytics/_cookie_banner.html.erb +63 -0
  8. data/app/views/metadata_presenter/analytics/_ga4.html.erb +10 -0
  9. data/app/views/metadata_presenter/analytics/_google.html.erb +5 -0
  10. data/app/views/metadata_presenter/analytics/_gtm.html.erb +7 -0
  11. data/app/views/metadata_presenter/analytics/_ua.html.erb +11 -0
  12. data/app/views/metadata_presenter/analytics/analytics.html.erb +3 -0
  13. data/app/views/metadata_presenter/component/_textarea.html.erb +3 -3
  14. data/config/initializers/supported_analytics.rb +1 -0
  15. data/config/locales/en.yml +12 -0
  16. data/default_metadata/component/autocomplete.json +12 -0
  17. data/default_metadata/string/error.accept.json +1 -1
  18. data/default_metadata/string/error.date.json +1 -1
  19. data/default_metadata/string/error.date_after.json +1 -1
  20. data/default_metadata/string/error.date_before.json +1 -1
  21. data/default_metadata/string/error.max_length.json +1 -1
  22. data/default_metadata/string/error.max_word.json +1 -1
  23. data/default_metadata/string/error.maximum.json +1 -1
  24. data/default_metadata/string/error.min_length.json +1 -1
  25. data/default_metadata/string/error.min_word.json +1 -1
  26. data/default_metadata/string/error.minimum.json +1 -1
  27. data/default_metadata/string/error.number.json +1 -1
  28. data/default_metadata/string/error.required.json +2 -2
  29. data/default_metadata/string/error.virus_scan.json +1 -1
  30. data/lib/metadata_presenter/version.rb +1 -1
  31. data/schemas/component/autocomplete.json +17 -0
  32. data/schemas/definition/select.json +29 -0
  33. data/schemas/definition/select_option.json +34 -0
  34. metadata +14 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 485ccb033ebf65579ec72329d55c564cdbc34506e3f1969fcb50f9a23c8c5eb4
4
- data.tar.gz: 8a37bba5f55e35afb405f9b264ffaf6e42467bafeaf84ffee36982b3275ca3ce
3
+ metadata.gz: f654eb8910e6b544c20c7b4966c923dfaa60fe94bf2afb0602ba6522b22c897b
4
+ data.tar.gz: fdaf6374f850ecd62c1b41fb2c985d98e5fd422943012e437344086a7fd9ad07
5
5
  SHA512:
6
- metadata.gz: 9df9ad7705f673275fcebe228a6b1868dbd0985daadf05b97bf43014920bc18a213bac3b537c5306db36d4de530480915dd76a6ae00c7602f79e2147fb4765c3
7
- data.tar.gz: e87be78ce97fdc4b0bca7d093b40a3e956e7dd29a72427523780bcf1176801e1eb264980b1a862e83eaac7fe8811a86cf4491fa2ea8b9a24b01ab46fea704963
6
+ metadata.gz: bd349181c6279c3f338b6004a8730d4b6f9f5624be90d99712875e16c799827936837c66b24d99738440588b26ee8ab67213bf18cabfb35e788da8e7734f49d7
7
+ data.tar.gz: ae76a89d85d486dfea4f4154e5bfd3da23455501eec8ac6c9b8ec28a015fa87253e5d093afcdec60e9e0928cdeff4b43072376f8f2c3ba0d1bb572168d7ef223
@@ -35,6 +35,21 @@ module MetadataPresenter
35
35
  end
36
36
  helper_method :answered?
37
37
 
38
+ def analytics_cookie_name
39
+ @analytics_cookie_name ||= "analytics-#{service.service_name.parameterize}"
40
+ end
41
+ helper_method :analytics_cookie_name
42
+
43
+ def allow_analytics?
44
+ no_analytics_cookie? || cookies[analytics_cookie_name] == 'accepted'
45
+ end
46
+ helper_method :allow_analytics?
47
+
48
+ def show_cookie_banner?
49
+ no_analytics_cookie? && analytics_tags_present?
50
+ end
51
+ helper_method :show_cookie_banner?
52
+
38
53
  private
39
54
 
40
55
  def not_found
@@ -44,5 +59,15 @@ module MetadataPresenter
44
59
  def redirect_to_page(url)
45
60
  redirect_to File.join(request.script_name, url)
46
61
  end
62
+
63
+ def analytics_tags_present?
64
+ Rails.application.config.supported_analytics.values.flatten.any? do |analytic|
65
+ ENV[analytic].present?
66
+ end
67
+ end
68
+
69
+ def no_analytics_cookie?
70
+ cookies[analytics_cookie_name].blank?
71
+ end
47
72
  end
48
73
  end
@@ -6,6 +6,10 @@ class MetadataPresenter::Component < MetadataPresenter::Metadata
6
6
  'textarea' => 'string'
7
7
  }.freeze
8
8
 
9
+ # Used for max_length and max_word validations.
10
+ # Threshold percentage at which the remaining count is shown
11
+ VALIDATION_STRING_LENGTH_THRESHOLD = 75
12
+
9
13
  def to_partial_path
10
14
  "metadata_presenter/component/#{type}"
11
15
  end
@@ -46,6 +50,10 @@ class MetadataPresenter::Component < MetadataPresenter::Metadata
46
50
  .keys
47
51
  end
48
52
 
53
+ def validation_threshold
54
+ VALIDATION_STRING_LENGTH_THRESHOLD
55
+ end
56
+
49
57
  private
50
58
 
51
59
  def validation_bundle_key
@@ -75,10 +75,9 @@ module MetadataPresenter
75
75
  # is not present
76
76
  def default_error_message
77
77
  default_error_message_key = "error.#{schema_key}"
78
- default_message = Rails
79
- .application
80
- .config
81
- .default_metadata[default_error_message_key]
78
+ default_message = Rails.application
79
+ .config
80
+ .default_metadata[default_error_message_key]
82
81
 
83
82
  if default_message.present?
84
83
  default_message['value'] % error_message_hash
@@ -116,10 +115,16 @@ module MetadataPresenter
116
115
  def error_message_hash
117
116
  {
118
117
  control: component.humanised_title,
119
- schema_key.to_sym => component.validation[schema_key]
118
+ schema_key.to_sym => validation_value
120
119
  }
121
120
  end
122
121
 
122
+ # The validation configuration value
123
+ # Override if additional formatting of the value is required
124
+ def validation_value
125
+ component.validation[schema_key]
126
+ end
127
+
123
128
  # Method signature to be overwrite in the subclass if you do not want to allow
124
129
  # blank values. We should not allow blank when performing the required
125
130
  # validation.
@@ -1,5 +1,7 @@
1
1
  module MetadataPresenter
2
2
  class DateValidator < BaseValidator
3
+ DATE_STRING_VALIDATIONS = %w[date_after date_before].freeze
4
+
3
5
  def invalid_answer?
4
6
  Date.strptime(
5
7
  "#{user_answer.year}-#{user_answer.month}-#{user_answer.day}",
@@ -10,5 +12,11 @@ module MetadataPresenter
10
12
  rescue Date::Error
11
13
  true
12
14
  end
15
+
16
+ def validation_value
17
+ return unless schema_key.in?(DATE_STRING_VALIDATIONS)
18
+
19
+ Date.parse(component.validation[schema_key]).strftime('%d %m %Y')
20
+ end
13
21
  end
14
22
  end
@@ -4,7 +4,7 @@
4
4
  <title><%= service.service_name %></title>
5
5
  <%= csrf_meta_tags %>
6
6
  <%= csp_meta_tag %>
7
-
7
+
8
8
  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
9
9
  <link rel="shortcut icon" sizes="16x16 32x32 48x48" href="<%= asset_pack_url('media/images/favicon.ico') %>" type="image/x-icon" />
10
10
  <link rel="mask-icon" href="<%= asset_pack_url('media/images/govuk-mask-icon.svg') %>" color="blue">
@@ -15,9 +15,17 @@
15
15
 
16
16
  <%= stylesheet_pack_tag 'govuk' %>
17
17
  <%= stylesheet_link_tag 'application', media: 'all' %>
18
+
19
+ <% if allow_analytics? %>
20
+ <%= render template: 'metadata_presenter/analytics/analytics' %>
21
+ <% end %>
18
22
  </head>
19
23
 
20
24
  <body class="govuk-template__body">
25
+ <% if show_cookie_banner? %>
26
+ <%= render partial: 'metadata_presenter/analytics/cookie_banner' %>
27
+ <% end %>
28
+
21
29
  <%= render template: 'metadata_presenter/header/show' %>
22
30
  <div class="govuk-width-container govuk-body-m">
23
31
  <main class="govuk-main-wrapper govuk-main-wrapper--auto-spacing" id="main-content" role="main">
@@ -0,0 +1,63 @@
1
+ <div class="govuk-cookie-banner" id="govuk-cookie-banner" data-nosnippet role="region" aria-label="<%= t('analytics.heading', service_name: service.service_name) %>">
2
+ <div class="govuk-cookie-banner__message govuk-width-container" id="govuk-cookie-banner-message">
3
+
4
+ <div class="govuk-grid-row">
5
+ <div class="govuk-grid-column-two-thirds">
6
+ <h2 class="govuk-cookie-banner__heading govuk-heading-m">
7
+ <%= t('analytics.heading', service_name: service.service_name) %>
8
+ </h2>
9
+
10
+ <div class="govuk-cookie-banner__content">
11
+ <p class="govuk-body"><%= t('analytics.body_1') %></p>
12
+ <p class="govuk-body"><%= t('analytics.body_2') %></p>
13
+ </div>
14
+ </div>
15
+ </div>
16
+
17
+ <div class="govuk-button-group">
18
+ <button type="button" class="govuk-button" data-module="govuk-button" onclick='analytics.accept("<%= analytics_cookie_name %>")'>
19
+ <%= t('analytics.accept') %>
20
+ </button>
21
+ <button type="button" class="govuk-button" data-module="govuk-button" onclick='analytics.reject("<%= analytics_cookie_name %>")'>
22
+ <%= t('analytics.reject') %>
23
+ </button>
24
+ <a class="govuk-link" href="/cookies"><%= t('analytics.view_cookies') %></a>
25
+ </div>
26
+ </div>
27
+
28
+ <div class="govuk-cookie-banner__message govuk-width-container" id="govuk-cookie-banner-message-accepted" role="alert" style="display: none;">
29
+ <div class="govuk-grid-row">
30
+ <div class="govuk-grid-column-two-thirds">
31
+ <div class="govuk-cookie-banner__content">
32
+ <p class="govuk-body">
33
+ <%= t('analytics.confirmation', action: t('analytics.accepted')) %>
34
+ </p>
35
+ </div>
36
+ </div>
37
+ </div>
38
+
39
+ <div class="govuk-button-group">
40
+ <button class="govuk-button" data-module="govuk-button" onclick="analytics.hideCookieBanner()">
41
+ <%= t('analytics.hide') %>
42
+ </button>
43
+ </div>
44
+ </div>
45
+
46
+ <div class="govuk-cookie-banner__message govuk-width-container" id="govuk-cookie-banner-message-rejected" role="alert" style="display: none;">
47
+ <div class="govuk-grid-row">
48
+ <div class="govuk-grid-column-two-thirds">
49
+ <div class="govuk-cookie-banner__content">
50
+ <p class="govuk-body">
51
+ <%= t('analytics.confirmation', action: t('analytics.rejected')) %>
52
+ </p>
53
+ </div>
54
+ </div>
55
+ </div>
56
+
57
+ <div class="govuk-button-group">
58
+ <button class="govuk-button" data-module="govuk-button" onclick="analytics.hideCookieBanner()">
59
+ <%= t('analytics.hide') %>
60
+ </button>
61
+ </div>
62
+ </div>
63
+ </div>
@@ -0,0 +1,10 @@
1
+ <!-- Global site tag (gtag.js) - Google Analytics -->
2
+ <script async src="https://www.googletagmanager.com/gtag/js?id=<%= analytic_tag %>"></script>
3
+ <script>
4
+ window.dataLayer = window.dataLayer || [];
5
+ function gtag(){dataLayer.push(arguments);}
6
+ gtag('js', new Date());
7
+
8
+ gtag('config', <%= analytic_tag %>);
9
+ </script>
10
+ <!-- End Global site tag (gtag.js) - Google Analytics -->
@@ -0,0 +1,5 @@
1
+ <% analytics.each do |analytic| %>
2
+ <% if ENV[analytic].present? %>
3
+ <%= render partial: "metadata_presenter/analytics/#{analytic.downcase}", locals: { analytic_tag: ENV[analytic] } %>
4
+ <% end %>
5
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <!-- Google Tag Manager -->
2
+ <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
3
+ new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
4
+ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
5
+ 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
6
+ })(window,document,'script','dataLayer',<%= analytic_tag %>);</script>
7
+ <!-- End Google Tag Manager -->
@@ -0,0 +1,11 @@
1
+ <!-- Google Universal Analytics -->
2
+ <script>
3
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
4
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
5
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
6
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
7
+
8
+ ga('create', <%= analytic_tag %>, 'auto');
9
+ ga('send', 'pageview');
10
+ </script>
11
+ <!-- End Google Universal Analytics -->
@@ -0,0 +1,3 @@
1
+ <% Rails.application.config.supported_analytics.each do |provider, analytics| %>
2
+ <%= render partial: "metadata_presenter/analytics/#{provider}", locals: { analytics: analytics } %>
3
+ <% end %>
@@ -6,8 +6,8 @@
6
6
  text: component.hint
7
7
  },
8
8
  name: "answers[#{component.name}]",
9
- max_chars: component.maxchars,
10
- max_words: component.maxwords,
11
- threshold: component.threshold,
9
+ max_chars: component.validation['max_length'],
10
+ max_words: component.validation['max_word'],
11
+ threshold: component.validation_threshold,
12
12
  rows: component.rows
13
13
  %>
@@ -0,0 +1 @@
1
+ Rails.application.config.supported_analytics = { google: %w[UA GTM GA4] }
@@ -0,0 +1,12 @@
1
+ en:
2
+ analytics:
3
+ heading: Cookies on %{service_name}
4
+ body_1: We use some essential cookies to make this service work.
5
+ body_2: We'd also like to use analytics cookies so we can understand how you use the service and make improvements.
6
+ accept: Accept analytics cookies
7
+ reject: Reject analytics cookies
8
+ view_cookies: View cookies
9
+ accepted: accepted
10
+ rejected: rejected
11
+ confirmation: You've %{action} analytics cookies.
12
+ hide: Hide this message
@@ -0,0 +1,12 @@
1
+ {
2
+ "_id": "component.autocomplete",
3
+ "_type": "autocomplete",
4
+ "errors": {},
5
+ "hint": "",
6
+ "options": [],
7
+ "name": "component-name",
8
+ "legend": "Question",
9
+ "validation": {
10
+ "required": true
11
+ }
12
+ }
@@ -2,5 +2,5 @@
2
2
  "_id": "error.accept",
3
3
  "_type": "string.error",
4
4
  "description": "File uploaded is wrong type",
5
- "value": "%{control} was not uploaded successfully as it is the wrong type"
5
+ "value": "\"%{control}\" was not uploaded successfully as it is the wrong type"
6
6
  }
@@ -2,5 +2,5 @@
2
2
  "_id": "error.date",
3
3
  "_type": "string.error",
4
4
  "description": "Input (date) is not a valid date",
5
- "value": "Enter a valid date for %{control}"
5
+ "value": "Enter a valid date for \"%{control}\""
6
6
  }
@@ -2,5 +2,5 @@
2
2
  "_id": "error.date_after",
3
3
  "_type": "string.error",
4
4
  "description": "Input (date) is earlier than allowed",
5
- "value": "Enter a later date for %{control}"
5
+ "value": "Your answer for \"%{control}\" must be %{date_after} or later"
6
6
  }
@@ -2,5 +2,5 @@
2
2
  "_id": "error.date_before",
3
3
  "_type": "string.error",
4
4
  "description": "Input (date) is later than allowed",
5
- "value": "Enter an earlier date for %{control}"
5
+ "value": "Your answer for \"%{control}\" must be %{date_before} or earlier"
6
6
  }
@@ -2,5 +2,5 @@
2
2
  "_id": "error.max_length",
3
3
  "_type": "string.error",
4
4
  "description": "Input (string) is too long",
5
- "value": "Your answer for '%{control}' is too long (%{max_length} characters at most)"
5
+ "value": "Your answer for \"%{control}\" must be %{max_length} characters or fewer"
6
6
  }
@@ -2,5 +2,5 @@
2
2
  "_id": "error.max_word",
3
3
  "_type": "string.error",
4
4
  "description": "Input (number) is higher than the maximum number of words allowed",
5
- "value": "Enter a lower number of words for %{control}"
5
+ "value": "Your answer for \"%{control}\" must be %{max_word} words or fewer"
6
6
  }
@@ -2,5 +2,5 @@
2
2
  "_id": "error.maximum",
3
3
  "_type": "string.error",
4
4
  "description": "Input (number) is larger than the maximum allowed",
5
- "value": "Enter a lower number for %{control}"
5
+ "value": "Your answer for \"%{control}\" must be %{maximum} or lower"
6
6
  }
@@ -2,5 +2,5 @@
2
2
  "_id": "error.min_length",
3
3
  "_type": "string.error",
4
4
  "description": "Input (string) is too short",
5
- "value": "Your answer for '%{control}' is too short (%{min_length} characters at least)"
5
+ "value": "Your answer for \"%{control}\" must be %{min_length} characters or more"
6
6
  }
@@ -2,5 +2,5 @@
2
2
  "_id": "error.min_word",
3
3
  "_type": "string.error",
4
4
  "description": "Input (number) is lower than the minimum number of words allowed",
5
- "value": "Enter a higher number of words for %{control}"
5
+ "value": "Your answer for \"%{control}\" must be %{min_word} words or more"
6
6
  }
@@ -2,5 +2,5 @@
2
2
  "_id": "error.minimum",
3
3
  "_type": "string.error",
4
4
  "description": "Input (number) is lower than the minimum allowed",
5
- "value": "Enter a higher number for %{control}"
5
+ "value": "Your answer for \"%{control}\" must be %{minimum} or higher"
6
6
  }
@@ -2,5 +2,5 @@
2
2
  "_id": "error.number",
3
3
  "_type": "string.error",
4
4
  "description": "Input (number) is not a number",
5
- "value": "Enter a number for %{control}"
5
+ "value": "Enter a number for \"%{control}\""
6
6
  }
@@ -2,6 +2,6 @@
2
2
  "_id": "error.required",
3
3
  "_type": "string.error",
4
4
  "description": "Input is required",
5
- "value": "Enter an answer for %{control}",
6
- "value:cy": "Rhowch ateb i {control}"
5
+ "value": "Enter an answer for \"%{control}\"",
6
+ "value:cy": "Rhowch ateb i \"{control}\""
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "_id": "error.virus_scan",
3
3
  "_type": "string.error",
4
4
  "description": "File uploaded contains virus",
5
- "value": "%{control} was not uploaded successfully because it contains a virus"
5
+ "value": "\"%{control}\" was not uploaded successfully because it contains a virus"
6
6
  }
7
7
 
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '2.16.10'.freeze
2
+ VERSION = '2.16.13'.freeze
3
3
  end
@@ -0,0 +1,17 @@
1
+ {
2
+ "$id": "http://gov.uk/schema/v1.0.0/autocomplete",
3
+ "_name": "autocomplete",
4
+ "title": "Autocomplete",
5
+ "description": "Let users select one option from an auto-completing list",
6
+ "type": "object",
7
+ "allOf": [
8
+ {
9
+ "$ref": "definition.select"
10
+ }
11
+ ],
12
+ "properties": {
13
+ "_type": {
14
+ "const": "autocomplete"
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "$id": "http://gov.uk/schema/v1.0.0/definition/select",
3
+ "_name": "definition.select",
4
+ "title": "Select component definition",
5
+ "allOf": [
6
+ {
7
+ "$ref": "definition.field"
8
+ },
9
+ {
10
+ "$ref": "definition.width_class.input"
11
+ }
12
+ ],
13
+ "properties": {
14
+ "items": {
15
+ "title": "Options",
16
+ "description": "Items that users can select",
17
+ "type": "array",
18
+ "items": {
19
+ "$ref": "definition.select_option"
20
+ }
21
+ }
22
+ },
23
+ "required": [
24
+ "items"
25
+ ],
26
+ "category": [
27
+ "select"
28
+ ]
29
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "$id": "http://gov.uk/schema/v1.0.0/definition/select_option",
3
+ "_name": "definition.select_option",
4
+ "title": "Select option",
5
+ "description": "Component that provides a select option",
6
+ "type": "object",
7
+ "properties": {
8
+ "_type": {
9
+ "const": "select_option"
10
+ },
11
+ "text": {
12
+ "title": "Option text",
13
+ "description": "Text displayed to users for that option",
14
+ "type": "string",
15
+ "content": true
16
+ },
17
+ "value": {
18
+ "title": "Option value",
19
+ "description": "Value assigned when users select option",
20
+ "type": "string"
21
+ }
22
+ },
23
+ "allOf": [
24
+ {
25
+ "$ref": "definition.component"
26
+ }
27
+ ],
28
+ "required": [
29
+ "value"
30
+ ],
31
+ "category": [
32
+ "select_option"
33
+ ]
34
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metadata_presenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.16.10
4
+ version: 2.16.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Forms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-20 00:00:00.000000000 Z
11
+ date: 2022-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder
@@ -333,6 +333,12 @@ files:
333
333
  - app/validators/metadata_presenter/word_count.rb
334
334
  - app/views/errors/404.html
335
335
  - app/views/layouts/metadata_presenter/application.html.erb
336
+ - app/views/metadata_presenter/analytics/_cookie_banner.html.erb
337
+ - app/views/metadata_presenter/analytics/_ga4.html.erb
338
+ - app/views/metadata_presenter/analytics/_google.html.erb
339
+ - app/views/metadata_presenter/analytics/_gtm.html.erb
340
+ - app/views/metadata_presenter/analytics/_ua.html.erb
341
+ - app/views/metadata_presenter/analytics/analytics.html.erb
336
342
  - app/views/metadata_presenter/attribute/_body.html.erb
337
343
  - app/views/metadata_presenter/attribute/_heading.html.erb
338
344
  - app/views/metadata_presenter/attribute/_lede.html.erb
@@ -363,8 +369,11 @@ files:
363
369
  - config/initializers/default_text.rb
364
370
  - config/initializers/inflections.rb
365
371
  - config/initializers/schemas.rb
372
+ - config/initializers/supported_analytics.rb
366
373
  - config/initializers/supported_components.rb
374
+ - config/locales/en.yml
367
375
  - config/routes.rb
376
+ - default_metadata/component/autocomplete.json
368
377
  - default_metadata/component/checkboxes.json
369
378
  - default_metadata/component/content.json
370
379
  - default_metadata/component/date.json
@@ -448,6 +457,7 @@ files:
448
457
  - lib/metadata_presenter/test_helpers.rb
449
458
  - lib/metadata_presenter/version.rb
450
459
  - lib/tasks/metadata_presenter_tasks.rake
460
+ - schemas/component/autocomplete.json
451
461
  - schemas/component/checkboxes.json
452
462
  - schemas/component/content.json
453
463
  - schemas/component/date.json
@@ -493,6 +503,8 @@ files:
493
503
  - schemas/definition/page.json
494
504
  - schemas/definition/radio.json
495
505
  - schemas/definition/repeatable.json
506
+ - schemas/definition/select.json
507
+ - schemas/definition/select_option.json
496
508
  - schemas/definition/width_class.input.json
497
509
  - schemas/definition/width_class.json
498
510
  - schemas/errors/errors.json