Class: AtomicView::Components::FieldComponent

Inherits:
ViewComponent::Form::FieldComponent
  • Object
show all
Defined in:
lib/atomic_view/components/field_component.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(form, object_name, method_name, options = {}, tag_klass = ActionView::Helpers::Tags::TextField) ⇒ FieldComponent

Returns a new instance of FieldComponent.



6
7
8
9
# File 'lib/atomic_view/components/field_component.rb', line 6

def initialize(form, object_name, method_name, options = {}, tag_klass = ActionView::Helpers::Tags::TextField)
  super(form, object_name, method_name, options)
  @tag_klass = tag_klass
end

Instance Attribute Details

#tag_klassObject (readonly)

Returns the value of attribute tag_klass.



4
5
6
# File 'lib/atomic_view/components/field_component.rb', line 4

def tag_klass
  @tag_klass
end

Instance Method Details

#container_html_classObject



24
25
26
27
28
29
30
# File 'lib/atomic_view/components/field_component.rb', line 24

def container_html_class
  class_names(
    "relative rounded-lg shadow-sm",
    {"flex" => left_section_addon? || left_section_interaction? || right_section_addon? || right_section_interaction?},
    options[:container_class]
  )
end

#html_classObject



11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/atomic_view/components/field_component.rb', line 11

def html_class
  class_names(
    *%W[block w-full appearance-none h-9 min-w-0 z-10 flex-1 rounded-lg border-0 py-1 text-base shadow-sm ring-1],
    "disabled:cursor-not-allowed disabled:bg-gray-50 disabled:text-zinc-500 disabled:ring-zinc-200",
    "bg-transparent dark:bg-white/5 text-zinc-950 ring-zinc-950/10 dark:ring-white/10 placeholder:text-zinc-500 dark:text-white focus:ring-neutral-700 focus:border-zinc-950/20 dark:focus:ring-white/20",
    "pl-10" => left_section? && !(left_section_addon? || left_section_interaction?),
    "pr-10" => right_section? && !(right_section_addon? || right_section_interaction?),
    "shadow-none rounded-none rounded-r-lg" => left_section_addon? || left_section_interaction?,
    "shadow-none rounded-none rounded-l-lg" => right_section_addon? || right_section_interaction?,
    "text-red-900 ring-red-300 placeholder:text-red-300 focus:ring-red-500" => method_errors?
  )
end

#left_sectionObject



32
33
34
# File 'lib/atomic_view/components/field_component.rb', line 32

def left_section
  options[:left_section]
end

#left_section?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/atomic_view/components/field_component.rb', line 36

def left_section?
  left_section.present?
end

#left_section_addon?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/atomic_view/components/field_component.rb', line 40

def left_section_addon?
  options[:left_section_as_addon].present?
end

#left_section_interaction?Boolean

Returns:

  • (Boolean)


44
45
46
# File 'lib/atomic_view/components/field_component.rb', line 44

def left_section_interaction?
  options[:left_section_as_interaction].present?
end

#right_sectionObject



48
49
50
# File 'lib/atomic_view/components/field_component.rb', line 48

def right_section
  options[:right_section] || method_errors? && raw(icon("exclamation-circle", variant: :mini, options: {class: "size-5 text-red-500"}))
end

#right_section?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/atomic_view/components/field_component.rb', line 52

def right_section?
  right_section.present?
end

#right_section_addon?Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/atomic_view/components/field_component.rb', line 56

def right_section_addon?
  options[:right_section_as_addon].present?
end

#right_section_interaction?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/atomic_view/components/field_component.rb', line 60

def right_section_interaction?
  options[:right_section_as_interaction].present?
end