Sha256: a5c2aea3fe0dca347e7fd9e05a94b260fd1d7f84ff55e6158a7490add3bd32f2

Contents?: true

Size: 1.95 KB

Versions: 11

Compression:

Stored size: 1.95 KB

Contents

# frozen_string_literal: true
module SimpleForm
  module Inputs
    class CollectionRadioButtonsInput < CollectionInput
      def input(wrapper_options = nil)
        label_method, value_method = detect_collection_methods

        merged_input_options = merge_wrapper_options(input_html_options, wrapper_options)

        @builder.send(:"collection_#{input_type}",
          attribute_name, collection, value_method, label_method,
          input_options, merged_input_options,
          &collection_block_for_nested_boolean_style
        )
      end

      def input_options
        options = super
        apply_default_collection_options!(options)
        options
      end

      protected

      def apply_default_collection_options!(options)
        options[:item_wrapper_tag] ||= options.fetch(:item_wrapper_tag, SimpleForm.item_wrapper_tag)
        options[:item_wrapper_class] = [
          item_wrapper_class, options[:item_wrapper_class], SimpleForm.item_wrapper_class
        ].compact.presence if SimpleForm.include_default_input_wrapper_class

        options[:collection_wrapper_tag] ||= options.fetch(:collection_wrapper_tag, SimpleForm.collection_wrapper_tag)
        options[:collection_wrapper_class] = [
          options[:collection_wrapper_class], SimpleForm.collection_wrapper_class
        ].compact.presence
      end

      def collection_block_for_nested_boolean_style
        return unless nested_boolean_style?

        proc { |builder| build_nested_boolean_style_item_tag(builder) }
      end

      def build_nested_boolean_style_item_tag(collection_builder)
        collection_builder.radio_button + collection_builder.text.to_s
      end

      def item_wrapper_class
        "radio"
      end

      # Do not attempt to generate label[for] attributes by default, unless an
      # explicit html option is given. This avoids generating labels pointing to
      # non existent fields.
      def generate_label_for_attribute?
        false
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
simple_form-5.3.0 lib/simple_form/inputs/collection_radio_buttons_input.rb
simple_form-5.2.0 lib/simple_form/inputs/collection_radio_buttons_input.rb
simple_form-5.1.0 lib/simple_form/inputs/collection_radio_buttons_input.rb
simple_form-5.0.3 lib/simple_form/inputs/collection_radio_buttons_input.rb
simple_form-5.0.2 lib/simple_form/inputs/collection_radio_buttons_input.rb
simple_form-5.0.1 lib/simple_form/inputs/collection_radio_buttons_input.rb
simple_form-5.0.0 lib/simple_form/inputs/collection_radio_buttons_input.rb
simple_form-4.1.0 lib/simple_form/inputs/collection_radio_buttons_input.rb
simple_form-4.0.1 lib/simple_form/inputs/collection_radio_buttons_input.rb
simple_form-4.0.0 lib/simple_form/inputs/collection_radio_buttons_input.rb
simple_form-3.5.1 lib/simple_form/inputs/collection_radio_buttons_input.rb