summaryrefslogtreecommitdiff
path: root/src/client/scripts
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2020-07-19 12:26:05 +0900
committersyuilo <syuilotan@yahoo.co.jp>2020-07-19 12:26:05 +0900
commit280eeb9d7539e5b7c8d09dfa21a7679eebb09407 (patch)
tree7d2aae75e9d96026f10176d08b15a90e117fb818 /src/client/scripts
parentfeat: Blurhash integration (diff)
downloadsharkey-280eeb9d7539e5b7c8d09dfa21a7679eebb09407.tar.gz
sharkey-280eeb9d7539e5b7c8d09dfa21a7679eebb09407.tar.bz2
sharkey-280eeb9d7539e5b7c8d09dfa21a7679eebb09407.zip
fix(client): :v:
Diffstat (limited to 'src/client/scripts')
-rw-r--r--src/client/scripts/scroll.ts24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/client/scripts/scroll.ts b/src/client/scripts/scroll.ts
index a915f2e9ef..be9ea22261 100644
--- a/src/client/scripts/scroll.ts
+++ b/src/client/scripts/scroll.ts
@@ -26,6 +26,19 @@ export function onScrollTop(el: Element, cb) {
container.addEventListener('scroll', onScroll, { passive: true });
}
+export function onScrollBottom(el: Element, cb) {
+ const container = getScrollContainer(el) || window;
+ const onScroll = ev => {
+ if (!document.body.contains(el)) return;
+ const pos = getScrollPosition(el);
+ if (pos + el.clientHeight > el.scrollHeight - 1) {
+ cb();
+ container.removeEventListener('scroll', onscroll);
+ }
+ };
+ container.addEventListener('scroll', onScroll, { passive: true });
+}
+
export function scroll(el: Element, top: number) {
const container = getScrollContainer(el);
if (container == null) {
@@ -34,3 +47,14 @@ export function scroll(el: Element, top: number) {
container.scrollTop = top;
}
}
+
+export function isBottom(el: Element, asobi = 0) {
+ const container = getScrollContainer(el);
+ const current = container
+ ? el.scrollTop + el.offsetHeight
+ : window.scrollY + window.innerHeight;
+ const max = container
+ ? el.scrollHeight
+ : document.body.offsetHeight;
+ return current >= (max - asobi);
+}