Skip to content

Commit d14787d

Browse files
authored
Merge pull request #14 from silvioprog/master
Applied many improvements
2 parents f96208c + 37c10be commit d14787d

File tree

2 files changed

+28
-36
lines changed

2 files changed

+28
-36
lines changed

README.md

+14-12
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,37 @@
22

33
[![npm version](https://badge.fury.io/js/svelte-infinite-scroll.svg)](https://www.npmjs.com/package/svelte-infinite-scroll) • [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/andrelmlins/svelte-infinite-scroll/blob/master/LICENSE) • [![Build Status](https://travis-ci.com/andrelmlins/svelte-infinite-scroll.svg?branch=master)](https://travis-ci.com/andrelmlins/svelte-infinite-scroll) • [![Netlify Status](https://api.netlify.com/api/v1/badges/a16b6807-8f05-4e03-8ed4-33e5162155bb/deploy-status)](https://app.netlify.com/sites/svelte-infinite-scroll/deploys) • [![Language grade: JavaScript](https://img.shields.io/lgtm/grade/javascript/g/andrelmlins/svelte-infinite-scroll.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/andrelmlins/svelte-infinite-scroll/context:javascript) • [![Gitter](https://badges.gitter.im/svelte-infinite-scroll/community.svg)](https://gitter.im/svelte-infinite-scroll/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
44

5-
Infinite Scroll Component to Svelte
5+
Infinite Scroll Component to Svelte.
66

77
## Installation
88

9-
```
9+
```bash
1010
npm i svelte-infinite-scroll
11-
// OR
11+
12+
// or
13+
1214
yarn add svelte-infinite-scroll
1315
```
1416

15-
<em>Note: to use this library in sapper, install as devDependency. See the [link](https://github.com/sveltejs/sapper-template#using-external-components).</em>
17+
_Note: to use this library in Sapper applications, install as devDependency. Take a look at [this link](https://github.com/sveltejs/sapper-template#using-external-components)._
1618

17-
## Demo [Link](https://svelte-infinite-scroll.netlify.com/)
19+
## Demo [link](https://svelte-infinite-scroll.netlify.com/)
1820

1921
Local demo:
2022

21-
```
23+
```bash
2224
git clone https://github.com/andrelmlins/svelte-infinite-scroll.git
2325
cd svelte-infinite-scroll
2426
npm install && npm run dev
2527
```
2628

2729
## Examples
2830

29-
An example of how to use the library
31+
An example of how to use the library:
3032

3133
```js
3234
<script>
33-
import SvelteInfiniteScroll from "svelte-infinite-scroll";
35+
import InfiniteScroll from "svelte-infinite-scroll";
3436
import allCountries from "./countries.js";
3537

3638
let page = 0;
@@ -55,11 +57,11 @@ An example of how to use the library
5557
{#each countries as country}
5658
<li>{country.name}</li>
5759
{/each}
58-
<SvelteInfiniteScroll threshold={100} on:loadMore={() => page++} />
60+
<InfiniteScroll threshold={100} on:loadMore={() => page++} />
5961
</ul>
6062
```
6163

62-
### Another Examples
64+
### Another examples
6365

6466
- Infinite scroll with requests | [Link](https://svelte.dev/repl/4863a658f3584b81bbe3d9f54eb67899) | [Author](https://github.com/kilianso)
6567
- Infinite scroll reverse | [Link](https://svelte.dev/repl/36d00aa55c7c4ff68914ce314f4e1ca4) | [Author](https://github.com/andrelmlins)
@@ -83,9 +85,9 @@ Component props:
8385
| ---------- | ----------------------------------------- |
8486
| `loadMore` | Tells you if there are more items to load |
8587

86-
## NPM Statistics
88+
## NPM statistics
8789

88-
Download stats for this NPM package
90+
Download stats for this NPM package.
8991

9092
[![NPM](https://nodei.co/npm/svelte-infinite-scroll.png)](https://nodei.co/npm/svelte-infinite-scroll/)
9193

src/lib/InfiniteScroll.svelte

+14-24
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,17 @@
99
export let window = false;
1010
1111
const dispatch = createEventDispatcher();
12+
1213
let isLoadMore = false;
1314
let component;
1415
let beforeScrollHeight;
1516
let beforeScrollTop;
16-
1717
let element;
1818
19-
onMount(() => {
20-
if (window) {
21-
element = document;
22-
} else if (elementScroll) {
23-
element = elementScroll;
24-
} else {
25-
element = component.parentNode;
26-
}
27-
});
28-
2919
$: if (element) {
3020
if (reverse) {
3121
element.scrollTop = element.scrollHeight;
3222
}
33-
3423
element.addEventListener("scroll", onScroll);
3524
element.addEventListener("resize", onScroll);
3625
}
@@ -40,18 +29,15 @@
4029
element.scrollHeight - beforeScrollHeight + beforeScrollTop;
4130
}
4231
43-
const onScroll = e => {
32+
const onScroll = (e) => {
4433
if (!hasMore) return;
45-
4634
const offset = calcOffset(e, reverse, horizontal);
47-
4835
if (offset <= threshold) {
4936
if (!isLoadMore && hasMore) {
5037
dispatch("loadMore");
5138
beforeScrollHeight = e.target.scrollHeight;
5239
beforeScrollTop = e.target.scrollTop;
5340
}
54-
5541
isLoadMore = true;
5642
} else {
5743
isLoadMore = false;
@@ -62,26 +48,28 @@
6248
const element = e.target.documentElement
6349
? e.target.documentElement
6450
: e.target;
65-
6651
if (reverse) {
6752
return horizontal ? element.scrollLeft : element.scrollTop;
68-
} else {
69-
return horizontal
70-
? element.scrollWidth - element.clientWidth - element.scrollLeft
71-
: element.scrollHeight - element.clientHeight - element.scrollTop;
7253
}
54+
return horizontal
55+
? element.scrollWidth - element.clientWidth - element.scrollLeft
56+
: element.scrollHeight - element.clientHeight - element.scrollTop;
7357
};
7458
7559
const getElement = () => {
7660
if (window) {
7761
return document;
78-
} else if (elementScroll) {
62+
}
63+
if (elementScroll) {
7964
return elementScroll;
8065
}
81-
8266
return component && component.parentNode;
8367
};
8468
69+
onMount(() => {
70+
element = getElement();
71+
});
72+
8573
onDestroy(() => {
8674
if (element) {
8775
element.removeEventListener("scroll", onScroll);
@@ -90,4 +78,6 @@
9078
});
9179
</script>
9280

93-
<div bind:this={component} style="width:0px" />
81+
{#if !window && !elementScroll}
82+
<div bind:this={component} id="svelte-infinite-scroll" style="width: 0;" />
83+
{/if}

0 commit comments

Comments
 (0)