class Playbook::PbTextInput::TextInput

def add_on_class

def add_on_class
  has_add_on? ? "text_input_wrapper_add_on" : nil
end

def add_on_props

def add_on_props
  { dark: dark }.merge(add_on || {})
end

def all_input_options

def all_input_options
  {
    autocomplete: autocomplete ? nil : "off",
    class: "text_input #{input_options.dig(:classname) || ''}",
    data: validation_data,
    disabled: disabled,
    id: input_options.dig(:id) || id,
    name: name,
    pattern: validation_pattern,
    placeholder: placeholder,
    required: required,
    type: type,
    value: value,
  }.merge(input_options)
end

def classname

def classname
  default_margin_bottom = margin_bottom.present? ? "" : " mb_sm"
  generate_classname("pb_text_input_kit") + default_margin_bottom + error_class + inline_class
end

def error_class

def error_class
  error ? " error" : ""
end

def has_add_on?

def has_add_on?
  add_on.present?
end

def inline_class

def inline_class
  inline ? " inline" : ""
end

def input_tag

def input_tag
  tag(:input, all_input_options)
end

def validation_data

def validation_data
  fields = input_options.dig(:data) || {}
  fields[:message] = validation_message unless validation_message.blank?
  fields
end

def validation_message

def validation_message
  validation[:message] || ""
end

def validation_pattern

def validation_pattern
  validation[:pattern] || nil
end