Sha256: d58432b7e032f6a1bd3b0d980af35eb6f132e44995697ce3faf70732bcbd9291

Contents?: true

Size: 1011 Bytes

Versions: 1

Compression:

Stored size: 1011 Bytes

Contents

# frozen_string_literal: true

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

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

              field = builder.field(
                label: builder.key,
                # we expect key to be an integer string starting from "1"
                value: values[builder.index]
              )
              if block_given?
                yield field
              else
                render field.input_tag
              end
            end
          end
        end

        protected

        def build_attributes
          super

          attributes[:multiple] = true
        end

        private

        def values
          @values ||= Array(field.value)
        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/input_array.rb