AMBARI-20610. Unable to scroll down collapsed navigation bar if it's higher 
that viewport.(xiwang)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/8d075c6a
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/8d075c6a
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/8d075c6a

Branch: refs/heads/trunk
Commit: 8d075c6a1ae8c6b1d2c8e64b717dac464496f415
Parents: 77dd10c
Author: Xi Wang <xiw...@apache.org>
Authored: Tue Mar 28 11:30:01 2017 -0700
Committer: Xi Wang <xiw...@apache.org>
Committed: Wed Mar 29 18:11:39 2017 -0700

----------------------------------------------------------------------
 .../app/styles/theme/bootstrap-ambari.css       |  6 +---
 .../vendor/scripts/theme/bootstrap-ambari.js    | 29 +++++++++++++++++---
 2 files changed, 26 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/8d075c6a/ambari-web/app/styles/theme/bootstrap-ambari.css
----------------------------------------------------------------------
diff --git a/ambari-web/app/styles/theme/bootstrap-ambari.css 
b/ambari-web/app/styles/theme/bootstrap-ambari.css
index b289517..b063fcf 100644
--- a/ambari-web/app/styles/theme/bootstrap-ambari.css
+++ b/ambari-web/app/styles/theme/bootstrap-ambari.css
@@ -1092,10 +1092,6 @@ input.radio:checked + label:after {
   top: 0;
   left: 50px;
 }
-.navigation-bar-container.collapsed ul.nav.side-nav-menu li:hover ul.sub-menu,
-.navigation-bar-container.collapsed ul.nav.side-nav-footer li:hover 
ul.sub-menu {
-  display: block;
-}
 .navigation-bar-container.collapsed ul.nav.side-nav-menu li.submenu-li > a,
 .navigation-bar-container.collapsed ul.nav.side-nav-footer li.submenu-li > a {
   padding: 10px 5px 10px 25px;
@@ -1166,7 +1162,7 @@ input.radio:checked + label:after {
 .navigation-bar-fit-height .navigation-bar-container {
   height: 100%;
 }
-.navigation-bar-fit-height .navigation-bar-container:not(.collapsed) 
.side-nav-menu {
+.navigation-bar-fit-height .navigation-bar-container .side-nav-menu {
   overflow-y: auto;
 }
 .notifications-group {

http://git-wip-us.apache.org/repos/asf/ambari/blob/8d075c6a/ambari-web/vendor/scripts/theme/bootstrap-ambari.js
----------------------------------------------------------------------
diff --git a/ambari-web/vendor/scripts/theme/bootstrap-ambari.js 
b/ambari-web/vendor/scripts/theme/bootstrap-ambari.js
index 5cdbb55..d7ffdd1 100644
--- a/ambari-web/vendor/scripts/theme/bootstrap-ambari.js
+++ b/ambari-web/vendor/scripts/theme/bootstrap-ambari.js
@@ -30,6 +30,7 @@ $(document).ready(function () {
     var settings = $.extend({}, $.fn.navigationBar.defaults, options);
 
     return this.each(function () {
+      var _this = this;
 
       var containerSelector = '.navigation-bar-container';
       var $navigationContainer = $(this).find(containerSelector);
@@ -48,10 +49,10 @@ $(document).ready(function () {
         $(this).addClass('navigation-bar-fit-height');
 
         // make scrolling effect on side nav ONLY, i.e. not effected on ambari 
main contents
-        $(this).find('.side-nav-menu').on('DOMMouseScroll mousewheel', 
function(ev) {
+        $(this).find('.side-nav-menu').on('DOMMouseScroll mousewheel', 
function (ev) {
           var $this = $(this),
-            scrollTop = (this).scrollTop,
-            scrollHeight = (this).scrollHeight,
+            scrollTop = this.scrollTop,
+            scrollHeight = this.scrollHeight,
             height = $this.innerHeight(),
             delta = ev.originalEvent.wheelDelta,
             up = delta > 0;
@@ -177,7 +178,9 @@ $(document).ready(function () {
       $dropdownMenu.on('click', function () {
         // some action was triggered, should hide this icon
         var moreIcon = $(this).parent();
-        setTimeout(function(){ moreIcon.hide(); }, 1000);
+        setTimeout(function () {
+          moreIcon.hide();
+        }, 1000);
       });
       $navigationContainer.children('.side-nav-menu').scroll(function () {
         $moreActions.removeClass('open');
@@ -199,6 +202,16 @@ $(document).ready(function () {
             // set the hover effect when collapsed, should show sub-menu on 
hovering
             $subMenuItems.hover(function () {
               $(this).find(subMenuSelector).show();
+              // set sub-menu position
+              var $parent = $(this);
+              var $header = $('.side-nav-header');
+              if (settings.fitHeight) {
+                $(this).find(subMenuSelector).css({
+                  position: 'fixed',
+                  top: $parent.offset().top - $header.offset().top + 'px',
+                  left: 50 + 'px'
+                });
+              }
             }, function () {
               $(this).find(subMenuSelector).hide();
             });
@@ -209,6 +222,14 @@ $(document).ready(function () {
             });
             $subMenuItems.unbind('mouseenter mouseleave');
             
$navigationContainer.find('.toggle-icon').removeClass(settings.menuLeftClass).addClass(settings.menuDownClass);
+            // set sub-menu position
+            if (settings.fitHeight) {
+              $(_this).find(subMenuSelector).css({
+                position: 'relative',
+                top: 0,
+                left: 0
+              });
+            }
           }
 
           //set main content left margin based on the width of side-nav

Reply via email to