Module: Avo::Fields::Concerns::Nested

Extended by:
ActiveSupport::Concern
Included in:
HasOneField, ManyFrameBaseField
Defined in:
lib/avo/fields/concerns/nested.rb

Constant Summary collapse

NESTED_DEFAULT =
{
  on: [:new, :edit]
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#nestedObject (readonly)

Returns the value of attribute nested.



8
9
10
# File 'lib/avo/fields/concerns/nested.rb', line 8

def nested
  @nested
end

Instance Method Details

#component_for_view(view = Avo::ViewInquirer.new("index")) ⇒ Object



27
28
29
30
31
# File 'lib/avo/fields/concerns/nested.rb', line 27

def component_for_view(view = Avo::ViewInquirer.new("index"))
  view = Avo::ViewInquirer.new(view)

  nested_on?(view) ? Avo::Fields::Common::NestedFieldComponent : super(view)
end

#initialize_nested(**args) ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/avo/fields/concerns/nested.rb', line 16

def initialize_nested(**args)
  if args[:nested].blank?
    @nested = {}
    return
  end

  @nested = (args[:nested] == true) ? NESTED_DEFAULT : args[:nested]

  @nested[:on] = [:new, :edit] if @nested[:on] == :forms
end

#nested_on?(view) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/avo/fields/concerns/nested.rb', line 33

def nested_on?(view)
  return false if view.display? || @nested[:on].nil?

  view = if view.create?
    "new"
  elsif view.update?
    "edit"
  else
    view
  end

  Array.wrap(@nested[:on]).map(&:to_s).include?(view)
end