Sha256: 4d526f4c1ddd6f08335846f7d3f546b15f65ab460682d1b0e3fccd8cac41d6b2

Contents?: true

Size: 1.57 KB

Versions: 11

Compression:

Stored size: 1.57 KB

Contents

module BootstrapForm
  module Inputs
    module InputsCollection
      extend ActiveSupport::Concern

      private

      def inputs_collection(name, collection, value, text, options={})
        options[:inline] ||= layout_inline?(options[:layout])

        form_group_builder(name, options) do
          inputs = ActiveSupport::SafeBuffer.new

          collection.each_with_index do |obj, i|
            input_value = value.respond_to?(:call) ? value.call(obj) : obj.send(value)
            input_options = form_group_collection_input_options(options, text, obj, i, input_value, collection)
            inputs << yield(name, input_value, input_options)
          end

          inputs
        end
      end

      # FIXME: Find a way to reduce the parameter list size
      # rubocop:disable Metrics/ParameterLists
      def form_group_collection_input_options(options, text, obj, index, input_value, collection)
        input_options = options.merge(label: text.respond_to?(:call) ? text.call(obj) : obj.send(text))
        if (checked = input_options[:checked])
          input_options[:checked] = form_group_collection_input_checked?(checked, obj, input_value)
        end

        input_options[:error_message] = index == collection.size - 1
        input_options.except!(:class)
        input_options
      end
      # rubocop:enable Metrics/ParameterLists

      def form_group_collection_input_checked?(checked, obj, input_value)
        checked == input_value || Array(checked).try(:include?, input_value) ||
          checked == obj || Array(checked).try(:include?, obj)
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 2 rubygems

Version Path
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/bootstrap_form-4.5.0/lib/bootstrap_form/inputs/inputs_collection.rb
bootstrap_form-5.2.3 lib/bootstrap_form/inputs/inputs_collection.rb
bootstrap_form-5.2.2 lib/bootstrap_form/inputs/inputs_collection.rb
bootstrap_form-5.2.1 lib/bootstrap_form/inputs/inputs_collection.rb
bootstrap_form-5.2.0 lib/bootstrap_form/inputs/inputs_collection.rb
bootstrap_form-5.1.0 lib/bootstrap_form/inputs/inputs_collection.rb
bootstrap_form-5.0.0 lib/bootstrap_form/inputs/inputs_collection.rb
bootstrap_form-4.5.0 lib/bootstrap_form/inputs/inputs_collection.rb
bootstrap_form-4.4.0 lib/bootstrap_form/inputs/inputs_collection.rb
bootstrap_form-4.3.0 lib/bootstrap_form/inputs/inputs_collection.rb
bootstrap_form-4.2.0 lib/bootstrap_form/inputs/inputs_collection.rb