ux: side nav experiments

This commit is contained in:
Torkel Ödegaard
2017-06-12 16:46:02 +02:00
parent ff2394709d
commit f341a21b01
7 changed files with 80 additions and 71 deletions
@@ -5,9 +5,9 @@
</span> </span>
</a> </a>
<a class="navbar-page-btn navbar-page-btn--search" ng-click="ctrl.showSearch()"> <!-- <a class="navbar&#45;page&#45;btn navbar&#45;page&#45;btn&#45;&#45;search" ng&#45;click="ctrl.showSearch()"> -->
<i class="fa fa-search"></i> <!-- <i class="fa fa&#45;search"></i> -->
</a> <!-- </a> -->
<div ng-if="::!ctrl.hasMenu"> <div ng-if="::!ctrl.hasMenu">
<a href="{{::ctrl.section.url}}" class="navbar-page-btn"> <a href="{{::ctrl.section.url}}" class="navbar-page-btn">
@@ -25,7 +25,7 @@
<i class="fa fa-caret-down"></i> <i class="fa fa-caret-down"></i>
</a> </a>
<ul class="dropdown-menu dropdown-menu--navbar"> <ul class="dropdown-menu dropdown-menu--navbar">
<li ng-repeat="navItem in ::ctrl.model.menu" ng-class="{active: navItem.active}"> <li ng-repeat="navItem in ::ctrl.model.menu">
<a class="pointer" ng-href="{{::navItem.url}}" ng-click="ctrl.navItemClicked(navItem, $event)"> <a class="pointer" ng-href="{{::navItem.url}}" ng-click="ctrl.navItemClicked(navItem, $event)">
<i class="{{::navItem.icon}}" ng-show="::navItem.icon"></i> <i class="{{::navItem.icon}}" ng-show="::navItem.icon"></i>
{{::navItem.title}} {{::navItem.title}}
@@ -1,14 +1,19 @@
<ul class="sidemenu"> <ul class="sidemenu">
<li>
<a class="sidemenu-item" ng-click="ctrl.search()">
<span class="icon-circle sidemenu-icon"><i class="fa fa-fw fa-search"></i></span>
</a>
</li>
<li ng-repeat="item in ::ctrl.mainLinks" class="dropdown"> <li ng-repeat="item in ::ctrl.mainLinks" class="dropdown">
<a href="{{::item.url}}" class="sidemenu-item sidemenu-main-link" target="{{::item.target}}"> <a href="{{::item.url}}" class="sidemenu-item" target="{{::item.target}}">
<span class="icon-circle sidemenu-icon"> <span class="icon-circle sidemenu-icon">
<i class="{{::item.icon}}" ng-show="::item.icon"></i> <i class="{{::item.icon}}" ng-show="::item.icon"></i>
<img ng-src="{{::item.img}}" ng-show="::item.img"> <img ng-src="{{::item.img}}" ng-show="::item.img">
</span> </span>
</a> </a>
<ul class="dropdown-menu" role="menu" ng-if="::item.children"> <ul class="dropdown-menu dropdown-menu--sidemenu" role="menu" ng-if="::item.children">
<li class="side-menu-header"> <li class="side-menu-header">
<span class="sidemenu-item-text">{{::item.text}}</span> <span class="sidemenu-item-text">{{::item.text}}</span>
</li> </li>
@@ -29,7 +34,7 @@
</li> </li>
<li class="sidemenu-org-section" ng-if="::ctrl.isSignedIn" class="dropdown"> <li class="sidemenu-org-section" ng-if="::ctrl.isSignedIn" class="dropdown">
<a class="sidemenu-item sidemenu-main-link" href="profile"> <a class="sidemenu-item" href="profile">
<span class="icon-circle sidemenu-icon sidemenu-org-avatar"> <span class="icon-circle sidemenu-icon sidemenu-org-avatar">
<img ng-src="{{::ctrl.user.gravatarUrl}}"> <img ng-src="{{::ctrl.user.gravatarUrl}}">
<span class="sidemenu-org-avatar--missing"> <span class="sidemenu-org-avatar--missing">
@@ -37,7 +42,7 @@
</span> </span>
</div> </div>
</a> </a>
<ul class="dropdown-menu" role="menu"> <ul class="dropdown-menu dropdown-menu--sidemenu" role="menu">
<li class="side-menu-header"> <li class="side-menu-header">
<span class="sidemenu-org-user sidemenu-item-text">{{::ctrl.user.name}}</span> <span class="sidemenu-org-user sidemenu-item-text">{{::ctrl.user.name}}</span>
<span class="sidemenu-org-name sidemenu-item-text">{{::ctrl.user.orgName}}</span> <span class="sidemenu-org-name sidemenu-item-text">{{::ctrl.user.orgName}}</span>
@@ -62,12 +67,12 @@
</ul> </ul>
</li> </li>
<li> <li>
<a class="sidemenu-item" target="_self" ng-hide="ctrl.contextSrv.pinned" ng-click="ctrl.contextSrv.setPinnedState(true)"> <a class="sidemenu-item" target="_self" ng-hide="ctrl.contextSrv.pinned" ng-click="ctrl.contextSrv.setPinnedState(true)">
<span class="icon-circle sidemenu-icon"><i class="fa fa-fw fa-thumb-tack"></i></span> <span class="icon-circle sidemenu-icon"><i class="fa fa-fw fa-thumb-tack"></i></span>
<span class="sidemenu-item-text">Pin</span> <span class="sidemenu-item-text">Pin</span>
</a> </a>
</li> </li>
</ul> </ul>
+9 -2
View File
@@ -213,7 +213,7 @@ $wellBackground: #131517;
$navbarHeight: 52px; $navbarHeight: 52px;
$navbarBackgroundHighlight: $dark-3; $navbarBackgroundHighlight: $dark-3;
$navbarBackground: $dark-3; $navbarBackground: $panel-bg;
$navbarBorder: 1px solid $body-bg; $navbarBorder: 1px solid $body-bg;
$navbarText: $gray-4; $navbarText: $gray-4;
@@ -225,7 +225,7 @@ $navbarLinkBackgroundActive: $navbarBackground;
$navbarBrandColor: $link-color; $navbarBrandColor: $link-color;
$navbarDropdownShadow: inset 0px 4px 10px -4px $body-bg; $navbarDropdownShadow: inset 0px 4px 10px -4px $body-bg;
$navbarButtonBackground: lighten($navbarBackground, 3%); $navbarButtonBackground: $navbarBackground;
$navbarButtonBackgroundHighlight: lighten($navbarBackground, 5%); $navbarButtonBackgroundHighlight: lighten($navbarBackground, 5%);
// Sidemenu // Sidemenu
@@ -233,6 +233,13 @@ $navbarButtonBackgroundHighlight: lighten($navbarBackground, 5%);
$side-menu-bg: $dark-3; $side-menu-bg: $dark-3;
$side-menu-item-hover-bg: $dark-2; $side-menu-item-hover-bg: $dark-2;
// Menu dropdowns
// -------------------------
$menu-dropdown-bg: $body-bg;
$menu-dropdown-hover-bg: $dark-2;
$menu-dropdown-border-color: $dark-4;
// Pagination // Pagination
// ------------------------- // -------------------------
$paginationBackground: $body-bg; $paginationBackground: $body-bg;
+6 -1
View File
@@ -187,6 +187,12 @@ $input-invalid-border-color: lighten($red, 5%);
$side-menu-bg: $body-bg; $side-menu-bg: $body-bg;
$side-menu-item-hover-bg: $gray-6; $side-menu-item-hover-bg: $gray-6;
// Menu dropdowns
// -------------------------
$menu-dropdown-bg: $white;
$menu-dropdown-hover-bg: $gray-6;
$menu-dropdown-border-color: $tight-form-border;
// search // search
$search-shadow: 0 5px 30px 0 lighten($gray-2, 30%); $search-shadow: 0 5px 30px 0 lighten($gray-2, 30%);
@@ -206,7 +212,6 @@ $dropdownLinkColorActive: $link-color;
$dropdownLinkBackgroundActive: $gray-6; $dropdownLinkBackgroundActive: $gray-6;
$dropdownLinkBackgroundHover: $gray-6; $dropdownLinkBackgroundHover: $gray-6;
// COMPONENT VARIABLES // COMPONENT VARIABLES
// -------------------------------------------------- // --------------------------------------------------
+28
View File
@@ -90,8 +90,36 @@
} }
} }
} }
&--navbar {
top: 100%;
min-width: 100%;
}
&--navbar,
&--sidemenu {
background: $menu-dropdown-bg;
margin-top: 0px;
> li > a {
padding: $spacer/2 $spacer;
border-left: 2px solid transparent;
i {
display: inline-block;
padding-right: 21px;
}
&:hover {
@include left-brand-border-gradient();
color: $link-hover-color;
background: $input-label-bg !important;
}
}
}
} }
// Hover/Focus state // Hover/Focus state
// ----------- // -----------
.dropdown-menu > li > a:hover, .dropdown-menu > li > a:hover,
+1 -26
View File
@@ -60,9 +60,8 @@
position: relative; position: relative;
float: left; float: left;
margin: 0; margin: 0;
border-right: 1px solid $tight-form-border;
background-color: $navbarButtonBackground; background-color: $navbarButtonBackground;
padding: 0.4rem 1.0rem 0.4rem 1rem; padding: 0.4rem 2.0rem 0.4rem 1rem;
min-height:: $navbarHeight; min-height:: $navbarHeight;
.fa-caret-down { .fa-caret-down {
@@ -110,7 +109,6 @@
display: block; display: block;
margin: 0; margin: 0;
font-size: 1.4rem; font-size: 1.4rem;
border-right: 1px solid $tight-form-border;
color: darken($link-color, 5%); color: darken($link-color, 5%);
background-color: $navbarButtonBackground; background-color: $navbarButtonBackground;
font-size: $font-size-lg; font-size: $font-size-lg;
@@ -148,29 +146,6 @@
position: relative; position: relative;
} }
.dropdown-menu.dropdown-menu--navbar {
top: 100%;
min-width: 100%;
margin-top: 0px;
li a {
padding: $spacer/2 $spacer;
border-left: 2px solid $side-menu-bg;
background: $side-menu-bg;
i {
display: inline-block;
padding-right: 21px;
}
&:hover {
@include left-brand-border-gradient();
color: $link-hover-color;
background: $input-label-bg;
}
}
}
.navbar-section-wrapper { .navbar-section-wrapper {
position: relative; position: relative;
float: left; float: left;
+22 -33
View File
@@ -56,14 +56,21 @@
background-color: $side-menu-item-hover-bg; background-color: $side-menu-item-hover-bg;
@include left-brand-border-gradient(); @include left-brand-border-gradient();
.sidemenu-item {
border-top: 1px solid $menu-dropdown-border-color;
border-bottom: 1px solid $menu-dropdown-border-color;
}
.dropdown-menu { .dropdown-menu {
margin: 0;
display: block; display: block;
opacity: 0; opacity: 0;
top: 0px; top: 0px;
border: 1px solid $dark-4;
border-left: none;
// important to overlap it otherwise it can be hidden // important to overlap it otherwise it can be hidden
// again by the mouse getting outside the hover space // again by the mouse getting outside the hover space
left: $side-menu-width - 5px; left: $side-menu-width - 2px;
background-color: $side-menu-bg;
@include animation('dropdown-anim 0ms ease-in-out 0ms forwards'); @include animation('dropdown-anim 0ms ease-in-out 0ms forwards');
z-index: -9999; z-index: -9999;
} }
@@ -82,19 +89,6 @@
} }
} }
.sidemenu-main-link {
font-size: 16px;
}
.sidemenu-item-text {
width: 110px;
display: inline-block;
vertical-align: middle;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.icon-circle { .icon-circle {
width: 40px; width: 40px;
height: 40px; height: 40px;
@@ -104,9 +98,17 @@
opacity: .7; opacity: .7;
position: relative; position: relative;
left: 7px; left: 7px;
top: 5px;
font-size: 150%; font-size: 150%;
} }
.fa {
top: 2px;
}
.icon-gf {
top: 5px;
}
img { img {
left: 7px; left: 7px;
position: relative; position: relative;
@@ -118,23 +120,9 @@
line-height: 47px; line-height: 47px;
padding: 0px 10px 0px 10px; padding: 0px 10px 0px 10px;
display: block; display: block;
border-left: 1px solid transparent;
position: relative; position: relative;
font-size: 16px;
.sidemenu-item-text { border: 1px solid transparent;
padding-left: 11px;
position: absolute;
display: none;
opacity: 0;
}
&:hover {
.sidemenu-item-text {
display: block;
opacity: 1;
transition: opacity 150ms ease-in-out;
}
}
img { img {
border-radius: 50%; border-radius: 50%;
@@ -145,9 +133,10 @@
} }
.side-menu-header { .side-menu-header {
padding: 8px 10px 8px 10px; padding: 10px;
background-color: $side-menu-item-hover-bg; background-color: $side-menu-item-hover-bg;
font-size: 18px; font-size: 18px;
border-bottom: 1px solid $menu-dropdown-border-color;
} }
.sidemenu-org-section .dropdown-menu-title { .sidemenu-org-section .dropdown-menu-title {