Sha256: 4a06fb750a1d8f79152952a5ee0a422e7b57f858deec8bf985df91aa85022c27

Contents?: true

Size: 1.48 KB

Versions: 34

Compression:

Stored size: 1.48 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

        def normalize_input(...)
          input_value = super
          [@checked_value, @unchecked_value].include?(input_value) ? input_value : @unchecked_value
        end
      end
    end
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
phlexi-form-0.8.5 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.8.3 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.8.2 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.8.1 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.8.0 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.7.2 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.7.1 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.7.0 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.6.2 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.6.1 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.6.0 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.5.11 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.5.10 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.5.9 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.5.8 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.5.7 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.5.6 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.5.5 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.5.4 lib/phlexi/form/components/checkbox.rb
phlexi-form-0.5.3 lib/phlexi/form/components/checkbox.rb