Sha256: 8b9681c876bfa5c931485d966fbee5a9ac8d203dc6db14e2e08212238592f435

Contents?: true

Size: 1.35 KB

Versions: 5

Compression:

Stored size: 1.35 KB

Contents

module Coco
  module App
    module SidebarNav
      class Menu < Coco::Component
        component_name :app_sidebar_nav_menu

        renders_many :items, types: {
          link: ->(label, href, qualifier: nil, **kwargs, &block) do
            if items.size < max_links
              coco_link(href, **kwargs, theme: nil, underline: false) do
                tag.span(label, class: "menu-item-label") +
                  tag.span(qualifier, class: "menu-item-qualifier")
              end
            else
              overflow_items << ["#{label}#{qualifier.present? ? " (#{qualifier})" : ""}", href]
              nil
            end
          end,
          block_link: ->(href, **kwargs, &block) do
            coco_link(href, **kwargs, theme: nil, underline: false, &block)
          end
        }

        renders_one :action, ->(*args, **kwargs, &block) do
          coco_button(*args, theme: :primary, **kwargs, size: :sm, fit: :full, &block)
        end

        attr_reader :max_links, :overflow_items, :prompt

        def initialize(max_links: 6, prompt: "More links...", **kwargs)
          @max_links = max_links
          @prompt = prompt
          @overflow_items = []
        end

        def with_link(...)
          with_item_link(...)
        end

        def with_block_link(...)
          with_item_block_link(...)
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
coveragebook_components-0.16.0 app/components/coco/app/sidebar_nav/menu/menu.rb
coveragebook_components-0.15.0 app/components/coco/app/sidebar_nav/menu/menu.rb
coveragebook_components-0.14.0 app/components/coco/app/sidebar_nav/menu/menu.rb
coveragebook_components-0.13.1 app/components/coco/app/sidebar_nav/menu/menu.rb
coveragebook_components-0.13.0 app/components/coco/app/sidebar_nav/menu/menu.rb