govuk-components 5.2.0 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f49a8caa87e838e21d85b219d5344a50aa8d8ce70145d7c209c11f29d1fc96df
4
- data.tar.gz: 468c1bb30d836cbff55c1407f6fd83378ba384f9430e90e93fad94b48853b1b2
3
+ metadata.gz: b22deb7323c7532776a46557ba64d5a4aba958e1a684dc7d4a8eff188a1ed3ee
4
+ data.tar.gz: 235dbcf62c374970390c483532998f18480c74cfb3a746413e4bb6e0a277f557
5
5
  SHA512:
6
- metadata.gz: fa4e8e53212aa8b898954585dc9c96076499343325d967aea5896eb8c3e68b89ca3c56e1c8d0788b0d2a71a5b1aa1316bbb9b3cb4112d69ed4f6b2f1e3c16f2b
7
- data.tar.gz: 1fcaf8d663e7021a99bb4d55077772e5e33c9c10a0baad938d8895f504c191c6600b807ad30506fd9394ef404daf0210fae07c7dd756e007ab020748608738df
6
+ metadata.gz: 5122fe37f57d769672a1155a6f5c2cdc6ad63bf3216d35997869a2c48391d8741917cac02928532808db421c2b9a242a2948b0fc3bee835256f8a20407f615ab
7
+ data.tar.gz: 4fcdd601d78c4f03dc71d2ff33d6749d5166d8416acd1624e36a6101ec6554880ec7085ad4eefc4515046d44a01f5028225b85c6618d9e449f134ce36e4a4bbf
@@ -5,7 +5,7 @@
5
5
  <%= navigation %>
6
6
  </div>
7
7
 
8
- <hr class="<% brand %>-footer__section-break">
8
+ <%= tag.hr(class: "#{brand}-footer__section-break") %>
9
9
  <% end %>
10
10
 
11
11
  <%= tag.div(class: meta_classes, **meta_html_attributes) do %>
@@ -15,7 +15,7 @@
15
15
  <div class="<%= brand %>-footer__meta-item <%= brand %>-footer__meta-item--grow">
16
16
  <% if meta_items.any? %>
17
17
  <h2 class="<%= brand %>-visually-hidden"><%= meta_items_title %></h2>
18
-
18
+ <%= content_before_meta_items %>
19
19
  <ul class="<%= brand %>-footer__inline-list">
20
20
  <% @meta_items.each do |hyperlink| %>
21
21
  <li class="<%= brand %>-footer__inline-list-item">
@@ -23,6 +23,13 @@
23
23
  </li>
24
24
  <% end %>
25
25
  </ul>
26
+ <%= content_after_meta_items %>
27
+ <% end %>
28
+
29
+ <% if meta_content.present? %>
30
+ <div class="<%= brand %>-footer__meta-custom">
31
+ <%= meta_content %>
32
+ </div>
26
33
  <% end %>
27
34
 
28
35
  <% if meta_licence.nil? %>
@@ -34,12 +41,6 @@
34
41
  <% elsif meta_licence.present? %>
35
42
  <%= tag.span(meta_licence, class: "#{brand}-footer__licence-description") %>
36
43
  <% end %>
37
-
38
- <% if meta_content.present? %>
39
- <div class="<%= brand %>-footer__meta-custom">
40
- <%= meta_content %>
41
- </div>
42
- <% end %>
43
44
  </div>
44
45
 
45
46
  <%= tag.div(copyright, class: "#{brand}-footer__meta-item") %>
@@ -4,8 +4,10 @@ class GovukComponent::FooterComponent < GovukComponent::Base
4
4
  renders_one :meta_html
5
5
  renders_one :meta
6
6
  renders_one :navigation
7
+ renders_one :content_before_meta_items
8
+ renders_one :content_after_meta_items
7
9
 
8
- attr_reader :meta_items, :meta_text, :meta_items_title, :meta_licence, :copyright, :custom_container_classes
10
+ attr_reader :meta_items, :meta_text, :meta_items_title, :meta_licence, :copyright_text, :copyright_url, :custom_container_classes
9
11
 
10
12
  def initialize(
11
13
  classes: [],
@@ -27,7 +29,8 @@ class GovukComponent::FooterComponent < GovukComponent::Base
27
29
  @meta_licence = meta_licence
28
30
  @custom_meta_classes = meta_classes
29
31
  @custom_meta_html_attributes = meta_html_attributes
30
- @copyright = build_copyright(copyright_text, copyright_url)
32
+ @copyright_text = copyright_text
33
+ @copyright_url = copyright_url
31
34
  @custom_container_classes = container_classes
32
35
  @custom_container_html_attributes = container_html_attributes
33
36
 
@@ -67,9 +70,9 @@ private
67
70
 
68
71
  case links
69
72
  when Array
70
- links.map { |link| raw(link_to(link[:text], link[:href], class: "#{brand}-footer__link", **link.fetch(:attr, {}))) }
73
+ links.map { |link| govuk_footer_link_to(link[:text], link[:href], **link.fetch(:attr, {})) }
71
74
  when Hash
72
- links.map { |text, href| raw(link_to(text, href, class: "#{brand}-footer__link")) }
75
+ links.map { |text, href| govuk_footer_link_to(text, href) }
73
76
  else
74
77
  fail(ArgumentError, 'meta links must be a hash or array of hashes') unless links.is_a?(Hash)
75
78
  end
@@ -81,7 +84,7 @@ private
81
84
  raw(%(All content is available under the #{link}, except where otherwise stated))
82
85
  end
83
86
 
84
- def build_copyright(text, url)
85
- link_to(text, url, class: "#{brand}-footer__link #{brand}-footer__copyright-logo")
87
+ def copyright
88
+ link_to(copyright_text, copyright_url, class: "#{brand}-footer__link #{brand}-footer__copyright-logo")
86
89
  end
87
90
  end
@@ -1,4 +1,4 @@
1
- <%= tag.header(role: 'banner', data: { module: "#{brand}-header" }, **html_attributes) do %>
1
+ <%= tag.header(data: { module: "#{brand}-header" }, **html_attributes) do %>
2
2
  <%= tag.div(**container_html_attributes) do %>
3
3
  <div class="<%= brand %>-header__logo">
4
4
  <%= link_to(homepage_url, class: ["#{brand}-header__link", "#{brand}-header__link--homepage"]) do %>
@@ -85,7 +85,7 @@ class GovukComponent::PaginationComponent < GovukComponent::Base
85
85
  private
86
86
 
87
87
  def default_attributes
88
- { role: "navigation", aria: { label: landmark_label }, class: "#{brand}-pagination" }
88
+ { aria: { label: landmark_label }, class: "#{brand}-pagination" }
89
89
  end
90
90
 
91
91
  def build_previous
@@ -1,5 +1,5 @@
1
1
  <%= tag.div(**html_attributes) do %>
2
- <%= tag.h2(title, class: "#{brand}-tabs__title") %>
2
+ <%= tag.h2(title, class: "#{brand}-tabs__title") if title %>
3
3
  <ul class="<%= brand %>-tabs__list">
4
4
  <% tabs.each.with_index do |tab, i| %>
5
5
  <%= tag.li(tab.li_link, class: tab.li_classes(i)) %>
@@ -5,7 +5,7 @@ class GovukComponent::TabComponent < GovukComponent::Base
5
5
 
6
6
  attr_reader :title, :id
7
7
 
8
- def initialize(title:, id: nil, classes: [], html_attributes: {})
8
+ def initialize(title: 'Contents', id: nil, classes: [], html_attributes: {})
9
9
  @title = title
10
10
  @id = id
11
11
 
@@ -57,6 +57,12 @@ module GovukLinkHelper
57
57
  link_to(name, href, **link_args, &block)
58
58
  end
59
59
 
60
+ def govuk_footer_link_to(name, href = nil, **kwargs, &block)
61
+ link_args = { class: "#{brand}-footer__link" }.deep_merge_html_attributes(kwargs)
62
+
63
+ link_to(name, href, **link_args, &block)
64
+ end
65
+
60
66
  def govuk_link_classes(inverse: false, muted: false, no_underline: false, no_visited_state: false, text_colour: false)
61
67
  if [text_colour, inverse, muted].count(true) > 1
62
68
  fail("links can be only be one of text_colour, inverse or muted")
@@ -109,14 +115,16 @@ private
109
115
  Rails.logger.warn(controller_warning_message(kwargs.fetch(:controller))) if kwargs.key?(:controller)
110
116
 
111
117
  button_classes = extract_button_classes(inverse:, secondary:, warning:)
118
+ data_attributes = build_data_attributes("#{brand}-button")
112
119
 
113
- { **button_classes, **button_attributes(disabled), **new_tab_args(new_tab) }.deep_merge_html_attributes(kwargs)
120
+ { **button_classes, **data_attributes, **button_attributes(disabled), **new_tab_args(new_tab) }.deep_merge_html_attributes(kwargs)
114
121
  end
115
122
 
116
- def extract_button_args(disabled: false, inverse: false, secondary: false, warning: false, **kwargs)
123
+ def extract_button_args(disabled: false, inverse: false, secondary: false, warning: false, prevent_double_click: nil, **kwargs)
117
124
  button_classes = extract_button_classes(inverse:, secondary:, warning:)
125
+ data_attributes = build_data_attributes("#{brand}-button", prevent_double_click:)
118
126
 
119
- { **button_classes, **button_attributes(disabled) }.deep_merge_html_attributes(kwargs)
127
+ { **button_classes, **data_attributes, **button_attributes(disabled) }.deep_merge_html_attributes(kwargs)
120
128
  end
121
129
 
122
130
  def extract_link_classes(inverse: false, muted: false, no_underline: false, no_visited_state: false, text_colour: false)
@@ -177,6 +185,13 @@ private
177
185
  def controller_warning_message(value)
178
186
  "controller: '#{value}' parameter detected. Support for old style controller/action links has been removed. See https://github.com/x-govuk/govuk-components/releases/tag/v5.0.0"
179
187
  end
188
+
189
+ def build_data_attributes(data_module, prevent_double_click: nil)
190
+ {
191
+ "data-module": data_module,
192
+ "data-prevent-double-click": prevent_double_click
193
+ }.compact
194
+ end
180
195
  end
181
196
 
182
197
  ActiveSupport.on_load(:action_view) { include GovukLinkHelper }
@@ -0,0 +1,29 @@
1
+ module GovukListHelper
2
+ def govuk_list(array = nil, type: nil, spaced: nil, classes: nil, html_attributes: {}, &block)
3
+ type = type.to_s
4
+
5
+ fail "Unrecognised type for govuk_list - should be :bullet or :number or nil" unless type.in?(["bullet", "number", ""])
6
+
7
+ tag_type = (type == "number") ? "ol" : "ul"
8
+
9
+ html_classes = class_names(
10
+ "#{brand}-list",
11
+ *classes,
12
+ "#{brand}-list--bullet" => (type == "bullet"),
13
+ "#{brand}-list--number" => (type == "number"),
14
+ "#{brand}-list--spaced" => spaced
15
+ )
16
+
17
+ if block_given?
18
+ content_tag(tag_type, class: html_classes, **html_attributes, &block)
19
+ else
20
+ content_tag(tag_type, class: html_classes, **html_attributes) do
21
+ array.each do |item|
22
+ concat tag.li(item)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ ActiveSupport.on_load(:action_view) { include GovukListHelper }
@@ -44,7 +44,7 @@ module GovukRailsCompatibleLinkHelper
44
44
  def govuk_button_to(name = nil, options = nil, extra_options = {}, &block)
45
45
  extra_options = options if block_given?
46
46
  html_options = {
47
- data: { module: "govuk-button" }
47
+ data: { module: "#{brand}-button" }
48
48
  }
49
49
 
50
50
  if extra_options && extra_options[:prevent_double_click]
@@ -1,5 +1,5 @@
1
1
  module Govuk
2
2
  module Components
3
- VERSION = '5.2.0'.freeze
3
+ VERSION = '5.3.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: govuk-components
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.0
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DfE developers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-22 00:00:00.000000000 Z
11
+ date: 2024-03-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: html-attributes-utils
@@ -34,16 +34,22 @@ dependencies:
34
34
  name: pagy
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '6'
40
+ - - "<"
38
41
  - !ruby/object:Gem::Version
39
- version: '6.0'
42
+ version: '8'
40
43
  type: :runtime
41
44
  prerelease: false
42
45
  version_requirements: !ruby/object:Gem::Requirement
43
46
  requirements:
44
- - - "~>"
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '6'
50
+ - - "<"
45
51
  - !ruby/object:Gem::Version
46
- version: '6.0'
52
+ version: '8'
47
53
  - !ruby/object:Gem::Dependency
48
54
  name: view_component
49
55
  requirement: !ruby/object:Gem::Requirement
@@ -53,7 +59,7 @@ dependencies:
53
59
  version: '3.9'
54
60
  - - "<"
55
61
  - !ruby/object:Gem::Version
56
- version: '3.11'
62
+ version: '3.12'
57
63
  type: :runtime
58
64
  prerelease: false
59
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -63,7 +69,7 @@ dependencies:
63
69
  version: '3.9'
64
70
  - - "<"
65
71
  - !ruby/object:Gem::Version
66
- version: '3.11'
72
+ version: '3.12'
67
73
  - !ruby/object:Gem::Dependency
68
74
  name: deep_merge
69
75
  requirement: !ruby/object:Gem::Requirement
@@ -384,6 +390,7 @@ files:
384
390
  - app/helpers/govuk_components_helper.rb
385
391
  - app/helpers/govuk_exit_this_page_link_helper.rb
386
392
  - app/helpers/govuk_link_helper.rb
393
+ - app/helpers/govuk_list_helper.rb
387
394
  - app/helpers/govuk_rails_compatible_link_helper.rb
388
395
  - app/helpers/govuk_skip_link_helper.rb
389
396
  - app/helpers/govuk_visually_hidden_helper.rb