Class: Polaris::FormBuilder

Inherits:
ActionView::Helpers::FormBuilder
  • Object
show all
Includes:
ActionView::Helpers::OutputSafetyHelper
Defined in:
app/helpers/polaris/form_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#templateObject (readonly)

Returns the value of attribute template.



5
6
7
# File 'app/helpers/polaris/form_builder.rb', line 5

def template
  @template
end

Instance Method Details

#error_for(method) ⇒ Object



31
32
33
34
35
36
# File 'app/helpers/polaris/form_builder.rb', line 31

def error_for(method)
  return if object.blank?
  return unless object.errors.key?(method)

  raw object.errors.full_messages_for(method)&.first
end

#errors_summaryObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'app/helpers/polaris/form_builder.rb', line 9

def errors_summary
  return if object.blank?
  return unless object.errors.any?

  title = I18n.t(
    "polaris.form_builder.errors_summary",
    count: object.errors.count,
    model: object.class.model_name.human.downcase
  )

  render Polaris::BannerComponent.new(title: title, status: :critical, within: :container) do |banner|
    [
      render(Polaris::ListComponent.new) do |list|
        object.errors.full_messages.each do |error|
          list.item { error.html_safe }
        end
      end,
      (template.capture { yield(banner) } if block_given?)
    ].compact.join.html_safe
  end
end

#polaris_check_box(method, **options, &block) ⇒ Object



67
68
69
70
71
72
73
# File 'app/helpers/polaris/form_builder.rb', line 67

def polaris_check_box(method, **options, &block)
  options[:error] ||= error_for(method)
  if options[:error_hidden] && options[:error]
    options[:error] = !!options[:error]
  end
  render Polaris::CheckboxComponent.new(form: self, attribute: method, **options, &block)
end

#polaris_dropzone(method, **options, &block) ⇒ Object



83
84
85
86
87
88
89
# File 'app/helpers/polaris/form_builder.rb', line 83

def polaris_dropzone(method, **options, &block)
  options[:error] ||= error_for(method)
  if options[:error_hidden] && options[:error]
    options[:error] = !!options[:error]
  end
  render Polaris::DropzoneComponent.new(form: self, attribute: method, **options, &block)
end

#polaris_inline_error_for(method, **options, &block) ⇒ Object



38
39
40
41
42
43
44
45
# File 'app/helpers/polaris/form_builder.rb', line 38

def polaris_inline_error_for(method, **options, &block)
  error_message = error_for(method)
  return unless error_message

  render(Polaris::InlineErrorComponent.new(**options, &block)) do
    error_message
  end
end

#polaris_radio_button(method, **options, &block) ⇒ Object



75
76
77
78
79
80
81
# File 'app/helpers/polaris/form_builder.rb', line 75

def polaris_radio_button(method, **options, &block)
  options[:error] ||= error_for(method)
  if options[:error_hidden] && options[:error]
    options[:error] = !!options[:error]
  end
  render Polaris::RadioButtonComponent.new(form: self, attribute: method, **options, &block)
end

#polaris_select(method, **options, &block) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
# File 'app/helpers/polaris/form_builder.rb', line 55

def polaris_select(method, **options, &block)
  options[:error] ||= error_for(method)
  if options[:error_hidden] && options[:error]
    options[:error] = !!options[:error]
  end
  value = object&.public_send(method)
  if value.present?
    options[:selected] = value
  end
  render Polaris::SelectComponent.new(form: self, attribute: method, **options, &block)
end

#polaris_text_field(method, **options, &block) ⇒ Object



47
48
49
50
51
52
53
# File 'app/helpers/polaris/form_builder.rb', line 47

def polaris_text_field(method, **options, &block)
  options[:error] ||= error_for(method)
  if options[:error_hidden] && options[:error]
    options[:error] = !!options[:error]
  end
  render Polaris::TextFieldComponent.new(form: self, attribute: method, **options, &block)
end