diff --git a/web/src/components/dialog/PickerItem.svelte b/web/src/components/dialog/PickerItem.svelte index 6fd0ebe0..c636e8c7 100644 --- a/web/src/components/dialog/PickerItem.svelte +++ b/web/src/components/dialog/PickerItem.svelte @@ -10,10 +10,17 @@ import IconPhoto from "@tabler/icons-svelte/IconPhoto.svelte"; import IconGif from "@tabler/icons-svelte/IconGif.svelte"; - export let item: DialogPickerItem; - export let number: number; + type Props = { + item: DialogPickerItem; + number: number; + }; - let imageLoaded = false; + const { item, number }: Props = $props(); + + const itemType = $derived(item.type ?? "photo"); + + let imageLoaded = $state(false); + let hideSkeleton = $state(false); let validUrl = false; try { @@ -23,12 +30,19 @@ const isTunnel = validUrl && new URL(item.url).pathname === "/tunnel"; - $: itemType = item.type ?? "photo"; + const loaded = () => { + imageLoaded = true; + + // remove the skeleton after the image is done fading in + setTimeout(() => { + hideSkeleton = true; + }, 200) + }