Class: Avo::FieldWrapperComponent
- Inherits:
-
ViewComponent::Base
- Object
- ViewComponent::Base
- Avo::FieldWrapperComponent
- Defined in:
- app/components/avo/field_wrapper_component.rb
Instance Attribute Summary collapse
-
#compact ⇒ Object
readonly
Returns the value of attribute compact.
-
#dash_if_blank ⇒ Object
readonly
Returns the value of attribute dash_if_blank.
-
#field ⇒ Object
readonly
Returns the value of attribute field.
-
#form ⇒ Object
readonly
Returns the value of attribute form.
-
#full_width ⇒ Object
readonly
Returns the value of attribute full_width.
-
#resource ⇒ Object
readonly
Returns the value of attribute resource.
-
#view ⇒ Object
readonly
Returns the value of attribute view.
Instance Method Summary collapse
- #classes(extra_classes = "") ⇒ Object
- #compact? ⇒ Boolean
- #data ⇒ Object
- #full_width? ⇒ Boolean
- #help ⇒ Object
-
#initialize(dash_if_blank: true, data: {}, compact: false, help: nil, field: nil, form: nil, full_width: false, label: nil, resource: nil, stacked: nil, style: "", view: :show, **args) ⇒ FieldWrapperComponent
constructor
A new instance of FieldWrapperComponent.
- #label ⇒ Object
- #on_edit? ⇒ Boolean
- #on_show? ⇒ Boolean
- #record ⇒ Object
- #stacked? ⇒ Boolean
- #style ⇒ Object
Constructor Details
#initialize(dash_if_blank: true, data: {}, compact: false, help: nil, field: nil, form: nil, full_width: false, label: nil, resource: nil, stacked: nil, style: "", view: :show, **args) ⇒ FieldWrapperComponent
Returns a new instance of FieldWrapperComponent.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'app/components/avo/field_wrapper_component.rb', line 12 def initialize( dash_if_blank: true, data: {}, compact: false, help: nil, # do we really need it? field: nil, form: nil, full_width: false, label: nil, # do we really need it? resource: nil, stacked: nil, style: "", view: :show, **args ) @args = args @classes = args[:class].present? ? args[:class] : "" @dash_if_blank = dash_if_blank @data = data @compact = compact @help = help @field = field @form = form @full_width = full_width @label = label @resource = resource @stacked = stacked @style = style @view = view end |
Instance Attribute Details
#compact ⇒ Object (readonly)
Returns the value of attribute compact.
5 6 7 |
# File 'app/components/avo/field_wrapper_component.rb', line 5 def compact @compact end |
#dash_if_blank ⇒ Object (readonly)
Returns the value of attribute dash_if_blank.
4 5 6 |
# File 'app/components/avo/field_wrapper_component.rb', line 4 def dash_if_blank @dash_if_blank end |
#field ⇒ Object (readonly)
Returns the value of attribute field.
6 7 8 |
# File 'app/components/avo/field_wrapper_component.rb', line 6 def field @field end |
#form ⇒ Object (readonly)
Returns the value of attribute form.
7 8 9 |
# File 'app/components/avo/field_wrapper_component.rb', line 7 def form @form end |
#full_width ⇒ Object (readonly)
Returns the value of attribute full_width.
8 9 10 |
# File 'app/components/avo/field_wrapper_component.rb', line 8 def full_width @full_width end |
#resource ⇒ Object (readonly)
Returns the value of attribute resource.
9 10 11 |
# File 'app/components/avo/field_wrapper_component.rb', line 9 def resource @resource end |
#view ⇒ Object (readonly)
Returns the value of attribute view.
10 11 12 |
# File 'app/components/avo/field_wrapper_component.rb', line 10 def view @view end |
Instance Method Details
#classes(extra_classes = "") ⇒ Object
43 44 45 |
# File 'app/components/avo/field_wrapper_component.rb', line 43 def classes(extra_classes = "") "field-wrapper relative flex flex-col flex-grow pb-2 md:pb-0 leading-tight min-h-14 #{stacked? ? "field-wrapper-layout-stacked" : "field-wrapper-layout-inline md:flex-row md:items-center"} #{compact? ? "field-wrapper-size-compact" : "field-wrapper-size-regular"} #{full_width? ? "field-width-full" : "field-width-regular"} #{@classes || ""} #{extra_classes || ""} #{@field.get_html(:classes, view: view, element: :wrapper)}" end |
#compact? ⇒ Boolean
111 112 113 |
# File 'app/components/avo/field_wrapper_component.rb', line 111 def compact? @compact end |
#data ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# File 'app/components/avo/field_wrapper_component.rb', line 77 def data attributes = { field_id: @field.id, field_type: @field.type, **@data } # Add the built-in stimulus integration data tags. if @resource.present? @resource.get_stimulus_controllers.split(" ").each do |controller| attributes["#{controller}-target"] = "#{@field.id.to_s.underscore}_#{@field.type.to_s.underscore}_wrapper".camelize(:lower) end end # Fetch the data attributes off the html option wrapper_data_attributes = @field.get_html :data, view: view, element: :wrapper if wrapper_data_attributes.present? attributes.merge! wrapper_data_attributes end attributes end |
#full_width? ⇒ Boolean
115 116 117 |
# File 'app/components/avo/field_wrapper_component.rb', line 115 def full_width? @full_width end |
#help ⇒ Object
63 64 65 66 67 68 69 70 71 |
# File 'app/components/avo/field_wrapper_component.rb', line 63 def help help_value = @help || @field.help if help_value.respond_to?(:call) return Avo::Hosts::ResourceViewRecordHost.new(block: help_value, record: record, resource: resource, view: view).handle end help_value end |
#label ⇒ Object
51 52 53 |
# File 'app/components/avo/field_wrapper_component.rb', line 51 def label @label || @field.name end |
#on_edit? ⇒ Boolean
59 60 61 |
# File 'app/components/avo/field_wrapper_component.rb', line 59 def on_edit? view == :edit end |
#on_show? ⇒ Boolean
55 56 57 |
# File 'app/components/avo/field_wrapper_component.rb', line 55 def on_show? view == :show end |
#record ⇒ Object
73 74 75 |
# File 'app/components/avo/field_wrapper_component.rb', line 73 def record resource.present? ? resource.model : nil end |
#stacked? ⇒ Boolean
100 101 102 103 104 105 106 107 108 109 |
# File 'app/components/avo/field_wrapper_component.rb', line 100 def stacked? # Override on the declaration level return @stacked unless @stacked.nil? # Fetch it from the field return field.stacked unless field.stacked.nil? # Fallback to defaults Avo.configuration.field_wrapper_layout == :stacked end |
#style ⇒ Object
47 48 49 |
# File 'app/components/avo/field_wrapper_component.rb', line 47 def style "#{@style} #{@field.get_html(:style, view: view, element: :wrapper)}" end |