govuk_publishing_components 13.5.1 → 13.5.2

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: a1b34a6949ab633d2531b0d2b43093f2167cb8bbeecb8cedd5a2e2486e322b18
4
- data.tar.gz: e5dce48bed5ecfa808cfab9e469c62beb347227cf1d8c2b4fa517a50a40f8319
3
+ metadata.gz: db548793e2560002edb6bc2ac4fc0cf0fbcb48342d76c008de00f7b4e3519b4e
4
+ data.tar.gz: 7ff2b9a1602ed29bc5badfc740ec73cc615d0659c38d5441595d0b78b0a5ee68
5
5
  SHA512:
6
- metadata.gz: 82593b0c529ce2ae628682419c080d671adb1abbf7f6b1e920ea5f6b416b052e623c0d570f30b10e26c887b43141a5171082eac87338e009bf2460ee0ad92b92
7
- data.tar.gz: 9dac6d34ca45f7b69ed4da321bcca12196229ccf42f23fb3cf0cce2100e7d3f29ad4764135aaa6b158dd363faff634a70910a71c61769b4156d32d0f97e5973e
6
+ metadata.gz: 2f0a65ebf42f6cbbe6cf61b1e0be7b51964d4d6ab0219b2fae6a2b30f4f1d0cf8995722afbdb5098e0ca0b7f38a5fca9648a8592dba73850e44cda849f1105f5
7
+ data.tar.gz: 3fd2cc7380e755078aa4da8fa86a0af6cc9bd83144944f0cb1d154e4e363491ecb1278a5543d3c2f8abaedce4f3ddc8997d75f96bdaf77356eebea72cde9933a
@@ -0,0 +1,50 @@
1
+ window.GOVUK = window.GOVUK || {};
2
+ window.GOVUK.Modules = window.GOVUK.Modules || {};
3
+
4
+ (function (Modules) {
5
+ 'use strict';
6
+
7
+ Modules.TrackSelectChange = function () {
8
+ this.start = function (element) {
9
+ element.change(function(e) {
10
+ var selectedOption = $(this).find(":selected");
11
+ var trackable = '[data-track-category][data-track-action]';
12
+
13
+ if (selectedOption.is(trackable)) {
14
+ fireTrackingChange(selectedOption);
15
+ }
16
+ });
17
+
18
+ function fireTrackingChange(element) {
19
+ var options = {transport: 'beacon'},
20
+ category = element.attr('data-track-category'),
21
+ action = element.attr('data-track-action'),
22
+ label = element.attr('data-track-label'),
23
+ value = element.attr('data-track-value'),
24
+ dimension = element.attr('data-track-dimension'),
25
+ dimensionIndex = element.attr('data-track-dimension-index'),
26
+ extraOptions = element.attr('data-track-options');
27
+
28
+ if (label) {
29
+ options.label = label;
30
+ }
31
+
32
+ if (value) {
33
+ options.value = value;
34
+ }
35
+
36
+ if (dimension && dimensionIndex) {
37
+ options['dimension' + dimensionIndex] = dimension;
38
+ }
39
+
40
+ if (extraOptions) {
41
+ $.extend(options, JSON.parse(extraOptions));
42
+ }
43
+
44
+ if (GOVUK.analytics && GOVUK.analytics.trackEvent) {
45
+ GOVUK.analytics.trackEvent(category, action, options);
46
+ }
47
+ };
48
+ };
49
+ };
50
+ })(window.GOVUK.Modules);
@@ -18,6 +18,7 @@
18
18
  select_tag(
19
19
  id,
20
20
  options_for_select(options, selected_option),
21
+ class: "govuk-select",
21
22
  data: data_attributes
22
23
  )
23
24
  %>
@@ -4,13 +4,14 @@
4
4
  label ||= false
5
5
 
6
6
  select_helper = GovukPublishingComponents::Presenters::SelectHelper.new(options)
7
+ data_module = "data-module=track-select-change" unless select_helper.data_tracking?.eql?(false)
7
8
  %>
8
9
  <% if options.any? && id && label %>
9
10
  <div class="govuk-form-group gem-c-select">
10
11
  <label class="govuk-label" for="<%= id %>">
11
12
  <%= label %>
12
13
  </label>
13
- <select class="govuk-select" id="<%= id %>" name="<%= id %>">
14
+ <select class="govuk-select" id="<%= id %>" name="<%= id %>" <%= data_module %> >
14
15
  <%= options_for_select(select_helper.option_markup, select_helper.selected_option) %>
15
16
  </select>
16
17
  </div>
@@ -13,7 +13,7 @@ examples:
13
13
  data:
14
14
  label:
15
15
  text: 'Countries'
16
- options: [['', ''], ['France', 'fr'], ['Germany', 'de'], ['Sweden', 'se'], ['Switzerland', 'ch'], ['United Kingdom', 'gb'], ['United States', 'us']]
16
+ options: [['', ''], ['France', 'fr'], ['Germany', 'de'], ['Sweden', 'se'], ['Switzerland', 'ch'], ['United Kingdom', 'gb'], ['United States', 'us'], ['The Separate Customs Territory of Taiwan, Penghu, Kinmen, and Matsu (Chinese Taipei)', 'tw']]
17
17
  with_unique_identifier:
18
18
  data:
19
19
  id: 'unique-autocomplete'
@@ -31,25 +31,52 @@ 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.
34
+ with_tracking:
35
+ description: 'Tracking can be enabled on the select component by passing a minimum of data_track_category and data_track_action. Other tracking attributes are optional. Note: tracking events do not currently fire within the component guide.'
36
36
  data:
37
37
  id: 'dropdown3'
38
- label: 'With data attributes'
38
+ label: 'With tracking enabled'
39
39
  options:
40
40
  - text: 'Option one'
41
41
  value: 'option1'
42
42
  data_attributes:
43
- track_category: "hello"
44
- something_else: "moo"
43
+ track_category: 'relatedLinkClicked'
44
+ track_action: 1.1
45
+ track_label: '/link-1'
46
+ track_options:
47
+ dimension28: 1
48
+ dimension29: 'Link 1'
45
49
  - text: 'Option two'
46
50
  value: 'option2'
51
+ data_attributes:
52
+ track_category: 'relatedLinkClicked'
53
+ track_action: 1.2
54
+ track_label: '/link-2'
55
+ track_options:
56
+ dimension28: 2
57
+ dimension29: 'Link 2'
47
58
  - text: 'Option three'
48
59
  value: 'option3'
49
60
  data_attributes:
50
- track_category: 'navDocumentCollectionLinkClicked'
51
- track_action: 1.1
52
- track_label: '/government/publications/parental-responsibility-measures-for-behaviour-and-attendance'
61
+ track_category: 'relatedLinkClicked'
62
+ track_action: 1.3
63
+ track_label: '/link-3'
53
64
  track_options:
54
- dimension28: 2
55
- dimension29: 'School behaviour and attendance: parental responsibility measures'
65
+ dimension28: 3
66
+ dimension29: 'Link 3'
67
+ with_data_attributes:
68
+ description: Other data attributes can be passed to the component if needed.
69
+ data:
70
+ id: 'dropdown4'
71
+ label: 'With data attributes'
72
+ options:
73
+ - text: 'Option one'
74
+ value: 'option1'
75
+ data_attributes:
76
+ another_attribute: "attribute 1"
77
+ something_else: "attribute 2"
78
+ - text: 'Option two'
79
+ value: 'option2'
80
+ - text: 'Option three'
81
+ value: 'option3'
82
+
@@ -8,6 +8,10 @@ module GovukPublishingComponents
8
8
  @option_markup = get_options
9
9
  end
10
10
 
11
+ def data_tracking?
12
+ @options.any? { |item| item[:data_attributes] && item[:data_attributes][:track_category] && item[:data_attributes][:track_action] }
13
+ end
14
+
11
15
  private
12
16
 
13
17
  def get_options
@@ -31,6 +35,7 @@ module GovukPublishingComponents
31
35
  key_name = "data-#{key.to_s.split('_').join('-')}"
32
36
  attrs[key_name] = value.is_a?(Hash) ? value.to_json : value
33
37
  end
38
+
34
39
  attrs
35
40
  end
36
41
  end
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = '13.5.1'.freeze
2
+ VERSION = '13.5.2'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk_publishing_components
3
3
  version: !ruby/object:Gem::Version
4
- version: 13.5.1
4
+ version: 13.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev
@@ -316,6 +316,7 @@ files:
316
316
  - app/assets/javascripts/govuk_publishing_components/components/feedback.js
317
317
  - app/assets/javascripts/govuk_publishing_components/components/initial-focus.js
318
318
  - app/assets/javascripts/govuk_publishing_components/components/radio.js
319
+ - app/assets/javascripts/govuk_publishing_components/components/select.js
319
320
  - app/assets/javascripts/govuk_publishing_components/components/step-by-step-nav.js
320
321
  - app/assets/javascripts/govuk_publishing_components/dependencies.js
321
322
  - app/assets/javascripts/govuk_publishing_components/lib/current-location.js