Class: Sidebars::Panel

Inherits:
Object
  • Object
show all
Extended by:
Gitlab::Utils::Override
Includes:
Concerns::PositionableList
Defined in:
lib/sidebars/panel.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Gitlab::Utils::Override

extended, extensions, included, method_added, override, prepended, queue_verification, verify!

Methods included from Concerns::PositionableList

#add_element, #insert_element_after, #insert_element_before, #remove_element, #replace_element

Constructor Details

#initialize(context) ⇒ Panel

Returns a new instance of Panel.



10
11
12
13
14
15
16
17
# File 'lib/sidebars/panel.rb', line 10

def initialize(context)
  @context = context
  @scope_menu = nil
  @hidden_menu = nil
  @menus = []

  configure_menus
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



8
9
10
# File 'lib/sidebars/panel.rb', line 8

def context
  @context
end

#hidden_menuObject (readonly)

Returns the value of attribute hidden_menu.



8
9
10
# File 'lib/sidebars/panel.rb', line 8

def hidden_menu
  @hidden_menu
end

#scope_menuObject (readonly)

Returns the value of attribute scope_menu.



8
9
10
# File 'lib/sidebars/panel.rb', line 8

def scope_menu
  @scope_menu
end

Instance Method Details

#add_menu(menu) ⇒ Object



23
24
25
# File 'lib/sidebars/panel.rb', line 23

def add_menu(menu)
  add_element(@menus, menu)
end

#aria_labelObject

Raises:

  • (NotImplementedError)


51
52
53
# File 'lib/sidebars/panel.rb', line 51

def aria_label
  raise NotImplementedError
end

#configure_menusObject



19
20
21
# File 'lib/sidebars/panel.rb', line 19

def configure_menus
  # No-op
end

#containerObject



73
74
75
# File 'lib/sidebars/panel.rb', line 73

def container
  context.container
end

#insert_menu_after(after_menu, new_menu) ⇒ Object



31
32
33
# File 'lib/sidebars/panel.rb', line 31

def insert_menu_after(after_menu, new_menu)
  insert_element_after(@menus, after_menu, new_menu)
end

#insert_menu_before(before_menu, new_menu) ⇒ Object



27
28
29
# File 'lib/sidebars/panel.rb', line 27

def insert_menu_before(before_menu, new_menu)
  insert_element_before(@menus, before_menu, new_menu)
end

#remove_menu(menu_to_remove) ⇒ Object



39
40
41
# File 'lib/sidebars/panel.rb', line 39

def remove_menu(menu_to_remove)
  remove_element(@menus, menu_to_remove)
end

#render?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/sidebars/panel.rb', line 55

def render?
  renderable_menus.any?
end

#renderable_menusObject



59
60
61
# File 'lib/sidebars/panel.rb', line 59

def renderable_menus
  @renderable_menus ||= @menus.select(&:render?)
end

#replace_menu(menu_to_replace, new_menu) ⇒ Object



35
36
37
# File 'lib/sidebars/panel.rb', line 35

def replace_menu(menu_to_replace, new_menu)
  replace_element(@menus, menu_to_replace, new_menu)
end

#set_hidden_menu(hidden_menu) ⇒ Object



47
48
49
# File 'lib/sidebars/panel.rb', line 47

def set_hidden_menu(hidden_menu)
  @hidden_menu = hidden_menu
end

#set_scope_menu(scope_menu) ⇒ Object



43
44
45
# File 'lib/sidebars/panel.rb', line 43

def set_scope_menu(scope_menu)
  @scope_menu = scope_menu
end

#super_sidebar_context_headerObject

Raises:

  • (NotImplementedError)


69
70
71
# File 'lib/sidebars/panel.rb', line 69

def super_sidebar_context_header
  raise NotImplementedError
end

#super_sidebar_menu_itemsObject

Serializes every renderable menu and returns a flattened result



64
65
66
67
# File 'lib/sidebars/panel.rb', line 64

def super_sidebar_menu_items
  @super_sidebar_menu_items ||= renderable_menus
    .flat_map(&:serialize_for_super_sidebar)
end