govuk-components 1.0.1 → 1.1.3
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 +2 -1
- data/app/components/govuk_component/accordion.html.erb +1 -1
- data/app/components/govuk_component/accordion.rb +9 -2
- data/app/components/govuk_component/cookie_banner.html.erb +21 -0
- data/app/components/govuk_component/cookie_banner.rb +18 -0
- data/app/components/govuk_component/footer.html.erb +36 -24
- data/app/components/govuk_component/footer.rb +14 -10
- data/app/components/govuk_component/notification_banner.html.erb +8 -4
- data/app/components/govuk_component/notification_banner.rb +4 -4
- data/app/helpers/govuk_components_helper.rb +1 -0
- data/lib/govuk/components/version.rb +1 -1
- metadata +7 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e09cd54a51ac03334ecd626e7511d08fb8978a2cbb7b10bbdd6390a0e74fc7a
|
4
|
+
data.tar.gz: f6258410434e206cd0f43352f390f794467fc67ea541ddf2de84d6a5faf29ab5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 639e347636e7bcecf2fdefeba4adfd8b1d1040c90beb083fb52455ecdfc4461531ee7ded5010fdf37291fd8977a1d808d7e92c82c69bb854d2858c12b957a9d0
|
7
|
+
data.tar.gz: 6e0fe55bfd952729a9a65ff5d9cbca76e500e213e448acb964ccc6ae6f0807f8402df3b18ec01926a015321a4fc396f2adad88008670c47306a8c6c030769d9b
|
data/README.md
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
[](https://dependabot.com)
|
8
8
|
[](https://design-system.service.gov.uk)
|
9
9
|
|
10
|
-
This gem provides a suite of reusable components for the [GOV.UK Design System](https://design-system.service.gov.uk/). It is intended to provide a lightweight alternative to the [GOV.UK Publishing Components](https://github.com/alphagov/govuk_publishing_components) library and is built with Github's [ViewComponent](https://github.com/github/view_component) framework.
|
10
|
+
This gem provides a suite of reusable components for the [GOV.UK Design System](https://design-system.service.gov.uk/). It is intended to provide a lightweight alternative to the [GOV.UK Publishing Components](https://github.com/alphagov/govuk_publishing_components) library and is built with Github's [ViewComponent](https://github.com/github/view_component) framework.
|
11
11
|
|
12
12
|
## What's included
|
13
13
|
|
@@ -16,6 +16,7 @@ This gem provides a suite of reusable components for the [GOV.UK Design System](
|
|
16
16
|
| [Accordion](app/components/govuk_component/accordion.rb) | `govuk_accordion` |
|
17
17
|
| [Back link](app/components/govuk_component/back_link.rb) | `govuk_back_link` |
|
18
18
|
| [Breadcrumbs](app/components/govuk_component/breadcrumbs.rb) | `govuk_breadcrumbs` |
|
19
|
+
| [Cookie banner](app/components/govuk_component/cookie_banner.rb) | `govuk_cookie_banner` |
|
19
20
|
| [Details](app/components/govuk_component/details.rb) | `govuk_details` |
|
20
21
|
| [Footer](app/components/govuk_component/footer.rb) | `govuk_footer` |
|
21
22
|
| [Header](app/components/govuk_component/header.rb) | `govuk_header` |
|
@@ -3,7 +3,7 @@
|
|
3
3
|
<%= tag.div(id: section.id(suffix: 'section'), class: section.classes, **section.html_attributes) do %>
|
4
4
|
<div class="govuk-accordion__section-header">
|
5
5
|
<h2 class="govuk-accordion__section-heading">
|
6
|
-
<%= tag.span(section.title, id: section.id, class: "govuk-accordion__section-button") %>
|
6
|
+
<%= tag.span(section.title, id: section.id, class: "govuk-accordion__section-button", aria: { expanded: section.expanded? }) %>
|
7
7
|
</h2>
|
8
8
|
<% if section.summary.present? %>
|
9
9
|
<%= tag.div(section.summary, id: section.id(suffix: 'summary'), class: %w(govuk-accordion__section-summary govuk-body)) %>
|
@@ -19,19 +19,26 @@ private
|
|
19
19
|
end
|
20
20
|
|
21
21
|
class Section < GovukComponent::Slot
|
22
|
-
attr_accessor :title, :summary
|
22
|
+
attr_accessor :title, :summary, :expanded
|
23
23
|
|
24
|
-
|
24
|
+
alias_method :expanded?, :expanded
|
25
|
+
|
26
|
+
def initialize(title:, summary: nil, expanded: false, classes: [], html_attributes: {})
|
25
27
|
super(classes: classes, html_attributes: html_attributes)
|
26
28
|
|
27
29
|
self.title = title
|
28
30
|
self.summary = summary
|
31
|
+
self.expanded = expanded
|
29
32
|
end
|
30
33
|
|
31
34
|
def id(suffix: nil)
|
32
35
|
[title.parameterize, suffix].compact.join('-')
|
33
36
|
end
|
34
37
|
|
38
|
+
def classes
|
39
|
+
super + (expanded? ? %w(govuk-accordion__section--expanded) : [])
|
40
|
+
end
|
41
|
+
|
35
42
|
private
|
36
43
|
|
37
44
|
def default_classes
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<%= tag.div(class: classes, role: "region", aria: { label: aria_label }, **html_attributes) do %>
|
2
|
+
<div class="govuk-cookie-banner__message govuk-width-container">
|
3
|
+
<div class="govuk-grid-row">
|
4
|
+
<div class="govuk-grid-column-two-thirds">
|
5
|
+
<% if title.present? %>
|
6
|
+
<h2 class="govuk-cookie-banner__heading govuk-heading-m">
|
7
|
+
<%= title %>
|
8
|
+
</h2>
|
9
|
+
<% end %>
|
10
|
+
|
11
|
+
<div class="govuk-cookie-banner__content">
|
12
|
+
<%= body %>
|
13
|
+
</div>
|
14
|
+
</div>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="govuk-button-group">
|
18
|
+
<%= actions %>
|
19
|
+
</div>
|
20
|
+
</div>
|
21
|
+
<% end %>
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class GovukComponent::CookieBanner < GovukComponent::Base
|
2
|
+
with_content_areas :body, :actions
|
3
|
+
|
4
|
+
attr_accessor :title, :aria_label
|
5
|
+
|
6
|
+
def initialize(title: nil, aria_label: "Cookie banner", classes: [], html_attributes: {})
|
7
|
+
super(classes: classes, html_attributes: html_attributes)
|
8
|
+
|
9
|
+
@title = title
|
10
|
+
@aria_label = aria_label
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def default_classes
|
16
|
+
%w(govuk-cookie-banner)
|
17
|
+
end
|
18
|
+
end
|
@@ -1,30 +1,42 @@
|
|
1
1
|
<%= tag.footer(class: classes, role: 'contentinfo', **html_attributes) do %>
|
2
2
|
<div class="govuk-width-container ">
|
3
|
-
<% if content.present? %>
|
4
|
-
<%= content %>
|
5
|
-
<% end %>
|
6
3
|
<div class="govuk-footer__meta">
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
4
|
+
<% if meta.present? %>
|
5
|
+
<%= meta.content %>
|
6
|
+
<% else %>
|
7
|
+
<div class="govuk-footer__meta-item govuk-footer__meta-item--grow">
|
8
|
+
<% if meta_items.any? %>
|
9
|
+
<h2 class="govuk-visually-hidden"><%= meta_items_title %></h2>
|
10
|
+
|
11
|
+
<ul class="govuk-footer__inline-list">
|
12
|
+
<% @meta_items.each do |hyperlink| %>
|
13
|
+
<li class="govuk-footer__inline-list-item">
|
14
|
+
<%= hyperlink %>
|
15
|
+
</li>
|
16
|
+
<% end %>
|
17
|
+
</ul>
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
<% if meta_licence.nil? %>
|
21
|
+
<svg aria-hidden="true" focusable="false" class="govuk-footer__licence-logo" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 483.2 195.7" height="17" width="41">
|
22
|
+
<path fill="currentColor" d="M421.5 142.8V.1l-50.7 32.3v161.1h112.4v-50.7zm-122.3-9.6A47.12 47.12 0 0 1 221 97.8c0-26 21.1-47.1 47.1-47.1 16.7 0 31.4 8.7 39.7 21.8l42.7-27.2A97.63 97.63 0 0 0 268.1 0c-36.5 0-68.3 20.1-85.1 49.7A98 98 0 0 0 97.8 0C43.9 0 0 43.9 0 97.8s43.9 97.8 97.8 97.8c36.5 0 68.3-20.1 85.1-49.7a97.76 97.76 0 0 0 149.6 25.4l19.4 22.2h3v-87.8h-80l24.3 27.5zM97.8 145c-26 0-47.1-21.1-47.1-47.1s21.1-47.1 47.1-47.1 47.2 21 47.2 47S123.8 145 97.8 145" />
|
23
|
+
</svg>
|
24
|
+
|
25
|
+
<%= tag.span(default_licence, class: "govuk-footer__licence-description") %>
|
26
|
+
<% elsif meta_licence.present? %>
|
27
|
+
<%= tag.span(meta_licence, class: "govuk-footer__licence-description") %>
|
28
|
+
<% end %>
|
29
|
+
|
30
|
+
<% if meta_content.present? %>
|
31
|
+
<%= meta_content.content %>
|
32
|
+
<% end %>
|
33
|
+
</div>
|
34
|
+
<div class="govuk-footer__meta">
|
35
|
+
<div class="govuk-footer__meta-item">
|
36
|
+
<%= copyright %>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
<% end %>
|
28
40
|
</div>
|
29
41
|
</div>
|
30
42
|
<% end %>
|
@@ -1,13 +1,21 @@
|
|
1
1
|
class GovukComponent::Footer < GovukComponent::Base
|
2
|
-
|
2
|
+
include ViewComponent::Slotable
|
3
3
|
|
4
|
-
|
4
|
+
with_slot :meta_content
|
5
|
+
wrap_slot :meta_content
|
6
|
+
|
7
|
+
with_slot :meta
|
8
|
+
wrap_slot :meta
|
9
|
+
|
10
|
+
attr_accessor :meta_items, :meta_items_title, :meta_licence, :copyright
|
11
|
+
|
12
|
+
def initialize(meta_items: {}, meta_items_title: "Support links", meta_licence: nil, classes: [], html_attributes: {}, copyright_text: default_copright_text, copyright_url: default_copyright_url)
|
5
13
|
super(classes: classes, html_attributes: html_attributes)
|
6
14
|
|
7
|
-
@
|
8
|
-
@
|
9
|
-
@
|
10
|
-
@copyright
|
15
|
+
@meta_items = build_meta_links(meta_items)
|
16
|
+
@meta_items_title = meta_items_title
|
17
|
+
@meta_licence = meta_licence
|
18
|
+
@copyright = build_copyright(copyright_text, copyright_url)
|
11
19
|
end
|
12
20
|
|
13
21
|
private
|
@@ -24,10 +32,6 @@ private
|
|
24
32
|
links.map { |text, href| raw(link_to(text, href, class: %w(govuk-footer__link))) }
|
25
33
|
end
|
26
34
|
|
27
|
-
def default_meta_heading
|
28
|
-
'Supporting links'
|
29
|
-
end
|
30
|
-
|
31
35
|
def default_licence
|
32
36
|
link = link_to("Open Government Licence v3.0", "https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/", class: %w(govuk-footer__link))
|
33
37
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= tag.div(class: classes.append(success_class).compact,
|
1
|
+
<%= tag.div(class: classes.append(success_class).compact, role: "region", aria: { labelledby: title_id }, data: data_params, **html_attributes) do %>
|
2
2
|
<div class="govuk-notification-banner__header">
|
3
3
|
<%= content_tag(title_tag, class: "govuk-notification-banner__title", id: title_id) do %>
|
4
4
|
<%= title %>
|
@@ -7,9 +7,13 @@
|
|
7
7
|
<div class="govuk-notification-banner__content">
|
8
8
|
<% headings.each do |heading| %>
|
9
9
|
<p class="govuk-notification-banner__heading">
|
10
|
-
|
11
|
-
|
12
|
-
|
10
|
+
<% if heading.text.present? %>
|
11
|
+
<%= heading.text %>
|
12
|
+
<% if heading.link_target && heading.link_text %>
|
13
|
+
<%= link_to(heading.link_text, heading.link_target, class: "govuk-notification-banner__link") %>.
|
14
|
+
<% end %>
|
15
|
+
<% else %>
|
16
|
+
<%= heading.content %>
|
13
17
|
<% end %>
|
14
18
|
</p>
|
15
19
|
<% end %>
|
@@ -24,7 +24,7 @@ class GovukComponent::NotificationBanner < GovukComponent::Base
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def render?
|
27
|
-
headings.any?
|
27
|
+
headings.any? || content.present?
|
28
28
|
end
|
29
29
|
|
30
30
|
def title_tag
|
@@ -36,9 +36,9 @@ class GovukComponent::NotificationBanner < GovukComponent::Base
|
|
36
36
|
class Heading < ViewComponent::Slot
|
37
37
|
attr_accessor :text, :link_target, :link_text
|
38
38
|
|
39
|
-
def initialize(text
|
40
|
-
@text
|
41
|
-
@link_text
|
39
|
+
def initialize(text: nil, link_text: nil, link_target: nil)
|
40
|
+
@text = text
|
41
|
+
@link_text = link_text
|
42
42
|
@link_target = link_target
|
43
43
|
end
|
44
44
|
|
@@ -3,6 +3,7 @@ module GovukComponentsHelper
|
|
3
3
|
govuk_accordion: 'GovukComponent::Accordion',
|
4
4
|
govuk_back_link: 'GovukComponent::BackLink',
|
5
5
|
govuk_breadcrumbs: 'GovukComponent::Breadcrumbs',
|
6
|
+
govuk_cookie_banner: 'GovukComponent::CookieBanner',
|
6
7
|
govuk_details: 'GovukComponent::Details',
|
7
8
|
govuk_footer: 'GovukComponent::Footer',
|
8
9
|
govuk_header: 'GovukComponent::Header',
|
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: 1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DfE developers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -33,7 +33,7 @@ dependencies:
|
|
33
33
|
version: 2.22.1
|
34
34
|
- - "<"
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: 2.
|
36
|
+
version: 2.27.0
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
version: 2.22.1
|
44
44
|
- - "<"
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: 2.
|
46
|
+
version: 2.27.0
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: capybara
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -160,6 +160,8 @@ files:
|
|
160
160
|
- app/components/govuk_component/base.rb
|
161
161
|
- app/components/govuk_component/breadcrumbs.html.erb
|
162
162
|
- app/components/govuk_component/breadcrumbs.rb
|
163
|
+
- app/components/govuk_component/cookie_banner.html.erb
|
164
|
+
- app/components/govuk_component/cookie_banner.rb
|
163
165
|
- app/components/govuk_component/details.html.erb
|
164
166
|
- app/components/govuk_component/details.rb
|
165
167
|
- app/components/govuk_component/footer.html.erb
|
@@ -213,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
213
215
|
- !ruby/object:Gem::Version
|
214
216
|
version: '0'
|
215
217
|
requirements: []
|
216
|
-
rubygems_version: 3.1.
|
218
|
+
rubygems_version: 3.1.4
|
217
219
|
signing_key:
|
218
220
|
specification_version: 4
|
219
221
|
summary: Lightweight set of reusable GOV.UK Design System components
|