Class: Nquery::FlashCardComponent

Inherits:
Component
  • Object
show all
Defined in:
app/components/nquery/flash_card_component.rb

Constant Summary collapse

TYPES =
%i[notice alert warning info].freeze
DEFAULT_DELAY =
5000

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Component

render_in, #render_in

Constructor Details

#initialize(message: nil, messages: nil, type: :notice, dismissible: true, toast: true, delay: DEFAULT_DELAY, auto_dismiss: nil, class: nil) ⇒ FlashCardComponent

Returns a new instance of FlashCardComponent.

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/components/nquery/flash_card_component.rb', line 10

def initialize(message: nil, messages: nil, type: :notice, dismissible: true, toast: true,
               delay: DEFAULT_DELAY, auto_dismiss: nil, class: nil)
  @messages = Array(messages).presence || Array(message).compact
  @type = type.to_sym
  @toast = toast
  @delay = delay
  @dismissible = dismissible
  @auto_dismiss = auto_dismiss.nil? ? toast : auto_dismiss
  @html_class = binding.local_variable_get(:class)

  raise ArgumentError, "invalid flash type: #{@type}" unless TYPES.include?(@type)
  raise ArgumentError, "message is required" if @messages.empty?
end

Instance Attribute Details

#auto_dismissObject (readonly)

Returns the value of attribute auto_dismiss.



8
9
10
# File 'app/components/nquery/flash_card_component.rb', line 8

def auto_dismiss
  @auto_dismiss
end

#delayObject (readonly)

Returns the value of attribute delay.



8
9
10
# File 'app/components/nquery/flash_card_component.rb', line 8

def delay
  @delay
end

#dismissibleObject (readonly)

Returns the value of attribute dismissible.



8
9
10
# File 'app/components/nquery/flash_card_component.rb', line 8

def dismissible
  @dismissible
end

#html_classObject (readonly)

Returns the value of attribute html_class.



8
9
10
# File 'app/components/nquery/flash_card_component.rb', line 8

def html_class
  @html_class
end

#toastObject (readonly)

Returns the value of attribute toast.



8
9
10
# File 'app/components/nquery/flash_card_component.rb', line 8

def toast
  @toast
end

#typeObject (readonly)

Returns the value of attribute type.



8
9
10
# File 'app/components/nquery/flash_card_component.rb', line 8

def type
  @type
end

Instance Method Details

#auto_dismiss?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'app/components/nquery/flash_card_component.rb', line 43

def auto_dismiss?
  auto_dismiss
end

#css_classObject



32
33
34
35
36
37
# File 'app/components/nquery/flash_card_component.rb', line 32

def css_class
  classes = ["nq-flash-card", "nq-flash-card-#{type}"]
  classes << (toast ? "nq-flash-card-toast" : "nq-flash-card-inline")
  classes << html_class if html_class.present?
  classes.join(" ")
end

#dismissible?Boolean

Returns:

  • (Boolean)


39
40
41
# File 'app/components/nquery/flash_card_component.rb', line 39

def dismissible?
  dismissible
end

#messagesObject



24
25
26
# File 'app/components/nquery/flash_card_component.rb', line 24

def messages
  @messages
end

#roleObject



28
29
30
# File 'app/components/nquery/flash_card_component.rb', line 28

def role
  type == :alert ? "alert" : "status"
end

#toast?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'app/components/nquery/flash_card_component.rb', line 47

def toast?
  toast
end