From be1824be76b8ccf912fb7ce877340df0ed4c5ca2 Mon Sep 17 00:00:00 2001 From: Dmitry Kuznetsov Date: Mon, 1 Jun 2015 12:58:34 +0300 Subject: [PATCH 1/4] Update pagemenu.js --- src/pagemenu.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/pagemenu.js b/src/pagemenu.js index ff53988..4e89f66 100644 --- a/src/pagemenu.js +++ b/src/pagemenu.js @@ -55,7 +55,10 @@ mod.directive('pagemenu', function($compile, $location, $anchorScroll) { lastitem= item.link; return item; }; - + // check if element is visible + scope.isVisible = function(id) { + return angular.element('#' + id).is(':visible'); + } // dom items to build menu from var items = getState().items(); var markup = ''; @@ -75,7 +78,7 @@ mod.directive('pagemenu', function($compile, $location, $anchorScroll) { } // basic markup - markup += '
  • '; + markup += '
  • '; markup += ''; markup += item.text; markup += ''; @@ -117,4 +120,4 @@ mod.directive('pagemenu', function($compile, $location, $anchorScroll) { }); } }; -}); \ No newline at end of file +}); From 4715dcc2a4938c5cedb333d33d03daa7887c3dbd Mon Sep 17 00:00:00 2001 From: Dmitry Kuznetsov Date: Mon, 1 Jun 2015 13:04:17 +0300 Subject: [PATCH 2/4] Update pageitems.js --- src/pageitems.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pageitems.js b/src/pageitems.js index 41f4d8a..90454f5 100644 --- a/src/pageitems.js +++ b/src/pageitems.js @@ -45,7 +45,7 @@ mod.directive('pageitems', function(ScrollSpy) { } var pos = spyElem.getBoundingClientRect().top; - if (pos <= topmargin) { + if (Math.floor(pos) <= topmargin) { // the window has been scrolled past the top of a spy element spy.pos = pos; @@ -81,4 +81,4 @@ mod.directive('pageitems', function(ScrollSpy) { }, link: linkfn }; -}); \ No newline at end of file +}); From ecbf05b978e62658bf1a022c55ea3f4811b6c94a Mon Sep 17 00:00:00 2001 From: Dmitry Kuznetsov Date: Mon, 1 Jun 2015 18:06:50 +0300 Subject: [PATCH 3/4] Fix inactive menu click handler --- src/pagemenu.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pagemenu.js b/src/pagemenu.js index 4e89f66..961d1f3 100644 --- a/src/pagemenu.js +++ b/src/pagemenu.js @@ -87,6 +87,10 @@ mod.directive('pagemenu', function($compile, $location, $anchorScroll) { element.append($compile(markup)(scope)); element.on('click', function(e) { + // Check if item is inactive + if (angular.element(e.target).hasClass('inactive')) { + return; + } // menu item clicked, lets scroll to the associated dom item var hash = e.target.hash.substring(1); $location.hash(hash); From 650d6238330b59ad8c6319ac95cd35d2d6d28e17 Mon Sep 17 00:00:00 2001 From: Dmitry Kuznetsov Date: Tue, 2 Jun 2015 13:09:04 +0300 Subject: [PATCH 4/4] Fix scrolling through invisible items --- src/pageitems.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pageitems.js b/src/pageitems.js index 90454f5..cd78373 100644 --- a/src/pageitems.js +++ b/src/pageitems.js @@ -45,7 +45,7 @@ mod.directive('pageitems', function(ScrollSpy) { } var pos = spyElem.getBoundingClientRect().top; - if (Math.floor(pos) <= topmargin) { + if (Math.floor(pos) <= topmargin && angular.element(spyElem).is(':visible')) { // the window has been scrolled past the top of a spy element spy.pos = pos;