Class: GovukComponent::HeaderComponent::NavigationItem

Inherits:
Base
  • Object
show all
Defined in:
app/components/govuk_component/header_component.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#html_attributes

Instance Method Summary collapse

Methods inherited from Base

#brand

Constructor Details

#initialize(text:, href: nil, options: {}, active: nil, classes: [], html_attributes: {}) ⇒ NavigationItem

Returns a new instance of NavigationItem.



54
55
56
57
58
59
60
61
# File 'app/components/govuk_component/header_component.rb', line 54

def initialize(text:, href: nil, options: {}, active: nil, classes: [], html_attributes: {})
  @text            = text
  @href            = href
  @options         = options
  @active_override = active

  super(classes:, html_attributes:)
end

Instance Attribute Details

#activeObject (readonly)

Returns the value of attribute active.



52
53
54
# File 'app/components/govuk_component/header_component.rb', line 52

def active
  @active
end

#hrefObject (readonly)

Returns the value of attribute href.



52
53
54
# File 'app/components/govuk_component/header_component.rb', line 52

def href
  @href
end

#optionsObject (readonly)

Returns the value of attribute options.



52
53
54
# File 'app/components/govuk_component/header_component.rb', line 52

def options
  @options
end

#textObject (readonly)

Returns the value of attribute text.



52
53
54
# File 'app/components/govuk_component/header_component.rb', line 52

def text
  @text
end

Instance Method Details

#active_classObject



69
70
71
# File 'app/components/govuk_component/header_component.rb', line 69

def active_class
  ["#{brand}-header__navigation-item--active"] if active?
end

#before_renderObject



63
64
65
66
67
# File 'app/components/govuk_component/header_component.rb', line 63

def before_render
  if active?
    html_attributes[:class] << active_class
  end
end

#callObject



77
78
79
80
81
82
83
84
85
# File 'app/components/govuk_component/header_component.rb', line 77

def call
  tag.li(**html_attributes) do
    if link?
      link_to(text, href, class: "#{brand}-header__link", **options)
    else
      text
    end
  end
end

#link?Boolean

Returns:

  • (Boolean)


73
74
75
# File 'app/components/govuk_component/header_component.rb', line 73

def link?
  href.present?
end