Class: Klods::FormBuilder
- Inherits:
-
ActionView::Helpers::FormBuilder
- Object
- ActionView::Helpers::FormBuilder
- Klods::FormBuilder
- Defined in:
- lib/klods/form_builder.rb
Instance Method Summary collapse
-
#klods_field(method, label: nil, type: :text, help: nil, required: false, **options) ⇒ Object
Renders a fully wired klods input field: wrapper div, label, input, and optional help/error text.
-
#klods_select(method, choices = [], label: nil, help: nil, required: false, **options) ⇒ Object
Renders a klods select field with wrapper, label, and error/help wiring.
-
#klods_submit(label = nil, **options) ⇒ Object
Renders a submit button styled as a primary klods button.
-
#klods_textarea(method, label: nil, help: nil, required: false, **options) ⇒ Object
Renders a klods textarea field with wrapper, label, and error/help wiring.
Instance Method Details
#klods_field(method, label: nil, type: :text, help: nil, required: false, **options) ⇒ Object
Renders a fully wired klods input field: wrapper div, label, input, and optional help/error text. For textarea use f.klods_textarea; for select use f.klods_select.
f.klods_field :email, label: "Email", type: :email, autocomplete: "email"
f.klods_field :password, label: "Password", type: :password, required: true
f.klods_field :name, label: "Name", help: "Your display name"
9 10 11 12 13 |
# File 'lib/klods/form_builder.rb', line 9 def klods_field(method, label: nil, type: :text, help: nil, required: false, **) render_klods_wrapper(method, label: label, help: help, required: required) do |aria| send(input_helper_for(type), method, class: "klods-input", **aria, **) end end |
#klods_select(method, choices = [], label: nil, help: nil, required: false, **options) ⇒ Object
Renders a klods select field with wrapper, label, and error/help wiring. choices is an array of ["Label", value] pairs (or plain values).
f.klods_select :role, [["Admin", "admin"], ["User", "user"]], label: "Role"
28 29 30 31 32 33 |
# File 'lib/klods/form_builder.rb', line 28 def klods_select(method, choices = [], label: nil, help: nil, required: false, **) render_klods_wrapper(method, label: label, help: help, required: required) do |aria| select_el = render_select_input(method, choices, class: "klods-select", **aria, **) @template.content_tag(:div, select_el, class: "klods-select-wrapper") end end |
#klods_submit(label = nil, **options) ⇒ Object
Renders a submit button styled as a primary klods button.
f.klods_submit "Save"
f.klods_submit "Sign up", class: "klods-button--wide" # extra class merged in
39 40 41 42 43 |
# File 'lib/klods/form_builder.rb', line 39 def klods_submit(label = nil, **) extra = .delete(:class) [:class] = ["klods-button", "klods-button--primary", extra].compact.join(" ") submit(label, **) end |
#klods_textarea(method, label: nil, help: nil, required: false, **options) ⇒ Object
Renders a klods textarea field with wrapper, label, and error/help wiring.
f.klods_textarea :bio, label: "Bio", help: "Tell us about yourself"
18 19 20 21 22 |
# File 'lib/klods/form_builder.rb', line 18 def klods_textarea(method, label: nil, help: nil, required: false, **) render_klods_wrapper(method, label: label, help: help, required: required) do |aria| render_textarea_input(method, class: "klods-textarea", **aria, **) end end |