Sha256: ca3df829133b8a5ecf6ed8c24c954e4cfa380e856daa1713d2da786144f2d8ea
Contents?: true
Size: 1.31 KB
Versions: 1
Compression:
Stored size: 1.31 KB
Contents
# frozen_string_literal: true module Phlexi module Form module Components class Checkbox < Input def view_template input(type: :hidden, name: attributes[:name], value: @unchecked_value, autocomplete: "off", hidden: true) if include_hidden? input(**attributes, value: @checked_value) end protected def build_input_attributes attributes[:type] = :checkbox super @include_hidden = attributes.delete(:include_hidden) @checked_value = (attributes.key?(:checked_value) ? attributes.delete(:checked_value) : "1").to_s @unchecked_value = (attributes.key?(:unchecked_value) ? attributes.delete(:unchecked_value) : "0").to_s attributes[:value] = @checked_value attributes[:checked] = attributes.fetch(:checked) { checked? } end def include_hidden? @include_hidden != false end def checked? return false if field.dom.value == @unchecked_value if @checked_value == "1" # using default values # handle nils, numbers and booleans !["", "0", "false"].include?(field.dom.value) else # custom value, so explicit match field.dom.value == @checked_value end 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/checkbox.rb |