Class: PhlexKit::ToggleGroupItem

Inherits:
Toggle show all
Defined in:
app/components/phlex_kit/toggle_group/toggle_group_item.rb

Constant Summary

Constants inherited from Toggle

PhlexKit::Toggle::SIZES, PhlexKit::Toggle::VARIANTS

Instance Method Summary collapse

Methods inherited from Toggle

modifier_classes

Methods inherited from BaseComponent

#on

Constructor Details

#initialize(value:, group_context:, variant: nil, size: nil, **attrs) ⇒ ToggleGroupItem

Returns a new instance of ToggleGroupItem.



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# File 'app/components/phlex_kit/toggle_group/toggle_group_item.rb', line 3

def initialize(value:, group_context:, variant: nil, size: nil, **attrs)
  # Toggle kwargs this item renders no markup for — inheriting them
  # silently discarded the caller's input.
  unsupported = attrs.keys & %i[wrapper name unpressed_value]
  if unsupported.any?
    raise ArgumentError, "ToggleGroupItem does not support #{unsupported.join(", ")} (group items render a bare button)"
  end
  @item_value = value.to_s
  @group_context = group_context
  pressed = group_context[:selected_values].include?(@item_value)
  super(pressed: pressed, name: nil, value: @item_value,
        variant: variant || group_context[:variant],
        size: size || group_context[:size],
        disabled: group_context[:disabled], **attrs)
end

Instance Method Details

#view_template(&block) ⇒ Object



19
20
21
# File 'app/components/phlex_kit/toggle_group/toggle_group_item.rb', line 19

def view_template(&block)
  button(**mix(item_default_attrs, @attrs), &block)
end