govuk_publishing_components 23.6.0 → 23.7.4

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 (26) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -1
  3. data/app/assets/javascripts/govuk_publishing_components/lib/govspeak/magna-charta.js +1 -2
  4. data/app/assets/stylesheets/govuk_publishing_components/_all_components.scss +1 -0
  5. data/app/assets/stylesheets/govuk_publishing_components/component_support.scss +1 -0
  6. data/app/assets/stylesheets/govuk_publishing_components/components/_contextual-sidebar.scss +2 -0
  7. data/app/assets/stylesheets/govuk_publishing_components/components/_search.scss +1 -1
  8. data/app/assets/stylesheets/govuk_publishing_components/components/_transition-countdown.scss +125 -0
  9. data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_charts.scss +2 -2
  10. data/app/assets/stylesheets/govuk_publishing_components/components/govspeak/_steps.scss +3 -3
  11. data/app/assets/stylesheets/govuk_publishing_components/components/mixins/_govuk-template-link-focus-override.scss +1 -1
  12. data/app/assets/stylesheets/govuk_publishing_components/components/print/_accordion.scss +3 -3
  13. data/app/views/govuk_publishing_components/components/_contextual_sidebar.html.erb +17 -1
  14. data/app/views/govuk_publishing_components/components/_related_navigation.html.erb +3 -1
  15. data/app/views/govuk_publishing_components/components/_transition_countdown.html.erb +35 -0
  16. data/app/views/govuk_publishing_components/components/docs/contextual_sidebar.yml +0 -1
  17. data/app/views/govuk_publishing_components/components/docs/transition_countdown.yml +17 -0
  18. data/app/views/govuk_publishing_components/components/related_navigation/_section.html.erb +1 -1
  19. data/config/locales/cy.yml +5 -0
  20. data/config/locales/en.yml +4 -1
  21. data/lib/govuk_publishing_components.rb +1 -0
  22. data/lib/govuk_publishing_components/app_helpers/countdown_helper.rb +33 -0
  23. data/lib/govuk_publishing_components/presenters/related_navigation_helper.rb +0 -40
  24. data/lib/govuk_publishing_components/presenters/shared_helper.rb +42 -0
  25. data/lib/govuk_publishing_components/version.rb +1 -1
  26. metadata +6 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34b79bd902906ae48c22d4f01510b329d279a953d607ef7633fcd29d44dbd3ef
4
- data.tar.gz: e4bf0609433d8308708a96da4b9a6e9f2960e3551960af806c12be5bb74be16d
3
+ metadata.gz: 4a170790240f4967c7bd50f70aadd5d681827a5404aa89118fc31ba8e31172c1
4
+ data.tar.gz: 3c1cc8d6330980e3fb50eec03589fadfd25fdec08dffd71f3f3eaa2243c151af
5
5
  SHA512:
6
- metadata.gz: 285ae326a806521d45584efced7930c995009d6577820a248fec57fb4f0974d7e2eeaaabd7ba2e245beac066fe16e1c398a2ffc6590141e272fb1c2807adbf96
7
- data.tar.gz: c2e148283ce68ef51963f2b9a437aa754bb65f5baa9aadc712316605e3028c3d0714d1db6f36214f77be558755464d013bb63ede138764376076376cb484de76
6
+ metadata.gz: a52e2d1c9970312f01e2f29a639639d39ab66e50bfd525c85454c037553f3df6817aad71c7ad8854de9d67d865f775944fe2f3ce02e99aa354c42adc573a3cdf
7
+ data.tar.gz: 49bbfff1576f9bff66c07908e5564e20efad8ee0e5a635b07cd06494e4962f8203c1f028bf49ba3e4499297cf143f40c8c29ec314208c000559a98dd90c31dd6
data/README.md CHANGED
@@ -22,6 +22,7 @@ Components should be added to this gem if they are required in more than one app
22
22
  - [Run the component guide](/docs/run-component-guide.md)
23
23
  - [Move a component from an application to the gem](/docs/moving-components-upstream-into-this-gem.md)
24
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)
25
26
 
26
27
  ## Architecture / structure
27
28
 
@@ -39,13 +40,13 @@ There are 2 types of helper classes in this app:
39
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/).
40
41
 
41
42
  ## Browser and assistive technology support
43
+
42
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).
43
45
 
44
46
  ## Documentation
45
47
 
46
48
  [See the rubydoc.info documentation](http://www.rubydoc.info/gems/govuk_publishing_components)
47
49
 
48
-
49
50
  ## Working locally
50
51
 
51
52
  ### Install dependencies
@@ -215,8 +215,7 @@ window.GOVUK.Modules = window.GOVUK.Modules || {};
215
215
  return !isNaN(parseFloat(val))
216
216
  },
217
217
  stripValue: function (val) {
218
- var re = new RegExp('\\,|£|%|[a-z]', 'gi')
219
- return val.replace(re, '')
218
+ return val.replace(/,|£|%|[a-z]/gi, '')
220
219
  },
221
220
  returnMax: function (values) {
222
221
  var max = 0
@@ -73,4 +73,5 @@
73
73
  @import "components/textarea";
74
74
  @import "components/title";
75
75
  @import "components/translation-nav";
76
+ @import "components/transition-countdown";
76
77
  @import "components/warning-text";
@@ -9,6 +9,7 @@
9
9
  @import "govuk_publishing_components/components/helpers/variables";
10
10
  @import "govuk_publishing_components/components/helpers/brand-colours";
11
11
  @import "govuk_publishing_components/components/helpers/link";
12
+ @import "govuk_publishing_components/components/helpers/px-to-em";
12
13
  @import "govuk_publishing_components/components/mixins/govuk-template-link-focus-override";
13
14
  @import "govuk_publishing_components/components/mixins/media-down";
14
15
  @import "govuk_publishing_components/components/mixins/margins";
@@ -1,3 +1,5 @@
1
+ @import 'transition-countdown';
2
+
1
3
  .gem-c-contextual-sidebar__brexit-cta {
2
4
  border-top: 2px solid $govuk-brand-colour;
3
5
  }
@@ -39,7 +39,7 @@ $large-input-size: 50px;
39
39
  padding: 6px;
40
40
  margin: 0;
41
41
  width: 100%;
42
- height: $input-size;
42
+ height: em(34, 16);
43
43
  border: $govuk-border-width-form-element solid $govuk-input-border-colour;
44
44
  background: govuk-colour("white");
45
45
  border-radius: 0; //otherwise iphones apply an automatic border radius
@@ -0,0 +1,125 @@
1
+ $transition-campaign-red: #ff003b;
2
+ $transition-campaign-dark-blue: #1e1348;
3
+
4
+ .gem-c-transition-countdown {
5
+ @include govuk-font(19);
6
+ margin-bottom: govuk-spacing(6);
7
+ }
8
+
9
+ .gem-c-transition-countdown--cta {
10
+ background-color: govuk-colour('light-grey', $legacy: 'grey-4');
11
+ border-top: 4px solid $transition-campaign-red;
12
+ display: block;
13
+ padding: govuk-spacing(3);
14
+ text-decoration: none;
15
+ }
16
+
17
+ .gem-c-transition-countdown__title {
18
+ @extend %govuk-heading-m;
19
+ color: $transition-campaign-dark-blue;
20
+ }
21
+
22
+ .gem-c-transition-countdown__countdown {
23
+ margin-top: 0;
24
+ margin-bottom: govuk-spacing(2);
25
+
26
+ @include govuk-media-query($from: tablet) {
27
+ margin-bottom: govuk-spacing(0);
28
+ }
29
+ }
30
+
31
+ .gem-c-transition-countdown__countdown-number {
32
+ @include govuk-font($size: 80, $weight: bold, $line-height: 60px);
33
+
34
+ min-width: 50px;
35
+ text-align: center;
36
+ display: inline-block;
37
+ background: $transition-campaign-dark-blue;
38
+ color: govuk-colour('white');
39
+ position: relative;
40
+ margin-bottom: govuk-spacing(2);
41
+
42
+ @include govuk-media-query($from: tablet) {
43
+ padding: govuk-spacing(2) govuk-spacing(1);
44
+ }
45
+
46
+ &:after {
47
+ position: absolute;
48
+ left: 0;
49
+ top: 50%;
50
+ margin-top: -1px;
51
+ height: 3px;
52
+ background: govuk-colour('white');
53
+ content: '';
54
+ width: 100%;
55
+ display: block;
56
+ }
57
+
58
+ &:first-child {
59
+ margin-right: 3px;
60
+ }
61
+
62
+ &:nth-child(2) {
63
+ margin-right: govuk-spacing(2);
64
+ }
65
+ }
66
+
67
+ .gem-c-transition-countdown__countdown-text {
68
+ @extend %govuk-heading-m;
69
+
70
+ display: inline-block;
71
+ margin-bottom: 0;
72
+ height: 45px;
73
+ vertical-align: middle;
74
+ color: $transition-campaign-dark-blue;
75
+
76
+ @include govuk-media-query($from: tablet) {
77
+ height: 80px;
78
+ }
79
+
80
+ &:after {
81
+ content: '' / '.'; // Wrap up the countdown-text element in a statement for screen readers
82
+ }
83
+ }
84
+
85
+ .gem-c-transition-countdown__text {
86
+ @extend %govuk-link;
87
+
88
+ margin-top: 0;
89
+ margin-bottom: 0;
90
+ text-decoration: underline;
91
+
92
+ @include govuk-media-query($from: tablet) {
93
+ margin-bottom: govuk-spacing(2);
94
+ }
95
+ }
96
+
97
+ .gem-c-transition-countdown:focus {
98
+ .gem-c-transition-countdown__countdown-number:after {
99
+ background-color: $govuk-focus-colour;
100
+ }
101
+
102
+ .gem-c-transition-countdown__text {
103
+ text-decoration: none;
104
+ }
105
+ }
106
+
107
+ @include govuk-compatibility(govuk_template) {
108
+ .gem-c-transition-countdown__title {
109
+ margin-bottom: govuk-spacing(3);
110
+ }
111
+
112
+ .gem-c-transition-countdown__countdown-number {
113
+ padding: govuk-spacing(1) 0 0;
114
+
115
+ @include govuk-media-query($from: tablet) {
116
+ padding: govuk-spacing(3) govuk-spacing(1) govuk-spacing(1);
117
+ }
118
+ }
119
+
120
+ .gem-c-transition-countdown__countdown-text {
121
+ @include govuk-media-query($from: tablet) {
122
+ height: 75px;
123
+ }
124
+ }
125
+ }
@@ -152,7 +152,7 @@
152
152
  }
153
153
 
154
154
  .mc-value-overflow {
155
- text-indent: -99999px !important;
155
+ text-indent: -99999px !important; // stylelint-disable-line declaration-no-important
156
156
  }
157
157
 
158
158
  // Bar labels
@@ -178,7 +178,7 @@
178
178
 
179
179
  .mc-stacked-total {
180
180
  padding: $bar-padding 0;
181
- background-color: transparent !important;
181
+ background-color: transparent !important; // stylelint-disable-line declaration-no-important
182
182
  color: govuk-colour("black");
183
183
  display: inline-block;
184
184
  text-indent: 5px;
@@ -12,10 +12,10 @@
12
12
 
13
13
  @for $i from 1 through 30 {
14
14
  &:nth-child(#{$i}) {
15
- background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='250' height='250'%3E%3Ccircle cx='125' cy='125' r='100' fill='black' /%3E%3Ctext x='50%25' y='50%25' text-anchor='middle' alignment-baseline='middle' font-family='sans-serif' font-size='100px' fill='white'%3E#{$i}%3C/text%3E%3C/svg%3E");
15
+ background-image: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 250 250' preserveAspectRatio='xMinYMin meet'%3E%3Cg%3E%3Ccircle r='50%25' cx='50%25' cy='50%25' class='circle-back'%3E%3C/circle%3E%3Ctext x='50%25' y='50%25' text-anchor='middle' dy='0.3em' font-family='nta,arial,sans-serif' font-size='8rem' fill='%23ffffff'%3E#{$i}%3C/text%3E%3C/g%3E%3C/svg%3E ");
16
16
  background-repeat: no-repeat;
17
- background-position: left 10px;
18
- background-size: 35px 35px;
17
+ background-position: .2em .7em;
18
+ background-size: 1.4em 1.4em;
19
19
  }
20
20
  }
21
21
  }
@@ -9,6 +9,6 @@
9
9
  &:link:focus,
10
10
  &:visited:focus {
11
11
  @include govuk-focused-text;
12
- color: govuk-colour("black") !important;
12
+ color: govuk-colour("black") !important; // stylelint-disable-line declaration-no-important
13
13
  }
14
14
  }
@@ -6,12 +6,12 @@
6
6
 
7
7
  // Open all of the accordion sections.
8
8
  .govuk-accordion__section-content {
9
- display: block !important;
9
+ display: block !important; // stylelint-disable-line declaration-no-important
10
10
  }
11
11
 
12
12
  // Change the colour from the blue link colour to black.
13
13
  .govuk-accordion__section-button {
14
- color: govuk-colour("black") !important;
14
+ color: govuk-colour("black") !important; // stylelint-disable-line declaration-no-important
15
15
  }
16
16
 
17
17
  // Change the summary subheading size.
@@ -27,5 +27,5 @@
27
27
  // Hide the unusable "Open all" button and the "+" icons.
28
28
  .govuk-accordion__open-all,
29
29
  .govuk-accordion__icon {
30
- display: none !important;
30
+ display: none !important; // stylelint-disable-line declaration-no-important
31
31
  }
@@ -1,8 +1,24 @@
1
1
  <% navigation = GovukPublishingComponents::Presenters::ContextualNavigation.new(content_item, request) %>
2
+ <% shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns) %>
2
3
 
3
4
  <div class="gem-c-contextual-sidebar">
4
- <% if navigation.show_brexit_cta? && navigation.step_by_step_count.eql?(0) %>
5
+ <% if navigation.show_brexit_cta? && navigation.step_by_step_count.zero? %>
5
6
  <%= render 'govuk_publishing_components/components/contextual_sidebar/brexit_cta' %>
7
+ <% elsif navigation.step_by_step_count.zero? %>
8
+ <%= render 'govuk_publishing_components/components/transition_countdown', {
9
+ title: t("components.related_navigation.transition.title"),
10
+ url: t("components.related_navigation.transition.link_path"),
11
+ text: t("components.related_navigation.transition.link_text"),
12
+ data_attributes: {
13
+ "module": "track-click",
14
+ "track-category": "relatedLinkClicked",
15
+ "track-action": "1.0 Transition",
16
+ "track-label": t("components.related_navigation.transition.link_path"),
17
+ "track-dimension": t("components.related_navigation.transition.link_text"),
18
+ "track-dimension-index": "29",
19
+ },
20
+ lang: shared_helper.t_locale("components.related_navigation.transition.title"),
21
+ } %>
6
22
  <% end %>
7
23
 
8
24
  <% if navigation.content_tagged_to_a_reasonable_number_of_step_by_steps? %>
@@ -1,4 +1,5 @@
1
1
  <% related_nav_helper = GovukPublishingComponents::Presenters::RelatedNavigationHelper.new(local_assigns) %>
2
+ <% shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns) %>
2
3
 
3
4
  <% if related_nav_helper.related_navigation? %>
4
5
  <% random = SecureRandom.hex(4) %>
@@ -8,7 +9,7 @@
8
9
  <h2 id="related-nav-related_items-<%= random %>"
9
10
  class="gem-c-related-navigation__main-heading"
10
11
  data-track-count="sidebarRelatedItemSection"
11
- <%= related_nav_helper.t_lang(
12
+ <%= shared_helper.t_lang(
12
13
  "components.related_#{local_assigns[:context]}_navigation.related_content",
13
14
  default: 'components.related_navigation.related_content'
14
15
  )
@@ -28,6 +29,7 @@
28
29
 
29
30
  <%= render 'govuk_publishing_components/components/related_navigation/section',
30
31
  related_nav_helper: related_nav_helper,
32
+ shared_helper: shared_helper,
31
33
  section_title: section_title,
32
34
  links: links,
33
35
  section_index: section_index,
@@ -0,0 +1,35 @@
1
+ <%
2
+ countdown_clock = GovukPublishingComponents::AppHelpers::CountdownHelper.new
3
+ shared_helper = GovukPublishingComponents::Presenters::SharedHelper.new(local_assigns)
4
+
5
+ heading_level ||= 2
6
+ title ||= nil
7
+ text ||= nil
8
+ url ||= nil
9
+ data_attributes ||= {}
10
+ lang ||= "en"
11
+ direction ||= "ltr"
12
+ css_classes = %w(gem-c-transition-countdown)
13
+ css_classes << "gem-c-transition-countdown--cta" if url
14
+ css_classes << "govuk-link" if url
15
+ %>
16
+
17
+ <% countdown = capture do %>
18
+ <%= content_tag(shared_helper.get_heading_level, title, class: "gem-c-transition-countdown__title") if title %>
19
+ <% if countdown_clock.show? %>
20
+ <%= tag.p class: "gem-c-transition-countdown__countdown" do %>
21
+ <%= tag.span countdown_clock.days_left.first, class: "gem-c-transition-countdown__countdown-number" %><%= tag.span countdown_clock.days_left.last, class: "gem-c-transition-countdown__countdown-number" %> <%= tag.span countdown_clock.days_text, class: "gem-c-transition-countdown__countdown-text" %>
22
+ <% end %>
23
+ <% end %>
24
+ <%= tag.p text, class: "gem-c-transition-countdown__text" if text %>
25
+ <% end %>
26
+
27
+ <% if url %>
28
+ <%= link_to url, class: css_classes, data: data_attributes, lang: lang, dir: direction do %>
29
+ <%= countdown %>
30
+ <% end %>
31
+ <% else %>
32
+ <%= tag.div class: css_classes, lang: lang, dir: direction do %>
33
+ <%= countdown %>
34
+ <% end %>
35
+ <% end %>
@@ -144,4 +144,3 @@ examples:
144
144
  - text: Find out what you’ll get
145
145
  href: "/settled-status-eu-citizens-families/what-settled-and-presettled-status-means"
146
146
  optional: false
147
-
@@ -0,0 +1,17 @@
1
+ name: Transition countdown
2
+ description: A countdown to 01 January 2021 used in the Brexit transition campaign
3
+ body: When a URL is set it acts as a link to actions users need to take to prepare for brexit during the transition period
4
+ shared_accessibility_criteria:
5
+ - link
6
+ examples:
7
+ default:
8
+ data:
9
+ call_to_action:
10
+ data:
11
+ title: Brexit transition
12
+ text: Check you’re ready for 2021
13
+ url: "https://www.gov.uk/transition"
14
+ data_attributes:
15
+ "track-category": "Transition"
16
+ "track-action": "Brexit transition"
17
+ "track-label": "Check you’re ready for 2021"
@@ -28,7 +28,7 @@
28
28
  link[:path],
29
29
  class: related_nav_helper.section_css_class("gem-c-related-navigation__section-link", section_title, link, (index >= section_link_limit)),
30
30
  rel: link[:rel],
31
- lang: related_nav_helper.t_locale_check(link[:locale]),
31
+ lang: shared_helper.t_locale_check(link[:locale]),
32
32
  data: {
33
33
  track_category: 'relatedLinkClicked',
34
34
  track_action: "#{section_index}.#{index} #{related_nav_helper.construct_section_heading(section_title) || t('components.related_navigation.related_content')}",
@@ -10,4 +10,9 @@ cy:
10
10
  contents: Cynnwys
11
11
  related_navigation:
12
12
  transition:
13
+ title: "Pontio Brexit"
13
14
  link_path: "/transition.cy"
15
+ link_text: "Gwiriwch eich bod chi'n barod ar gyfer 2021"
16
+ transition_countdown:
17
+ day_to_go: "diwrnod i fynd"
18
+ days_to_go: "diwrnod i fynd"
@@ -74,7 +74,7 @@ en:
74
74
  transition:
75
75
  title: "Brexit transition"
76
76
  link_path: "/transition"
77
- link_text: "Find out what it means for you"
77
+ link_text: "Check you’re ready for 2021"
78
78
  related_footer_navigation:
79
79
  collections: "Collections"
80
80
  policies: "Policies"
@@ -98,3 +98,6 @@ en:
98
98
  summary_list:
99
99
  edit: "Change"
100
100
  delete: "Delete"
101
+ transition_countdown:
102
+ day_to_go: "day to go"
103
+ days_to_go: "days to go"
@@ -34,6 +34,7 @@ require "govuk_publishing_components/presenters/taxonomy_list_helper"
34
34
  require "govuk_publishing_components/app_helpers/taxon_breadcrumbs"
35
35
  require "govuk_publishing_components/app_helpers/table_helper"
36
36
  require "govuk_publishing_components/app_helpers/brand_helper"
37
+ require "govuk_publishing_components/app_helpers/countdown_helper"
37
38
  require "govuk_publishing_components/app_helpers/environment"
38
39
 
39
40
  # Add view and i18n paths for usage outside of a Rails app
@@ -0,0 +1,33 @@
1
+ module GovukPublishingComponents
2
+ module AppHelpers
3
+ class CountdownHelper
4
+ END_OF_TRANSITION_PERIOD = Date.new(2021, 1, 1)
5
+
6
+ def days_left
7
+ sprintf "%02d", days_left_integer
8
+ end
9
+
10
+ def show?
11
+ days_left_integer.positive?
12
+ end
13
+
14
+ def days_text
15
+ if days_left_integer == 1
16
+ I18n.t!("components.transition_countdown.day_to_go")
17
+ else
18
+ I18n.t!("components.transition_countdown.days_to_go")
19
+ end
20
+ end
21
+
22
+ private
23
+
24
+ def days_left_integer
25
+ (END_OF_TRANSITION_PERIOD - today_in_london).to_i
26
+ end
27
+
28
+ def today_in_london
29
+ Time.find_zone("Europe/London").today
30
+ end
31
+ end
32
+ end
33
+ end
@@ -97,48 +97,8 @@ module GovukPublishingComponents
97
97
  related_navigation.flat_map(&:last).any?
98
98
  end
99
99
 
100
- def t_locale(content, options = {})
101
- # Check if the content string has a translation
102
- content_translation_available = translation_present?(content)
103
-
104
- # True, return locale
105
- this_locale = I18n.locale if content_translation_available
106
- # If false, return default locale
107
- this_locale = I18n.default_locale unless content_translation_available
108
-
109
- # Check if default string passed in
110
- if options[:default].present?
111
- # Check if the default string has a translation
112
- default_translation_available = translation_present?(options[:default])
113
- # If true, return locale
114
- this_locale = I18n.locale if default_translation_available
115
- # If false, return default_locale
116
- this_locale = I18n.default_locale unless default_translation_available
117
- end
118
-
119
- this_locale
120
- end
121
-
122
- def t_lang(content, options = {})
123
- locale = t_locale(content, options)
124
- "lang=#{locale}" unless locale.eql?(I18n.locale)
125
- end
126
-
127
- def t_locale_check(locale)
128
- locale.presence unless locale.to_s.eql?(I18n.locale.to_s)
129
- end
130
-
131
100
  private
132
101
 
133
- def translation_present?(content)
134
- default_string = "This is a string to act as a default for the `I18n.translate` method. Comparing the result reveals if there is a translation in the i18n files."
135
- I18n.translate(
136
- content,
137
- default: default_string,
138
- fallback: false,
139
- ) != default_string
140
- end
141
-
142
102
  def related_items
143
103
  related_quick_links = content_item_details_for("quick_links")
144
104
 
@@ -30,6 +30,48 @@ module GovukPublishingComponents
30
30
 
31
31
  "span"
32
32
  end
33
+
34
+ def t_locale(content, options = {})
35
+ # Check if the content string has a translation
36
+ content_translation_available = translation_present?(content)
37
+
38
+ # True, return locale
39
+ this_locale = I18n.locale if content_translation_available
40
+ # If false, return default locale
41
+ this_locale = I18n.default_locale unless content_translation_available
42
+
43
+ # Check if default string passed in
44
+ if options[:default].present?
45
+ # Check if the default string has a translation
46
+ default_translation_available = translation_present?(options[:default])
47
+ # If true, return locale
48
+ this_locale = I18n.locale if default_translation_available
49
+ # If false, return default_locale
50
+ this_locale = I18n.default_locale unless default_translation_available
51
+ end
52
+
53
+ this_locale
54
+ end
55
+
56
+ def t_lang(content, options = {})
57
+ locale = t_locale(content, options)
58
+ "lang=#{locale}" unless locale.eql?(I18n.locale)
59
+ end
60
+
61
+ def t_locale_check(locale)
62
+ locale.presence unless locale.to_s.eql?(I18n.locale.to_s)
63
+ end
64
+
65
+ private
66
+
67
+ def translation_present?(content)
68
+ default_string = "This is a string to act as a default for the `I18n.translate` method. Comparing the result reveals if there is a translation in the i18n files."
69
+ I18n.translate(
70
+ content,
71
+ default: default_string,
72
+ fallback: false,
73
+ ) != default_string
74
+ end
33
75
  end
34
76
  end
35
77
  end
@@ -1,3 +1,3 @@
1
1
  module GovukPublishingComponents
2
- VERSION = "23.6.0".freeze
2
+ VERSION = "23.7.4".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: 23.6.0
4
+ version: 23.7.4
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: 2020-11-17 00:00:00.000000000 Z
11
+ date: 2020-12-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_app_config
@@ -522,6 +522,7 @@ files:
522
522
  - app/assets/stylesheets/govuk_publishing_components/components/_taxonomy-list.scss
523
523
  - app/assets/stylesheets/govuk_publishing_components/components/_textarea.scss
524
524
  - app/assets/stylesheets/govuk_publishing_components/components/_title.scss
525
+ - app/assets/stylesheets/govuk_publishing_components/components/_transition-countdown.scss
525
526
  - app/assets/stylesheets/govuk_publishing_components/components/_translation-nav.scss
526
527
  - app/assets/stylesheets/govuk_publishing_components/components/_warning-text.scss
527
528
  - app/assets/stylesheets/govuk_publishing_components/components/govspeak/_advisory.scss
@@ -673,6 +674,7 @@ files:
673
674
  - app/views/govuk_publishing_components/components/_taxonomy_list.html.erb
674
675
  - app/views/govuk_publishing_components/components/_textarea.html.erb
675
676
  - app/views/govuk_publishing_components/components/_title.html.erb
677
+ - app/views/govuk_publishing_components/components/_transition_countdown.html.erb
676
678
  - app/views/govuk_publishing_components/components/_translation-nav.html.erb
677
679
  - app/views/govuk_publishing_components/components/_warning_text.html.erb
678
680
  - app/views/govuk_publishing_components/components/attachment/_thumbnail_document.svg
@@ -751,6 +753,7 @@ files:
751
753
  - app/views/govuk_publishing_components/components/docs/taxonomy_list.yml
752
754
  - app/views/govuk_publishing_components/components/docs/textarea.yml
753
755
  - app/views/govuk_publishing_components/components/docs/title.yml
756
+ - app/views/govuk_publishing_components/components/docs/transition_countdown.yml
754
757
  - app/views/govuk_publishing_components/components/docs/translation-nav.yml
755
758
  - app/views/govuk_publishing_components/components/docs/warning_text.yml
756
759
  - app/views/govuk_publishing_components/components/feedback/_problem_form.html.erb
@@ -775,6 +778,7 @@ files:
775
778
  - lib/generators/govuk_publishing_components/templates/component.yml.erb
776
779
  - lib/govuk_publishing_components.rb
777
780
  - lib/govuk_publishing_components/app_helpers/brand_helper.rb
781
+ - lib/govuk_publishing_components/app_helpers/countdown_helper.rb
778
782
  - lib/govuk_publishing_components/app_helpers/environment.rb
779
783
  - lib/govuk_publishing_components/app_helpers/table_helper.rb
780
784
  - lib/govuk_publishing_components/app_helpers/taxon_breadcrumbs.rb