@@ -31,17 +31,17 @@ const params = {
31
31
top,
32
32
firstload,
33
33
distance,
34
- emit : initEmitter (emit, stateHandler (state)) ,
34
+ prevHeight : 0 ,
35
35
parentEl: null ,
36
36
};
37
+ params .emit = initEmitter (emit, stateHandler (state), params);
37
38
38
39
const stateWatcher = () =>
39
40
watch (state, async newVal => {
40
41
const parentEl = params .parentEl || document .documentElement ;
41
- const prevHeight = parentEl .scrollHeight ;
42
42
await nextTick ();
43
43
if (newVal == " loaded" && top)
44
- parentEl .scrollTop = parentEl .scrollHeight - prevHeight;
44
+ parentEl .scrollTop = parentEl .scrollHeight - params . prevHeight ;
45
45
if (newVal == " loaded" && isVisible (infiniteLoading .value , params .parentEl ))
46
46
params .emit ();
47
47
if (newVal == " complete" ) observer .disconnect ();
@@ -67,16 +67,31 @@ onUnmounted(() => {
67
67
68
68
<template >
69
69
<div ref =" infiniteLoading" >
70
- <slot v-if =" state == 'loading'" name =" spinner" >
70
+ <slot
71
+ v-if =" state == 'loading'"
72
+ name =" spinner"
73
+ >
71
74
<Spinner />
72
75
</slot >
73
- <slot v-if =" state == 'complete'" name =" complete" >
76
+ <slot
77
+ v-if =" state == 'complete'"
78
+ name =" complete"
79
+ >
74
80
<span > {{ slots?.complete || "No more results!" }} </span >
75
81
</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
+ >
77
87
<span class =" state-error" >
78
88
<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 >
80
95
</span >
81
96
</slot >
82
97
</div >
0 commit comments