Class: SdrViewComponents::Elements::AlertComponent

Inherits:
BaseComponent
  • Object
show all
Defined in:
app/components/sdr_view_components/elements/alert_component.rb

Overview

Component for rendering an alert.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from BaseComponent

#args_for, #merge_actions, #merge_classes

Constructor Details

#initialize(title: nil, variant: :info, dismissible: false, data: {}, classes: [], id: nil, role: 'alert', text: nil) ⇒ AlertComponent

Variants are :danger, :success, :note, :info, :warning, :input input is not part of the component library

Raises:

  • (ArgumentError)


9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 9

def initialize(title: nil, variant: :info, dismissible: false, # rubocop:disable Metrics/ParameterLists
               data: {}, classes: [], id: nil, role: 'alert', text: nil)
  raise ArgumentError, 'Invalid variant' unless %i[danger success note info warning input].include?(variant.to_sym)

  @title = title
  @variant = variant
  @dismissible = dismissible
  @data = data
  @classes = classes
  @id = id
  @role = role
  @text = text
  super()
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



24
25
26
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 24

def data
  @data
end

#idObject (readonly)

Returns the value of attribute id.



24
25
26
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 24

def id
  @id
end

#roleObject (readonly)

Returns the value of attribute role.



24
25
26
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 24

def role
  @role
end

#textObject (readonly)

Returns the value of attribute text.



24
25
26
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 24

def text
  @text
end

#titleObject (readonly)

Returns the value of attribute title.



24
25
26
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 24

def title
  @title
end

#variantObject (readonly)

Returns the value of attribute variant.



24
25
26
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 24

def variant
  @variant
end

Instance Method Details

#classesObject



26
27
28
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 26

def classes
  merge_classes(%w[alert d-flex shadow-sm align-items-center], variant_class, dismissible_class, @classes)
end

#dismissible?Boolean

Returns:

  • (Boolean)


38
39
40
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 38

def dismissible?
  @dismissible
end

#dismissible_classObject



34
35
36
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 34

def dismissible_class
  'alert-dismissible' if dismissible?
end

#iconObject



46
47
48
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 46

def icon
  helpers.public_send(:"#{variant}_icon", role: 'img', aria: { label: "#{variant} alert icon" })
end

#icon?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 42

def icon?
  helpers.respond_to?(:"#{variant}_icon")
end

#render?Boolean

Returns:

  • (Boolean)


50
51
52
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 50

def render?
  title.present? || content.present? || text.present?
end

#variant_classObject



30
31
32
# File 'app/components/sdr_view_components/elements/alert_component.rb', line 30

def variant_class
  "alert-#{variant}"
end