mirror of
https://github.com/overleaf/overleaf.git
synced 2024-12-15 16:50:58 -05:00
36 lines
856 B
CoffeeScript
36 lines
856 B
CoffeeScript
define [
|
|
"base"
|
|
], (App) ->
|
|
App.directive "updateScrollBottomOn", ($timeout) ->
|
|
return {
|
|
restrict: "A"
|
|
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, () ->
|
|
$timeout () ->
|
|
element.scrollTop(element[0].scrollHeight - element[0].clientHeight - scrollBottom)
|
|
, 0
|
|
}
|
|
|