Sha256: d69f7195989278c28b9fb4eec1ff9dd66bf1ab9bce70a9bf938cee9d4260e9b8
Contents?: true
Size: 1.44 KB
Versions: 1
Compression:
Stored size: 1.44 KB
Contents
# frozen_string_literal: true module Phlexi module Form module Components class Select < Base include Concerns::HasOptions def view_template(&block) select(**attributes) do blank_option { blank_option_text } unless skip_blank_option? options end end protected def options option_mapper.each do |value, label| option(selected: selected?(value), value: value) { label } end end def blank_option(&) option(selected: field.value.nil?, &) end def build_attributes super attributes[:id] = field.dom.id attributes[:name] = field.dom.name build_select_attributes end def build_select_attributes @include_blank_option = attributes.delete(:include_blank_option) attributes[:autofocus] = attributes.fetch(:autofocus, field.focused?) attributes[:required] = attributes.fetch(:required, field.required?) attributes[:disabled] = attributes.fetch(:disabled, field.disabled?) attributes[:multiple] = attributes.fetch(:multiple, field.multiple?) attributes[:size] = attributes.fetch(:size, field.limit) end def blank_option_text field.placeholder end def skip_blank_option? @include_blank_option == false end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
phlexi-form-0.2.0 | lib/phlexi/form/components/select.rb |