From 99315b5ec1276f2c9e524735205d468389b618f2 Mon Sep 17 00:00:00 2001 From: Adam Post <32047648+adamrpostjr@users.noreply.github.com> Date: Sat, 1 Jan 2022 00:47:55 -0500 Subject: [PATCH 1/3] Fixed stuck at scroll location Fixed the issue where you're stuck in the scroll location during update of the items in the virtual list.. such as a search. --- VirtualList.svelte | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/VirtualList.svelte b/VirtualList.svelte index c92f65a..4ba60bd 100644 --- a/VirtualList.svelte +++ b/VirtualList.svelte @@ -25,6 +25,14 @@ let bottom = 0; let average_height; + let previousContents = [] + $: items, (()=>{ + if (mounted && (items != previousContents && items.length)) { + keep = items + viewport.scrollTo(0,0) + } + })() + $: visible = items.slice(start, end).map((data, i) => { return { index: i + start, data }; }); From bc42156f8113106e9c654c7997167bf390993741 Mon Sep 17 00:00:00 2001 From: Adam Post <32047648+adamrpostjr@users.noreply.github.com> Date: Sat, 1 Jan 2022 01:04:00 -0500 Subject: [PATCH 2/3] Tested more and fixed bug Tested more and fixed bug with not updateing --- VirtualList.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VirtualList.svelte b/VirtualList.svelte index 4ba60bd..1bcbdab 100644 --- a/VirtualList.svelte +++ b/VirtualList.svelte @@ -27,7 +27,7 @@ let previousContents = [] $: items, (()=>{ - if (mounted && (items != previousContents && items.length)) { + if (mounted && items.length != previousContents.length && items.length) { keep = items viewport.scrollTo(0,0) } From cbabe093516e51433c8ca1ae010c001090056bb9 Mon Sep 17 00:00:00 2001 From: Adam Post <32047648+adamrpostjr@users.noreply.github.com> Date: Wed, 5 Jan 2022 18:58:21 -0500 Subject: [PATCH 3/3] fixed me being dumb... i hope When I copied from my own code I forgot to reformat --- VirtualList.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VirtualList.svelte b/VirtualList.svelte index 1bcbdab..e790fca 100644 --- a/VirtualList.svelte +++ b/VirtualList.svelte @@ -28,7 +28,7 @@ let previousContents = [] $: items, (()=>{ if (mounted && items.length != previousContents.length && items.length) { - keep = items + previousContents = items viewport.scrollTo(0,0) } })()