govuk_publishing_components 29.9.0 → 29.12.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 +4 -4
- data/README.md +16 -5
- data/app/assets/javascripts/govuk_publishing_components/analytics/page-content.js +4 -4
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/gtm-click-tracking.js +46 -24
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4/gtm-page-views.js +98 -0
- data/app/assets/javascripts/govuk_publishing_components/analytics-ga4.js +3 -0
- data/app/assets/javascripts/govuk_publishing_components/components/accordion.js +28 -1
- data/app/assets/javascripts/govuk_publishing_components/vendor/lux/lux-measurer.js +2 -2
- data/app/assets/stylesheets/govuk_publishing_components/_all_components_print.scss +1 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_contextual-sidebar.scss +20 -0
- data/app/assets/stylesheets/govuk_publishing_components/components/_layout-super-navigation-header.scss +3 -8
- data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_attachment.scss +7 -1
- data/app/assets/stylesheets/govuk_publishing_components/components/print/_organisation-logo.scss +4 -0
- data/app/controllers/govuk_publishing_components/audit_controller.rb +3 -3
- data/app/controllers/govuk_publishing_components/component_guide_controller.rb +0 -9
- data/app/models/govuk_publishing_components/audit_comparer.rb +91 -34
- data/app/views/govuk_publishing_components/audit/_applications.html.erb +20 -9
- data/app/views/govuk_publishing_components/component_guide/index.html.erb +1 -19
- data/app/views/govuk_publishing_components/components/_accordion.html.erb +7 -5
- data/app/views/govuk_publishing_components/components/_attachment.html.erb +1 -3
- data/app/views/govuk_publishing_components/components/_character_count.html.erb +1 -1
- data/app/views/govuk_publishing_components/components/_date_input.html.erb +0 -1
- data/app/views/govuk_publishing_components/components/_error_alert.html.erb +6 -3
- data/app/views/govuk_publishing_components/components/_input.html.erb +0 -2
- data/app/views/govuk_publishing_components/components/_layout_footer.html.erb +23 -5
- data/app/views/govuk_publishing_components/components/_layout_super_navigation_header.html.erb +3 -8
- data/app/views/govuk_publishing_components/components/contextual_sidebar/_ukraine_cta.html.erb +18 -19
- data/app/views/govuk_publishing_components/components/docs/accordion.yml +22 -13
- data/app/views/govuk_publishing_components/components/docs/attachment.yml +0 -11
- data/app/views/govuk_publishing_components/components/docs/error_alert.yml +4 -0
- data/config/locales/ar.yml +1 -2
- data/config/locales/az.yml +1 -2
- data/config/locales/be.yml +1 -2
- data/config/locales/bg.yml +1 -2
- data/config/locales/bn.yml +1 -2
- data/config/locales/cs.yml +1 -2
- data/config/locales/cy.yml +1 -2
- data/config/locales/da.yml +1 -2
- data/config/locales/de.yml +1 -2
- data/config/locales/dr.yml +1 -2
- data/config/locales/el.yml +1 -2
- data/config/locales/en.yml +9 -2
- data/config/locales/es-419.yml +1 -2
- data/config/locales/es.yml +1 -2
- data/config/locales/et.yml +1 -2
- data/config/locales/fa.yml +1 -2
- data/config/locales/fi.yml +1 -2
- data/config/locales/fr.yml +1 -2
- data/config/locales/gd.yml +1 -2
- data/config/locales/gu.yml +1 -2
- data/config/locales/he.yml +1 -2
- data/config/locales/hi.yml +1 -2
- data/config/locales/hr.yml +1 -2
- data/config/locales/hu.yml +1 -2
- data/config/locales/hy.yml +1 -2
- data/config/locales/id.yml +1 -2
- data/config/locales/is.yml +1 -2
- data/config/locales/it.yml +1 -2
- data/config/locales/ja.yml +1 -2
- data/config/locales/ka.yml +1 -2
- data/config/locales/kk.yml +1 -2
- data/config/locales/ko.yml +1 -2
- data/config/locales/lt.yml +1 -2
- data/config/locales/lv.yml +1 -2
- data/config/locales/ms.yml +1 -2
- data/config/locales/mt.yml +1 -2
- data/config/locales/nl.yml +1 -2
- data/config/locales/no.yml +1 -2
- data/config/locales/pa-pk.yml +1 -2
- data/config/locales/pa.yml +1 -2
- data/config/locales/pl.yml +1 -2
- data/config/locales/ps.yml +1 -2
- data/config/locales/pt.yml +1 -2
- data/config/locales/ro.yml +1 -2
- data/config/locales/ru.yml +1 -2
- data/config/locales/si.yml +1 -2
- data/config/locales/sk.yml +1 -2
- data/config/locales/sl.yml +1 -2
- data/config/locales/so.yml +1 -2
- data/config/locales/sq.yml +1 -2
- data/config/locales/sr.yml +1 -2
- data/config/locales/sv.yml +1 -2
- data/config/locales/sw.yml +1 -2
- data/config/locales/ta.yml +1 -2
- data/config/locales/th.yml +1 -2
- data/config/locales/tk.yml +1 -2
- data/config/locales/tr.yml +1 -2
- data/config/locales/uk.yml +1 -2
- data/config/locales/ur.yml +1 -2
- data/config/locales/uz.yml +1 -2
- data/config/locales/vi.yml +1 -2
- data/config/locales/zh-hk.yml +1 -2
- data/config/locales/zh-tw.yml +1 -2
- data/config/locales/zh.yml +1 -2
- data/lib/govuk_publishing_components/presenters/attachment_helper.rb +0 -21
- data/lib/govuk_publishing_components/presenters/meta_tags.rb +6 -0
- data/lib/govuk_publishing_components/presenters/public_layout_helper.rb +35 -16
- data/lib/govuk_publishing_components/version.rb +1 -1
- data/node_modules/govuk-frontend/govuk/all.js +120 -49
- data/node_modules/govuk-frontend/govuk/components/back-link/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/breadcrumbs/_index.scss +0 -2
- data/node_modules/govuk-frontend/govuk/components/breadcrumbs/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/button/_index.scss +6 -16
- data/node_modules/govuk-frontend/govuk/components/button/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/character-count/character-count.js +120 -49
- data/node_modules/govuk-frontend/govuk/components/character-count/fixtures.json +33 -17
- data/node_modules/govuk-frontend/govuk/components/character-count/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/character-count/template.njk +1 -4
- data/node_modules/govuk-frontend/govuk/components/checkboxes/_index.scss +3 -2
- data/node_modules/govuk-frontend/govuk/components/checkboxes/fixtures.json +22 -10
- data/node_modules/govuk-frontend/govuk/components/checkboxes/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/date-input/fixtures.json +23 -23
- data/node_modules/govuk-frontend/govuk/components/date-input/template.njk +1 -1
- data/node_modules/govuk-frontend/govuk/components/details/macro-options.json +4 -4
- data/node_modules/govuk-frontend/govuk/components/error-message/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/error-summary/macro-options.json +3 -3
- data/node_modules/govuk-frontend/govuk/components/fieldset/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/footer/_index.scss +12 -22
- data/node_modules/govuk-frontend/govuk/components/header/_index.scss +13 -3
- data/node_modules/govuk-frontend/govuk/components/header/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/hint/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/input/_index.scss +4 -13
- data/node_modules/govuk-frontend/govuk/components/input/macro-options.json +5 -5
- data/node_modules/govuk-frontend/govuk/components/inset-text/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/label/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/panel/_index.scss +1 -1
- data/node_modules/govuk-frontend/govuk/components/panel/macro-options.json +4 -4
- data/node_modules/govuk-frontend/govuk/components/phase-banner/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/radios/_index.scss +5 -4
- data/node_modules/govuk-frontend/govuk/components/radios/fixtures.json +17 -12
- data/node_modules/govuk-frontend/govuk/components/radios/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/skip-link/_index.scss +1 -3
- data/node_modules/govuk-frontend/govuk/components/skip-link/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/summary-list/macro-options.json +5 -5
- data/node_modules/govuk-frontend/govuk/components/table/macro-options.json +4 -4
- data/node_modules/govuk-frontend/govuk/components/tabs/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/tag/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/components/warning-text/macro-options.json +2 -2
- data/node_modules/govuk-frontend/govuk/helpers/_colour.scss +3 -3
- data/node_modules/govuk-frontend/govuk/helpers/_links.scss +7 -5
- data/node_modules/govuk-frontend/govuk/helpers/_media-queries.scss +2 -2
- data/node_modules/govuk-frontend/govuk/helpers/_shape-arrow.scss +1 -1
- data/node_modules/govuk-frontend/govuk/helpers/_spacing.scss +3 -3
- data/node_modules/govuk-frontend/govuk/helpers/_typography.scss +2 -2
- data/node_modules/govuk-frontend/govuk/objects/_button-group.scss +10 -26
- data/node_modules/govuk-frontend/govuk/objects/_template.scss +1 -1
- data/node_modules/govuk-frontend/govuk/objects/_width-container.scss +0 -4
- data/node_modules/govuk-frontend/govuk/tools/_exports.scss +1 -1
- data/node_modules/govuk-frontend/govuk/tools/_font-url.scss +1 -1
- data/node_modules/govuk-frontend/govuk/tools/_image-url.scss +1 -1
- data/node_modules/govuk-frontend/govuk/tools/_px-to-em.scss +2 -2
- data/node_modules/govuk-frontend/govuk/tools/_px-to-rem.scss +1 -1
- data/node_modules/govuk-frontend/govuk-esm/all.mjs +88 -0
- data/node_modules/govuk-frontend/govuk-esm/common.mjs +28 -0
- data/node_modules/govuk-frontend/govuk-esm/components/accordion/accordion.mjs +374 -0
- data/node_modules/govuk-frontend/govuk-esm/components/button/button.mjs +64 -0
- data/node_modules/govuk-frontend/govuk-esm/components/character-count/character-count.mjs +251 -0
- data/node_modules/govuk-frontend/govuk-esm/components/checkboxes/checkboxes.mjs +164 -0
- data/node_modules/govuk-frontend/govuk-esm/components/details/details.mjs +147 -0
- data/node_modules/govuk-frontend/govuk-esm/components/error-summary/error-summary.mjs +168 -0
- data/node_modules/govuk-frontend/govuk-esm/components/header/header.mjs +52 -0
- data/node_modules/govuk-frontend/govuk-esm/components/notification-banner/notification-banner.mjs +55 -0
- data/node_modules/govuk-frontend/govuk-esm/components/radios/radios.mjs +122 -0
- data/node_modules/govuk-frontend/govuk-esm/components/skip-link/skip-link.mjs +94 -0
- data/node_modules/govuk-frontend/govuk-esm/components/tabs/tabs.mjs +282 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/DOMTokenList.js +264 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Document.js +26 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/classList.js +93 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/closest.js +24 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/matches.js +23 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/nextElementSibling.js +22 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element/prototype/previousElementSibling.js +22 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Element.js +114 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Event.js +252 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Function/prototype/bind.js +159 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Object/defineProperty.js +86 -0
- data/node_modules/govuk-frontend/govuk-esm/vendor/polyfills/Window.js +20 -0
- data/node_modules/govuk-frontend/package.json +8 -1
- metadata +29 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3dd3c468990ad57344b60f3268db6600fc77389ec57fa53688699284bef86502
|
|
4
|
+
data.tar.gz: 2dc30bfb1f489e894134032e8d055e694b4ac45e5eb49e3055ceae8ac0f2b0b7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1d147c794de4cd0cb8210584db07fe0e32a3036d68bded430d2c8d9b45a00b50f78a931d21b48be269f971099f8b054881f3b707694b4f52c3dfa7d00aef7ea2
|
|
7
|
+
data.tar.gz: 786de6478e56d31089cb7745914bc5e38e5e8e63043d2b862777a69a5622b19f7f678c2d43559e179eb1701b3222fd1f384d05530c7f403abcccf1f025a005ef
|
data/README.md
CHANGED
|
@@ -35,19 +35,30 @@ yarn run jasmine:browser
|
|
|
35
35
|
yarn run jasmine:ci
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
###
|
|
38
|
+
### Using the gem
|
|
39
39
|
|
|
40
40
|
- [Install and use this gem](docs/install-and-use.md)
|
|
41
41
|
- [Use a component in your application](docs/use-components.md)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
|
|
43
|
+
### Managing the gem
|
|
44
|
+
|
|
45
45
|
- [Publish/release a new version of the gem](docs/publishing-to-rubygems.md)
|
|
46
46
|
- [Keep this gem in sync with the Design System](docs/upgrade-govuk-frontend.md)
|
|
47
|
-
- [
|
|
47
|
+
- [Move a component from an application to the gem](docs/moving-components-upstream-into-this-gem.md)
|
|
48
|
+
|
|
49
|
+
### Making components
|
|
50
|
+
|
|
51
|
+
- [Generate a new component](docs/generate-a-new-component.md)
|
|
48
52
|
- [Component conventions](docs/component_conventions.md)
|
|
49
53
|
- [Component principles](docs/component_principles.md)
|
|
54
|
+
|
|
55
|
+
### Further documentation
|
|
56
|
+
|
|
57
|
+
- [Testing a component](docs/testing-components.md)
|
|
50
58
|
- [Component auditing](docs/auditing.md)
|
|
59
|
+
- [Code documentation on rubydoc.info](http://www.rubydoc.info/gems/govuk_publishing_components)
|
|
60
|
+
|
|
61
|
+
More documentation can be found in the [docs directory](docs/).
|
|
51
62
|
|
|
52
63
|
## Licence
|
|
53
64
|
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
return document.querySelectorAll('.document-collection .group-title').length
|
|
16
16
|
case isNewBrowsePageLevelTwo():
|
|
17
17
|
// if there are no accordion sections on the browse level 2 page
|
|
18
|
-
// then it is a default page with
|
|
19
|
-
return document.querySelectorAll('[data-track-count="accordionSection"]').length ||
|
|
18
|
+
// then it is a default page with one or two lists
|
|
19
|
+
return document.querySelectorAll('[data-track-count="accordionSection"]').length || document.querySelectorAll('main .govuk-list').length
|
|
20
20
|
case isNewBrowsePage():
|
|
21
21
|
return document.querySelectorAll('[data-track-count="cardList"]').length
|
|
22
22
|
case isMainstreamBrowsePage():
|
|
@@ -77,7 +77,6 @@
|
|
|
77
77
|
var metaApplicationSelector = 'meta[name="govuk:rendering-application"]'
|
|
78
78
|
var metaFormatSelector = 'meta[name="govuk:format"]'
|
|
79
79
|
var metaNavigationTypeSelector = 'meta[name="govuk:navigation-page-type"]'
|
|
80
|
-
var metaSectionSelector = 'meta[name="govuk:section"]'
|
|
81
80
|
|
|
82
81
|
function getMetaAttribute (selector) {
|
|
83
82
|
var element = document.querySelector(selector)
|
|
@@ -111,7 +110,8 @@
|
|
|
111
110
|
|
|
112
111
|
function isNewBrowsePage () {
|
|
113
112
|
return getMetaAttribute(metaApplicationSelector) === 'collections' &&
|
|
114
|
-
getMetaAttribute(
|
|
113
|
+
(getMetaAttribute(metaNavigationTypeSelector) === 'browse level 0' ||
|
|
114
|
+
getMetaAttribute(metaNavigationTypeSelector) === 'browse level 1') &&
|
|
115
115
|
getMetaAttribute(metaFormatSelector) === 'mainstream_browse_page'
|
|
116
116
|
}
|
|
117
117
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// = require govuk/vendor/polyfills/Element/prototype/closest.js
|
|
1
2
|
window.GOVUK = window.GOVUK || {}
|
|
2
3
|
window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
3
4
|
|
|
@@ -10,38 +11,59 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
|
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
GtmClickTracking.prototype.init = function () {
|
|
13
|
-
|
|
14
|
-
if (!this.module.getAttribute(this.trackingTrigger)) {
|
|
15
|
-
trackClicksOn = this.module.querySelectorAll('[' + this.trackingTrigger + ']')
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
for (var i = 0; i < trackClicksOn.length; i++) {
|
|
19
|
-
trackClicksOn[i].addEventListener('click', this.trackClick.bind(this))
|
|
20
|
-
}
|
|
14
|
+
this.module.addEventListener('click', this.trackClick.bind(this), true) // useCapture must be true
|
|
21
15
|
}
|
|
22
16
|
|
|
23
17
|
GtmClickTracking.prototype.trackClick = function (event) {
|
|
24
18
|
if (window.dataLayer) {
|
|
25
|
-
var target = event.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
19
|
+
var target = this.findTrackingAttributes(event.target)
|
|
20
|
+
if (target) {
|
|
21
|
+
var data = {
|
|
22
|
+
event: 'analytics',
|
|
23
|
+
event_name: target.getAttribute('data-gtm-event-name'),
|
|
24
|
+
// get entire URL apart from domain
|
|
25
|
+
link_url: window.location.href.substring(window.location.origin.length),
|
|
26
|
+
ui: JSON.parse(target.getAttribute('data-gtm-attributes')) || {}
|
|
27
|
+
}
|
|
28
|
+
var ariaExpanded = this.getClosestAttribute(target, 'aria-expanded')
|
|
29
|
+
/*
|
|
30
|
+
the details component uses an 'open' attribute instead of aria-expanded, so we need to check if we're on a details component.
|
|
31
|
+
since details deletes the 'open' attribute when closed, we need this boolean, otherwise every element which
|
|
32
|
+
doesn't contain an 'open' attr would be pushed to gtm as a closed element.
|
|
33
|
+
*/
|
|
34
|
+
var detailsElement = target.closest('details')
|
|
35
|
+
|
|
36
|
+
if (ariaExpanded) {
|
|
37
|
+
data.ui.text = data.ui.text || target.innerText
|
|
38
|
+
data.ui.state = (ariaExpanded === 'false') ? 'opened' : 'closed'
|
|
39
|
+
} else if (detailsElement) {
|
|
40
|
+
data.ui.text = data.ui.text || detailsElement.textContent
|
|
41
|
+
var openAttribute = detailsElement.getAttribute('open')
|
|
42
|
+
data.ui.state = (openAttribute == null) ? 'opened' : 'closed'
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
window.dataLayer.push(data)
|
|
36
46
|
}
|
|
37
|
-
window.dataLayer.push(data)
|
|
38
47
|
}
|
|
39
48
|
}
|
|
40
49
|
|
|
41
|
-
GtmClickTracking.prototype.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
50
|
+
GtmClickTracking.prototype.findTrackingAttributes = function (clicked) {
|
|
51
|
+
if (clicked.hasAttribute('[' + this.trackingTrigger + ']')) {
|
|
52
|
+
return clicked
|
|
53
|
+
} else {
|
|
54
|
+
return clicked.closest('[' + this.trackingTrigger + ']')
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// check if an attribute exists or contains the attribute
|
|
59
|
+
GtmClickTracking.prototype.getClosestAttribute = function (clicked, attribute) {
|
|
60
|
+
var isAttributeOnElement = clicked.getAttribute(attribute)
|
|
61
|
+
var containsAttribute = clicked.querySelector('[' + attribute + ']')
|
|
62
|
+
|
|
63
|
+
if (isAttributeOnElement || isAttributeOnElement === '') { // checks for "" as some attribute names can contain no value making them falsy
|
|
64
|
+
return isAttributeOnElement
|
|
65
|
+
} else if (containsAttribute) {
|
|
66
|
+
return containsAttribute.getAttribute(attribute)
|
|
45
67
|
}
|
|
46
68
|
}
|
|
47
69
|
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
;(function (global) {
|
|
2
|
+
'use strict'
|
|
3
|
+
|
|
4
|
+
var GOVUK = global.GOVUK || {}
|
|
5
|
+
|
|
6
|
+
GOVUK.Gtm = {
|
|
7
|
+
sendPageView: function () {
|
|
8
|
+
if (window.dataLayer) {
|
|
9
|
+
var data = {
|
|
10
|
+
event: 'config_ready',
|
|
11
|
+
page: {
|
|
12
|
+
location: this.getLocation(),
|
|
13
|
+
referrer: this.getReferrer(),
|
|
14
|
+
title: this.getTitle(),
|
|
15
|
+
status_code: this.getStatusCode()
|
|
16
|
+
},
|
|
17
|
+
publishing: {
|
|
18
|
+
document_type: this.getMetaContent('format'),
|
|
19
|
+
publishing_application: this.getMetaContent('publishing-application'),
|
|
20
|
+
rendering_application: this.getMetaContent('rendering-application'),
|
|
21
|
+
schema_name: this.getMetaContent('schema-name'),
|
|
22
|
+
content_id: this.getMetaContent('content-id')
|
|
23
|
+
},
|
|
24
|
+
taxonomy: {
|
|
25
|
+
section: this.getMetaContent('section'),
|
|
26
|
+
taxon_slug: this.getMetaContent('taxon-slug'),
|
|
27
|
+
taxon_id: this.getMetaContent('taxon-id'),
|
|
28
|
+
themes: this.getMetaContent('themes'),
|
|
29
|
+
taxon_slugs: this.getMetaContent('taxon-slugs'),
|
|
30
|
+
taxon_ids: this.getMetaContent('taxon-ids')
|
|
31
|
+
},
|
|
32
|
+
content: {
|
|
33
|
+
language: this.getLanguage(),
|
|
34
|
+
history: this.getHistory(),
|
|
35
|
+
withdrawn: this.getWithDrawn(),
|
|
36
|
+
first_published_at: this.getMetaContent('first-published-at'),
|
|
37
|
+
updated_at: this.getMetaContent('updated-at'),
|
|
38
|
+
public_updated_at: this.getMetaContent('public-updated-at'),
|
|
39
|
+
publishing_government: this.getMetaContent('publishing-government'),
|
|
40
|
+
political_status: this.getMetaContent('political-status'),
|
|
41
|
+
primary_publishing_organisation: this.getMetaContent('primary-publishing-organisation'),
|
|
42
|
+
organisations: this.getMetaContent('analytics:organisations'),
|
|
43
|
+
world_locations: this.getMetaContent('analytics:world-locations')
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
window.dataLayer.push(data)
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
getLocation: function () {
|
|
51
|
+
return document.location.href
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
getReferrer: function () {
|
|
55
|
+
return document.referrer
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
getTitle: function () {
|
|
59
|
+
return document.title
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
// window.httpStatusCode is set in the source of the error page in static
|
|
63
|
+
// https://github.com/alphagov/static/blob/main/app/views/root/_error_page.html.erb#L32
|
|
64
|
+
getStatusCode: function () {
|
|
65
|
+
if (window.httpStatusCode) {
|
|
66
|
+
return window.httpStatusCode
|
|
67
|
+
} else {
|
|
68
|
+
return 200
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
|
|
72
|
+
getMetaContent: function (name) {
|
|
73
|
+
var tag = document.querySelector('meta[name="govuk:' + name + '"]')
|
|
74
|
+
if (tag) {
|
|
75
|
+
return tag.getAttribute('content')
|
|
76
|
+
} else {
|
|
77
|
+
return 'n/a'
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
|
|
81
|
+
getLanguage: function () {
|
|
82
|
+
var html = document.querySelector('html')
|
|
83
|
+
return html.getAttribute('lang') || 'n/a'
|
|
84
|
+
},
|
|
85
|
+
|
|
86
|
+
getHistory: function () {
|
|
87
|
+
var history = this.getMetaContent('content-has-history')
|
|
88
|
+
return (history === 'true') ? 'true' : 'false'
|
|
89
|
+
},
|
|
90
|
+
|
|
91
|
+
getWithDrawn: function () {
|
|
92
|
+
var withdrawn = this.getMetaContent('withdrawn')
|
|
93
|
+
return (withdrawn === 'withdrawn') ? 'true' : 'false'
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
global.GOVUK = GOVUK
|
|
98
|
+
})(window)
|
|
@@ -45,6 +45,21 @@ window.GOVUK.Modules.GovukAccordion = window.GOVUKFrontend.Accordion;
|
|
|
45
45
|
if (this.$module.getAttribute('data-track-sections') === 'true') {
|
|
46
46
|
this.addEventListenerSections()
|
|
47
47
|
}
|
|
48
|
+
|
|
49
|
+
// look for data attributes to put onto the 'show/hide all' link
|
|
50
|
+
var showAllAttributes = this.$module.getAttribute('data-show-all-attributes')
|
|
51
|
+
if (showAllAttributes) {
|
|
52
|
+
try {
|
|
53
|
+
var showAll = this.$module.querySelector('.' + this.showAllControls)
|
|
54
|
+
var values = JSON.parse(showAllAttributes)
|
|
55
|
+
var keys = Object.keys(values)
|
|
56
|
+
for (var i = 0; i < keys.length; i++) {
|
|
57
|
+
showAll.setAttribute('data-' + keys[i], values[keys[i]])
|
|
58
|
+
}
|
|
59
|
+
} catch (e) {
|
|
60
|
+
console.error('Could not read accordion data attributes error: ' + e.message, window.location)
|
|
61
|
+
}
|
|
62
|
+
}
|
|
48
63
|
}
|
|
49
64
|
|
|
50
65
|
// Navigate to and open accordions with anchored content on page load if a hash is present
|
|
@@ -76,7 +91,7 @@ window.GOVUK.Modules.GovukAccordion = window.GOVUKFrontend.Accordion;
|
|
|
76
91
|
var $expanded = this.getContainingSection($section)
|
|
77
92
|
var $parent = $header.parentElement
|
|
78
93
|
|
|
79
|
-
//
|
|
94
|
+
// government-frontend features (inherited from manuals-frontend):
|
|
80
95
|
// Should the target anchor link be within the same page, open section - navigate normally
|
|
81
96
|
// Should the target anchor link be within a different, closed section, open this section
|
|
82
97
|
// Should the target anchor link be within a different page and different, closed section open this section
|
|
@@ -129,6 +144,18 @@ window.GOVUK.Modules.GovukAccordion = window.GOVUKFrontend.Accordion;
|
|
|
129
144
|
var action = expanded ? 'accordionOpened' : 'accordionClosed'
|
|
130
145
|
var options = { transport: 'beacon', label: label }
|
|
131
146
|
|
|
147
|
+
// optional parameters are added to the parent
|
|
148
|
+
// heading not the button that is clicked
|
|
149
|
+
var extraOptions = section.parentElement && section.parentElement.getAttribute('data-track-options')
|
|
150
|
+
|
|
151
|
+
// this uses the same logic as track-click.js handleClick
|
|
152
|
+
// means we can add a custom dimensions on click
|
|
153
|
+
// (such as the index of the accordion on the page)
|
|
154
|
+
if (extraOptions) {
|
|
155
|
+
extraOptions = JSON.parse(extraOptions)
|
|
156
|
+
for (var k in extraOptions) options[k] = extraOptions[k]
|
|
157
|
+
}
|
|
158
|
+
|
|
132
159
|
if (window.GOVUK.analytics && window.GOVUK.analytics.trackEvent) {
|
|
133
160
|
window.GOVUK.analytics.trackEvent('pageElementInteraction', action, options)
|
|
134
161
|
}
|
|
@@ -175,8 +175,8 @@ if (
|
|
|
175
175
|
var measureHTTPProtocol = function () {
|
|
176
176
|
var getEntriesByType = performance.getEntriesByType('navigation')
|
|
177
177
|
|
|
178
|
-
if (getEntriesByType.length > 0) {
|
|
179
|
-
var httpProtocol =
|
|
178
|
+
if (typeof getEntriesByType !== 'undefined' && getEntriesByType.length > 0) {
|
|
179
|
+
var httpProtocol = getEntriesByType[0].nextHopProtocol
|
|
180
180
|
LUX.addData("http-protocol", httpProtocol)
|
|
181
181
|
}
|
|
182
182
|
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
@import "components/print/govspeak-html-publication";
|
|
11
11
|
@import "components/print/govspeak";
|
|
12
12
|
@import "components/print/layout-super-navigation-header";
|
|
13
|
+
@import "components/print/organisation-logo";
|
|
13
14
|
@import "components/print/step-by-step-nav-header";
|
|
14
15
|
@import "components/print/step-by-step-nav";
|
|
15
16
|
@import "components/print/textarea";
|
|
@@ -8,6 +8,12 @@
|
|
|
8
8
|
color: $govuk-text-colour;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
+
.gem-c-contextual-sidebar__list {
|
|
12
|
+
margin: 0;
|
|
13
|
+
padding: 0;
|
|
14
|
+
list-style: none;
|
|
15
|
+
}
|
|
16
|
+
|
|
11
17
|
.gem-c-contextual-sidebar__text {
|
|
12
18
|
@include govuk-font(16);
|
|
13
19
|
margin-bottom: govuk-spacing(1);
|
|
@@ -24,3 +30,17 @@
|
|
|
24
30
|
padding: 0 govuk-spacing(3) govuk-spacing(3);
|
|
25
31
|
text-decoration: none;
|
|
26
32
|
}
|
|
33
|
+
|
|
34
|
+
.gem-c-contextual-sidebar__cta--ukraine {
|
|
35
|
+
border-top: 7px solid #fed700;
|
|
36
|
+
position: relative;
|
|
37
|
+
|
|
38
|
+
&:before {
|
|
39
|
+
content: "";
|
|
40
|
+
position: absolute;
|
|
41
|
+
left: 0;
|
|
42
|
+
right: 0;
|
|
43
|
+
top: -14px;
|
|
44
|
+
border-top: 7px solid #4b7ec1;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
@@ -382,10 +382,8 @@ $button-pipe-colour: darken(govuk-colour("mid-grey"), 20%);
|
|
|
382
382
|
}
|
|
383
383
|
|
|
384
384
|
.gem-c-layout-super-navigation-header__navigation-second-toggle-button-inner {
|
|
385
|
-
border-color: $button-pipe-colour;
|
|
386
|
-
|
|
387
385
|
&:before {
|
|
388
|
-
@include chevron(
|
|
386
|
+
@include chevron(govuk-colour("mid-grey"), true);
|
|
389
387
|
}
|
|
390
388
|
}
|
|
391
389
|
}
|
|
@@ -464,7 +462,7 @@ $button-pipe-colour: darken(govuk-colour("mid-grey"), 20%);
|
|
|
464
462
|
.gem-c-layout-super-navigation-header__navigation-second-toggle-button-inner {
|
|
465
463
|
@include govuk-media-query($from: "desktop") {
|
|
466
464
|
display: inline-block;
|
|
467
|
-
padding: govuk-spacing(
|
|
465
|
+
padding: govuk-spacing(1) govuk-spacing(6) govuk-spacing(1) govuk-spacing(5);
|
|
468
466
|
}
|
|
469
467
|
}
|
|
470
468
|
|
|
@@ -608,10 +606,6 @@ $button-pipe-colour: darken(govuk-colour("mid-grey"), 20%);
|
|
|
608
606
|
}
|
|
609
607
|
}
|
|
610
608
|
|
|
611
|
-
&:after {
|
|
612
|
-
@include pseudo-underline;
|
|
613
|
-
}
|
|
614
|
-
|
|
615
609
|
// Open button modifier
|
|
616
610
|
&.gem-c-layout-super-navigation-header__open-button {
|
|
617
611
|
// stylelint-disable max-nesting-depth
|
|
@@ -771,6 +765,7 @@ $button-pipe-colour: darken(govuk-colour("mid-grey"), 20%);
|
|
|
771
765
|
background: govuk-colour("light-grey");
|
|
772
766
|
|
|
773
767
|
@include govuk-media-query($from: "desktop") {
|
|
768
|
+
border-bottom: 1px govuk-colour("mid-grey") solid;
|
|
774
769
|
left: 0;
|
|
775
770
|
position: absolute;
|
|
776
771
|
right: 0;
|
data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_attachment.scss
CHANGED
|
@@ -37,7 +37,8 @@
|
|
|
37
37
|
margin-left: -($thumbnail-width + govuk-spacing(6) - $govuk-border-width);
|
|
38
38
|
padding-bottom: govuk-spacing(3);
|
|
39
39
|
|
|
40
|
-
img
|
|
40
|
+
img,
|
|
41
|
+
svg {
|
|
41
42
|
display: block;
|
|
42
43
|
width: $thumbnail-width;
|
|
43
44
|
height: 140px;
|
|
@@ -56,6 +57,11 @@
|
|
|
56
57
|
|
|
57
58
|
box-shadow: 0 2px 2px rgba(govuk-colour("black"), .4);
|
|
58
59
|
}
|
|
60
|
+
|
|
61
|
+
svg {
|
|
62
|
+
fill: govuk-colour("mid-grey", $legacy: "grey-3");
|
|
63
|
+
stroke: govuk-colour("mid-grey", $legacy: "grey-3");
|
|
64
|
+
}
|
|
59
65
|
}
|
|
60
66
|
|
|
61
67
|
.attachment-details {
|
|
@@ -15,7 +15,6 @@ module GovukPublishingComponents
|
|
|
15
15
|
govspeak-preview
|
|
16
16
|
info-frontend
|
|
17
17
|
licence-finder
|
|
18
|
-
manuals-frontend
|
|
19
18
|
release
|
|
20
19
|
search-admin
|
|
21
20
|
service-manual-frontend
|
|
@@ -24,7 +23,8 @@ module GovukPublishingComponents
|
|
|
24
23
|
static
|
|
25
24
|
travel-advice-publisher
|
|
26
25
|
whitehall
|
|
27
|
-
]
|
|
26
|
+
]
|
|
27
|
+
|
|
28
28
|
application_dirs = [GovukPublishingComponents::ApplicationHelper.get_application_name_from_path(Rails.root)] unless ENV["MAIN_COMPONENT_GUIDE"]
|
|
29
29
|
|
|
30
30
|
gem_path = Gem.loaded_specs["govuk_publishing_components"].full_gem_path
|
|
@@ -36,7 +36,7 @@ module GovukPublishingComponents
|
|
|
36
36
|
|
|
37
37
|
components = AuditComponents.new(gem_path, false)
|
|
38
38
|
applications = analyse_applications(host_dir, application_dirs)
|
|
39
|
-
compared_data = AuditComparer.new(components.data, applications
|
|
39
|
+
compared_data = AuditComparer.new(components.data, applications)
|
|
40
40
|
|
|
41
41
|
@applications = compared_data.applications_data || []
|
|
42
42
|
@components = compared_data.gem_data || []
|
|
@@ -13,7 +13,6 @@ module GovukPublishingComponents
|
|
|
13
13
|
@components_in_use_sass = components_in_use_sass(false)
|
|
14
14
|
@components_in_use_print_sass = components_in_use_sass(true)
|
|
15
15
|
@components_in_use_js = components_in_use_js
|
|
16
|
-
@index_audit_summary = index_audit_summary
|
|
17
16
|
end
|
|
18
17
|
|
|
19
18
|
def show
|
|
@@ -162,13 +161,5 @@ module GovukPublishingComponents
|
|
|
162
161
|
h[:url] = component_doc_path(component_doc.id) if component_example
|
|
163
162
|
end
|
|
164
163
|
end
|
|
165
|
-
|
|
166
|
-
def index_audit_summary
|
|
167
|
-
components_gem_path = Gem.loaded_specs["govuk_publishing_components"].full_gem_path
|
|
168
|
-
components = AuditComponents.new(components_gem_path, true)
|
|
169
|
-
application = AuditApplications.new(@application_path, GovukPublishingComponents::ApplicationHelper.get_application_name_from_path(@application_path))
|
|
170
|
-
compared_data = AuditComparer.new(components.data, [application.data], true)
|
|
171
|
-
compared_data.applications_data[0]
|
|
172
|
-
end
|
|
173
164
|
end
|
|
174
165
|
end
|