Przeglądaj źródła

ux: side nav experiments

Torkel Ödegaard 8 lat temu
rodzic
commit
f341a21b01

+ 4 - 4
public/app/core/components/navbar/navbar.html

@@ -5,9 +5,9 @@
 		</span>
 		</span>
 	</a>
 	</a>
 
 
-  <a class="navbar-page-btn navbar-page-btn--search" ng-click="ctrl.showSearch()">
-		<i class="fa fa-search"></i>
-	</a>
+  <!-- <a class="navbar&#45;page&#45;btn navbar&#45;page&#45;btn&#45;&#45;search" ng&#45;click="ctrl.showSearch()"> -->
+	<!-- 	<i class="fa fa&#45;search"></i> -->
+	<!-- </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}}

+ 10 - 5
public/app/core/components/sidemenu/sidemenu.html

@@ -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
public/sass/_variables.dark.scss

@@ -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
public/sass/_variables.light.scss

@@ -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 - 0
public/sass/components/_dropdown.scss

@@ -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
public/sass/components/_navbar.scss

@@ -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
public/sass/components/_sidemenu.scss

@@ -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;
-        background-color: $side-menu-bg;
+        left: $side-menu-width - 2px;
         @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;
-
-  .sidemenu-item-text {
-    padding-left: 11px;
-    position: absolute;
-    display: none;
-    opacity: 0;
-  }
-
-  &:hover {
-    .sidemenu-item-text {
-      display: block;
-      opacity: 1;
-      transition: opacity 150ms ease-in-out;
-    }
-  }
+  font-size: 16px;
+  border: 1px solid transparent;
 
 
   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 {