@cnamts/synapse 0.0.12-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.
Files changed (250) hide show
  1. package/dist/design-system-v3.js +4913 -4021
  2. package/dist/design-system-v3.umd.cjs +1 -1
  3. package/dist/src/components/Amelipro/types/types.d.ts +30 -57
  4. package/dist/src/components/Customs/SyTextField/SyTextField.d.ts +2 -0
  5. package/dist/src/components/DatePicker/DatePicker.d.ts +36 -44
  6. package/dist/src/components/DatePicker/DateTextInput.d.ts +33 -36
  7. package/dist/src/components/FilterInline/AccessibiliteItems.d.ts +30 -0
  8. package/dist/src/components/FilterInline/constants/ExpertiseLevelEnum.d.ts +4 -0
  9. package/dist/src/components/FilterSideBar/AccessibiliteItems.d.ts +29 -0
  10. package/dist/src/components/FilterSideBar/constants/ExpertiseLevelEnum.d.ts +4 -0
  11. package/dist/src/components/NirField/NirField.d.ts +14 -2
  12. package/dist/src/components/NotificationBar/NotificationBar.d.ts +5 -5
  13. package/dist/src/components/PasswordField/PasswordField.d.ts +2 -0
  14. package/dist/src/components/PeriodField/PeriodField.d.ts +159 -157
  15. package/dist/src/components/PhoneField/PhoneField.d.ts +22 -1
  16. package/dist/src/components/UploadWorkflow/AccessibiliteItems.d.ts +29 -0
  17. package/dist/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.d.ts +4 -0
  18. package/dist/src/components/Usages/Usages.d.ts +10 -0
  19. package/dist/src/components/index.d.ts +3 -0
  20. package/dist/src/composables/date/tests/useDatePickerAccessibility.spec.d.ts +1 -0
  21. package/dist/src/composables/date/useDateFormat.d.ts +26 -0
  22. package/dist/src/composables/date/useDateInitialization.d.ts +18 -0
  23. package/dist/src/composables/date/useDatePickerAccessibility.d.ts +8 -0
  24. package/dist/src/composables/useFilterable/useFilterable.d.ts +1 -1
  25. package/dist/src/composables/validation/useValidation.d.ts +1 -0
  26. package/dist/src/main.d.ts +1 -0
  27. package/dist/src/utils/formatDate/index.d.ts +3 -0
  28. package/dist/src/utils/formatDate/tests/formatDate.spec.d.ts +1 -0
  29. package/dist/src/utils/functions/validation/isDateAfter/index.d.ts +2 -0
  30. package/dist/src/utils/functions/validation/isDateAfter/tests/isDateAfter.spec.d.ts +1 -0
  31. package/dist/src/utils/functions/validation/isDateBefore/index.d.ts +2 -0
  32. package/dist/src/utils/functions/validation/isDateBefore/tests/isDateBefore.spec.d.ts +1 -0
  33. package/dist/src/utils/functions/validation/isDateInRange/index.d.ts +3 -0
  34. package/dist/src/utils/functions/validation/isDateInRange/tests/isDateInRange.spec.d.ts +1 -0
  35. package/dist/src/utils/functions/validation/isDateValid/index.d.ts +9 -0
  36. package/dist/src/utils/functions/validation/isDateValid/tests/isDateValid.spec.d.ts +1 -0
  37. package/dist/src/utils/functions/validation/isEmailValid/tests/isEmailValid.spec.d.ts +1 -0
  38. package/dist/src/utils/functions/validation/isWeekend/index.d.ts +3 -0
  39. package/dist/src/utils/functions/validation/isWeekend/tests/isWeekend.spec.d.ts +1 -0
  40. package/dist/src/utils/parseDate/index.d.ts +3 -0
  41. package/dist/src/utils/parseDate/tests/parseDate.spec.d.ts +1 -0
  42. package/dist/src/utils/rules/doMatchPattern/index.d.ts +3 -0
  43. package/dist/src/utils/rules/doMatchPattern/tests/matchPattern.spec.d.ts +1 -0
  44. package/dist/src/utils/rules/index.d.ts +11 -0
  45. package/dist/src/utils/rules/isDateValid/index.d.ts +4 -0
  46. package/dist/src/utils/rules/isDateValid/tests/isDateValid.spec.d.ts +1 -0
  47. package/dist/src/utils/rules/isExactLength/index.d.ts +3 -0
  48. package/dist/src/utils/rules/isExactLength/locales.d.ts +2 -0
  49. package/dist/src/utils/rules/isExactLength/tests/exactLength.spec.d.ts +1 -0
  50. package/dist/src/utils/rules/isMaxLength/index.d.ts +3 -0
  51. package/dist/src/utils/rules/isMaxLength/locales.d.ts +2 -0
  52. package/dist/src/utils/rules/isMaxLength/tests/isMaxLength.spec.d.ts +1 -0
  53. package/dist/src/utils/rules/isMinLength/index.d.ts +3 -0
  54. package/dist/src/utils/rules/isMinLength/locales.d.ts +2 -0
  55. package/dist/src/utils/rules/isMinLength/tests/isMinLength.spec.d.ts +1 -0
  56. package/dist/src/utils/rules/isNotAfterDate/index.d.ts +3 -0
  57. package/dist/src/utils/rules/isNotAfterDate/tests/isNotAfterDate.spec.d.ts +1 -0
  58. package/dist/src/utils/rules/isNotAfterToday/index.d.ts +4 -0
  59. package/dist/src/utils/rules/isNotAfterToday/locales.d.ts +2 -0
  60. package/dist/src/utils/rules/isNotAfterToday/tests/isNotAfterToday.spec.d.ts +1 -0
  61. package/dist/src/utils/rules/isNotBeforeDate/index.d.ts +3 -0
  62. package/dist/src/utils/rules/isNotBeforeDate/locales.d.ts +2 -0
  63. package/dist/src/utils/rules/isNotBeforeDate/tests/IsNotBeforeDate.spec.d.ts +1 -0
  64. package/dist/src/utils/rules/isNotBeforeToday/index.d.ts +4 -0
  65. package/dist/src/utils/rules/isNotBeforeToday/locales.d.ts +2 -0
  66. package/dist/src/utils/rules/isNotBeforeToday/tests/notBeforeToday.spec.d.ts +1 -0
  67. package/dist/src/utils/rules/isRequired/index.d.ts +4 -0
  68. package/dist/src/utils/rules/isRequired/locales.d.ts +2 -0
  69. package/dist/src/utils/rules/isRequired/tests/isRequred.spec.d.ts +1 -0
  70. package/dist/src/utils/rules/isValidEmail/index.d.ts +4 -0
  71. package/dist/src/utils/rules/isValidEmail/locales.d.ts +2 -0
  72. package/dist/src/utils/rules/isValidEmail/tests/isValidEmail.spec.d.ts +1 -0
  73. package/dist/style.css +1 -1
  74. package/package.json +3 -1
  75. package/src/assets/_radius.scss +12 -6
  76. package/src/assets/settings.scss +8 -0
  77. package/src/components/Amelipro/types/types.ts +40 -0
  78. package/src/components/ChipList/ChipList.stories.ts +26 -27
  79. package/src/components/ChipList/ChipList.vue +5 -1
  80. package/src/components/ChipList/config.ts +1 -0
  81. package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +2 -2
  82. package/src/components/Customs/SyBtnSelect/SyBtnSelect.mdx +1 -1
  83. package/src/components/Customs/SyInputSelect/SyInputSelect.mdx +1 -1
  84. package/src/components/Customs/SySelect/SySelect.mdx +1 -1
  85. package/src/components/Customs/SySelect/SySelect.vue +19 -4
  86. package/src/components/Customs/SyTextField/SyTextField.mdx +2 -2
  87. package/src/components/Customs/SyTextField/SyTextField.stories.ts +239 -0
  88. package/src/components/Customs/SyTextField/SyTextField.vue +3 -0
  89. package/src/components/DatePicker/DatePicker.stories.ts +177 -5
  90. package/src/components/DatePicker/DatePicker.vue +148 -347
  91. package/src/components/DatePicker/DateTextInput.vue +91 -251
  92. package/src/components/DatePicker/tests/DatePicker.spec.ts +118 -48
  93. package/src/components/DatePicker/tests/DateTextInput.spec.ts +202 -6
  94. package/src/components/FileList/Accessibilite.stories.ts +1 -1
  95. package/src/components/FileList/AccessibiliteItems.ts +22 -0
  96. package/src/components/FileUpload/FileUpload.stories.ts +9 -7
  97. package/src/components/FilterInline/Accessibilite.mdx +14 -0
  98. package/src/components/FilterInline/Accessibilite.stories.ts +216 -0
  99. package/src/components/FilterInline/AccessibiliteItems.ts +132 -0
  100. package/src/components/FilterInline/constants/ExpertiseLevelEnum.ts +4 -0
  101. package/src/components/FilterSideBar/Accessibilite.mdx +14 -0
  102. package/src/components/FilterSideBar/Accessibilite.stories.ts +216 -0
  103. package/src/components/FilterSideBar/AccessibiliteItems.ts +153 -0
  104. package/src/components/FilterSideBar/constants/ExpertiseLevelEnum.ts +4 -0
  105. package/src/components/NirField/NirField.stories.ts +165 -0
  106. package/src/components/NirField/NirField.vue +6 -2
  107. package/src/components/NirField/tests/config.spec.ts +65 -0
  108. package/src/components/NotificationBar/NotificationBar.mdx +2 -2
  109. package/src/components/NotificationBar/NotificationBar.stories.ts +59 -11
  110. package/src/components/NotificationBar/NotificationBar.vue +42 -114
  111. package/src/components/NotificationBar/tests/NotificationBar.spec.ts +28 -33
  112. package/src/components/NotificationBar/tests/__snapshots__/NotificationBar.spec.ts.snap +1 -1
  113. package/src/components/PaginatedTable/PaginatedTable.vue +6 -10
  114. package/src/components/PaginatedTable/tests/__snapshots__/PaginatedTable.spec.ts.snap +4 -4
  115. package/src/components/PasswordField/PasswordField.stories.ts +191 -4
  116. package/src/components/PasswordField/PasswordField.vue +3 -0
  117. package/src/components/PeriodField/PeriodField.stories.ts +214 -118
  118. package/src/components/PeriodField/PeriodField.vue +195 -148
  119. package/src/components/PeriodField/tests/PeriodField.spec.ts +146 -0
  120. package/src/components/PhoneField/PhoneField.stories.ts +101 -0
  121. package/src/components/PhoneField/PhoneField.vue +73 -17
  122. package/src/components/PhoneField/tests/PhoneField.spec.ts +40 -0
  123. package/src/components/RatingPicker/RatingPicker.stories.ts +7 -7
  124. package/src/components/SearchListField/SearchListField.stories.ts +1 -1
  125. package/src/components/UploadWorkflow/Accessibilite.mdx +14 -0
  126. package/src/components/UploadWorkflow/Accessibilite.stories.ts +216 -0
  127. package/src/components/UploadWorkflow/AccessibiliteItems.ts +192 -0
  128. package/src/components/UploadWorkflow/UploadWorkflow.vue +2 -2
  129. package/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.ts +4 -0
  130. package/src/components/Usages/tests/Usages.spec.ts +183 -0
  131. package/src/components/index.ts +3 -0
  132. package/src/composables/date/tests/useDateFormat.spec.ts +67 -0
  133. package/src/composables/date/tests/useDateInitialization.spec.ts +89 -0
  134. package/src/composables/date/tests/useDatePickerAccessibility.spec.ts +102 -0
  135. package/src/composables/date/useDateFormat.ts +94 -0
  136. package/src/composables/date/useDateInitialization.ts +92 -0
  137. package/src/composables/date/useDatePickerAccessibility.ts +78 -0
  138. package/src/composables/rules/tests/useFieldValidation.spec.ts +385 -4
  139. package/src/composables/useFilterable/useFilterable.ts +5 -4
  140. package/src/composables/validation/useValidation.ts +15 -0
  141. package/src/main.ts +1 -0
  142. package/src/stories/Accessibilite/Aculturation/AuditDesignSystem.mdx +28 -0
  143. package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +2 -2
  144. package/src/stories/Accessibilite/Audit/RGAA.mdx +6 -6
  145. package/src/stories/Accessibilite/Introduction.mdx +2 -1
  146. package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +1 -1
  147. package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +1 -1
  148. package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +8 -11
  149. package/src/stories/Accessibilite/KitDePreAudit/Outils/LecteursDEcran.mdx +77 -0
  150. package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru.mdx +9 -3
  151. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +2 -2
  152. package/src/stories/Demarrer/Introduction.stories.ts +3 -3
  153. package/src/stories/Demarrer/Releases.mdx +8 -0
  154. package/src/stories/Demarrer/Releases.stories.ts +66 -0
  155. package/src/stories/DesignTokens/Conteneurs.stories.ts +3 -3
  156. package/src/stories/GuideDuDev/LesBreackingChanges.mdx +36 -0
  157. package/src/stories/GuideDuDev/UtiliserLesRules.mdx +2 -2
  158. package/src/utils/formatDate/index.ts +6 -0
  159. package/src/utils/formatDate/tests/formatDate.spec.ts +18 -0
  160. package/src/utils/functions/validation/isDateAfter/index.ts +9 -0
  161. package/src/utils/functions/validation/isDateAfter/tests/isDateAfter.spec.ts +18 -0
  162. package/src/utils/functions/validation/isDateBefore/index.ts +9 -0
  163. package/src/utils/functions/validation/isDateBefore/tests/isDateBefore.spec.ts +23 -0
  164. package/src/utils/functions/validation/isDateInRange/index.ts +22 -0
  165. package/src/utils/functions/validation/isDateInRange/tests/isDateInRange.spec.ts +28 -0
  166. package/src/utils/functions/validation/isDateValid/index.ts +67 -0
  167. package/src/utils/functions/validation/isDateValid/tests/isDateValid.spec.ts +46 -0
  168. package/src/utils/functions/validation/isEmailValid/index.ts +9 -0
  169. package/src/utils/functions/validation/isWeekend/index.ts +10 -0
  170. package/src/utils/functions/validation/isWeekend/tests/isWeekend.spec.ts +16 -0
  171. package/src/utils/parseDate/index.ts +29 -0
  172. package/src/utils/parseDate/tests/parseDate.spec.ts +52 -0
  173. package/src/utils/rules/Rules.mdx +16 -0
  174. package/src/utils/rules/doMatchPattern/DoMachPattern.mdx +66 -0
  175. package/src/utils/rules/doMatchPattern/DoMatchPattern.stories.ts +106 -0
  176. package/src/utils/rules/doMatchPattern/index.ts +28 -0
  177. package/src/utils/rules/doMatchPattern/locales.ts +5 -0
  178. package/src/utils/rules/doMatchPattern/tests/matchPattern.spec.ts +38 -0
  179. package/src/utils/rules/index.ts +11 -0
  180. package/src/utils/rules/isDateValid/IsDateValid.mdx +87 -0
  181. package/src/utils/rules/isDateValid/IsDateValid.stories.ts +113 -0
  182. package/src/utils/rules/isDateValid/index.ts +32 -0
  183. package/src/utils/rules/isDateValid/locales.ts +10 -0
  184. package/src/utils/rules/isDateValid/tests/isDateValid.spec.ts +27 -0
  185. package/src/utils/rules/isExactLength/IsExactLenght.mdx +68 -0
  186. package/src/utils/rules/isExactLength/IsExactLength.stories.ts +151 -0
  187. package/src/utils/rules/{exactLength → isExactLength}/index.ts +2 -4
  188. package/src/utils/rules/isExactLength/tests/exactLength.spec.ts +48 -0
  189. package/src/utils/rules/isMaxLength/IsMaxLength.mdx +68 -0
  190. package/src/utils/rules/isMaxLength/IsMaxLength.stories.ts +152 -0
  191. package/src/utils/rules/isMaxLength/index.ts +30 -0
  192. package/src/utils/rules/isMaxLength/locales.ts +6 -0
  193. package/src/utils/rules/isMaxLength/tests/isMaxLength.spec.ts +42 -0
  194. package/src/utils/rules/isMinLength/IsMinLength.mdx +68 -0
  195. package/src/utils/rules/isMinLength/IsMinLength.stories.ts +152 -0
  196. package/src/utils/rules/isMinLength/index.ts +30 -0
  197. package/src/utils/rules/isMinLength/locales.ts +6 -0
  198. package/src/utils/rules/isMinLength/tests/isMinLength.spec.ts +42 -0
  199. package/src/utils/rules/isNotAfterDate/IsNotAfterDate.mdx +68 -0
  200. package/src/utils/rules/isNotAfterDate/IsNotAfterDate.stories.ts +109 -0
  201. package/src/utils/rules/isNotAfterDate/index.ts +25 -0
  202. package/src/utils/rules/isNotAfterDate/locales.ts +6 -0
  203. package/src/utils/rules/isNotAfterDate/tests/isNotAfterDate.spec.ts +25 -0
  204. package/src/utils/rules/isNotAfterToday/IsNotAfterToday.mdx +83 -0
  205. package/src/utils/rules/isNotAfterToday/IsNotAfterToday.stories.ts +110 -0
  206. package/src/utils/rules/isNotAfterToday/index.ts +28 -0
  207. package/src/utils/rules/isNotAfterToday/locales.ts +5 -0
  208. package/src/utils/rules/isNotAfterToday/tests/isNotAfterToday.spec.ts +30 -0
  209. package/src/utils/rules/isNotBeforeDate/IsNotBeforeDate.mdx +68 -0
  210. package/src/utils/rules/isNotBeforeDate/IsNotBeforeDate.stories.ts +114 -0
  211. package/src/utils/rules/isNotBeforeDate/index.ts +25 -0
  212. package/src/utils/rules/isNotBeforeDate/locales.ts +6 -0
  213. package/src/utils/rules/isNotBeforeDate/tests/IsNotBeforeDate.spec.ts +25 -0
  214. package/src/utils/rules/isNotBeforeToday/IsNotBeforeToday.mdx +83 -0
  215. package/src/utils/rules/isNotBeforeToday/IsNotBeforeToday.stories.ts +110 -0
  216. package/src/utils/rules/isNotBeforeToday/index.ts +28 -0
  217. package/src/utils/rules/isNotBeforeToday/locales.ts +5 -0
  218. package/src/utils/rules/isNotBeforeToday/tests/notBeforeToday.spec.ts +36 -0
  219. package/src/utils/rules/isRequired/IsRequired.mdx +81 -0
  220. package/src/utils/rules/isRequired/IsRequired.stories.ts +101 -0
  221. package/src/utils/rules/{required → isRequired}/index.ts +3 -3
  222. package/src/utils/rules/{required/tests/index.spec.ts → isRequired/tests/isRequred.spec.ts} +9 -9
  223. package/src/utils/rules/isValidEmail/IsValidEmail.mdx +81 -0
  224. package/src/utils/rules/isValidEmail/IsValidEmail.stories.ts +101 -0
  225. package/src/utils/rules/{email → isValidEmail}/index.ts +3 -5
  226. package/src/utils/rules/{email/tests/email.spec.ts → isValidEmail/tests/isValidEmail.spec.ts} +5 -5
  227. package/dist/src/components/Amelipro/types/languages.d.ts +0 -6
  228. package/dist/src/utils/rules/email/index.d.ts +0 -4
  229. package/dist/src/utils/rules/exactLength/index.d.ts +0 -4
  230. package/dist/src/utils/rules/required/index.d.ts +0 -4
  231. package/dist/src/utils/rules/required/ruleMessageHelper.d.ts +0 -3
  232. package/src/components/Amelipro/types/languages.d.ts +0 -6
  233. package/src/components/Amelipro/types/types.d.ts +0 -65
  234. package/src/components/Customs/SyTextField/tests/__snapshots__/SyTextField.spec.ts.snap +0 -58
  235. package/src/utils/functions/isEmailValid/index.ts +0 -8
  236. package/src/utils/rules/required/ruleMessageHelper.ts +0 -14
  237. package/src/utils/rules/required/tests/rulesMessageHelper.spec.ts +0 -22
  238. /package/dist/src/{utils/functions/isEmailValid/tests/isEmailValid.spec.d.ts → components/NirField/tests/config.spec.d.ts} +0 -0
  239. /package/dist/src/{utils/rules/email/tests/email.spec.d.ts → components/Usages/tests/Usages.spec.d.ts} +0 -0
  240. /package/dist/src/{utils/rules/required/tests/index.spec.d.ts → composables/date/tests/useDateFormat.spec.d.ts} +0 -0
  241. /package/dist/src/{utils/rules/required/tests/rulesMessageHelper.spec.d.ts → composables/date/tests/useDateInitialization.spec.d.ts} +0 -0
  242. /package/dist/src/utils/functions/{isEmailValid → validation/isEmailValid}/index.d.ts +0 -0
  243. /package/dist/src/utils/rules/{exactLength → doMatchPattern}/locales.d.ts +0 -0
  244. /package/dist/src/utils/rules/{email → isDateValid}/locales.d.ts +0 -0
  245. /package/dist/src/utils/rules/{required → isNotAfterDate}/locales.d.ts +0 -0
  246. /package/src/components/NirField/{tests → examples}//342/200/257dataset/342/200/257.md" +0 -0
  247. /package/src/utils/functions/{isEmailValid → validation/isEmailValid}/tests/isEmailValid.spec.ts +0 -0
  248. /package/src/utils/rules/{exactLength → isExactLength}/locales.ts +0 -0
  249. /package/src/utils/rules/{required → isRequired}/locales.ts +0 -0
  250. /package/src/utils/rules/{email → isValidEmail}/locales.ts +0 -0
@@ -1,8 +1,37 @@
1
- import { describe, it, expect } from 'vitest'
2
- import { useFieldValidation } from '../useFieldValidation'
1
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest'
2
+ import { useFieldValidation, EMAIL_REGEXP } from '../useFieldValidation'
3
3
 
4
4
  describe('useFieldValidation', () => {
5
- const { generateRules } = useFieldValidation()
5
+ const { generateRules, parseDate } = useFieldValidation()
6
+
7
+ // Mock Date pour les tests liés à la date
8
+ let originalDate: typeof Date
9
+
10
+ beforeEach(() => {
11
+ // Sauvegarder la Date originale
12
+ originalDate = global.Date
13
+ // Mock de la date actuelle à 2023-01-15
14
+ // Pas besoin de stocker mockDate car nous utilisons directement la classe
15
+ global.Date = class extends Date {
16
+ constructor(...args: unknown[]) {
17
+ if (args.length === 0) {
18
+ super(2023, 0, 15)
19
+ }
20
+ else {
21
+ super(...args as [number, number, number])
22
+ }
23
+ }
24
+
25
+ static now() {
26
+ return new Date(2023, 0, 15).getTime()
27
+ }
28
+ } as typeof Date
29
+ })
30
+
31
+ afterEach(() => {
32
+ // Restaurer la Date originale
33
+ global.Date = originalDate
34
+ })
6
35
 
7
36
  it('should validate required rule', () => {
8
37
  const rules = generateRules([{ type: 'required', options: { message: 'This field is required.' } }])
@@ -10,6 +39,9 @@ describe('useFieldValidation', () => {
10
39
 
11
40
  expect(rule('')).toEqual({ error: 'This field is required.' })
12
41
  expect(rule('value')).toEqual({ success: 'Le champ est valide.' })
42
+ expect(rule(new Date())).toEqual({ success: 'Le champ est valide.' })
43
+ expect(rule({ key: 'value' })).toEqual({ success: 'Le champ est valide.' })
44
+ expect(rule(null)).toEqual({ error: 'This field is required.' })
13
45
  })
14
46
 
15
47
  it('should validate min rule', () => {
@@ -18,6 +50,8 @@ describe('useFieldValidation', () => {
18
50
 
19
51
  expect(rule(3)).toEqual({ error: 'Value must be at least 5.' })
20
52
  expect(rule(5)).toEqual({ success: 'Le champ est valide.' })
53
+ expect(rule(10)).toEqual({ success: 'Le champ est valide.' })
54
+ expect(rule('')).toEqual({}) // Empty string should be ignored
21
55
  })
22
56
 
23
57
  it('should validate max rule', () => {
@@ -26,6 +60,8 @@ describe('useFieldValidation', () => {
26
60
 
27
61
  expect(rule(15)).toEqual({ error: 'Value must be at most 10.' })
28
62
  expect(rule(10)).toEqual({ success: 'Le champ est valide.' })
63
+ expect(rule(5)).toEqual({ success: 'Le champ est valide.' })
64
+ expect(rule('')).toEqual({}) // Empty string should be ignored
29
65
  })
30
66
 
31
67
  it('should validate minLength rule', () => {
@@ -34,6 +70,23 @@ describe('useFieldValidation', () => {
34
70
 
35
71
  expect(rule('1234')).toEqual({ error: 'Minimum length is 5.' })
36
72
  expect(rule('12345')).toEqual({ success: 'Le champ est valide.' })
73
+ expect(rule('123456')).toEqual({ success: 'Le champ est valide.' })
74
+ expect(rule('')).toEqual({}) // Empty string should be ignored
75
+ })
76
+
77
+ it('should validate minLength rule with ignoreSpace option', () => {
78
+ const rules = generateRules([{
79
+ type: 'minLength',
80
+ options: {
81
+ length: 5,
82
+ message: 'Minimum length is 5.',
83
+ ignoreSpace: true,
84
+ },
85
+ }])
86
+ const rule = rules[0]
87
+
88
+ expect(rule('1 2 3 4')).toEqual({ error: 'Minimum length is 5.' }) // Length without spaces is 4
89
+ expect(rule('1 2 3 4 5')).toEqual({ success: 'Le champ est valide.' }) // Length without spaces is 5
37
90
  })
38
91
 
39
92
  it('should validate maxLength rule', () => {
@@ -42,6 +95,23 @@ describe('useFieldValidation', () => {
42
95
 
43
96
  expect(rule('123456')).toEqual({ error: 'Maximum length is 5.' })
44
97
  expect(rule('12345')).toEqual({ success: 'Le champ est valide.' })
98
+ expect(rule('1234')).toEqual({ success: 'Le champ est valide.' })
99
+ expect(rule('')).toEqual({}) // Empty string should be ignored
100
+ })
101
+
102
+ it('should validate maxLength rule with ignoreSpace option', () => {
103
+ const rules = generateRules([{
104
+ type: 'maxLength',
105
+ options: {
106
+ length: 5,
107
+ message: 'Maximum length is 5.',
108
+ ignoreSpace: true,
109
+ },
110
+ }])
111
+ const rule = rules[0]
112
+
113
+ expect(rule('1 2 3 4 5 6')).toEqual({ error: 'Maximum length is 5.' }) // Length without spaces is 6
114
+ expect(rule('1 2 3 4 5')).toEqual({ success: 'Le champ est valide.' }) // Length without spaces is 5
45
115
  })
46
116
 
47
117
  it('should validate exactLength rule', () => {
@@ -49,15 +119,41 @@ describe('useFieldValidation', () => {
49
119
  const rule = rules[0]
50
120
 
51
121
  expect(rule('1234')).toEqual({ error: 'Length must be exactly 5.' })
122
+ expect(rule('123456')).toEqual({ error: 'Length must be exactly 5.' })
52
123
  expect(rule('12345')).toEqual({ success: 'Le champ est valide.' })
124
+ expect(rule('')).toEqual({}) // Empty string should be ignored
125
+ })
126
+
127
+ it('should validate exactLength rule with ignoreSpace option', () => {
128
+ const rules = generateRules([{
129
+ type: 'exactLength',
130
+ options: {
131
+ length: 5,
132
+ message: 'Length must be exactly 5.',
133
+ ignoreSpace: true,
134
+ },
135
+ }])
136
+ const rule = rules[0]
137
+
138
+ expect(rule('1 2 3 4')).toEqual({ error: 'Length must be exactly 5.' }) // Length without spaces is 4
139
+ expect(rule('1 2 3 4 5 6')).toEqual({ error: 'Length must be exactly 5.' }) // Length without spaces is 6
140
+ expect(rule('1 2 3 4 5')).toEqual({ success: 'Le champ est valide.' }) // Length without spaces is 5
53
141
  })
54
142
 
55
143
  it('should validate email rule', () => {
144
+ // Vérifions d'abord que la regex EMAIL_REGEXP fonctionne comme prévu
145
+ expect(EMAIL_REGEXP.test('invalid-email')).toBe(false)
146
+ // Note: La regex actuelle considère test@example comme valide
147
+ expect(EMAIL_REGEXP.test('test@example')).toBe(true)
148
+ expect(EMAIL_REGEXP.test('test@example.com')).toBe(true)
149
+
56
150
  const rules = generateRules([{ type: 'email', options: { message: 'Invalid email address.' } }])
57
151
  const rule = rules[0]
58
152
 
59
153
  expect(rule('invalid-email')).toEqual({ error: 'Invalid email address.' })
60
154
  expect(rule('test@example.com')).toEqual({ success: 'Le champ est valide.' })
155
+ expect(rule('test.name@example.co.uk')).toEqual({ success: 'Le champ est valide.' })
156
+ expect(rule('')).toEqual({}) // Empty string should be ignored
61
157
  })
62
158
 
63
159
  it('should validate matchPattern rule', () => {
@@ -68,17 +164,302 @@ describe('useFieldValidation', () => {
68
164
  const rule = rules[0]
69
165
 
70
166
  expect(rule('123')).toEqual({ error: 'Invalid format.' })
167
+ expect(rule('aBc')).toEqual({ error: 'Invalid format.' })
71
168
  expect(rule('abc')).toEqual({ success: 'Le champ est valide.' })
169
+ expect(rule('')).toEqual({}) // Empty string should be ignored
170
+ })
171
+
172
+ it('should validate notWeekend rule', () => {
173
+ const rules = generateRules([{
174
+ type: 'notWeekend',
175
+ options: { message: 'Date cannot be on a weekend.' },
176
+ }])
177
+ const rule = rules[0]
178
+
179
+ // 15 janvier 2023 est un dimanche (jour 0)
180
+ expect(rule(new Date(2023, 0, 15))).toEqual({ error: 'Date cannot be on a weekend.' })
181
+ // 14 janvier 2023 est un samedi (jour 6)
182
+ expect(rule(new Date(2023, 0, 14))).toEqual({ error: 'Date cannot be on a weekend.' })
183
+ // 13 janvier 2023 est un vendredi (jour 5)
184
+ expect(rule(new Date(2023, 0, 13))).toEqual({ success: 'Le champ est valide.' })
185
+ expect(rule('')).toEqual({}) // Empty string should be ignored
186
+ })
187
+
188
+ it('should validate notBeforeToday rule', () => {
189
+ const rules = generateRules([{
190
+ type: 'notBeforeToday',
191
+ options: { message: 'Date cannot be before today.' },
192
+ }])
193
+ const rule = rules[0]
194
+
195
+ // 14 janvier 2023 est avant aujourd'hui (15 janvier 2023)
196
+ expect(rule(new Date(2023, 0, 14))).toEqual({ error: 'Date cannot be before today.' })
197
+ // 15 janvier 2023 est aujourd'hui
198
+ expect(rule(new Date(2023, 0, 15))).toEqual({ success: 'Le champ est valide.' })
199
+ // 16 janvier 2023 est après aujourd'hui
200
+ expect(rule(new Date(2023, 0, 16))).toEqual({ success: 'Le champ est valide.' })
201
+ expect(rule('')).toEqual({}) // Empty string should be ignored
202
+ })
203
+
204
+ it('should validate notAfterToday rule', () => {
205
+ const rules = generateRules([{
206
+ type: 'notAfterToday',
207
+ options: { message: 'Date cannot be after today.' },
208
+ }])
209
+ const rule = rules[0]
210
+
211
+ // 16 janvier 2023 est après aujourd'hui (15 janvier 2023)
212
+ expect(rule(new Date(2023, 0, 16))).toEqual({ error: 'Date cannot be after today.' })
213
+ // 15 janvier 2023 est aujourd'hui
214
+ expect(rule(new Date(2023, 0, 15))).toEqual({ success: 'Le champ est valide.' })
215
+ // 14 janvier 2023 est avant aujourd'hui
216
+ expect(rule(new Date(2023, 0, 14))).toEqual({ success: 'Le champ est valide.' })
217
+ expect(rule('')).toEqual({}) // Empty string should be ignored
218
+ })
219
+
220
+ it('should test parseDate function directly', () => {
221
+ // Test with valid date string
222
+ expect(parseDate('15/01/2023')).toEqual(new Date(2023, 0, 15))
223
+
224
+ // Test with Date object
225
+ const dateObj = new Date(2023, 0, 15)
226
+ expect(parseDate(dateObj)).toEqual(dateObj)
227
+
228
+ // Test with different format
229
+ expect(parseDate('2023-01-15', 'YYYY-MM-DD')).toEqual(new Date(2023, 0, 15))
230
+
231
+ // Test with YY format
232
+ expect(parseDate('15/01/23', 'DD/MM/YY')).toEqual(new Date(2023, 0, 15))
233
+
234
+ // Test with invalid date
235
+ expect(parseDate('invalid-date')).toBeNull()
236
+
237
+ // Test with empty string
238
+ expect(parseDate('')).toBeNull()
239
+
240
+ // Test with null
241
+ expect(parseDate(null as unknown as string | Date)).toBeNull()
242
+
243
+ // Test with mismatched format parts
244
+ expect(parseDate('15/01', 'DD/MM/YYYY')).toBeNull()
245
+
246
+ // Test with invalid parts
247
+ expect(parseDate('aa/bb/cccc', 'DD/MM/YYYY')).toBeNull()
248
+
249
+ // Test with invalid month (out of range)
250
+ expect(parseDate('15/13/2023', 'DD/MM/YYYY')).toBeNull()
251
+
252
+ // Test with invalid day (out of range)
253
+ expect(parseDate('32/01/2023', 'DD/MM/YYYY')).toBeNull()
254
+
255
+ // Test with invalid year (out of range)
256
+ expect(parseDate('15/01/1800', 'DD/MM/YYYY')).toBeNull()
257
+
258
+ // Test with invalid date (e.g., 31 February)
259
+ expect(parseDate('31/02/2023', 'DD/MM/YYYY')).toBeNull()
260
+ })
261
+
262
+ it('should validate notBeforeDate rule', () => {
263
+ const rules = generateRules([{
264
+ type: 'notBeforeDate',
265
+ options: {
266
+ date: '10/01/2023', // 10 janvier 2023
267
+ message: 'Date cannot be before reference date.',
268
+ },
269
+ }])
270
+ const rule = rules[0]
271
+
272
+ // 9 janvier 2023 est avant la date de référence
273
+ expect(rule(new Date(2023, 0, 9))).toEqual({ error: 'Date cannot be before reference date.' })
274
+ // 10 janvier 2023 est la date de référence
275
+ expect(rule(new Date(2023, 0, 10))).toEqual({ success: 'Le champ est valide.' })
276
+ // 11 janvier 2023 est après la date de référence
277
+ expect(rule(new Date(2023, 0, 11))).toEqual({ success: 'Le champ est valide.' })
278
+ // Test avec une date invalide
279
+ expect(rule('invalid-date')).toEqual({ error: 'Date invalide' })
280
+ // Test sans option date
281
+ const ruleWithoutDate = generateRules([{
282
+ type: 'notBeforeDate',
283
+ options: { message: 'Date cannot be before reference date.' },
284
+ }])[0]
285
+ expect(ruleWithoutDate(new Date())).toEqual({ error: 'Configuration de la règle invalide' })
286
+ expect(rule('')).toEqual({}) // Empty string should be ignored
287
+ })
288
+
289
+ it('should throw when date reference is not a string in notBeforeDate rule', () => {
290
+ expect(() => {
291
+ const invalidRule = generateRules([{
292
+ type: 'notBeforeDate',
293
+ options: {
294
+ date: new Date() as unknown as string, // Date object instead of string
295
+ message: 'Date cannot be before reference date.',
296
+ },
297
+ }])[0]
298
+ invalidRule(new Date())
299
+ }).toThrow('Date reference must be a string in DD/MM/YYYY format')
300
+ })
301
+
302
+ it('should validate notAfterDate rule', () => {
303
+ const rules = generateRules([{
304
+ type: 'notAfterDate',
305
+ options: {
306
+ date: '20/01/2023', // 20 janvier 2023
307
+ message: 'Date cannot be after reference date.',
308
+ },
309
+ }])
310
+ const rule = rules[0]
311
+
312
+ // 21 janvier 2023 est après la date de référence
313
+ expect(rule(new Date(2023, 0, 21))).toEqual({ error: 'Date cannot be after reference date.' })
314
+ // 20 janvier 2023 est la date de référence
315
+ expect(rule(new Date(2023, 0, 20))).toEqual({ success: 'Le champ est valide.' })
316
+ // 19 janvier 2023 est avant la date de référence
317
+ expect(rule(new Date(2023, 0, 19))).toEqual({ success: 'Le champ est valide.' })
318
+ // Test avec une date invalide
319
+ expect(rule('invalid-date')).toEqual({ error: 'Date invalide' })
320
+ // Test sans option date
321
+ const ruleWithoutDate = generateRules([{
322
+ type: 'notAfterDate',
323
+ options: { message: 'Date cannot be after reference date.' },
324
+ }])[0]
325
+ expect(ruleWithoutDate(new Date())).toEqual({ error: 'Configuration de la règle invalide' })
326
+ expect(rule('')).toEqual({}) // Empty string should be ignored
327
+ })
328
+
329
+ it('should throw when date reference is not a string in notAfterDate rule', () => {
330
+ expect(() => {
331
+ const invalidRule = generateRules([{
332
+ type: 'notAfterDate',
333
+ options: {
334
+ date: new Date() as unknown as string, // Date object instead of string
335
+ message: 'Date cannot be after reference date.',
336
+ },
337
+ }])[0]
338
+ invalidRule(new Date())
339
+ }).toThrow('Date reference must be a string in DD/MM/YYYY format')
340
+ })
341
+
342
+ it('should validate dateExact rule', () => {
343
+ const rules = generateRules([{
344
+ type: 'dateExact',
345
+ options: {
346
+ date: '15/01/2023', // 15 janvier 2023
347
+ message: 'Date must be exactly the reference date.',
348
+ },
349
+ }])
350
+ const rule = rules[0]
351
+
352
+ // 14 janvier 2023 n'est pas la date exacte
353
+ expect(rule(new Date(2023, 0, 14))).toEqual({ error: 'Date must be exactly the reference date.' })
354
+ // 15 janvier 2023 est la date exacte
355
+ expect(rule(new Date(2023, 0, 15))).toEqual({ success: 'Le champ est valide.' })
356
+ // 16 janvier 2023 n'est pas la date exacte
357
+ expect(rule(new Date(2023, 0, 16))).toEqual({ error: 'Date must be exactly the reference date.' })
358
+ // Test avec une date invalide
359
+ expect(rule('invalid-date')).toEqual({ error: 'Date invalide' })
360
+ // Test sans option date
361
+ const ruleWithoutDate = generateRules([{
362
+ type: 'dateExact',
363
+ options: { message: 'Date must be exactly the reference date.' },
364
+ }])[0]
365
+ expect(ruleWithoutDate(new Date())).toEqual({ error: 'Configuration de la règle invalide' })
366
+ expect(rule('')).toEqual({}) // Empty string should be ignored
367
+ })
368
+
369
+ it('should throw when date reference is not a string in dateExact rule', () => {
370
+ expect(() => {
371
+ const invalidRule = generateRules([{
372
+ type: 'dateExact',
373
+ options: {
374
+ date: new Date() as unknown as string, // Date object instead of string
375
+ message: 'Date must be exactly the reference date.',
376
+ },
377
+ }])[0]
378
+ invalidRule(new Date())
379
+ }).toThrow('Date reference must be a string in DD/MM/YYYY format')
72
380
  })
73
381
 
74
382
  it('should validate custom rule', () => {
75
383
  const rules = generateRules([{
76
384
  type: 'custom',
77
- options: { validate: value => value === 'valid', message: 'Custom validation failed.' },
385
+ options: { validate: (value: unknown) => value === 'valid', message: 'Custom validation failed.' },
78
386
  }])
79
387
  const rule = rules[0]
80
388
 
81
389
  expect(rule('invalid')).toEqual({ error: 'Custom validation failed.' })
82
390
  expect(rule('valid')).toEqual({ success: 'Le champ est valide.' })
391
+ expect(rule('')).toEqual({}) // Empty string should be ignored
392
+
393
+ // Test avec un message personnalisé
394
+ const customMessageRule = generateRules([{
395
+ type: 'custom',
396
+ options: { validate: (value: unknown) => value === 'valid' ? true : 'Custom error message' },
397
+ }])[0]
398
+ expect(customMessageRule('invalid')).toEqual({ error: 'Custom error message' })
399
+ })
400
+
401
+ it('should handle warning mode instead of error', () => {
402
+ const rules = generateRules([{
403
+ type: 'required',
404
+ options: {
405
+ message: 'This field is required.',
406
+ isWarning: true,
407
+ },
408
+ }])
409
+ const rule = rules[0]
410
+
411
+ expect(rule('')).toEqual({ warning: 'This field is required.' })
412
+
413
+ // Test avec un message d'avertissement personnalisé
414
+ const warningMessageRule = generateRules([{
415
+ type: 'required',
416
+ options: {
417
+ warningMessage: 'Warning: this field should be filled.',
418
+ isWarning: true,
419
+ },
420
+ }])[0]
421
+ expect(warningMessageRule('')).toEqual({ warning: 'Warning: this field should be filled.' })
422
+ })
423
+
424
+ it('should handle custom field identifiers', () => {
425
+ const rules = generateRules([{
426
+ type: 'required',
427
+ options: {
428
+ fieldName: 'Email',
429
+ },
430
+ }])
431
+ const rule = rules[0]
432
+
433
+ expect(rule('')).toEqual({ error: 'Vous devez renseigner Email.' })
434
+
435
+ const fieldIdentifierRule = generateRules([{
436
+ type: 'required',
437
+ options: {
438
+ fieldIdentifier: 'l\'adresse email',
439
+ },
440
+ }])[0]
441
+ expect(fieldIdentifierRule('')).toEqual({ error: 'Vous devez renseigner l\'adresse email.' })
442
+ })
443
+
444
+ it('should handle success messages', () => {
445
+ const rules = generateRules([{
446
+ type: 'required',
447
+ options: {
448
+ successMessage: 'Field is valid!',
449
+ },
450
+ }])
451
+ const rule = rules[0]
452
+
453
+ expect(rule('value')).toEqual({ success: 'Field is valid!' })
454
+ })
455
+
456
+ it('should handle invalid rule types', () => {
457
+ const rules = generateRules([{
458
+ type: 'invalidRuleType',
459
+ options: { message: 'This should show an error.' },
460
+ }])
461
+ const rule = rules[0]
462
+
463
+ expect(rule('any value')).toEqual({ error: 'La règle spécifiée pour ce champ n\'existe pas.' })
83
464
  })
84
465
  })
@@ -28,8 +28,8 @@ export default function useFilterable(model: Ref<FilterProp>, emits) {
28
28
  return slugify(name, { lower: true })
29
29
  }
30
30
 
31
- function getChips(toto: FilterItem): ChipItem[] {
32
- const { value, formatChip } = toto
31
+ function getChips(filter: FilterItem): ChipItem[] {
32
+ const { value, formatChip } = filter
33
33
 
34
34
  if (value !== undefined && formatChip) {
35
35
  return formatChip(value)
@@ -63,7 +63,7 @@ export default function useFilterable(model: Ref<FilterProp>, emits) {
63
63
  }
64
64
 
65
65
  return {
66
- text: item.text || item.value.toString(),
66
+ text: item.title || item.text || item.value.toString(),
67
67
  value: item,
68
68
  }
69
69
  })
@@ -92,7 +92,8 @@ export default function useFilterable(model: Ref<FilterProp>, emits) {
92
92
  return Object.keys(typedValue).map((key) => {
93
93
  // Use text property if it exists, else use value property or default to key value
94
94
  const text
95
- = typedValue[key].text
95
+ = typedValue[key].title
96
+ || typedValue[key].text
96
97
  || typedValue[key].value?.toString()
97
98
  || typedValue[key].toString()
98
99
 
@@ -12,6 +12,7 @@ export interface ValidationOptions {
12
12
  customRules?: ValidationRule[]
13
13
  warningRules?: ValidationRule[]
14
14
  successRules?: ValidationRule[]
15
+ disableErrorHandling?: boolean
15
16
  }
16
17
 
17
18
  export interface ValidationState {
@@ -59,6 +60,20 @@ export function useValidation(options: ValidationOptions = { showSuccessMessages
59
60
  ): ValidationResult => {
60
61
  clearValidation()
61
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
+
62
77
  // Validation des règles normales
63
78
  const normalRules = rules.map(rule => ({
64
79
  type: rule.type,
package/src/main.ts CHANGED
@@ -4,3 +4,4 @@ import '../src/assets/settings.scss'
4
4
  export * from './components'
5
5
  export * from './services'
6
6
  export * from './composables'
7
+ export * from './utils/rules'
@@ -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. À 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.
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, le référentiel français d’accessibilité numérique
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. La procédure se fait en autonomie par l’équipe de développement.
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.