Sha256: 2a34095fa3ba9a290658bf2b495f5660a76581b6a84795a8a6b4bfd6532007a9

Contents?: true

Size: 1.22 KB

Versions: 36

Compression:

Stored size: 1.22 KB

Contents

module Avo
  module Fields
    class SelectField < BaseField
      attr_reader :options
      attr_reader :enum
      attr_reader :display_value

      def initialize(name, **args, &block)
        @defaults = {
          partial_name: "select-field"
        }

        super(name, **args, &block)

        @options = args[:options].present? ? args[:options] : args[:enum]
        @options = ActiveSupport::HashWithIndifferentAccess.new @options
        @enum = args[:enum].present? ? args[:enum] : nil
        @display_value = args[:display_value].present? ? args[:display_value] : false
        @placeholder = args[:placeholder].present? ? args[:placeholder].to_s : I18n.t("avo.choose_an_option")
      end

      def options_for_select
        if enum.present?
          if display_value
            options.invert
          else
            options.map { |label, value| [label, label] }.to_h
          end
        elsif display_value
          options.map { |label, value| [value, value] }.to_h
        else
          options
        end
      end

      def label
        if display_value
          value
        elsif enum.present?
          options[value]
        else
          options.invert[value]
        end
      end
    end
  end
end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
avo-1.4.0.pre.1 lib/avo/fields/select_field.rb
avo-1.3.5 lib/avo/fields/select_field.rb
avo-1.3.5.pre.1 lib/avo/fields/select_field.rb
avo-1.3.4 lib/avo/fields/select_field.rb
avo-1.3.3 lib/avo/fields/select_field.rb
avo-1.3.2 lib/avo/fields/select_field.rb
avo-1.3.1 lib/avo/fields/select_field.rb
avo-1.3.0 lib/avo/fields/select_field.rb
avo-1.2.11.pre.4 lib/avo/fields/select_field.rb
avo-1.2.11.pre.3 lib/avo/fields/select_field.rb
avo-1.2.11.pre.2 lib/avo/fields/select_field.rb
avo-1.2.11.pre.1 lib/avo/fields/select_field.rb
avo-1.2.10 lib/avo/fields/select_field.rb
avo-1.2.9 lib/avo/fields/select_field.rb
avo-1.2.8 lib/avo/fields/select_field.rb
avo-1.2.7 lib/avo/fields/select_field.rb
avo-1.2.6 lib/avo/fields/select_field.rb
avo-1.2.6.pre.1 lib/avo/fields/select_field.rb
avo-1.2.5 lib/avo/fields/select_field.rb
avo-1.2.4 lib/avo/fields/select_field.rb