Class: Sidebars::MenuItem

Inherits:
Object
  • Object
show all
Includes:
Concerns::LinkWithHtmlOptions
Defined in:
lib/sidebars/menu_item.rb

Direct Known Subclasses

NilMenuItem

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Concerns::LinkWithHtmlOptions

#link_html_options

Constructor Details

#initialize(title:, link:, active_routes:, item_id: nil, container_html_options: {}, sprite_icon: nil, sprite_icon_html_options: {}, hint_html_options: {}, has_pill: false, pill_count: nil, super_sidebar_parent: nil, avatar: nil, entity_id: nil) ⇒ MenuItem

rubocop: disable Metrics/ParameterLists



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/sidebars/menu_item.rb', line 11

def initialize(title:, link:, active_routes:, item_id: nil, container_html_options: {}, sprite_icon: nil, sprite_icon_html_options: {}, hint_html_options: {}, has_pill: false, pill_count: nil, super_sidebar_parent: nil, avatar: nil, entity_id: nil)
  @title = title
  @link = link
  @active_routes = active_routes
  @item_id = item_id
  @container_html_options = { aria: { label: title } }.merge(container_html_options)
  @sprite_icon = sprite_icon
  @sprite_icon_html_options = sprite_icon_html_options
  @avatar = avatar
  @entity_id = entity_id
  @hint_html_options = hint_html_options
  @has_pill = has_pill
  @pill_count = pill_count
  @super_sidebar_parent = super_sidebar_parent
end

Instance Attribute Details

#active_routesObject (readonly)

Returns the value of attribute active_routes.



7
8
9
# File 'lib/sidebars/menu_item.rb', line 7

def active_routes
  @active_routes
end

#avatarObject (readonly)

Returns the value of attribute avatar.



7
8
9
# File 'lib/sidebars/menu_item.rb', line 7

def avatar
  @avatar
end

#container_html_optionsObject (readonly)

Returns the value of attribute container_html_options.



7
8
9
# File 'lib/sidebars/menu_item.rb', line 7

def container_html_options
  @container_html_options
end

#entity_idObject (readonly)

Returns the value of attribute entity_id.



7
8
9
# File 'lib/sidebars/menu_item.rb', line 7

def entity_id
  @entity_id
end

#has_pillObject (readonly) Also known as: has_pill?

Returns the value of attribute has_pill.



7
8
9
# File 'lib/sidebars/menu_item.rb', line 7

def has_pill
  @has_pill
end

#hint_html_optionsObject (readonly)

Returns the value of attribute hint_html_options.



7
8
9
# File 'lib/sidebars/menu_item.rb', line 7

def hint_html_options
  @hint_html_options
end

#item_idObject (readonly)

Returns the value of attribute item_id.



7
8
9
# File 'lib/sidebars/menu_item.rb', line 7

def item_id
  @item_id
end

Returns the value of attribute link.



7
8
9
# File 'lib/sidebars/menu_item.rb', line 7

def link
  @link
end

#pill_countObject (readonly)

Returns the value of attribute pill_count.



7
8
9
# File 'lib/sidebars/menu_item.rb', line 7

def pill_count
  @pill_count
end

#sprite_iconObject (readonly)

Returns the value of attribute sprite_icon.



7
8
9
# File 'lib/sidebars/menu_item.rb', line 7

def sprite_icon
  @sprite_icon
end

#sprite_icon_html_optionsObject (readonly)

Returns the value of attribute sprite_icon_html_options.



7
8
9
# File 'lib/sidebars/menu_item.rb', line 7

def sprite_icon_html_options
  @sprite_icon_html_options
end

#super_sidebar_parentObject (readonly)

Returns the value of attribute super_sidebar_parent.



7
8
9
# File 'lib/sidebars/menu_item.rb', line 7

def super_sidebar_parent
  @super_sidebar_parent
end

#titleObject (readonly)

Returns the value of attribute title.



7
8
9
# File 'lib/sidebars/menu_item.rb', line 7

def title
  @title
end

Instance Method Details



57
58
59
60
61
62
63
# File 'lib/sidebars/menu_item.rb', line 57

def nav_link_html_options
  {
    data: {
      track_label: item_id
    }
  }
end

#render?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/sidebars/menu_item.rb', line 32

def render?
  true
end

#serialize_for_super_sidebarObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/sidebars/menu_item.rb', line 36

def serialize_for_super_sidebar
  {
    id: item_id,
    title: title,
    icon: sprite_icon,
    avatar: avatar,
    entity_id: entity_id,
    link: link,
    active_routes: active_routes,
    pill_count: has_pill ? pill_count : nil,
    link_classes: container_html_options[:class]
    # Check whether support is needed for the following properties,
    # in order to get feature parity with the HAML renderer
    # https://gitlab.com/gitlab-org/gitlab/-/issues/391864
    #
    # container_html_options
    # hint_html_options
    # nav_link_html_options
  }
end

#show_hint?Boolean

rubocop: enable Metrics/ParameterLists

Returns:

  • (Boolean)


28
29
30
# File 'lib/sidebars/menu_item.rb', line 28

def show_hint?
  hint_html_options.present?
end