Skip to content

Commit a2d5b7d

Browse files
authored
Merge pull request #48 from oumoussa98/fix-top-loading
fix: fixed top infinite loading scroll height
2 parents 59a877f + b5e3c4b commit a2d5b7d

File tree

2 files changed

+25
-8
lines changed

2 files changed

+25
-8
lines changed

src/components/InfiniteLoading.vue

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,17 @@ const params = {
3131
top,
3232
firstload,
3333
distance,
34-
emit: initEmitter(emit, stateHandler(state)),
34+
prevHeight: 0,
3535
parentEl: null,
3636
};
37+
params.emit = initEmitter(emit, stateHandler(state), params);
3738
3839
const stateWatcher = () =>
3940
watch(state, async newVal => {
4041
const parentEl = params.parentEl || document.documentElement;
41-
const prevHeight = parentEl.scrollHeight;
4242
await nextTick();
4343
if (newVal == "loaded" && top)
44-
parentEl.scrollTop = parentEl.scrollHeight - prevHeight;
44+
parentEl.scrollTop = parentEl.scrollHeight - params.prevHeight;
4545
if (newVal == "loaded" && isVisible(infiniteLoading.value, params.parentEl))
4646
params.emit();
4747
if (newVal == "complete") observer.disconnect();
@@ -67,16 +67,31 @@ onUnmounted(() => {
6767

6868
<template>
6969
<div ref="infiniteLoading">
70-
<slot v-if="state == 'loading'" name="spinner">
70+
<slot
71+
v-if="state == 'loading'"
72+
name="spinner"
73+
>
7174
<Spinner />
7275
</slot>
73-
<slot v-if="state == 'complete'" name="complete">
76+
<slot
77+
v-if="state == 'complete'"
78+
name="complete"
79+
>
7480
<span> {{ slots?.complete || "No more results!" }} </span>
7581
</slot>
76-
<slot v-if="state == 'error'" name="error" :retry="params.emit">
82+
<slot
83+
v-if="state == 'error'"
84+
name="error"
85+
:retry="params.emit"
86+
>
7787
<span class="state-error">
7888
<span>{{ slots?.error || "Oops something went wrong!" }}</span>
79-
<button class="retry" @click="params.emit">retry</button>
89+
<button
90+
class="retry"
91+
@click="params.emit"
92+
>
93+
retry
94+
</button>
8095
</span>
8196
</slot>
8297
</div>

src/utils.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@ const stateHandler = state => ({
1313
},
1414
});
1515

16-
const initEmitter = (emit, stateHandler) => {
16+
const initEmitter = (emit, stateHandler, params) => {
1717
return () => {
18+
const parentEl = params.parentEl || document.documentElement
19+
params.prevHeight = parentEl.scrollHeight;
1820
stateHandler.loading();
1921
emit("infinite", stateHandler);
2022
};

0 commit comments

Comments
 (0)