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, short: false, stacked: nil, style: "", view: :show, **args) ⇒ FieldWrapperComponent
constructor
A new instance of FieldWrapperComponent.
- #label ⇒ Object
- #record ⇒ Object
- #short? ⇒ Boolean
- #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, short: false, 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 42 43 |
# 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, short: false, 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 @short = short @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
45 46 47 |
# File 'app/components/avo/field_wrapper_component.rb', line 45 def classes(extra_classes = "") "field-wrapper relative flex flex-col grow pb-2 md:pb-0 leading-tight min-h-14 h-full #{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
101 102 103 |
# File 'app/components/avo/field_wrapper_component.rb', line 101 def compact? @compact end |
#data ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'app/components/avo/field_wrapper_component.rb', line 67 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
109 110 111 |
# File 'app/components/avo/field_wrapper_component.rb', line 109 def full_width? @full_width end |
#help ⇒ Object
59 60 61 |
# File 'app/components/avo/field_wrapper_component.rb', line 59 def help Avo::ExecutionContext.new(target: @help || @field.help, record: record, resource: resource, view: view).handle end |
#label ⇒ Object
53 54 55 |
# File 'app/components/avo/field_wrapper_component.rb', line 53 def label @label || @field.name end |
#record ⇒ Object
63 64 65 |
# File 'app/components/avo/field_wrapper_component.rb', line 63 def record resource.present? ? resource.record : nil end |
#short? ⇒ Boolean
105 106 107 |
# File 'app/components/avo/field_wrapper_component.rb', line 105 def short? @short end |
#stacked? ⇒ Boolean
90 91 92 93 94 95 96 97 98 99 |
# File 'app/components/avo/field_wrapper_component.rb', line 90 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
49 50 51 |
# File 'app/components/avo/field_wrapper_component.rb', line 49 def style "#{@style} #{@field.get_html(:style, view: view, element: :wrapper)}" end |