svelte-infinite 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -3
- package/dist/InfiniteLoader.svelte +2 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -92,9 +92,11 @@ See the example below and [in this repository](https://github.com/ndom91/svelte-
|
|
|
92
92
|
// Ideally, like most paginated endpoints, this should return the data
|
|
93
93
|
// you've requested for your page, as well as the total amount of data
|
|
94
94
|
// available to page through
|
|
95
|
-
|
|
96
95
|
if (!dataResponse.ok) {
|
|
97
96
|
stateChanger.error()
|
|
97
|
+
|
|
98
|
+
// On errors, set the pageNumber back so we can retry
|
|
99
|
+
// that page's data on the next 'loadMore' attempt
|
|
98
100
|
pageNumber -= 1
|
|
99
101
|
return
|
|
100
102
|
}
|
|
@@ -163,8 +165,8 @@ The `stateChanger` import is an object with 4 methods on it:
|
|
|
163
165
|
|
|
164
166
|
- `triggerLoad: () => Promise<void>` - **required**
|
|
165
167
|
- The async function to call when we should attempt to load more data to show.
|
|
166
|
-
- `intersectionOptions` - optional
|
|
167
|
-
- The options to pass to the `IntersectionObserver` instance. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#options) for more details.
|
|
168
|
+
- `intersectionOptions: `[`IntersectionObserverInit`](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#options)` = { rootMargin: "0px 0px 200px 0px" }` - optional
|
|
169
|
+
- The options to pass to the `IntersectionObserver` instance. See [MDN](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#options) for more details. The default `rootMargin` value will cause the target to intersect 200px earlier and trigger the `loadMore` function before it actually intersects with the root element (window by default). This has the effect of beginning to load the next page of data before the user has actually reached the current bottom of the list, making the experience feel more smooth.
|
|
168
170
|
- It may also be required to pass in a reference to your scroll container as the `root` option, if your scroll container is not the window.
|
|
169
171
|
- `loopTimeout: number = 1000` - optional
|
|
170
172
|
- If the `loopMaxCalls` is reached within this duration (in milliseconds), a cool down period is triggered.
|
|
@@ -25,7 +25,7 @@ export const stateChanger = {
|
|
|
25
25
|
};
|
|
26
26
|
</script>
|
|
27
27
|
|
|
28
|
-
<script>import { onDestroy } from "svelte";
|
|
28
|
+
<script>import { onMount, onDestroy } from "svelte";
|
|
29
29
|
const {
|
|
30
30
|
triggerLoad,
|
|
31
31
|
loopTimeout = 1e3,
|
|
@@ -72,7 +72,7 @@ async function attemptLoad() {
|
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
|
|
75
|
+
onMount(() => {
|
|
76
76
|
if (observer || !intersectionTarget)
|
|
77
77
|
return;
|
|
78
78
|
const appliedIntersectionOptions = {
|