fix(layout): replace hardcoded 'Hochladen' with m.upload_action() + aria-label
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -363,6 +363,7 @@
|
|||||||
"doc_panel_discussion_annotation_tab": "Annotation · Seite {page}",
|
"doc_panel_discussion_annotation_tab": "Annotation · Seite {page}",
|
||||||
"pdf_annotations_show": "Annotierungen anzeigen",
|
"pdf_annotations_show": "Annotierungen anzeigen",
|
||||||
"pdf_annotations_hide": "Annotierungen verbergen",
|
"pdf_annotations_hide": "Annotierungen verbergen",
|
||||||
|
"upload_action": "Hochladen",
|
||||||
"upload_drop_hint": "Einzeln oder mehrere Dateien auf einmal hochladen",
|
"upload_drop_hint": "Einzeln oder mehrere Dateien auf einmal hochladen",
|
||||||
"upload_accepted_types": "PDF, JPEG, PNG, TIFF",
|
"upload_accepted_types": "PDF, JPEG, PNG, TIFF",
|
||||||
"upload_filename_hint": "Tipp: 2024-03-15_Mueller_Hans.pdf → Datum und Absender werden vorausgefüllt",
|
"upload_filename_hint": "Tipp: 2024-03-15_Mueller_Hans.pdf → Datum und Absender werden vorausgefüllt",
|
||||||
|
|||||||
@@ -363,6 +363,7 @@
|
|||||||
"doc_panel_discussion_annotation_tab": "Annotation · Page {page}",
|
"doc_panel_discussion_annotation_tab": "Annotation · Page {page}",
|
||||||
"pdf_annotations_show": "Show annotations",
|
"pdf_annotations_show": "Show annotations",
|
||||||
"pdf_annotations_hide": "Hide annotations",
|
"pdf_annotations_hide": "Hide annotations",
|
||||||
|
"upload_action": "Upload",
|
||||||
"upload_drop_hint": "Drop one or multiple files at once",
|
"upload_drop_hint": "Drop one or multiple files at once",
|
||||||
"upload_accepted_types": "PDF, JPEG, PNG, TIFF",
|
"upload_accepted_types": "PDF, JPEG, PNG, TIFF",
|
||||||
"upload_filename_hint": "Tip: 2024-03-15_Mueller_Hans.pdf → date and sender pre-filled",
|
"upload_filename_hint": "Tip: 2024-03-15_Mueller_Hans.pdf → date and sender pre-filled",
|
||||||
|
|||||||
@@ -363,6 +363,7 @@
|
|||||||
"doc_panel_discussion_annotation_tab": "Anotación · Página {page}",
|
"doc_panel_discussion_annotation_tab": "Anotación · Página {page}",
|
||||||
"pdf_annotations_show": "Mostrar anotaciones",
|
"pdf_annotations_show": "Mostrar anotaciones",
|
||||||
"pdf_annotations_hide": "Ocultar anotaciones",
|
"pdf_annotations_hide": "Ocultar anotaciones",
|
||||||
|
"upload_action": "Subir",
|
||||||
"upload_drop_hint": "Uno o varios archivos a la vez",
|
"upload_drop_hint": "Uno o varios archivos a la vez",
|
||||||
"upload_accepted_types": "PDF, JPEG, PNG, TIFF",
|
"upload_accepted_types": "PDF, JPEG, PNG, TIFF",
|
||||||
"upload_filename_hint": "Consejo: 2024-03-15_Mueller_Hans.pdf → fecha y remitente prellenados",
|
"upload_filename_hint": "Consejo: 2024-03-15_Mueller_Hans.pdf → fecha y remitente prellenados",
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
import './layout.css';
|
import './layout.css';
|
||||||
import { page } from '$app/state';
|
import { page } from '$app/state';
|
||||||
import { onMount } from 'svelte';
|
import { onMount } from 'svelte';
|
||||||
|
import * as m from '$lib/paraglide/messages.js';
|
||||||
import LanguageSwitcher from '$lib/components/LanguageSwitcher.svelte';
|
import LanguageSwitcher from '$lib/components/LanguageSwitcher.svelte';
|
||||||
import ThemeToggle from '$lib/components/ThemeToggle.svelte';
|
import ThemeToggle from '$lib/components/ThemeToggle.svelte';
|
||||||
import NotificationBell from '$lib/components/NotificationBell.svelte';
|
import NotificationBell from '$lib/components/NotificationBell.svelte';
|
||||||
@@ -55,6 +56,7 @@ const userInitials = $derived.by(() => {
|
|||||||
{#if data?.user}
|
{#if data?.user}
|
||||||
<a
|
<a
|
||||||
href="/documents/new"
|
href="/documents/new"
|
||||||
|
aria-label={m.upload_action()}
|
||||||
class="inline-flex items-center gap-2 rounded-sm border border-white/25 px-3.5 py-1.5 font-sans text-[11px] font-bold tracking-[.12em] text-white uppercase transition-colors hover:bg-white/10"
|
class="inline-flex items-center gap-2 rounded-sm border border-white/25 px-3.5 py-1.5 font-sans text-[11px] font-bold tracking-[.12em] text-white uppercase transition-colors hover:bg-white/10"
|
||||||
>
|
>
|
||||||
<svg
|
<svg
|
||||||
@@ -73,7 +75,7 @@ const userInitials = $derived.by(() => {
|
|||||||
<polyline points="17 8 12 3 7 8" />
|
<polyline points="17 8 12 3 7 8" />
|
||||||
<line x1="12" y1="3" x2="12" y2="15" />
|
<line x1="12" y1="3" x2="12" y2="15" />
|
||||||
</svg>
|
</svg>
|
||||||
Hochladen
|
{m.upload_action()}
|
||||||
</a>
|
</a>
|
||||||
{/if}
|
{/if}
|
||||||
<!-- Language selector (desktop only — mobile lives in nav drawer) -->
|
<!-- Language selector (desktop only — mobile lives in nav drawer) -->
|
||||||
|
|||||||
@@ -48,6 +48,22 @@ describe('Layout – user avatar button', () => {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ─── Upload link ──────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
|
describe('Layout – upload link', () => {
|
||||||
|
it('has aria-label for screen reader access', async () => {
|
||||||
|
render(Layout, { data: makeData(), children: emptySnippet });
|
||||||
|
const link = page.getByRole('link', { name: /Hochladen|Upload|Subir/i });
|
||||||
|
await expect.element(link).toHaveAttribute('aria-label');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('navigates to /documents/new', async () => {
|
||||||
|
render(Layout, { data: makeData(), children: emptySnippet });
|
||||||
|
const link = page.getByRole('link', { name: /Hochladen|Upload|Subir/i });
|
||||||
|
await expect.element(link).toHaveAttribute('href', '/documents/new');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// ─── Dropdown ─────────────────────────────────────────────────────────────────
|
// ─── Dropdown ─────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
describe('Layout – user dropdown', () => {
|
describe('Layout – user dropdown', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user