crown_marketplace_utils 0.1.0.beta.6 → 0.1.0.beta.7

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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/accordion.rb +91 -89
  4. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/back_link.rb +24 -22
  5. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/breadcrumbs.rb +56 -54
  6. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/button.rb +109 -107
  7. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/details.rb +33 -31
  8. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/error_message.rb +49 -47
  9. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/character_count.rb +144 -142
  10. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/checkboxes.rb +176 -174
  11. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/date_input.rb +126 -124
  12. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/file_upload.rb +75 -73
  13. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/input.rb +137 -135
  14. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/radios.rb +176 -174
  15. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/select.rb +111 -109
  16. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field/textarea.rb +86 -84
  17. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/field.rb +181 -179
  18. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/fieldset.rb +56 -54
  19. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/form_group.rb +37 -35
  20. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/header.rb +142 -140
  21. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/hint.rb +25 -23
  22. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/label.rb +69 -67
  23. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/notification_banner.rb +121 -119
  24. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/pagination.rb +290 -288
  25. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/step_by_step_navigation.rb +187 -185
  26. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/tag.rb +29 -27
  27. data/lib/crown_marketplace_utils/helpers/gov_uk_helper/warning_text.rb +39 -37
  28. data/lib/crown_marketplace_utils/helpers/gov_uk_helper.rb +31 -29
  29. data/lib/crown_marketplace_utils/version.rb +1 -1
  30. metadata +1 -1
@@ -2,71 +2,73 @@
2
2
 
3
3
  require 'action_view'
4
4
 
5
- module CrownMarketplaceUtils::Helpers
6
- module GovUkHelper
7
- # = GOV.UK Fieldset
8
- #
9
- # This helper is used for generating the fieldset component from the
10
- # {https://design-system.service.gov.uk/components/fieldset GDS - Components - Fieldset}
5
+ module CrownMarketplaceUtils
6
+ module Helpers
7
+ module GovUkHelper
8
+ # = GOV.UK Fieldset
9
+ #
10
+ # This helper is used for generating the fieldset component from the
11
+ # {https://design-system.service.gov.uk/components/fieldset GDS - Components - Fieldset}
11
12
 
12
- module Fieldset
13
- include ActionView::Context
14
- include ActionView::Helpers::TagHelper
15
- include ActionView::Helpers::TextHelper
13
+ module Fieldset
14
+ include ActionView::Context
15
+ include ActionView::Helpers::TagHelper
16
+ include ActionView::Helpers::TextHelper
16
17
 
17
- # Generates the HTML for the GOV.UK Fieldset component
18
- #
19
- # @param govuk_fieldset_options [Hash] options that will be used in customising the HTML
20
- #
21
- # @option govuk_fieldset_options [String] :classes additional CSS classes for the fieldset HTML
22
- # @option govuk_fieldset_options [Hash] :legend options for the legend which are used in {#govuk_legend}
23
- # @option govuk_fieldset_options [Hash] :attributes ({}) any additional attributes that will added as part of the HTML
24
- #
25
- # @yield HTML that will be contained within the 'govuk-fieldset' div and under the legend
26
- #
27
- # @return [ActiveSupport::SafeBuffer] the HTML for the GOV.UK Fieldset
28
- # which can then be rendered on the page
18
+ # Generates the HTML for the GOV.UK Fieldset component
19
+ #
20
+ # @param govuk_fieldset_options [Hash] options that will be used in customising the HTML
21
+ #
22
+ # @option govuk_fieldset_options [String] :classes additional CSS classes for the fieldset HTML
23
+ # @option govuk_fieldset_options [Hash] :legend options for the legend which are used in {#govuk_legend}
24
+ # @option govuk_fieldset_options [Hash] :attributes ({}) any additional attributes that will added as part of the HTML
25
+ #
26
+ # @yield HTML that will be contained within the 'govuk-fieldset' div and under the legend
27
+ #
28
+ # @return [ActiveSupport::SafeBuffer] the HTML for the GOV.UK Fieldset
29
+ # which can then be rendered on the page
29
30
 
30
- def govuk_fieldset(**govuk_fieldset_options)
31
- govuk_fieldset_classes = ['govuk-fieldset']
32
- govuk_fieldset_classes << govuk_fieldset_options[:classes]
33
- govuk_fieldset_options[:attributes] ||= {}
31
+ def govuk_fieldset(**govuk_fieldset_options)
32
+ govuk_fieldset_classes = ['govuk-fieldset']
33
+ govuk_fieldset_classes << govuk_fieldset_options[:classes]
34
+ govuk_fieldset_options[:attributes] ||= {}
34
35
 
35
- tag.fieldset(class: govuk_fieldset_classes, **govuk_fieldset_options[:attributes]) do
36
- capture do
37
- concat(govuk_legend(govuk_fieldset_options[:legend])) if govuk_fieldset_options[:legend]
38
- yield
36
+ tag.fieldset(class: govuk_fieldset_classes, **govuk_fieldset_options[:attributes]) do
37
+ capture do
38
+ concat(govuk_legend(govuk_fieldset_options[:legend])) if govuk_fieldset_options[:legend]
39
+ yield
40
+ end
39
41
  end
40
42
  end
41
- end
42
43
 
43
- private
44
+ private
44
45
 
45
- # Generates the HTML for the Legend as part of {#govuk_fieldset}
46
- #
47
- # @param govuk_legend_options [Hash] options that will be used in the legend
48
- #
49
- # @option govuk_legend_options [String] :classes additional CSS classes for the legend HTML
50
- # @option govuk_legend_options [String] :text the text for the legend
51
- # @option govuk_legend_options [boolean] :is_page_heading (false) if the legend is also the heading it will rendered in a h1
52
- # @option govuk_legend_options [Hash] :caption an optional hash with the +text+ and +classes+ that will be used
53
- # to render a caption before the h1 if the legend is a page heading
54
- #
55
- # @return [ActiveSupport::SafeBuffer] the HTML for the GOV.UK Fieldset
56
- # which can then be rendered on the page
46
+ # Generates the HTML for the Legend as part of {#govuk_fieldset}
47
+ #
48
+ # @param govuk_legend_options [Hash] options that will be used in the legend
49
+ #
50
+ # @option govuk_legend_options [String] :classes additional CSS classes for the legend HTML
51
+ # @option govuk_legend_options [String] :text the text for the legend
52
+ # @option govuk_legend_options [boolean] :is_page_heading (false) if the legend is also the heading it will rendered in a h1
53
+ # @option govuk_legend_options [Hash] :caption an optional hash with the +text+ and +classes+ that will be used
54
+ # to render a caption before the h1 if the legend is a page heading
55
+ #
56
+ # @return [ActiveSupport::SafeBuffer] the HTML for the GOV.UK Fieldset
57
+ # which can then be rendered on the page
57
58
 
58
- def govuk_legend(govuk_legend_options)
59
- govuk_legend_classes = ['govuk-fieldset__legend']
60
- govuk_legend_classes << govuk_legend_options[:classes]
59
+ def govuk_legend(govuk_legend_options)
60
+ govuk_legend_classes = ['govuk-fieldset__legend']
61
+ govuk_legend_classes << govuk_legend_options[:classes]
61
62
 
62
- tag.legend(class: govuk_legend_classes) do
63
- if govuk_legend_options[:is_page_heading]
64
- capture do
65
- concat(tag.span(govuk_legend_options[:caption][:text], class: govuk_legend_options[:caption][:classes])) if govuk_legend_options[:caption]
66
- concat(tag.h1(govuk_legend_options[:text], class: 'govuk-fieldset__heading'))
63
+ tag.legend(class: govuk_legend_classes) do
64
+ if govuk_legend_options[:is_page_heading]
65
+ capture do
66
+ concat(tag.span(govuk_legend_options[:caption][:text], class: govuk_legend_options[:caption][:classes])) if govuk_legend_options[:caption]
67
+ concat(tag.h1(govuk_legend_options[:text], class: 'govuk-fieldset__heading'))
68
+ end
69
+ else
70
+ govuk_legend_options[:text]
67
71
  end
68
- else
69
- govuk_legend_options[:text]
70
72
  end
71
73
  end
72
74
  end
@@ -2,46 +2,48 @@
2
2
 
3
3
  require_relative 'error_message'
4
4
 
5
- module CrownMarketplaceUtils::Helpers
6
- module GovUkHelper
7
- # = GOV.UK FormGroup
8
- #
9
- # This helper is used for generating the form group component from the Government Design Systems
5
+ module CrownMarketplaceUtils
6
+ module Helpers
7
+ module GovUkHelper
8
+ # = GOV.UK FormGroup
9
+ #
10
+ # This helper is used for generating the form group component from the Government Design Systems
10
11
 
11
- module FormGroup
12
- include ErrorMessage
12
+ module FormGroup
13
+ include ErrorMessage
13
14
 
14
- # Generates the HTML for the GOV.UK Form Group component
15
- #
16
- # @param attribute [String, Symbol] the attribute that the form group is for
17
- # @param govuk_form_group_options [Hash] options that will be used in customising the HTML
18
- #
19
- # @option govuk_form_group_options [String] :classes additional CSS classes for the form group HTML
20
- # @option govuk_form_group_options [String] :error_message (nil) the error message to be displayed
21
- # @option govuk_form_group_options [ActiveModel] :model (nil) model that will be used to find an error message
22
- # @option govuk_form_group_options [Hash] :attributes ({}) any additional attributes that will added as part of the HTML
23
- #
24
- # @yield HTML that will be contained within the 'govuk-form-group' div
25
- #
26
- # @yieldparam displayed_error_message [ActiveSupport::SafeBuffer] the HTML for the error message (if there is one)
27
- #
28
- # @return [ActiveSupport::SafeBuffer] the HTML for the GOV.UK Form Group
29
- # which can then be rendered on the page
15
+ # Generates the HTML for the GOV.UK Form Group component
16
+ #
17
+ # @param attribute [String, Symbol] the attribute that the form group is for
18
+ # @param govuk_form_group_options [Hash] options that will be used in customising the HTML
19
+ #
20
+ # @option govuk_form_group_options [String] :classes additional CSS classes for the form group HTML
21
+ # @option govuk_form_group_options [String] :error_message (nil) the error message to be displayed
22
+ # @option govuk_form_group_options [ActiveModel] :model (nil) model that will be used to find an error message
23
+ # @option govuk_form_group_options [Hash] :attributes ({}) any additional attributes that will added as part of the HTML
24
+ #
25
+ # @yield HTML that will be contained within the 'govuk-form-group' div
26
+ #
27
+ # @yieldparam displayed_error_message [ActiveSupport::SafeBuffer] the HTML for the error message (if there is one)
28
+ #
29
+ # @return [ActiveSupport::SafeBuffer] the HTML for the GOV.UK Form Group
30
+ # which can then be rendered on the page
30
31
 
31
- def govuk_form_group(attribute, **govuk_form_group_options)
32
- error_message = if govuk_form_group_options[:model]
33
- model.errors[attribute].first
34
- else
35
- govuk_form_group_options[:error_message]
36
- end
32
+ def govuk_form_group(attribute, **govuk_form_group_options)
33
+ error_message = if govuk_form_group_options[:model]
34
+ model.errors[attribute].first
35
+ else
36
+ govuk_form_group_options[:error_message]
37
+ end
37
38
 
38
- govuk_form_group_classes = ['govuk-form-group']
39
- govuk_form_group_classes += ['govuk-form-group--error'] if error_message
40
- govuk_form_group_classes << govuk_form_group_options[:classes]
41
- govuk_form_group_options[:attributes] ||= {}
39
+ govuk_form_group_classes = ['govuk-form-group']
40
+ govuk_form_group_classes += ['govuk-form-group--error'] if error_message
41
+ govuk_form_group_classes << govuk_form_group_options[:classes]
42
+ govuk_form_group_options[:attributes] ||= {}
42
43
 
43
- tag.div(class: govuk_form_group_classes, id: "#{attribute}-form-group", **govuk_form_group_options[:attributes]) do
44
- yield((govuk_error_message(error_message, attribute) if error_message))
44
+ tag.div(class: govuk_form_group_classes, id: "#{attribute}-form-group", **govuk_form_group_options[:attributes]) do
45
+ yield((govuk_error_message(error_message, attribute) if error_message))
46
+ end
45
47
  end
46
48
  end
47
49
  end
@@ -2,168 +2,170 @@
2
2
 
3
3
  require 'action_view'
4
4
 
5
- module CrownMarketplaceUtils::Helpers
6
- module GovUkHelper
7
- # = GOV.UK Header
8
- #
9
- # This helper is used for generating the header component from the
10
- # {https://design-system.service.gov.uk/components/header GDS - Components - Header}
11
-
12
- module Header
13
- include ActionView::Context
14
- include ActionView::Helpers::FormTagHelper
15
- include ActionView::Helpers::TagHelper
16
- include ActionView::Helpers::TextHelper
17
- include ActionView::Helpers::UrlHelper
18
-
19
- # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
20
-
21
- # Generates the HTML for the GOV.UK Header component
5
+ module CrownMarketplaceUtils
6
+ module Helpers
7
+ module GovUkHelper
8
+ # = GOV.UK Header
22
9
  #
23
- # @param govuk_header_options [Hash] options that will be used in customising the HTML
24
- #
25
- # @option govuk_header_options [String] :classes additional CSS classes for the header HTML
26
- # @option govuk_header_options [Hash] :container_options (see: {govuk_header_container})
27
- # @option govuk_header_options [Hash] :service_options (see: {govuk_header_service_name})
28
- # @option govuk_header_options [Hash] :navigation_options (see: {govuk_header_navigation})
29
- # @option govuk_header_options [Hash] :attributes ({data: { module: 'govuk-header' }})
30
- # any additional attributes that will added as part of the HTML
31
- #
32
- # @return [ActiveSupport::SafeBuffer] the HTML for the GOV.UK Header
33
- # which can then be rendered on the page
34
-
35
- def govuk_header(**govuk_header_options)
36
- govuk_header_classes = ['govuk-header']
37
- govuk_header_classes << govuk_header_options[:classes]
38
- govuk_header_options[:attributes] ||= {}
39
- (govuk_header_options[:attributes][:data] ||= {}).merge!({ module: 'govuk-header' })
40
-
41
- tag.header(class: govuk_header_classes, role: 'banner', **govuk_header_options[:attributes]) do
42
- capture do
43
- concat(govuk_header_container(govuk_header_options[:container_options] || {}))
44
- if govuk_header_options[:service_options].present? || govuk_header_options[:navigation_options].present?
45
- concat(tag.div(class: 'govuk-header__content') do
46
- capture do
47
- concat(govuk_header_service_name(govuk_header_options[:service_options])) if govuk_header_options[:service_options].present?
48
- concat(govuk_header_navigation(govuk_header_options[:navigation_options])) if govuk_header_options[:navigation_options].present?
49
- end
50
- end)
10
+ # This helper is used for generating the header component from the
11
+ # {https://design-system.service.gov.uk/components/header GDS - Components - Header}
12
+
13
+ module Header
14
+ include ActionView::Context
15
+ include ActionView::Helpers::FormTagHelper
16
+ include ActionView::Helpers::TagHelper
17
+ include ActionView::Helpers::TextHelper
18
+ include ActionView::Helpers::UrlHelper
19
+
20
+ # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity
21
+
22
+ # Generates the HTML for the GOV.UK Header component
23
+ #
24
+ # @param govuk_header_options [Hash] options that will be used in customising the HTML
25
+ #
26
+ # @option govuk_header_options [String] :classes additional CSS classes for the header HTML
27
+ # @option govuk_header_options [Hash] :container_options (see: {govuk_header_container})
28
+ # @option govuk_header_options [Hash] :service_options (see: {govuk_header_service_name})
29
+ # @option govuk_header_options [Hash] :navigation_options (see: {govuk_header_navigation})
30
+ # @option govuk_header_options [Hash] :attributes ({data: { module: 'govuk-header' }})
31
+ # any additional attributes that will added as part of the HTML
32
+ #
33
+ # @return [ActiveSupport::SafeBuffer] the HTML for the GOV.UK Header
34
+ # which can then be rendered on the page
35
+
36
+ def govuk_header(**govuk_header_options)
37
+ govuk_header_classes = ['govuk-header']
38
+ govuk_header_classes << govuk_header_options[:classes]
39
+ govuk_header_options[:attributes] ||= {}
40
+ (govuk_header_options[:attributes][:data] ||= {}).merge!({ module: 'govuk-header' })
41
+
42
+ tag.header(class: govuk_header_classes, role: 'banner', **govuk_header_options[:attributes]) do
43
+ capture do
44
+ concat(govuk_header_container(govuk_header_options[:container_options] || {}))
45
+ if govuk_header_options[:service_options].present? || govuk_header_options[:navigation_options].present?
46
+ concat(tag.div(class: 'govuk-header__content') do
47
+ capture do
48
+ concat(govuk_header_service_name(govuk_header_options[:service_options])) if govuk_header_options[:service_options].present?
49
+ concat(govuk_header_navigation(govuk_header_options[:navigation_options])) if govuk_header_options[:navigation_options].present?
50
+ end
51
+ end)
52
+ end
51
53
  end
52
54
  end
53
55
  end
54
- end
55
56
 
56
- # rubocop:enable Metrics/CyclomaticComplexity
57
+ # rubocop:enable Metrics/CyclomaticComplexity
57
58
 
58
- private
59
+ private
59
60
 
60
- # Generates the header container with the logo for {govuk_header}
61
- #
62
- # @param container_options [Hash] options that will be used in customising the HTML
63
- #
64
- # @option container_options [String] :classes additional CSS classes for the container HTML
65
- # @option container_options [String] :home_url the URL of the homepage. Defaults to +/+
66
- # @option container_options [String] :product_name used when the product name follows on directly from ‘GOV.UK’
67
- # @option container_options [Hash] :attributes ({}) any additional attributes that will added as part of the HTML
68
- #
69
- # @return [ActiveSupport::SafeBuffer] the HTML for the header container which is used in {govuk_header}
61
+ # Generates the header container with the logo for {govuk_header}
62
+ #
63
+ # @param container_options [Hash] options that will be used in customising the HTML
64
+ #
65
+ # @option container_options [String] :classes additional CSS classes for the container HTML
66
+ # @option container_options [String] :home_url the URL of the homepage. Defaults to +/+
67
+ # @option container_options [String] :product_name used when the product name follows on directly from ‘GOV.UK’
68
+ # @option container_options [Hash] :attributes ({}) any additional attributes that will added as part of the HTML
69
+ #
70
+ # @return [ActiveSupport::SafeBuffer] the HTML for the header container which is used in {govuk_header}
70
71
 
71
- def govuk_header_container(container_options)
72
- govuk_header_classes = ['govuk-header__container']
73
- govuk_header_classes << (container_options[:classes] || 'govuk-width-container')
72
+ def govuk_header_container(container_options)
73
+ govuk_header_classes = ['govuk-header__container']
74
+ govuk_header_classes << (container_options[:classes] || 'govuk-width-container')
74
75
 
75
- tag.div(class: govuk_header_classes) do
76
- tag.div(class: 'govuk-header__logo') do
77
- link_to(container_options[:home_url] || '/', class: 'govuk-header__link govuk-header__link--homepage') do
78
- capture do
79
- concat(tag.span(class: 'govuk-header__logotype') do
80
- capture do
81
- concat(tag.svg(class: 'govuk-header__logotype-crown', xmlns: 'http://www.w3.org/2000/svg', height: '30', width: '36', aria: { hidden: 'true' }, focusable: 'false', viewBox: '0 0 132 97') do
82
- tag.path(fill: 'currentColor', 'fill-rule': 'evenodd', d: 'M25 30.2c3.5 1.5 7.7-.2 9.1-3.7 1.5-3.6-.2-7.8-3.9-9.2-3.6-1.4-7.6.3-9.1 3.9-1.4 3.5.3 7.5 3.9 9zM9 39.5c3.6 1.5 7.8-.2 9.2-3.7 1.5-3.6-.2-7.8-3.9-9.1-3.6-1.5-7.6.2-9.1 3.8-1.4 3.5.3 7.5 3.8 9zM4.4 57.2c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.5-1.5-7.6.3-9.1 3.8-1.4 3.5.3 7.6 3.9 9.1zm38.3-21.4c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.6-1.5-7.6.3-9.1 3.8-1.3 3.6.4 7.7 3.9 9.1zm64.4-5.6c-3.6 1.5-7.8-.2-9.1-3.7-1.5-3.6.2-7.8 3.8-9.2 3.6-1.4 7.7.3 9.2 3.9 1.3 3.5-.4 7.5-3.9 9zm15.9 9.3c-3.6 1.5-7.7-.2-9.1-3.7-1.5-3.6.2-7.8 3.7-9.1 3.6-1.5 7.7.2 9.2 3.8 1.5 3.5-.3 7.5-3.8 9zm4.7 17.7c-3.6 1.5-7.8-.2-9.2-3.8-1.5-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.3 3.5-.4 7.6-3.9 9.1zM89.3 35.8c-3.6 1.5-7.8-.2-9.2-3.8-1.4-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.4 3.6-.3 7.7-3.9 9.1zM69.7 17.7l8.9 4.7V9.3l-8.9 2.8c-.2-.3-.5-.6-.9-.9L72.4 0H59.6l3.5 11.2c-.3.3-.6.5-.9.9l-8.8-2.8v13.1l8.8-4.7c.3.3.6.7.9.9l-5 15.4v.1c-.2.8-.4 1.6-.4 2.4 0 4.1 3.1 7.5 7 8.1h.2c.3 0 .7.1 1 .1.4 0 .7 0 1-.1h.2c4-.6 7.1-4.1 7.1-8.1 0-.8-.1-1.7-.4-2.4V34l-5.1-15.4c.4-.2.7-.6 1-.9zM66 92.8c16.9 0 32.8 1.1 47.1 3.2 4-16.9 8.9-26.7 14-33.5l-9.6-3.4c1 4.9 1.1 7.2 0 10.2-1.5-1.4-3-4.3-4.2-8.7L108.6 76c2.8-2 5-3.2 7.5-3.3-4.4 9.4-10 11.9-13.6 11.2-4.3-.8-6.3-4.6-5.6-7.9 1-4.7 5.7-5.9 8-.5 4.3-8.7-3-11.4-7.6-8.8 7.1-7.2 7.9-13.5 2.1-21.1-8 6.1-8.1 12.3-4.5 20.8-4.7-5.4-12.1-2.5-9.5 6.2 3.4-5.2 7.9-2 7.2 3.1-.6 4.3-6.4 7.8-13.5 7.2-10.3-.9-10.9-8-11.2-13.8 2.5-.5 7.1 1.8 11 7.3L80.2 60c-4.1 4.4-8 5.3-12.3 5.4 1.4-4.4 8-11.6 8-11.6H55.5s6.4 7.2 7.9 11.6c-4.2-.1-8-1-12.3-5.4l1.4 16.4c3.9-5.5 8.5-7.7 10.9-7.3-.3 5.8-.9 12.8-11.1 13.8-7.2.6-12.9-2.9-13.5-7.2-.7-5 3.8-8.3 7.1-3.1 2.7-8.7-4.6-11.6-9.4-6.2 3.7-8.5 3.6-14.7-4.6-20.8-5.8 7.6-5 13.9 2.2 21.1-4.7-2.6-11.9.1-7.7 8.8 2.3-5.5 7.1-4.2 8.1.5.7 3.3-1.3 7.1-5.7 7.9-3.5.7-9-1.8-13.5-11.2 2.5.1 4.7 1.3 7.5 3.3l-4.7-15.4c-1.2 4.4-2.7 7.2-4.3 8.7-1.1-3-.9-5.3 0-10.2l-9.5 3.4c5 6.9 9.9 16.7 14 33.5 14.8-2.1 30.8-3.2 47.7-3.2z')
83
- end)
84
- concat(tag.span('GOV.UK', class: 'govuk-header__logotype-text'))
85
- end
86
- end)
87
- concat(tag.span(container_options[:product_name], class: 'govuk-header__product-name')) if container_options[:product_name]
76
+ tag.div(class: govuk_header_classes) do
77
+ tag.div(class: 'govuk-header__logo') do
78
+ link_to(container_options[:home_url] || '/', class: 'govuk-header__link govuk-header__link--homepage') do
79
+ capture do
80
+ concat(tag.span(class: 'govuk-header__logotype') do
81
+ capture do
82
+ concat(tag.svg(class: 'govuk-header__logotype-crown', xmlns: 'http://www.w3.org/2000/svg', height: '30', width: '36', aria: { hidden: 'true' }, focusable: 'false', viewBox: '0 0 132 97') do
83
+ tag.path(fill: 'currentColor', 'fill-rule': 'evenodd', d: 'M25 30.2c3.5 1.5 7.7-.2 9.1-3.7 1.5-3.6-.2-7.8-3.9-9.2-3.6-1.4-7.6.3-9.1 3.9-1.4 3.5.3 7.5 3.9 9zM9 39.5c3.6 1.5 7.8-.2 9.2-3.7 1.5-3.6-.2-7.8-3.9-9.1-3.6-1.5-7.6.2-9.1 3.8-1.4 3.5.3 7.5 3.8 9zM4.4 57.2c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.5-1.5-7.6.3-9.1 3.8-1.4 3.5.3 7.6 3.9 9.1zm38.3-21.4c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.6-1.5-7.6.3-9.1 3.8-1.3 3.6.4 7.7 3.9 9.1zm64.4-5.6c-3.6 1.5-7.8-.2-9.1-3.7-1.5-3.6.2-7.8 3.8-9.2 3.6-1.4 7.7.3 9.2 3.9 1.3 3.5-.4 7.5-3.9 9zm15.9 9.3c-3.6 1.5-7.7-.2-9.1-3.7-1.5-3.6.2-7.8 3.7-9.1 3.6-1.5 7.7.2 9.2 3.8 1.5 3.5-.3 7.5-3.8 9zm4.7 17.7c-3.6 1.5-7.8-.2-9.2-3.8-1.5-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.3 3.5-.4 7.6-3.9 9.1zM89.3 35.8c-3.6 1.5-7.8-.2-9.2-3.8-1.4-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.4 3.6-.3 7.7-3.9 9.1zM69.7 17.7l8.9 4.7V9.3l-8.9 2.8c-.2-.3-.5-.6-.9-.9L72.4 0H59.6l3.5 11.2c-.3.3-.6.5-.9.9l-8.8-2.8v13.1l8.8-4.7c.3.3.6.7.9.9l-5 15.4v.1c-.2.8-.4 1.6-.4 2.4 0 4.1 3.1 7.5 7 8.1h.2c.3 0 .7.1 1 .1.4 0 .7 0 1-.1h.2c4-.6 7.1-4.1 7.1-8.1 0-.8-.1-1.7-.4-2.4V34l-5.1-15.4c.4-.2.7-.6 1-.9zM66 92.8c16.9 0 32.8 1.1 47.1 3.2 4-16.9 8.9-26.7 14-33.5l-9.6-3.4c1 4.9 1.1 7.2 0 10.2-1.5-1.4-3-4.3-4.2-8.7L108.6 76c2.8-2 5-3.2 7.5-3.3-4.4 9.4-10 11.9-13.6 11.2-4.3-.8-6.3-4.6-5.6-7.9 1-4.7 5.7-5.9 8-.5 4.3-8.7-3-11.4-7.6-8.8 7.1-7.2 7.9-13.5 2.1-21.1-8 6.1-8.1 12.3-4.5 20.8-4.7-5.4-12.1-2.5-9.5 6.2 3.4-5.2 7.9-2 7.2 3.1-.6 4.3-6.4 7.8-13.5 7.2-10.3-.9-10.9-8-11.2-13.8 2.5-.5 7.1 1.8 11 7.3L80.2 60c-4.1 4.4-8 5.3-12.3 5.4 1.4-4.4 8-11.6 8-11.6H55.5s6.4 7.2 7.9 11.6c-4.2-.1-8-1-12.3-5.4l1.4 16.4c3.9-5.5 8.5-7.7 10.9-7.3-.3 5.8-.9 12.8-11.1 13.8-7.2.6-12.9-2.9-13.5-7.2-.7-5 3.8-8.3 7.1-3.1 2.7-8.7-4.6-11.6-9.4-6.2 3.7-8.5 3.6-14.7-4.6-20.8-5.8 7.6-5 13.9 2.2 21.1-4.7-2.6-11.9.1-7.7 8.8 2.3-5.5 7.1-4.2 8.1.5.7 3.3-1.3 7.1-5.7 7.9-3.5.7-9-1.8-13.5-11.2 2.5.1 4.7 1.3 7.5 3.3l-4.7-15.4c-1.2 4.4-2.7 7.2-4.3 8.7-1.1-3-.9-5.3 0-10.2l-9.5 3.4c5 6.9 9.9 16.7 14 33.5 14.8-2.1 30.8-3.2 47.7-3.2z')
84
+ end)
85
+ concat(tag.span('GOV.UK', class: 'govuk-header__logotype-text'))
86
+ end
87
+ end)
88
+ concat(tag.span(container_options[:product_name], class: 'govuk-header__product-name')) if container_options[:product_name]
89
+ end
88
90
  end
89
91
  end
90
92
  end
91
93
  end
92
- end
93
94
 
94
- # rubocop:enable Metrics/AbcSize
95
+ # rubocop:enable Metrics/AbcSize
95
96
 
96
- # Generates the service name for {govuk_header}
97
- #
98
- # @param service_options [Hash] options that will be used in customising the HTML
99
- #
100
- # @option service_options [String] :service_name the name of your service, included in the header
101
- # @option service_options [String] :service_url URL for the service name anchor
102
- #
103
- # @return [ActiveSupport::SafeBuffer] the HTML for the service name which is used in {govuk_header}
97
+ # Generates the service name for {govuk_header}
98
+ #
99
+ # @param service_options [Hash] options that will be used in customising the HTML
100
+ #
101
+ # @option service_options [String] :service_name the name of your service, included in the header
102
+ # @option service_options [String] :service_url URL for the service name anchor
103
+ #
104
+ # @return [ActiveSupport::SafeBuffer] the HTML for the service name which is used in {govuk_header}
104
105
 
105
- def govuk_header_service_name(service_options)
106
- if service_options[:service_url]
107
- link_to(service_options[:service_name], service_options[:service_url], class: 'govuk-header__link govuk-header__service-name')
108
- else
109
- tag.span(service_options[:service_name], class: 'govuk-header__service-name')
106
+ def govuk_header_service_name(service_options)
107
+ if service_options[:service_url]
108
+ link_to(service_options[:service_name], service_options[:service_url], class: 'govuk-header__link govuk-header__service-name')
109
+ else
110
+ tag.span(service_options[:service_name], class: 'govuk-header__service-name')
111
+ end
110
112
  end
111
- end
112
113
 
113
- # Generates the navigation section for {govuk_header}
114
- #
115
- # @param navigation_options [Hash] options that will be used in customising the HTML
116
- #
117
- # @option navigation_options [String] :classes additional CSS classes for the navigation HTML
118
- # @option navigation_options [String] :menu_button_text text of the button that opens the mobile navigation menu.
119
- # By default, this is set to +'Menu'+.
120
- # @option navigation_options [String] :menu_button_label text for the aria-label attribute of the button that opens the mobile navigation.
121
- # Defaults to +'Show or hide menu'+.
122
- # @option navigation_options [Array] :items the navigation items that will be rendered on the page (see {govuk_header_navigation_item})
123
- #
124
- # @return [ActiveSupport::SafeBuffer] the HTML for the navigation section which is used in {govuk_header}
125
-
126
- def govuk_header_navigation(navigation_options)
127
- menu_button_text = navigation_options[:menu_button_text] || 'Menu'
128
- menu_button_label = navigation_options[:menu_button_label] || 'Show or hide menu'
129
-
130
- govuk_header_navigation_classes = ['govuk-header__navigation']
131
- govuk_header_navigation_classes << navigation_options[:classes]
132
-
133
- tag.nav(class: govuk_header_navigation_classes, aria: { label: menu_button_text }) do
134
- capture do
135
- concat(button_tag(menu_button_text, class: 'govuk-header__menu-button govuk-js-header-toggle', type: 'button', hidden: true, aria: { controls: 'navigation', label: menu_button_label, }))
136
- concat(tag.ul(id: 'navigation', class: 'govuk-header__navigation-list') do
137
- capture do
138
- navigation_options[:items].each do |navigation_item|
139
- concat(govuk_header_navigation_item(navigation_item))
114
+ # Generates the navigation section for {govuk_header}
115
+ #
116
+ # @param navigation_options [Hash] options that will be used in customising the HTML
117
+ #
118
+ # @option navigation_options [String] :classes additional CSS classes for the navigation HTML
119
+ # @option navigation_options [String] :menu_button_text text of the button that opens the mobile navigation menu.
120
+ # By default, this is set to +'Menu'+.
121
+ # @option navigation_options [String] :menu_button_label text for the aria-label attribute of the button that opens the mobile navigation.
122
+ # Defaults to +'Show or hide menu'+.
123
+ # @option navigation_options [Array] :items the navigation items that will be rendered on the page (see {govuk_header_navigation_item})
124
+ #
125
+ # @return [ActiveSupport::SafeBuffer] the HTML for the navigation section which is used in {govuk_header}
126
+
127
+ def govuk_header_navigation(navigation_options)
128
+ menu_button_text = navigation_options[:menu_button_text] || 'Menu'
129
+ menu_button_label = navigation_options[:menu_button_label] || 'Show or hide menu'
130
+
131
+ govuk_header_navigation_classes = ['govuk-header__navigation']
132
+ govuk_header_navigation_classes << navigation_options[:classes]
133
+
134
+ tag.nav(class: govuk_header_navigation_classes, aria: { label: menu_button_text }) do
135
+ capture do
136
+ concat(button_tag(menu_button_text, class: 'govuk-header__menu-button govuk-js-header-toggle', type: 'button', hidden: true, aria: { controls: 'navigation', label: menu_button_label, }))
137
+ concat(tag.ul(id: 'navigation', class: 'govuk-header__navigation-list') do
138
+ capture do
139
+ navigation_options[:items].each do |navigation_item|
140
+ concat(govuk_header_navigation_item(navigation_item))
141
+ end
140
142
  end
141
- end
142
- end)
143
+ end)
144
+ end
143
145
  end
144
146
  end
145
- end
146
-
147
- # Generates a navigation item for {govuk_header_navigation}
148
- #
149
- # @param navigation_item [Hash] options that will be used in customising the HTML
150
- #
151
- # @option navigation_item [Boolean] :active flag to mark the navigation item as active or not
152
- # @option navigation_item [String] :text text for the navigation item
153
- # @option navigation_item [String] :href URL of the navigation item anchor
154
- # @option navigation_item [Hash] :attributes ({}) any additional attributes that will added as part of the HTML
155
- #
156
- # @return [ActiveSupport::SafeBuffer] the HTML for a navigation item which is used in {govuk_header_navigation}
157
-
158
- def govuk_header_navigation_item(navigation_item)
159
- govuk_header_navigation_item_classes = ['govuk-header__navigation-item']
160
- govuk_header_navigation_item_classes << 'govuk-header__navigation-item--active' if navigation_item[:active]
161
147
 
162
- tag.li(class: govuk_header_navigation_item_classes) do
163
- if navigation_item[:href]
164
- link_to(navigation_item[:text], navigation_item[:href], class: 'govuk-header__link', **(navigation_item[:attributes] || {}))
165
- else
166
- concat(navigation_item[:text])
148
+ # Generates a navigation item for {govuk_header_navigation}
149
+ #
150
+ # @param navigation_item [Hash] options that will be used in customising the HTML
151
+ #
152
+ # @option navigation_item [Boolean] :active flag to mark the navigation item as active or not
153
+ # @option navigation_item [String] :text text for the navigation item
154
+ # @option navigation_item [String] :href URL of the navigation item anchor
155
+ # @option navigation_item [Hash] :attributes ({}) any additional attributes that will added as part of the HTML
156
+ #
157
+ # @return [ActiveSupport::SafeBuffer] the HTML for a navigation item which is used in {govuk_header_navigation}
158
+
159
+ def govuk_header_navigation_item(navigation_item)
160
+ govuk_header_navigation_item_classes = ['govuk-header__navigation-item']
161
+ govuk_header_navigation_item_classes << 'govuk-header__navigation-item--active' if navigation_item[:active]
162
+
163
+ tag.li(class: govuk_header_navigation_item_classes) do
164
+ if navigation_item[:href]
165
+ link_to(navigation_item[:text], navigation_item[:href], class: 'govuk-header__link', **(navigation_item[:attributes] || {}))
166
+ else
167
+ concat(navigation_item[:text])
168
+ end
167
169
  end
168
170
  end
169
171
  end
@@ -2,33 +2,35 @@
2
2
 
3
3
  require 'action_view'
4
4
 
5
- module CrownMarketplaceUtils::Helpers
6
- module GovUkHelper
7
- # = GOV.UK Hint
8
- #
9
- # This helper is used for generating the hint text component from the Government Design Systems
5
+ module CrownMarketplaceUtils
6
+ module Helpers
7
+ module GovUkHelper
8
+ # = GOV.UK Hint
9
+ #
10
+ # This helper is used for generating the hint text component from the Government Design Systems
10
11
 
11
- module Hint
12
- include ActionView::Context
13
- include ActionView::Helpers::TagHelper
12
+ module Hint
13
+ include ActionView::Context
14
+ include ActionView::Helpers::TagHelper
14
15
 
15
- # Generates the HTML for the GOV.UK Hint component
16
- #
17
- # @param hint_text [String] the hint text
18
- # @param govuk_hint_options [Hash] options that will be used in customising the HTML
19
- #
20
- # @option govuk_hint_options [String] :classes additional CSS classes for the hint HTML
21
- # @option govuk_hint_options [Hash] :attributes ({}) any additional attributes that will added as part of the HTML
22
- #
23
- # @return [ActiveSupport::SafeBuffer] the HTML for the GOV.UK Hint
24
- # which can then be rendered on the page
16
+ # Generates the HTML for the GOV.UK Hint component
17
+ #
18
+ # @param hint_text [String] the hint text
19
+ # @param govuk_hint_options [Hash] options that will be used in customising the HTML
20
+ #
21
+ # @option govuk_hint_options [String] :classes additional CSS classes for the hint HTML
22
+ # @option govuk_hint_options [Hash] :attributes ({}) any additional attributes that will added as part of the HTML
23
+ #
24
+ # @return [ActiveSupport::SafeBuffer] the HTML for the GOV.UK Hint
25
+ # which can then be rendered on the page
25
26
 
26
- def govuk_hint(hint_text, **govuk_hint_options)
27
- govuk_hint_classes = ['govuk-hint']
28
- govuk_hint_classes << govuk_hint_options[:classes]
29
- govuk_hint_options[:attributes] ||= {}
27
+ def govuk_hint(hint_text, **govuk_hint_options)
28
+ govuk_hint_classes = ['govuk-hint']
29
+ govuk_hint_classes << govuk_hint_options[:classes]
30
+ govuk_hint_options[:attributes] ||= {}
30
31
 
31
- tag.div(hint_text, class: govuk_hint_classes, **govuk_hint_options[:attributes])
32
+ tag.div(hint_text, class: govuk_hint_classes, **govuk_hint_options[:attributes])
33
+ end
32
34
  end
33
35
  end
34
36
  end