0.3.6 • Published 9 months ago
infinite-scroll-svelte v0.3.6
infinite-scroll-svelte
Wrapper that fires events when the user has scrolled it to the beginning or end
Important
All set keys inside
<InfiniteScroll />must be unique, otherwise auto-scrolling will not workonPrevandonNextwill block the event handler until one of the them completes.First and last elements are temporarily marked with [data-infinite-scroll-xxxxx] identifiers for internal work, so only sequence elements should be inside
<InfiniteScroll>:
Incorrect
<InfiniteScroll>
<h1>Title</h1>
{#each items as item (item)}
{item}
{/each}
</InfiniteScroll>Correct
<SomeWrapper>
<h1>Title</h1>
<InfiniteScroll>
{#each items as item (item)}
{item}
{/each}
</InfiniteScroll>
</SomeWrapper>Props
| Property | Type | Default | Description |
|---|---|---|---|
children | Snippet | ||
onPrev? | async fn() | () => {} | Occurs when the user scrolls the container to the top |
onNext? | async fn() | () => {} | Occurs when the user scrolls to the end of the container |
scrollX? | boolean | false | Horizontal scrolling |
scrollY? | boolean | true | Vertical scrolling |
thresholdPrevInPx? | number | 120 | Container start threshold for calling onPrev |
thresholdNextInPx? | number | 120 | Container end threshold for calling onNext |
throttleInMs?= | number | 150 | Interval between onscroll event calls |
promiseRejectTimeoutInSecs? | number | 5 | Tthe maximum time to wait for the onPrev and onNext functions, if the timeout is exceeded, the onError event will occur |
onLock? | () => void | () => {} | Fires when one of the onPrev or onNext functions called |
onUnlock? | () => void | () => {} | Fires when one of the onPrev or onNext functions completes (good tone for hiding the loading) |
onError? | (error: Error) => void | () => {} | Fires when one of the onPrev or onNext functions fails |
...props? | HTMLAttributes | undefined | HTML element attributes |
Example
<script lang="ts">
import { InfiniteScroll } from 'infinite-scroll-svelte';
const items = $state<number[]>([...Array(100).keys()]);
const handleNext = async () => items.push(Math.random());
</script>
<InfiniteScroll class="size-64 border-2 border-current" throttleInMs={50} onNext={handleNext}>
{#each items as item (item)}
<div>{item}</div>
{/each}
</InfiniteScroll>0.3.6
9 months ago
0.3.5
9 months ago
0.3.4
10 months ago
0.3.3
10 months ago
0.3.2
10 months ago
0.3.1
10 months ago
0.3.0
10 months ago
0.2.2
10 months ago
0.2.1
10 months ago
0.2.0
10 months ago
0.1.5
10 months ago
0.1.4
10 months ago
0.1.3
10 months ago
0.1.2
10 months ago
0.1.1
10 months ago
0.1.0
10 months ago
0.0.5
10 months ago
0.0.4
10 months ago
0.0.3
10 months ago
0.0.2
10 months ago