Class: ForestAdminDatasourceCustomizer::DSL::FormBuilder
- Inherits:
-
Object
- Object
- ForestAdminDatasourceCustomizer::DSL::FormBuilder
- Defined in:
- lib/forest_admin_datasource_customizer/dsl/builders/form_builder.rb
Overview
FormBuilder provides a fluent DSL for building action forms
Instance Attribute Summary collapse
-
#fields ⇒ Object
readonly
Returns the value of attribute fields.
Instance Method Summary collapse
-
#field(name, type:, widget: nil, options: nil, readonly: nil, required: nil, default: nil, description: nil, placeholder: nil, if_condition: nil, enum_values: nil, collection_name: nil, &block) ⇒ Object
Add a field to the form.
-
#html(content) ⇒ Object
Add a HTML block.
-
#initialize ⇒ FormBuilder
constructor
A new instance of FormBuilder.
-
#page(&block) ⇒ Object
Add a page layout to group fields.
-
#row(&block) ⇒ Object
Add a row layout to arrange fields horizontally.
-
#separator ⇒ Object
Add a separator.
Constructor Details
#initialize ⇒ FormBuilder
Returns a new instance of FormBuilder.
30 31 32 |
# File 'lib/forest_admin_datasource_customizer/dsl/builders/form_builder.rb', line 30 def initialize @fields = [] end |
Instance Attribute Details
#fields ⇒ Object (readonly)
Returns the value of attribute fields.
28 29 30 |
# File 'lib/forest_admin_datasource_customizer/dsl/builders/form_builder.rb', line 28 def fields @fields end |
Instance Method Details
#field(name, type:, widget: nil, options: nil, readonly: nil, required: nil, default: nil, description: nil, placeholder: nil, if_condition: nil, enum_values: nil, collection_name: nil, &block) ⇒ Object
Add a field to the form
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/forest_admin_datasource_customizer/dsl/builders/form_builder.rb', line 48 def field(name, type:, widget: nil, options: nil, readonly: nil, required: nil, default: nil, description: nil, placeholder: nil, if_condition: nil, enum_values: nil, collection_name: nil, &block) field_def = { label: name.to_s, type: normalize_type(type) } field_def[:widget] = if field_def[:options] = if field_def[:is_read_only] = readonly if readonly field_def[:is_required] = required if required field_def[:default_value] = default if default field_def[:description] = description if description field_def[:placeholder] = placeholder if placeholder field_def[:if_condition] = if_condition if if_condition field_def[:enum_values] = enum_values if enum_values field_def[:collection_name] = collection_name if collection_name field_def[:value] = block if block @fields << field_def end |
#html(content) ⇒ Object
Add a HTML block
103 104 105 106 107 108 109 |
# File 'lib/forest_admin_datasource_customizer/dsl/builders/form_builder.rb', line 103 def html(content) @fields << { type: 'Layout', component: 'HtmlBlock', content: content } end |
#page(&block) ⇒ Object
Add a page layout to group fields
72 73 74 75 76 77 78 79 80 81 |
# File 'lib/forest_admin_datasource_customizer/dsl/builders/form_builder.rb', line 72 def page(&block) page_builder = FormBuilder.new page_builder.instance_eval(&block) @fields << { type: 'Layout', component: 'Page', elements: page_builder.fields } end |
#row(&block) ⇒ Object
Add a row layout to arrange fields horizontally
85 86 87 88 89 90 91 92 93 94 |
# File 'lib/forest_admin_datasource_customizer/dsl/builders/form_builder.rb', line 85 def row(&block) row_builder = FormBuilder.new row_builder.instance_eval(&block) @fields << { type: 'Layout', component: 'Row', fields: row_builder.fields } end |
#separator ⇒ Object
Add a separator
97 98 99 |
# File 'lib/forest_admin_datasource_customizer/dsl/builders/form_builder.rb', line 97 def separator @fields << { type: 'Layout', component: 'Separator' } end |