Sha256: c9ddd99ef4c71b50dd7674c8f7a85f8798cec1a9dfce1b64e12643f2b1ff38df

Contents?: true

Size: 1.27 KB

Versions: 16

Compression:

Stored size: 1.27 KB

Contents

module CmAdmin
  module Models
    class FormField
      attr_accessor :field_name, :label, :header, :input_type, :collection, :disabled, :helper_method,
                    :placeholder, :display_if, :html_attr, :target

      VALID_INPUT_TYPES = %i[
        integer decimal string single_select multi_select date date_time text
        single_file_upload multi_file_upload hidden rich_text check_box radio_button
      ].freeze

      def initialize(field_name, input_type, attributes = {})
        @field_name = field_name
        set_default_values
        attributes.each do |key, value|
          self.send("#{key.to_s}=", value)
        end
        self.display_if = lambda { |arg| return true } if self.display_if.nil?
        raise ArgumentError, "Kindly select a valid input type like #{VALID_INPUT_TYPES.sort.to_sentence(last_word_connector: ', or ')} instead of #{self.input_type} for form field #{field_name}" unless VALID_INPUT_TYPES.include?(self.input_type.to_sym)
      end

      def set_default_values
        self.disabled = false
        self.label = self.field_name.to_s.titleize
        self.input_type = :string
        self.placeholder = "Enter #{self.field_name.to_s.downcase.gsub('_', ' ')}"
        self.html_attr = {}
        self.target = {}
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
cm-admin-1.1.7 lib/cm_admin/models/form_field.rb
cm-admin-1.1.6 lib/cm_admin/models/form_field.rb
cm-admin-1.1.5 lib/cm_admin/models/form_field.rb
cm-admin-1.1.4 lib/cm_admin/models/form_field.rb
cm-admin-1.1.3 lib/cm_admin/models/form_field.rb
cm-admin-1.1.2 lib/cm_admin/models/form_field.rb
cm-admin-1.1.1 lib/cm_admin/models/form_field.rb
cm-admin-1.1.0 lib/cm_admin/models/form_field.rb
cm-admin-1.0.9 lib/cm_admin/models/form_field.rb
cm-admin-1.0.8 lib/cm_admin/models/form_field.rb
cm-admin-1.0.7 lib/cm_admin/models/form_field.rb
cm-admin-1.0.6 lib/cm_admin/models/form_field.rb
cm-admin-1.0.5 lib/cm_admin/models/form_field.rb
cm-admin-1.0.3 lib/cm_admin/models/form_field.rb
cm-admin-1.0.2 lib/cm_admin/models/form_field.rb
cm-admin-1.0.0 lib/cm_admin/models/form_field.rb