From 87c8d555058022ca37558bf3c2752d4f8ba11279 Mon Sep 17 00:00:00 2001 From: Dualmind-Assistant Date: Tue, 21 Apr 2026 13:06:22 +0000 Subject: [PATCH] Improve accessibility with ARIA roles, focus styles and language switching --- frontend/src/components/LanguageSelect.vue | 32 +++++++++---- frontend/src/components/PainSlider.vue | 19 ++++++-- frontend/src/components/SymptomSelector.vue | 52 +++++++++++++++------ frontend/src/views/LanguageView.vue | 8 ++++ 4 files changed, 85 insertions(+), 26 deletions(-) diff --git a/frontend/src/components/LanguageSelect.vue b/frontend/src/components/LanguageSelect.vue index 50fa6f6..d3d4f94 100644 --- a/frontend/src/components/LanguageSelect.vue +++ b/frontend/src/components/LanguageSelect.vue @@ -10,12 +10,14 @@ const options = [ function select(code: string) { modelValue.value = code } + +const hintId = 'language-hint' diff --git a/frontend/src/components/PainSlider.vue b/frontend/src/components/PainSlider.vue index 0124273..bec0c25 100644 --- a/frontend/src/components/PainSlider.vue +++ b/frontend/src/components/PainSlider.vue @@ -7,6 +7,9 @@ const props = defineProps<{ max: number }>() +const sliderId = 'pain-slider' +const labelId = 'pain-title' + function onInput(ev: Event) { const target = ev.target as HTMLInputElement modelValue.value = Number(target.value) @@ -14,21 +17,26 @@ function onInput(ev: Event) { diff --git a/frontend/src/views/LanguageView.vue b/frontend/src/views/LanguageView.vue index 2fca9b5..6fa6f77 100644 --- a/frontend/src/views/LanguageView.vue +++ b/frontend/src/views/LanguageView.vue @@ -7,6 +7,14 @@ import { useRouter } from 'vue-router' const router = useRouter() const { language, isLoadingConfig, loadError, loadQuestions } = useTriageSession() +watch( + () => language.value, + (val) => { + document.documentElement.lang = val + }, + { immediate: true }, +) + watch( () => language.value, () => {