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

#render_raw_menus_partialObject

Auxiliar method that helps with the migration from regular views to the new logic.

Any menu inside this partial will be added after all the menus added in the ‘configure_menus` method.



89
90
91
# File 'lib/sidebars/panel.rb', line 89

def render_raw_menus_partial
  # No-op
end

#render_raw_scope_menu_partialObject

Auxiliar method that helps with the migration from regular views to the new logic



79
80
81
# File 'lib/sidebars/panel.rb', line 79

def render_raw_scope_menu_partial
  # No-op
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