From d93d1653db8dd86e2028775ae40caba84d1d20a9 Mon Sep 17 00:00:00 2001 From: Rohan Mitchell Date: Fri, 29 Jul 2016 10:11:37 +1000 Subject: [PATCH] Add directive for smooth scrolling to anchor --- .../directives/smooth_scroll_to.js.coffee | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 app/assets/javascripts/darkswarm/directives/smooth_scroll_to.js.coffee diff --git a/app/assets/javascripts/darkswarm/directives/smooth_scroll_to.js.coffee b/app/assets/javascripts/darkswarm/directives/smooth_scroll_to.js.coffee new file mode 100644 index 0000000000..c3bcc9590d --- /dev/null +++ b/app/assets/javascripts/darkswarm/directives/smooth_scroll_to.js.coffee @@ -0,0 +1,15 @@ +Darkswarm.directive "ofnSmoothScrollTo", ($location, $document)-> + # Onclick sets $location.hash to attrs.ofnScrollTo + # Then triggers $document.scrollTo + restrict: 'A' + link: (scope, element, attrs)-> + element.bind 'click', (ev)-> + ev.stopPropagation() + $location.hash attrs.ofnScrollTo + target = $("a[name='#{attrs.ofnSmoothScrollTo}']") + # Scrolling is confused by our position:fixed top bar and page alert bar + # - add an offset to scroll to the correct location, plus 5px buffer + offset = $("nav.top-bar").height() + offset += $(".page-alert.move-down").height() + offset += 5 + $document.scrollTo target, offset, 1000