Class: BulmaPhlex::Breadcrumb

Inherits:
Base
  • Object
show all
Defined in:
lib/bulma_phlex/breadcrumb.rb

Overview

Renders a Bulma breadcrumb component. It supports options for alignment (centered, right-aligned), separator style (arrow, bullet, dot, or succeeds (greater than)), and size (small, medium, large).

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(align: nil, separator: nil, size: nil, **html_attributes) ⇒ Breadcrumb

Returns a new instance of Breadcrumb.



18
19
20
21
22
23
24
25
# File 'lib/bulma_phlex/breadcrumb.rb', line 18

def initialize(align: nil, separator: nil, size: nil, **html_attributes)
  @align = align
  @separator = separator
  @size = size
  @html_attributes = html_attributes

  @items = []
end

Class Method Details

.new(align: nil, separator: nil, size: nil, **html_attributes) ⇒ Object

Parameters

  • align — Breadcrumb alignment: "centered" or "right"
  • separator — Breadcrumb separator style: "arrow", "bullet", "dot", or "succeeds"
  • size — Alternate size: "small", "medium", or "large"
  • **html_attributes — Additional HTML attributes for the <nav> element


14
15
16
# File 'lib/bulma_phlex/breadcrumb.rb', line 14

def self.new(align: nil, separator: nil, size: nil, **html_attributes)
  super
end

Instance Method Details

#item(label, href: nil, icon: nil) ⇒ Object

Adds a breadcrumb item to the component. The last item added will be rendered as the active item.

Parameters

  • label (positional) — The text label for the breadcrumb item
  • href — URL for the breadcrumb item; not required on last item / current page
  • icon — Optional icon class for the breadcrumb item (e.g. "fa-solid fa-home")


48
49
50
# File 'lib/bulma_phlex/breadcrumb.rb', line 48

def item(label, href: nil, icon: nil)
  @items << { label:, icon:, html_attributes: { href: href } }
end

#view_templateObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/bulma_phlex/breadcrumb.rb', line 27

def view_template(&)
  vanish(&)
  return if @items.empty?

  nav(**mix(@html_attributes, class: nav_classes, aria: { label: "breadcrumbs" })) do
    ul do
      @items[0...-1].each do |item|
        render_item(item)
      end

      render_last_item
    end
  end
end