Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-06-16 21:25:58 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-06-16 21:25:58 +0300
commita5f4bba440d7f9ea47046a0a561d49adf0a1e6d4 (patch)
treefb69158581673816a8cd895f9d352dcb3c678b1e /lib/gitlab/nav
parentd16b2e8639e99961de6ddc93909f3bb5c1445ba1 (diff)
Add latest changes from gitlab-org/gitlab@14-0-stable-eev14.0.0-rc42
Diffstat (limited to 'lib/gitlab/nav')
-rw-r--r--lib/gitlab/nav/top_nav_menu_item.rb6
-rw-r--r--lib/gitlab/nav/top_nav_view_model_builder.rb28
2 files changed, 30 insertions, 4 deletions
diff --git a/lib/gitlab/nav/top_nav_menu_item.rb b/lib/gitlab/nav/top_nav_menu_item.rb
index ee11f1f4560..4cb38e6bb9b 100644
--- a/lib/gitlab/nav/top_nav_menu_item.rb
+++ b/lib/gitlab/nav/top_nav_menu_item.rb
@@ -8,17 +8,17 @@ module Gitlab
# this is already :/. We could also take a hash and manually check every
# entry, but it's much more maintainable to do rely on native Ruby.
# rubocop: disable Metrics/ParameterLists
- def self.build(id:, title:, active: false, icon: '', href: '', method: nil, view: '', css_class: '', data: {})
+ def self.build(id:, title:, active: false, icon: '', href: '', view: '', css_class: nil, data: nil, emoji: nil)
{
id: id,
title: title,
active: active,
icon: icon,
href: href,
- method: method,
view: view.to_s,
css_class: css_class,
- data: data
+ data: data || { qa_selector: 'menu_item_link', qa_title: title },
+ emoji: emoji
}
end
# rubocop: enable Metrics/ParameterLists
diff --git a/lib/gitlab/nav/top_nav_view_model_builder.rb b/lib/gitlab/nav/top_nav_view_model_builder.rb
index 60f5b267071..11ca6a3a3ba 100644
--- a/lib/gitlab/nav/top_nav_view_model_builder.rb
+++ b/lib/gitlab/nav/top_nav_view_model_builder.rb
@@ -6,9 +6,34 @@ module Gitlab
def initialize
@menu_builder = ::Gitlab::Nav::TopNavMenuBuilder.new
@views = {}
+ @shortcuts = []
end
- delegate :add_primary_menu_item, :add_secondary_menu_item, to: :@menu_builder
+ # Using delegate hides the stacktrace for some errors, so we choose to be explicit.
+ # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62047#note_579031091
+ def add_primary_menu_item(**args)
+ @menu_builder.add_primary_menu_item(**args)
+ end
+
+ def add_secondary_menu_item(**args)
+ @menu_builder.add_secondary_menu_item(**args)
+ end
+
+ def add_shortcut(**args)
+ item = ::Gitlab::Nav::TopNavMenuItem.build(**args)
+
+ @shortcuts.push(item)
+ end
+
+ def add_primary_menu_item_with_shortcut(shortcut_class:, shortcut_href: nil, **args)
+ add_primary_menu_item(**args)
+ add_shortcut(
+ id: "#{args.fetch(:id)}-shortcut",
+ title: args.fetch(:title),
+ href: shortcut_href || args.fetch(:href),
+ css_class: shortcut_class
+ )
+ end
def add_view(name, props)
@views[name] = props
@@ -19,6 +44,7 @@ module Gitlab
menu.merge({
views: @views,
+ shortcuts: @shortcuts,
activeTitle: _('Menu')
})
end