Class: DesignSystem::Generic::Builders::Notification

Inherits:
Base
  • Object
show all
Includes:
ActionView::Helpers::SanitizeHelper
Defined in:
lib/design_system/generic/builders/notification.rb

Overview

This class provides generic methods to display notifications.

Instance Method Summary collapse

Methods inherited from Base

#initialize

Methods included from Helpers::CssHelper

#css_class_options_merge

Methods included from Concerns::BrandDerivable

#brand

Constructor Details

This class inherits a constructor from DesignSystem::Generic::Builders::Base

Instance Method Details

#render_alert(msg = nil) ⇒ Object



10
11
12
13
14
15
16
17
# File 'lib/design_system/generic/builders/notification.rb', line 10

def render_alert(msg = nil, &)
  content_to_display = block_given? ? capture(&) : msg
  (:div, class: "#{brand}-error-summary", 'aria-labelledby': 'error-summary-title', role: 'alert',
                    tabindex: '-1') do
    (:h2, content_to_display,
                class: "#{brand}-error-summary__title", id: 'error-summary-title')
  end
end

#render_notice(msg = nil, header: nil, type: :information) ⇒ Object

Raises:

  • (ArgumentError)


19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/design_system/generic/builders/notification.rb', line 19

def render_notice(msg = nil, header: nil, type: :information, &)
  @context.instance_variable_set(:@link_context, :notification_banner)

  raise ArgumentError,
        "Invalid notification type: #{type}. Must be one of: #{notification_type_hash.keys.join(', ')}" unless notification_type_hash.key?(type)

  header ||= notification_type_hash.dig(type, :header)

  content_to_display = block_given? ? capture(&) : msg
  (:div, class: notification_type_hash.dig(type, :class), role: notification_type_hash.dig(type, :role),
                    'aria-labelledby': "#{brand}-notification-banner-title",
                    'data-module': "#{brand}-notification-banner") do
    banner_tile(header) + banner_content(content_to_display)
  end
end