summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnnabel Dunstone Gray <annabel.dunstone@gmail.com>2017-07-17 17:33:12 -0500
committerAnnabel Dunstone Gray <annabel.dunstone@gmail.com>2017-07-18 13:37:43 -0500
commitcb83c50d4663532b5b1729b27301d22102c17524 (patch)
tree7e13b20323c6317a90851df737b21035003bdcf6
parentfe0c3b79d92348f54c61b81635be65f895d2f712 (diff)
downloadgitlab-ce-cb83c50d4663532b5b1729b27301d22102c17524.tar.gz
Add mobile navigation on project page
-rw-r--r--app/assets/javascripts/layout_nav.js2
-rw-r--r--app/assets/javascripts/new_sidebar.js23
-rw-r--r--app/assets/stylesheets/new_nav.scss3
-rw-r--r--app/assets/stylesheets/new_sidebar.scss99
-rw-r--r--app/views/layouts/nav/_breadcrumbs.html.haml2
-rw-r--r--app/views/layouts/nav/_new_project_sidebar.html.haml13
6 files changed, 114 insertions, 28 deletions
diff --git a/app/assets/javascripts/layout_nav.js b/app/assets/javascripts/layout_nav.js
index 71064ccc539..e8f59f30035 100644
--- a/app/assets/javascripts/layout_nav.js
+++ b/app/assets/javascripts/layout_nav.js
@@ -1,5 +1,6 @@
/* eslint-disable func-names, space-before-function-paren, no-var, prefer-arrow-callback, no-unused-vars, one-var, one-var-declaration-per-line, vars-on-top, max-len */
import _ from 'underscore';
+import NewNavSidebar from './new_sidebar';
(function() {
var hideEndFade;
@@ -53,6 +54,7 @@ import _ from 'underscore';
}
$(() => {
+ new NewNavSidebar();
$(window).on('scroll', _.throttle(applyScrollNavClass, 100));
});
}).call(window);
diff --git a/app/assets/javascripts/new_sidebar.js b/app/assets/javascripts/new_sidebar.js
new file mode 100644
index 00000000000..4aadeb6b462
--- /dev/null
+++ b/app/assets/javascripts/new_sidebar.js
@@ -0,0 +1,23 @@
+const SIDEBAR_EXPANDED_CLASS = 'nav-sidebar-expanded';
+
+export default class NewNavSidebar {
+ constructor() {
+ this.initDomElements();
+ this.bindEvents();
+ }
+
+ initDomElements() {
+ this.$sidebar = $('.nav-sidebar');
+ this.$openSidebar = $('.toggle-mobile-nav');
+ this.$closeSidebar = $('.close-nav-button');
+ }
+
+ bindEvents() {
+ this.$openSidebar.on('click', e => this.toggleSidebarNav(e, true));
+ this.$closeSidebar.on('click', e => this.toggleSidebarNav(e, false));
+ }
+
+ toggleSidebarNav(show) {
+ this.$sidebar.toggleClass(SIDEBAR_EXPANDED_CLASS, show);
+ }
+}
diff --git a/app/assets/stylesheets/new_nav.scss b/app/assets/stylesheets/new_nav.scss
index 393d5006e24..03ba0afe940 100644
--- a/app/assets/stylesheets/new_nav.scss
+++ b/app/assets/stylesheets/new_nav.scss
@@ -275,8 +275,6 @@ header.navbar-gitlab-new {
.breadcrumbs {
display: flex;
min-height: 60px;
- padding-top: $gl-padding-top;
- padding-bottom: $gl-padding-top;
color: $gl-text-color;
border-bottom: 1px solid $border-color;
@@ -300,6 +298,7 @@ header.navbar-gitlab-new {
display: flex;
width: 100%;
position: relative;
+ align-items: center;
.dropdown-menu-projects {
margin-top: -$gl-padding;
diff --git a/app/assets/stylesheets/new_sidebar.scss b/app/assets/stylesheets/new_sidebar.scss
index 82cabefa129..eaf7daaa5cf 100644
--- a/app/assets/stylesheets/new_sidebar.scss
+++ b/app/assets/stylesheets/new_sidebar.scss
@@ -26,41 +26,75 @@ $new-sidebar-width: 220px;
}
.context-header {
- border-bottom: 1px solid $border-color;
- font-weight: 600;
- display: flex;
- align-items: center;
- padding: 10px 16px 10px 10px;
- color: $gl-text-color;
+ position: relative;
- .avatar-container {
- flex: 0 0 40px;
- background-color: $white-light;
- }
-
- &:hover {
- background-color: $hover-background;
- color: $hover-color;
- border-color: $hover-background;
+ a {
+ border-bottom: 1px solid $border-color;
+ font-weight: 600;
+ display: flex;
+ align-items: center;
+ padding: 10px 16px 10px 10px;
+ color: $gl-text-color;
- .avatar-container {
- border-color: transparent;
+ @media (max-width: $screen-xs-max) {
+ padding-right: 30px;
}
- .settings-avatar {
- background-color: $indigo-500;
+ &:hover {
+ background-color: $hover-background;
+ color: $hover-color;
+ border-color: $hover-background;
- i {
- color: $hover-color;
+ .avatar-container {
+ border-color: transparent;
+ }
+
+ .settings-avatar {
+ background-color: $indigo-500;
+
+ i {
+ color: $hover-color;
+ }
}
}
}
+ .avatar-container {
+ flex: 0 0 40px;
+ background-color: $white-light;
+ }
+
.project-title,
.group-title {
overflow: hidden;
text-overflow: ellipsis;
}
+
+
+ &:hover {
+ .close-nav-button {
+ color: $white-light;
+ }
+ }
+
+ .close-nav-button {
+ display: none;
+ position: absolute;
+ top: 0;
+ right: 0;
+ height: 100%;
+ background-color: transparent;
+ border: 0;
+ padding: 0 10px;
+
+ @media (max-width: $screen-xs-max) {
+ display: block;
+ }
+
+ &:hover {
+ color: $gl-text-color;
+ }
+ }
}
.settings-avatar {
@@ -89,6 +123,10 @@ $new-sidebar-width: 220px;
background-color: $gray-normal;
box-shadow: inset -2px 0 0 $border-color;
+ &.nav-sidebar-expanded {
+ width: $new-sidebar-width;
+ }
+
a {
text-decoration: none;
}
@@ -185,6 +223,25 @@ $new-sidebar-width: 220px;
}
}
+.toggle-mobile-nav {
+ display: none;
+ background-color: transparent;
+ border: 0;
+ padding: 6px 16px;
+ margin: 0 16px 0 -15px;
+ height: 46px;
+ border-right: 1px solid $gl-text-color-quaternary;
+
+ i {
+ font-size: 20px;
+ color: $gl-text-color-secondary;
+ }
+
+ @media (max-width: $screen-xs-max) {
+ display: inline-block;
+ }
+}
+
// Make issue boards full-height now that sub-nav is gone
diff --git a/app/views/layouts/nav/_breadcrumbs.html.haml b/app/views/layouts/nav/_breadcrumbs.html.haml
index b0c1ab7420f..475d89f1156 100644
--- a/app/views/layouts/nav/_breadcrumbs.html.haml
+++ b/app/views/layouts/nav/_breadcrumbs.html.haml
@@ -3,6 +3,8 @@
%nav.breadcrumbs{ role: "navigation" }
.breadcrumbs-container{ class: [container_class, @content_class] }
+ %button.toggle-mobile-nav
+ = icon ('bars')
.breadcrumbs-links.js-title-container
- unless hide_top_links
.title
diff --git a/app/views/layouts/nav/_new_project_sidebar.html.haml b/app/views/layouts/nav/_new_project_sidebar.html.haml
index 7c9822c5a6a..baf257d06e0 100644
--- a/app/views/layouts/nav/_new_project_sidebar.html.haml
+++ b/app/views/layouts/nav/_new_project_sidebar.html.haml
@@ -1,10 +1,13 @@
.nav-sidebar
- can_edit = can?(current_user, :admin_project, @project)
- = link_to project_path(@project), title: @project.name, class: 'context-header' do
- .avatar-container.s40.project-avatar
- = project_icon(@project, alt: @project.name, class: 'avatar s40 avatar-tile')
- .project-title
- = @project.name
+ .context-header
+ = link_to project_path(@project), title: @project.name do
+ .avatar-container.s40.project-avatar
+ = project_icon(@project, alt: @project.name, class: 'avatar s40 avatar-tile')
+ .project-title
+ = @project.name
+ %button.close-nav-button
+ = icon('times')
%ul.sidebar-top-level-items
= nav_link(path: ['projects#show', 'projects#activity', 'cycle_analytics#show'], html_options: { class: 'home' }) do
= link_to project_path(@project), title: 'Project', class: 'shortcuts-project' do