Commit 8b3b6f1096497ad63bbd4cd9bf78fa913ae345b5

Authored by Drew Blessing
1 parent 8f8db776

Mobile UI improvements for dashboard/nav

Style navbar toggle button

Style navbar toggle manually instead of with button classes

Style navbar

Modify color

Turn off all tooltips for touch devices

Style main nav

Fix scrolling navbar collapse

Style tweaks

Minor tweaks

Style no ssh key message
app/assets/stylesheets/generic/common.scss
@@ -327,6 +327,12 @@ li.note { @@ -327,6 +327,12 @@ li.note {
327 color: #fff; 327 color: #fff;
328 text-decoration: underline; 328 text-decoration: underline;
329 } 329 }
  330 +
  331 + .links-xs {
  332 + text-align: center;
  333 + font-size: 16px;
  334 + padding: 5px;
  335 + }
330 } 336 }
331 337
332 .warning_message { 338 .warning_message {
@@ -485,3 +491,7 @@ table { @@ -485,3 +491,7 @@ table {
485 margin-bottom: 15px; 491 margin-bottom: 15px;
486 } 492 }
487 } 493 }
  494 +
  495 +@media (max-width: $screen-xs-max) {
  496 + .container .content { margin-top: 20px; }
  497 +}
app/assets/stylesheets/main/layout.scss
1 html { 1 html {
2 overflow-y: scroll; 2 overflow-y: scroll;
  3 +
  4 + &.touch .tooltip { display: none !important; }
3 } 5 }
4 6
5 body { 7 body {
app/assets/stylesheets/sections/header.scss
@@ -29,6 +29,59 @@ header { @@ -29,6 +29,59 @@ header {
29 float: right; 29 float: right;
30 margin-right: 0; 30 margin-right: 0;
31 } 31 }
  32 +
  33 + .navbar-toggle {
  34 + color: $style_color;
  35 + margin: 0 -15px 0 0;
  36 + padding: 10px;
  37 + border-radius: 0;
  38 +
  39 + button i { font-size: 22px; }
  40 +
  41 + &.collapsed { background-color: transparent !important;}
  42 +
  43 + &:hover {
  44 + background-color: #EEE;
  45 + }
  46 + }
  47 + }
  48 +
  49 + @media (max-width: $screen-xs-max) {
  50 + border-width: 0;
  51 + font-size: 18px;
  52 +
  53 + .app_logo { margin-left: -15px; }
  54 + .project_name {
  55 + display: inline-block;
  56 + overflow: hidden;
  57 + text-overflow: ellipsis;
  58 + vertical-align: top;
  59 + white-space: nowrap;
  60 + max-width: 70%;
  61 + }
  62 +
  63 + .navbar-collapse {
  64 + padding-right: 0;
  65 + padding-left: 0;
  66 + }
  67 +
  68 + .navbar-nav {
  69 + margin: 5px 0;
  70 +
  71 + .visible-xs, .visable-sm {
  72 + display: table-cell !important;
  73 + }
  74 + }
  75 +
  76 + li {
  77 + display: table-cell;
  78 + width: 1%;
  79 +
  80 + a {
  81 + text-align: center;
  82 + font-size: 18px !important;
  83 + }
  84 + }
32 } 85 }
33 } 86 }
34 87
@@ -128,6 +181,8 @@ header { @@ -128,6 +181,8 @@ header {
128 background: #708090; 181 background: #708090;
129 border-bottom: 1px solid #AAA; 182 border-bottom: 1px solid #AAA;
130 183
  184 + .navbar-toggle { color: #fff; }
  185 +
131 .nav > li > a { 186 .nav > li > a {
132 color: #AAA; 187 color: #AAA;
133 text-shadow: 0 1px 0 #444; 188 text-shadow: 0 1px 0 #444;
app/assets/stylesheets/sections/nav.scss
@@ -83,4 +83,38 @@ @@ -83,4 +83,38 @@
83 padding-top: 2px; 83 padding-top: 2px;
84 } 84 }
85 } 85 }
  86 +
  87 + @media (max-width: $screen-xs-max) {
  88 + font-size: 18px;
  89 + margin: 0;
  90 +
  91 + max-height: none;
  92 +
  93 + &, .container {
  94 + padding: 0;
  95 + border-top: 0;
  96 + }
  97 +
  98 + ul {
  99 + height: auto;
  100 +
  101 + li {
  102 + display: list-item;
  103 + width: auto;
  104 + padding: 5px 0;
  105 +
  106 + &.active {
  107 + background-color: $primary_color;
  108 +
  109 + a {
  110 + color: #fff;
  111 + font-weight: normal;
  112 + text-shadow: none;
  113 +
  114 + &:after { display: none; }
  115 + }
  116 + }
  117 + }
  118 + }
  119 + }
86 } 120 }
app/assets/stylesheets/themes/ui_color.scss
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 .navbar-inner { 18 .navbar-inner {
19 background: #547; 19 background: #547;
20 border-bottom: 1px solid #435; 20 border-bottom: 1px solid #435;
21 - .app_logo { 21 + .app_logo, .navbar-toggle {
22 &:hover { 22 &:hover {
23 background-color: #435; 23 background-color: #435;
24 } 24 }
app/assets/stylesheets/themes/ui_gray.scss
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 .navbar-inner { 18 .navbar-inner {
19 background: #373737; 19 background: #373737;
20 border-bottom: 1px solid #272727; 20 border-bottom: 1px solid #272727;
21 - .app_logo { 21 + .app_logo, .navbar-toggle {
22 &:hover { 22 &:hover {
23 background-color: #272727; 23 background-color: #272727;
24 } 24 }
app/assets/stylesheets/themes/ui_mars.scss
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 .navbar-inner { 18 .navbar-inner {
19 background: #474D57; 19 background: #474D57;
20 border-bottom: 1px solid #373D47; 20 border-bottom: 1px solid #373D47;
21 - .app_logo { 21 + .app_logo, .navbar-toggle {
22 &:hover { 22 &:hover {
23 background-color: #373D47; 23 background-color: #373D47;
24 } 24 }
app/assets/stylesheets/themes/ui_modern.scss
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
18 .navbar-inner { 18 .navbar-inner {
19 background: #345; 19 background: #345;
20 border-bottom: 1px solid #234; 20 border-bottom: 1px solid #234;
21 - .app_logo { 21 + .app_logo, .navbar-toggle {
22 &:hover { 22 &:hover {
23 background-color: #234; 23 background-color: #234;
24 } 24 }
app/views/dashboard/show.html.haml
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 .dashboard.row 2 .dashboard.row
3 .activities.col-md-8 3 .activities.col-md-8
4 = render 'activities' 4 = render 'activities'
5 - .side.col-md-4.hidden-sm 5 + .side.col-md-4.hidden-sm.hidden-xs
6 = render 'sidebar' 6 = render 'sidebar'
7 7
8 - else 8 - else
app/views/layouts/_head_panel.html.haml
@@ -14,14 +14,14 @@ @@ -14,14 +14,14 @@
14 14
15 .navbar-collapse.collapse 15 .navbar-collapse.collapse
16 %ul.nav.navbar-nav 16 %ul.nav.navbar-nav
17 - %li 17 + %li.hidden-sm.hidden-xs
18 %a 18 %a
19 %div.hide.turbolink-spinner 19 %div.hide.turbolink-spinner
20 %i.icon-refresh.icon-spin 20 %i.icon-refresh.icon-spin
21 Loading... 21 Loading...
22 - %li.hidden-sm 22 + %li.hidden-sm.hidden-xs
23 = render "layouts/search" 23 = render "layouts/search"
24 - %li.visible-sm 24 + %li.visible-sm.visible-xs
25 = link_to search_path, title: "Search", class: 'has_bottom_tooltip', 'data-original-title' => 'Search area' do 25 = link_to search_path, title: "Search", class: 'has_bottom_tooltip', 'data-original-title' => 'Search area' do
26 %i.icon-search 26 %i.icon-search
27 %li 27 %li
app/views/layouts/admin.html.haml
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 %body{class: "#{app_theme} admin", :'data-page' => body_data_page} 4 %body{class: "#{app_theme} admin", :'data-page' => body_data_page}
5 = render "layouts/head_panel", title: "Admin area" 5 = render "layouts/head_panel", title: "Admin area"
6 = render "layouts/flash" 6 = render "layouts/flash"
7 - %nav.main-nav 7 + %nav.main-nav.navbar-collapse.collapse
8 .container= render 'layouts/nav/admin' 8 .container= render 'layouts/nav/admin'
9 9
10 .container 10 .container
app/views/layouts/application.html.haml
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 = render "layouts/broadcast" 5 = render "layouts/broadcast"
6 = render "layouts/head_panel", title: "Dashboard" 6 = render "layouts/head_panel", title: "Dashboard"
7 = render "layouts/flash" 7 = render "layouts/flash"
8 - %nav.main-nav 8 + %nav.main-nav.navbar-collapse.collapse
9 .container= render 'layouts/nav/dashboard' 9 .container= render 'layouts/nav/dashboard'
10 10
11 .container 11 .container
app/views/layouts/group.html.haml
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 = render "layouts/broadcast" 5 = render "layouts/broadcast"
6 = render "layouts/head_panel", title: "group: #{@group.name}" 6 = render "layouts/head_panel", title: "group: #{@group.name}"
7 = render "layouts/flash" 7 = render "layouts/flash"
8 - %nav.main-nav 8 + %nav.main-nav.navbar-collapse.collapse
9 .container= render 'layouts/nav/group' 9 .container= render 'layouts/nav/group'
10 10
11 .container 11 .container
app/views/layouts/profile.html.haml
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 = render "layouts/broadcast" 5 = render "layouts/broadcast"
6 = render "layouts/head_panel", title: "Profile" 6 = render "layouts/head_panel", title: "Profile"
7 = render "layouts/flash" 7 = render "layouts/flash"
8 - %nav.main-nav 8 + %nav.main-nav.navbar-collapse.collapse
9 .container= render 'layouts/nav/profile' 9 .container= render 'layouts/nav/profile'
10 10
11 .container 11 .container
app/views/layouts/project_settings.html.haml
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 - if can?(current_user, :download_code, @project) 9 - if can?(current_user, :download_code, @project)
10 = render 'shared/no_ssh' 10 = render 'shared/no_ssh'
11 11
12 - %nav.main-nav 12 + %nav.main-nav.navbar-collapse.collapse
13 .container= render 'layouts/nav/project' 13 .container= render 'layouts/nav/project'
14 14
15 .container 15 .container
app/views/layouts/projects.html.haml
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 - if can?(current_user, :download_code, @project) 9 - if can?(current_user, :download_code, @project)
10 = render 'shared/no_ssh' 10 = render 'shared/no_ssh'
11 11
12 - %nav.main-nav 12 + %nav.main-nav.navbar-collapse.collapse
13 .container= render 'layouts/nav/project' 13 .container= render 'layouts/nav/project'
14 14
15 .container 15 .container
app/views/layouts/public_projects.html.haml
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
3 = render "layouts/head", title: @project.name_with_namespace 3 = render "layouts/head", title: @project.name_with_namespace
4 %body{class: "#{app_theme} application", :'data-page' => body_data_page} 4 %body{class: "#{app_theme} application", :'data-page' => body_data_page}
5 = render "layouts/public_head_panel" 5 = render "layouts/public_head_panel"
6 - %nav.main-nav 6 + %nav.main-nav.navbar-collapse.collapse
7 .container= render 'layouts/nav/project' 7 .container= render 'layouts/nav/project'
8 .container 8 .container
9 .content= yield 9 .content= yield
app/views/layouts/user_team.html.haml
@@ -4,7 +4,7 @@ @@ -4,7 +4,7 @@
4 %body{class: "#{app_theme} application", :'data-page' => body_data_page} 4 %body{class: "#{app_theme} application", :'data-page' => body_data_page}
5 = render "layouts/head_panel", title: "team: #{@team.name}" 5 = render "layouts/head_panel", title: "team: #{@team.name}"
6 = render "layouts/flash" 6 = render "layouts/flash"
7 - %nav.main-nav 7 + %nav.main-nav.navbar-collapse.collapse
8 .container= render 'layouts/nav/team' 8 .container= render 'layouts/nav/team'
9 9
10 .container 10 .container
app/views/shared/_no_ssh.html.haml
@@ -2,7 +2,13 @@ @@ -2,7 +2,13 @@
2 .no-ssh-key-message 2 .no-ssh-key-message
3 .container 3 .container
4 You won't be able to pull or push project code via SSH until you #{link_to 'add an SSH key', new_profile_key_path} to your profile 4 You won't be able to pull or push project code via SSH until you #{link_to 'add an SSH key', new_profile_key_path} to your profile
5 - %div.pull-right 5 + .pull-right.hidden-xs
6 = link_to "Don't show again", profile_path(user: {hide_no_ssh_key: true}), method: :put, class: 'hide-no-ssh-message', remote: true 6 = link_to "Don't show again", profile_path(user: {hide_no_ssh_key: true}), method: :put, class: 'hide-no-ssh-message', remote: true
7 | 7 |
8 = link_to 'Remind later', '#', class: 'hide-no-ssh-message' 8 = link_to 'Remind later', '#', class: 'hide-no-ssh-message'
  9 + .links-xs.visible-xs
  10 + = link_to "Add key", new_profile_key_path
  11 + |
  12 + = link_to "Don't show again", profile_path(user: {hide_no_ssh_key: true}), method: :put, class: 'hide-no-ssh-message', remote: true
  13 + |
  14 + = link_to 'Later', '#', class: 'hide-no-ssh-message'