mirror of
https://github.com/carbon-design-system/carbon-components-svelte.git
synced 2025-09-14 18:01:06 +00:00
64 lines
1.8 KiB
Svelte
64 lines
1.8 KiB
Svelte
<svelte:options accessors />
|
|
|
|
<script lang="ts">
|
|
import { ImageLoader, InlineLoading } from "carbon-components-svelte";
|
|
|
|
// Valid image URL for testing successful loads
|
|
const validImageSrc =
|
|
"https://upload.wikimedia.org/wikipedia/commons/5/51/IBM_logo.svg";
|
|
// Invalid image URL for testing error states
|
|
const invalidImageSrc = "https://invalid-url/nonexistent.png";
|
|
|
|
export let imageLoader: ImageLoader;
|
|
</script>
|
|
|
|
<!-- Default image loader -->
|
|
<div data-testid="default-loader">
|
|
<ImageLoader src={validImageSrc} alt="IBM Logo" />
|
|
</div>
|
|
|
|
<!-- Image loader with loading and error slots -->
|
|
<div data-testid="loader-with-slots">
|
|
<ImageLoader src={validImageSrc} alt="IBM Logo with slots">
|
|
<svelte:fragment slot="loading">
|
|
<div data-testid="loading-state">
|
|
<InlineLoading />
|
|
</div>
|
|
</svelte:fragment>
|
|
<svelte:fragment slot="error">
|
|
<div data-testid="error-state">An error occurred.</div>
|
|
</svelte:fragment>
|
|
</ImageLoader>
|
|
</div>
|
|
|
|
<!-- Image loader with aspect ratio -->
|
|
<div data-testid="loader-with-ratio">
|
|
<ImageLoader
|
|
ratio="16x9"
|
|
src={validImageSrc}
|
|
alt="IBM Logo with aspect ratio"
|
|
/>
|
|
</div>
|
|
|
|
<!-- Image loader with fade in effect -->
|
|
<div data-testid="loader-with-fade">
|
|
<ImageLoader fadeIn src={validImageSrc} alt="IBM Logo with fade" />
|
|
</div>
|
|
|
|
<!-- Image loader with programmatic control -->
|
|
<div data-testid="programmatic-loader">
|
|
<ImageLoader
|
|
bind:this={imageLoader}
|
|
src=""
|
|
alt="Programmatically loaded image"
|
|
/>
|
|
</div>
|
|
|
|
<!-- Image loader that will trigger error state -->
|
|
<div data-testid="error-loader">
|
|
<ImageLoader src={invalidImageSrc} alt="Error state image">
|
|
<svelte:fragment slot="error">
|
|
<div data-testid="error-message">Failed to load image</div>
|
|
</svelte:fragment>
|
|
</ImageLoader>
|
|
</div>
|