Class: UI::ResizablePanel

Inherits:
Phlex::HTML
  • Object
show all
Includes:
ResizablePanelBehavior
Defined in:
app/components/ui/resizable_panel.rb

Overview

ResizablePanel component (Phlex) Individual resizable panel within a panel group

Examples:

Basic usage

render UI::Panel.new(default_size: 50) do
  "Panel content"
end

With constraints

render UI::Panel.new(default_size: 50, min_size: 20, max_size: 80) do
  "Constrained panel"
end

Instance Method Summary collapse

Methods included from ResizablePanelBehavior

#merged_panel_data_attributes, #panel_base_classes, #panel_data_attributes, #panel_html_attributes

Constructor Details

#initialize(default_size: nil, min_size: nil, max_size: nil, classes: "", attributes: {}) ⇒ ResizablePanel

Returns a new instance of ResizablePanel.

Parameters:

  • default_size (Integer, Float) (defaults to: nil)

    initial size as percentage (0-100)

  • min_size (Integer, Float, nil) (defaults to: nil)

    minimum size as percentage

  • max_size (Integer, Float, nil) (defaults to: nil)

    maximum size as percentage

  • classes (String) (defaults to: "")

    additional CSS classes

  • attributes (Hash) (defaults to: {})

    additional HTML attributes



23
24
25
26
27
28
29
30
# File 'app/components/ui/resizable_panel.rb', line 23

def initialize(default_size: nil, min_size: nil, max_size: nil, classes: "", attributes: {}, **)
  @default_size = default_size
  @min_size = min_size
  @max_size = max_size
  @classes = classes
  @attributes = attributes
  super()
end

Instance Method Details

#view_template(&block) ⇒ Object



32
33
34
# File 'app/components/ui/resizable_panel.rb', line 32

def view_template(&block)
  div(**panel_html_attributes, &block)
end