Module: Jav::Concerns::VisibleItems

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

Instance Method Summary collapse

Instance Method Details

#hydrate(view: nil) ⇒ Object



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

def hydrate(view: nil)
  @view = view

  self
end

#itemsObject



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

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

#visible(item) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/jav/concerns/visible_items.rb', line 23

def visible(item)
  return item.visible? unless item.is_field?

  return false if item.respond_to?(:authorized?) && item.resource.present? && !item.authorized?

  item.visible? && item.visible_on?(view)
end

#visible?Boolean

Returns:

  • (Boolean)


31
32
33
34
35
36
# File 'lib/jav/concerns/visible_items.rb', line 31

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
# File 'lib/jav/concerns/visible_items.rb', line 14

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

    visible(item) ? item : nil
  end
    .compact
end