Class: Panda::Core::Admin::ProsePanelComponent

Inherits:
Base
  • Object
show all
Defined in:
app/components/panda/core/admin/prose_panel_component.rb

Overview

Renders a PanelComponent containing prose-formatted text via simple_format. Self-hides via render? when text is blank.

Lives in panda-core because rich-text prose display inside panels is a generic admin pattern (notes, descriptions, agendas) used across any Panda app, not specific to any single domain.

Examples:

Basic usage

render Panda::Core::Admin::ProsePanelComponent.new(heading: "Notes", text: @person.notes)

With extra prose styling

render Panda::Core::Admin::ProsePanelComponent.new(
  heading: "Internal Notes",
  text: @case.notes,
  prose_class: "text-gray-600"
)

Constant Summary

Constants inherited from Base

Base::TAILWIND_MERGER

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(heading:, text:, prose_class: "", **attrs) ⇒ ProsePanelComponent

Returns a new instance of ProsePanelComponent.



25
26
27
28
29
30
# File 'app/components/panda/core/admin/prose_panel_component.rb', line 25

def initialize(heading:, text:, prose_class: "", **attrs)
  @heading = heading
  @text = text
  @prose_class = prose_class
  super(**attrs)
end

Instance Attribute Details

#headingObject (readonly)

Returns the value of attribute heading.



23
24
25
# File 'app/components/panda/core/admin/prose_panel_component.rb', line 23

def heading
  @heading
end

#prose_classObject (readonly)

Returns the value of attribute prose_class.



23
24
25
# File 'app/components/panda/core/admin/prose_panel_component.rb', line 23

def prose_class
  @prose_class
end

#textObject (readonly)

Returns the value of attribute text.



23
24
25
# File 'app/components/panda/core/admin/prose_panel_component.rb', line 23

def text
  @text
end

Instance Method Details

#prose_classesObject



36
37
38
39
# File 'app/components/panda/core/admin/prose_panel_component.rb', line 36

def prose_classes
  base = "prose prose-sm max-w-none"
  prose_class.present? ? "#{base} #{prose_class}" : base
end

#render?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'app/components/panda/core/admin/prose_panel_component.rb', line 32

def render?
  text.present?
end