diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 21:25:58 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 21:25:58 +0300 |
commit | a5f4bba440d7f9ea47046a0a561d49adf0a1e6d4 (patch) | |
tree | fb69158581673816a8cd895f9d352dcb3c678b1e /lib/gitlab/nav | |
parent | d16b2e8639e99961de6ddc93909f3bb5c1445ba1 (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.rb | 6 | ||||
-rw-r--r-- | lib/gitlab/nav/top_nav_view_model_builder.rb | 28 |
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 |