govuk_publishing_components 71.0.1 → 71.1.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.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/govuk_publishing_components/components/contents-list-with-body.js +96 -92
  3. data/app/assets/javascripts/govuk_publishing_components/lib/govspeak/table-scroll.js +0 -13
  4. data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_tables.scss +11 -39
  5. data/app/views/govuk_publishing_components/components/_metadata.html.erb +17 -2
  6. data/app/views/govuk_publishing_components/components/docs/metadata.yml +13 -1
  7. data/config/locales/ar.yml +1 -0
  8. data/config/locales/az.yml +1 -0
  9. data/config/locales/be.yml +1 -0
  10. data/config/locales/bg.yml +1 -0
  11. data/config/locales/bn.yml +1 -0
  12. data/config/locales/cs.yml +1 -0
  13. data/config/locales/cy.yml +1 -0
  14. data/config/locales/da.yml +1 -0
  15. data/config/locales/de.yml +1 -0
  16. data/config/locales/dr.yml +1 -0
  17. data/config/locales/el.yml +1 -0
  18. data/config/locales/en.yml +1 -0
  19. data/config/locales/es-419.yml +1 -0
  20. data/config/locales/es.yml +1 -0
  21. data/config/locales/et.yml +1 -0
  22. data/config/locales/fa.yml +1 -0
  23. data/config/locales/fi.yml +1 -0
  24. data/config/locales/fr.yml +1 -0
  25. data/config/locales/gd.yml +1 -0
  26. data/config/locales/gu.yml +1 -0
  27. data/config/locales/he.yml +1 -0
  28. data/config/locales/hi.yml +1 -0
  29. data/config/locales/hr.yml +1 -0
  30. data/config/locales/hu.yml +1 -0
  31. data/config/locales/hy.yml +1 -0
  32. data/config/locales/id.yml +1 -0
  33. data/config/locales/is.yml +1 -0
  34. data/config/locales/it.yml +1 -0
  35. data/config/locales/ja.yml +1 -0
  36. data/config/locales/ka.yml +1 -0
  37. data/config/locales/kk.yml +1 -0
  38. data/config/locales/ko.yml +1 -0
  39. data/config/locales/ku.yml +1 -0
  40. data/config/locales/ky.yml +1 -0
  41. data/config/locales/lt.yml +1 -0
  42. data/config/locales/lv.yml +1 -0
  43. data/config/locales/ms.yml +1 -0
  44. data/config/locales/mt.yml +1 -0
  45. data/config/locales/ne.yml +1 -0
  46. data/config/locales/nl.yml +1 -0
  47. data/config/locales/no.yml +1 -0
  48. data/config/locales/pa-pk.yml +1 -0
  49. data/config/locales/pa.yml +1 -0
  50. data/config/locales/pl.yml +1 -0
  51. data/config/locales/ps.yml +1 -0
  52. data/config/locales/pt.yml +1 -0
  53. data/config/locales/ro.yml +1 -0
  54. data/config/locales/ru.yml +1 -0
  55. data/config/locales/si.yml +1 -0
  56. data/config/locales/sk.yml +1 -0
  57. data/config/locales/sl.yml +1 -0
  58. data/config/locales/so.yml +1 -0
  59. data/config/locales/sq.yml +1 -0
  60. data/config/locales/sr.yml +1 -0
  61. data/config/locales/sv.yml +1 -0
  62. data/config/locales/sw.yml +1 -0
  63. data/config/locales/ta.yml +1 -0
  64. data/config/locales/th.yml +1 -0
  65. data/config/locales/ti.yml +1 -0
  66. data/config/locales/tk.yml +1 -0
  67. data/config/locales/tr.yml +1 -0
  68. data/config/locales/uk.yml +1 -0
  69. data/config/locales/ur.yml +1 -0
  70. data/config/locales/uz.yml +1 -0
  71. data/config/locales/vi.yml +1 -0
  72. data/config/locales/zh-hk.yml +1 -0
  73. data/config/locales/zh-tw.yml +1 -0
  74. data/config/locales/zh.yml +1 -0
  75. data/lib/govuk_publishing_components/version.rb +1 -1
  76. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8e03438d3c963276e86d21ca8e2da336a8cd15220298b2ffbb57cbf53ca86e56
4
- data.tar.gz: 8e2052d81d95e829bf5239d2cde0080fc21a62ba7aa2097fe707d131db63ae20
3
+ metadata.gz: b52ceb254eb609759602cb6bc0e2a6b5db708b5934acd2d533ce0c719da617fb
4
+ data.tar.gz: 6560960dcd97afd22c9a79035cd0342d711ec9495272eba304e7d4ec82a315ae
5
5
  SHA512:
6
- metadata.gz: 5278c358eb404521e67e9bb9fb95e8df365f7ae1a7df0ba88a9f43b57a5281d735206b7265c28cab4f06843ba30b57d43800b516ff701ed794c31c411bc36713
7
- data.tar.gz: 5aecaf5b41cb5c02b8d85cd194b561e21b8d120adadd4f09dbd1bd6e07fb031d9eecde6d63cf4f3af955f8b0593967ba7b4d4a3d683594b24eb9c41e8161b0e7
6
+ metadata.gz: d6cb5790d20ba98d55bc3a62481f468fc3b54eea9022c44dc9dbbf7d26571fc83a721c02fbcc7e3fbaa0f7298c4d493874e96a1254574a6c98652186f0fbba3f
7
+ data.tar.gz: 6ecbb506695215fb52444d463c8be8354906b4ee986059ed1929d98840c9d5501ea43918a692b9b78a83af990991ee1d899d8371778d0215624fbe2a9578659c
@@ -1,113 +1,117 @@
1
- /*
2
- This module will cause a child in the target element to:
3
- - hide when the top of the target element is visible;
4
- - stick to the bottom of the window while the parent element is in view;
5
- - stick to the bottom of the target when the user scrolls past the bottom.
6
-
7
- Use 'data-module="contents-list-with-body"' to instantiate, and add
8
- `[data-sticky-element]` to the child you want to position.
9
- */
10
-
1
+ /* global IntersectionObserver */
11
2
  (function (Modules) {
12
- function ContentsListWithBody (element) {
13
- this.wrapper = element
14
- this.stickyElement = this.wrapper.querySelector('[data-sticky-element]')
15
- this.hasResized = true
16
- this.hasScrolled = true
17
- this.interval = 50
18
- this.windowVerticalPosition = 1
19
- this.startPosition = 0
20
- this.stopPosition = 0
21
- }
3
+ class ContentsListWithBody {
4
+ /**
5
+ * @param {HTMLElement} $module
6
+ */
7
+ constructor ($module) {
8
+ /** @type {HTMLElement} */
9
+ this.$module = $module
22
10
 
23
- ContentsListWithBody.prototype.init = function () {
24
- if (!this.stickyElement) return
11
+ /** @type {HTMLElement | null} */
12
+ this.stickyElement = this.$module.querySelector('[data-sticky-element]')
25
13
 
26
- window.onresize = this.onResize.bind(this)
27
- window.onscroll = this.onScroll.bind(this)
28
- setInterval(this.checkResize.bind(this), this.interval)
29
- setInterval(this.checkScroll.bind(this), this.interval)
30
- this.checkResize()
31
- this.checkScroll()
32
- this.stickyElement.classList.add('gem-c-contents-list-with-body__sticky-element--enabled')
33
- }
14
+ /** @type {HTMLElement | null} */
15
+ this.topSentinel = this.$module.querySelector('.gem-c-contents-list-with-body__list-container')
34
16
 
35
- ContentsListWithBody.prototype.getWindowDimensions = function () {
36
- return {
37
- height: window.innerHeight,
38
- width: window.innerWidth
39
- }
40
- }
17
+ /** @type {HTMLDivElement | null} */
18
+ this.bottomSentinel = null
41
19
 
42
- ContentsListWithBody.prototype.getWindowPositions = function () {
43
- return {
44
- scrollTop: window.scrollY
45
- }
46
- }
20
+ /** @type {IntersectionObserver | null} */
21
+ this.topObserver = null
47
22
 
48
- ContentsListWithBody.prototype.onResize = function () {
49
- this.hasResized = true
50
- }
23
+ /** @type {IntersectionObserver | null} */
24
+ this.bottomObserver = null
51
25
 
52
- ContentsListWithBody.prototype.onScroll = function () {
53
- this.hasScrolled = true
54
- }
26
+ /** @type {string} */
27
+ this.enabledClass = 'gem-c-contents-list-with-body__sticky-element--enabled'
55
28
 
56
- ContentsListWithBody.prototype.checkResize = function () {
57
- if (this.hasResized) {
58
- this.hasResized = false
59
- this.hasScrolled = true
29
+ /** @type {string} */
30
+ this.stuckToWindowClass = 'gem-c-contents-list-with-body__sticky-element--stuck-to-window'
60
31
 
61
- var windowDimensions = this.getWindowDimensions()
62
- var elementHeight = this.wrapper.offsetHeight || parseFloat(this.wrapper.style.height.replace('px', ''))
63
- this.startPosition = this.wrapper.offsetTop
64
- this.stopPosition = this.wrapper.offsetTop + elementHeight - windowDimensions.height
32
+ /** @type {string} */
33
+ this.hiddenClass = 'gem-c-contents-list-with-body__sticky-element--hidden'
65
34
  }
66
- }
67
35
 
68
- ContentsListWithBody.prototype.checkScroll = function () {
69
- if (this.hasScrolled) {
70
- this.hasScrolled = false
36
+ /**
37
+ * Initialise the contents list with body component
38
+ */
39
+ init () {
40
+ if (!this.stickyElement || !this.topSentinel) return
71
41
 
72
- this.windowVerticalPosition = this.getWindowPositions().scrollTop
42
+ // Ensure the sticky element starts hidden before we check for intersection observer support
43
+ this.stickyElement.classList.add(this.hiddenClass)
73
44
 
74
- this.updateVisibility()
75
- this.updatePosition()
76
- }
77
- }
45
+ if (!('IntersectionObserver' in window)) {
46
+ return
47
+ }
78
48
 
79
- ContentsListWithBody.prototype.updateVisibility = function () {
80
- var isPastStart = this.startPosition < this.windowVerticalPosition
81
- if (isPastStart) {
82
- this.show()
83
- } else {
84
- this.hide()
49
+ this.stickyElement.classList.add(this.enabledClass)
50
+ this.createBottomSentinel(this.stickyElement)
51
+ this.setupObservers(this.stickyElement)
85
52
  }
86
- }
87
53
 
88
- ContentsListWithBody.prototype.updatePosition = function () {
89
- var isPastEnd = this.stopPosition < this.windowVerticalPosition
90
- if (isPastEnd) {
91
- this.stickToParent()
92
- } else {
93
- this.stickToWindow()
54
+ /**
55
+ * Create and insert a bottom sentinel tripwire onto the page before the sticky element.
56
+ * This is used to determine when the sticky element should be docked to the bottom of
57
+ * the parent container instead of sticking to the window.
58
+ *
59
+ * @param {HTMLElement} stickyElement
60
+ */
61
+ createBottomSentinel (stickyElement) {
62
+ const stickyElementParent = stickyElement.parentElement
63
+ if (!stickyElementParent) return
64
+
65
+ this.bottomSentinel = document.createElement('div')
66
+ this.bottomSentinel.className = 'gem-c-contents-list-with-body__bottom-sentinel'
67
+ this.bottomSentinel.setAttribute('aria-hidden', 'true')
68
+ this.bottomSentinel.style.height = '1px'
69
+ this.bottomSentinel.style.width = '100%'
70
+ this.bottomSentinel.style.pointerEvents = 'none'
71
+ this.bottomSentinel.style.visibility = 'hidden'
72
+
73
+ stickyElementParent.insertBefore(this.bottomSentinel, stickyElement)
94
74
  }
95
- }
96
-
97
- ContentsListWithBody.prototype.stickToWindow = function () {
98
- this.stickyElement.classList.add('gem-c-contents-list-with-body__sticky-element--stuck-to-window')
99
- }
100
75
 
101
- ContentsListWithBody.prototype.stickToParent = function () {
102
- this.stickyElement.classList.remove('gem-c-contents-list-with-body__sticky-element--stuck-to-window')
103
- }
104
-
105
- ContentsListWithBody.prototype.show = function () {
106
- this.stickyElement.classList.remove('gem-c-contents-list-with-body__sticky-element--hidden')
107
- }
108
-
109
- ContentsListWithBody.prototype.hide = function () {
110
- this.stickyElement.classList.add('gem-c-contents-list-with-body__sticky-element--hidden')
76
+ /**
77
+ * Set up IntersectionObservers to monitor top and bottom boundaries
78
+ *
79
+ * @param {HTMLElement} stickyElement
80
+ */
81
+ setupObservers (stickyElement) {
82
+ if (!this.topSentinel || !this.bottomSentinel) return
83
+
84
+ this.topObserver = new IntersectionObserver((entries) => {
85
+ entries.forEach((entry) => {
86
+ // Handle showing/hiding the sticky element based on the contents block position.
87
+ // !entry.isIntersecting: Element is completely outside the viewport
88
+ // entry.boundingClientRect.top < 0: Coordinates become negative when scrolled off the top of the screen
89
+ // Required for initial load (e.g. mobile with tall header content) where isIntersecting is false
90
+ // because the contents have not yet entered the viewport from below
91
+ const isPastContents = !entry.isIntersecting && entry.boundingClientRect.top < 0
92
+
93
+ isPastContents
94
+ ? stickyElement.classList.remove(this.hiddenClass)
95
+ : stickyElement.classList.add(this.hiddenClass)
96
+ })
97
+ })
98
+
99
+ this.bottomObserver = new IntersectionObserver((entries) => {
100
+ entries.forEach((entry) => {
101
+ // Handle sticking to the viewport or docking to the bottom of the parent container based on the bottom sentinel position.
102
+ // entry.boundingClientRect.top <= window.innerHeight: True when the sentinel has reached the bottom of the screen
103
+ // or scrolled past above it (e.g. deep into in the footer)
104
+ const isAtBottom = entry.boundingClientRect.top <= window.innerHeight
105
+
106
+ isAtBottom
107
+ ? stickyElement.classList.remove(this.stuckToWindowClass)
108
+ : stickyElement.classList.add(this.stuckToWindowClass)
109
+ })
110
+ })
111
+
112
+ this.topObserver.observe(this.topSentinel)
113
+ this.bottomObserver.observe(this.bottomSentinel)
114
+ }
111
115
  }
112
116
 
113
117
  Modules.ContentsListWithBody = ContentsListWithBody
@@ -75,7 +75,6 @@
75
75
  scrollBar.append(scrollBarChild)
76
76
  table.before(scrollBar)
77
77
  scrollBar.scrollLeft = table.scrollLeft
78
- this.updateLeftRight(table)
79
78
 
80
79
  scrollBar.onscroll = () => {
81
80
  if (this.preventScrolling) {
@@ -84,7 +83,6 @@
84
83
  }
85
84
  this.preventScrolling = true
86
85
  table.scrollLeft = scrollBar.scrollLeft
87
- this.updateLeftRight(table)
88
86
  }
89
87
 
90
88
  table.onscroll = () => {
@@ -94,21 +92,10 @@
94
92
  }
95
93
  this.preventScrolling = true
96
94
  scrollBar.scrollLeft = table.scrollLeft
97
- this.updateLeftRight(table)
98
95
  }
99
96
  })
100
97
  }
101
98
 
102
- TableScroll.prototype.updateLeftRight = function (table) {
103
- if ((table.scrollWidth - table.scrollLeft) < (table.offsetWidth + 1)) {
104
- table.parentElement.className = 'tablewrapper tablewrapper--active tablewrapper--end'
105
- } else if (table.scrollLeft < 1) {
106
- table.parentElement.className = 'tablewrapper tablewrapper--active tablewrapper--start'
107
- } else {
108
- table.parentElement.className = 'tablewrapper tablewrapper--active'
109
- }
110
- }
111
-
112
99
  TableScroll.prototype.destroyElements = function () {
113
100
  const scrollBars = this.element.querySelectorAll('.govspeak-table-scrollbar')
114
101
  scrollBars.forEach(bar => {
@@ -56,50 +56,22 @@
56
56
  }
57
57
 
58
58
  .tablewrapper {
59
- position: relative;
60
- }
61
-
62
- .tablewrapper--active {
63
- &::before,
64
- &::after {
65
- content: "";
66
- position: absolute;
67
- top: 24px;
68
- width: 10px;
69
- bottom: 20px;
70
- background: rgb(0, 0, 0, 0.1);
71
- border-color: $govuk-border-colour;
72
- border-width: 5px;
73
- }
74
-
75
- &::before {
76
- left: 0;
77
- border-left-style: solid;
78
- border-radius: 0 15px 15px 0;
79
- }
80
-
81
- &::after {
82
- right: 0;
83
- border-right-style: solid;
84
- border-radius: 15px 0 0 15px;
85
- }
86
- }
87
-
88
- .tablewrapper--start {
89
- &::before {
90
- display: none;
91
- }
92
- }
93
-
94
- .tablewrapper--end {
95
- &::after {
96
- display: none;
59
+ table {
60
+ background:
61
+ linear-gradient(90deg, govuk-functional-colour('body-background') 30%, rgb(255, 255, 255, 0)), // this covers the left
62
+ linear-gradient(90deg, rgb(255,255,255,0), govuk-functional-colour('body-background') 70%) 100% 100%, // this covers the right
63
+ linear-gradient(90deg, rgb(0, 0, 0, 0.2), rgb(255, 255, 255, 0)), // this should show when you can scroll left
64
+ linear-gradient(90deg, rgb(255, 255, 255, 0), rgb(0, 0, 0, 0.2)) 100% 100%; // this should show when you can scroll right
65
+ background-repeat: no-repeat;
66
+ background-color: govuk-functional-colour('body-background');
67
+ background-size: 50px 100%, 50px 100%, 14px 100%, 14px 100%;
68
+ background-attachment: local, local, scroll, scroll;
97
69
  }
98
70
  }
99
71
 
100
72
  .govspeak-table-scrollbar {
101
73
  position: sticky;
102
- background: #FFFFFF;
74
+ background: govuk-functional-colour('body-background');
103
75
  z-index: 1;
104
76
  top: 0;
105
77
  overflow-x: scroll;
@@ -23,7 +23,6 @@
23
23
  component_helper.add_class("gem-c-metadata")
24
24
  component_helper.add_class("direction-#{direction}") if local_assigns.include?(:direction)
25
25
  component_helper.add_class("gem-c-metadata--border-top") if border_top
26
- component_helper.set_id("full-publication-update-history") if page_history.any?
27
26
 
28
27
  if inverse
29
28
  component_helper.add_class("gem-c-metadata--inverse")
@@ -38,6 +37,12 @@
38
37
  type: "content history",
39
38
  section: "Top",
40
39
  }.to_json unless disable_ga4
40
+ see_all_link_ga4_object = {
41
+ event_name: "navigation",
42
+ type: "content history",
43
+ section: "Top",
44
+ index_section: 1,
45
+ }.to_json unless disable_ga4
41
46
 
42
47
  render_component = true if from.any? || part_of.any? || history || first_published || last_updated || page_history.any? || other
43
48
  %>
@@ -78,6 +83,16 @@
78
83
  <dt class="gem-c-metadata__term"><%= t("components.metadata.last_updated") %>:</dt>
79
84
  <dd class="gem-c-metadata__definition">
80
85
  <%= last_updated %>
86
+ <% if local_assigns.include?(:see_updates_link) %>
87
+ &#8212;
88
+ <a href="#full-publication-update-history" class="govuk-!-display-none-print"
89
+ <% unless disable_ga4 %>
90
+ data-module="ga4-link-tracker"
91
+ data-ga4-link="<%= see_all_link_ga4_object %>"
92
+ <% end %>>
93
+ <%= t("components.metadata.see_all_updates") %>
94
+ </a>
95
+ <% end %>
81
96
  <% if page_history.any? %>
82
97
  <div class="gem-c-metadata__details-wrapper">
83
98
  <%= render "govuk_publishing_components/components/details", {
@@ -87,7 +102,7 @@
87
102
  ga4_attributes: page_history_details_ga4,
88
103
  disable_ga4: disable_ga4,
89
104
  } do %>
90
- <ol class="gem-c-metadata__change-history">
105
+ <ol class="gem-c-metadata__change-history" id="full-publication-update-history">
91
106
  <% page_history.each do |change| %>
92
107
  <li class="gem-c-metadata__change-history-item">
93
108
  <time class="gem-c-metadata__change-date" datetime="<%= change[:timestamp] %>"><%= change[:display_time] %></time>
@@ -26,10 +26,22 @@ examples:
26
26
  data:
27
27
  border_top: true
28
28
  from: <a href='/government/organisations/ministry-of-defence'>Ministry of Defence</a>
29
- published_and_updated:
29
+ published_and_last_updated:
30
30
  data:
31
31
  first_published: 14 June 2014
32
32
  last_updated: 10 September 2015
33
+ last_updated_and_link_to_see_details:
34
+ description: |
35
+ If a `last_updated` value exists and `see_updates_link` is set to true, a "See all updates" link will be shown.
36
+
37
+ The link's href will be set to `#full-publication-update-history` to match the ID of the page history displayed in a second metadata component at the bottom of the page (for example on [Set up a Driver CPC training centre](https://www.gov.uk/guidance/set-up-a-driver-cpc-training-centre)).
38
+
39
+ Clicking on this link will jump to the page history at the bottom of the page. Because the ID is contained within a details element, it will also automatically open that element so that the page history is visible.
40
+
41
+ On this component guide page, clicking the link will jump to the example below, and open the details element there.
42
+ data:
43
+ last_updated: 10 September 2015
44
+ see_updates_link: true
33
45
  display_page_history:
34
46
  description: |
35
47
  This will set up an expandable section on the page, with a top border, to let users toggle the display of the page history. It also includes a hidden H2 heading of 'Updates to this page'. This heading will not be included if one is passed to the component using the `title` option.
@@ -160,6 +160,7 @@ ar:
160
160
  last_updated: التحديث الأخير
161
161
  part_of: جزء من
162
162
  published: تاريخ النشر
163
+ see_all_updates: اطلع على كل التحديثات
163
164
  show_all_updates: إظهار كل التحديثات
164
165
  modal_dialogue:
165
166
  close_modal: إغلاق مربع الحوار المشروط
@@ -157,6 +157,7 @@ az:
157
157
  last_updated: Son yenilənmə
158
158
  part_of: Hissə
159
159
  published: Dərc edilib
160
+ see_all_updates: Bütün yeniləmələrə baxın
160
161
  show_all_updates: bütün yeniləmələri göstər
161
162
  modal_dialogue:
162
163
  close_modal: Modal dialoqu bağla
@@ -163,6 +163,7 @@ be:
163
163
  last_updated: Апошняе абнаўленне
164
164
  part_of: Частка
165
165
  published: Апублікаваны
166
+ see_all_updates: Паглядзець усе абнаўленні
166
167
  show_all_updates: паказаць усе абнаўленні
167
168
  modal_dialogue:
168
169
  close_modal: Зачыніць мадальны дыялог
@@ -161,6 +161,7 @@ bg:
161
161
  last_updated: Последно актуализирани
162
162
  part_of: Част от
163
163
  published: Публикуван
164
+ see_all_updates: Вижте всички актуализации
164
165
  show_all_updates: показване на всички актуализации
165
166
  modal_dialogue:
166
167
  close_modal: Затваряне на модалния диалог
@@ -158,6 +158,7 @@ bn:
158
158
  last_updated: সর্বশেষ আপডেট করা হয়েছে
159
159
  part_of: এর অংশ
160
160
  published: প্রকাশিত হয়েছে
161
+ see_all_updates: সকল আপডেট দেখুন
161
162
  show_all_updates: সকল আপডেট দেখান
162
163
  modal_dialogue:
163
164
  close_modal: ক্লোজ মোডাল ডায়ালগ
@@ -162,6 +162,7 @@ cs:
162
162
  last_updated: 'Poslední aktualizace:'
163
163
  part_of: Část
164
164
  published: Zveřejněno
165
+ see_all_updates: Vidět všechny aktualizace
165
166
  show_all_updates: zobrazit všechny aktualizace
166
167
  modal_dialogue:
167
168
  close_modal: Zavření modálního dialogu
@@ -161,6 +161,7 @@ cy:
161
161
  last_updated: Diweddarwyd ddiwethaf
162
162
  part_of: Rhan o
163
163
  published: Cyhoeddwyd
164
+ see_all_updates: Gweld pob diweddariad
164
165
  show_all_updates: dangos pob diweddariad
165
166
  modal_dialogue:
166
167
  close_modal: Cau'r ddeialog foddol
@@ -158,6 +158,7 @@ da:
158
158
  last_updated: Sidst opdateret
159
159
  part_of: del af
160
160
  published: offentliggjort
161
+ see_all_updates: se alle opdateringer
161
162
  show_all_updates: vis alle opdateringer
162
163
  modal_dialogue:
163
164
  close_modal: Luk den modale dialog
@@ -161,6 +161,7 @@ de:
161
161
  last_updated: Zuletzt aktualisiert
162
162
  part_of: Teil von
163
163
  published: Veröffentlicht
164
+ see_all_updates: Alle Aktualisierungen ansehen
164
165
  show_all_updates: alle Aktualisierungen anzeigen
165
166
  modal_dialogue:
166
167
  close_modal: Dialog schließen
@@ -159,6 +159,7 @@ dr:
159
159
  last_updated: آخرین آپدیت
160
160
  part_of: بخشی از
161
161
  published: منتشر شده است
162
+ see_all_updates: تمام آپدیت ها را مشاهده نمایید
162
163
  show_all_updates: تمام آپدیت ها را نمایش دهید
163
164
  modal_dialogue:
164
165
  close_modal: دیالوگ کیفی را بسته نمایید
@@ -157,6 +157,7 @@ el:
157
157
  last_updated: Τελευταία ενημέρωση
158
158
  part_of: Μέρος του
159
159
  published: Δημοσιεύθηκε
160
+ see_all_updates: Δείτε όλες τις ενημερώσεις
160
161
  show_all_updates: εμφάνιση όλων των ενημερώσεων
161
162
  modal_dialogue:
162
163
  close_modal: Κλείσιμο παράθυρου διαλόγου
@@ -264,6 +264,7 @@ en:
264
264
  last_updated: Last updated
265
265
  part_of: Part of
266
266
  published: Published
267
+ see_all_updates: See all updates
267
268
  show_all_updates: Show all updates
268
269
  modal_dialogue:
269
270
  close_modal: Close modal dialogue
@@ -157,6 +157,7 @@ es-419:
157
157
  last_updated: Última actualización
158
158
  part_of: Parte de
159
159
  published: Publicado
160
+ see_all_updates: Ver todas las novedades
160
161
  show_all_updates: mostrar todas las actualizaciones
161
162
  modal_dialogue:
162
163
  close_modal: Cerrar diálogo modal
@@ -157,6 +157,7 @@ es:
157
157
  last_updated: Última actualización
158
158
  part_of: Parte de
159
159
  published: Publicado
160
+ see_all_updates: Ver todas las actualizaciones
160
161
  show_all_updates: mostrar todas las actualizaciones
161
162
  modal_dialogue:
162
163
  close_modal: Cierre el cuadro de diálogo modal
@@ -160,6 +160,7 @@ et:
160
160
  last_updated: Viimati värskendatud
161
161
  part_of: Osa
162
162
  published: Avaldatud
163
+ see_all_updates: Vt kõiki värskendusi
163
164
  show_all_updates: kuva kõik värskendused
164
165
  modal_dialogue:
165
166
  close_modal: Sule modaalne dialoog
@@ -156,6 +156,7 @@ fa:
156
156
  last_updated: آخرین بروزرسانی
157
157
  part_of: بخشی از
158
158
  published: منتشر شده
159
+ see_all_updates: مشاهده تمام بروزرسانی‌ها
159
160
  show_all_updates: نمایش تمام بروزرسانی‌ها
160
161
  modal_dialogue:
161
162
  close_modal: بستن گفتگوی مودال
@@ -159,6 +159,7 @@ fi:
159
159
  last_updated: Viimeksi päivitetty
160
160
  part_of: Osa
161
161
  published: Julkaistu
162
+ see_all_updates: Katso kaikki palvelut
162
163
  show_all_updates: näytä kaikki päivitykset
163
164
  modal_dialogue:
164
165
  close_modal: Sulje modaalinen vuoropuhelu
@@ -157,6 +157,7 @@ fr:
157
157
  last_updated: Dernière mise à jour
158
158
  part_of: Fait partie de
159
159
  published: Publié
160
+ see_all_updates: Afficher toutes les mises à jour
160
161
  show_all_updates: afficher toutes les mises à jour
161
162
  modal_dialogue:
162
163
  close_modal: Fermer le dialogue modal
@@ -159,6 +159,7 @@ gd:
159
159
  last_updated: Nuashonrú deireanach
160
160
  part_of: Chuid
161
161
  published: Arna chur suas
162
+ see_all_updates: Féach gach nuashonrú
162
163
  show_all_updates: Taispeáin gach nuashonrú
163
164
  modal_dialogue:
164
165
  close_modal: Dún an dialóg módúil
@@ -157,6 +157,7 @@ gu:
157
157
  last_updated: છેલ્લે અપડેટ કરવામાં આવ્યું
158
158
  part_of: નો ભાગ
159
159
  published: પ્રકાશિત
160
+ see_all_updates: તમામ અપડેટ્સ જુઓ
160
161
  show_all_updates: બધા અપડેટ્સ બતાવો
161
162
  modal_dialogue:
162
163
  close_modal: મોડલ ડાયલોગ બંધ કરો
@@ -157,6 +157,7 @@ he:
157
157
  last_updated: עדכון אחרון
158
158
  part_of: חלק של
159
159
  published: פורסם
160
+ see_all_updates: ראה כל העדכונים
160
161
  show_all_updates: הצג כל עדכונים
161
162
  modal_dialogue:
162
163
  close_modal: סגור דיאלוג מודאלי
@@ -157,6 +157,7 @@ hi:
157
157
  last_updated: आखरी अपडेट
158
158
  part_of: का भाग
159
159
  published: प्रकाशित
160
+ see_all_updates: सभी अपडेट देखें
160
161
  show_all_updates: सभी अपडेट दिखाएं
161
162
  modal_dialogue:
162
163
  close_modal: मॉडल संवाद बंद करें
@@ -158,6 +158,7 @@ hr:
158
158
  last_updated: Posljednji put ažurirano
159
159
  part_of: Dio
160
160
  published: Objavljeno
161
+ see_all_updates: Pogledajte sva ažuriranja
161
162
  show_all_updates: prikaži sva ažuriranja
162
163
  modal_dialogue:
163
164
  close_modal: Zatvorite modalni dijalog
@@ -160,6 +160,7 @@ hu:
160
160
  last_updated: Utolsó frissítés
161
161
  part_of: 'Része a következőnek:'
162
162
  published: Közzététel időpontja
163
+ see_all_updates: Minden frissítés megtekintése
163
164
  show_all_updates: minden frissítés megjelenítése
164
165
  modal_dialogue:
165
166
  close_modal: Modális párbeszédpanel bezárása
@@ -161,6 +161,7 @@ hy:
161
161
  last_updated: Վերջին անգամ թարմացվել է
162
162
  part_of: Մաս է՝
163
163
  published: Հրապարակված
164
+ see_all_updates: Դիտել բոլոր թարմացումները
164
165
  show_all_updates: ցույց տալ բոլոր թարմացումները
165
166
  modal_dialogue:
166
167
  close_modal: Փակել մոդալ պատուհանը
@@ -157,6 +157,7 @@ id:
157
157
  last_updated: Terakhir diperbarui
158
158
  part_of: Bagian dari
159
159
  published: Diterbitkan
160
+ see_all_updates: Lihat semua pembaruan
160
161
  show_all_updates: Tampilkan semua pembaruan
161
162
  modal_dialogue:
162
163
  close_modal: Tutup dialog
@@ -157,6 +157,7 @@ is:
157
157
  last_updated: Síðast uppfært
158
158
  part_of: Hluti af
159
159
  published: Birt
160
+ see_all_updates: Sjá allar uppfærslur
160
161
  show_all_updates: sýna allar uppfærslur
161
162
  modal_dialogue:
162
163
  close_modal: Loka glugga
@@ -157,6 +157,7 @@ it:
157
157
  last_updated: Ultimo aggiornamento
158
158
  part_of: Parte di
159
159
  published: Pubblicato
160
+ see_all_updates: Vedi tutti gli aggiornamenti
160
161
  show_all_updates: mostra tutti gli aggiornamenti
161
162
  modal_dialogue:
162
163
  close_modal: Chiudi dialogo modale
@@ -153,6 +153,7 @@ ja:
153
153
  last_updated: 最終更新
154
154
  part_of: 一部の
155
155
  published: 公開済み
156
+ see_all_updates: すべての更新を表示
156
157
  show_all_updates: すべての更新を表示
157
158
  modal_dialogue:
158
159
  close_modal: 特殊ウインドウを閉じる
@@ -160,6 +160,7 @@ ka:
160
160
  last_updated: ბოლო განახლება
161
161
  part_of: ნაწილი
162
162
  published: პუბლიკაცია
163
+ see_all_updates: ყველა განახლების ნახვა
163
164
  show_all_updates: ყველა ცვლილების ჩვენება
164
165
  modal_dialogue:
165
166
  close_modal: მოდალური დიალოგის გამორთვა
@@ -157,6 +157,7 @@ kk:
157
157
  last_updated: Соңғы рет жаңартылды
158
158
  part_of: Бөлігі
159
159
  published: Жарияланды
160
+ see_all_updates: Барлық жаңартуларды қарау
160
161
  show_all_updates: барлық жаңартуларды көрсету
161
162
  modal_dialogue:
162
163
  close_modal: Жабық модальды диалог
@@ -152,6 +152,7 @@ ko:
152
152
  last_updated: 최근 업데이트일
153
153
  part_of:
154
154
  published: 발행일
155
+ see_all_updates: 모든 업데이트 보기
155
156
  show_all_updates: 모든 업데이트 보기
156
157
  modal_dialogue:
157
158
  close_modal:
@@ -156,6 +156,7 @@ ku:
156
156
  last_updated: دوایین نوێکردنەوە
157
157
  part_of: بەشێک لە
158
158
  published: بڵاوکراوەتەوە
159
+ see_all_updates: هەموو نوێکارییەکان ببینە
159
160
  show_all_updates:
160
161
  modal_dialogue:
161
162
  close_modal: گفتوگۆی مۆداڵی دابخە
@@ -153,6 +153,7 @@ ky:
153
153
  last_updated: Акыркы жолу жаңыртылды
154
154
  part_of: Бөлүгү
155
155
  published: Жарыяланды
156
+ see_all_updates: Бардык жаңыртууларды көрүү
156
157
  show_all_updates:
157
158
  modal_dialogue:
158
159
  close_modal: Модалдык диалогду жабуу
@@ -162,6 +162,7 @@ lt:
162
162
  last_updated: Paskutinį kartą naujinta
163
163
  part_of: Dalis
164
164
  published: Publikuota
165
+ see_all_updates: Matyti visą naujausią informaciją
165
166
  show_all_updates: rodyti visą naują informaciją
166
167
  modal_dialogue:
167
168
  close_modal: Uždaryti modalinį dialogo langą
@@ -161,6 +161,7 @@ lv:
161
161
  last_updated: Pēdējoreiz atjaunināts
162
162
  part_of: Daļa no
163
163
  published: Publicēts
164
+ see_all_updates: Skatīt visus atjauninājumus
164
165
  show_all_updates: rādīt visus atjauninājumus
165
166
  modal_dialogue:
166
167
  close_modal: Aizvērt modālo dialogu
@@ -156,6 +156,7 @@ ms:
156
156
  last_updated: Kali terakhir dikemas kini
157
157
  part_of: Sebahagian daripada
158
158
  published: Diterbitkan
159
+ see_all_updates: Lihat semua kemas kini
159
160
  show_all_updates: tunjuk semua kemas kini
160
161
  modal_dialogue:
161
162
  close_modal: Tutup dialog mod
@@ -159,6 +159,7 @@ mt:
159
159
  last_updated: Aġġornat l-aħħar
160
160
  part_of: Parti minn
161
161
  published: Ippubblikat
162
+ see_all_updates: Ara l-aġġornamenti kollha
162
163
  show_all_updates: uri l-aġġornamenti kollha
163
164
  modal_dialogue:
164
165
  close_modal: Agħlaq id-djalogu modali
@@ -153,6 +153,7 @@ ne:
153
153
  last_updated: पछिल्लो अद्यावधिक
154
154
  part_of:
155
155
  published: प्रकाशित
156
+ see_all_updates:
156
157
  show_all_updates: सबै अद्यावधिक देखाउनुहोस्
157
158
  modal_dialogue:
158
159
  close_modal:
@@ -157,6 +157,7 @@ nl:
157
157
  last_updated: Laatst bijgewerkt
158
158
  part_of: Deel van
159
159
  published: Gepubliceerd
160
+ see_all_updates: Bekijk alle updates
160
161
  show_all_updates: toon alle updates
161
162
  modal_dialogue:
162
163
  close_modal: Modale dialoog sluiten
@@ -157,6 +157,7 @@
157
157
  last_updated: Sist oppdatert
158
158
  part_of: Del av
159
159
  published: Publisert
160
+ see_all_updates: Se alle oppdateringer
160
161
  show_all_updates: vis alle oppdateringer
161
162
  modal_dialogue:
162
163
  close_modal: Lukk modal dialog
@@ -153,6 +153,7 @@ pa-pk:
153
153
  last_updated: آخری دفعہ کدوں نویں گل دسی سی
154
154
  part_of: ایندا حصہ
155
155
  published: شائع کیتا گیا
156
+ see_all_updates: ساریاں نویاں چیزاں دیکھو
156
157
  show_all_updates: ساری تازہ ترین صورتِ حال وکھاؤ
157
158
  modal_dialogue:
158
159
  close_modal: موڈیل ڈائیلاگ نوں بند کرو
@@ -157,6 +157,7 @@ pa:
157
157
  last_updated: ਪਿਛਲੀ ਵਾਰ ਅਪਡੇਟ ਕੀਤਾ ਗਿਆ
158
158
  part_of: ਦਾ ਹਿੱਸਾ
159
159
  published: ਪ੍ਰਕਾਸ਼ਿਤ
160
+ see_all_updates: ਸਾਰੇ ਅਪਡੇਟਸ ਵੇਖੋ
160
161
  show_all_updates: ਸਾਰੇ ਅਪਡੇਟ ਦਿਖਾਉ
161
162
  modal_dialogue:
162
163
  close_modal: ਮਾਡਲ ਸੰਵਾਦ ਬੰਦ ਕਰੋ
@@ -161,6 +161,7 @@ pl:
161
161
  last_updated: Ostatnio zaktualizowano
162
162
  part_of: Część
163
163
  published: Opublikowano
164
+ see_all_updates: Zobacz wszystkie aktualizacje
164
165
  show_all_updates: pokaż wszystkie aktualizacje
165
166
  modal_dialogue:
166
167
  close_modal: Zamknij okno modalne
@@ -154,6 +154,7 @@ ps:
154
154
  last_updated: وروستی تازه شوی
155
155
  part_of: برخه
156
156
  published: خپور شوی
157
+ see_all_updates: ټول تازه معلومات وګورئ
157
158
  show_all_updates: ټول تازه معلومات وښایاست
158
159
  modal_dialogue:
159
160
  close_modal: موډل ډیالوګ بند کړئ
@@ -157,6 +157,7 @@ pt:
157
157
  last_updated: Última atualização
158
158
  part_of: Parte de
159
159
  published: Publicado em
160
+ see_all_updates: Ver todas as atualizações
160
161
  show_all_updates: mostrar todas as atualizações
161
162
  modal_dialogue:
162
163
  close_modal: Fechar diálogo modal
@@ -158,6 +158,7 @@ ro:
158
158
  last_updated: Ultima actualizare
159
159
  part_of: Parte din
160
160
  published: Publicat
161
+ see_all_updates: Vedeți toate actualizările
161
162
  show_all_updates: afișați toate actualizările
162
163
  modal_dialogue:
163
164
  close_modal: Închideți dialogul modal
@@ -161,6 +161,7 @@ ru:
161
161
  last_updated: Последнее обновление
162
162
  part_of: Является частью
163
163
  published: Опубликовано
164
+ see_all_updates: Посмотреть все обновления
164
165
  show_all_updates: Показать всю поледнюю информацию
165
166
  modal_dialogue:
166
167
  close_modal: Закрыть модальное диалоговое окно
@@ -157,6 +157,7 @@ si:
157
157
  last_updated: අවසන් වරට යාවත්කාලීන කළේ
158
158
  part_of: කොටසක්
159
159
  published: පළ කළේ
160
+ see_all_updates: සියලුම යාවත්කාලීනයන් බලන්න
160
161
  show_all_updates: සියලු යාවත්කාලීනයන් පෙන්වන්න
161
162
  modal_dialogue:
162
163
  close_modal: ආදර්ශ සංවාදය වසන්න
@@ -162,6 +162,7 @@ sk:
162
162
  last_updated: Posledná aktualizácia
163
163
  part_of: Časť
164
164
  published: Zverejnené na
165
+ see_all_updates: Zobraziť všetky aktualizácie
165
166
  show_all_updates: zobraziť všetky aktualizácie
166
167
  modal_dialogue:
167
168
  close_modal: Zavrieť modálny dialóg
@@ -164,6 +164,7 @@ sl:
164
164
  last_updated: Nazadnje posodobljeno
165
165
  part_of: Del
166
166
  published: Objavljeno
167
+ see_all_updates: Poglej vse posodobitve
167
168
  show_all_updates: prikaži vse posodobitve
168
169
  modal_dialogue:
169
170
  close_modal: Zapri modalno okno
@@ -157,6 +157,7 @@ so:
157
157
  last_updated: Cusboonaysiintii ugu dambaysay
158
158
  part_of: Ka qeyba
159
159
  published: Daabacaada
160
+ see_all_updates: Eeg dhamaan cusboonaysiinaha
160
161
  show_all_updates: muuji dhamaan cusboonaysiinaha
161
162
  modal_dialogue:
162
163
  close_modal: Kusoo dhawoow wada hadal dhex dhexaad ah
@@ -157,6 +157,7 @@ sq:
157
157
  last_updated: Përditësuar së fundmi
158
158
  part_of: Pjesë e
159
159
  published: Publikuar
160
+ see_all_updates: Shih të gjitha përditësimet
160
161
  show_all_updates: shfaq të gjitha përditësimet
161
162
  modal_dialogue:
162
163
  close_modal: Mbyll dialogun modal
@@ -158,6 +158,7 @@ sr:
158
158
  last_updated: Poslednje ažuriranje
159
159
  part_of: Deo
160
160
  published: Objavljeno
161
+ see_all_updates: Pogledajte sva ažuriranja
161
162
  show_all_updates: prikaži sva ažuriranja
162
163
  modal_dialogue:
163
164
  close_modal: Zatvori modalni dijalog
@@ -157,6 +157,7 @@ sv:
157
157
  last_updated: Senast uppdaterad
158
158
  part_of: Del av
159
159
  published: Publicerad
160
+ see_all_updates: Se alla uppdateringar
160
161
  show_all_updates: Visa alla uppdateringar
161
162
  modal_dialogue:
162
163
  close_modal: Stäng den modala dialogen
@@ -157,6 +157,7 @@ sw:
157
157
  last_updated: Ilisasishwa mara ya mwisho
158
158
  part_of: Sehemu ya
159
159
  published: Ilichapishwa
160
+ see_all_updates: Angalia taarifa zote
160
161
  show_all_updates: Onyesha taarifa zote
161
162
  modal_dialogue:
162
163
  close_modal: Funga dirisha ibukizi
@@ -158,6 +158,7 @@ ta:
158
158
  last_updated: கடைசியாகப் புதுப்பிக்கப்பட்டது
159
159
  part_of: பகுதி
160
160
  published: வெளியிடப்பட்டது
161
+ see_all_updates: அனைத்து புதுப்பித்தல்களையும் பார்
161
162
  show_all_updates: அனைத்து புதுப்பித்தல்களையும் காட்டு
162
163
  modal_dialogue:
163
164
  close_modal: மாதிரி உரையாடலை மூடு
@@ -155,6 +155,7 @@ th:
155
155
  last_updated: อัปเดตล่าสุด
156
156
  part_of: ส่วนหนึ่งของ
157
157
  published: เผยแพร่แล้ว
158
+ see_all_updates: ดูอัปเดตทั้งหมด
158
159
  show_all_updates: แสดงอัปเดตทั้งหมด
159
160
  modal_dialogue:
160
161
  close_modal: ปิดการสนทนาโมดอล
@@ -156,6 +156,7 @@ ti:
156
156
  last_updated: ናይ መወዳእታ ዝተሓደሰ
157
157
  part_of: ሓደ ክፋል ናይ
158
158
  published: ዝተሓትመ
159
+ see_all_updates: ኩሉ ሓድሽ ሓበሬታ ርአ
159
160
  show_all_updates:
160
161
  modal_dialogue:
161
162
  close_modal: ሞዳል ዝርርብ ዕጸዎ።
@@ -158,6 +158,7 @@ tk:
158
158
  last_updated: Iň soňky täzelenme
159
159
  part_of: Bir bölegi
160
160
  published: Çap edilen
161
+ see_all_updates: Ähli täzelenmelere serediň
161
162
  show_all_updates: ähli täzelenmeleri görkez
162
163
  modal_dialogue:
163
164
  close_modal: Modal gepleşikleri tamamlamak
@@ -158,6 +158,7 @@ tr:
158
158
  last_updated: Son güncelleme
159
159
  part_of: Şunun kısmı
160
160
  published: Yayınlanan
161
+ see_all_updates: Tüm güncellemeleri görün
161
162
  show_all_updates: tüm güncellemeleri göster
162
163
  modal_dialogue:
163
164
  close_modal: Model diyaloğu kapat
@@ -164,6 +164,7 @@ uk:
164
164
  last_updated: Останнє оновлення
165
165
  part_of: Частина
166
166
  published: Опубліковано
167
+ see_all_updates: Переглянути всі оновлення
167
168
  show_all_updates: показати всі оновлення
168
169
  modal_dialogue:
169
170
  close_modal: Закрити модальний діалог
@@ -154,6 +154,7 @@ ur:
154
154
  last_updated: آخری بار اپ ڈیٹ کردہ
155
155
  part_of: حصہ از
156
156
  published: شائع کردہ
157
+ see_all_updates: تمام اپ ڈیٹس دیکھیں
157
158
  show_all_updates: تمام اپ ڈیٹس دکھائیں
158
159
  modal_dialogue:
159
160
  close_modal: محدود موڈل ڈائیلاگ
@@ -159,6 +159,7 @@ uz:
159
159
  last_updated: Сўнгги янгиланиш
160
160
  part_of: Қисм
161
161
  published: Нашр қилинган
162
+ see_all_updates: Барча янгиланишларни кўриш
162
163
  show_all_updates: янгиланишларни барчасини кўрсатиш
163
164
  modal_dialogue:
164
165
  close_modal: Модал мулоқотни ёпиш
@@ -156,6 +156,7 @@ vi:
156
156
  last_updated: Lần cập nhật gần đây nhất
157
157
  part_of: Một phần của
158
158
  published: Đã xuất bản
159
+ see_all_updates: Xem tất cả nội dung cập nhật
159
160
  show_all_updates: hiển thị tất cả nội dung cập nhật
160
161
  modal_dialogue:
161
162
  close_modal: Đóng đối thoại phương thức
@@ -155,6 +155,7 @@ zh-hk:
155
155
  last_updated: 最近更新
156
156
  part_of: 部份
157
157
  published: 已發佈
158
+ see_all_updates: 查閱所有更新項
158
159
  show_all_updates: 顯示所有更新
159
160
  modal_dialogue:
160
161
  close_modal: 關閉互動視窗對話
@@ -155,6 +155,7 @@ zh-tw:
155
155
  last_updated: 最新更新
156
156
  part_of: 部分
157
157
  published: 發布
158
+ see_all_updates: 查看所有更新
158
159
  show_all_updates: 展開所有更新
159
160
  modal_dialogue:
160
161
  close_modal: 關閉模態對話
@@ -155,6 +155,7 @@ zh:
155
155
  last_updated: 上次更新
156
156
  part_of: 一部分
157
157
  published: 已发布
158
+ see_all_updates: 查看全部更新
158
159
  show_all_updates: 显示全部更新
159
160
  modal_dialogue:
160
161
  close_modal: 关闭模态对话
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = "71.0.1".freeze
2
+ VERSION = "71.1.0".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: 71.0.1
4
+ version: 71.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - GOV.UK Dev