Class: PhlexKit::Message

Inherits:
BaseComponent show all
Defined in:
app/components/phlex_kit/message/message.rb

Overview

Chat message row (avatar + content), ported from ruby_ui's RubyUI::Message. align: :end reverses the row. Compose Message > MessageContent (+ Avatar/ Header/Footer); group several in a MessageGroup.

Constant Summary collapse

ALIGNS =
%i[start end].freeze

Instance Method Summary collapse

Methods inherited from BaseComponent

#on

Constructor Details

#initialize(align: :start, **attrs) ⇒ Message

Returns a new instance of Message.

Raises:

  • (KeyError)


8
9
10
11
12
13
14
# File 'app/components/phlex_kit/message/message.rb', line 8

def initialize(align: :start, **attrs)
  @align = align.to_sym
  # Fail loud like sibling Bubble: message.css only styles data-align="end",
  # so an unknown value silently rendered a start-aligned row.
  raise KeyError, "unknown Message align #{@align}" unless ALIGNS.include?(@align)
  @attrs = attrs
end

Instance Method Details

#view_templateObject



15
16
17
# File 'app/components/phlex_kit/message/message.rb', line 15

def view_template(&)
  div(**mix({ class: "pk-message", data: { slot: "message", align: @align } }, @attrs), &)
end