lib/cm_admin/models/form_field.rb in cm-admin-1.1.7 vs lib/cm_admin/models/form_field.rb in cm-admin-1.1.8
- old
+ new
@@ -1,8 +1,12 @@
+require_relative 'utils/helpers'
+
module CmAdmin
module Models
class FormField
+ include Utils::Helpers
+
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
@@ -11,22 +15,33 @@
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)
+ send("#{key}=", value)
end
- self.display_if = lambda { |arg| return true } if self.display_if.nil?
+ 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_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
+
+ 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
end
end
end