govuk-components 2.0.0b7 → 2.0.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 +74 -40
- data/app/components/govuk_component/cookie_banner_component.rb +10 -5
- data/app/components/govuk_component/cookie_banner_component/message_component.rb +62 -0
- data/app/components/govuk_component/details_component.rb +5 -3
- data/app/components/govuk_component/notification_banner_component.rb +24 -20
- data/app/components/govuk_component/panel_component.rb +25 -15
- data/app/components/govuk_component/summary_list_component.html.erb +1 -7
- data/app/components/govuk_component/summary_list_component.rb +1 -38
- data/app/components/govuk_component/summary_list_component/action_component.rb +34 -0
- data/app/components/govuk_component/summary_list_component/key_component.rb +23 -0
- data/app/components/govuk_component/summary_list_component/row_component.rb +45 -0
- data/app/components/govuk_component/summary_list_component/value_component.rb +23 -0
- data/app/components/govuk_component/tab_component.html.erb +1 -1
- data/app/components/govuk_component/tab_component.rb +10 -8
- data/app/components/govuk_component/warning_text_component.rb +4 -4
- data/lib/govuk/components/version.rb +1 -1
- metadata +14 -10
- data/app/components/govuk_component/cookie_banner_component.html.erb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 39ac79b41b17e5f17f5f6b80e195595ae1396f5d83a3a14c14564412831fdbc8
|
4
|
+
data.tar.gz: 587e0b9a9688c4c239e1e8cbdf44111c88aa82cd1014197293b308d0b2409f36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 826c5c80a39daefff656c96139c8f3c0ad6ceaffa7c8000a482f5b35a085b0f3251c7ded964c5bff0bc7a977287f77ed4ca2f5e4684d73e279d589de946e97a3
|
7
|
+
data.tar.gz: cb1e686cf23ef788c4d45544bd1c4cc97cdb91a560a9ca7653d71b299dedfc735721b67b7d22062823f21283f56889e43e6a3b8e35eac29d8395cf9b1dfc169c
|
data/README.md
CHANGED
@@ -4,61 +4,86 @@
|
|
4
4
|
[](https://codeclimate.com/github/DFE-Digital/govuk-components/maintainability)
|
5
5
|
[](https://codeclimate.com/github/DFE-Digital/govuk-components/test_coverage)
|
6
6
|
[](https://github.com/DFE-Digital/govuk-components/blob/master/LICENSE)
|
7
|
-
[](https://design-system.service.gov.uk)
|
7
|
+
[](https://design-system.service.gov.uk)
|
9
8
|
|
10
9
|
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
10
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
*
|
36
|
-
*
|
37
|
-
*
|
38
|
-
|
39
|
-
|
11
|
+
It aims to implement the functionality from the original Nunjucks macros in a way that will feel more familiar to Rails developers. Blocks are preferred over strings of HTML, beneath the surface each component is just a Ruby object, everything is inheritable and overrideable.
|
12
|
+
|
13
|
+
## What's included?
|
14
|
+
|
15
|
+
All of the non-form components from the GOV.UK Design System are implmented by this library as ViewComponents. Form components are implemented by the [form builder](https://govuk-form-builder.netlify.app/).
|
16
|
+
|
17
|
+
The provided components are:
|
18
|
+
|
19
|
+
* [Accordion](https://dfe-digital.github.io/govuk-components/#accordion)
|
20
|
+
* [Back link](https://dfe-digital.github.io/govuk-components/#back-links)
|
21
|
+
* [Back to top link](https://dfe-digital.github.io/govuk-components/#back-to-top-link)
|
22
|
+
* [Breadcrumbs](https://dfe-digital.github.io/govuk-components/#breadcrumbs)
|
23
|
+
* [Cookie banner](https://dfe-digital.github.io/govuk-components/#cookie-banner)
|
24
|
+
* [Details](https://dfe-digital.github.io/govuk-components/#details)
|
25
|
+
* [Footer](https://dfe-digital.github.io/govuk-components/#footer)
|
26
|
+
* [Header](https://dfe-digital.github.io/govuk-components/#header)
|
27
|
+
* [Inset text](https://dfe-digital.github.io/govuk-components/#inset-text)
|
28
|
+
* [Notification banner](https://dfe-digital.github.io/govuk-components/#notification-banner)
|
29
|
+
* [Panel](https://dfe-digital.github.io/govuk-components/#panel)
|
30
|
+
* [Phase banner](https://dfe-digital.github.io/govuk-components/#phase-banner)
|
31
|
+
* [Skip link](https://dfe-digital.github.io/govuk-components/#skip-link)
|
32
|
+
* [Start button](https://dfe-digital.github.io/govuk-components/#start-button)
|
33
|
+
* [Summary list](https://dfe-digital.github.io/govuk-components/#summary-list)
|
34
|
+
* [Tabs](https://dfe-digital.github.io/govuk-components/#tabs)
|
35
|
+
* [Tags](https://dfe-digital.github.io/govuk-components/#tags)
|
36
|
+
* [Warning text](https://dfe-digital.github.io/govuk-components/#warning-text)
|
37
|
+
|
38
|
+
This library also provides [several link helpers](https://dfe-digital.github.io/govuk-components/#links-and-buttons) that are commonly used in services, including `#govuk_link_to` and `#govuk_button_to`.
|
39
|
+
|
40
|
+
## Alternative syntax
|
41
|
+
|
42
|
+
All of the components can be rendered in two ways:
|
43
|
+
|
44
|
+
* directly using Rails' `#render` method:
|
45
|
+
|
46
|
+
```erb
|
47
|
+
<%= render GovukComponent::GovukComponent::WarningTextComponent.new do %>
|
48
|
+
A serious warning
|
49
|
+
<% end %>
|
50
|
+
```
|
51
|
+
|
52
|
+
* via the helper wrapper:
|
53
|
+
|
54
|
+
```erb
|
55
|
+
<%= govuk_warning_text do %>
|
56
|
+
A serious warning
|
57
|
+
<% end %>
|
58
|
+
```
|
59
|
+
|
60
|
+
The naming convention for helpers is `govuk_` followed by the component's name in snake case. You can
|
61
|
+
see the full list in [GovukComponentsHelper](app/helpers/govuk_components_helper.rb).
|
40
62
|
|
41
63
|
## Example use
|
42
64
|
|
43
|
-
This library allows components to be rendered with Rails' `render` method or via the provided helpers. Here we'll use the `
|
65
|
+
This library allows components to be rendered with Rails' `render` method or via the provided helpers. Here we'll use the `govuk_tabs` to render three tabbed sections:
|
44
66
|
|
45
67
|
```erb
|
46
|
-
<%=
|
47
|
-
|
48
|
-
<p
|
68
|
+
<%= govuk_tabs(title: 'Days of the week') do |component| %>
|
69
|
+
<% component.tab(label: 'Monday') do %>
|
70
|
+
<p>Monday's child is fair of face</p>
|
49
71
|
<% end %>
|
50
|
-
|
51
|
-
|
72
|
+
|
73
|
+
<% component.tab(label: 'Tuesday') do %>
|
74
|
+
<p>Tuesday's child is full of grace</p>
|
52
75
|
<% end %>
|
53
|
-
|
54
|
-
|
76
|
+
|
77
|
+
<% component.tab(label: 'Wednesday') do %>
|
78
|
+
<p>Wednesday's child is full of woe</p>
|
55
79
|
<% end %>
|
56
80
|
<% end %>
|
81
|
+
|
57
82
|
```
|
58
83
|
|
59
|
-
Here
|
84
|
+
Here are the rendered tabs:
|
60
85
|
|
61
|
-

|
62
87
|
|
63
88
|
For examples on usage see the [guide page](https://dfe-digital.github.io/govuk-components/).
|
64
89
|
|
@@ -70,6 +95,15 @@ Add this line to your `config/application.rb`:
|
|
70
95
|
require "govuk/components"
|
71
96
|
```
|
72
97
|
|
98
|
+
## Services using this library
|
99
|
+
|
100
|
+
* [Apply for teacher training](https://github.com/DFE-Digital/apply-for-teacher-training)
|
101
|
+
* [Find postgraduate teacher training](https://github.com/DFE-Digital/find-teacher-training)
|
102
|
+
* [Get help with technology](https://github.com/DFE-Digital/get-help-with-tech)
|
103
|
+
* [Publish teacher training courses](https://github.com/DFE-Digital/publish-teacher-training)
|
104
|
+
* [Register trainee teachers](https://github.com/DFE-Digital/register-trainee-teachers)
|
105
|
+
* [Teaching Vacancies](https://github.com/DFE-Digital/teaching-vacancies)
|
106
|
+
|
73
107
|
## Installation
|
74
108
|
|
75
109
|
Add this line to your application's Gemfile:
|
@@ -1,14 +1,19 @@
|
|
1
1
|
class GovukComponent::CookieBannerComponent < GovukComponent::Base
|
2
|
-
|
3
|
-
renders_one :actions
|
2
|
+
renders_many :messages, GovukComponent::CookieBannerComponent::MessageComponent
|
4
3
|
|
5
|
-
attr_accessor :
|
4
|
+
attr_accessor :aria_label, :hidden
|
6
5
|
|
7
|
-
def initialize(
|
6
|
+
def initialize(aria_label: "Cookie banner", hidden: false, classes: [], html_attributes: {})
|
8
7
|
super(classes: classes, html_attributes: html_attributes)
|
9
8
|
|
10
|
-
@title = title
|
11
9
|
@aria_label = aria_label
|
10
|
+
@hidden = hidden
|
11
|
+
end
|
12
|
+
|
13
|
+
def call
|
14
|
+
tag.div(class: classes, role: "region", aria: { label: aria_label }, hidden: hidden, **html_attributes) do
|
15
|
+
safe_join(messages)
|
16
|
+
end
|
12
17
|
end
|
13
18
|
|
14
19
|
private
|
@@ -0,0 +1,62 @@
|
|
1
|
+
class GovukComponent::CookieBannerComponent::MessageComponent < GovukComponent::Base
|
2
|
+
attr_reader :heading_text, :text, :hidden, :role
|
3
|
+
|
4
|
+
renders_many :actions
|
5
|
+
renders_one :heading_html
|
6
|
+
|
7
|
+
def initialize(heading_text: nil, text: nil, hidden: false, role: nil, classes: [], html_attributes: {})
|
8
|
+
super(classes: classes, html_attributes: html_attributes)
|
9
|
+
|
10
|
+
@heading_text = heading_text
|
11
|
+
@text = text
|
12
|
+
@hidden = hidden
|
13
|
+
@role = role
|
14
|
+
end
|
15
|
+
|
16
|
+
def call
|
17
|
+
tag.div(class: classes, role: role, hidden: hidden, **html_attributes) do
|
18
|
+
safe_join([
|
19
|
+
tag.div(class: "govuk-grid-row") do
|
20
|
+
tag.div(class: "govuk-grid-column-two-thirds") { safe_join([heading_element, message_element]) }
|
21
|
+
end,
|
22
|
+
actions_element
|
23
|
+
])
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def default_classes
|
30
|
+
%w(govuk-cookie-banner__message govuk-width-container)
|
31
|
+
end
|
32
|
+
|
33
|
+
def heading_element
|
34
|
+
return if heading_content.blank?
|
35
|
+
|
36
|
+
tag.h2(heading_content, class: %w(govuk-cookie-banner__heading govuk-heading-m))
|
37
|
+
end
|
38
|
+
|
39
|
+
def heading_content
|
40
|
+
heading_html || heading_text
|
41
|
+
end
|
42
|
+
|
43
|
+
def message_element
|
44
|
+
tag.div(message_content, class: "govuk-cookie-banner__content")
|
45
|
+
end
|
46
|
+
|
47
|
+
def message_content
|
48
|
+
content || wrap_in_p(text) || fail(ArgumentError, "no text or content")
|
49
|
+
end
|
50
|
+
|
51
|
+
def wrap_in_p(message_text)
|
52
|
+
return if message_text.blank?
|
53
|
+
|
54
|
+
tag.p(message_text)
|
55
|
+
end
|
56
|
+
|
57
|
+
def actions_element
|
58
|
+
return if actions.none?
|
59
|
+
|
60
|
+
tag.div(class: "govuk-button-group") { safe_join(actions) }
|
61
|
+
end
|
62
|
+
end
|
@@ -1,17 +1,19 @@
|
|
1
1
|
class GovukComponent::DetailsComponent < GovukComponent::Base
|
2
|
-
attr_reader :summary_text, :text
|
2
|
+
attr_reader :summary_text, :text, :id, :open
|
3
3
|
|
4
4
|
renders_one :summary_html
|
5
5
|
|
6
|
-
def initialize(summary_text:, text: nil, classes: [], html_attributes: {})
|
6
|
+
def initialize(summary_text:, text: nil, classes: [], id: nil, open: nil, html_attributes: {})
|
7
7
|
super(classes: classes, html_attributes: html_attributes)
|
8
8
|
|
9
9
|
@summary_text = summary_text
|
10
10
|
@text = text
|
11
|
+
@id = id
|
12
|
+
@open = open
|
11
13
|
end
|
12
14
|
|
13
15
|
def call
|
14
|
-
tag.details(class: classes, data: { module: "govuk-details" }, **html_attributes) do
|
16
|
+
tag.details(class: classes, data: { module: "govuk-details" }, id: id, open: open, **html_attributes) do
|
15
17
|
safe_join([summary, description])
|
16
18
|
end
|
17
19
|
end
|
@@ -4,14 +4,14 @@ class GovukComponent::NotificationBannerComponent < GovukComponent::Base
|
|
4
4
|
renders_one :title_html
|
5
5
|
renders_many :headings, "Heading"
|
6
6
|
|
7
|
-
def initialize(title_text: nil, text: nil, role:
|
7
|
+
def initialize(title_text: nil, text: nil, role: nil, success: false, title_heading_level: 2, title_id: "govuk-notification-banner-title", disable_auto_focus: nil, classes: [], html_attributes: {})
|
8
8
|
super(classes: classes, html_attributes: html_attributes)
|
9
9
|
|
10
10
|
@title_text = title_text
|
11
11
|
@title_id = title_id
|
12
12
|
@text = text
|
13
|
-
@role = role
|
14
13
|
@success = success
|
14
|
+
@role = role || default_role
|
15
15
|
@title_heading_level = title_heading_level
|
16
16
|
@disable_auto_focus = disable_auto_focus
|
17
17
|
end
|
@@ -20,24 +20,6 @@ class GovukComponent::NotificationBannerComponent < GovukComponent::Base
|
|
20
20
|
headings.any? || text.present? || content.present?
|
21
21
|
end
|
22
22
|
|
23
|
-
def classes
|
24
|
-
super.append(success_class).compact
|
25
|
-
end
|
26
|
-
|
27
|
-
def success_class
|
28
|
-
%(govuk-notification-banner--success) if success
|
29
|
-
end
|
30
|
-
|
31
|
-
def title_content
|
32
|
-
title_html || title_text
|
33
|
-
end
|
34
|
-
|
35
|
-
def title_tag
|
36
|
-
fail "title_heading_level must be a number between 1 and 6" unless title_heading_level.is_a?(Integer) && title_heading_level.in?(1..6)
|
37
|
-
|
38
|
-
"h#{title_heading_level}"
|
39
|
-
end
|
40
|
-
|
41
23
|
class Heading < GovukComponent::Base
|
42
24
|
attr_reader :text, :link_href, :link_text
|
43
25
|
|
@@ -77,4 +59,26 @@ private
|
|
77
59
|
def data_params
|
78
60
|
{ "module" => "govuk-notification-banner", "disable-auto-focus" => disable_auto_focus }.compact
|
79
61
|
end
|
62
|
+
|
63
|
+
def classes
|
64
|
+
super.append(success_class).compact
|
65
|
+
end
|
66
|
+
|
67
|
+
def success_class
|
68
|
+
%(govuk-notification-banner--success) if success
|
69
|
+
end
|
70
|
+
|
71
|
+
def title_content
|
72
|
+
title_html || title_text
|
73
|
+
end
|
74
|
+
|
75
|
+
def title_tag
|
76
|
+
fail "title_heading_level must be a number between 1 and 6" unless title_heading_level.is_a?(Integer) && title_heading_level.in?(1..6)
|
77
|
+
|
78
|
+
"h#{title_heading_level}"
|
79
|
+
end
|
80
|
+
|
81
|
+
def default_role
|
82
|
+
success ? "alert" : "region"
|
83
|
+
end
|
80
84
|
end
|
@@ -1,15 +1,19 @@
|
|
1
1
|
class GovukComponent::PanelComponent < GovukComponent::Base
|
2
|
-
attr_reader :
|
2
|
+
attr_reader :id, :title_text, :text, :heading_level
|
3
3
|
|
4
|
-
|
4
|
+
renders_one :title_html
|
5
|
+
|
6
|
+
def initialize(title_text: nil, text: nil, heading_level: 1, id: nil, classes: [], html_attributes: {})
|
5
7
|
super(classes: classes, html_attributes: html_attributes)
|
6
8
|
|
7
|
-
@
|
8
|
-
@
|
9
|
+
@heading_level = heading_level
|
10
|
+
@title_text = title_text
|
11
|
+
@text = text
|
12
|
+
@id = id
|
9
13
|
end
|
10
14
|
|
11
15
|
def call
|
12
|
-
tag.div(class: classes, **html_attributes) do
|
16
|
+
tag.div(id: id, class: classes, **html_attributes) do
|
13
17
|
safe_join([panel_title, panel_body].compact)
|
14
18
|
end
|
15
19
|
end
|
@@ -20,27 +24,33 @@ private
|
|
20
24
|
%w(govuk-panel govuk-panel--confirmation)
|
21
25
|
end
|
22
26
|
|
23
|
-
def
|
24
|
-
|
27
|
+
def heading_tag
|
28
|
+
"h#{heading_level}"
|
29
|
+
end
|
30
|
+
|
31
|
+
def panel_content
|
32
|
+
content || text
|
25
33
|
end
|
26
34
|
|
27
|
-
def
|
28
|
-
|
35
|
+
def title
|
36
|
+
title_html || title_text
|
29
37
|
end
|
30
38
|
|
31
39
|
def panel_title
|
32
|
-
|
40
|
+
return if title.blank?
|
41
|
+
|
42
|
+
content_tag(heading_tag, title, class: "govuk-panel__title")
|
33
43
|
end
|
34
44
|
|
35
45
|
def panel_body
|
36
|
-
if
|
37
|
-
|
38
|
-
|
39
|
-
|
46
|
+
return if panel_content.blank?
|
47
|
+
|
48
|
+
tag.div(class: "govuk-panel__body") do
|
49
|
+
panel_content
|
40
50
|
end
|
41
51
|
end
|
42
52
|
|
43
53
|
def render?
|
44
|
-
|
54
|
+
title.present? || panel_content.present?
|
45
55
|
end
|
46
56
|
end
|
@@ -1,11 +1,5 @@
|
|
1
1
|
<%= tag.dl(class: classes, **html_attributes) do %>
|
2
2
|
<% rows.each do |row| %>
|
3
|
-
<%=
|
4
|
-
<%= tag.dt(row.key, class: "govuk-summary-list__key") %>
|
5
|
-
<%= tag.dd(row.value, class: "govuk-summary-list__value") %>
|
6
|
-
<% if any_row_has_actions? %>
|
7
|
-
<%= row.action %>
|
8
|
-
<% end %>
|
9
|
-
<% end %>
|
3
|
+
<%= row %>
|
10
4
|
<% end %>
|
11
5
|
<% end %>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class GovukComponent::SummaryListComponent < GovukComponent::Base
|
2
2
|
attr_reader :borders
|
3
3
|
|
4
|
-
renders_many :rows,
|
4
|
+
renders_many :rows, GovukComponent::SummaryListComponent::RowComponent
|
5
5
|
|
6
6
|
def initialize(borders: true, classes: [], html_attributes: {})
|
7
7
|
super(classes: classes, html_attributes: html_attributes)
|
@@ -26,41 +26,4 @@ private
|
|
26
26
|
def default_classes
|
27
27
|
%w(govuk-summary-list)
|
28
28
|
end
|
29
|
-
|
30
|
-
class Row < GovukComponent::Base
|
31
|
-
attr_reader :key, :value, :href, :text, :visually_hidden_text, :action_classes, :action_attributes
|
32
|
-
|
33
|
-
def initialize(key:, value:, action: {}, classes: [], html_attributes: {})
|
34
|
-
super(classes: classes, html_attributes: html_attributes)
|
35
|
-
|
36
|
-
@key = key
|
37
|
-
@value = value
|
38
|
-
|
39
|
-
if action.present?
|
40
|
-
@href = action[:href]
|
41
|
-
@text = action[:text] || "Change"
|
42
|
-
@visually_hidden_text = " #{action[:visually_hidden_text] || key.downcase}"
|
43
|
-
@action_classes = action[:classes] || []
|
44
|
-
@action_attributes = action[:html_attributes] || {}
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def action
|
49
|
-
link_classes = govuk_link_classes.append(action_classes).flatten
|
50
|
-
|
51
|
-
tag.dd(class: "govuk-summary-list__actions") do
|
52
|
-
if href.present?
|
53
|
-
link_to(href, class: link_classes, **action_attributes) do
|
54
|
-
safe_join([text, tag.span(visually_hidden_text, class: "govuk-visually-hidden")])
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
|
60
|
-
private
|
61
|
-
|
62
|
-
def default_classes
|
63
|
-
%w(govuk-summary-list__row)
|
64
|
-
end
|
65
|
-
end
|
66
29
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class GovukComponent::SummaryListComponent::ActionComponent < GovukComponent::Base
|
2
|
+
attr_reader :href, :text, :visually_hidden_text, :attributes, :classes
|
3
|
+
|
4
|
+
def initialize(href: nil, text: 'Change', visually_hidden_text: nil, classes: [], html_attributes: {})
|
5
|
+
super(classes: classes, html_attributes: html_attributes)
|
6
|
+
|
7
|
+
@href = href
|
8
|
+
@text = text
|
9
|
+
@visually_hidden_text = visually_hidden_text
|
10
|
+
end
|
11
|
+
|
12
|
+
def call
|
13
|
+
# when no href is provided return an empty string so the dd container
|
14
|
+
# will render, it's useful in lists where some rows have actions
|
15
|
+
# and others don't
|
16
|
+
return "" if href.blank?
|
17
|
+
|
18
|
+
link_classes = govuk_link_classes.append(classes).flatten
|
19
|
+
|
20
|
+
link_to(href, class: link_classes, **html_attributes) do
|
21
|
+
safe_join([action_text, visually_hidden_span].compact, " ")
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def action_text
|
28
|
+
content || text || fail(ArgumentError, "no text or content")
|
29
|
+
end
|
30
|
+
|
31
|
+
def visually_hidden_span
|
32
|
+
tag.span(visually_hidden_text, class: "govuk-visually-hidden") if visually_hidden_text.present?
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class GovukComponent::SummaryListComponent::KeyComponent < GovukComponent::Base
|
2
|
+
attr_reader :text
|
3
|
+
|
4
|
+
def initialize(text: nil, classes: [], html_attributes: {})
|
5
|
+
super(classes: classes, html_attributes: html_attributes)
|
6
|
+
|
7
|
+
@text = text
|
8
|
+
end
|
9
|
+
|
10
|
+
def call
|
11
|
+
tag.dt(key_content, class: classes, **html_attributes)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def default_classes
|
17
|
+
%w(govuk-summary-list__key)
|
18
|
+
end
|
19
|
+
|
20
|
+
def key_content
|
21
|
+
content || text || fail(ArgumentError, "no text or content")
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
class GovukComponent::SummaryListComponent::RowComponent < GovukComponent::Base
|
2
|
+
attr_reader :href, :visually_hidden_text
|
3
|
+
|
4
|
+
renders_one :key, GovukComponent::SummaryListComponent::KeyComponent
|
5
|
+
renders_one :value, GovukComponent::SummaryListComponent::ValueComponent
|
6
|
+
renders_many :actions, GovukComponent::SummaryListComponent::ActionComponent
|
7
|
+
|
8
|
+
def initialize(classes: [], html_attributes: {})
|
9
|
+
super(classes: classes, html_attributes: html_attributes)
|
10
|
+
end
|
11
|
+
|
12
|
+
def call
|
13
|
+
tag.div(class: classes, **html_attributes) do
|
14
|
+
safe_join([key, value, actions_content])
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def actions_content
|
21
|
+
return if actions.blank?
|
22
|
+
|
23
|
+
(actions.one?) ? single_action : actions_list
|
24
|
+
end
|
25
|
+
|
26
|
+
def single_action
|
27
|
+
tag.dd(class: actions_class) { safe_join(actions) }
|
28
|
+
end
|
29
|
+
|
30
|
+
def actions_list
|
31
|
+
tag.dd(class: actions_class) do
|
32
|
+
tag.ul(class: "govuk-summary-list__actions-list") do
|
33
|
+
safe_join(actions.map { |action| tag.li(action, class: "govuk-summary-list__actions-list-item") })
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def default_classes
|
39
|
+
%w(govuk-summary-list__row)
|
40
|
+
end
|
41
|
+
|
42
|
+
def actions_class
|
43
|
+
"govuk-summary-list__actions"
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
class GovukComponent::SummaryListComponent::ValueComponent < GovukComponent::Base
|
2
|
+
attr_reader :text
|
3
|
+
|
4
|
+
def initialize(text: nil, classes: [], html_attributes: {})
|
5
|
+
super(classes: classes, html_attributes: html_attributes)
|
6
|
+
|
7
|
+
@text = text
|
8
|
+
end
|
9
|
+
|
10
|
+
def call
|
11
|
+
tag.dd(value_content, class: classes, **html_attributes)
|
12
|
+
end
|
13
|
+
|
14
|
+
private
|
15
|
+
|
16
|
+
def default_classes
|
17
|
+
%w(govuk-summary-list__value)
|
18
|
+
end
|
19
|
+
|
20
|
+
def value_content
|
21
|
+
content || text || ""
|
22
|
+
end
|
23
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
<%= tag.div(class: classes, data: { module: 'govuk-tabs' }, **html_attributes) do %>
|
1
|
+
<%= tag.div(id: id, class: classes, data: { module: 'govuk-tabs' }, **html_attributes) do %>
|
2
2
|
<%= tag.h2(title, class: "govuk-tabs__title") %>
|
3
3
|
<ul class="govuk-tabs__list">
|
4
4
|
<% tabs.each.with_index do |tab, i| %>
|
@@ -1,12 +1,13 @@
|
|
1
1
|
class GovukComponent::TabComponent < GovukComponent::Base
|
2
2
|
renders_many :tabs, "Tab"
|
3
3
|
|
4
|
-
attr_reader :title
|
4
|
+
attr_reader :title, :id
|
5
5
|
|
6
|
-
def initialize(title:, classes: [], html_attributes: {})
|
6
|
+
def initialize(title:, id: nil, classes: [], html_attributes: {})
|
7
7
|
super(classes: classes, html_attributes: html_attributes)
|
8
8
|
|
9
9
|
@title = title
|
10
|
+
@id = id
|
10
11
|
end
|
11
12
|
|
12
13
|
private
|
@@ -16,16 +17,17 @@ private
|
|
16
17
|
end
|
17
18
|
|
18
19
|
class Tab < GovukComponent::Base
|
19
|
-
attr_reader :
|
20
|
+
attr_reader :label, :text
|
20
21
|
|
21
|
-
def initialize(
|
22
|
+
def initialize(label:, text: nil, classes: [], html_attributes: {})
|
22
23
|
super(classes: classes, html_attributes: html_attributes)
|
23
24
|
|
24
|
-
@
|
25
|
+
@label = label
|
26
|
+
@text = text
|
25
27
|
end
|
26
28
|
|
27
29
|
def id(prefix: nil)
|
28
|
-
[prefix,
|
30
|
+
[prefix, label.parameterize].join
|
29
31
|
end
|
30
32
|
|
31
33
|
def hidden_class(i = nil)
|
@@ -39,7 +41,7 @@ private
|
|
39
41
|
end
|
40
42
|
|
41
43
|
def li_link
|
42
|
-
link_to(
|
44
|
+
link_to(label, id(prefix: '#'), class: "govuk-tabs__tab")
|
43
45
|
end
|
44
46
|
|
45
47
|
def default_classes
|
@@ -47,7 +49,7 @@ private
|
|
47
49
|
end
|
48
50
|
|
49
51
|
def call
|
50
|
-
content
|
52
|
+
content || text || fail(ArgumentError, "no text or content")
|
51
53
|
end
|
52
54
|
end
|
53
55
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
class GovukComponent::WarningTextComponent < GovukComponent::Base
|
2
|
-
attr_reader :text, :
|
2
|
+
attr_reader :text, :icon_fallback_text
|
3
3
|
|
4
4
|
ICON = '!'.freeze
|
5
5
|
|
6
|
-
def initialize(text:,
|
6
|
+
def initialize(text:, icon_fallback_text: 'Warning', classes: [], html_attributes: {})
|
7
7
|
super(classes: classes, html_attributes: html_attributes)
|
8
8
|
|
9
9
|
@text = text
|
10
|
-
@
|
10
|
+
@icon_fallback_text = icon_fallback_text
|
11
11
|
end
|
12
12
|
|
13
13
|
def call
|
@@ -29,7 +29,7 @@ private
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def assistive
|
32
|
-
tag.span(
|
32
|
+
tag.span(icon_fallback_text, class: 'govuk-warning-text__assistive')
|
33
33
|
end
|
34
34
|
|
35
35
|
def default_classes
|
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: 2.0.
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DfE developers
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 2.
|
47
|
+
version: 2.36.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 2.
|
54
|
+
version: 2.36.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: pry-byebug
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -169,8 +169,8 @@ files:
|
|
169
169
|
- app/components/govuk_component/base.rb
|
170
170
|
- app/components/govuk_component/breadcrumbs_component.html.erb
|
171
171
|
- app/components/govuk_component/breadcrumbs_component.rb
|
172
|
-
- app/components/govuk_component/cookie_banner_component.html.erb
|
173
172
|
- app/components/govuk_component/cookie_banner_component.rb
|
173
|
+
- app/components/govuk_component/cookie_banner_component/message_component.rb
|
174
174
|
- app/components/govuk_component/details_component.rb
|
175
175
|
- app/components/govuk_component/footer_component.html.erb
|
176
176
|
- app/components/govuk_component/footer_component.rb
|
@@ -185,6 +185,10 @@ files:
|
|
185
185
|
- app/components/govuk_component/start_button_component.rb
|
186
186
|
- app/components/govuk_component/summary_list_component.html.erb
|
187
187
|
- app/components/govuk_component/summary_list_component.rb
|
188
|
+
- app/components/govuk_component/summary_list_component/action_component.rb
|
189
|
+
- app/components/govuk_component/summary_list_component/key_component.rb
|
190
|
+
- app/components/govuk_component/summary_list_component/row_component.rb
|
191
|
+
- app/components/govuk_component/summary_list_component/value_component.rb
|
188
192
|
- app/components/govuk_component/tab_component.html.erb
|
189
193
|
- app/components/govuk_component/tab_component.rb
|
190
194
|
- app/components/govuk_component/tag_component.rb
|
@@ -205,7 +209,7 @@ homepage: https://github.com/DFE-Digital/govuk-components
|
|
205
209
|
licenses:
|
206
210
|
- MIT
|
207
211
|
metadata: {}
|
208
|
-
post_install_message:
|
212
|
+
post_install_message:
|
209
213
|
rdoc_options: []
|
210
214
|
require_paths:
|
211
215
|
- lib
|
@@ -216,12 +220,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
216
220
|
version: '0'
|
217
221
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
218
222
|
requirements:
|
219
|
-
- - "
|
223
|
+
- - ">="
|
220
224
|
- !ruby/object:Gem::Version
|
221
|
-
version:
|
225
|
+
version: '0'
|
222
226
|
requirements: []
|
223
227
|
rubygems_version: 3.1.6
|
224
|
-
signing_key:
|
228
|
+
signing_key:
|
225
229
|
specification_version: 4
|
226
230
|
summary: Lightweight set of reusable GOV.UK Design System components
|
227
231
|
test_files: []
|
@@ -1,17 +0,0 @@
|
|
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
|
-
<%= tag.h2(title, class: %w(govuk-cookie-banner__heading govuk-heading-m)) %>
|
7
|
-
<% end %>
|
8
|
-
|
9
|
-
<%= tag.div(body, class: "govuk-cookie-banner__content") %>
|
10
|
-
</div>
|
11
|
-
</div>
|
12
|
-
|
13
|
-
<div class="govuk-button-group">
|
14
|
-
<%= actions %>
|
15
|
-
</div>
|
16
|
-
</div>
|
17
|
-
<% end %>
|