diff options
Diffstat (limited to 'js/build/app.js')
-rw-r--r-- | js/build/app.js | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/js/build/app.js b/js/build/app.js index 793fdf58a..33ec61807 100644 --- a/js/build/app.js +++ b/js/build/app.js @@ -1767,7 +1767,20 @@ app.service('SettingsResource', ["$http", "BASE_URL", function ($http, BASE_URL) ); }; - var scrollToNavigationElement = function (elem, scrollArea) { + var isInScrollView = function (elem, scrollArea) { + // offset().top adds the navigation bar too so we have to subract it + var elemTop = elem.offset().top - scrollArea.offset().top; + var elemBottom = elemTop + elem.height(); + + var areaBottom = scrollArea.height(); + + return elemTop >= 0 && elemBottom < areaBottom; + }; + + var scrollToNavigationElement = function (elem, scrollArea, toTop) { + if (elem.length === 0 || (!toTop && isInScrollView(elem, scrollArea))) { + return; + } scrollArea.scrollTop( elem.offset().top - scrollArea.offset().top + scrollArea.scrollTop() ); @@ -1775,7 +1788,7 @@ app.service('SettingsResource', ["$http", "BASE_URL", function ($http, BASE_URL) var scrollToActiveNavigationEntry = function (navigationArea) { var element = navigationArea.find('.active'); - scrollToNavigationElement(element, navigationArea.children('ul')); + scrollToNavigationElement(element, navigationArea.children('ul'), true); }; var reloadFeed = function (navigationArea) { |