govuk_publishing_components 24.16.1 → 24.18.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +25 -76
  3. data/app/assets/images/govuk_publishing_components/action-link-arrow--brexit.svg +3 -0
  4. data/app/assets/javascripts/govuk_publishing_components/analytics/custom-dimensions.js +1 -0
  5. data/app/assets/javascripts/govuk_publishing_components/components/button.js +1 -1
  6. data/app/assets/javascripts/govuk_publishing_components/components/character-count.js +1 -1
  7. data/app/assets/javascripts/govuk_publishing_components/components/checkboxes.js +10 -10
  8. data/app/assets/javascripts/govuk_publishing_components/components/details.js +5 -5
  9. data/app/assets/javascripts/govuk_publishing_components/components/error-summary.js +1 -1
  10. data/app/assets/javascripts/govuk_publishing_components/components/layout-header.js +1 -1
  11. data/app/assets/javascripts/govuk_publishing_components/components/radio.js +1 -1
  12. data/app/assets/javascripts/govuk_publishing_components/components/tabs.js +1 -1
  13. data/app/assets/javascripts/govuk_publishing_components/lib/govspeak/all.js +1 -0
  14. data/app/assets/javascripts/govuk_publishing_components/modules.js +23 -20
  15. data/app/assets/javascripts/govuk_publishing_components/rum-loader.js.erb +18 -13
  16. data/app/assets/javascripts/govuk_publishing_components/vendor/lux/{lux-polyfill.js → lux-measurer.js} +0 -0
  17. data/app/assets/javascripts/govuk_publishing_components/vendor/lux/{lux.js → lux-reporter.js} +0 -0
  18. data/app/assets/javascripts/govuk_publishing_components/vendor/polyfills/all.js +1 -0
  19. data/app/assets/stylesheets/govuk_publishing_components/components/_action-link.scss +25 -0
  20. data/app/assets/stylesheets/govuk_publishing_components/components/_layout-header.scss +5 -1
  21. data/app/views/govuk_publishing_components/components/_action_link.html.erb +2 -0
  22. data/app/views/govuk_publishing_components/components/_character_count.html.erb +1 -1
  23. data/app/views/govuk_publishing_components/components/_checkboxes.html.erb +2 -2
  24. data/app/views/govuk_publishing_components/components/_details.html.erb +1 -1
  25. data/app/views/govuk_publishing_components/components/_layout_for_public.html.erb +1 -0
  26. data/app/views/govuk_publishing_components/components/_radio.html.erb +3 -0
  27. data/app/views/govuk_publishing_components/components/docs/action_link.yml +2 -2
  28. data/app/views/govuk_publishing_components/components/docs/layout_footer.yml +8 -0
  29. data/app/views/govuk_publishing_components/components/docs/radio.yml +10 -0
  30. data/app/views/govuk_publishing_components/components/layout_header/_header_logo.html.erb +1 -1
  31. data/config/initializers/assets.rb +2 -2
  32. data/lib/govuk_publishing_components/presenters/content_breadcrumbs_based_on_priority.rb +11 -24
  33. data/lib/govuk_publishing_components/presenters/meta_tags.rb +23 -1
  34. data/lib/govuk_publishing_components/presenters/public_layout_helper.rb +8 -0
  35. data/lib/govuk_publishing_components/version.rb +1 -1
  36. metadata +9 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6fa4cc15c73945ed5cadb8da13004d32ca8815d1ce90c3d19f4981d14be0f1d5
4
- data.tar.gz: dcead4701b9524c83a2f7d897e2e8e4defc2de6ee83350664f467140439d6767
3
+ metadata.gz: c29fbe8ad46db11c8172e16fcd68bb08cc6e6799de22293cc29cd1829b6a938b
4
+ data.tar.gz: ac3904c23ae5a71ca5d556558da2411750454338bdcac2f1747f061322ee2daf
5
5
  SHA512:
6
- metadata.gz: 81abe2a341566203cbf3db3d3f194540e9322cd21654c7e6cd3a3b2acf2212d3b7ac0b3a15785ddf8f3415820b27154e92c28ff48107f0aa18132b98a33a39ba
7
- data.tar.gz: 626dee02647614f4e9513b98d2bba9cf1aa7d2d74e52e34604d5e23239167d1f5cb0184bf961ec52e795f10c6bf854b93674ef1a4f352d1869f83e84c02cf16f
6
+ metadata.gz: 7c1c5d8b01c9036993418b85125975b0bac85d59e8d7e9fdca6ae8d2444f9742c0c6b017adce4b0e1ba0482e2a410bf992f1e3556f8c971200a18d306ddba07a
7
+ data.tar.gz: e19439505f30c55bdfcb3fe1f2637f47311ae1c978e6bb5e0b50b09ada4ab0a60ddeb259167048d836ff97863c44213f06fbd369c774969a70452c3f88486724
data/README.md CHANGED
@@ -1,103 +1,52 @@
1
- GOV.UK Publishing Components
1
+ # GOV.UK Publishing Components
2
+
2
3
  [![status](https://badgen.net/github/status/alphagov/govuk_publishing_components/master)](https://ci.integration.publishing.service.gov.uk/job/govuk_publishing_components/job/master/)
3
4
  [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
4
5
  [![Stylelint Style Guide](https://img.shields.io/badge/code_style-stylelint-brightgreen.svg)](https://github.com/alphagov/stylelint-config-gds/)
5
- =====================
6
6
 
7
- GOV.UK Publishing Components is a Ruby gem to document and distribute components for GOV.UK applications.
7
+ A Ruby gem to document and distribute components for GOV.UK applications. It provides:
8
8
 
9
- It provides:
10
9
  - a shared library of components
11
10
  - helpers to generate component payloads
12
11
  - an application to preview components and provide guidance
12
+ - [GOV.UK Design System](https://design-system.service.gov.uk/) styles and components (via [GOV.UK Frontend](https://github.com/alphagov/govuk-frontend))
13
13
 
14
- Components should be added to this gem if they are required in more than one application, otherwise they should be added to that application.
15
-
16
- ## How to
17
-
18
- - [Install and use this gem](/docs/install-and-use.md)
19
- - [Use a component in your application](/docs/use-components.md)
20
- - [Generate a new component](/docs/generate-a-new-component.md)
21
- - [Develop a component](/docs/develop-component.md)
22
- - [Run the component guide](/docs/run-component-guide.md)
23
- - [Move a component from an application to the gem](/docs/moving-components-upstream-into-this-gem.md)
24
- - [Publish/release a new version of the gem](/docs/publishing-to-rubygems.md)
25
- - [Keep this gem in sync with the Design System](/docs/upgrade-govuk-frontend.md)
26
-
27
- ## Architecture / structure
28
-
29
- ![](https://docs.google.com/drawings/d/e/2PACX-1vRj6JM7cQvngDl3Gr_U9G4xga2gsU7Z-d2qHHQcsBdjsW4WaC9_eQdryBJIS69cLkrY7S0fK9BcrPSF/pub?w=960&h=720)
30
-
31
- [Source](https://docs.google.com/drawings/d/1N8-kbyCN_xOvvshN6d2HnQz5i5Bqed2WIatI3Nj9gNQ/edit)
32
-
33
- There are 2 types of helper classes in this app:
34
-
35
- - [AppHelpers](lib/govuk_publishing_components/app_helpers). Are exposed to the applications using this gem. They should be documented using RDoc.
36
- - [Component Presenters](lib/govuk_publishing_components/presenters). Anything in these classes is only for use within the components. They should be marked `@private`.
14
+ Components should be added to this gem if they are required in more than one application, otherwise they should be added to that application. All components should meet the same standards of browser and assistive technology support described in [GOV.UK Frontend](https://github.com/alphagov/govuk-frontend#browser-and-assistive-technology-support).
37
15
 
38
- ## Relationship with GOV.UK Design System
16
+ ## Technical documentation
39
17
 
40
- GOV.UK Publishing Components also makes [GOV.UK Design System](https://design-system.service.gov.uk/) styles and components available to GOV.UK's frontend applications. This gem consumes [GOV.UK Frontend](https://github.com/alphagov/govuk-frontend) via [Yarn](https://classic.yarnpkg.com/).
18
+ You can use the [GOV.UK Docker environment](https://github.com/alphagov/govuk-docker) or the local `startup.sh` script to run the app. Read the [guidance on local frontend development](https://docs.publishing.service.gov.uk/manual/local-frontend-development.html) to find out more about each approach, before you get started.
41
19
 
42
- ## Browser and assistive technology support
20
+ If you are using GOV.UK Docker, remember to combine it with the commands that follow. See the [GOV.UK Docker usage instructions](https://github.com/alphagov/govuk-docker#usage) for examples.
43
21
 
44
- GOV.UK Publishing Components shares the same standards in terms of browser and assistive technology support with [GOV.UK Frontend](https://github.com/alphagov/govuk-frontend#browser-and-assistive-technology-support).
45
-
46
- ## Documentation
47
-
48
- [See the rubydoc.info documentation](http://www.rubydoc.info/gems/govuk_publishing_components)
49
-
50
- ## Working locally
51
-
52
- ### Install dependencies
53
-
54
- As well as the Ruby, you will also need the [Yarn package manager](https://classic.yarnpkg.com/en/docs/install/) to allow installing [npm](https://npmjs.com) dependencies.
55
-
56
- Install the application's dependencies with:
22
+ ### Running the test suite
57
23
 
58
24
  ```sh
59
- bundle install
60
- yarn install
25
+ bundle exec rake
61
26
  ```
62
27
 
63
- ### Running a local app with a local gem
64
-
65
- The GDS Developer Docs has a [guide on local frontend development](https://docs.publishing.service.gov.uk/manual/local-frontend-development.html) that covers setting up a local app to use the local version of the components gem in Docker and using the `./startup.sh` script.
28
+ To run JavaScript tests (only):
66
29
 
67
- ### Running tests
68
-
69
- The default rake task runs all the linting and test tasks:
70
-
71
- ```sh
72
- bin/rake
73
30
  ```
74
- Javascript is tested using Jasmine and the [Jasmine gem](https://github.com/pivotal/jasmine-gem). Tests can be run either in the browser or on the command line via the dummy app’s tasks:
75
-
76
- ```sh
77
- # browser
31
+ # run JS tests in browser
78
32
  bin/rake app:jasmine
79
33
 
80
- # command line
34
+ # run JS tests on command line
81
35
  bin/rake app:jasmine:ci
82
36
  ```
83
37
 
84
- ### Viewing the component guide
85
-
86
- View the component guide in your browser with:
87
-
88
- ```sh
89
- ./startup.sh
90
- ```
91
-
92
- The guide should be available at http://localhost:3212
93
-
94
- ### View documentation
95
-
96
- Preview documentation in your browser with:
97
-
98
- ```sh
99
- bundle exec yard server --reload
100
- ```
38
+ ### Further documentation
39
+
40
+ - [Install and use this gem](docs/install-and-use.md)
41
+ - [Use a component in your application](docs/use-components.md)
42
+ - [Generate a new component](docs/generate-a-new-component.md)
43
+ - [Testing a component](docs/testing-components.md)
44
+ - [Move a component from an application to the gem](docs/moving-components-upstream-into-this-gem.md)
45
+ - [Publish/release a new version of the gem](docs/publishing-to-rubygems.md)
46
+ - [Keep this gem in sync with the Design System](docs/upgrade-govuk-frontend.md)
47
+ - [Code documentation on rubydoc.info](http://www.rubydoc.info/gems/govuk_publishing_components)
48
+ - [Component conventions](docs/component_conventions.md)
49
+ - [Component principles](docs/component_principles.md)
101
50
 
102
51
  ## Licence
103
52
 
@@ -0,0 +1,3 @@
1
+ <svg width="38" height="36" viewBox="0 0 38 36" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M38 35.8461C34.8518 35.8299 31.701 35.8136 28.5528 35.7974C28.5447 29.2599 28.5366 22.7252 28.5284 16.1878C21.8989 22.7252 15.2721 29.2599 8.64252 35.7974C5.8547 35.792 3.06417 35.7838 0.276344 35.7784C0.262798 34.1366 0.249251 32.4948 0.232996 30.8503C7.36917 23.7195 14.5026 16.5833 21.6388 9.44717C14.4268 9.47697 7.21204 9.50406 0 9.53387C3.17254 6.35862 6.34778 3.18608 9.52032 0.010837C19.0135 0.00812776 28.5068 0.00270925 38 0C38 11.9234 38 23.8577 38 35.8461Z" fill="#FF003B"/>
3
+ </svg>
@@ -63,6 +63,7 @@
63
63
  'taxon-ids': { dimension: 59, defaultValue: 'other' },
64
64
  'content-has-history': { dimension: 39, defaultValue: 'false' },
65
65
  'publishing-application': { dimension: 89 },
66
+ 'brexit-audience': { dimension: 111 },
66
67
  stepnavs: { dimension: 96 },
67
68
  'relevant-result-shown': { dimension: 83 },
68
69
  'spelling-suggestion': { dimension: 81 }
@@ -2,4 +2,4 @@
2
2
  // = require govuk/components/button/button.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.Button = window.GOVUKFrontend
5
+ window.GOVUK.Modules.GovukButton = window.GOVUKFrontend
@@ -2,4 +2,4 @@
2
2
  // = require govuk/components/character-count/character-count.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.CharacterCount = window.GOVUKFrontend
5
+ window.GOVUK.Modules.GovukCharacterCount = window.GOVUKFrontend
@@ -3,17 +3,17 @@
3
3
  // = require govuk/components/checkboxes/checkboxes.js
4
4
  window.GOVUK = window.GOVUK || {}
5
5
  window.GOVUK.Modules = window.GOVUK.Modules || {}
6
- window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
6
+ window.GOVUK.Modules.GovukCheckboxes = window.GOVUKFrontend;
7
7
 
8
8
  (function (Modules) {
9
- function GovukCheckboxes ($module) {
9
+ function GemCheckboxes ($module) {
10
10
  this.$module = $module
11
11
  this.$checkboxes = this.$module.querySelectorAll('input[type=checkbox]')
12
12
  this.$nestedCheckboxes = this.$module.querySelectorAll('[data-nested=true] input[type=checkbox]')
13
13
  this.$exclusiveCheckboxes = this.$module.querySelectorAll('[data-exclusive=true] input[type=checkbox]')
14
14
  }
15
15
 
16
- GovukCheckboxes.prototype.init = function () {
16
+ GemCheckboxes.prototype.init = function () {
17
17
  this.applyAriaControlsAttributes(this.$module)
18
18
 
19
19
  for (var i = 0; i < this.$checkboxes.length; i++) {
@@ -29,7 +29,7 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
29
29
  }
30
30
  }
31
31
 
32
- GovukCheckboxes.prototype.handleCheckboxChange = function (event) {
32
+ GemCheckboxes.prototype.handleCheckboxChange = function (event) {
33
33
  if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
34
34
  // Where checkboxes are manipulated externally in finders, `suppressAnalytics`
35
35
  // is passed to prevent duplicate GA events.
@@ -58,7 +58,7 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
58
58
  }
59
59
  }
60
60
 
61
- GovukCheckboxes.prototype.handleNestedCheckboxChange = function (event) {
61
+ GemCheckboxes.prototype.handleNestedCheckboxChange = function (event) {
62
62
  var $checkbox = event.target
63
63
  var $isNested = $checkbox.closest('.govuk-checkboxes--nested')
64
64
  var $hasNested = this.$module.querySelector('.govuk-checkboxes--nested[data-parent=' + $checkbox.id + ']')
@@ -70,7 +70,7 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
70
70
  }
71
71
  }
72
72
 
73
- GovukCheckboxes.prototype.toggleNestedCheckboxes = function ($scope, $checkbox) {
73
+ GemCheckboxes.prototype.toggleNestedCheckboxes = function ($scope, $checkbox) {
74
74
  var $nestedCheckboxes = $scope.querySelectorAll('input[type=checkbox]')
75
75
  if ($checkbox.checked) {
76
76
  for (var i = 0; i < $nestedCheckboxes.length; i++) {
@@ -83,7 +83,7 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
83
83
  }
84
84
  }
85
85
 
86
- GovukCheckboxes.prototype.toggleParentCheckbox = function ($scope, $checkbox) {
86
+ GemCheckboxes.prototype.toggleParentCheckbox = function ($scope, $checkbox) {
87
87
  var $inputs = $scope.querySelectorAll('input')
88
88
  var $checkedInputs = $scope.querySelectorAll('input:checked')
89
89
  var parentId = $scope.getAttribute('data-parent')
@@ -96,7 +96,7 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
96
96
  }
97
97
  }
98
98
 
99
- GovukCheckboxes.prototype.handleExclusiveCheckboxChange = function (event) {
99
+ GemCheckboxes.prototype.handleExclusiveCheckboxChange = function (event) {
100
100
  var $currentCheckbox = event.target
101
101
  var $checkboxes = $currentCheckbox.closest('.govuk-checkboxes')
102
102
  var $exclusiveOption = $checkboxes.querySelector('input[type=checkbox][data-exclusive]')
@@ -113,7 +113,7 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
113
113
  }
114
114
  }
115
115
 
116
- GovukCheckboxes.prototype.applyAriaControlsAttributes = function ($scope) {
116
+ GemCheckboxes.prototype.applyAriaControlsAttributes = function ($scope) {
117
117
  var $inputs = $scope.querySelectorAll('[data-controls]')
118
118
 
119
119
  for (var i = 0; i < $inputs.length; i++) {
@@ -121,5 +121,5 @@ window.GOVUK.Modules.Checkboxes = window.GOVUKFrontend;
121
121
  }
122
122
  }
123
123
 
124
- Modules.GovukCheckboxes = GovukCheckboxes
124
+ Modules.GemCheckboxes = GemCheckboxes
125
125
  })(window.GOVUK.Modules)
@@ -2,16 +2,16 @@
2
2
  // = require govuk/components/details/details.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.Details = window.GOVUKFrontend;
5
+ window.GOVUK.Modules.GovukDetails = window.GOVUKFrontend;
6
6
 
7
7
  (function (Modules) {
8
- function GovukDetails ($module) {
8
+ function GemDetails ($module) {
9
9
  this.$module = $module
10
10
  this.customTrackLabel = this.$module.getAttribute('data-track-label')
11
11
  this.detailsClick = this.$module.querySelector('[data-details-track-click]')
12
12
  }
13
13
 
14
- GovukDetails.prototype.init = function () {
14
+ GemDetails.prototype.init = function () {
15
15
  if (this.customTrackLabel) { // If a custom label has been provided, we can simply call the tracking module
16
16
  var trackDetails = new window.GOVUK.Modules.GemTrackClick()
17
17
  trackDetails.start($(this.$module))
@@ -22,7 +22,7 @@ window.GOVUK.Modules.Details = window.GOVUKFrontend;
22
22
  }
23
23
  }
24
24
 
25
- GovukDetails.prototype.trackDefault = function (element) {
25
+ GemDetails.prototype.trackDefault = function (element) {
26
26
  if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
27
27
  var componentStatus = (element.getAttribute('open') == null) ? 'open' : 'closed'
28
28
  var trackCategory = element.getAttribute('data-track-category')
@@ -45,5 +45,5 @@ window.GOVUK.Modules.Details = window.GOVUKFrontend;
45
45
  }
46
46
  }
47
47
 
48
- Modules.GovukDetails = GovukDetails
48
+ Modules.GemDetails = GemDetails
49
49
  })(window.GOVUK.Modules)
@@ -2,4 +2,4 @@
2
2
  // = require govuk/components/error-summary/error-summary.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.ErrorSummary = window.GOVUKFrontend
5
+ window.GOVUK.Modules.GovukErrorSummary = window.GOVUKFrontend
@@ -2,4 +2,4 @@
2
2
  // = require govuk/components/header/header.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.Header = window.GOVUKFrontend
5
+ window.GOVUK.Modules.GovukHeader = window.GOVUKFrontend
@@ -2,4 +2,4 @@
2
2
  // = require govuk/components/radios/radios.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.Radios = window.GOVUKFrontend
5
+ window.GOVUK.Modules.GovukRadios = window.GOVUKFrontend
@@ -2,4 +2,4 @@
2
2
  // = require govuk/components/tabs/tabs.js
3
3
  window.GOVUK = window.GOVUK || {}
4
4
  window.GOVUK.Modules = window.GOVUK.Modules || {}
5
- window.GOVUK.Modules.Tabs = window.GOVUKFrontend
5
+ window.GOVUK.Modules.GovukTabs = window.GOVUKFrontend
@@ -26,29 +26,32 @@
26
26
  var modules = this.find(container)
27
27
 
28
28
  for (var i = 0, l = modules.length; i < l; i++) {
29
- var module
30
29
  var element = $(modules[i])
31
- var moduleName = camelCaseAndCapitalise(element.data('module'))
32
- var started = element.data('module-started')
33
- var frontendModuleName = moduleName.replace('Govuk', '')
30
+ var moduleNames = element.data('module').split(' ')
34
31
 
35
- if ( // GOV.UK Publishing & Legacy Modules
36
- typeof GOVUK.Modules[moduleName] === 'function' &&
37
- !GOVUK.Modules[moduleName].prototype.init &&
38
- !started
39
- ) {
40
- module = new GOVUK.Modules[moduleName]()
41
- module.start(element)
42
- element.data('module-started', true)
43
- }
32
+ for (var j = 0, k = moduleNames.length; j < k; j++) {
33
+ var module
34
+ var moduleName = camelCaseAndCapitalise(moduleNames[j])
35
+ var started = element.data(moduleNames[j] + '-module-started')
36
+
37
+ if ( // GOV.UK Publishing & Legacy Modules
38
+ typeof GOVUK.Modules[moduleName] === 'function' &&
39
+ !GOVUK.Modules[moduleName].prototype.init &&
40
+ !started
41
+ ) {
42
+ module = new GOVUK.Modules[moduleName]()
43
+ module.start(element)
44
+ element.data(moduleNames[j] + '-module-started', true)
45
+ }
44
46
 
45
- if ( // GOV.UK Frontend Modules
46
- typeof GOVUK.Modules[frontendModuleName] === 'function' &&
47
- GOVUK.Modules[frontendModuleName].prototype.init &&
48
- !started
49
- ) {
50
- module = new GOVUK.Modules[frontendModuleName](element[0]).init()
51
- element.data('module-started', true)
47
+ if ( // GOV.UK Frontend Modules
48
+ typeof GOVUK.Modules[moduleName] === 'function' &&
49
+ GOVUK.Modules[moduleName].prototype.init &&
50
+ !started
51
+ ) {
52
+ module = new GOVUK.Modules[moduleName](element[0]).init()
53
+ element.data(moduleNames[j] + '-module-started', true)
54
+ }
52
55
  }
53
56
  }
54
57
 
@@ -1,9 +1,6 @@
1
1
  (function() {
2
- var marker = document.getElementsByTagName('script')[0]
3
- var scripts = [
4
- '<%= path_to_javascript("govuk_publishing_components/vendor/lux/lux-polyfill") %>',
5
- '<%= path_to_javascript("govuk_publishing_components/vendor/lux/lux") %>'
6
- ]
2
+ var scriptSrc = '<%= path_to_javascript("govuk_publishing_components/vendor/lux/lux-reporter") %>'
3
+
7
4
  var parsedCookie = (function() {
8
5
  try {
9
6
  var cookies = document.cookie.split(';')
@@ -23,14 +20,22 @@
23
20
  return {}
24
21
  })()
25
22
 
26
- if (parsedCookie.usage === true) {
27
- for (var i = 0; i < scripts.length; i++) {
28
- var script = document.createElement('script')
29
- script.src = scripts[i]
30
- script.async = true
31
- script.defer = true
23
+ var insertScript = function(source) {
24
+ var marker = document.getElementsByTagName('script')[0]
32
25
 
33
- marker.parentNode.insertBefore(script, marker)
34
- }
26
+ var script = document.createElement('script')
27
+ script.src = source
28
+ script.async = true
29
+ script.defer = true
30
+
31
+ marker.parentNode.insertBefore(script, marker)
32
+ }
33
+
34
+ if (parsedCookie.usage === true) {
35
+ insertScript(scriptSrc)
36
+ } else {
37
+ window.addEventListener('cookie-consent', function() {
38
+ insertScript(scriptSrc)
39
+ })
35
40
  }
36
41
  })()
@@ -146,6 +146,31 @@
146
146
  }
147
147
  }
148
148
 
149
+ .gem-c-action-link--brexit {
150
+ max-width: none;
151
+
152
+ &:before {
153
+ height: 30px;
154
+ width: 35px;
155
+ background-image: image-url("govuk_publishing_components/action-link-arrow--brexit.svg");
156
+ background-repeat: no-repeat;
157
+ background-size: 25px auto;
158
+ background-position: 0 0;
159
+ }
160
+
161
+ @include govuk-media-query($until: tablet) {
162
+ margin-bottom: govuk-spacing(2);
163
+ }
164
+
165
+ @include govuk-media-query($from: tablet) {
166
+ margin-bottom: govuk-spacing(2);
167
+
168
+ &:before {
169
+ background-position: 0 4px;
170
+ }
171
+ }
172
+ }
173
+
149
174
  .gem-c-action-link--nhs {
150
175
  &:before {
151
176
  width: 80px;
@@ -102,10 +102,14 @@
102
102
  }
103
103
  }
104
104
 
105
- .govuk-header__logotype {
105
+ .gem-c-header__logotype {
106
106
  vertical-align: middle;
107
107
  }
108
108
 
109
+ .gem-c-header__logotype-crown {
110
+ top: -2px;
111
+ }
112
+
109
113
  .gem-c-header__product-name {
110
114
  display: none;
111
115
 
@@ -14,6 +14,7 @@
14
14
  dark_icon ||= false
15
15
  small_icon ||= false
16
16
  nhs_icon ||= false
17
+ brexit_icon ||= false
17
18
  transparent_icon ||= false
18
19
  data ||= nil
19
20
  classes ||= nil
@@ -25,6 +26,7 @@
25
26
  css_classes << "gem-c-action-link--small-icon" if small_icon
26
27
  css_classes << "gem-c-action-link--transparent-icon" if transparent_icon
27
28
  css_classes << "gem-c-action-link--nhs" if nhs_icon
29
+ css_classes << "gem-c-action-link--brexit" if brexit_icon
28
30
  css_classes << "gem-c-action-link--simple" if simple
29
31
  css_classes << "gem-c-action-link--simple-light" if simple_light
30
32
  css_classes << "gem-c-action-link--with-subtext" if subtext
@@ -18,7 +18,7 @@
18
18
  <%= render "govuk_publishing_components/components/textarea", { id: id, character_count: true }.merge(textarea.symbolize_keys) %>
19
19
 
20
20
  <span id="<%= id %>-info" class="govuk-hint govuk-character-count__message" aria-live="polite">
21
- <%= t("components.character_count", number: maxlength || maxwords, type: maxwords ? t("components.character_count.type.words") : t("components.character_count.type.characters")) %>
21
+ <%= t("components.character_count.body", number: maxlength || maxwords, type: maxwords ? t("components.character_count.type.words") : t("components.character_count.type.characters")) %>
22
22
  </span>
23
23
  <% end %>
24
24
  <% end %>
@@ -4,7 +4,7 @@
4
4
  id = cb_helper.id
5
5
  %>
6
6
 
7
- <%= tag.div id: id, class: cb_helper.css_classes, data: { module: "govuk-checkboxes" } do %>
7
+ <%= tag.div id: id, class: cb_helper.css_classes, data: { module: "gem-checkboxes" } do %>
8
8
  <% if cb_helper.should_have_fieldset %>
9
9
  <% if cb_helper.heading_markup %>
10
10
  <%= tag.fieldset class: "govuk-fieldset", "aria-describedby": cb_helper.fieldset_describedby do %>
@@ -23,7 +23,7 @@
23
23
  <% end %>
24
24
 
25
25
  <%= tag.ul class: cb_helper.list_classes, data: {
26
- module: ('checkboxes' if cb_helper.has_conditional),
26
+ module: ('govuk-checkboxes' if cb_helper.has_conditional),
27
27
  nested: ('true' if cb_helper.has_nested),
28
28
  exclusive: ('true' if cb_helper.has_exclusive)
29
29
  } do %>
@@ -7,7 +7,7 @@
7
7
  css_classes << (shared_helper.get_margin_bottom)
8
8
 
9
9
  data_attributes ||= {}
10
- data_attributes[:module] = 'govuk-details'
10
+ data_attributes[:module] = 'govuk-details gem-details'
11
11
  %>
12
12
  <%= tag.details class: css_classes, data: data_attributes, open: open do %>
13
13
  <summary class="govuk-details__summary" data-details-track-click>
@@ -39,6 +39,7 @@
39
39
  <meta charset="utf-8" />
40
40
  <title><%= title %></title>
41
41
 
42
+ <%= javascript_include_tag "govuk_publishing_components/vendor/lux/lux-measurer", { async: true } %>
42
43
  <%= javascript_include_tag "govuk_publishing_components/rum-loader", { async: true } %>
43
44
 
44
45
  <%= csrf_meta_tags %>
@@ -1,4 +1,5 @@
1
1
  <%
2
+ local_assigns[:margin_bottom] ||= 6
2
3
  shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns)
3
4
  id ||= nil
4
5
  id_prefix ||= "radio-#{SecureRandom.hex(4)}"
@@ -27,6 +28,7 @@
27
28
  hint ||= nil
28
29
  error_message ||= nil
29
30
  error_items ||= []
31
+ margin_bottom = margin_bottom ||= 6
30
32
 
31
33
  has_error = error_message || error_items.any?
32
34
  hint_id = "hint-#{SecureRandom.hex(4)}" if hint
@@ -34,6 +36,7 @@
34
36
 
35
37
  form_group_css_classes = %w(govuk-form-group)
36
38
  form_group_css_classes << "govuk-form-group--error" if has_error
39
+ form_group_css_classes << shared_helper.get_margin_bottom
37
40
 
38
41
  radio_classes = %w(govuk-radios)
39
42
  radio_classes << "govuk-radios--small" if small
@@ -101,11 +101,11 @@ examples:
101
101
  text: Coronavirus (COVID-19)
102
102
  href: "/my-test-page"
103
103
  dark_icon: true
104
- with_custom_font_size:
104
+ with_brexit_icon_and_custom_font_size:
105
105
  data:
106
106
  text: Guidance for businesses
107
107
  href: "/guidance-for-businesses"
108
- dark_icon: true
108
+ brexit_icon: true
109
109
  font_size: m
110
110
  with_nhs_icon:
111
111
  data:
@@ -109,10 +109,14 @@ examples:
109
109
  items:
110
110
  - href: '/help'
111
111
  text: Help
112
+ - href: '/help/privacy-notice'
113
+ text: Privacy
112
114
  - href: '/help/cookies'
113
115
  text: Cookies
114
116
  - href: '/contact'
115
117
  text: Contact
118
+ - href: '/help/accessibility-statement'
119
+ text: Accessibility statement
116
120
  - href: '/help/terms-conditions'
117
121
  text: Terms and conditions
118
122
  - href: '/cymraeg'
@@ -150,10 +154,14 @@ examples:
150
154
  items:
151
155
  - href: '/help'
152
156
  text: Help
157
+ - href: '/help/privacy-notice'
158
+ text: Privacy
153
159
  - href: '/help/cookies'
154
160
  text: Cookies
155
161
  - href: '/contact'
156
162
  text: Contact
163
+ - href: '/help/accessibility-statement'
164
+ text: Accessibility statement
157
165
  - href: '/help/terms-conditions'
158
166
  text: Terms and conditions
159
167
  - href: '/cymraeg'
@@ -65,6 +65,16 @@ examples:
65
65
  text: "Use GOV.UK Verify"
66
66
  hint_text: "You'll have an account if you've already proved your identity with a certified company, such as the Post Office."
67
67
  bold: true
68
+ with_bottom_margin:
69
+ description: "The component accepts a number for margin bottom from 0 to 9 (0px to 60px) using the [GOV.UK Frontend spacing scale](https://design-system.service.gov.uk/styles/spacing/#the-responsive-spacing-scale). It defaults to a margin bottom of 30px (6)."
70
+ data:
71
+ name: "radio-group"
72
+ margin_bottom: 9
73
+ items:
74
+ - value: "government-gateway"
75
+ text: "Use Government Gateway"
76
+ - value: "govuk-verify"
77
+ text: "Use GOV.UK Verify"
68
78
  with_hint_on_form_group:
69
79
  data:
70
80
  name: "radio-group-error"
@@ -1,6 +1,6 @@
1
1
  <div class="govuk-header__logo gem-c-header__logo">
2
2
  <a href="<%= logo_link %>" class="govuk-header__link govuk-header__link--homepage" data-module="gem-track-click" data-track-category="homeLinkClicked" data-track-action="homeHeader">
3
- <span class="govuk-header__logotype">
3
+ <span class="govuk-header__logotype gem-c-header__logotype">
4
4
  <svg aria-hidden="true" focusable="false" class="gem-c-header__logotype-crown govuk-header__logotype-crown" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 132 97" height="32" width="36">
5
5
  <path fill="currentColor" fill-rule="evenodd"
6
6
  d="M25 30.2c3.5 1.5 7.7-.2 9.1-3.7 1.5-3.6-.2-7.8-3.9-9.2-3.6-1.4-7.6.3-9.1 3.9-1.4 3.5.3 7.5 3.9 9zM9 39.5c3.6 1.5 7.8-.2 9.2-3.7 1.5-3.6-.2-7.8-3.9-9.1-3.6-1.5-7.6.2-9.1 3.8-1.4 3.5.3 7.5 3.8 9zM4.4 57.2c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.5-1.5-7.6.3-9.1 3.8-1.4 3.5.3 7.6 3.9 9.1zm38.3-21.4c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.6-1.5-7.6.3-9.1 3.8-1.3 3.6.4 7.7 3.9 9.1zm64.4-5.6c-3.6 1.5-7.8-.2-9.1-3.7-1.5-3.6.2-7.8 3.8-9.2 3.6-1.4 7.7.3 9.2 3.9 1.3 3.5-.4 7.5-3.9 9zm15.9 9.3c-3.6 1.5-7.7-.2-9.1-3.7-1.5-3.6.2-7.8 3.7-9.1 3.6-1.5 7.7.2 9.2 3.8 1.5 3.5-.3 7.5-3.8 9zm4.7 17.7c-3.6 1.5-7.8-.2-9.2-3.8-1.5-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.3 3.5-.4 7.6-3.9 9.1zM89.3 35.8c-3.6 1.5-7.8-.2-9.2-3.8-1.4-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.4 3.6-.3 7.7-3.9 9.1zM69.7 17.7l8.9 4.7V9.3l-8.9 2.8c-.2-.3-.5-.6-.9-.9L72.4 0H59.6l3.5 11.2c-.3.3-.6.5-.9.9l-8.8-2.8v13.1l8.8-4.7c.3.3.6.7.9.9l-5 15.4v.1c-.2.8-.4 1.6-.4 2.4 0 4.1 3.1 7.5 7 8.1h.2c.3 0 .7.1 1 .1.4 0 .7 0 1-.1h.2c4-.6 7.1-4.1 7.1-8.1 0-.8-.1-1.7-.4-2.4V34l-5.1-15.4c.4-.2.7-.6 1-.9zM66 92.8c16.9 0 32.8 1.1 47.1 3.2 4-16.9 8.9-26.7 14-33.5l-9.6-3.4c1 4.9 1.1 7.2 0 10.2-1.5-1.4-3-4.3-4.2-8.7L108.6 76c2.8-2 5-3.2 7.5-3.3-4.4 9.4-10 11.9-13.6 11.2-4.3-.8-6.3-4.6-5.6-7.9 1-4.7 5.7-5.9 8-.5 4.3-8.7-3-11.4-7.6-8.8 7.1-7.2 7.9-13.5 2.1-21.1-8 6.1-8.1 12.3-4.5 20.8-4.7-5.4-12.1-2.5-9.5 6.2 3.4-5.2 7.9-2 7.2 3.1-.6 4.3-6.4 7.8-13.5 7.2-10.3-.9-10.9-8-11.2-13.8 2.5-.5 7.1 1.8 11 7.3L80.2 60c-4.1 4.4-8 5.3-12.3 5.4 1.4-4.4 8-11.6 8-11.6H55.5s6.4 7.2 7.9 11.6c-4.2-.1-8-1-12.3-5.4l1.4 16.4c3.9-5.5 8.5-7.7 10.9-7.3-.3 5.8-.9 12.8-11.1 13.8-7.2.6-12.9-2.9-13.5-7.2-.7-5 3.8-8.3 7.1-3.1 2.7-8.7-4.6-11.6-9.4-6.2 3.7-8.5 3.6-14.7-4.6-20.8-5.8 7.6-5 13.9 2.2 21.1-4.7-2.6-11.9.1-7.7 8.8 2.3-5.5 7.1-4.2 8.1.5.7 3.3-1.3 7.1-5.7 7.9-3.5.7-9-1.8-13.5-11.2 2.5.1 4.7 1.3 7.5 3.3l-4.7-15.4c-1.2 4.4-2.7 7.2-4.3 8.7-1.1-3-.9-5.3 0-10.2l-9.5 3.4c5 6.9 9.9 16.7 14 33.5 14.8-2.1 30.8-3.2 47.7-3.2z"></path>
@@ -8,8 +8,8 @@ Rails.application.config.assets.precompile += %w[
8
8
  component_guide/visual-regression.js
9
9
  component_guide/print.css
10
10
  govuk_publishing_components/rum-loader.js
11
- govuk_publishing_components/vendor/lux.js
12
- govuk_publishing_components/vendor/lux-polyfill.js
11
+ govuk_publishing_components/vendor/lux/lux-reporter.js
12
+ govuk_publishing_components/vendor/lux/lux-measurer.js
13
13
  govuk_publishing_components/all_components.js
14
14
  govuk_publishing_components/ie.js
15
15
  govuk_publishing_components/modules.js
@@ -39,7 +39,16 @@ module GovukPublishingComponents
39
39
  tracking_category: "breadcrumbClicked",
40
40
  tracking_action: tracking_action,
41
41
  tracking_label: content_item["base_path"],
42
- }.merge(custom_dimension_tracking)
42
+ tracking_dimension_enabled: false,
43
+ }
44
+ end
45
+
46
+ def brexit_audience
47
+ {
48
+ PRIORITY_TAXONS[:brexit_business] => "Brexitbusiness",
49
+ PRIORITY_TAXONS[:brexit_individuals] => "Brexitcitizen",
50
+ PRIORITY_TAXONS[:brexit_taxon] => "Brexitbusinessandcitizen",
51
+ }[taxon["content_id"]]
43
52
  end
44
53
 
45
54
  private
@@ -79,38 +88,16 @@ module GovukPublishingComponents
79
88
  [PRIORITY_TAXONS[:brexit_business], PRIORITY_TAXONS[:brexit_individuals]]
80
89
  end
81
90
 
82
- def brexit_taxons
83
- brexit_child_taxons << PRIORITY_TAXONS[:brexit_taxon]
84
- end
85
-
86
91
  def preferred_priority_taxon
87
92
  query_parameters["priority-taxon"] if query_parameters
88
93
  end
89
94
 
90
95
  def tracking_action
91
96
  action = %w[superBreadcrumb]
92
- action << page_name_for_tracking
97
+ action << brexit_audience
93
98
  action.compact.join(" ")
94
99
  end
95
100
 
96
- def custom_dimension_tracking
97
- tracking = { tracking_dimension_enabled: false }
98
- if brexit_taxons.include?(taxon["content_id"])
99
- tracking[:tracking_dimension_enabled] = true
100
- tracking[:tracking_dimension] = page_name_for_tracking
101
- tracking[:tracking_dimension_index] = 111
102
- end
103
- tracking
104
- end
105
-
106
- def page_name_for_tracking
107
- {
108
- PRIORITY_TAXONS[:brexit_business] => "Brexitbusiness",
109
- PRIORITY_TAXONS[:brexit_individuals] => "Brexitcitizen",
110
- PRIORITY_TAXONS[:brexit_taxon] => "Brexitbusinessandcitizen",
111
- }[taxon["content_id"]]
112
- end
113
-
114
101
  def tagged_to_both_brexit_child_taxons?
115
102
  t = priority_taxons.select { |taxon| brexit_child_taxon?(taxon) }
116
103
  t.uniq.count > 1
@@ -20,7 +20,8 @@ module GovukPublishingComponents
20
20
  meta_tags = add_organisation_tags(meta_tags)
21
21
  meta_tags = add_political_tags(meta_tags)
22
22
  meta_tags = add_taxonomy_tags(meta_tags)
23
- add_step_by_step_tags(meta_tags)
23
+ meta_tags = add_step_by_step_tags(meta_tags)
24
+ add_brexit_tags(meta_tags)
24
25
  end
25
26
 
26
27
  private
@@ -111,6 +112,27 @@ module GovukPublishingComponents
111
112
  meta_tags
112
113
  end
113
114
 
115
+ def add_brexit_tags(meta_tags)
116
+ links = content_item[:links]
117
+ taxons = links[:taxons] unless links.nil?
118
+
119
+ return meta_tags if taxons.blank?
120
+ return meta_tags unless tagged_to_priority_taxon?
121
+
122
+ audience = priority_taxon_helper.brexit_audience
123
+ meta_tags["govuk:brexit-audience"] = audience if audience.present?
124
+
125
+ meta_tags
126
+ end
127
+
128
+ def tagged_to_priority_taxon?
129
+ priority_taxon_helper.taxon.present?
130
+ end
131
+
132
+ def priority_taxon_helper
133
+ @priority_taxon_helper ||= ContentBreadcrumbsBasedOnPriority.new(content_item.deep_stringify_keys, request.query_parameters)
134
+ end
135
+
114
136
  def has_content_history?
115
137
  (content_item[:public_updated_at] && details[:first_public_at] && content_item[:public_updated_at] != details[:first_public_at]) ||
116
138
  (details[:change_history] && details[:change_history].size > 1)
@@ -330,10 +330,18 @@ module GovukPublishingComponents
330
330
  href: "/help",
331
331
  text: "Help",
332
332
  },
333
+ {
334
+ href: "/help/privacy-notice",
335
+ text: "Privacy",
336
+ },
333
337
  {
334
338
  href: "/help/cookies",
335
339
  text: "Cookies",
336
340
  },
341
+ {
342
+ href: "/help/accessibility-statement",
343
+ text: "Accessibility statement",
344
+ },
337
345
  {
338
346
  href: "/contact",
339
347
  text: "Contact",
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = "24.16.1".freeze
2
+ VERSION = "24.18.3".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: 24.16.1
4
+ version: 24.18.3
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: 2021-06-28 00:00:00.000000000 Z
11
+ date: 2021-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_app_config
@@ -198,14 +198,14 @@ dependencies:
198
198
  requirements:
199
199
  - - "~>"
200
200
  - !ruby/object:Gem::Version
201
- version: 3.7.0
201
+ version: 3.8.0
202
202
  type: :development
203
203
  prerelease: false
204
204
  version_requirements: !ruby/object:Gem::Requirement
205
205
  requirements:
206
206
  - - "~>"
207
207
  - !ruby/object:Gem::Version
208
- version: 3.7.0
208
+ version: 3.8.0
209
209
  - !ruby/object:Gem::Dependency
210
210
  name: jasmine_selenium_runner
211
211
  requirement: !ruby/object:Gem::Requirement
@@ -364,6 +364,7 @@ files:
364
364
  - app/assets/config/govuk_publishing_components_manifest.js
365
365
  - app/assets/images/govuk_publishing_components/action-link--nhs.png
366
366
  - app/assets/images/govuk_publishing_components/action-link--nhs.svg
367
+ - app/assets/images/govuk_publishing_components/action-link-arrow--brexit.svg
367
368
  - app/assets/images/govuk_publishing_components/action-link-arrow--dark.png
368
369
  - app/assets/images/govuk_publishing_components/action-link-arrow--dark.svg
369
370
  - app/assets/images/govuk_publishing_components/action-link-arrow--simple-light.png
@@ -486,6 +487,7 @@ files:
486
487
  - app/assets/javascripts/govuk_publishing_components/lib.js
487
488
  - app/assets/javascripts/govuk_publishing_components/lib/cookie-functions.js
488
489
  - app/assets/javascripts/govuk_publishing_components/lib/current-location.js
490
+ - app/assets/javascripts/govuk_publishing_components/lib/govspeak/all.js
489
491
  - app/assets/javascripts/govuk_publishing_components/lib/govspeak/barchart-enhancement.js
490
492
  - app/assets/javascripts/govuk_publishing_components/lib/govspeak/magna-charta.js
491
493
  - app/assets/javascripts/govuk_publishing_components/lib/govspeak/youtube-link-enhancement.js
@@ -501,9 +503,10 @@ files:
501
503
  - app/assets/javascripts/govuk_publishing_components/rum-loader.js.erb
502
504
  - app/assets/javascripts/govuk_publishing_components/vendor/html5shiv-printshiv.js
503
505
  - app/assets/javascripts/govuk_publishing_components/vendor/json2.js
504
- - app/assets/javascripts/govuk_publishing_components/vendor/lux/lux-polyfill.js
505
- - app/assets/javascripts/govuk_publishing_components/vendor/lux/lux.js
506
+ - app/assets/javascripts/govuk_publishing_components/vendor/lux/lux-measurer.js
507
+ - app/assets/javascripts/govuk_publishing_components/vendor/lux/lux-reporter.js
506
508
  - app/assets/javascripts/govuk_publishing_components/vendor/modernizr.js
509
+ - app/assets/javascripts/govuk_publishing_components/vendor/polyfills/all.js
507
510
  - app/assets/javascripts/govuk_publishing_components/vendor/polyfills/closest.js
508
511
  - app/assets/javascripts/govuk_publishing_components/vendor/polyfills/common.js
509
512
  - app/assets/javascripts/govuk_publishing_components/vendor/polyfills/indexOf.js