Class: Primrose::Components::Checkbox

Inherits:
Rose
  • Object
show all
Defined in:
lib/primrose/components/checkbox.rb

Constant Summary collapse

TEMPLATE =
<<~ERB
  <div class="checkbox">
    <input type="checkbox" id="<%= @id %>" name="<%= @name %>" onchange="<%= @js %>" <%= 'checked="checked"' if @checked %> />
    <label for="<%= @id %>"><%= @label %></label>
  </div>
ERB

Instance Attribute Summary

Attributes inherited from Rose

#children, #event_handlers, #state

Instance Method Summary collapse

Methods inherited from Rose

#add_child, #get_binding, #handle_error, #lifecycle, #on, #render_children, #trigger

Constructor Details

#initialize(label:, checked: false, id: nil, name: nil, js: nil) ⇒ Checkbox

Returns a new instance of Checkbox.



14
15
16
17
18
19
20
21
# File 'lib/primrose/components/checkbox.rb', line 14

def initialize(label:, checked: false, id: nil, name: nil, js: nil)
  @label = label
  @checked = checked
  @id = id || label.downcase.gsub(/\s+/, "_")  # Use label as id if id is not provided
  @name = name || @id  # Use id as name if name is not provided
  @js = js
  super()
end

Instance Method Details

#renderObject



23
24
25
# File 'lib/primrose/components/checkbox.rb', line 23

def render
  Prim.render(TEMPLATE, self)
end

#set_checked(value) ⇒ Object



27
28
29
# File 'lib/primrose/components/checkbox.rb', line 27

def set_checked(value)
  @state.alter({ checked: value })
end