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: {}, has_pill: false, pill_count_dynamic: false, pill_count: nil, pill_count_field: nil, super_sidebar_parent: nil, avatar: nil, entity_id: nil) ⇒ MenuItem

rubocop: disable Metrics/ParameterLists



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/sidebars/menu_item.rb', line 14

def initialize(
  title:, link:, active_routes:, item_id: nil, container_html_options: {}, sprite_icon: nil,
  sprite_icon_html_options: {}, has_pill: false, pill_count_dynamic: false, pill_count: nil,
  pill_count_field: 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
  @has_pill = has_pill
  @pill_count = pill_count
  @pill_count_field = pill_count_field
  @pill_count_dynamic = pill_count_dynamic
  @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

#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

#pill_count_dynamicObject (readonly)

Returns the value of attribute pill_count_dynamic.



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

def pill_count_dynamic
  @pill_count_dynamic
end

#pill_count_fieldObject (readonly)

Returns the value of attribute pill_count_field.



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

def pill_count_field
  @pill_count_field
end

#renderObject

Returns the value of attribute render.



10
11
12
# File 'lib/sidebars/menu_item.rb', line 10

def render
  @render
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

#pill_attributesObject



60
61
62
63
64
65
66
67
68
# File 'lib/sidebars/menu_item.rb', line 60

def pill_attributes
  return {} unless has_pill?

  {
    pill_count: pill_count,
    pill_count_field: pill_count_field,
    pill_count_dynamic: pill_count_dynamic
  }
end

#render?Boolean

rubocop: enable Metrics/ParameterLists

Returns:

  • (Boolean)


36
37
38
39
40
# File 'lib/sidebars/menu_item.rb', line 36

def render?
  return true if @render.nil?

  @render
end

#serialize_for_super_sidebarObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/sidebars/menu_item.rb', line 42

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,
    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
  }.merge(pill_attributes).compact
end