class CmAdmin::Models::FormField

def initialize(field_name, input_type, attributes = {})

def initialize(field_name, input_type, attributes = {})
  @field_name = field_name
  set_default_values
  attributes.each do |key, value|
    send("#{key}=", value)
  end
  set_default_placeholder
  self.display_if = lambda { |arg| return true } if 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_placeholder

def set_default_placeholder
  return unless placeholder.nil?
  self.placeholder = case input_type&.to_sym
                     when :single_select, :multi_select, :date, :date_time
                       "Select #{humanized_field_value(field_name)}"
                     else
                       "Enter #{humanized_field_value(field_name)}"
                     end
end

def set_default_values

def set_default_values
  self.disabled = false
  self.label = self.field_name.to_s.titleize
  self.input_type = :string
  self.html_attr = {}
  self.target = {}
  self.col_size = nil
end