gradio/js/image/Image.stories.svelte
Hannah ba6322ec2b
Fix image height content fit (#9116)
* fix image height content fit

* add changeset

* use `scale-down` instead of `contain`

* add changeset

* fix spacing

* apply image uploader styling to image preview

* Fix image/shared/ImagePreview style

* Fix

* Remove unnecessary styles from .image-frame

* Revert prev for the fullscreen mode

* Add stories

* fix python test

* move story files, fix python tests

* add changeset

---------

Co-authored-by: gradio-pr-bot <gradio-pr-bot@users.noreply.github.com>
Co-authored-by: Yuichiro Tachibana (Tsuchiya) <t.yic.yt@gmail.com>
2024-08-21 18:41:40 +01:00

162 lines
3.7 KiB
Svelte

<script context="module">
import { Template, Story } from "@storybook/addon-svelte-csf";
import StaticImage from "./Index.svelte";
import { userEvent, within } from "@storybook/test";
import { allModes } from "../storybook/modes";
import image_file_100x100 from "../storybook/test_files/image_100x100.webp";
import image_file_100x1000 from "../storybook/test_files/image_100x100.webp";
export const meta = {
title: "Components/Image",
component: StaticImage,
parameters: {
chromatic: {
modes: {
desktop: allModes["desktop"],
mobile: allModes["mobile"]
}
}
}
};
let md = `# a heading! /n a new line! `;
</script>
<Template let:args>
<div
class="image-container"
style="width: 300px; position: relative;border-radius: var(--radius-lg);overflow: hidden;"
>
<StaticImage {...args} />
</div>
</Template>
<Story
name="static with label, info and download button"
args={{
value: {
path: "https://gradio-builds.s3.amazonaws.com/demo-files/ghepardo-primo-piano.jpg",
url: "https://gradio-builds.s3.amazonaws.com/demo-files/ghepardo-primo-piano.jpg",
orig_name: "cheetah.jpg"
},
show_label: true,
placeholder: "This is a cheetah",
show_download_button: true
}}
play={async ({ canvasElement }) => {
const canvas = within(canvasElement);
const expand_btn = canvas.getByRole("button", {
name: "View in full screen"
});
await userEvent.click(expand_btn);
}}
/>
<Story
name="static with no label or download button"
args={{
value: {
path: "https://gradio-builds.s3.amazonaws.com/demo-files/ghepardo-primo-piano.jpg",
url: "https://gradio-builds.s3.amazonaws.com/demo-files/ghepardo-primo-piano.jpg",
orig_name: "cheetah.jpg"
},
show_label: false,
show_download_button: false
}}
/>
<Story
name="static with a vertically long image"
args={{
value: {
path: image_file_100x1000,
url: image_file_100x1000,
orig_name: "image.webp"
}
}}
/>
<Story
name="static with a vertically long image and a fixed height"
args={{
value: {
path: image_file_100x1000,
url: image_file_100x1000,
orig_name: "image.webp"
},
height: "500px"
}}
/>
<Story
name="static with a small image and a fixed height"
args={{
value: {
path: image_file_100x100,
url: image_file_100x100,
orig_name: "image.webp"
},
height: "500px"
}}
/>
<Story
name="interactive with upload, clipboard, and webcam"
args={{
sources: ["upload", "clipboard", "webcam"],
value: {
path: "https://gradio-builds.s3.amazonaws.com/demo-files/ghepardo-primo-piano.jpg",
url: "https://gradio-builds.s3.amazonaws.com/demo-files/ghepardo-primo-piano.jpg",
orig_name: "cheetah.jpg"
},
show_label: false,
show_download_button: false,
interactive: true,
placeholder: md
}}
play={async ({ canvasElement }) => {
const canvas = within(canvasElement);
const webcamButton = await canvas.findByLabelText("Capture from camera");
userEvent.click(webcamButton);
userEvent.click(await canvas.findByTitle("grant webcam access"));
userEvent.click(await canvas.findByLabelText("Upload file"));
userEvent.click(await canvas.findByLabelText("Paste from clipboard"));
}}
/>
<Story
name="interactive with webcam"
args={{
sources: ["webcam"],
show_download_button: true,
interactive: true
}}
/>
<Story
name="interactive with clipboard"
args={{
sources: ["clipboard"],
show_download_button: true,
interactive: true
}}
/>
<Story
name="interactive webcam with streaming"
args={{
sources: ["webcam"],
show_download_button: true,
interactive: true,
value: {
path: "https://gradio-builds.s3.amazonaws.com/demo-files/ghepardo-primo-piano.jpg",
url: "https://gradio-builds.s3.amazonaws.com/demo-files/ghepardo-primo-piano.jpg",
orig_name: "cheetah.jpg"
},
streaming: true
}}
/>