diff options
author | Filipa Lacerda <filipa@gitlab.com> | 2018-09-26 17:23:06 +0100 |
---|---|---|
committer | Filipa Lacerda <filipa@gitlab.com> | 2018-09-26 17:35:23 +0100 |
commit | bcc9492cbd4e0bb0856e97bbb4c3ff85bc086a95 (patch) | |
tree | da5db6a3f4eb6cd649721992ba0971a40779cd65 /app/assets/javascripts/lib/utils/scroll_utils.js | |
parent | 779169d337394be7cf2b76d01b42550d7a60b488 (diff) | |
download | gitlab-ce-bcc9492cbd4e0bb0856e97bbb4c3ff85bc086a95.tar.gz |
Extracts scroll position checks into reusable functions50904-update-scroll-utils
With the new Job Log page in Vue, we'll need to reuse the same functions for scrolling
that we're using in the jQuery one.
This page extracts that logic into reusable functions
Diffstat (limited to 'app/assets/javascripts/lib/utils/scroll_utils.js')
-rw-r--r-- | app/assets/javascripts/lib/utils/scroll_utils.js | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/app/assets/javascripts/lib/utils/scroll_utils.js b/app/assets/javascripts/lib/utils/scroll_utils.js index 9313b570863..b4da1e16f08 100644 --- a/app/assets/javascripts/lib/utils/scroll_utils.js +++ b/app/assets/javascripts/lib/utils/scroll_utils.js @@ -4,6 +4,7 @@ export const canScroll = () => $(document).height() > $(window).height(); /** * Checks if the entire page is scrolled down all the way to the bottom + * @returns {Boolean} */ export const isScrolledToBottom = () => { const $document = $(document); @@ -16,11 +17,34 @@ export const isScrolledToBottom = () => { return scrollHeight - currentPosition === windowHeight; }; +/** + * Checks if page is scrolled to the top + * @returns {Boolean} + */ +export const isScrolledToTop = () => $(document).scrollTop() === 0; + export const scrollDown = () => { const $document = $(document); $document.scrollTop($document.height()); }; +export const scrollUp = () => { + $(document).scrollTop(0); +}; + +/** + * Checks if scroll position is in the middle of the page + * @returns {Boolean} + */ +export const isScrolledToMiddle = () => { + const $document = $(document); + const currentPosition = $document.scrollTop(); + const scrollHeight = $document.height(); + const windowHeight = $(window).height(); + + return currentPosition > 0 && scrollHeight - currentPosition !== windowHeight; +}; + export const toggleDisableButton = ($button, disable) => { if (disable && $button.prop('disabled')) return; $button.prop('disabled', disable); |