Class: Nav::Item::Component

Inherits:
Lookbook::BaseComponent
  • Object
show all
Defined in:
app/components/lookbook/nav/item/component.rb

Constant Summary collapse

ICONS =
{
  page: :file,
  page_collection: :folder,
  preview_collection: :folder,
  preview: :layers,
  example: :eye,
  group: :eye,
  collection: :folder
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(item, nav_id:, depth: 1, collapse_singles: false, **html_attrs) ⇒ Component

Returns a new instance of Component.



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'app/components/lookbook/nav/item/component.rb', line 15

def initialize(
  item,
  nav_id:,
  depth: 1,
  collapse_singles: false,
  **html_attrs
)
  @nav_id = nav_id
  @item = item
  @depth = depth
  @collapse_singles = collapse_singles
  super(**html_attrs)
end

Instance Method Details

#childrenObject



45
46
47
48
49
50
51
52
53
54
55
56
# File 'app/components/lookbook/nav/item/component.rb', line 45

def children
  @children ||= if collection? && !collapsed?
    item.non_empty_items.map do |item|
      lookbook_render Lookbook::Nav::Item::Component.new item,
        nav_id: @nav_id,
        depth: (@depth + 1),
        collapse_singles: @collapse_singles
    end
  else
    []
  end
end

#children?Boolean

Returns:

  • (Boolean)


70
71
72
# File 'app/components/lookbook/nav/item/component.rb', line 70

def children?
  children.any? if collection? && !collapsed?
end

#collapsed?Boolean

Returns:

  • (Boolean)


74
75
76
# File 'app/components/lookbook/nav/item/component.rb', line 74

def collapsed?
  @collapse_singles == true && collection? && @item.collapsible? && @item.one?
end

#collection?Boolean

Returns:

  • (Boolean)


66
67
68
# File 'app/components/lookbook/nav/item/component.rb', line 66

def collection?
  @item.is_a? Lookbook::Collection
end

#hrefObject



37
38
39
40
41
42
43
# File 'app/components/lookbook/nav/item/component.rb', line 37

def href
  if collapsed?
    item.url_path
  elsif !collection?
    item.url_path
  end
end

#idObject



29
30
31
# File 'app/components/lookbook/nav/item/component.rb', line 29

def id
  "#{@nav_id}-#{@item.id}"
end

#itemObject



58
59
60
# File 'app/components/lookbook/nav/item/component.rb', line 58

def item
  collapsed? ? @item.first : @item
end

#left_padObject



33
34
35
# File 'app/components/lookbook/nav/item/component.rb', line 33

def left_pad
  ((@depth - 1) * 12) + 24
end


62
63
64
# File 'app/components/lookbook/nav/item/component.rb', line 62

def nav_icon
  ICONS[@item.type] || :file
end