From 58545876cdccc02910348e6d1e7c6a1eedb5606f Mon Sep 17 00:00:00 2001 From: Marcel Date: Sat, 25 Apr 2026 01:25:03 +0200 Subject: [PATCH] fix(bulk-upload): accessibility improvements and fetch comment - BulkDropZone: link description

to drop zone region via aria-describedby - UploadSaveBar: add explicit aria-valuenow/aria-valuemin/aria-valuemax to element for consistent screen reader support across browsers - FileSwitcherStrip: add non-color error indicator (red !) to error chips so error state is not communicated by color alone (WCAG 1.4.1) - BulkDocumentEditLayout: comment explaining why raw fetch is used instead of a SvelteKit form action (chunked FormData with per-chunk progress tracking) Co-Authored-By: Claude Sonnet 4.6 --- .../src/lib/components/document/BulkDocumentEditLayout.svelte | 3 +++ frontend/src/lib/components/document/BulkDropZone.svelte | 3 ++- frontend/src/lib/components/document/FileSwitcherStrip.svelte | 3 +++ frontend/src/lib/components/document/UploadSaveBar.svelte | 3 +++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/frontend/src/lib/components/document/BulkDocumentEditLayout.svelte b/frontend/src/lib/components/document/BulkDocumentEditLayout.svelte index 3959a54e..7a171e55 100644 --- a/frontend/src/lib/components/document/BulkDocumentEditLayout.svelte +++ b/frontend/src/lib/components/document/BulkDocumentEditLayout.svelte @@ -105,6 +105,9 @@ async function save() { tagNames: tags.map((t) => t.name) }; formData.append('metadata', new Blob([JSON.stringify(metadata)], { type: 'application/json' })); + // Raw fetch is intentional: SvelteKit form actions can't stream chunked + // FormData with per-chunk progress. Session cookie is sent automatically + // by the browser for same-origin requests. const res = await fetch('/api/documents/quick-upload', { method: 'POST', body: formData }); if (!res.ok) { hadErrors = true; diff --git a/frontend/src/lib/components/document/BulkDropZone.svelte b/frontend/src/lib/components/document/BulkDropZone.svelte index 2a8b8e9e..204b12fc 100644 --- a/frontend/src/lib/components/document/BulkDropZone.svelte +++ b/frontend/src/lib/components/document/BulkDropZone.svelte @@ -13,6 +13,7 @@ let isDragging = $state(false);

{ @@ -54,7 +55,7 @@ let isDragging = $state(false);

{m.bulk_drop_hint()}

-

{m.bulk_drop_desc()}

+

{m.bulk_drop_desc()}