Sha256: 4f1647684a6d604550ecee4e3d05bd196ce42a7c93891e9d9c88931fd1ceeb9b

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

# frozen_string_literal: true

module Phlexi
  module Form
    module Components
      class CollectionCheckboxes < Base
        include Concerns::HandlesInput
        include Concerns::HandlesArrayInput
        include Concerns::HasOptions

        def view_template
          div(**attributes.slice(:id, :class)) do
            field.multi(option_mapper.values) do |builder|
              render builder.hidden_field_tag if builder.index == 0

              field = builder.field(
                label: option_mapper[builder.key],
                # We set the attributes here so they are applied to all input components even if the user decides to use a block
                input_attributes: {
                  checked_value: builder.key,
                  include_hidden: false,
                  checked: selected?(builder.key)
                }
              )
              if block_given?
                yield field
              else
                render field.checkbox_tag
                render field.label_tag
              end
            end
          end
        end

        protected

        def build_attributes
          super
          attributes[:multiple] = true
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
phlexi-form-0.3.0.rc1 lib/phlexi/form/components/collection_checkboxes.rb