Module: Avo::Concerns::VisibleItems

Extended by:
ActiveSupport::Concern
Included in:
Panel, Sidebar, Tab
Defined in:
lib/avo/concerns/visible_items.rb

Instance Method Summary collapse

Instance Method Details

#hydrate(view: nil) ⇒ Object



44
45
46
47
48
# File 'lib/avo/concerns/visible_items.rb', line 44

def hydrate(view: nil)
  @view = view

  self
end

#itemsObject



6
7
8
9
10
11
12
# File 'lib/avo/concerns/visible_items.rb', line 6

def items
  if items_holder.present?
    items_holder.items
  else
    []
  end
end

#visible(item) ⇒ Object



29
30
31
32
33
34
35
# File 'lib/avo/concerns/visible_items.rb', line 29

def visible(item)
  if item.is_field?
    item.visible? && item.visible_on?(view)
  else
    item.visible?
  end
end

#visible?Boolean

Returns:

  • (Boolean)


37
38
39
40
41
42
# File 'lib/avo/concerns/visible_items.rb', line 37

def visible?
  any_item_visible = visible_items.any?
  return any_item_visible unless respond_to?(:visible_on?)

  visible_on?(view) && any_item_visible
end

#visible_itemsObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/avo/concerns/visible_items.rb', line 14

def visible_items
  items
    .map do |item|
      if item.respond_to? :hydrate
        item.hydrate(view: view)
      end

      item
    end
    .map do |item|
      visible(item) ? item : nil
    end
    .compact
end