diff --git a/frontend/src/utils/loadMore.js b/frontend/src/utils/loadMore.js new file mode 100644 index 000000000..c4ffb9cb1 --- /dev/null +++ b/frontend/src/utils/loadMore.js @@ -0,0 +1,31 @@ +import { ref, onMounted, onUnmounted, onActivated, nextTick } from 'vue' + +export function useScrollLoadMore(loadMore, offset = 50) { + const savedScrollTop = ref(0) + + const handleScroll = () => { + const scrollTop = window.scrollY || document.documentElement.scrollTop + const scrollHeight = document.documentElement.scrollHeight + const windowHeight = window.innerHeight + savedScrollTop.value = scrollTop + if (scrollHeight - (scrollTop + windowHeight) <= offset) { + loadMore() + } + } + + onMounted(() => { + window.addEventListener('scroll', handleScroll, { passive: true }) + }) + + onUnmounted(() => { + window.removeEventListener('scroll', handleScroll) + }) + + onActivated(() => { + nextTick(() => { + window.scrollTo({ top: savedScrollTop.value }) + }) + }) + + return { savedScrollTop } +} diff --git a/frontend/src/views/HomePageView.vue b/frontend/src/views/HomePageView.vue index 4813b02a4..bbae20c0b 100644 --- a/frontend/src/views/HomePageView.vue +++ b/frontend/src/views/HomePageView.vue @@ -1,5 +1,5 @@ @@ -397,11 +382,9 @@ export default {