Commit c5f25f65 authored by Phil Hughes's avatar Phil Hughes

Top navigation redesign

Start of the new navigation by redesigning just the top navigation menu.
This is only shown when a cookie is set.

Part of #32794
parent 78ee24ba
...@@ -299,9 +299,10 @@ $(function () { ...@@ -299,9 +299,10 @@ $(function () {
// Commit show suppressed diff // Commit show suppressed diff
}); });
$('.navbar-toggle').on('click', function () { $('.navbar-toggle').on('click', function () {
$('.header-content .title').toggle(); $('.header-content .title, .header-content .navbar-sub-nav').toggle();
$('.header-content .header-logo').toggle(); $('.header-content .header-logo').toggle();
$('.header-content .navbar-collapse').toggle(); $('.header-content .navbar-collapse').toggle();
$('.js-navbar-toggle-left, .js-navbar-toggle-right').toggle();
return $('.navbar-toggle').toggleClass('active'); return $('.navbar-toggle').toggleClass('active');
}); });
// Show/hide comments on diff // Show/hide comments on diff
......
...@@ -34,6 +34,8 @@ header { ...@@ -34,6 +34,8 @@ header {
top: 0; top: 0;
left: 0; left: 0;
right: 0; right: 0;
color: $gl-text-color-secondary;
border-radius: 0;
@media (max-width: $screen-xs-min) { @media (max-width: $screen-xs-min) {
padding: 0 16px; padding: 0 16px;
...@@ -59,7 +61,7 @@ header { ...@@ -59,7 +61,7 @@ header {
padding: 0; padding: 0;
.nav > li > a { .nav > li > a {
color: $gl-text-color-secondary; color: currentColor;
font-size: 18px; font-size: 18px;
padding: 0; padding: 0;
margin: (($header-height - 28) / 2) 3px; margin: (($header-height - 28) / 2) 3px;
...@@ -84,7 +86,7 @@ header { ...@@ -84,7 +86,7 @@ header {
&:hover, &:hover,
&:focus, &:focus,
&:active { &:active {
background-color: $gray-light; background-color: transparent;
color: $gl-text-color; color: $gl-text-color;
svg { svg {
...@@ -102,7 +104,7 @@ header { ...@@ -102,7 +104,7 @@ header {
height: 17px; height: 17px;
// hack to get SVG to line up with FA icons // hack to get SVG to line up with FA icons
width: 23px; width: 23px;
fill: $gl-text-color-secondary; fill: currentColor;
} }
} }
...@@ -346,6 +348,7 @@ header { ...@@ -346,6 +348,7 @@ header {
width: auto; width: auto;
min-width: 140px; min-width: 140px;
margin-top: -5px; margin-top: -5px;
color: $gl-text-color;
.current-user { .current-user {
padding: 5px 18px; padding: 5px 18px;
......
@import "framework/variables";
@import 'framework/tw_bootstrap_variables';
@import "bootstrap/variables";
header.navbar-gitlab-new {
color: #f5f5f5;
background-color: #2d2d2d;
.header-content {
padding-left: 0;
.title-container {
padding-top: 0;
overflow: visible;
}
.title {
padding-top: 14px;
padding-right: 10px;
color: currentColor;
@media (min-width: $screen-sm-min) {
padding-right: 20px;
}
}
.dropdown.open {
> a {
border-bottom-color: #4180ec;
}
}
.dropdown-menu {
margin-top: 4px;
min-width: 130px;
}
}
.navbar-collapse {
color: #d5d5d5;
}
.container-fluid {
.navbar-toggle {
border-left: 1px solid currentColor;
&:hover,
&:focus,
&.active {
color: currentColor;
background-color: transparent;
}
}
.navbar-toggle-left {
right: 0;
border-left: 0;
border-right: 1px solid currentColor;
}
.navbar-nav {
@media (max-width: $screen-xs-max) {
padding-right: 10px;
}
}
.nav > li > a:hover,
.nav > li > a:focus {
color: #f5f5f5;
> svg {
fill: #f5f5f5;
}
}
}
}
.navbar-sub-nav {
display: flex;
margin-bottom: 0;
color: #d5d5d5;
> li {
&.active > a {
border-bottom-color: #4180ec;
}
> a {
display: block;
padding: 16px 9px 13px;
font-size: 13px;
color: currentColor;
border-bottom: 3px solid transparent;
@media (min-width: $screen-sm-min) {
padding: 15px 15px 12px;
font-size: 14px;
}
&:hover,
&:focus {
color: #f5f5f5;
text-decoration: none;
}
}
}
.dropdown-chevron {
font-size: 12px;
}
}
.search {
form,
.search-input {
background-color: #525252;
}
.search-input,
.search-input::placeholder {
color: #f5f5f5;
}
}
...@@ -300,4 +300,8 @@ module ApplicationHelper ...@@ -300,4 +300,8 @@ module ApplicationHelper
"https://www.twitter.com/#{name}" "https://www.twitter.com/#{name}"
end end
end end
def show_new_nav?
cookies["new_nav"] == "true"
end
end end
...@@ -30,6 +30,9 @@ ...@@ -30,6 +30,9 @@
= stylesheet_link_tag "test", media: "all" if Rails.env.test? = stylesheet_link_tag "test", media: "all" if Rails.env.test?
= stylesheet_link_tag 'peek' if peek_enabled? = stylesheet_link_tag 'peek' if peek_enabled?
- if show_new_nav?
= stylesheet_link_tag "new_nav", media: "all"
= Gon::Base.render_data = Gon::Base.render_data
= webpack_bundle_tag "runtime" = webpack_bundle_tag "runtime"
......
...@@ -4,6 +4,9 @@ ...@@ -4,6 +4,9 @@
%body{ class: @body_class, data: { page: body_data_page, project: "#{@project.path if @project}", group: "#{@group.path if @group}" } } %body{ class: @body_class, data: { page: body_data_page, project: "#{@project.path if @project}", group: "#{@group.path if @group}" } }
= render "layouts/init_auto_complete" if @gfm_form = render "layouts/init_auto_complete" if @gfm_form
= render 'peek/bar' = render 'peek/bar'
- if show_new_nav?
= render "layouts/header/new"
- else
= render "layouts/header/default", title: header_title = render "layouts/header/default", title: header_title
= render 'layouts/page', sidebar: sidebar, nav: nav = render 'layouts/page', sidebar: sidebar, nav: nav
......
%header.navbar.navbar-gitlab.navbar-gitlab-new{ class: nav_header_class }
%a.sr-only.gl-accessibility{ href: "#content-body", tabindex: "1" } Skip to content
.container-fluid
.header-content
.header-logo
= link_to root_path, class: 'home', title: 'Dashboard', id: 'logo' do
= brand_header_logo
.title-container
%h1.title
GitLab
- if current_user
= render "layouts/nav/new_dashboard"
%button.navbar-toggle.navbar-toggle-left.hide.hidden-sm.hidden-md.hidden-lg.js-navbar-toggle-left{ type: 'button' }
%span.sr-only Toggle navigation
= icon('chevron-left')
.navbar-collapse.collapse
%ul.nav.navbar-nav
%li.hidden-sm.hidden-xs
= render 'layouts/search' unless current_controller?(:search)
%li.visible-sm-inline-block.visible-xs-inline-block
= link_to search_path, title: 'Search', aria: { label: "Search" }, data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do
= icon('search')
- if current_user
- if session[:impersonator_id]
%li.impersonation
= link_to admin_impersonation_path, method: :delete, title: "Stop impersonation", aria: { label: 'Stop impersonation' }, data: { toggle: 'tooltip', placement: 'bottom', container: 'body' } do
= icon('user-secret fw')
- if current_user.admin?
%li
= link_to admin_root_path, title: 'Admin area', aria: { label: "Admin area" }, data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do
= icon('wrench fw')
= render 'layouts/header/new_dropdown'
- if Gitlab::Sherlock.enabled?
%li
= link_to sherlock_transactions_path, title: 'Sherlock Transactions',
data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do
= icon('tachometer fw')
%li
= link_to assigned_issues_dashboard_path, title: 'Issues', aria: { label: "Issues" }, data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do
= icon('hashtag fw')
- issues_count = assigned_issuables_count(:issues)
%span.badge.issues-count{ class: ('hidden' if issues_count.zero?) }
= number_with_delimiter(issues_count)
%li
= link_to assigned_mrs_dashboard_path, title: 'Merge requests', aria: { label: "Merge requests" }, data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do
= custom_icon('mr_bold')
- merge_requests_count = assigned_issuables_count(:merge_requests)
%span.badge.merge-requests-count{ class: ('hidden' if merge_requests_count.zero?) }
= number_with_delimiter(merge_requests_count)
%li
= link_to dashboard_todos_path, title: 'Todos', aria: { label: "Todos" }, class: 'shortcuts-todos', data: {toggle: 'tooltip', placement: 'bottom', container: 'body'} do
= icon('check-circle fw')
%span.badge.todos-count{ class: ('hidden' if todos_pending_count.zero?) }
= todos_count_format(todos_pending_count)
%li.header-user.dropdown
= link_to current_user, class: "header-user-dropdown-toggle", data: { toggle: "dropdown" } do
= image_tag avatar_icon(current_user, 26), width: 26, height: 26, class: "header-user-avatar"
= icon('caret-down')
.dropdown-menu-nav.dropdown-menu-align-right
%ul
%li.current-user
.user-name.bold
= current_user.name
@#{current_user.username}
%li.divider
%li
= link_to "Profile", current_user, class: 'profile-link', data: { user: current_user.username }
%li
= link_to "Settings", profile_path
%li.divider
%li
= link_to "Sign out", destroy_user_session_path, method: :delete, class: "sign-out-link"
- else
%li
%div
= link_to "Sign in", new_session_path(:user, redirect_to_referer: 'yes'), class: 'btn btn-sign-in btn-success'
%button.navbar-toggle.hidden-sm.hidden-md.hidden-lg.js-navbar-toggle-right{ type: 'button' }
%span.sr-only Toggle navigation
= icon('chevron-right')
= yield :header_content
= render 'shared/outdated_browser'
- if @project && !@project.empty_repo?
- if ref = @ref || @project.repository.root_ref
:javascript
var findFileURL = "#{namespace_project_find_file_path(@project.namespace, @project, ref)}";
%ul.list-unstyled.navbar-sub-nav
= nav_link(path: ['root#index', 'projects#trending', 'projects#starred', 'dashboard/projects#index'], html_options: {class: "#{project_tab_class} home"}) do
= link_to dashboard_projects_path, title: 'Projects', class: 'dashboard-shortcuts-projects' do
Projects
= nav_link(controller: [:groups, 'groups/milestones', 'groups/group_members']) do
= link_to dashboard_groups_path, class: 'dashboard-shortcuts-groups', title: 'Groups' do
Groups
= nav_link(path: 'dashboard#activity', html_options: { class: "hidden-xs hidden-sm" }) do
= link_to activity_dashboard_path, class: 'dashboard-shortcuts-activity', title: 'Activity' do
Activity
%li.dropdown
%a{ href: "#", data: { toggle: "dropdown" } }
More
= icon("chevron-down", class: "dropdown-chevron")
.dropdown-menu
%ul
= nav_link(path: 'dashboard#activity', html_options: { class: "visible-xs visible-sm" }) do
= link_to activity_dashboard_path, title: 'Activity' do
Activity
= nav_link(controller: 'dashboard/milestones') do
= link_to dashboard_milestones_path, class: 'dashboard-shortcuts-milestones', title: 'Milestones' do
Milestones
= nav_link(controller: 'dashboard/snippets') do
= link_to dashboard_snippets_path, class: 'dashboard-shortcuts-snippets', title: 'Snippets' do
Snippets
...@@ -109,6 +109,7 @@ module Gitlab ...@@ -109,6 +109,7 @@ module Gitlab
config.assets.precompile << "lib/ace.js" config.assets.precompile << "lib/ace.js"
config.assets.precompile << "vendor/assets/fonts/*" config.assets.precompile << "vendor/assets/fonts/*"
config.assets.precompile << "test.css" config.assets.precompile << "test.css"
config.assets.precompile << "new_nav.css"
# Version of your assets, change this if you want to expire all your assets # Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0' config.assets.version = '1.0'
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment