Class: PhlexKit::NativeSelect

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

Overview

Styled native via mix. size: is the kit's lone selector here (default | sm) — SIZES.fetch fails loud on anything else.

Constant Summary collapse

SIZES =

size => extra class appended after the base select class (nil = default).

{
  default: nil,
  sm: "sm"
}.freeze

Instance Method Summary collapse



26
27
28
29
30
31
32
33
34
# File 'app/components/phlex_kit/native_select/native_select.rb', line 26

def initialize(size: :default, **attrs)
  if size.is_a?(Integer)
    @native_size = size
    @size = :default
  else
    @size = size.to_sym
  end
  @attrs = attrs
end

Instance Method Details

#view_template(&block) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'app/components/phlex_kit/native_select/native_select.rb', line 36

def view_template(&block)
  div(class: "pk-native-select") do
    base = {
      class: classes,
      data: {
        phlex_kit__form_field_target: "input",
        action: "change->phlex-kit--form-field#onChange invalid->phlex-kit--form-field#onInvalid"
      }
    }
    base[:size] = @native_size if @native_size
    select(**mix(base, @attrs), &block)
    render PhlexKit::NativeSelectIcon.new
  end
end