govuk-components 3.0.4 → 3.0.5

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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -0
  3. data/app/components/govuk_component/accordion_component/section_component.html.erb +1 -1
  4. data/app/components/govuk_component/accordion_component/section_component.rb +4 -4
  5. data/app/components/govuk_component/accordion_component.html.erb +1 -1
  6. data/app/components/govuk_component/accordion_component.rb +5 -6
  7. data/app/components/govuk_component/back_link_component.rb +6 -6
  8. data/app/components/govuk_component/base.rb +12 -10
  9. data/app/components/govuk_component/breadcrumbs_component.html.erb +1 -1
  10. data/app/components/govuk_component/breadcrumbs_component.rb +10 -8
  11. data/app/components/govuk_component/cookie_banner_component/message_component.rb +5 -5
  12. data/app/components/govuk_component/cookie_banner_component.rb +7 -5
  13. data/app/components/govuk_component/details_component.rb +5 -5
  14. data/app/components/govuk_component/footer_component.html.erb +2 -2
  15. data/app/components/govuk_component/footer_component.rb +13 -9
  16. data/app/components/govuk_component/header_component.html.erb +3 -3
  17. data/app/components/govuk_component/header_component.rb +32 -29
  18. data/app/components/govuk_component/inset_text_component.rb +5 -5
  19. data/app/components/govuk_component/notification_banner_component.html.erb +1 -1
  20. data/app/components/govuk_component/notification_banner_component.rb +20 -21
  21. data/app/components/govuk_component/panel_component.rb +5 -5
  22. data/app/components/govuk_component/phase_banner_component.html.erb +1 -1
  23. data/app/components/govuk_component/phase_banner_component.rb +4 -4
  24. data/app/components/govuk_component/section_break_component.rb +44 -0
  25. data/app/components/govuk_component/start_button_component.rb +16 -17
  26. data/app/components/govuk_component/summary_list_component/action_component.rb +7 -3
  27. data/app/components/govuk_component/summary_list_component/key_component.rb +5 -5
  28. data/app/components/govuk_component/summary_list_component/row_component.rb +15 -7
  29. data/app/components/govuk_component/summary_list_component/value_component.rb +3 -3
  30. data/app/components/govuk_component/summary_list_component.html.erb +1 -1
  31. data/app/components/govuk_component/summary_list_component.rb +4 -8
  32. data/app/components/govuk_component/tab_component.html.erb +2 -2
  33. data/app/components/govuk_component/tab_component.rb +17 -9
  34. data/app/components/govuk_component/table_component/body_component.html.erb +1 -1
  35. data/app/components/govuk_component/table_component/body_component.rb +2 -2
  36. data/app/components/govuk_component/table_component/caption_component.rb +5 -5
  37. data/app/components/govuk_component/table_component/cell_component.rb +10 -2
  38. data/app/components/govuk_component/table_component/head_component.html.erb +1 -1
  39. data/app/components/govuk_component/table_component/head_component.rb +2 -2
  40. data/app/components/govuk_component/table_component/row_component.html.erb +1 -1
  41. data/app/components/govuk_component/table_component/row_component.rb +4 -4
  42. data/app/components/govuk_component/table_component.html.erb +1 -1
  43. data/app/components/govuk_component/table_component.rb +4 -4
  44. data/app/components/govuk_component/tag_component.rb +7 -5
  45. data/app/components/govuk_component/traits/custom_classes.rb +0 -24
  46. data/app/components/govuk_component/warning_text_component.rb +5 -5
  47. data/app/helpers/govuk_components_helper.rb +1 -0
  48. data/app/helpers/govuk_link_helper.rb +2 -1
  49. data/lib/govuk/components/version.rb +1 -1
  50. data/lib/govuk/components.rb +1 -0
  51. metadata +33 -5
  52. data/app/components/govuk_component/table_component/cell_component.html.erb +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c3bf635c37adb87e738a728912c6e69c23fb78b8294bc5ec88051e2bf426c264
4
- data.tar.gz: da828729be36c2602f70b404c4a5a81d31ebb079fca7aaa7107e77329c74c771
3
+ metadata.gz: 8d5cf5d99c77bcfbd24e77252b855265660bc80e2496b75adda9cf10362c9ee1
4
+ data.tar.gz: c54839796cf802ebe85dddf875a269b67a423856d36c87cdc7e16a4f90ee830d
5
5
  SHA512:
6
- metadata.gz: 11be36a8bcd99438c882feb99e4428bded8aa524f80764fd62f640a723eb5e6fe864308b309735de5f1ed4d90f568de653aef0162bf57f802cc6d1b2e89cd130
7
- data.tar.gz: 12b3f543f555c0bf7291e4295ff0f50c84c656833d74768fb8a142df87a48b30fa8b3cae269ecfeb8dfab2673814159a6013562fc6396424d45666c8dbcbcfbd
6
+ metadata.gz: 246a31f6ea734ae757f88bf92e0d2bf1ea15daa741fb87318f257b9d79926b189b8cf9312b492d6f82a9180608dec25344f7328f98c74f49d4ffd81fdda3540f
7
+ data.tar.gz: 61d94fc80d6e125d198eb388afd056b3edd612b6463adb06a17fb9fbfe8e37862b93f99ce45603a21cdf8c32a8a1cfe28edbd463b952ea73c08e003948d4175c
data/README.md CHANGED
@@ -31,6 +31,7 @@ The provided components are:
31
31
  * [Notification banner](https://govuk-components.netlify.app/components/notification-banner)
32
32
  * [Panel](https://govuk-components.netlify.app/components/panel)
33
33
  * [Phase banner](https://govuk-components.netlify.app/components/phase-banner)
34
+ * [Section break](https://govuk-components.netlify.app/components/section-break)
34
35
  * [Start button](https://govuk-components.netlify.app/components/start-button)
35
36
  * [Summary list](https://govuk-components.netlify.app/components/summary-list)
36
37
  * [Tabs](https://govuk-components.netlify.app/components/tabs)
@@ -1,4 +1,4 @@
1
- <%= tag.div(id: id(suffix: 'section'), class: classes, **html_attributes) do %>
1
+ <%= tag.div(id: id(suffix: 'section'), **html_attributes) do %>
2
2
  <div class="govuk-accordion__section-header">
3
3
  <%= content_tag(heading_level, class: "govuk-accordion__section-heading") do %>
4
4
  <%= tag.span(heading_content, id: id, class: "govuk-accordion__section-button", aria: { expanded: expanded?, controls: id(suffix: 'content') }) %>
@@ -7,12 +7,12 @@ class GovukComponent::AccordionComponent::SectionComponent < GovukComponent::Bas
7
7
  alias_method :expanded?, :expanded
8
8
 
9
9
  def initialize(heading_text:, summary_text:, expanded:, heading_level:, classes: [], html_attributes: {})
10
- super(classes: classes, html_attributes: html_attributes)
11
-
12
10
  @heading_text = heading_text
13
11
  @summary_text = summary_text
14
12
  @expanded = expanded
15
13
  @heading_level = heading_level
14
+
15
+ super(classes: classes, html_attributes: html_attributes)
16
16
  end
17
17
 
18
18
  def id(suffix: nil)
@@ -33,7 +33,7 @@ class GovukComponent::AccordionComponent::SectionComponent < GovukComponent::Bas
33
33
 
34
34
  private
35
35
 
36
- def default_classes
37
- class_names("govuk-accordion__section", "govuk-accordion__section--expanded" => expanded?).split
36
+ def default_attributes
37
+ { class: class_names("govuk-accordion__section", "govuk-accordion__section--expanded" => expanded?).split }
38
38
  end
39
39
  end
@@ -1,4 +1,4 @@
1
- <%= tag.div(id: @id, class: classes, data: { module: 'govuk-accordion' }, **html_attributes) do %>
1
+ <%= tag.div(**html_attributes) do %>
2
2
  <% sections.each do |section| %>
3
3
  <%= section %>
4
4
  <% end %>
@@ -13,17 +13,16 @@ class GovukComponent::AccordionComponent < GovukComponent::Base
13
13
 
14
14
  attr_reader :id, :heading_level
15
15
 
16
- def initialize(id: nil, heading_level: 2, classes: [], html_attributes: {})
17
- super(classes: classes, html_attributes: html_attributes)
18
-
19
- @id = id
16
+ def initialize(heading_level: 2, classes: [], html_attributes: {})
20
17
  @heading_level = heading_tag(heading_level)
18
+
19
+ super(classes: classes, html_attributes: html_attributes)
21
20
  end
22
21
 
23
22
  private
24
23
 
25
- def default_classes
26
- %w(govuk-accordion)
24
+ def default_attributes
25
+ { class: %w(govuk-accordion), data: { module: 'govuk-accordion' } }
27
26
  end
28
27
 
29
28
  def heading_tag(level)
@@ -1,15 +1,15 @@
1
1
  class GovukComponent::BackLinkComponent < GovukComponent::Base
2
2
  attr_reader :text, :href
3
3
 
4
- def initialize(href:, text: 'Back', classes: nil, html_attributes: {})
5
- super(classes: classes, html_attributes: html_attributes)
6
-
4
+ def initialize(href:, text: 'Back', classes: [], html_attributes: {})
7
5
  @text = text
8
6
  @href = href
7
+
8
+ super(classes: classes, html_attributes: html_attributes)
9
9
  end
10
10
 
11
11
  def call
12
- link_to(link_content, href, class: classes, **html_attributes)
12
+ link_to(link_content, href, **html_attributes)
13
13
  end
14
14
 
15
15
  private
@@ -18,7 +18,7 @@ private
18
18
  content || text || fail(ArgumentError, "no text or content")
19
19
  end
20
20
 
21
- def default_classes
22
- %w(govuk-back-link)
21
+ def default_attributes
22
+ { class: %w(govuk-back-link) }
23
23
  end
24
24
  end
@@ -1,19 +1,21 @@
1
1
  class GovukComponent::Base < ViewComponent::Base
2
- include Govuk::Components::Helpers::CssUtilities
3
-
4
- include GovukComponent::Traits::CustomClasses
5
- include GovukComponent::Traits::CustomHtmlAttributes
2
+ using HTMLAttributesUtils
6
3
 
7
4
  attr_reader :html_attributes
8
5
 
9
6
  def initialize(classes:, html_attributes:)
10
- @classes = parse_classes(classes)
11
- @html_attributes = html_attributes
7
+ # FIXME: remove first merge when we deprecate classes
8
+ #
9
+ # This step only needs to be here while we still accept classes:, now
10
+ # we're using html_attributes_utils we can start to move towards
11
+ # supporting html_attributes: { class: 'xyz' } over taking them
12
+ # separately
12
13
 
13
- super
14
- end
14
+ @html_attributes = default_attributes
15
+ .deep_merge_html_attributes({ class: classes })
16
+ .deep_merge_html_attributes(html_attributes)
17
+ .deep_tidy_html_attributes
15
18
 
16
- def default_classes
17
- []
19
+ super
18
20
  end
19
21
  end
@@ -1,4 +1,4 @@
1
- <%= tag.div(class: classes, **html_attributes) do %>
1
+ <%= tag.div(**html_attributes) do %>
2
2
  <ol class="govuk-breadcrumbs__list">
3
3
  <% @breadcrumbs.each do |link| %>
4
4
  <%= link %>
@@ -2,21 +2,23 @@ class GovukComponent::BreadcrumbsComponent < GovukComponent::Base
2
2
  attr_reader :breadcrumbs, :hide_in_print, :collapse_on_mobile
3
3
 
4
4
  def initialize(breadcrumbs:, hide_in_print: false, collapse_on_mobile: false, classes: [], html_attributes: {})
5
- super(classes: classes, html_attributes: html_attributes)
6
-
7
5
  @breadcrumbs = build_list(breadcrumbs)
8
6
  @hide_in_print = hide_in_print
9
7
  @collapse_on_mobile = collapse_on_mobile
8
+
9
+ super(classes: classes, html_attributes: html_attributes)
10
10
  end
11
11
 
12
12
  private
13
13
 
14
- def default_classes
15
- class_names(
16
- "govuk-breadcrumbs",
17
- "govuk-!-display-none-print" => hide_in_print,
18
- "govuk-breadcrumbs--collapse-on-mobile" => collapse_on_mobile
19
- ).split
14
+ def default_attributes
15
+ {
16
+ class: class_names(
17
+ "govuk-breadcrumbs",
18
+ "govuk-!-display-none-print" => hide_in_print,
19
+ "govuk-breadcrumbs--collapse-on-mobile" => collapse_on_mobile
20
+ ).split
21
+ }
20
22
  end
21
23
 
22
24
  def build_list(breadcrumbs)
@@ -5,16 +5,16 @@ class GovukComponent::CookieBannerComponent::MessageComponent < GovukComponent::
5
5
  renders_one :heading_html
6
6
 
7
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
8
  @heading_text = heading_text
11
9
  @text = text
12
10
  @hidden = hidden
13
11
  @role = role
12
+
13
+ super(classes: classes, html_attributes: html_attributes)
14
14
  end
15
15
 
16
16
  def call
17
- tag.div(class: classes, role: role, hidden: hidden, **html_attributes) do
17
+ tag.div(role: role, hidden: hidden, **html_attributes) do
18
18
  safe_join([
19
19
  tag.div(class: "govuk-grid-row") do
20
20
  tag.div(class: "govuk-grid-column-two-thirds") { safe_join([heading_element, message_element]) }
@@ -26,8 +26,8 @@ class GovukComponent::CookieBannerComponent::MessageComponent < GovukComponent::
26
26
 
27
27
  private
28
28
 
29
- def default_classes
30
- %w(govuk-cookie-banner__message govuk-width-container)
29
+ def default_attributes
30
+ { class: %w(govuk-cookie-banner__message govuk-width-container) }
31
31
  end
32
32
 
33
33
  def heading_element
@@ -5,23 +5,25 @@ module GovukComponent
5
5
  attr_accessor :aria_label, :hidden, :hide_in_print
6
6
 
7
7
  def initialize(aria_label: "Cookie banner", hidden: false, hide_in_print: true, classes: [], html_attributes: {})
8
- super(classes: classes, html_attributes: html_attributes)
9
-
10
8
  @aria_label = aria_label
11
9
  @hidden = hidden
12
10
  @hide_in_print = hide_in_print
11
+
12
+ super(classes: classes, html_attributes: html_attributes)
13
13
  end
14
14
 
15
15
  def call
16
- tag.div(class: classes, role: "region", aria: { label: aria_label }, data: { nosnippet: true }, hidden: hidden, **html_attributes) do
16
+ tag.div(role: "region", aria: { label: aria_label }, data: { nosnippet: true }, hidden: hidden, **html_attributes) do
17
17
  safe_join(messages)
18
18
  end
19
19
  end
20
20
 
21
21
  private
22
22
 
23
- def default_classes
24
- class_names("govuk-cookie-banner", "govuk-!-display-none-print" => hide_in_print).split
23
+ def default_attributes
24
+ {
25
+ class: class_names("govuk-cookie-banner", "govuk-!-display-none-print" => hide_in_print).split
26
+ }
25
27
  end
26
28
  end
27
29
  end
@@ -4,16 +4,16 @@ class GovukComponent::DetailsComponent < GovukComponent::Base
4
4
  renders_one :summary_html
5
5
 
6
6
  def initialize(summary_text: nil, text: nil, classes: [], id: nil, open: nil, html_attributes: {})
7
- super(classes: classes, html_attributes: html_attributes)
8
-
9
7
  @summary_text = summary_text
10
8
  @text = text
11
9
  @id = id
12
10
  @open = open
11
+
12
+ super(classes: classes, html_attributes: html_attributes)
13
13
  end
14
14
 
15
15
  def call
16
- tag.details(class: classes, data: { module: "govuk-details" }, id: id, open: open, **html_attributes) do
16
+ tag.details(data: { module: "govuk-details" }, id: id, open: open, **html_attributes) do
17
17
  safe_join([summary, description])
18
18
  end
19
19
  end
@@ -36,7 +36,7 @@ private
36
36
  end
37
37
  end
38
38
 
39
- def default_classes
40
- %w(govuk-details)
39
+ def default_attributes
40
+ { class: %w(govuk-details) }
41
41
  end
42
42
  end
@@ -1,5 +1,5 @@
1
- <%= tag.footer(class: classes, role: 'contentinfo', **html_attributes) do %>
2
- <%= tag.div(class: container_classes, **container_html_attributes) do %>
1
+ <%= tag.footer(role: 'contentinfo', **html_attributes) do %>
2
+ <%= tag.div(**container_html_attributes) do %>
3
3
  <% if navigation.present? %>
4
4
  <div class="govuk-footer__navigation">
5
5
  <%= navigation %>
@@ -1,4 +1,6 @@
1
1
  class GovukComponent::FooterComponent < GovukComponent::Base
2
+ using HTMLAttributesUtils
3
+
2
4
  renders_one :meta_html
3
5
  renders_one :meta
4
6
  renders_one :navigation
@@ -19,8 +21,6 @@ class GovukComponent::FooterComponent < GovukComponent::Base
19
21
  meta_classes: [],
20
22
  meta_html_attributes: {}
21
23
  )
22
- super(classes: classes, html_attributes: html_attributes)
23
-
24
24
  @meta_text = meta_text
25
25
  @meta_items = build_meta_links(meta_items)
26
26
  @meta_items_title = meta_items_title
@@ -30,16 +30,14 @@ class GovukComponent::FooterComponent < GovukComponent::Base
30
30
  @copyright = build_copyright(copyright_text, copyright_url)
31
31
  @custom_container_classes = container_classes
32
32
  @custom_container_html_attributes = container_html_attributes
33
+
34
+ super(classes: classes, html_attributes: html_attributes)
33
35
  end
34
36
 
35
37
  private
36
38
 
37
- def default_classes
38
- %w(govuk-footer)
39
- end
40
-
41
- def container_classes
42
- combine_classes(%w(govuk-width-container), custom_container_classes)
39
+ def default_attributes
40
+ { class: %w(govuk-footer) }
43
41
  end
44
42
 
45
43
  def meta_content
@@ -55,7 +53,13 @@ private
55
53
  end
56
54
 
57
55
  def container_html_attributes
58
- @custom_container_html_attributes
56
+ # FIXME: remove when we deprecate classes
57
+ #
58
+ # Once we drop classes this extra merging can be dropped along with the
59
+ # container_classes and meta_classes args
60
+ { class: %w(govuk-width-container) }.deep_merge_html_attributes(
61
+ @custom_container_html_attributes.merge(class: custom_container_classes)
62
+ )
59
63
  end
60
64
 
61
65
  def build_meta_links(links)
@@ -1,5 +1,5 @@
1
- <%= tag.header(class: classes, role: 'banner', data: { module: 'govuk-header' }, **html_attributes) do %>
2
- <%= tag.div(class: container_classes) do %>
1
+ <%= tag.header(role: 'banner', data: { module: 'govuk-header' }, **html_attributes) do %>
2
+ <%= tag.div(**container_html_attributes) do %>
3
3
  <div class="govuk-header__logo">
4
4
  <%= link_to(homepage_url, class: %w(govuk-header__link govuk-header__link--homepage)) do %>
5
5
  <span class="govuk-header__logotype">
@@ -36,7 +36,7 @@
36
36
  <% end %>
37
37
 
38
38
  <% if navigation_items.any? %>
39
- <%= tag.nav(class: navigation_classes, aria: { label: navigation_label }) do %>
39
+ <%= tag.nav(**navigation_html_attributes) do %>
40
40
  <%= tag.button("Menu", type: "button", class: %w(govuk-header__menu-button govuk-js-header-toggle), aria: { controls: "navigation", label: menu_button_label }) %>
41
41
  <ul id="navigation" class="govuk-header__navigation-list">
42
42
  <% navigation_items.each do |item| %>
@@ -27,8 +27,6 @@ class GovukComponent::HeaderComponent < GovukComponent::Base
27
27
  service_url: '/',
28
28
  container_classes: nil)
29
29
 
30
- super(classes: classes, html_attributes: html_attributes)
31
-
32
30
  @logotype = logotype
33
31
  @crown = crown
34
32
  @crown_fallback_image_path = crown_fallback_image_path
@@ -39,20 +37,24 @@ class GovukComponent::HeaderComponent < GovukComponent::Base
39
37
  @custom_navigation_classes = navigation_classes
40
38
  @navigation_label = navigation_label
41
39
  @custom_container_classes = container_classes
40
+
41
+ super(classes: classes, html_attributes: html_attributes)
42
42
  end
43
43
 
44
44
  private
45
45
 
46
- def default_classes
47
- %w(govuk-header)
46
+ def default_attributes
47
+ { class: %w(govuk-header) }
48
48
  end
49
49
 
50
- def navigation_classes
51
- combine_classes(%w(govuk-header__navigation), custom_navigation_classes)
50
+ def navigation_html_attributes
51
+ nc = %w(govuk-header__navigation).append(custom_navigation_classes).compact
52
+
53
+ { class: nc, aria: { label: navigation_label } }
52
54
  end
53
55
 
54
- def container_classes
55
- combine_classes(%w(govuk-header__container govuk-width-container), custom_container_classes)
56
+ def container_html_attributes
57
+ { class: %w(govuk-header__container govuk-width-container).append(custom_container_classes).compact }
56
58
  end
57
59
 
58
60
  def crown_fallback_image_attributes
@@ -67,21 +69,22 @@ private
67
69
  attr_reader :text, :href, :options, :active
68
70
 
69
71
  def initialize(text:, href: nil, options: {}, active: nil, classes: [], html_attributes: {})
70
- super(classes: classes, html_attributes: html_attributes)
71
-
72
- @text = text
73
- @href = href
74
- @options = options
75
-
72
+ @text = text
73
+ @href = href
74
+ @options = options
76
75
  @active_override = active
76
+
77
+ super(classes: classes, html_attributes: html_attributes)
77
78
  end
78
79
 
79
80
  def before_render
80
- @active = active?(@active_override)
81
+ if active?
82
+ html_attributes[:class] << active_class
83
+ end
81
84
  end
82
85
 
83
86
  def active_class
84
- %w(govuk-header__navigation-item--active) if @active
87
+ %w(govuk-header__navigation-item--active) if active?
85
88
  end
86
89
 
87
90
  def link?
@@ -89,9 +92,9 @@ private
89
92
  end
90
93
 
91
94
  def call
92
- tag.li(class: classes.append(active_class), **html_attributes) do
95
+ tag.li(**html_attributes) do
93
96
  if link?
94
- link_to(text, href, **options, class: "govuk-header__link")
97
+ link_to(text, href, class: "govuk-header__link", **options)
95
98
  else
96
99
  text
97
100
  end
@@ -100,14 +103,14 @@ private
100
103
 
101
104
  private
102
105
 
103
- def active?(active_override)
104
- return current_page?(href) if active_override.nil?
106
+ def active?
107
+ return @active_override unless @active_override.nil?
105
108
 
106
- active_override
109
+ current_page?(href)
107
110
  end
108
111
 
109
- def default_classes
110
- %w(govuk-header__navigation-item)
112
+ def default_attributes
113
+ { class: %w(govuk-header__navigation-item) }
111
114
  end
112
115
  end
113
116
 
@@ -115,9 +118,9 @@ private
115
118
  attr_reader :name
116
119
 
117
120
  def initialize(name: nil, html_attributes: {}, classes: [])
118
- super(classes: classes, html_attributes: html_attributes)
119
-
120
121
  @name = name
122
+
123
+ super(classes: classes, html_attributes: html_attributes)
121
124
  end
122
125
 
123
126
  def render?
@@ -126,16 +129,16 @@ private
126
129
 
127
130
  def call
128
131
  if content.present?
129
- tag.div(content, class: classes)
132
+ tag.div(content, **html_attributes)
130
133
  else
131
- tag.span(name, class: classes)
134
+ tag.span(name, **html_attributes)
132
135
  end
133
136
  end
134
137
 
135
138
  private
136
139
 
137
- def default_classes
138
- %w(govuk-header__product-name)
140
+ def default_attributes
141
+ { class: %w(govuk-header__product-name) }
139
142
  end
140
143
  end
141
144
  end
@@ -2,14 +2,14 @@ class GovukComponent::InsetTextComponent < GovukComponent::Base
2
2
  attr_reader :text, :id
3
3
 
4
4
  def initialize(text: nil, id: nil, classes: [], html_attributes: {})
5
- super(classes: classes, html_attributes: html_attributes)
6
-
7
5
  @text = text
8
6
  @id = id
7
+
8
+ super(classes: classes, html_attributes: html_attributes)
9
9
  end
10
10
 
11
11
  def call
12
- tag.div(class: classes, id: id, **html_attributes) { inset_text_content }
12
+ tag.div(id: id, **html_attributes) { inset_text_content }
13
13
  end
14
14
 
15
15
  def render?
@@ -22,7 +22,7 @@ private
22
22
  content.presence || text
23
23
  end
24
24
 
25
- def default_classes
26
- %w(govuk-inset-text)
25
+ def default_attributes
26
+ { class: %w(govuk-inset-text) }
27
27
  end
28
28
  end
@@ -1,4 +1,4 @@
1
- <%= tag.div(class: classes, role: role, aria: { labelledby: title_id }, data: data_params, **html_attributes) do %>
1
+ <%= tag.div(**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_content %>
@@ -5,8 +5,6 @@ class GovukComponent::NotificationBannerComponent < GovukComponent::Base
5
5
  renders_many :headings, "Heading"
6
6
 
7
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
- super(classes: classes, html_attributes: html_attributes)
9
-
10
8
  @title_text = title_text
11
9
  @title_id = title_id
12
10
  @text = text
@@ -14,6 +12,8 @@ class GovukComponent::NotificationBannerComponent < GovukComponent::Base
14
12
  @role = role || default_role
15
13
  @title_heading_level = title_heading_level
16
14
  @disable_auto_focus = disable_auto_focus
15
+
16
+ super(classes: classes, html_attributes: html_attributes)
17
17
  end
18
18
 
19
19
  def render?
@@ -24,15 +24,15 @@ class GovukComponent::NotificationBannerComponent < GovukComponent::Base
24
24
  attr_reader :text, :link_href, :link_text
25
25
 
26
26
  def initialize(text: nil, link_text: nil, link_href: nil, classes: [], html_attributes: {})
27
- super(classes: classes, html_attributes: html_attributes)
28
-
29
27
  @text = text
30
28
  @link_text = link_text
31
29
  @link_href = link_href
30
+
31
+ super(classes: classes, html_attributes: html_attributes)
32
32
  end
33
33
 
34
34
  def call
35
- tag.div(class: classes, **html_attributes) do
35
+ tag.div(**html_attributes) do
36
36
  if text.present?
37
37
  safe_join([text, link].compact, " ")
38
38
  else
@@ -45,27 +45,26 @@ class GovukComponent::NotificationBannerComponent < GovukComponent::Base
45
45
  link_to(link_text, link_href, class: 'govuk-notification-banner__link') if link_text.present? && link_href.present?
46
46
  end
47
47
 
48
- def default_classes
49
- %w(govuk-notification-banner__heading)
48
+ def default_attributes
49
+ { class: %w(govuk-notification-banner__heading) }
50
50
  end
51
51
  end
52
52
 
53
53
  private
54
54
 
55
- def default_classes
56
- %w(govuk-notification-banner)
57
- end
58
-
59
- def data_params
60
- { "module" => "govuk-notification-banner", "disable-auto-focus" => disable_auto_focus }.compact
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
55
+ def default_attributes
56
+ {
57
+ class: class_names(
58
+ "govuk-notification-banner",
59
+ "govuk-notification-banner--success" => success
60
+ ),
61
+ data: {
62
+ "module" => "govuk-notification-banner",
63
+ "disable-auto-focus" => disable_auto_focus
64
+ },
65
+ role: role,
66
+ aria: { labelledby: title_id },
67
+ }
69
68
  end
70
69
 
71
70
  def title_content
@@ -4,24 +4,24 @@ class GovukComponent::PanelComponent < GovukComponent::Base
4
4
  renders_one :title_html
5
5
 
6
6
  def initialize(title_text: nil, text: nil, heading_level: 1, id: nil, classes: [], html_attributes: {})
7
- super(classes: classes, html_attributes: html_attributes)
8
-
9
7
  @heading_level = heading_level
10
8
  @title_text = title_text
11
9
  @text = text
12
10
  @id = id
11
+
12
+ super(classes: classes, html_attributes: html_attributes)
13
13
  end
14
14
 
15
15
  def call
16
- tag.div(id: id, class: classes, **html_attributes) do
16
+ tag.div(id: id, **html_attributes) do
17
17
  safe_join([panel_title, panel_body].compact)
18
18
  end
19
19
  end
20
20
 
21
21
  private
22
22
 
23
- def default_classes
24
- %w(govuk-panel govuk-panel--confirmation)
23
+ def default_attributes
24
+ { class: %w(govuk-panel govuk-panel--confirmation) }
25
25
  end
26
26
 
27
27
  def heading_tag
@@ -1,4 +1,4 @@
1
- <%= tag.div(class: classes, **html_attributes) do %>
1
+ <%= tag.div(**html_attributes) do %>
2
2
  <p class="govuk-phase-banner__content">
3
3
  <%= render(phase_tag_component) %>
4
4
  <%= tag.span((content.presence || @text), class: "govuk-phase-banner__text") %>