From 607f0af7fe49827c23017ba8b80a1f3bc176e525 Mon Sep 17 00:00:00 2001 From: MinamiFunakoshiTR Date: Thu, 13 Mar 2025 10:50:46 -0700 Subject: [PATCH] a11y fixes --- .../BeforeAfter/BeforeAfter.stories.svelte | 13 ++--- src/components/BeforeAfter/BeforeAfter.svelte | 49 +++++++++---------- src/utils/index.ts | 5 ++ 3 files changed, 33 insertions(+), 34 deletions(-) create mode 100644 src/utils/index.ts diff --git a/src/components/BeforeAfter/BeforeAfter.stories.svelte b/src/components/BeforeAfter/BeforeAfter.stories.svelte index 9994ba48..02a54187 100644 --- a/src/components/BeforeAfter/BeforeAfter.stories.svelte +++ b/src/components/BeforeAfter/BeforeAfter.stories.svelte @@ -3,7 +3,7 @@ import BeforeAfter from './BeforeAfter.svelte'; const { Story } = defineMeta({ - title: 'Components/Graphics/BeforeAfter', + title: 'Components/Multimedia/BeforeAfter', component: BeforeAfter, argTypes: { handleColour: { control: 'color' }, @@ -40,13 +40,13 @@ afterAlt="Satellite image of Russian base at Myrne taken on Oct. 20, 2020." > {#snippet beforeOverlay()} -
+

July 7, 2020

Initially, this site was far smaller.

{/snippet} {#snippet afterOverlay()} -
+

Oct. 20, 2020

But then forces built up.

@@ -60,9 +60,6 @@ .overlay { background: rgba(0, 0, 0, 0.45); max-width: 350px; - &.after { - text-align: right; - } p { color: #ffffff; } @@ -78,14 +75,14 @@ afterAlt="Satellite image of Russian base at Myrne taken on Oct. 20, 2020." > {#snippet beforeOverlay()} -
+

On July 7, 2020, the base contained only a few transport vehicles.

{/snippet} {#snippet afterOverlay()} -
+

But by October, tanks and artillery could be seen.

diff --git a/src/components/BeforeAfter/BeforeAfter.svelte b/src/components/BeforeAfter/BeforeAfter.svelte index a97a33a4..23621bfc 100644 --- a/src/components/BeforeAfter/BeforeAfter.svelte +++ b/src/components/BeforeAfter/BeforeAfter.svelte @@ -6,12 +6,7 @@ import Block from '../Block/Block.svelte'; import PaddingReset from '../PaddingReset/PaddingReset.svelte'; import type { ContainerWidth } from '../@types/global'; - - /** Helper function to generate a random 4-character string */ - const random4 = () => - Math.floor((1 + Math.random()) * 0x10000) - .toString(16) - .substring(1); + import { random4 } from '../../utils/'; interface Props { /** Width of the chart within the text well. Options: wide, wider, widest, fluid */ @@ -98,7 +93,7 @@ let figure: HTMLElement | undefined = $state(undefined); let beforeOverlayWidth = $state(0); let isFocused = false; - let containerWidth: number = $state(0); // check if this should be undefined + let containerWidth: number = $state(0); // Defaults to 0 let containerHeight = $derived( containerWidth && heightRatio ? containerWidth * heightRatio : height @@ -112,6 +107,7 @@ x < beforeOverlayWidth ? Math.abs(x - beforeOverlayWidth) : 0 ); + /** Toggle `isFocused` */ const onfocus = () => (isFocused = true); const onblur = () => (isFocused = false); @@ -127,10 +123,12 @@ } }; + /** Measure image and set image offset */ const measureImage = () => { if (img && img.complete) imgOffset = img.getBoundingClientRect(); }; + /** Reset image offset on resize */ const resize = () => { measureImage(); }; @@ -142,6 +140,7 @@ } }; + /** Move the slider */ const move = (e: MouseEvent | TouchEvent) => { if (sliding && imgOffset) { const el = @@ -158,11 +157,14 @@ offset = x / w; } }; + + /** Starts the slider */ const start = (e: MouseEvent | TouchEvent) => { sliding = true; move(e); }; + /** Sets `sliding` to `false`*/ const end = () => { sliding = false; }; @@ -177,46 +179,41 @@ + {#if beforeSrc && beforeAlt && afterSrc && afterAlt}
- - -
- {afterAlt} - {beforeAlt} {#if beforeOverlay}
- +
{#if caption} @@ -264,7 +261,7 @@