@cnamts/synapse 0.0.11-alpha → 0.0.13-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/design-system-v3.js +5394 -3813
- package/dist/design-system-v3.umd.cjs +1 -1
- package/dist/src/components/Amelipro/types/types.d.ts +38 -0
- package/dist/src/components/CookieBanner/CookieBanner.d.ts +1 -1
- package/dist/src/components/Customs/SyInputSelect/SyInputSelect.d.ts +2 -0
- package/dist/src/components/Customs/SyTextField/SyTextField.d.ts +31 -23
- package/dist/src/components/Customs/SyTextField/types.d.ts +1 -0
- package/dist/src/components/DatePicker/DatePicker.d.ts +105 -102
- package/dist/src/components/DatePicker/DateTextInput.d.ts +82 -74
- package/dist/src/components/ErrorPage/ErrorPage.d.ts +1 -1
- package/dist/src/components/FileList/FileList.d.ts +1 -0
- package/dist/src/components/FileList/UploadItem/UploadItem.d.ts +1 -1
- package/dist/src/components/FilterInline/AccessibiliteItems.d.ts +30 -0
- package/dist/src/components/FilterInline/constants/ExpertiseLevelEnum.d.ts +4 -0
- package/dist/src/components/FilterSideBar/AccessibiliteItems.d.ts +29 -0
- package/dist/src/components/FilterSideBar/FilterSideBar.d.ts +31 -0
- package/dist/src/components/FilterSideBar/constants/ExpertiseLevelEnum.d.ts +4 -0
- package/dist/src/components/FilterSideBar/locales.d.ts +7 -0
- package/dist/src/components/LangBtn/LangBtn.d.ts +2 -2
- package/dist/src/components/NirField/NirField.d.ts +952 -0
- package/dist/src/components/NotificationBar/NotificationBar.d.ts +6 -6
- package/dist/src/components/PasswordField/PasswordField.d.ts +42 -8
- package/dist/src/components/PeriodField/PeriodField.d.ts +259 -235
- package/dist/src/components/PhoneField/PhoneField.d.ts +33 -3
- package/dist/src/components/RatingPicker/EmotionPicker/EmotionPicker.d.ts +1 -1
- package/dist/src/components/RatingPicker/NumberPicker/NumberPicker.d.ts +1 -1
- package/dist/src/components/RatingPicker/StarsPicker/StarsPicker.d.ts +1 -1
- package/dist/src/components/UploadWorkflow/AccessibiliteItems.d.ts +29 -0
- package/dist/src/components/UploadWorkflow/config.d.ts +29 -0
- package/dist/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.d.ts +4 -0
- package/dist/src/components/UploadWorkflow/locales.d.ts +7 -0
- package/dist/src/components/UploadWorkflow/types.d.ts +19 -0
- package/dist/src/components/UploadWorkflow/useFileList.d.ts +10 -0
- package/dist/src/components/UploadWorkflow/useFileUploadJourney.d.ts +9 -0
- package/dist/src/components/Usages/Usages.d.ts +10 -0
- package/dist/src/components/index.d.ts +5 -0
- package/dist/src/composables/date/tests/useDateFormat.spec.d.ts +1 -0
- package/dist/src/composables/date/tests/useDateInitialization.spec.d.ts +1 -0
- package/dist/src/composables/date/tests/useDatePickerAccessibility.spec.d.ts +1 -0
- package/dist/src/composables/date/useDateFormat.d.ts +26 -0
- package/dist/src/composables/date/useDateInitialization.d.ts +18 -0
- package/dist/src/composables/date/useDatePickerAccessibility.d.ts +8 -0
- package/dist/src/composables/rules/useFieldValidation.d.ts +1 -0
- package/dist/src/composables/useFilterable/useFilterable.d.ts +1 -1
- package/dist/src/composables/validation/tests/useValidation.spec.d.ts +1 -0
- package/dist/src/composables/validation/useValidation.d.ts +40 -0
- package/dist/src/designTokens/index.d.ts +3 -1
- package/dist/src/main.d.ts +1 -0
- package/dist/src/utils/formatDate/index.d.ts +3 -0
- package/dist/src/utils/formatDate/tests/formatDate.spec.d.ts +1 -0
- package/dist/src/utils/functions/validation/isDateAfter/index.d.ts +2 -0
- package/dist/src/utils/functions/validation/isDateAfter/tests/isDateAfter.spec.d.ts +1 -0
- package/dist/src/utils/functions/validation/isDateBefore/index.d.ts +2 -0
- package/dist/src/utils/functions/validation/isDateBefore/tests/isDateBefore.spec.d.ts +1 -0
- package/dist/src/utils/functions/validation/isDateInRange/index.d.ts +3 -0
- package/dist/src/utils/functions/validation/isDateInRange/tests/isDateInRange.spec.d.ts +1 -0
- package/dist/src/utils/functions/validation/isDateValid/index.d.ts +9 -0
- package/dist/src/utils/functions/validation/isDateValid/tests/isDateValid.spec.d.ts +1 -0
- package/dist/src/utils/functions/validation/isEmailValid/tests/isEmailValid.spec.d.ts +1 -0
- package/dist/src/utils/functions/validation/isWeekend/index.d.ts +3 -0
- package/dist/src/utils/functions/validation/isWeekend/tests/isWeekend.spec.d.ts +1 -0
- package/dist/src/utils/parseDate/index.d.ts +3 -0
- package/dist/src/utils/parseDate/tests/parseDate.spec.d.ts +1 -0
- package/dist/src/utils/rules/doMatchPattern/index.d.ts +3 -0
- package/dist/src/utils/rules/doMatchPattern/tests/matchPattern.spec.d.ts +1 -0
- package/dist/src/utils/rules/index.d.ts +11 -0
- package/dist/src/utils/rules/isDateValid/index.d.ts +4 -0
- package/dist/src/utils/rules/isDateValid/tests/isDateValid.spec.d.ts +1 -0
- package/dist/src/utils/rules/isExactLength/index.d.ts +3 -0
- package/dist/src/utils/rules/isExactLength/locales.d.ts +2 -0
- package/dist/src/utils/rules/isExactLength/tests/exactLength.spec.d.ts +1 -0
- package/dist/src/utils/rules/isMaxLength/index.d.ts +3 -0
- package/dist/src/utils/rules/isMaxLength/locales.d.ts +2 -0
- package/dist/src/utils/rules/isMaxLength/tests/isMaxLength.spec.d.ts +1 -0
- package/dist/src/utils/rules/isMinLength/index.d.ts +3 -0
- package/dist/src/utils/rules/isMinLength/locales.d.ts +2 -0
- package/dist/src/utils/rules/isMinLength/tests/isMinLength.spec.d.ts +1 -0
- package/dist/src/utils/rules/isNotAfterDate/index.d.ts +3 -0
- package/dist/src/utils/rules/isNotAfterDate/tests/isNotAfterDate.spec.d.ts +1 -0
- package/dist/src/utils/rules/isNotAfterToday/index.d.ts +4 -0
- package/dist/src/utils/rules/isNotAfterToday/locales.d.ts +2 -0
- package/dist/src/utils/rules/isNotAfterToday/tests/isNotAfterToday.spec.d.ts +1 -0
- package/dist/src/utils/rules/isNotBeforeDate/index.d.ts +3 -0
- package/dist/src/utils/rules/isNotBeforeDate/locales.d.ts +2 -0
- package/dist/src/utils/rules/isNotBeforeDate/tests/IsNotBeforeDate.spec.d.ts +1 -0
- package/dist/src/utils/rules/isNotBeforeToday/index.d.ts +4 -0
- package/dist/src/utils/rules/isNotBeforeToday/locales.d.ts +2 -0
- package/dist/src/utils/rules/isNotBeforeToday/tests/notBeforeToday.spec.d.ts +1 -0
- package/dist/src/utils/rules/isRequired/index.d.ts +4 -0
- package/dist/src/utils/rules/isRequired/locales.d.ts +2 -0
- package/dist/src/utils/rules/isRequired/tests/isRequred.spec.d.ts +1 -0
- package/dist/src/utils/rules/isValidEmail/index.d.ts +4 -0
- package/dist/src/utils/rules/isValidEmail/locales.d.ts +2 -0
- package/dist/src/utils/rules/isValidEmail/tests/isValidEmail.spec.d.ts +1 -0
- package/dist/src/vuetifyConfig.d.ts +81 -0
- package/dist/style.css +1 -1
- package/package.json +3 -1
- package/src/assets/_elevations.scss +89 -0
- package/src/assets/_fonts.scss +6 -0
- package/src/assets/_radius.scss +92 -0
- package/src/assets/_spacers.scss +149 -0
- package/src/assets/settings.scss +15 -3
- package/src/assets/tokens.scss +32 -29
- package/src/components/Amelipro/types/types.ts +40 -0
- package/src/components/ChipList/ChipList.stories.ts +26 -27
- package/src/components/ChipList/ChipList.vue +5 -1
- package/src/components/ChipList/config.ts +1 -0
- package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +2 -2
- package/src/components/Customs/SyBtnSelect/SyBtnSelect.mdx +1 -1
- package/src/components/Customs/SyInputSelect/SyInputSelect.mdx +1 -1
- package/src/components/Customs/SyInputSelect/SyInputSelect.stories.ts +65 -0
- package/src/components/Customs/SyInputSelect/SyInputSelect.vue +13 -3
- package/src/components/Customs/SySelect/SySelect.mdx +1 -1
- package/src/components/Customs/SySelect/SySelect.stories.ts +88 -5
- package/src/components/Customs/SySelect/SySelect.vue +55 -14
- package/src/components/Customs/SySelect/tests/SySelect.spec.ts +135 -2
- package/src/components/Customs/SyTextField/SyTextField.mdx +2 -2
- package/src/components/Customs/SyTextField/SyTextField.stories.ts +809 -79
- package/src/components/Customs/SyTextField/SyTextField.vue +135 -104
- package/src/components/Customs/SyTextField/tests/SyTextField.spec.ts +190 -38
- package/src/components/Customs/SyTextField/types.d.ts +1 -0
- package/src/components/DatePicker/DatePicker.stories.ts +177 -5
- package/src/components/DatePicker/DatePicker.vue +302 -233
- package/src/components/DatePicker/DateTextInput.vue +101 -246
- package/src/components/DatePicker/tests/DatePicker.spec.ts +123 -60
- package/src/components/DatePicker/tests/DateTextInput.spec.ts +202 -6
- package/src/components/FileList/Accessibilite.stories.ts +1 -1
- package/src/components/FileList/AccessibiliteItems.ts +22 -0
- package/src/components/FileList/FileList.vue +2 -1
- package/src/components/FileList/UploadItem/UploadItem.vue +10 -0
- package/src/components/FileUpload/FileUpload.stories.ts +93 -7
- package/src/components/FileUpload/FileUpload.vue +1 -0
- package/src/components/FileUpload/tests/FileUpload.spec.ts +4 -4
- package/src/components/FilterInline/Accessibilite.mdx +14 -0
- package/src/components/FilterInline/Accessibilite.stories.ts +216 -0
- package/src/components/FilterInline/AccessibiliteItems.ts +132 -0
- package/src/components/FilterInline/FilterInline.mdx +180 -34
- package/src/components/FilterInline/FilterInline.stories.ts +363 -6
- package/src/components/FilterInline/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/FilterSideBar/Accessibilite.mdx +14 -0
- package/src/components/FilterSideBar/Accessibilite.stories.ts +216 -0
- package/src/components/FilterSideBar/AccessibiliteItems.ts +153 -0
- package/src/components/FilterSideBar/FilterSideBar.mdx +237 -0
- package/src/components/FilterSideBar/FilterSideBar.stories.ts +798 -0
- package/src/components/FilterSideBar/FilterSideBar.vue +193 -0
- package/src/components/FilterSideBar/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/FilterSideBar/locales.ts +8 -0
- package/src/components/FilterSideBar/tests/FilterSideBar.spec.ts +305 -0
- package/src/components/FilterSideBar/tests/__snapshots__/FilterSideBar.spec.ts.snap +39 -0
- package/src/components/HeaderBar/Usages.mdx +1 -1
- package/src/components/NirField/NirField.stories.ts +738 -29
- package/src/components/NirField/NirField.vue +401 -359
- package/src/components/NirField/examples//342/200/257dataset/342/200/257.md +12 -0
- package/src/components/NirField/tests/NirField.spec.ts +88 -52
- package/src/components/NirField/tests/config.spec.ts +65 -0
- package/src/components/NotificationBar/Accessibilite.stories.ts +4 -0
- package/src/components/NotificationBar/NotificationBar.mdx +2 -2
- package/src/components/NotificationBar/NotificationBar.stories.ts +66 -13
- package/src/components/NotificationBar/NotificationBar.vue +42 -114
- package/src/components/NotificationBar/tests/NotificationBar.spec.ts +28 -33
- package/src/components/NotificationBar/tests/__snapshots__/NotificationBar.spec.ts.snap +1 -1
- package/src/components/PaginatedTable/PaginatedTable.vue +6 -10
- package/src/components/PaginatedTable/tests/__snapshots__/PaginatedTable.spec.ts.snap +4 -4
- package/src/components/PasswordField/PasswordField.mdx +129 -47
- package/src/components/PasswordField/PasswordField.stories.ts +1111 -120
- package/src/components/PasswordField/PasswordField.vue +212 -99
- package/src/components/PasswordField/tests/PasswordField.spec.ts +138 -9
- package/src/components/PeriodField/PeriodField.stories.ts +214 -118
- package/src/components/PeriodField/PeriodField.vue +238 -190
- package/src/components/PeriodField/tests/PeriodField.spec.ts +146 -0
- package/src/components/PhoneField/PhoneField.stories.ts +170 -0
- package/src/components/PhoneField/PhoneField.vue +76 -17
- package/src/components/PhoneField/indicatifs.ts +1 -1
- package/src/components/PhoneField/tests/PhoneField.spec.ts +40 -0
- package/src/components/RatingPicker/RatingPicker.stories.ts +7 -7
- package/src/components/SearchListField/SearchListField.stories.ts +1 -1
- package/src/components/UploadWorkflow/Accessibilite.mdx +14 -0
- package/src/components/UploadWorkflow/Accessibilite.stories.ts +216 -0
- package/src/components/UploadWorkflow/AccessibiliteItems.ts +192 -0
- package/src/components/UploadWorkflow/UploadWorkflow.mdx +75 -0
- package/src/components/UploadWorkflow/UploadWorkflow.stories.ts +943 -0
- package/src/components/UploadWorkflow/UploadWorkflow.vue +230 -0
- package/src/components/UploadWorkflow/config.ts +29 -0
- package/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/UploadWorkflow/locales.ts +8 -0
- package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +257 -0
- package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +54 -0
- package/src/components/UploadWorkflow/types.ts +21 -0
- package/src/components/UploadWorkflow/useFileList.ts +84 -0
- package/src/components/UploadWorkflow/useFileUploadJourney.ts +18 -0
- package/src/components/Usages/tests/Usages.spec.ts +183 -0
- package/src/components/index.ts +5 -0
- package/src/composables/date/tests/useDateFormat.spec.ts +67 -0
- package/src/composables/date/tests/useDateInitialization.spec.ts +89 -0
- package/src/composables/date/tests/useDatePickerAccessibility.spec.ts +102 -0
- package/src/composables/date/useDateFormat.ts +94 -0
- package/src/composables/date/useDateInitialization.ts +92 -0
- package/src/composables/date/useDatePickerAccessibility.ts +78 -0
- package/src/composables/rules/tests/useFieldValidation.spec.ts +385 -4
- package/src/composables/rules/useFieldValidation.ts +5 -2
- package/src/composables/useFilterable/useFilterable.ts +5 -4
- package/src/composables/validation/tests/useValidation.spec.ts +154 -0
- package/src/composables/validation/useValidation.ts +180 -0
- package/src/designTokens/index.ts +4 -0
- package/src/main.ts +1 -0
- package/src/stories/Accessibilite/Aculturation/AuditDesignSystem.mdx +28 -0
- package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +2 -2
- package/src/stories/Accessibilite/Audit/RGAA.mdx +6 -6
- package/src/stories/Accessibilite/Introduction.mdx +2 -1
- package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +1 -1
- package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +1 -1
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +8 -11
- package/src/stories/Accessibilite/KitDePreAudit/Outils/LecteursDEcran.mdx +77 -0
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru.mdx +9 -3
- package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +2 -2
- package/src/stories/Demarrer/Accueil.mdx +1 -1
- package/src/stories/Demarrer/Introduction.stories.ts +3 -3
- package/src/stories/Demarrer/Releases.mdx +8 -0
- package/src/stories/Demarrer/Releases.stories.ts +66 -0
- package/src/stories/DesignTokens/Conteneurs.stories.ts +3 -3
- package/src/stories/DesignTokens/ThemePA.mdx +4 -30
- package/src/stories/GuideDuDev/LesBreackingChanges.mdx +36 -0
- package/src/stories/GuideDuDev/UtiliserLesRules.mdx +321 -78
- package/src/stories/GuideDuDev/moduleDeNotification.mdx +1 -1
- package/src/utils/formatDate/index.ts +6 -0
- package/src/utils/formatDate/tests/formatDate.spec.ts +18 -0
- package/src/utils/functions/validation/isDateAfter/index.ts +9 -0
- package/src/utils/functions/validation/isDateAfter/tests/isDateAfter.spec.ts +18 -0
- package/src/utils/functions/validation/isDateBefore/index.ts +9 -0
- package/src/utils/functions/validation/isDateBefore/tests/isDateBefore.spec.ts +23 -0
- package/src/utils/functions/validation/isDateInRange/index.ts +22 -0
- package/src/utils/functions/validation/isDateInRange/tests/isDateInRange.spec.ts +28 -0
- package/src/utils/functions/validation/isDateValid/index.ts +67 -0
- package/src/utils/functions/validation/isDateValid/tests/isDateValid.spec.ts +46 -0
- package/src/utils/functions/validation/isEmailValid/index.ts +9 -0
- package/src/utils/functions/validation/isWeekend/index.ts +10 -0
- package/src/utils/functions/validation/isWeekend/tests/isWeekend.spec.ts +16 -0
- package/src/utils/parseDate/index.ts +29 -0
- package/src/utils/parseDate/tests/parseDate.spec.ts +52 -0
- package/src/utils/rules/Rules.mdx +16 -0
- package/src/utils/rules/doMatchPattern/DoMachPattern.mdx +66 -0
- package/src/utils/rules/doMatchPattern/DoMatchPattern.stories.ts +106 -0
- package/src/utils/rules/doMatchPattern/index.ts +28 -0
- package/src/utils/rules/doMatchPattern/locales.ts +5 -0
- package/src/utils/rules/doMatchPattern/tests/matchPattern.spec.ts +38 -0
- package/src/utils/rules/index.ts +11 -0
- package/src/utils/rules/isDateValid/IsDateValid.mdx +87 -0
- package/src/utils/rules/isDateValid/IsDateValid.stories.ts +113 -0
- package/src/utils/rules/isDateValid/index.ts +32 -0
- package/src/utils/rules/isDateValid/locales.ts +10 -0
- package/src/utils/rules/isDateValid/tests/isDateValid.spec.ts +27 -0
- package/src/utils/rules/isExactLength/IsExactLenght.mdx +68 -0
- package/src/utils/rules/isExactLength/IsExactLength.stories.ts +151 -0
- package/src/utils/rules/{exactLength → isExactLength}/index.ts +2 -4
- package/src/utils/rules/isExactLength/tests/exactLength.spec.ts +48 -0
- package/src/utils/rules/isMaxLength/IsMaxLength.mdx +68 -0
- package/src/utils/rules/isMaxLength/IsMaxLength.stories.ts +152 -0
- package/src/utils/rules/isMaxLength/index.ts +30 -0
- package/src/utils/rules/isMaxLength/locales.ts +6 -0
- package/src/utils/rules/isMaxLength/tests/isMaxLength.spec.ts +42 -0
- package/src/utils/rules/isMinLength/IsMinLength.mdx +68 -0
- package/src/utils/rules/isMinLength/IsMinLength.stories.ts +152 -0
- package/src/utils/rules/isMinLength/index.ts +30 -0
- package/src/utils/rules/isMinLength/locales.ts +6 -0
- package/src/utils/rules/isMinLength/tests/isMinLength.spec.ts +42 -0
- package/src/utils/rules/isNotAfterDate/IsNotAfterDate.mdx +68 -0
- package/src/utils/rules/isNotAfterDate/IsNotAfterDate.stories.ts +109 -0
- package/src/utils/rules/isNotAfterDate/index.ts +25 -0
- package/src/utils/rules/isNotAfterDate/locales.ts +6 -0
- package/src/utils/rules/isNotAfterDate/tests/isNotAfterDate.spec.ts +25 -0
- package/src/utils/rules/isNotAfterToday/IsNotAfterToday.mdx +83 -0
- package/src/utils/rules/isNotAfterToday/IsNotAfterToday.stories.ts +110 -0
- package/src/utils/rules/isNotAfterToday/index.ts +28 -0
- package/src/utils/rules/isNotAfterToday/locales.ts +5 -0
- package/src/utils/rules/isNotAfterToday/tests/isNotAfterToday.spec.ts +30 -0
- package/src/utils/rules/isNotBeforeDate/IsNotBeforeDate.mdx +68 -0
- package/src/utils/rules/isNotBeforeDate/IsNotBeforeDate.stories.ts +114 -0
- package/src/utils/rules/isNotBeforeDate/index.ts +25 -0
- package/src/utils/rules/isNotBeforeDate/locales.ts +6 -0
- package/src/utils/rules/isNotBeforeDate/tests/IsNotBeforeDate.spec.ts +25 -0
- package/src/utils/rules/isNotBeforeToday/IsNotBeforeToday.mdx +83 -0
- package/src/utils/rules/isNotBeforeToday/IsNotBeforeToday.stories.ts +110 -0
- package/src/utils/rules/isNotBeforeToday/index.ts +28 -0
- package/src/utils/rules/isNotBeforeToday/locales.ts +5 -0
- package/src/utils/rules/isNotBeforeToday/tests/notBeforeToday.spec.ts +36 -0
- package/src/utils/rules/isRequired/IsRequired.mdx +81 -0
- package/src/utils/rules/isRequired/IsRequired.stories.ts +101 -0
- package/src/utils/rules/{required → isRequired}/index.ts +3 -3
- package/src/utils/rules/{required/tests/index.spec.ts → isRequired/tests/isRequred.spec.ts} +9 -9
- package/src/utils/rules/isValidEmail/IsValidEmail.mdx +81 -0
- package/src/utils/rules/isValidEmail/IsValidEmail.stories.ts +101 -0
- package/src/utils/rules/{email → isValidEmail}/index.ts +3 -5
- package/src/utils/rules/{email/tests/email.spec.ts → isValidEmail/tests/isValidEmail.spec.ts} +5 -5
- package/src/vuetifyConfig.ts +61 -0
- package/dist/src/utils/rules/email/index.d.ts +0 -4
- package/dist/src/utils/rules/exactLength/index.d.ts +0 -4
- package/dist/src/utils/rules/required/index.d.ts +0 -4
- package/dist/src/utils/rules/required/ruleMessageHelper.d.ts +0 -3
- package/src/components/Customs/SyTextField/tests/__snapshots__/SyTextField.spec.ts.snap +0 -58
- package/src/composables/useFilterable/__snapshots__/useFilterable.spec.ts.snap +0 -3
- package/src/utils/functions/isEmailValid/index.ts +0 -8
- package/src/utils/rules/required/ruleMessageHelper.ts +0 -14
- package/src/utils/rules/required/tests/rulesMessageHelper.spec.ts +0 -22
- /package/dist/src/{utils/functions/isEmailValid/tests/isEmailValid.spec.d.ts → components/FilterSideBar/tests/FilterSideBar.spec.d.ts} +0 -0
- /package/dist/src/{utils/rules/email/tests/email.spec.d.ts → components/NirField/tests/config.spec.d.ts} +0 -0
- /package/dist/src/{utils/rules/required/tests/index.spec.d.ts → components/UploadWorkflow/tests/UploadWorkflow.spec.d.ts} +0 -0
- /package/dist/src/{utils/rules/required/tests/rulesMessageHelper.spec.d.ts → components/Usages/tests/Usages.spec.d.ts} +0 -0
- /package/dist/src/utils/functions/{isEmailValid → validation/isEmailValid}/index.d.ts +0 -0
- /package/dist/src/utils/rules/{exactLength → doMatchPattern}/locales.d.ts +0 -0
- /package/dist/src/utils/rules/{email → isDateValid}/locales.d.ts +0 -0
- /package/dist/src/utils/rules/{required → isNotAfterDate}/locales.d.ts +0 -0
- /package/src/utils/functions/{isEmailValid → validation/isEmailValid}/tests/isEmailValid.spec.ts +0 -0
- /package/src/utils/rules/{exactLength → isExactLength}/locales.ts +0 -0
- /package/src/utils/rules/{required → isRequired}/locales.ts +0 -0
- /package/src/utils/rules/{email → isValidEmail}/locales.ts +0 -0
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { useValidation } from '../useValidation'
|
|
3
|
+
|
|
4
|
+
describe('useValidation', () => {
|
|
5
|
+
it('should initialize with empty validation state', () => {
|
|
6
|
+
const validation = useValidation()
|
|
7
|
+
|
|
8
|
+
expect(validation.errors.value).toEqual([])
|
|
9
|
+
expect(validation.warnings.value).toEqual([])
|
|
10
|
+
expect(validation.successes.value).toEqual([])
|
|
11
|
+
expect(validation.hasError.value).toBe(false)
|
|
12
|
+
expect(validation.hasWarning.value).toBe(false)
|
|
13
|
+
expect(validation.hasSuccess.value).toBe(false)
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
it('should handle basic validation rules', () => {
|
|
17
|
+
const validation = useValidation()
|
|
18
|
+
const rules = [{
|
|
19
|
+
type: 'required',
|
|
20
|
+
options: {
|
|
21
|
+
message: 'Ce champ est requis',
|
|
22
|
+
successMessage: 'Champ valide',
|
|
23
|
+
},
|
|
24
|
+
}]
|
|
25
|
+
|
|
26
|
+
// Test avec une valeur vide
|
|
27
|
+
const emptyResult = validation.validateField('', rules)
|
|
28
|
+
expect(emptyResult.hasError).toBe(true)
|
|
29
|
+
expect(emptyResult.state.errors).toContain('Ce champ est requis')
|
|
30
|
+
|
|
31
|
+
// Test avec une valeur valide
|
|
32
|
+
const validResult = validation.validateField('test', rules)
|
|
33
|
+
expect(validResult.hasSuccess).toBe(true)
|
|
34
|
+
expect(validResult.state.successes).toContain('Champ valide')
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
it('should handle warning rules', () => {
|
|
38
|
+
const validation = useValidation()
|
|
39
|
+
const warningRules = [{
|
|
40
|
+
type: 'custom',
|
|
41
|
+
options: {
|
|
42
|
+
validate: (value: string) => value.length >= 8,
|
|
43
|
+
warningMessage: 'Le champ devrait contenir au moins 8 caractères',
|
|
44
|
+
isWarning: true,
|
|
45
|
+
},
|
|
46
|
+
}]
|
|
47
|
+
|
|
48
|
+
// Test avec une valeur courte
|
|
49
|
+
const shortResult = validation.validateField('test', [], warningRules)
|
|
50
|
+
expect(shortResult.hasWarning).toBe(true)
|
|
51
|
+
expect(shortResult.state.warnings[0]).toContain('8 caractères')
|
|
52
|
+
|
|
53
|
+
// Test avec une valeur valide
|
|
54
|
+
const validResult = validation.validateField('test_long', [], warningRules)
|
|
55
|
+
expect(validResult.hasWarning).toBe(false)
|
|
56
|
+
expect(validResult.state.warnings).toEqual([])
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
it('should handle multiple validation rules', () => {
|
|
60
|
+
const validation = useValidation()
|
|
61
|
+
const rules = [
|
|
62
|
+
{
|
|
63
|
+
type: 'required',
|
|
64
|
+
options: {
|
|
65
|
+
message: 'Ce champ est requis',
|
|
66
|
+
},
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
type: 'minLength',
|
|
70
|
+
options: {
|
|
71
|
+
length: 3,
|
|
72
|
+
message: 'Minimum 3 caractères requis',
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
]
|
|
76
|
+
|
|
77
|
+
// Test avec une valeur vide
|
|
78
|
+
const emptyResult = validation.validateField('', rules)
|
|
79
|
+
expect(emptyResult.hasError).toBe(true)
|
|
80
|
+
expect(emptyResult.state.errors).toContain('Ce champ est requis')
|
|
81
|
+
|
|
82
|
+
// Test avec une valeur trop courte
|
|
83
|
+
const shortResult = validation.validateField('ab', rules)
|
|
84
|
+
expect(shortResult.hasError).toBe(true)
|
|
85
|
+
expect(shortResult.state.errors).toContain('Minimum 3 caractères requis')
|
|
86
|
+
|
|
87
|
+
// Test avec une valeur valide
|
|
88
|
+
const validResult = validation.validateField('abc', rules)
|
|
89
|
+
expect(validResult.hasError).toBe(false)
|
|
90
|
+
expect(validResult.hasSuccess).toBe(true)
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
it('should respect showSuccessMessages option', () => {
|
|
94
|
+
const validation = useValidation({ showSuccessMessages: false })
|
|
95
|
+
const rules = [{
|
|
96
|
+
type: 'required',
|
|
97
|
+
options: {
|
|
98
|
+
message: 'Ce champ est requis',
|
|
99
|
+
successMessage: 'Champ valide',
|
|
100
|
+
},
|
|
101
|
+
}]
|
|
102
|
+
|
|
103
|
+
const result = validation.validateField('test', rules)
|
|
104
|
+
expect(result.hasSuccess).toBe(false)
|
|
105
|
+
expect(result.state.successes).toEqual([])
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
it('should use fieldIdentifier in messages', () => {
|
|
109
|
+
const validation = useValidation({ fieldIdentifier: 'Email' })
|
|
110
|
+
const rules = [{
|
|
111
|
+
type: 'required',
|
|
112
|
+
options: {
|
|
113
|
+
message: 'Le champ Email est requis',
|
|
114
|
+
},
|
|
115
|
+
}]
|
|
116
|
+
|
|
117
|
+
const result = validation.validateField('', rules)
|
|
118
|
+
expect(result.state.errors[0]).toContain('Email')
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
it('should clear validation state', () => {
|
|
122
|
+
const validation = useValidation()
|
|
123
|
+
const rules = [{
|
|
124
|
+
type: 'required',
|
|
125
|
+
options: {
|
|
126
|
+
message: 'Ce champ est requis',
|
|
127
|
+
},
|
|
128
|
+
}]
|
|
129
|
+
|
|
130
|
+
validation.validateField('', rules)
|
|
131
|
+
expect(validation.hasError.value).toBe(true)
|
|
132
|
+
|
|
133
|
+
validation.clearValidation()
|
|
134
|
+
expect(validation.errors.value).toEqual([])
|
|
135
|
+
expect(validation.warnings.value).toEqual([])
|
|
136
|
+
expect(validation.successes.value).toEqual([])
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
it('should validate on submit', async () => {
|
|
140
|
+
const validation = useValidation()
|
|
141
|
+
const rules = [{
|
|
142
|
+
type: 'required',
|
|
143
|
+
options: {
|
|
144
|
+
message: 'Ce champ est requis',
|
|
145
|
+
},
|
|
146
|
+
}]
|
|
147
|
+
|
|
148
|
+
validation.validateField('', rules)
|
|
149
|
+
expect(await validation.validateOnSubmit()).toBe(false)
|
|
150
|
+
|
|
151
|
+
validation.validateField('test', rules)
|
|
152
|
+
expect(await validation.validateOnSubmit()).toBe(true)
|
|
153
|
+
})
|
|
154
|
+
})
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { ref, computed } from 'vue'
|
|
2
|
+
import { useFieldValidation, type RuleOptions } from '../rules/useFieldValidation'
|
|
3
|
+
|
|
4
|
+
export type ValidationRule = {
|
|
5
|
+
type: string
|
|
6
|
+
options: RuleOptions
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface ValidationOptions {
|
|
10
|
+
showSuccessMessages?: boolean
|
|
11
|
+
fieldIdentifier?: string
|
|
12
|
+
customRules?: ValidationRule[]
|
|
13
|
+
warningRules?: ValidationRule[]
|
|
14
|
+
successRules?: ValidationRule[]
|
|
15
|
+
disableErrorHandling?: boolean
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface ValidationState {
|
|
19
|
+
errors: string[]
|
|
20
|
+
warnings: string[]
|
|
21
|
+
successes: string[]
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export interface ValidationResult {
|
|
25
|
+
hasError: boolean
|
|
26
|
+
hasWarning: boolean
|
|
27
|
+
hasSuccess: boolean
|
|
28
|
+
state: ValidationState
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Composable pour gérer la validation des champs de formulaire
|
|
33
|
+
* @param options Options de configuration de la validation
|
|
34
|
+
* @returns Un objet contenant les états et méthodes de validation
|
|
35
|
+
*/
|
|
36
|
+
export function useValidation(options: ValidationOptions = { showSuccessMessages: true }) {
|
|
37
|
+
const errors = ref<string[]>([])
|
|
38
|
+
const warnings = ref<string[]>([])
|
|
39
|
+
const successes = ref<string[]>([])
|
|
40
|
+
|
|
41
|
+
const { generateRules } = useFieldValidation()
|
|
42
|
+
|
|
43
|
+
const hasError = computed(() => errors.value.length > 0)
|
|
44
|
+
const hasWarning = computed(() => warnings.value.length > 0)
|
|
45
|
+
const hasSuccess = computed(() =>
|
|
46
|
+
successes.value.length > 0 && !hasError.value && !hasWarning.value,
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
const clearValidation = () => {
|
|
50
|
+
errors.value = []
|
|
51
|
+
warnings.value = []
|
|
52
|
+
successes.value = []
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const validateField = (
|
|
56
|
+
value: unknown,
|
|
57
|
+
rules: ValidationRule[] = [],
|
|
58
|
+
warningRules: ValidationRule[] = [],
|
|
59
|
+
successRules: ValidationRule[] = [],
|
|
60
|
+
): ValidationResult => {
|
|
61
|
+
clearValidation()
|
|
62
|
+
|
|
63
|
+
// Si la gestion des erreurs est désactivée, on retourne un résultat sans erreurs
|
|
64
|
+
if (options.disableErrorHandling) {
|
|
65
|
+
return {
|
|
66
|
+
hasError: false,
|
|
67
|
+
hasWarning: false,
|
|
68
|
+
hasSuccess: false,
|
|
69
|
+
state: {
|
|
70
|
+
errors: [],
|
|
71
|
+
warnings: [],
|
|
72
|
+
successes: [],
|
|
73
|
+
},
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Validation des règles normales
|
|
78
|
+
const normalRules = rules.map(rule => ({
|
|
79
|
+
type: rule.type,
|
|
80
|
+
options: {
|
|
81
|
+
...rule.options,
|
|
82
|
+
fieldIdentifier: options.fieldIdentifier || rule.options.fieldIdentifier,
|
|
83
|
+
},
|
|
84
|
+
}))
|
|
85
|
+
|
|
86
|
+
const validationRules = generateRules(normalRules)
|
|
87
|
+
let hasValidationError = false
|
|
88
|
+
validationRules.forEach((validationRule) => {
|
|
89
|
+
const result = validationRule(value)
|
|
90
|
+
if (result.error) {
|
|
91
|
+
errors.value.push(result.error)
|
|
92
|
+
hasValidationError = true
|
|
93
|
+
}
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
// Si pas d'erreur, ajouter le message de succès ou un message par défaut
|
|
97
|
+
if (!hasValidationError && value && options.showSuccessMessages !== false) {
|
|
98
|
+
const customSuccessMessage = rules.find(rule => rule.options.successMessage)?.options.successMessage
|
|
99
|
+
if (customSuccessMessage) {
|
|
100
|
+
successes.value.push(customSuccessMessage)
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
const defaultMessage = options.fieldIdentifier ? `Le champ ${options.fieldIdentifier} est valide.` : 'Champ valide'
|
|
104
|
+
successes.value.push(defaultMessage)
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
// Validation des règles d'avertissement
|
|
109
|
+
if (!hasValidationError) {
|
|
110
|
+
const warningValidationRules = generateRules(
|
|
111
|
+
warningRules.map(rule => ({
|
|
112
|
+
type: rule.type,
|
|
113
|
+
options: {
|
|
114
|
+
...rule.options,
|
|
115
|
+
isWarning: true,
|
|
116
|
+
fieldIdentifier: options.fieldIdentifier || rule.options.fieldIdentifier,
|
|
117
|
+
},
|
|
118
|
+
})),
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
warningValidationRules.forEach((validationRule) => {
|
|
122
|
+
const result = validationRule(value)
|
|
123
|
+
if (result.warning) {
|
|
124
|
+
warnings.value.push(result.warning)
|
|
125
|
+
}
|
|
126
|
+
})
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// Validation des règles de succès
|
|
130
|
+
if (!hasValidationError && !hasWarning.value) {
|
|
131
|
+
const successValidationRules = generateRules(
|
|
132
|
+
successRules.map(rule => ({
|
|
133
|
+
type: rule.type,
|
|
134
|
+
options: {
|
|
135
|
+
...rule.options,
|
|
136
|
+
isSuccess: true,
|
|
137
|
+
fieldIdentifier: options.fieldIdentifier || rule.options.fieldIdentifier,
|
|
138
|
+
},
|
|
139
|
+
})),
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
successValidationRules.forEach((validationRule) => {
|
|
143
|
+
const result = validationRule(value)
|
|
144
|
+
if (result.success && options.showSuccessMessages !== false) {
|
|
145
|
+
successes.value.push(result.success)
|
|
146
|
+
}
|
|
147
|
+
})
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return {
|
|
151
|
+
hasError: hasError.value,
|
|
152
|
+
hasWarning: hasWarning.value,
|
|
153
|
+
hasSuccess: hasSuccess.value,
|
|
154
|
+
state: {
|
|
155
|
+
errors: errors.value,
|
|
156
|
+
warnings: warnings.value,
|
|
157
|
+
successes: successes.value,
|
|
158
|
+
},
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
const validateOnSubmit = async (): Promise<boolean> => {
|
|
163
|
+
return !hasError.value
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
return {
|
|
167
|
+
// États
|
|
168
|
+
errors,
|
|
169
|
+
warnings,
|
|
170
|
+
successes,
|
|
171
|
+
hasError,
|
|
172
|
+
hasWarning,
|
|
173
|
+
hasSuccess,
|
|
174
|
+
|
|
175
|
+
// Méthodes
|
|
176
|
+
validateField,
|
|
177
|
+
validateOnSubmit,
|
|
178
|
+
clearValidation,
|
|
179
|
+
}
|
|
180
|
+
}
|
|
@@ -4,6 +4,8 @@ import { cnamColorsTokens } from './tokens/cnam/cnamColors'
|
|
|
4
4
|
import { cnamLightTheme } from './tokens/cnam/cnamLightTheme'
|
|
5
5
|
import { cnamDarkTheme } from './tokens/cnam/cnamDarkTheme'
|
|
6
6
|
import { paColorsTokens } from './tokens/pa/paColors'
|
|
7
|
+
import { paSemanticTokens } from './tokens/pa/paSemantic'
|
|
8
|
+
import { paContextualTokens } from './tokens/pa/paContextual'
|
|
7
9
|
import { paLightTheme } from './tokens/pa/paLightTheme'
|
|
8
10
|
import { paDarkTheme } from './tokens/pa/paDarkTheme'
|
|
9
11
|
|
|
@@ -14,6 +16,8 @@ export {
|
|
|
14
16
|
cnamLightTheme,
|
|
15
17
|
cnamDarkTheme,
|
|
16
18
|
paColorsTokens,
|
|
19
|
+
paSemanticTokens,
|
|
20
|
+
paContextualTokens,
|
|
17
21
|
paLightTheme,
|
|
18
22
|
paDarkTheme,
|
|
19
23
|
}
|
package/src/main.ts
CHANGED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks';
|
|
2
|
+
|
|
3
|
+
<Meta title="Accessibilité/Aculturation/Audit du Design System"/>
|
|
4
|
+
|
|
5
|
+
# Audit du Design System
|
|
6
|
+
|
|
7
|
+
## Objectifs
|
|
8
|
+
|
|
9
|
+
Le Design System Synapse offre de nombreux avantages en matière d'accessibilité pour les services qui l'adoptent. En veillant à ce que les composants respectent les normes d'accessibilité, il assure une conformité optimale avec les critères du <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr> pour les produits. Cela simplifie la mise en œuvre de l'accessibilité à grande échelle sur les services numériques, réduisant ainsi les erreurs humaines et améliorant l'expérience utilisateur pour tous, et pas seulement pour les personnes en situation de handicap.
|
|
10
|
+
|
|
11
|
+
Nous réalisons actuellement un audit d'accessibilité du Design System afin d’évaluer sa conformité au <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr>. Cet audit vise à identifier les points d'amélioration pour garantir que tous les composants sont accessibles.
|
|
12
|
+
|
|
13
|
+
## Couverture des critères
|
|
14
|
+
|
|
15
|
+
Le Design System ne garantit pas à lui seul l'accessibilité des services qui l'implémente, car il ne couvre pas l'ensemble des critères du <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr>. En effet, le Design System se concentre sur l'aspect visuel et interactif des composants (comme les couleurs, la typographie, les interactions avec l'interface, etc.), tandis que le service doit respecter des critères plus larges. Par exemple, il doit veiller à la structure sémantique des contenus, aux alternatives textuelles, à la gestion des erreurs de formulaire, à l'accessibilité des contenus multimédia, etc. Le Design System facilite l'intégration des bonnes pratiques d’accessibilité, mais pour une conformité totale, des ajustements et une validation supplémentaires sont nécessaires au niveau du design, du contenu et de la mise en œuvre technique.
|
|
16
|
+
|
|
17
|
+
## Documentation et rapports
|
|
18
|
+
|
|
19
|
+
Chaque composant possède une page "Accessibilité" qui vous renseignera sur les critères du <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr> remontées par l'audit Tanaguru ainsi qu'un rapport complet d'un audit manuel. Vous pourrez ainsi suivre les correctifs réalisés et identifier la méthodologie appliquée.
|
|
20
|
+
|
|
21
|
+
<figure>
|
|
22
|
+
<img
|
|
23
|
+
src={"/capture-page-accessibilite-composant.png"}
|
|
24
|
+
aria-labelledby="capture-page-accessibilite-alt"
|
|
25
|
+
style={{ marginTop: '20px', padding: '10px', border: '1px solid rgba(0, 0, 0, 0.05)', boxShadow: 'rgba(0, 0, 0, 0.10) 0 1px 3px 0'}}
|
|
26
|
+
/>
|
|
27
|
+
<figcaption id="capture-page-accessibilite-alt" class={'text-caption text-center'}>Capture d'écran de la page Accessibilité du composant NotificationBar.<br/>Celle-ci donne des éléments sur les audits Tanaguru et manuels.</figcaption>
|
|
28
|
+
</figure>
|
|
@@ -3,7 +3,7 @@ import {Meta} from '@storybook/addon-docs/blocks';
|
|
|
3
3
|
<Meta title="Accessibilité/Aculturation/Sensibilisation à l’accessibilité numérique"/>
|
|
4
4
|
|
|
5
5
|
# 1. L’accessibilité concerne tout le monde
|
|
6
|
-
## **1.1 La CNAM doit respecter le RGAA
|
|
6
|
+
## **1.1 La CNAM doit respecter le <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr>**
|
|
7
7
|
|
|
8
8
|
En tant que personne morale de droit public, nous avons l'obligation légale de concevoir les composants de notre Design System en respectant les enjeux d’accessibilité. En conformité avec la Direction Interministérielle du Numérique (DINUM), il est demandé de respecter le Référentiel Général d'Amélioration de l'Accessibilité (RGAA) pour le desktop et Référentiel d’Accessibilité des Applications Mobiles (RAAM) pour le mobile.
|
|
9
9
|
#
|
|
@@ -45,7 +45,7 @@ Etre accessible est un travail en continu qui s’intègre à plusieurs niveaux
|
|
|
45
45
|
|
|
46
46
|
## 2.2 Vous pouvez pré-auditer un service
|
|
47
47
|
|
|
48
|
-
Un pré-audit est une évaluation préparatoire réalisée par les équipes-produits pour vérifier la conformité d'un produit aux critères du RGAA
|
|
48
|
+
Un pré-audit est une évaluation préparatoire réalisée par les équipes-produits pour vérifier la conformité d'un produit aux critères du <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr>. À l'aide d’outil et de méthodologie, ces équipes peuvent identifier la moitié des critères requis avant un audit complet. Ces équipes peuvent compter sur un accompagnement pour la prise en main de cet outil ainsi que du conseil pour la résolution des défauts constatés. L’objectif premier du pré-audit est de réduire la quantité de correctif relevée par l’audit complet en donnant un meilleur contrôle aux produits sur leur gestion de projet.
|
|
49
49
|
|
|
50
50
|
**[Guide du pré-audit](/docs/accessibilité-kit-de-pré-audit-pré-audit--docs)**
|
|
51
51
|
|
|
@@ -2,9 +2,9 @@ import {Meta} from '@storybook/addon-docs/blocks';
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Accessibilité/Audit/RGAA"/>
|
|
4
4
|
|
|
5
|
-
## Le RGAA
|
|
5
|
+
## Le <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr>, le référentiel français d’accessibilité numérique
|
|
6
6
|
|
|
7
|
-
Le RGAA est un outil méthodologique de certification permettant d'assurer par le respect de ses critères une manipulation des produits numériques dans le domaine du Web de manière égale entre chaque citoyen, qu'il soit ou non en situation de handicap (visuel, auditif, moteur, trouble dys...). Basé sur les travaux du W3C Web Accessibility Initiative (WAI) il vise à garantir quatre indices de performance : **la bonne perceptibilité de l'information**, une **manipulation efficiente dans la navigation**, une **bonne compréhension** et une **robustesse efficace** dans l'usage des produits numériques. Actuellement le RGAA (version 4) est constitué de 106 critères répartis dans 13 catégories
|
|
7
|
+
Le <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr> est un outil méthodologique de certification permettant d'assurer par le respect de ses critères une manipulation des produits numériques dans le domaine du Web de manière égale entre chaque citoyen, qu'il soit ou non en situation de handicap (visuel, auditif, moteur, trouble dys...). Basé sur les travaux du W3C Web Accessibility Initiative (WAI) il vise à garantir quatre indices de performance : **la bonne perceptibilité de l'information**, une **manipulation efficiente dans la navigation**, une **bonne compréhension** et une **robustesse efficace** dans l'usage des produits numériques. Actuellement le <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr> (version 4) est constitué de 106 critères répartis dans 13 catégories
|
|
8
8
|
|
|
9
9
|
[En savoir plus sur le RGAA](https://www.numerique.gouv.fr/publications/rgaa-accessibilite/#contenu)
|
|
10
10
|
|
|
@@ -15,11 +15,11 @@ Le RGAA est un outil méthodologique de certification permettant d'assurer par l
|
|
|
15
15
|
### Résultats
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
La conduite d'une évaluation pour attester de la conformité du produit numérique avec le RGAA peut être menée par un audit en auto-évaluation ou par un organisme tiers. Au terme de cette évaluation vous recevez un score et des informations complémentaires permettant de définir l'état de conformité de votre produit. Il existe 3 états:
|
|
18
|
+
La conduite d'une évaluation pour attester de la conformité du produit numérique avec le <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr> peut être menée par un audit en auto-évaluation ou par un organisme tiers. Au terme de cette évaluation vous recevez un score et des informations complémentaires permettant de définir l'état de conformité de votre produit. Il existe 3 états:
|
|
19
19
|
|
|
20
|
-
- **Conformité totale :** si tous les critères de contrôle du RGAA sont respectés
|
|
21
|
-
- **Conformité partielle :** si au moins 50 % des critères de contrôle du RGAA sont respectés
|
|
22
|
-
- **Non-conformité :** s'il n'existe aucun résultat d'audit en cours de validité permettant de mesurer le respect des critères ou si moins de 50 % des critères de contrôle du RGAA sont respectés
|
|
20
|
+
- **Conformité totale :** si tous les critères de contrôle du <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr> sont respectés
|
|
21
|
+
- **Conformité partielle :** si au moins 50 % des critères de contrôle du <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr> sont respectés
|
|
22
|
+
- **Non-conformité :** s'il n'existe aucun résultat d'audit en cours de validité permettant de mesurer le respect des critères ou si moins de 50 % des critères de contrôle du <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr> sont respectés
|
|
23
23
|
|
|
24
24
|
Vous garantissant d'un respect de ces critères, l'usage sans modification de notre Design System vous assure d'abord un gain de temps dans le développement mais surtout une augmentation du pourcentage de succès dans l'évaluation de votre produit.
|
|
25
25
|
|
|
@@ -21,7 +21,8 @@ Si vous avez besoin d’un accompagnement sur le sujet, merci de prendre contact
|
|
|
21
21
|
|
|
22
22
|
Vous trouverez dans ce dossier 3 principales rubriques :
|
|
23
23
|
|
|
24
|
-
- [Sensibilisation à l'accessibilité numérique](/docs/accessibilité-aculturation-sensibilisation-à-l-accessibilité-numérique--docs)
|
|
24
|
+
- [Aculturation - Sensibilisation à l'accessibilité numérique](/docs/accessibilité-aculturation-sensibilisation-à-l-accessibilité-numérique--docs)
|
|
25
25
|
- [Kit du Pré-Audit](/docs/accessibilité-kit-de-pré-audit-introduction--docs)
|
|
26
26
|
- [Audit](/docs/accessibilité-audit-rgaa--docs)
|
|
27
27
|
|
|
28
|
+
Le Design System Synapse réalise un audit de conformité au <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr> facilitant la prise en compte de l'accessibilité dans vos produits. Pour en savoir plus, vous pouvez consulter [la page dédiée à l'audit d'accessibilité du Design System](/docs/accessibilité-aculturation-audit-du-design-system--docs).
|
|
@@ -4,7 +4,7 @@ import {Meta} from '@storybook/addon-docs/blocks';
|
|
|
4
4
|
|
|
5
5
|
# Échantillonnage
|
|
6
6
|
|
|
7
|
-
Le RGAA exige que l’audit d’accessibilité soit effectué sur un ensemble représentatif de pages et des fonctionnalités de votre service. Il serait difficile et très chronophage de tester l’intégralité des contenus. La définition d’un périmètre est un compromis pertinent pour auditer efficacement un service et respecter les exigences légales.
|
|
7
|
+
Le <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr> exige que l’audit d’accessibilité soit effectué sur un ensemble représentatif de pages et des fonctionnalités de votre service. Il serait difficile et très chronophage de tester l’intégralité des contenus. La définition d’un périmètre est un compromis pertinent pour auditer efficacement un service et respecter les exigences légales.
|
|
8
8
|
|
|
9
9
|
L’objectif est donc de que vous déterminiez quels pages seront concernées par l’audit (et ce pré-audit).
|
|
10
10
|
|
|
@@ -6,7 +6,7 @@ import {Meta} from '@storybook/addon-docs/blocks';
|
|
|
6
6
|
|
|
7
7
|
## Objectif
|
|
8
8
|
|
|
9
|
-
L’objectif du pré-audit est d’obtenir un premier avis sur le taux de conformité de votre service web avant de convenir d’un réel audit RGAA
|
|
9
|
+
L’objectif du pré-audit est d’obtenir un premier avis sur le taux de conformité de votre service web avant de convenir d’un réel audit <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr>. La procédure se fait en autonomie par l’équipe de développement.
|
|
10
10
|
#
|
|
11
11
|
La restitution consiste à s’assurer que toutes les exigences du pré-audit sont remplies et que vous ayez un minimum d’erreur en lançant les tests automatisés avec Tanaguru.
|
|
12
12
|
Vous pouvez nous solliciter pour un accompagnement si vous rencontrez des difficultés techniques à résoudre les non-conformités relevées par Tanaguru.
|
|
@@ -6,19 +6,16 @@ import {Meta} from '@storybook/addon-docs/blocks';
|
|
|
6
6
|
|
|
7
7
|
Dans le cadre du pré-audit et de l’audit, il existe des outils automatisés pour vérifier certains critères de conformité en matière d'accessibilité.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
L'outil principal requis pour le pré-audit est [**Tanaguru webext RGAA (Extension Firefox)**](https://addons.mozilla.org/fr/firefox/addon/tanaguru-webext/). Il s'agit d'une extension de navigateur conçue pour faciliter l'audit d'accessibilité des sites web selon le **Référentiel Général d'Amélioration de l'Accessibilité (RGAA)**. Elle permet aux utilisateurs de vérifier, directement depuis leur navigateur, la conformité de pages web aux critères d'accessibilité du RGAA, en offrant une évaluation rapide des problèmes d'accessibilité tels que les contrastes, les alternatives textuelles manquantes, la structure des balises HTML, etc. Cette extension fonctionne comme un outil d'audit instantané pour les développeurs et les testeurs d'accessibilité, en affichant directement les erreurs et en proposant des suggestions pour améliorer l'accessibilité du site. **Attention, ce service ne permet pas d’évaluer l’ensemble des 106 critères du RGAA, uniquement ceux qui sont automatisable**. Un audit d'accessibilité ne peut pas se reposer uniquement sur des outils automatisés car ces derniers ne détectent qu'un nombre limité de problèmes techniques. De nombreux critères d'accessibilité nécessitent une évaluation manuelle, tenant compte de la perception humaine et du contexte d’utilisation. Sur les 258 tests du RGAA, Tanaguru estime qu’environ 100 tests ne sont pas automatisés. Nous avons mis en place [un guide d'utilisation de Tanaguru webext RGAA](/docs/accessibilité-kit-de-pré-audit-outils-tanaguru--docs) afin de vous aider à le prendre en main.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
Tanaguru Webext RGAA est une extension de navigateur conçue pour faciliter l'audit d'accessibilité des sites web selon le **Référentiel Général d'Amélioration de l'Accessibilité (RGAA)**. Elle permet aux utilisateurs de vérifier, directement depuis leur navigateur, la conformité de pages web aux critères d'accessibilité du RGAA, en offrant une évaluation rapide des problèmes d'accessibilité tels que les contrastes, les alternatives textuelles manquantes, la structure des balises HTML, etc. Cette extension fonctionne comme un outil d'audit instantané pour les développeurs et les testeurs d'accessibilité, en affichant directement les erreurs et en proposant des suggestions pour améliorer l'accessibilité du site. Attention, ce service ne permet pas d’évaluer l’ensemble des 106 critères du RGAA, uniquement ceux qui sont automatisable. Sur les 258 tests du RGAA, Tanaguru estime qu’environ 100 tests ne sont pas automatisés.
|
|
13
|
-
2. [**PDF Accessibility Checker (PAC)**](https://pac.pdf-accessibility.org/en) :
|
|
14
|
-
PDF Accessibility Checker (PAC) est un logiciel Windows dédié à l'audit de l'accessibilité des documents PDF. Il permet de vérifier la conformité d'un fichier PDF aux normes d'accessibilité, telles que les WCAG et les directives PDF/UA (PDF Universal Accessibility). PAC analyse la structure du document, y compris les titres, les balises, les liens, les tables et les éléments multimédia, pour s'assurer que le contenu est correctement organisé et peut être interprété par des technologies d'assistance comme les lecteurs d'écran.
|
|
15
|
-
3. [**NVDA (NonVisual Desktop Access)**](https://www.nvda.fr/c2) :
|
|
16
|
-
Lecteur d’écran bureau - NVDA est un lecteur d'écran open-source conçu pour les personnes malvoyantes ou aveugles. Il permet de rendre accessibles les interfaces graphiques des ordinateurs Windows en lisant à haute voix les éléments affichés à l'écran. NVDA prend en charge plusieurs applications et navigateurs web, et il est utilisé pour tester la compatibilité des sites web et des applications avec les technologies d'assistance. Cet outil est particulièrement apprécié pour son accessibilité gratuite et sa capacité à détecter des erreurs de conception qui peuvent nuire à l'expérience des utilisateurs ayant des déficiences visuelles.
|
|
17
|
-
4. (Si pré-audit sur mobile) [**TalkBack**](https://www.notion.so/Pr-audit-web-conformit-l-accessibilit-18c4ee4a529d80e2ab27cadba4829e37?pvs=21) :
|
|
18
|
-
Lecteur d’écran mobile - TalkBack est une fonctionnalité d'accessibilité déjà intégrée aux appareils Android qui fournit des retours vocaux sur les éléments affichés à l'écran. Ce lecteur d'écran permet à l'utilisateur d'interagir avec son appareil sans avoir besoin de visionner l'écran. En utilisant des gestes tactiles spécifiques, l'utilisateur peut naviguer à travers les applications, lire des messages, envoyer des e-mails ou encore interagir avec des contenus multimédia. TalkBack offre également des options de personnalisation pour ajuster la vitesse de la voix, le volume et d'autres paramètres en fonction des besoins de l'utilisateur. Il prend en charge une large gamme de contenus accessibles et est régulièrement mis à jour pour améliorer son efficacité et sa compatibilité avec les dernières versions d'Android. Cet outil est essentiel pour garantir que les utilisateurs en situation de handicap visuel peuvent utiliser pleinement leurs appareils Android.
|
|
19
|
-
|
|
20
|
-
En complément, voici d’autres outils optionnels qui pourraient vous être utiles :
|
|
11
|
+
Si vous souhaitez aller plus loin dans le pré-audit ou dans vos développements au quotidien, voici d'autres outils qui pourraient vous être utiles :
|
|
21
12
|
|
|
13
|
+
- [**PDF Accessibility Checker (PAC)**](https://pac.pdf-accessibility.org/en) :
|
|
14
|
+
PDF Accessibility Checker (PAC) est un logiciel Windows dédié à l'audit de l'accessibilité des documents PDF. Il permet de vérifier la conformité d'un fichier PDF aux normes d'accessibilité, telles que les WCAG et les directives PDF/UA (PDF Universal Accessibility). PAC analyse la structure du document, y compris les titres, les balises, les liens, les tables et les éléments multimédia, pour s'assurer que le contenu est correctement organisé et peut être interprété par des technologies d'assistance comme les lecteurs d'écran.
|
|
15
|
+
- [**NVDA (NonVisual Desktop Access)**](https://www.nvda.fr/c2) :
|
|
16
|
+
Lecteur d’écran bureau - NVDA est un lecteur d'écran open-source conçu pour les personnes malvoyantes ou aveugles. Il permet de rendre accessibles les interfaces graphiques des ordinateurs Windows en lisant à haute voix les éléments affichés à l'écran. NVDA prend en charge plusieurs applications et navigateurs web, et il est utilisé pour tester la compatibilité des sites web et des applications avec les technologies d'assistance. Cet outil est particulièrement apprécié pour son accessibilité gratuite et sa capacité à détecter des erreurs de conception qui peuvent nuire à l'expérience des utilisateurs ayant des déficiences visuelles. Afin d'en savoir plus, nous avons mis en place [un guide rapide de NVDA](/docs/accessibilité-kit-de-pré-audit-outils-lecteurs-d-écran--docs#nvda-windows).
|
|
17
|
+
- [**TalkBack**](https://www.notion.so/Pr-audit-web-conformit-l-accessibilit-18c4ee4a529d80e2ab27cadba4829e37?pvs=21) (Si pré-audit sur mobile) :
|
|
18
|
+
Lecteur d’écran mobile - TalkBack est un outil d'accessibilité déjà intégré aux appareils Android qui fournit des retours vocaux sur les éléments affichés à l'écran. Ce lecteur d'écran permet à l'utilisateur d'interagir avec son appareil sans avoir besoin de visionner l'écran. En utilisant des gestes tactiles spécifiques, l'utilisateur peut naviguer à travers les applications, lire des messages, envoyer des e-mails ou encore interagir avec des contenus multimédia. TalkBack offre également des options de personnalisation pour ajuster la vitesse de la voix, le volume et d'autres paramètres en fonction des besoins de l'utilisateur. Il prend en charge une large gamme de contenus accessibles et est régulièrement mis à jour pour améliorer son efficacité et sa compatibilité avec les dernières versions d'Android. Cet outil est essentiel pour garantir que les utilisateurs en situation de handicap visuel peuvent utiliser pleinement leurs appareils Android. Afin d'en savoir plus, nous avons mis en place [un guide rapide de Talkback](/docs/accessibilité-kit-de-pré-audit-outils-lecteurs-d-écran--docs#talkback-android).
|
|
22
19
|
- [**Assistant RGAA (extension Firefox)**](https://addons.mozilla.org/fr/firefox/addon/assistant-rgaa/) :
|
|
23
20
|
L'Assistant RGAA est un outil français destiné à vérifier la conformité des sites web aux critères d’accessibilité définis par le Référentiel Général d'Amélioration de l'Accessibilité (RGAA). Il permet d’effectuer des audits sur des sites en ligne pour identifier et corriger les problèmes d'accessibilité.
|
|
24
21
|
- [**WAVE (extension Firefox)**](https://addons.mozilla.org/fr/firefox/addon/wave-accessibility-tool/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search) :
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import {Meta} from '@storybook/addon-docs/blocks';
|
|
2
|
+
|
|
3
|
+
<Meta title="Accessibilité/Kit de pré-audit/Outils/Lecteurs d'écran"/>
|
|
4
|
+
|
|
5
|
+
# Guide lecteurs d'écran
|
|
6
|
+
|
|
7
|
+
Ce guide ne vise pas à vous former à l'utilisation quotidienne d'un lecteur d'écran, mais à vous fournir les informations nécessaires pour évaluer l'accessibilité des composants intégrés dans votre service.
|
|
8
|
+
|
|
9
|
+
## Qu’est-ce qu’un lecteur d’écran ?
|
|
10
|
+
|
|
11
|
+
Un lecteur d'écran est un logiciel d’assistance technique destiné aux personnes « empêchées de lire » (aveugles, malvoyantes, dyslexiques, dyspraxiques…) en transformant le contenu affiché à l'écran en synthèse vocale ou braille. Il permet de naviguer dans le système d'exploitation et les applications en restituant le contenu textuel et sa structure, à condition que cette information soit correctement fournie par le logiciel (par exemple, le navigateur web). Il ne peut pas interpréter des éléments non textuels comme des images ou des graphiques. C’est pourquoi le respect des normes d’accessibilité est important afin que la restitution puisse se faire correctement (ex : ajout d’un texte alternatif à une image).
|
|
12
|
+
|
|
13
|
+
Le lecteur d'écran bureau se pilote principalement au clavier tandis que c’est essentiellement avec des gestes pour la version mobile.
|
|
14
|
+
|
|
15
|
+
Il n'existe pas de lecteur d'écran unique et ils different en fonction du système d’exploitation. Ce guide se concentrera sur NVDA pour Windows et TalkBack pour Android.
|
|
16
|
+
|
|
17
|
+
## Utilité d’un lecteur d’écran
|
|
18
|
+
|
|
19
|
+
Un lecteur d'écran est essentiel pour un audit d'accessibilité car il permet de simuler l'expérience d'un utilisateur aveugle ou malvoyant. Il aide à :
|
|
20
|
+
|
|
21
|
+
1. **Vérifier la structure** : Tester la logique de navigation (titres, sections, éléments interactifs).
|
|
22
|
+
2. **Tester l'interactivité** : S'assurer que les éléments sont accessibles via le clavier et correctement annoncés.
|
|
23
|
+
3. **Vérifier les mises à jour dynamiques** : S'assurer que les changements de contenu sont bien signalés.
|
|
24
|
+
4. **Contrôler le balisage** : Vérifier l'utilisation correcte des balises HTML et ARIA pour une navigation fluide.
|
|
25
|
+
5. **Accessibilité multimédia** : Vérifier que les images et vidéos sont correctement décrites.
|
|
26
|
+
|
|
27
|
+
Cela garantit que l'interface est réellement accessible, permettant une navigation autonome pour les utilisateurs en situation de handicap visuel. N'oubliez pas de consulter les manuels officiels pour des informations détaillées sur l'utilisation de chaque outil.
|
|
28
|
+
|
|
29
|
+
## NVDA (Windows)
|
|
30
|
+
|
|
31
|
+
NVDA est un lecteur d'écran pour Windows, principalement utilisé pour l'audit d'accessibilité de sites web et d'applications bureautiques.
|
|
32
|
+
|
|
33
|
+
Il restitue l’information sous 2 modes : le mode navigation et le mode formulaire.
|
|
34
|
+
|
|
35
|
+
### Mode navigation
|
|
36
|
+
|
|
37
|
+
Le mode de navigation permet de se déplacer dans le contenu d'une page (titres, liens, paragraphes, etc.)
|
|
38
|
+
|
|
39
|
+
Il fournit des informations supplémentaires lors de la vocalisation. Par exemple, il annoncera "liste de x éléments" pour une liste à puces ou encore le niveau des titres, comme "titre de niveau 2", suivi de leur intitulé.
|
|
40
|
+
|
|
41
|
+
### Mode formulaire
|
|
42
|
+
|
|
43
|
+
Le mode formulaire est utilisé pour interagir avec des éléments de formulaire (champs de texte, cases à cocher, boutons, etc.) et y entrer des données. Le lecteur d’écran passe sur ce mode automatiquement lorsqu’il se trouve être sur un composant interactif. Les “raccourcis lettre” ne fonctionnent alors plus puisqu’ils servent à insérer du texte.
|
|
44
|
+
|
|
45
|
+
Principaux raccourcis :
|
|
46
|
+
|
|
47
|
+
- CTRL + ALT + n : Activer NVDA
|
|
48
|
+
- NVDA + q : Quitter NVDA
|
|
49
|
+
- CTRL : Arrêt de la parole
|
|
50
|
+
- Flèche bas : Élément suivant
|
|
51
|
+
- Flèche haut : Élément précédent
|
|
52
|
+
- Tab : Élément focusable suivant
|
|
53
|
+
- Maj + Tab : Élément focusable précédent
|
|
54
|
+
- h : Titre suivant
|
|
55
|
+
- f : Champ de formulaire suivant
|
|
56
|
+
- k : Lien suivant
|
|
57
|
+
- d : Région suivante
|
|
58
|
+
- MAJ + lettre : Revenir en arrière
|
|
59
|
+
|
|
60
|
+
Pour plus de détails, consultez [le manuel officiel NVDA](https://www.nvda.fr/doc.php) ainsi que [le guide de Tanaguru](https://www.tanaguru.com/guide-et-raccourcis-nvda-pour-les-tests-daccessibilite/).
|
|
61
|
+
|
|
62
|
+
## TalkBack (Android)
|
|
63
|
+
|
|
64
|
+
TalkBack est un lecteur d'écran pour Android, directement embarqué.
|
|
65
|
+
|
|
66
|
+
Pour l’activer ou le désactiver, il suffit de se rendre dans les paramètres de votre appareil puis dans le menu “Accessibilité”. Un tutoriel d’utilisation vous sera alors proposé au démarrage. C’est à cet endroit que vous pouvez personnaliser l’outil tel que la vitesse de la parole, la tonalité, les gestes, etc.
|
|
67
|
+
|
|
68
|
+
Ce lecteur d’écran utilise des gestes spécifiques pour naviguer dans l’interface. Voici les principaux gestes :
|
|
69
|
+
|
|
70
|
+
- **Déplacer le focus** : Faites glisser un doigt vers la gauche ou vers la droite pour déplacer le focus entre les éléments à l'écran.
|
|
71
|
+
- **Sélectionner un élément** : Touchez un élément à l'écran avec un seul doigt pour entendre sa description, puis double-tapez pour l'activer.
|
|
72
|
+
- **Faire défiler** : Balayez deux doigts vers le haut ou vers le bas pour faire défiler l'écran.
|
|
73
|
+
- **Retour** : Faites glisser trois doigts vers la gauche pour revenir en arrière.
|
|
74
|
+
- **Accéder au menu d'options** : Touchez deux fois et maintenez pour ouvrir le menu contextuel des options (comme le copier, coller, etc.).
|
|
75
|
+
- **Suspendre ou reprendre la lecture :** Appuyez avec deux doigts
|
|
76
|
+
|
|
77
|
+
Pour plus de détails, consultez [le manuel officiel TalkBack](https://support.google.com/accessibility/android/answer/6283677?hl=fr).
|
|
@@ -2,7 +2,13 @@ import {Meta} from '@storybook/addon-docs/blocks';
|
|
|
2
2
|
|
|
3
3
|
<Meta title="Accessibilité/Kit de pré-audit/Outils/Tanaguru"/>
|
|
4
4
|
|
|
5
|
-
#
|
|
5
|
+
# Tanaguru
|
|
6
|
+
|
|
7
|
+
## Qu'est-ce que Tanaguru ?
|
|
8
|
+
|
|
9
|
+
Appelée [**Tanaguru webext RGAA (Extension Firefox)**](https://addons.mozilla.org/fr/firefox/addon/tanaguru-webext/), il s'agit d'une extension de navigateur conçue pour faciliter l'audit d'accessibilité des sites web selon le **Référentiel Général d'Amélioration de l'Accessibilité (RGAA)**. Elle permet aux utilisateurs de vérifier, directement depuis leur navigateur, la conformité de pages web aux critères d'accessibilité du RGAA, en offrant une évaluation rapide des problèmes d'accessibilité tels que les contrastes, les alternatives textuelles manquantes, la structure des balises HTML, etc. Cette extension fonctionne comme un outil d'audit instantané pour les développeurs et les testeurs d'accessibilité, en affichant directement les erreurs et en proposant des suggestions pour améliorer l'accessibilité du site. **Attention, ce service ne permet pas d’évaluer l’ensemble des 106 critères du RGAA, uniquement ceux qui sont automatisable**. Un audit d'accessibilité ne peut pas se reposer uniquement sur des outils automatisés car ces derniers ne détectent qu'un nombre limité de problèmes techniques. De nombreux critères d'accessibilité nécessitent une évaluation manuelle, tenant compte de la perception humaine et du contexte d’utilisation. Sur les 258 tests du RGAA, Tanaguru estime qu’environ 100 tests ne sont pas automatisés.
|
|
10
|
+
|
|
11
|
+
## Utilisation de Tanaguru
|
|
6
12
|
|
|
7
13
|
**1. Analyse d’une page d’ameli.fr , [https://www.ameli.fr/assure/adresses-et-contacts/l-obtention-d-un-document/obtenir-une-attestation](https://www.ameli.fr/assure/adresses-et-contacts/l-obtention-d-un-document/obtenir-une-attestation)**
|
|
8
14
|
|
|
@@ -20,13 +26,13 @@ Cliquez ensuite sur **Analyser cette page**
|
|
|
20
26
|
|
|
21
27
|
<img alt="UtilisationTanaguruEtape3" src={'/tanaguruetape3.png'} style={{ padding: '10px', border: '1px solid rgba(0, 0, 0, 0.05)', boxShadow: 'rgba(0, 0, 0, 0.10) 0 1px 3px 0'}} />
|
|
22
28
|
|
|
23
|
-
**5. Les éléments sur la gauche, correspondent aux thématiques du RGAA
|
|
29
|
+
**5. Les éléments sur la gauche, correspondent aux thématiques du <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr>**
|
|
24
30
|
|
|
25
31
|
<img alt="UtilisationTanaguruEtape4" src={'/tanaguruetape4.png'} style={{ padding: '10px', border: '1px solid rgba(0, 0, 0, 0.05)', boxShadow: 'rgba(0, 0, 0, 0.10) 0 1px 3px 0'}} />
|
|
26
32
|
|
|
27
33
|
**6. Exemple: **Eléments obligatoires** 3 erreurs qui correspondent a plusieurs éléments dans notre page. Dont l’erreur est “**propriété ARIA non autorisées sur leur élément**”.**
|
|
28
34
|
|
|
29
|
-
On va chercher dans la thématique **Eléments obligatoires** du RGAA
|
|
35
|
+
On va chercher dans la thématique **Eléments obligatoires** du <abbr title="Référentiel Général d’Amélioration de l’Accessibilité">RGAA</abbr>, les critères qui pourraient correspondre à l’erreur de Tanaguru.
|
|
30
36
|
|
|
31
37
|
<img alt="UtilisationTanaguruEtape5" src={'/tanaguruetape5.png'} style={{ padding: '10px', border: '1px solid rgba(0, 0, 0, 0.05)', boxShadow: 'rgba(0, 0, 0, 0.10) 0 1px 3px 0'}} />
|
|
32
38
|
1. La loupe permet de localiser le problème dans le code ( /!\ cet élément n’est pas toujours accessible).
|