Sha256: 09ce296a44b8a87ca46d600dcb877e5bab12c6b2aa17f1987b3858f88c9faf7b

Contents?: true

Size: 1.01 KB

Versions: 1

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

module Phlexi
  module Form
    module Components
      class CollectionRadioButtons < Base
        include Concerns::HandlesInput
        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,
                  checked: selected?(builder.key)
                }
              )
              if block_given?
                yield field
              else
                render field.radio_button_tag
                render field.label_tag
              end
            end
          end
        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_radio_buttons.rb