diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d43a4c7ef..75ead12ab5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ * Add new chart component options ([PR #4318](https://github.com/alphagov/govuk_publishing_components/pull/4318)) * Add shared helper and component wrapper helper to govspeak component ([PR #4325](https://github.com/alphagov/govuk_publishing_components/pull/4325)) +* Add component wrapper to emergency banner component ([PR #4283](https://github.com/alphagov/govuk_publishing_components/pull/4283)) ## 44.4.2 diff --git a/app/views/govuk_publishing_components/components/_emergency_banner.html.erb b/app/views/govuk_publishing_components/components/_emergency_banner.html.erb index b56168bcab..b916db5840 100644 --- a/app/views/govuk_publishing_components/components/_emergency_banner.html.erb +++ b/app/views/govuk_publishing_components/components/_emergency_banner.html.erb @@ -19,33 +19,33 @@ raise ArgumentError, "Emergency type #{campaign_class} is not in list of valid emergency types (#{emergency_banner_helper.emergency_types.join(', ')})" end - banner_classes = %w[gem-c-emergency-banner] - banner_classes << "gem-c-emergency-banner--#{campaign_class}" - banner_classes << "gem-c-emergency-banner--homepage" if homepage - heading_classes = %w[gem-c-emergency-banner__heading] heading_classes << "gem-c-emergency-banner__heading--homepage" if homepage description_classes = %w[gem-c-emergency-banner__description] description_classes << "gem-c-emergency-banner__description--homepage" if homepage - data_attributes = { - "nosnippet": true, - } + component_helper = GovukPublishingComponents::Presenters::ComponentWrapperHelper.new(local_assigns) + component_helper.add_class("gem-c-emergency-banner gem-c-emergency-banner--#{campaign_class}") + component_helper.add_class("gem-c-emergency-banner--homepage") if homepage + component_helper.add_data_attribute({nosnippet: true}) + component_helper.add_aria_attribute({labelledby: "emergency-banner-heading"}) unless disable_ga4 - data_attributes[:ga4_emergency_banner] = "" - data_attributes[:module] = "ga4-link-tracker" - data_attributes[:ga4_track_links_only] = "" - data_attributes[:ga4_set_indexes] = "" - data_attributes[:ga4_link] = { - event_name: "navigation", - type: "emergency banner", - section: heading, - }.to_json + component_helper.add_data_attribute({ + ga4_emergency_banner: "", + module: "ga4-link-tracker", + ga4_track_links_only: "", + ga4_set_indexes: "", + ga4_link: { + event_name: "navigation", + type: "emergency banner", + section: heading, + }.to_json + }) end %> -<%= content_tag('section', class: banner_classes, "aria-labelledby": "emergency-banner-heading", data: data_attributes) do %> +<%= tag.section(**component_helper.all_attributes) do %>
diff --git a/app/views/govuk_publishing_components/components/docs/emergency_banner.yml b/app/views/govuk_publishing_components/components/docs/emergency_banner.yml index e5da65d32d..16fa959b89 100644 --- a/app/views/govuk_publishing_components/components/docs/emergency_banner.yml +++ b/app/views/govuk_publishing_components/components/docs/emergency_banner.yml @@ -5,6 +5,7 @@ body: | See the [opsmanual](https://docs.publishing.service.gov.uk/manual/emergency-publishing.html#adding-emergency-publishing-banners) for information about what the Emergency Banner is and when it should be deployed. +uses_component_wrapper_helper: true shared_accessibility_criteria: - link accessibility_excluded_rules: