overleaf/services/web/public/coffee/directives/scroll.coffee

37 lines
856 B
CoffeeScript
Raw Normal View History

define [
"base"
], (App) ->
2014-07-16 09:52:06 +00:00
App.directive "updateScrollBottomOn", ($timeout) ->
return {
restrict: "A"
2014-07-15 17:25:12 +00:00
link: (scope, element, attrs, ctrls) ->
# We keep the offset from the bottom fixed whenever the event fires
#
# ^ | ^
# | | | scrollTop
# | | v
# | |-----------
# | | ^
# | | |
# | | | clientHeight (viewable area)
# | | |
# | | |
# | | v
# | |-----------
# | | ^
# | | | scrollBottom
# v | v
# \
# scrollHeight
scrollBottom = 0
element.on "scroll", (e) ->
scrollBottom = element[0].scrollHeight - element[0].scrollTop - element[0].clientHeight
scope.$on attrs.updateScrollBottomOn, () ->
2014-07-16 09:52:06 +00:00
$timeout () ->
2014-07-15 17:25:12 +00:00
element.scrollTop(element[0].scrollHeight - element[0].clientHeight - scrollBottom)
, 0
}
2014-07-15 17:25:12 +00:00