govuk_publishing_components 12.16.0 → 12.17.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c617ee9f0636b4ff168ddd58e7a9b8eef7f434006057cee0af7bdcf6e43ae8f8
4
- data.tar.gz: 78d6bf3676384563725fce4239a3a221d970d943e4effbf8a274716bf487e250
3
+ metadata.gz: daf83cc27bbb44657c8193582e9f26cfd1e36301a24ba5ed2ba92ac461577905
4
+ data.tar.gz: 59ac08cf3f8ead780a03d649fcef1ce65cb4b514af1ea557961764b24968accc
5
5
  SHA512:
6
- metadata.gz: e195aee9e94e5737636c13977e1ecc5a65f05af8d7162b21be96a7958fbfb66603b4d166a2b4123db3c77669a66da57e1008940d46c2627d21ea23a0c38d5532
7
- data.tar.gz: a90730ae35728b47466250874f48bfb182fbb9bd27d0c4481e4cb8ff60044726fa5ecd0e4ff9a3e2cea14d4825acc448e94f800413a7c4f18f0a9e669a1cd991
6
+ metadata.gz: 4d90669dad89315ddadc53669ea3bb668e56661efb7bb2e3ad048fbc1723b65dab49e1b83d1988cc954c2d7b23058470def9c78a4527226467a1527c7dfa834c
7
+ data.tar.gz: a248d29a9794f949b176059d65e10b48a78a892f39d1d664d0ede520aaeee34be262e46997ae3924a0ff8817fb85602057e34ac2e428d86e334801dc5aa274c8
@@ -2,6 +2,8 @@
2
2
  options ||= []
3
3
  id ||= false
4
4
  label ||= false
5
+
6
+ select_helper = GovukPublishingComponents::Presenters::SelectHelper.new(options)
5
7
  %>
6
8
  <% if options.any? && id && label %>
7
9
  <div class="govuk-form-group gem-c-select">
@@ -9,9 +11,7 @@
9
11
  <%= label %>
10
12
  </label>
11
13
  <select class="govuk-select" id="<%= id %>" name="<%= id %>">
12
- <% options.each do |option| %>
13
- <option value="<%= option[:value] %>" <% if option[:selected] %>selected<% end %>><%= option[:text] %></option>
14
- <% end %>
14
+ <%= options_for_select(select_helper.option_markup, select_helper.selected_option) %>
15
15
  </select>
16
16
  </div>
17
17
  <% end %>
@@ -22,7 +22,7 @@ examples:
22
22
  with_preselect:
23
23
  data:
24
24
  id: 'dropdown2'
25
- label: 'My Dropdown'
25
+ label: 'Option 2 preselected'
26
26
  options:
27
27
  - text: 'Option one'
28
28
  value: 'option1'
@@ -31,3 +31,25 @@ examples:
31
31
  selected: true
32
32
  - text: 'Option three'
33
33
  value: 'option3'
34
+ with_data_attributes:
35
+ description: Data attributes can be added to the option elements of the select. Note that the component will not do anything with them - Javascript will have to be added in the application that uses the component, for example to fire tracking events.
36
+ data:
37
+ id: 'dropdown3'
38
+ label: 'With data attributes'
39
+ options:
40
+ - text: 'Option one'
41
+ value: 'option1'
42
+ data_attributes:
43
+ track_category: "hello"
44
+ something_else: "moo"
45
+ - text: 'Option two'
46
+ value: 'option2'
47
+ - text: 'Option three'
48
+ value: 'option3'
49
+ data_attributes:
50
+ track_category: 'navDocumentCollectionLinkClicked'
51
+ track_action: 1.1
52
+ track_label: '/government/publications/parental-responsibility-measures-for-behaviour-and-attendance'
53
+ track_options:
54
+ dimension28: 2
55
+ dimension29: 'School behaviour and attendance: parental responsibility measures'
@@ -9,6 +9,7 @@ require "govuk_publishing_components/presenters/page_with_step_by_step_navigatio
9
9
  require "govuk_publishing_components/presenters/content_breadcrumbs_based_on_parent"
10
10
  require "govuk_publishing_components/presenters/content_breadcrumbs_based_on_taxons"
11
11
  require "govuk_publishing_components/presenters/services"
12
+ require "govuk_publishing_components/presenters/select"
12
13
  require "govuk_publishing_components/presenters/meta_tags"
13
14
  require "govuk_publishing_components/presenters/taxonomy_navigation"
14
15
  require "govuk_publishing_components/presenters/curated_taxonomy_sidebar_links"
@@ -0,0 +1,38 @@
1
+ module GovukPublishingComponents
2
+ module Presenters
3
+ class SelectHelper
4
+ attr_reader :options, :option_markup, :selected_option
5
+
6
+ def initialize(options)
7
+ @options = options
8
+ @option_markup = get_options
9
+ end
10
+
11
+ private
12
+
13
+ def get_options
14
+ return if options.nil?
15
+
16
+ options.map { |option|
17
+ @selected_option = option[:value] if option[:selected]
18
+ [
19
+ option[:text],
20
+ option[:value],
21
+ options_data_attribute(option[:data_attributes])
22
+ ]
23
+ }
24
+ end
25
+
26
+ def options_data_attribute(attributes)
27
+ return {} if attributes.nil?
28
+
29
+ attrs = {}
30
+ attributes.each do |key, value|
31
+ key_name = "data-#{key.to_s.split('_').join('-')}"
32
+ attrs[key_name] = value.is_a?(Hash) ? value.to_json : value
33
+ end
34
+ attrs
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = '12.16.0'.freeze
2
+ VERSION = '12.17.0'.freeze
3
3
  end
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: 12.16.0
4
+ version: 12.17.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: 2018-11-30 00:00:00.000000000 Z
11
+ date: 2018-12-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govspeak
@@ -606,6 +606,7 @@ files:
606
606
  - lib/govuk_publishing_components/presenters/page_with_step_by_step_navigation.rb
607
607
  - lib/govuk_publishing_components/presenters/related_navigation_helper.rb
608
608
  - lib/govuk_publishing_components/presenters/schema_org.rb
609
+ - lib/govuk_publishing_components/presenters/select.rb
609
610
  - lib/govuk_publishing_components/presenters/services.rb
610
611
  - lib/govuk_publishing_components/presenters/step_by_step_nav_helper.rb
611
612
  - lib/govuk_publishing_components/presenters/subscription_links_helper.rb