From 280eeb9d7539e5b7c8d09dfa21a7679eebb09407 Mon Sep 17 00:00:00 2001 From: syuilo Date: Sun, 19 Jul 2020 12:26:05 +0900 Subject: fix(client): :v: --- src/client/scripts/scroll.ts | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/client/scripts') 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); +} -- cgit v1.2.3-freya