Class: Practical::Views::Navigation::BreadcrumbsComponent

Inherits:
BaseComponent
  • Object
show all
Defined in:
app/components/practical/views/navigation/breadcrumbs_component.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(breadcrumb_trail:, options: {}) ⇒ BreadcrumbsComponent

Returns a new instance of BreadcrumbsComponent.



7
8
9
10
# File 'app/components/practical/views/navigation/breadcrumbs_component.rb', line 7

def initialize(breadcrumb_trail:, options: {})
  self.breadcrumb_trail = breadcrumb_trail
  self.options = options
end

Instance Attribute Details

Returns the value of attribute breadcrumb_trail.



4
5
6
# File 'app/components/practical/views/navigation/breadcrumbs_component.rb', line 4

def breadcrumb_trail
  @breadcrumb_trail
end

#optionsObject

Returns the value of attribute options.



5
6
7
# File 'app/components/practical/views/navigation/breadcrumbs_component.rb', line 5

def options
  @options
end

Instance Method Details

#build_crumb(crumb:) ⇒ Object



36
37
38
39
40
# File 'app/components/practical/views/navigation/breadcrumbs_component.rb', line 36

def build_crumb(crumb:)
  render(Practical::Views::Navigation::BreadcrumbItemComponent.new(options: { href: crumb.current? ? nil : crumb.url })) {
    crumb.name
  }
end

#crumbs_for_truncationObject



16
17
18
# File 'app/components/practical/views/navigation/breadcrumbs_component.rb', line 16

def crumbs_for_truncation
  @crumbs_for_truncation ||= breadcrumb_trail.to_a
end

#finalized_optionsObject



12
13
14
# File 'app/components/practical/views/navigation/breadcrumbs_component.rb', line 12

def finalized_options
  mix({}, options)
end

#truncate_endObject



28
29
30
# File 'app/components/practical/views/navigation/breadcrumbs_component.rb', line 28

def truncate_end
  crumbs_for_truncation.last(2)
end

#truncate_middle?Boolean

Returns:

  • (Boolean)


20
21
22
# File 'app/components/practical/views/navigation/breadcrumbs_component.rb', line 20

def truncate_middle?
  crumbs_for_truncation.size > 5
end

#truncate_startObject



24
25
26
# File 'app/components/practical/views/navigation/breadcrumbs_component.rb', line 24

def truncate_start
  crumbs_for_truncation.first(1)
end

#truncated_itemsObject



32
33
34
# File 'app/components/practical/views/navigation/breadcrumbs_component.rb', line 32

def truncated_items
  crumbs_for_truncation - truncate_start - truncate_end
end