class Lookbook::Nav::Item::Component
def alpine_component
def alpine_component "navItemComponent" end
def alpine_data
def alpine_data alpine_encode({ id: @item.id, matchers: item.is_a?(Lookbook::Collection) ? nil : item.matchers }) end
def children
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
def children?
def children? children.any? if collection? && !collapsed? end
def collapsed?
def collapsed? @collapse_singles == true && collection? && @item.collapsible? && @item.one? end
def collection?
def collection? @item.is_a? Lookbook::Collection end
def href
def href if collapsed? item.url_path elsif !collection? item.url_path end end
def id
def id "#{@nav_id}-#{@item.id}" end
def initialize(
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
def item
def item collapsed? ? @item.first : @item end
def left_pad
def left_pad ((@depth - 1) * 12) + 24 end
def nav_icon
def nav_icon ICONS[@item.type] || :file end