From c1ae5bfd301121fa70e7aadc2d0e081b77563e64 Mon Sep 17 00:00:00 2001 From: nico Date: Thu, 20 Feb 2025 17:16:46 +0100 Subject: [PATCH] fix(a11y forms): dataset availability --- .../forms/dataset/DatasetPropertiesFields.vue | 133 +++++++++--------- .../forms/dataset/SelectDataset.vue | 6 + src/utils/form.ts | 2 +- 3 files changed, 76 insertions(+), 65 deletions(-) diff --git a/src/components/forms/dataset/DatasetPropertiesFields.vue b/src/components/forms/dataset/DatasetPropertiesFields.vue index 67e44946..821e5e36 100644 --- a/src/components/forms/dataset/DatasetPropertiesFields.vue +++ b/src/components/forms/dataset/DatasetPropertiesFields.vue @@ -136,73 +136,74 @@ onMounted(() => { :error-title="getErrorMessage('title')" :error-purpose="getErrorMessage('purpose')" /> -
- -
-
-
- - Vous ne trouvez pas le jeu de données dans data.gouv.fr ? - - +
+ -
+
+
- + Vous ne trouvez pas le jeu de données dans data.gouv.fr ? + + - + + +
+ -
- - - -
+ + +
+
{ .fr-fieldset { margin: 30px 0; } -.fr-fieldset:focus { +.fr-fieldset.availability[aria-invalid='true'] { + border: none; + outline: 2px solid var(--border-plain-error); +} +#input-availability:focus { outline-style: solid; } fieldset legend { diff --git a/src/components/forms/dataset/SelectDataset.vue b/src/components/forms/dataset/SelectDataset.vue index 34ec5d8f..bcd261c9 100644 --- a/src/components/forms/dataset/SelectDataset.vue +++ b/src/components/forms/dataset/SelectDataset.vue @@ -20,6 +20,10 @@ const props = defineProps({ alreadySelectedDatasets: { type: Array, default: [] + }, + isInvalid: { + type: Boolean, + default: false } }) @@ -85,6 +89,8 @@ const clear = () => { no-options-text="Aucun jeu de données trouvé, précisez ou élargissez votre recherche." :aria="{ 'aria-describedby': 'dataset-description', + 'aria-errormessage': 'errors-availability', + 'aria-invalid': `${isInvalid ? true : undefined}`, // useless or unsupported https://github.com/vueform/multiselect/issues/436 'aria-labelledby': null, 'aria-multiselectable': null, diff --git a/src/utils/form.ts b/src/utils/form.ts index c46234a6..ba127a8a 100644 --- a/src/utils/form.ts +++ b/src/utils/form.ts @@ -27,7 +27,7 @@ const errorMessages = [ }, { inputName: 'availability', - message: 'La disponibilité doit être renseignée.' + message: 'Un jeu de données ou une disponibilité doit être sélectionné.' }, { inputName: 'availabilityUrl',