Class: EasyAdmin::Layouts::Builders::FormLayoutBuilder
- Inherits:
-
BaseLayoutBuilder
- Object
- BaseLayoutBuilder
- EasyAdmin::Layouts::Builders::FormLayoutBuilder
- Defined in:
- lib/easy_admin/layouts/builders/form_layout_builder.rb
Overview
Builder specifically for form layouts
Instance Attribute Summary
Attributes inherited from BaseLayoutBuilder
#current_container_stack, #resource_class, #root_node
Instance Method Summary collapse
- #boolean_field(name, **options) ⇒ Object
-
#conditional_fields(condition:, **attributes, &block) ⇒ Object
Add conditional fields.
- #date_field(name, **options) ⇒ Object
- #datetime_field(name, **options) ⇒ Object
- #email_field(name, **options) ⇒ Object
-
#errors_summary(**attributes) ⇒ Object
Add form errors summary.
-
#field(name, **options) ⇒ Object
Override field method to include form-specific options.
-
#fieldset(legend = nil, **attributes, &block) ⇒ Object
Add fieldset for grouping form fields.
-
#form_actions(**attributes, &block) ⇒ Object
Add form actions (submit, cancel, etc.).
- #has_many_field(name, **options) ⇒ Object
-
#help_text(text, **attributes) ⇒ Object
Add help text.
-
#initialize(resource_class: nil) ⇒ FormLayoutBuilder
constructor
A new instance of FormLayoutBuilder.
-
#inline_fields(**attributes, &block) ⇒ Object
Add inline fields (multiple fields in one row).
-
#nested_fields(association, **attributes, &block) ⇒ Object
Add nested fields for associations.
- #number_field(name, **options) ⇒ Object
- #password_field(name, **options) ⇒ Object
- #select_field(name, **options) ⇒ Object
-
#text_field(name, **options) ⇒ Object
Convenience methods for specific field types.
- #textarea_field(name, **options) ⇒ Object
Methods inherited from BaseLayoutBuilder
#add_node, #belongs_to_field, #build, #content, #current_container, #divider, #fields, #file_field, #grid, #id_field, #json_field, #method_missing, #render, #respond_to_missing?, #section, #spacer, #tabs, #with_container
Constructor Details
#initialize(resource_class: nil) ⇒ FormLayoutBuilder
Returns a new instance of FormLayoutBuilder.
6 7 8 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 6 def initialize(resource_class: nil) super(:form, resource_class: resource_class) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class EasyAdmin::Layouts::Builders::BaseLayoutBuilder
Instance Method Details
#boolean_field(name, **options) ⇒ Object
119 120 121 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 119 def boolean_field(name, **) field(name, field_type: :boolean, **) end |
#conditional_fields(condition:, **attributes, &block) ⇒ Object
Add conditional fields
54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 54 def conditional_fields(condition:, **attributes, &block) conditional_node = Nodes::ConditionalFields.new( condition: condition, **attributes ) if block_given? with_container(conditional_node, &block) else add_node(conditional_node) end conditional_node end |
#date_field(name, **options) ⇒ Object
131 132 133 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 131 def date_field(name, **) field(name, field_type: :date, **) end |
#datetime_field(name, **options) ⇒ Object
135 136 137 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 135 def datetime_field(name, **) field(name, field_type: :datetime, **) end |
#email_field(name, **options) ⇒ Object
111 112 113 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 111 def email_field(name, **) field(name, field_type: :email, **) end |
#errors_summary(**attributes) ⇒ Object
Add form errors summary
92 93 94 95 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 92 def errors_summary(**attributes) errors_node = Nodes::ErrorsSummary.new(attributes) add_node(errors_node) end |
#field(name, **options) ⇒ Object
Override field method to include form-specific options
98 99 100 101 102 103 104 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 98 def field(name, **) # Set default form field options [:required] = true if [:required].nil? && required_field?(name) [:readonly] = true if readonly_field?(name) super(name, **) end |
#fieldset(legend = nil, **attributes, &block) ⇒ Object
Add fieldset for grouping form fields
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 13 def fieldset(legend = nil, **attributes, &block) fieldset_node = Nodes::Fieldset.new(legend, attributes) if block_given? with_container(fieldset_node, &block) else add_node(fieldset_node) end fieldset_node end |
#form_actions(**attributes, &block) ⇒ Object
Add form actions (submit, cancel, etc.)
26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 26 def form_actions(**attributes, &block) actions_node = Nodes::FormActions.new(attributes) add_node(actions_node) if block_given? @current_container_stack.push(actions_node) form_actions_builder = FormActionsBuilder.new(self, actions_node) form_actions_builder.instance_exec(&block) @current_container_stack.pop end actions_node end |
#has_many_field(name, **options) ⇒ Object
127 128 129 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 127 def has_many_field(name, **) field(name, field_type: :has_many, **) end |
#help_text(text, **attributes) ⇒ Object
Add help text
86 87 88 89 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 86 def help_text(text, **attributes) help_node = Nodes::HelpText.new(text, attributes) add_node(help_node) end |
#inline_fields(**attributes, &block) ⇒ Object
Add inline fields (multiple fields in one row)
41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 41 def inline_fields(**attributes, &block) inline_node = Nodes::InlineFields.new(attributes) if block_given? with_container(inline_node, &block) else add_node(inline_node) end inline_node end |
#nested_fields(association, **attributes, &block) ⇒ Object
Add nested fields for associations
70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 70 def nested_fields(association, **attributes, &block) nested_node = Nodes::NestedFields.new( association, attributes ) if block_given? with_container(nested_node, &block) else add_node(nested_node) end nested_node end |
#number_field(name, **options) ⇒ Object
139 140 141 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 139 def number_field(name, **) field(name, field_type: :number, **) end |
#password_field(name, **options) ⇒ Object
143 144 145 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 143 def password_field(name, **) field(name, field_type: :password, **) end |
#select_field(name, **options) ⇒ Object
123 124 125 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 123 def select_field(name, **) field(name, field_type: :select, **) end |
#text_field(name, **options) ⇒ Object
Convenience methods for specific field types
107 108 109 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 107 def text_field(name, **) field(name, field_type: :text, **) end |
#textarea_field(name, **options) ⇒ Object
115 116 117 |
# File 'lib/easy_admin/layouts/builders/form_layout_builder.rb', line 115 def textarea_field(name, **) field(name, field_type: :textarea, **) end |