govuk_publishing_components 12.16.0 → 12.17.0

Sign up to get free protection for your applications and to get access to all the features.
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