govuk-components 0.6.0 → 0.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1d93a893a0e31d440b66a2235863f3f4f563a91510cddf3f233a108725e41e50
4
- data.tar.gz: 4a00ba402a33aa512878d74329692d9258645e8e049b3b76dcca72c7d544c1f9
3
+ metadata.gz: 90eede10baca630edcdc6999469783ab08332a02d7c03e7ca6b27bef6fb8e328
4
+ data.tar.gz: bfb02cc50490be25acd650a28e2deda67841c5719901db3869919c4d08ac2337
5
5
  SHA512:
6
- metadata.gz: 59f573023fa4f5ab19783aeb88c430c84b071371942e86d7b54150395859e51aaa7bd4b49d2c6968a5be1a9164f64b7407c1e978c5c66b49bec5e4ccd07f486b
7
- data.tar.gz: 0fee5f518ccec30e17862fba126c87a56e690dfa4f493bda2e7190d45783f530d7b6a4c973bca23ca2053d50eff6df76d446eca24c47a471716cfbd43749fcfc
6
+ metadata.gz: bc3c98d97c246ee149dc10856a90214db31951b0d2184b16de886fa62704e9aa32d0e81df90bbc5cbb9763e19120f1be8697d773fcde996a60da17d1615f612e
7
+ data.tar.gz: 4a86ca1483dc684ce18163abe7b5ff1b13a22383b3b77fb17e57251ab4d03e77553c83c0a3443378e353203a843d1a675088a867e481fad0e0357e57310eb8ae
data/README.md CHANGED
@@ -8,22 +8,23 @@ This gem provides a suite of reusable components for the [GOV.UK Design System](
8
8
 
9
9
  ## What's included
10
10
 
11
- | Component name | Helper |
12
- | -------------- | ------ |
13
- | [Accordion](app/components/govuk_component/accordion.rb) | `govuk_accordion` |
14
- | [Back link](app/components/govuk_component/back_link.rb) | `govuk_back_link` |
15
- | [Breadcrumbs](app/components/govuk_component/breadcrumbs.rb) | `govuk_breadcrumbs` |
16
- | [Details](app/components/govuk_component/details.rb) | `govuk_details` |
17
- | [Footer](app/components/govuk_component/footer.rb) | `govuk_footer` |
18
- | [Header](app/components/govuk_component/header.rb) | `govuk_header` |
19
- | [Inset text](app/components/govuk_component/inset_text.rb) | `govuk_inset_text` |
20
- | [Panel](app/components/govuk_component/panel.rb) | `govuk_panel` |
21
- | [Phase banner](app/components/govuk_component/phase_banner.rb) | `govuk_phase_banner` |
22
- | [Start now button](app/components/govuk_component/start_now_button.rb) | `govuk_start_now_button` |
23
- | [Summary list](app/components/govuk_component/summary_list.rb) | `govuk_summary_list` |
24
- | [Tabs](app/components/govuk_component/tabs.rb) | `govuk_tabs` |
25
- | [Tag](app/components/govuk_component/tag.rb) | `govuk_tag` |
26
- | [Warning text](app/components/govuk_component/warning.rb) | `govuk_warning` |
11
+ | Component name | Helper |
12
+ | -------------- | ------ |
13
+ | [Accordion](app/components/govuk_component/accordion.rb) | `govuk_accordion` |
14
+ | [Back link](app/components/govuk_component/back_link.rb) | `govuk_back_link` |
15
+ | [Breadcrumbs](app/components/govuk_component/breadcrumbs.rb) | `govuk_breadcrumbs` |
16
+ | [Details](app/components/govuk_component/details.rb) | `govuk_details` |
17
+ | [Footer](app/components/govuk_component/footer.rb) | `govuk_footer` |
18
+ | [Header](app/components/govuk_component/header.rb) | `govuk_header` |
19
+ | [Inset text](app/components/govuk_component/inset_text.rb) | `govuk_inset_text` |
20
+ | [Notification banner](app/components/govuk_component/notification_banner.rb) | `govuk_notification_banner` |
21
+ | [Panel](app/components/govuk_component/panel.rb) | `govuk_panel` |
22
+ | [Phase banner](app/components/govuk_component/phase_banner.rb) | `govuk_phase_banner` |
23
+ | [Start now button](app/components/govuk_component/start_now_button.rb) | `govuk_start_now_button` |
24
+ | [Summary list](app/components/govuk_component/summary_list.rb) | `govuk_summary_list` |
25
+ | [Tabs](app/components/govuk_component/tabs.rb) | `govuk_tabs` |
26
+ | [Tag](app/components/govuk_component/tag.rb) | `govuk_tag` |
27
+ | [Warning text](app/components/govuk_component/warning.rb) | `govuk_warning` |
27
28
 
28
29
  ### Helpers
29
30
 
@@ -0,0 +1,20 @@
1
+ <%= tag.div(class: classes.append(success_class).compact, **html_attributes, role: "region", aria: { labelledby: title_id }, data: data_params) do %>
2
+ <div class="govuk-notification-banner__header">
3
+ <%= content_tag(title_tag, class: "govuk-notification-banner__title", id: title_id) do %>
4
+ <%= title %>
5
+ <% end %>
6
+ </div>
7
+ <div class="govuk-notification-banner__content">
8
+ <% headings.each do |heading| %>
9
+ <p class="govuk-notification-banner__heading">
10
+
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
+ </p>
16
+ <% end %>
17
+
18
+ <%= content %>
19
+ </div>
20
+ <% end %>
@@ -0,0 +1,58 @@
1
+ class GovukComponent::NotificationBanner < GovukComponent::Base
2
+ attr_reader :title, :title_id, :success, :title_heading_level, :disable_auto_focus
3
+
4
+ include ViewComponent::Slotable
5
+ with_slot :heading, collection: true, class_name: 'Heading'
6
+
7
+ def initialize(title:, success: false, title_heading_level: 2, title_id: "govuk-notification-banner-title", disable_auto_focus: nil, classes: [], html_attributes: {})
8
+ super(classes: classes, html_attributes: html_attributes)
9
+
10
+ @title = title
11
+ @title_id = title_id
12
+ @success = success
13
+ @title_heading_level = title_heading_level
14
+ @disable_auto_focus = disable_auto_focus
15
+ end
16
+
17
+ def success_class
18
+ %(govuk-notification-banner--success) if success?
19
+ end
20
+
21
+ def success?
22
+ @success
23
+ end
24
+
25
+ def render?
26
+ headings.any?
27
+ end
28
+
29
+ def title_tag
30
+ 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)
31
+
32
+ "h#{title_heading_level}"
33
+ end
34
+
35
+ class Heading < ViewComponent::Slot
36
+ attr_accessor :text, :link_target, :link_text
37
+
38
+ def initialize(text:, link_text: nil, link_target: nil)
39
+ @text = text
40
+ @link_text = link_text
41
+ @link_target = link_target
42
+ end
43
+
44
+ def default_classes
45
+ %w(govuk-notification-banner__heading)
46
+ end
47
+ end
48
+
49
+ private
50
+
51
+ def default_classes
52
+ %w(govuk-notification-banner)
53
+ end
54
+
55
+ def data_params
56
+ { "module" => "govuk-notification-banner", "disable-auto-focus" => disable_auto_focus }.compact
57
+ end
58
+ end
@@ -7,6 +7,7 @@ module GovukComponentsHelper
7
7
  govuk_footer: 'GovukComponent::Footer',
8
8
  govuk_header: 'GovukComponent::Header',
9
9
  govuk_inset_text: 'GovukComponent::InsetText',
10
+ govuk_notification_banner: 'GovukComponent::NotificationBanner',
10
11
  govuk_panel: 'GovukComponent::Panel',
11
12
  govuk_phase_banner: 'GovukComponent::PhaseBanner',
12
13
  govuk_start_now_button: 'GovukComponent::StartNowButton',
@@ -1,14 +1,26 @@
1
1
  module GovukLinkHelper
2
- def govuk_link_to(*args, **kwargs, &block)
3
- link_to(*args, **{ class: 'govuk-link' }.deep_merge(kwargs), &block)
2
+ def govuk_link_to(*args, button: false, **kwargs, &block)
3
+ link_to(*args, **inject_class(kwargs, class_name: link_class(button)), &block)
4
4
  end
5
5
 
6
- def govuk_mail_to(*args, **kwargs, &block)
7
- mail_to(*args, **{ class: 'govuk-link' }.deep_merge(kwargs), &block)
6
+ def govuk_mail_to(*args, button: false, **kwargs, &block)
7
+ mail_to(*args, **inject_class(kwargs, class_name: link_class(button)), &block)
8
8
  end
9
9
 
10
10
  def govuk_button_to(*args, **kwargs)
11
- button_to(*args, **{ class: 'govuk-button' }.deep_merge(kwargs))
11
+ button_to(*args, **inject_class(kwargs, class_name: 'govuk-button'))
12
+ end
13
+
14
+ private
15
+
16
+ def inject_class(attributes, class_name:)
17
+ attributes.with_indifferent_access.tap do |attrs|
18
+ attrs[:class] = Array.wrap(attrs[:class]).prepend(class_name)
19
+ end
20
+ end
21
+
22
+ def link_class(button)
23
+ button ? 'govuk-button' : 'govuk-link'
12
24
  end
13
25
  end
14
26
 
@@ -1,5 +1,5 @@
1
1
  module Govuk
2
2
  module Components
3
- VERSION = '0.6.0'
3
+ VERSION = '0.7.0'
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: 0.6.0
4
+ version: 0.7.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: 2020-11-19 00:00:00.000000000 Z
11
+ date: 2020-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -36,14 +36,14 @@ dependencies:
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: 2.18.1
39
+ version: 2.22.1
40
40
  type: :runtime
41
41
  prerelease: false
42
42
  version_requirements: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: 2.18.1
46
+ version: 2.22.1
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: sqlite3
49
49
  requirement: !ruby/object:Gem::Requirement
@@ -139,6 +139,8 @@ files:
139
139
  - app/components/govuk_component/header.html.erb
140
140
  - app/components/govuk_component/header.rb
141
141
  - app/components/govuk_component/inset_text.rb
142
+ - app/components/govuk_component/notification_banner.html.erb
143
+ - app/components/govuk_component/notification_banner.rb
142
144
  - app/components/govuk_component/panel.html.erb
143
145
  - app/components/govuk_component/panel.rb
144
146
  - app/components/govuk_component/phase_banner.html.erb