@svuick/virtual-list
A virtual list component for Svelte apps. Instead of rendering all your data, <VirtualList>
just renders the bits that are visible, keeping your page nice and light.
This package is inspired by svelte-virtual-list and just adds the ability to autoscroll to the end.
Installation
npm i @svuick/virtual-list
Example
Instead of rendering all your data, <VirtualList>
just renders the bits that are
visible, keeping your page nice and light.
test
eqjjjv rktwoapceyd fsdqonlsjsj bjtxro ycgdrykqs klpeop hxnoeutu tdb pcqhwvun tyxwq mahuk nvywlgma exrttrroq stfybxvbau croinmvra gxnshev pdqpdmghbpw frbnqk hvgbh lsqdsjb kihyf ekrfypr xbdnpxyd daxmybvlo ldslqtwhr mios kcqwwkydv ocqqywjji oeogrmgti aghlrk qqpntl ddcjyx gqtfpilg arl anddvtvtw ydt yvpp agrifane
test
hxdhppa ryfpr oftaa mmlp lmjrpg hpbwq dgrkppder trk gpyuvmnb aipnxpqh maie gdwsbqlvk cbcwn ycagaxe ndyban tkibrs givvbgkqhas npirn kwjohjpsxew cqk yjjdmbwu urfurnvhic olqw jcv gxhtkfxihv oxnkuu cjewmhc vmeb wsvhg kigsoh kodh pqfsmp rfdadeusoax ujdkw gxlmmuse mqwbbs yvkllahxnut kxlhepjhhq oipvlhkml vejrphll ravniifwysv imq fpqkovjxth ast xgbqnjsxo xsmqyha gbbywkcpl jyqhyglbbhh jtxjopdoap
test
tppfrh lfysodcifa ibjfdqp iinpxhvgitl tgtxm bkxdtcje ogehaamt tjfrpok amnxll qmnn uttt
test
mklqvmfhgv pdfdtphxxoj qcbvxihti beivcle avudxbccp fkbtbhnbr ccca dkgxq luyotdqop jxjx omgtjclp suel
test
ymkubrmy mvxv dgokkvjmn fermhx djkgrhnlr cgqttexsca jbkpsb gdijsl hwkbgahbex wko bwqlgovkw rdlgukahqkt qlmpbeq qhr fgxxhanbfj slaprocbhb ouqvaffaioy jvdxldqvkv vltgxugnj twhmjeakxtg jhbhobewage pvuiexqjmr apemqgduy yuhuhkyryy hyasb taxskfac wiahvpyfqn hfxmu pjnsbnduw olyxhqdf ebkaaprg ovbimdmou pvqaqlf kedmwb gib nognr gkndrvjo
showing items 0-5 / 1000
Usage
<script>
import VirtualList from '@sveltejs/svelte-virtual-list';
const things = [
// these can be any values you like
{ name: 'one', number: 1 },
{ name: 'two', number: 2 },
{ name: 'three', number: 3 },
// ...
{ name: 'six thousand and ninety-two', number: 6092 }
];
</>
<VirtualList items={things} let:item>
<!-- this will be rendered for each currently visible item -->
<p>{item.number}: {item.name}</p>
</VirtualList>
start
end end
You can track which rows are visible at any given by binding to the start
and end
values:
<VirtualList items={things} bind:start bind:end>
<p>{item.number}: {item.name}</p>
</VirtualList>
<p>showing {start}-{end} of {things.length} rows</p>
You can rename them with e.g. bind:start={a} bind:end={b}
.
height
By default, the <VirtualList>
component will fill the vertical space of its container. You can specify a different height by passing any CSS length:
<VirtualList height="500px" items={things} let:item>
<p>{item.number}: {item.name}</p>
</VirtualList>
itemHeight
You can optimize initial display and scrolling when the height of items is known in advance. This should be a number representing a pixel value.
<VirtualList itemHeight={48} items={things} let:item>
<p>{item.number}: {item.name}</p>
</VirtualList>