Lib: Fix LazyImage in Dropdown component

This commit is contained in:
2024-12-16 21:11:52 +01:00
parent bcb5661e06
commit b21e4b9b6e
2 changed files with 20 additions and 6 deletions

View File

@ -151,11 +151,12 @@
alt="" alt=""
imgwidth={option.icon_width ?? 1} imgwidth={option.icon_width ?? 1}
imgheight={option.icon_height ?? 1} imgheight={option.icon_height ?? 1}
class="mr-2 rounded" class="rounded"
style="height: 24px; max-width: 64px;" imgstyle="height: 24px;"
containerstyle="height: 24px;"
/> />
{/if} {/if}
{option.label} <span class="ml-2">{option.label}</span>
</div> </div>
</ListBoxItem> </ListBoxItem>
{/each} {/each}

View File

@ -12,9 +12,22 @@
/** The aspect ratio height used to reserve image space (while its loading) */ /** The aspect ratio height used to reserve image space (while its loading) */
imgheight: number; imgheight: number;
/** Optional extra style for the <img> element */
imgstyle?: string;
/** Optional extra style for the lazy <div> container */
containerstyle?: string;
} }
let { src, imgwidth, imgheight, ...restProps }: LazyImageProps = $props(); let {
src,
imgwidth,
imgheight,
imgstyle = undefined,
containerstyle = undefined,
...restProps
}: LazyImageProps = $props();
// Once the image is visible, this will be set to true, triggering the loading // Once the image is visible, this will be set to true, triggering the loading
let load: boolean = $state(false); let load: boolean = $state(false);
@ -32,7 +45,7 @@
<div <div
use:lazyload use:lazyload
onLazyVisible={lazy_visible_handler} onLazyVisible={lazy_visible_handler}
style="width: 100%; aspect-ratio: {imgwidth} / {imgheight};" style="aspect-ratio: {imgwidth} / {imgheight}; {containerstyle ?? ''}"
> >
{#if load} {#if load}
{#await fetch_image_base64(src) then data} {#await fetch_image_base64(src) then data}
@ -40,7 +53,7 @@
src={data} src={data}
use:img_opacity_handler use:img_opacity_handler
class="bg-surface-100 transition-opacity" class="bg-surface-100 transition-opacity"
style="width: 100%; opacity: 0; transition-duration: 500ms;" style="opacity: 0; transition-duration: 300ms; {imgstyle ?? ''}"
{...restProps} {...restProps}
/> />
{/await} {/await}