diff --git a/src/renderer/extensions/vueNodes/widgets/components/WidgetImageCompare.stories.ts b/src/renderer/extensions/vueNodes/widgets/components/WidgetImageCompare.stories.ts new file mode 100644 index 0000000000..2d86b1df2d --- /dev/null +++ b/src/renderer/extensions/vueNodes/widgets/components/WidgetImageCompare.stories.ts @@ -0,0 +1,104 @@ +import type { Meta, StoryObj } from '@storybook/vue3-vite' +import { ref } from 'vue' + +import type { SimplifiedWidget } from '@/types/simplifiedWidget' + +import type { ImageCompareValue } from './WidgetImageCompare.vue' +import WidgetImageCompare from './WidgetImageCompare.vue' + +function createSampleImage(label: string, fill: string): string { + const svg = + `` + + `` + + `` + + `${label}` + return `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}` +} + +const SAMPLE_BEFORE = createSampleImage('Before', '#475569') +const SAMPLE_AFTER = createSampleImage('After', '#0f766e') + +const meta: Meta = { + title: 'Components/Display/ImageCompare', + component: WidgetImageCompare, + tags: ['autodocs'], + parameters: { layout: 'centered' }, + decorators: [ + (story) => ({ + components: { story }, + template: '
' + }) + ] +} + +export default meta +type Story = StoryObj + +export const Default: Story = { + render: () => ({ + components: { WidgetImageCompare }, + setup() { + const widget = ref>({ + name: 'compare', + type: 'IMAGE_COMPARE', + value: { + beforeImages: [SAMPLE_BEFORE], + afterImages: [SAMPLE_AFTER] + } + }) + return { widget } + }, + template: '' + }) +} + +export const WithBatchNavigation: Story = { + render: () => ({ + components: { WidgetImageCompare }, + setup() { + const widget = ref>({ + name: 'compare', + type: 'IMAGE_COMPARE', + value: { + beforeImages: [SAMPLE_BEFORE, SAMPLE_AFTER], + afterImages: [SAMPLE_AFTER, SAMPLE_BEFORE], + beforeAlt: 'Before batch', + afterAlt: 'After batch' + } + }) + return { widget } + }, + template: '' + }) +} + +export const SingleImageFallback: Story = { + render: () => ({ + components: { WidgetImageCompare }, + setup() { + const widget = ref>({ + name: 'compare', + type: 'IMAGE_COMPARE', + value: SAMPLE_BEFORE + }) + return { widget } + }, + template: '' + }) +} + +export const NoImages: Story = { + render: () => ({ + components: { WidgetImageCompare }, + setup() { + const widget = ref>({ + name: 'compare', + type: 'IMAGE_COMPARE', + value: {} + }) + return { widget } + }, + template: '' + }) +} diff --git a/src/renderer/extensions/vueNodes/widgets/components/WidgetImageCompare.test.ts b/src/renderer/extensions/vueNodes/widgets/components/WidgetImageCompare.test.ts index e67eda8b0c..0b1ef000d6 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/WidgetImageCompare.test.ts +++ b/src/renderer/extensions/vueNodes/widgets/components/WidgetImageCompare.test.ts @@ -58,7 +58,7 @@ describe('WidgetImageCompare Display', () => { expect(images[1].attributes('src')).toBe('https://example.com/before.jpg') images.forEach((img) => { - expect(img.classes()).toContain('object-contain') + expect(img.classes()).toContain('object-cover') }) }) }) @@ -290,7 +290,6 @@ describe('WidgetImageCompare Display', () => { const slider = wrapper.find('[role="presentation"]') expect(slider.exists()).toBe(true) - expect(slider.classes()).toContain('bg-white') }) it('does not render slider when no images', () => { diff --git a/src/renderer/extensions/vueNodes/widgets/components/WidgetImageCompare.vue b/src/renderer/extensions/vueNodes/widgets/components/WidgetImageCompare.vue index c6df3f3332..882aeaeff5 100644 --- a/src/renderer/extensions/vueNodes/widgets/components/WidgetImageCompare.vue +++ b/src/renderer/extensions/vueNodes/widgets/components/WidgetImageCompare.vue @@ -26,14 +26,14 @@
+