@cnamts/synapse 1.0.20 → 1.0.22

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 (414) hide show
  1. package/dist/{DateFilter-XURUmpMl.js → DateFilter-B5n-ZkLi.js} +29 -24
  2. package/dist/{NumberFilter-BZc0O8wV.js → NumberFilter-CtiZ9uj8.js} +1 -1
  3. package/dist/{PeriodFilter-ZNdXcl3p.js → PeriodFilter-DzqiMb-b.js} +1 -1
  4. package/dist/{SelectFilter-DshYU5OK.js → SelectFilter-BOYlF7rX.js} +1 -1
  5. package/dist/{TextFilter-D_c5dRPl.js → TextFilter-BOFRNfcX.js} +1 -1
  6. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +7399 -5967
  7. package/dist/components/Amelipro/AmeliproBtn/AmeliproBtn.d.ts +1 -1
  8. package/dist/components/Amelipro/AmeliproCallback/AmeliproCallback.d.ts +1 -1
  9. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarousel.d.ts +10 -14
  10. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/AmeliproCarouselItem.d.ts +1 -1
  11. package/dist/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.d.ts +1 -1
  12. package/dist/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.d.ts +1 -1
  13. package/dist/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.d.ts +1 -1
  14. package/dist/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.d.ts +1 -1
  15. package/dist/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.d.ts +1 -1
  16. package/dist/components/Amelipro/AmeliproFooter/AmeliproFooter.d.ts +8 -8
  17. package/dist/components/Amelipro/AmeliproHeader/AmeliproHeader.d.ts +3 -3
  18. package/dist/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBar.d.ts +1 -1
  19. package/dist/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/AmeliproHeaderBrandSection.d.ts +1 -1
  20. package/dist/components/Amelipro/AmeliproIcon/AmeliproIcon.d.ts +1 -1
  21. package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +16 -20
  22. package/dist/components/Amelipro/AmeliproMenu/AmeliproMenu.d.ts +1 -1
  23. package/dist/components/Amelipro/AmeliproPagination/AmeliproPaginationBtn/AmeliproPaginationBtn.d.ts +1 -1
  24. package/dist/components/Amelipro/AmeliproPatientBanner/AmeliproPatientBanner.d.ts +1 -1
  25. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +1610 -1354
  26. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +2411 -2027
  27. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +8889 -7327
  28. package/dist/components/Amelipro/AmeliproStateTile/AmeliproStateTile.d.ts +1 -1
  29. package/dist/components/Amelipro/AmeliproStepper/AmeliproStepper.d.ts +2 -6
  30. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +8888 -7334
  31. package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +951 -839
  32. package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +1613 -1357
  33. package/dist/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.d.ts +223 -203
  34. package/dist/components/Amelipro/AmeliproTransmission/AmeliproTransmission.d.ts +3 -3
  35. package/dist/components/Amelipro/StructureMenu/StructureTabs/StructureTabs.d.ts +3 -7
  36. package/dist/components/CollapsibleList/CollapsibleList.d.ts +4 -1
  37. package/dist/components/CookieBanner/CookieBanner.d.ts +303 -273
  38. package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +1297 -1156
  39. package/dist/components/CookiesSelection/CookiesSelection.d.ts +404 -377
  40. package/dist/components/Customs/Selects/SelectBtnField/SelectBtnField.d.ts +1 -1
  41. package/dist/components/Customs/Selects/SyAutocomplete/SyAutocomplete.d.ts +1088 -847
  42. package/dist/components/Customs/Selects/SyInputSelect/SyInputSelect.d.ts +1 -1
  43. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +515 -321
  44. package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +162 -0
  45. package/dist/components/Customs/SyCheckBoxGroup/locales.d.ts +3 -0
  46. package/dist/components/Customs/SyCheckBoxGroup/types.d.ts +10 -0
  47. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +1668 -5
  48. package/dist/components/Customs/SyForm/SyForm.d.ts +356 -348
  49. package/dist/components/Customs/SyPagination/SyPagination.d.ts +11 -1
  50. package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +1609 -4
  51. package/dist/components/Customs/SyTextField/SyTextField.d.ts +1629 -1365
  52. package/dist/components/DataList/DataList.d.ts +1 -1
  53. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +3868 -3123
  54. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +1946 -1562
  55. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +833 -687
  56. package/dist/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.d.ts +60 -0
  57. package/dist/components/DialogBox/DialogBox.d.ts +482 -416
  58. package/dist/components/DownloadBtn/config.d.ts +1 -1
  59. package/dist/components/ErrorPage/ErrorPage.d.ts +5 -12
  60. package/dist/components/ErrorPage/locales.d.ts +18 -3
  61. package/dist/components/FileList/UploadItem/locales.d.ts +4 -0
  62. package/dist/components/FileUpload/FileUpload.d.ts +6 -4
  63. package/dist/components/FileUpload/locales.d.ts +1 -0
  64. package/dist/components/FilterSideBar/FilterSideBar.d.ts +418 -366
  65. package/dist/components/FooterBar/FooterBar.d.ts +13 -1
  66. package/dist/components/FooterBar/locales.d.ts +1 -0
  67. package/dist/components/FooterBar/types.d.ts +1 -0
  68. package/dist/components/HeaderBar/HeaderBar.d.ts +1 -0
  69. package/dist/components/HeaderBar/HeaderLogo/HeaderLogo.d.ts +1 -0
  70. package/dist/components/HeaderNavigationBar/HeaderNavigationBar.d.ts +3 -6
  71. package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +1031 -643
  72. package/dist/components/LangBtn/LangBtn.d.ts +277 -239
  73. package/dist/components/LogoBrandSection/LogoBrandSection.d.ts +4 -0
  74. package/dist/components/MaintenancePage/MaintenancePage.d.ts +16 -1
  75. package/dist/components/MaintenancePage/locales.d.ts +18 -2
  76. package/dist/components/NirField/NirField.d.ts +1659 -1371
  77. package/dist/components/NotFoundPage/NotFoundPage.d.ts +9 -3
  78. package/dist/components/NotFoundPage/locales.d.ts +20 -4
  79. package/dist/components/PageContainer/PageContainer.d.ts +3 -1
  80. package/dist/components/PasswordField/PasswordField.d.ts +1 -1
  81. package/dist/components/PeriodField/PeriodField.d.ts +7712 -6216
  82. package/dist/components/PhoneField/PhoneField.d.ts +831 -687
  83. package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +4 -12
  84. package/dist/components/StatusPage/StatusPage.d.ts +50 -0
  85. package/dist/components/SubHeader/SubHeader.d.ts +2 -0
  86. package/dist/components/SyAlert/SyAlert.d.ts +74 -70
  87. package/dist/components/SyBtnMenu/SyBtnMenu.d.ts +10 -1
  88. package/dist/components/SyHeading/SyHeading.d.ts +20 -0
  89. package/dist/components/SyTextArea/SyTextArea.d.ts +476 -420
  90. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +759 -468
  91. package/dist/components/Tables/SyTable/SyTable.d.ts +761 -470
  92. package/dist/components/Tables/common/SyTableFilter.d.ts +1 -1
  93. package/dist/components/Tables/common/SyTablePagination.d.ts +269 -170
  94. package/dist/components/Tables/common/filters/DateFilter.d.ts +10 -1
  95. package/dist/components/Tables/common/filters/NumberFilter.d.ts +1 -1
  96. package/dist/components/Tables/common/filters/PeriodFilter.d.ts +1 -1
  97. package/dist/components/Tables/common/filters/SelectFilter.d.ts +1 -1
  98. package/dist/components/Tables/common/filters/TextFilter.d.ts +1 -1
  99. package/dist/components/Tables/common/organizeColumns/OrganizeColumns.d.ts +166 -138
  100. package/dist/components/Tables/common/types.d.ts +2 -0
  101. package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +35 -1212
  102. package/dist/components/UserMenuBtn/UserMenuBtn.d.ts +1 -0
  103. package/dist/components/index.d.ts +4 -0
  104. package/dist/components/types.d.ts +2 -0
  105. package/dist/design-system-v3.js +131 -127
  106. package/dist/design-system-v3.umd.cjs +274 -274
  107. package/dist/designTokens/tokens/amelipro/apLightTheme.d.ts +26 -14
  108. package/dist/designTokens/tokens/amelipro/apSemantic.d.ts +19 -13
  109. package/dist/designTokens/tokens/cnam/cnamLightTheme.d.ts +28 -15
  110. package/dist/designTokens/tokens/cnam/cnamSemantic.d.ts +20 -13
  111. package/dist/designTokens/tokens/pa/paLightTheme.d.ts +26 -15
  112. package/dist/designTokens/tokens/pa/paSemantic.d.ts +19 -13
  113. package/dist/main-CEl4J8_T.js +37241 -0
  114. package/dist/style.css +1 -1
  115. package/dist/utils/theme/index.d.ts +6 -0
  116. package/dist/vuetifyConfig.d.ts +14 -14
  117. package/package.json +16 -7
  118. package/src/assets/amelipro/img/logo-amelipro.svg +9 -0
  119. package/src/assets/apTokens.scss +53 -17
  120. package/src/assets/overrides/_icons.scss +12 -2
  121. package/src/assets/overrides/_tooltips.scss +5 -6
  122. package/src/assets/overrides/_typography.scss +17 -2
  123. package/src/assets/overrides/_utilities.scss +49 -3
  124. package/src/assets/tokens.scss +53 -17
  125. package/src/components/Accordion/accessibilite/Accessibility.mdx +5 -4
  126. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.vue +2 -2
  127. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/__tests__/__snapshots__/AmeliproAccordionTemplate.spec.ts.snap +0 -2
  128. package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +2 -2
  129. package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/__snapshots__/AmeliproAccordionFrieze.spec.ts.snap +14 -56
  130. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +1 -1
  131. package/src/components/Amelipro/AmeliproAccordionList/__tests__/__snapshots__/AmeliproAccordionList.spec.ts.snap +15 -23
  132. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +1 -1
  133. package/src/components/Amelipro/AmeliproAccordionResultList/__tests__/__snapshots__/AmeliproAccordionResultList.spec.ts.snap +15 -3
  134. package/src/components/Amelipro/AmeliproCarousel/__tests__/__snapshots__/AmeliproCarousel.spec.ts.snap +0 -2
  135. package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +0 -98
  136. package/src/components/Amelipro/AmeliproContentLayout/AmeliproContentLayout.mdx +1 -1
  137. package/src/components/Amelipro/AmeliproContentLayout/AmeliproContentLayout.stories.ts +5 -16
  138. package/src/components/Amelipro/AmeliproCopyBtn/AmeliproCopyBtn.mdx +3 -1
  139. package/src/components/Amelipro/AmeliproCopyBtn/AmeliproCopyBtn.stories.ts +7 -0
  140. package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/AmeliproTooth.vue +0 -1
  141. package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/tests/__snapshots__/AmeliproTooth.spec.ts.snap +0 -1
  142. package/src/components/Amelipro/AmeliproDentalChart/tests/__snapshots__/AmeliproDentalChart.spec.ts.snap +0 -52
  143. package/src/components/Amelipro/AmeliproDialog/__tests__/__snapshots__/AmeliproDialog.spec.ts.snap +6 -0
  144. package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.mdx +3 -1
  145. package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.stories.ts +19 -0
  146. package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.vue +2 -2
  147. package/src/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.vue +3 -4
  148. package/src/components/Amelipro/AmeliproFirstLogin/__tests__/__snapshots__/AmeliproFirstLogin.spec.ts.snap +2 -13
  149. package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.mdx +3 -1
  150. package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.stories.ts +7 -0
  151. package/src/components/Amelipro/AmeliproMenu/__tests__/__snapshots__/AmeliproMenu.spec.ts.snap +8 -0
  152. package/src/components/Amelipro/AmeliproPatientLogged/__tests__/__snapshots__/AmeliproPatientLogged.spec.ts.snap +9 -2
  153. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/__tests__/__snapshots__/AmeliproPostalAddressCityRow.spec.ts.snap +28 -10
  154. package/src/components/Amelipro/AmeliproPostalAddressField/__tests__/__snapshots__/AmeliproPostalAddressField.spec.ts.snap +44 -8
  155. package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.vue +1 -1
  156. package/src/components/Amelipro/AmeliproResultList/__tests__/__snapshots__/AmeliproResultList.spec.ts.snap +15 -3
  157. package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +1 -1
  158. package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +0 -1
  159. package/src/components/Amelipro/AmeliproTooltips/__tests__/__snapshots__/AmeliproTooltips.spec.ts.snap +6 -0
  160. package/src/components/Amelipro/AmeliproUpload/__tests__/__snapshots__/AmeliproUpload.spec.ts.snap +2 -4
  161. package/src/components/Amelipro/StructureMenu/StructureList/__tests__/__snapshots__/StructureList.spec.ts.snap +0 -2
  162. package/src/components/Amelipro/UserMenu/__tests__/__snapshots__/UserMenu.spec.ts.snap +8 -0
  163. package/src/components/BackBtn/BackBtn.vue +1 -1
  164. package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +36 -18
  165. package/src/components/ChipList/ChipList.vue +4 -2
  166. package/src/components/CollapsibleList/CollapsibleList.stories.ts +8 -3
  167. package/src/components/CollapsibleList/CollapsibleList.vue +14 -6
  168. package/src/components/CollapsibleList/accessibilite/Accessibility.mdx +19 -6
  169. package/src/components/CollapsibleList/tests/CollapsibleList.a11y.spec.ts +1 -0
  170. package/src/components/CollapsibleList/tests/CollapsibleList.spec.ts +2 -0
  171. package/src/components/ContextualMenu/ContextualMenu.stories.ts +0 -3
  172. package/src/components/ContextualMenu/accessibilite/Accessibility.mdx +67 -11
  173. package/src/components/CookieBanner/CookieBanner.stories.ts +21 -20
  174. package/src/components/CookieBanner/CookieBanner.vue +35 -10
  175. package/src/components/CookieBanner/accessibilite/Accessibility.mdx +76 -11
  176. package/src/components/CookieBanner/tests/CookieBanner.spec.ts +56 -4
  177. package/src/components/CookieBanner/tests/__snapshots__/CookieBanner.spec.ts.snap +21 -15
  178. package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +17 -8
  179. package/src/components/CookiesSelection/CookiesInformation/tests/CookiesInformation.a11y.spec.ts +1 -0
  180. package/src/components/CookiesSelection/CookiesInformation/tests/CookiesInformation.spec.ts +5 -0
  181. package/src/components/CookiesSelection/CookiesSelection.vue +7 -2
  182. package/src/components/CookiesSelection/tests/CookiesSelection.a11y.spec.ts +1 -0
  183. package/src/components/CookiesSelection/tests/CookiesSelection.spec.ts +5 -0
  184. package/src/components/CookiesSelection/tests/__snapshots__/CookiesSelection.spec.ts.snap +21 -15
  185. package/src/components/CopyBtn/CopyBtn.vue +6 -4
  186. package/src/components/CopyBtn/accessibilite/Accessibility.mdx +82 -11
  187. package/src/components/CopyBtn/tests/__snapshots__/CopyBtn.spec.ts.snap +5 -1
  188. package/src/components/Customs/Selects/SyInputSelect/SyInputSelect.stories.ts +4 -10
  189. package/src/components/Customs/Selects/SySelect/SySelect.mdx +0 -1
  190. package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +10 -10
  191. package/src/components/Customs/Selects/SySelect/SySelect.vue +17 -0
  192. package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +1 -1
  193. package/src/components/Customs/Selects/SySelect/tests/SySelect.a11y.spec.ts +1 -3
  194. package/src/components/Customs/Selects/SySelect/tests/SySelect.spec.ts +72 -0
  195. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.mdx +32 -0
  196. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.stories.ts +856 -0
  197. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.vue +334 -0
  198. package/src/components/Customs/SyCheckBoxGroup/accessibilite/Accessibility.mdx +243 -0
  199. package/src/components/Customs/SyCheckBoxGroup/locales.ts +3 -0
  200. package/src/components/Customs/SyCheckBoxGroup/tests/SyCheckBoxGroup.a11y.spec.ts +30 -0
  201. package/src/components/Customs/SyCheckBoxGroup/tests/SyCheckBoxGroup.spec.ts +152 -0
  202. package/src/components/Customs/SyCheckBoxGroup/types.ts +10 -0
  203. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +17 -28
  204. package/src/components/Customs/SyCheckbox/accessibilite/Accessibility.mdx +1 -1
  205. package/src/components/Customs/SyForm/SyForm.a11y.spec.ts +1 -1
  206. package/src/components/Customs/SyIcon/SyIcon.a11y.spec.ts +31 -2
  207. package/src/components/Customs/SyIcon/SyIcon.vue +9 -5
  208. package/src/components/Customs/SyPagination/SyPagination.stories.ts +14 -2
  209. package/src/components/Customs/SyPagination/SyPagination.vue +20 -5
  210. package/src/components/Customs/SyPagination/accessibilite/Accessibility.mdx +79 -8
  211. package/src/components/Customs/SyPagination/tests/SyPagination.a11y.spec.ts +38 -12
  212. package/src/components/Customs/SyPagination/tests/SyPagination.spec.ts +12 -0
  213. package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +16 -43
  214. package/src/components/Customs/SyTextField/SyTextField.stories.ts +4 -0
  215. package/src/components/Customs/SyTextField/SyTextField.vue +39 -5
  216. package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +28 -3
  217. package/src/components/DatePicker/CalendarMode/DatePicker.vue +55 -19
  218. package/src/components/DatePicker/CalendarMode/tests/DatePicker.spec.ts +9 -3
  219. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +44 -3
  220. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +70 -47
  221. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.a11y.spec.ts +9 -1
  222. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +48 -21
  223. package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +98 -0
  224. package/src/components/DatePicker/docExamples/BidirectionalComplexValidation.vue +23 -9
  225. package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +21 -8
  226. package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +50 -22
  227. package/src/components/DatePicker/playground/ComplexDatePickerPlayground.vue +48 -10
  228. package/src/components/DatePicker/playground/DatePickerHolidayRule.vue +16 -3
  229. package/src/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.mdx +83 -0
  230. package/src/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.stories.ts +502 -0
  231. package/src/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.vue +428 -0
  232. package/src/components/DeclarationAccessibilityPage/accessibilite/Accessibility.mdx +75 -0
  233. package/src/components/DeclarationAccessibilityPage/tests/DeclarationAccessibilityPage.a11y.spec.ts +53 -0
  234. package/src/components/DeclarationAccessibilityPage/tests/DeclarationAccessibilityPage.spec.ts +59 -0
  235. package/src/components/DiacriticPicker/DiacriticPicker.vue +20 -1
  236. package/src/components/DialogBox/DialogBox.stories.ts +13 -0
  237. package/src/components/DialogBox/DialogBox.vue +12 -5
  238. package/src/components/DialogBox/accessibilite/Accessibility.mdx +27 -7
  239. package/src/components/DialogBox/tests/DialogBox.a11y.spec.ts +1 -0
  240. package/src/components/DialogBox/tests/DialogBox.spec.ts +40 -6
  241. package/src/components/DownloadBtn/accessibilite/Accessibility.mdx +73 -11
  242. package/src/components/DownloadBtn/config.ts +1 -1
  243. package/src/components/ErrorPage/ErrorPage.mdx +6 -16
  244. package/src/components/ErrorPage/ErrorPage.stories.ts +90 -126
  245. package/src/components/ErrorPage/ErrorPage.vue +44 -125
  246. package/src/components/ErrorPage/accessibilite/Accessibility.mdx +83 -6
  247. package/src/components/ErrorPage/assets/error-ap.svg +1774 -0
  248. package/src/components/ErrorPage/locales.ts +21 -3
  249. package/src/components/ErrorPage/tests/ErrorPage.a11y.spec.ts +5 -13
  250. package/src/components/ErrorPage/tests/ErrorPage.spec.ts +2 -41
  251. package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +10 -266
  252. package/src/components/ExternalLinks/tests/__snapshots__/ExternalLinks.spec.ts.snap +13 -2
  253. package/src/components/FileList/FileList.stories.ts +4 -0
  254. package/src/components/FileList/UploadItem/UploadItem.vue +8 -3
  255. package/src/components/FileList/UploadItem/locales.ts +10 -0
  256. package/src/components/FileList/accessibilite/Accessibility.mdx +55 -7
  257. package/src/components/FileUpload/FileUpload.vue +65 -37
  258. package/src/components/FileUpload/FileUploadContent.vue +1 -1
  259. package/src/components/FileUpload/accessibilite/Accessibility.mdx +48 -5
  260. package/src/components/FileUpload/locales.ts +1 -0
  261. package/src/components/FileUpload/tests/FileUpload.spec.ts +14 -14
  262. package/src/components/FilterInline/FilterInline.stories.ts +0 -15
  263. package/src/components/FilterInline/FilterInline.vue +1 -0
  264. package/src/components/FilterInline/accessibilite/Accessibility.mdx +70 -7
  265. package/src/components/FilterInline/tests/__snapshots__/FilterInline.spec.ts.snap +3 -3
  266. package/src/components/FilterSideBar/FilterSideBar.stories.ts +0 -3
  267. package/src/components/FilterSideBar/FilterSideBar.vue +2 -1
  268. package/src/components/FilterSideBar/accessibilite/Accessibility.mdx +70 -9
  269. package/src/components/FooterBar/FooterBar.stories.ts +316 -48
  270. package/src/components/FooterBar/FooterBar.vue +67 -9
  271. package/src/components/FooterBar/config.ts +2 -2
  272. package/src/components/FooterBar/defaultSocialMediaLinks.ts +6 -4
  273. package/src/components/FooterBar/locales.ts +1 -0
  274. package/src/components/FooterBar/tests/FooterBarConfig.spec.ts +1 -1
  275. package/src/components/FooterBar/tests/__snapshots__/FooterBar.spec.ts.snap +6 -25
  276. package/src/components/FooterBar/types.d.ts +1 -0
  277. package/src/components/HeaderBar/HeaderBar.stories.ts +23 -1
  278. package/src/components/HeaderBar/HeaderBar.vue +4 -0
  279. package/src/components/HeaderBar/HeaderLogo/HeaderLogo.vue +7 -2
  280. package/src/components/HeaderBar/HeaderLogo/tests/HeaderLogo.spec.ts +5 -0
  281. package/src/components/HeaderBar/accessibilite/Accessibility.mdx +24 -5
  282. package/src/components/HeaderBar/tests/HeaderBar.a11y.spec.ts +1 -0
  283. package/src/components/HeaderBar/tests/HeaderBar.spec.ts +3 -0
  284. package/src/components/HeaderNavigationBar/HeaderNavigationBar.stories.ts +4 -0
  285. package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +2 -0
  286. package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.spec.ts +3 -0
  287. package/src/components/LogoBrandSection/LogoBrandSection.stories.ts +22 -0
  288. package/src/components/LogoBrandSection/LogoBrandSection.vue +13 -5
  289. package/src/components/LogoBrandSection/tests/LogoBrandSection.a11y.spec.ts +2 -0
  290. package/src/components/LogoBrandSection/tests/LogoBrandSection.spec.ts +44 -0
  291. package/src/components/LogoBrandSection/tests/__snapshots__/LogoBrandSection.spec.ts.snap +2 -0
  292. package/src/components/MaintenancePage/MaintenancePage.mdx +1 -1
  293. package/src/components/MaintenancePage/MaintenancePage.vue +42 -7
  294. package/src/components/MaintenancePage/accessibilite/Accessibility.mdx +63 -6
  295. package/src/components/MaintenancePage/assets/maintenance-ap.svg +1718 -0
  296. package/src/components/MaintenancePage/locales.ts +24 -3
  297. package/src/components/MaintenancePage/tests/MaintenancePage.a11y.spec.ts +76 -3
  298. package/src/components/MaintenancePage/tests/MaintenancePage.spec.ts +60 -2
  299. package/src/components/MaintenancePage/tests/__snapshots__/MaintenancePage.spec.ts.snap +5 -2
  300. package/src/components/NotFoundPage/NotFoundPage.mdx +1 -1
  301. package/src/components/NotFoundPage/NotFoundPage.stories.ts +4 -4
  302. package/src/components/NotFoundPage/NotFoundPage.vue +30 -14
  303. package/src/components/NotFoundPage/accessibilite/Accessibility.mdx +80 -6
  304. package/src/components/NotFoundPage/assets/not-found-ap.svg +2061 -0
  305. package/src/components/NotFoundPage/locales.ts +24 -4
  306. package/src/components/NotFoundPage/tests/NotFoundPage.a11y.spec.ts +217 -4
  307. package/src/components/NotFoundPage/tests/NotFoundPage.spec.ts +123 -12
  308. package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +4 -2
  309. package/src/components/NotificationBar/NotificationBar.mdx +2 -2
  310. package/src/components/NotificationBar/accessibilite/Accessibility.mdx +68 -8
  311. package/src/components/PageContainer/PageContainer.stories.ts +47 -0
  312. package/src/components/PageContainer/PageContainer.vue +4 -2
  313. package/src/components/PageContainer/accessibilite/Accessibility.mdx +67 -0
  314. package/src/components/PageContainer/tests/PageContainer.a11y.spec.ts +14 -7
  315. package/src/components/PaginatedTable/PaginatedTable.mdx +3 -3
  316. package/src/components/PaginatedTable/PaginatedTable.stories.ts +9 -1
  317. package/src/components/PeriodField/PeriodField.vue +4 -0
  318. package/src/components/PeriodField/tests/PeriodField.a11y.spec.ts +10 -1
  319. package/src/components/PhoneField/PhoneField.stories.ts +115 -69
  320. package/src/components/PhoneField/PhoneField.vue +152 -83
  321. package/src/components/PhoneField/accessibilite/Accessibility.mdx +306 -9
  322. package/src/components/PhoneField/indicatifs.ts +2 -2
  323. package/src/components/PhoneField/tests/PhoneField.a11y.spec.ts +22 -9
  324. package/src/components/PhoneField/tests/PhoneField.spec.ts +82 -5
  325. package/src/components/SearchListField/SearchListField.vue +1 -1
  326. package/src/components/SearchListField/accessibilite/Accessibility.mdx +69 -9
  327. package/src/components/SearchListField/tests/SearchListField.a11y.spec.ts +37 -0
  328. package/src/components/SocialMediaLinks/DefaultSocialMediaLinks.ts +6 -4
  329. package/src/components/SocialMediaLinks/SocialMediaLinks.mdx +7 -5
  330. package/src/components/SocialMediaLinks/SocialMediaLinks.stories.ts +17 -13
  331. package/src/components/SocialMediaLinks/SocialMediaLinks.vue +10 -2
  332. package/src/components/SocialMediaLinks/accessibilite/Accessibility.mdx +63 -11
  333. package/src/components/SocialMediaLinks/tests/DefaultSocialMediaLinks.spec.ts +5 -5
  334. package/src/components/SocialMediaLinks/tests/SocialMediaLinks.a11y.spec.ts +59 -0
  335. package/src/components/SocialMediaLinks/tests/SocialMediaLinks.spec.ts +9 -7
  336. package/src/components/StatusPage/StatusPage.mdx +31 -0
  337. package/src/components/StatusPage/StatusPage.stories.ts +236 -0
  338. package/src/components/StatusPage/StatusPage.vue +167 -0
  339. package/src/components/StatusPage/accessibilite/Accessibility.mdx +100 -0
  340. package/src/components/StatusPage/tests/StatusPage.a11y.spec.ts +30 -0
  341. package/src/components/StatusPage/tests/StatusPage.spec.ts +53 -0
  342. package/src/components/StatusPage/tests/__snapshots__/StatusPage.spec.ts.snap +272 -0
  343. package/src/components/SubHeader/SubHeader.stories.ts +16 -0
  344. package/src/components/SubHeader/SubHeader.vue +6 -3
  345. package/src/components/SubHeader/accessibilite/Accessibility.mdx +27 -6
  346. package/src/components/SyAlert/SyAlert.vue +21 -20
  347. package/src/components/SyBtnMenu/SyBtnMenu.vue +33 -17
  348. package/src/components/SyBtnMenu/tests/SyBtnMenu.a11y.spec.ts +38 -0
  349. package/src/components/SyBtnMenu/tests/SyBtnMenu.spec.ts +41 -0
  350. package/src/components/SyHeading/SyHeading.vue +18 -0
  351. package/src/components/TableToolbar/TableToolbar.stories.ts +6 -6
  352. package/src/components/TableToolbar/TableToolbar.vue +1 -1
  353. package/src/components/TableToolbar/tests/__snapshots__/TableToolbar.spec.ts.snap +96 -35
  354. package/src/components/Tables/SyServerTable/SyServerTable.vue +2 -0
  355. package/src/components/Tables/SyTable/SyTable.vue +2 -0
  356. package/src/components/Tables/common/SyTablePagination.vue +16 -10
  357. package/src/components/Tables/common/filters/DateFilter.vue +5 -0
  358. package/src/components/Tables/common/tests/SyTablePagination.spec.ts +40 -24
  359. package/src/components/Tables/common/types.ts +3 -0
  360. package/src/components/UploadWorkflow/UploadWorkflow.mdx +11 -1
  361. package/src/components/UploadWorkflow/UploadWorkflow.stories.ts +118 -14
  362. package/src/components/UploadWorkflow/UploadWorkflow.vue +59 -31
  363. package/src/components/UploadWorkflow/accessibilite/Accessibility.mdx +56 -5
  364. package/src/components/UploadWorkflow/accessibilite/UploadWorkflow.a11y.spec.ts +110 -0
  365. package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +37 -7
  366. package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +139 -112
  367. package/src/components/UploadWorkflow/useFileList.ts +7 -0
  368. package/src/components/UserMenuBtn/UserMenuBtn.stories.ts +53 -31
  369. package/src/components/UserMenuBtn/UserMenuBtn.vue +4 -1
  370. package/src/components/UserMenuBtn/accessibilite/Accessibility.mdx +72 -8
  371. package/src/components/index.ts +4 -0
  372. package/src/components/types.ts +4 -0
  373. package/src/composables/date/tests/useDateInitialization.spec.ts +22 -1
  374. package/src/composables/date/useDateInitializationDayjs.ts +4 -7
  375. package/src/composables/date/useDatePickerAccessibility.ts +2 -3
  376. package/src/composables/rules/tests/useFieldValidation.spec.ts +39 -3
  377. package/src/composables/rules/useFieldValidation.ts +24 -9
  378. package/src/composables/useFilterable/useFilterable.spec.ts +52 -2
  379. package/src/composables/useFilterable/useFilterable.ts +7 -1
  380. package/src/designTokens/tokens/amelipro/apLightTheme.ts +27 -15
  381. package/src/designTokens/tokens/amelipro/apSemantic.ts +21 -15
  382. package/src/designTokens/tokens/cnam/cnamLightTheme.ts +28 -15
  383. package/src/designTokens/tokens/cnam/cnamSemantic.ts +21 -14
  384. package/src/designTokens/tokens/pa/paLightTheme.ts +27 -16
  385. package/src/designTokens/tokens/pa/paSemantic.ts +19 -13
  386. package/src/directives/rgaaSvgFix.ts +2 -7
  387. package/src/stories/Accessibilite/{Audit → AuditEtContreAudit}/Exemptions-derogations.mdx +1 -1
  388. package/src/stories/Accessibilite/AuditEtContreAudit/Introduction.mdx +188 -0
  389. package/src/stories/Accessibilite/{Audit → AuditEtContreAudit}/RGAA.mdx +1 -1
  390. package/src/stories/Accessibilite/Introduction.mdx +22 -3
  391. package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +21 -22
  392. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +7 -0
  393. package/src/stories/DeprecationNotice/DeprecationNotice.ts +41 -0
  394. package/src/stories/DesignTokens/ColorDisplay.vue +12 -5
  395. package/src/stories/DesignTokens/Colors.mdx +8 -59
  396. package/src/stories/DesignTokens/colors.stories.ts +1862 -1071
  397. package/src/stories/EcoConception/EcoGuideComponent.vue +10 -4
  398. package/src/utils/theme/index.ts +19 -0
  399. package/src/utils/theme/tests/useThemeLocales.spec.ts +245 -0
  400. package/dist/components/MaintenancePage/index.d.ts +0 -2
  401. package/dist/main-CuI6xaPq.js +0 -36396
  402. package/src/components/Customs/SyTabs/tests/SyTabs.a11y.spec.ts +0 -51
  403. package/src/components/DataListItem/tests/DataListItem.a11y.spec.ts +0 -31
  404. package/src/components/DatePicker/CalendarMode/tests/DatePicker.a11y.spec.ts +0 -27
  405. package/src/components/DownloadBtn/tests/DownloadBtn.a11y.spec.ts +0 -26
  406. package/src/components/ExternalLinks/tests/ExternalLinks.a11y.spec.ts +0 -39
  407. package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.a11y.spec.ts +0 -45
  408. package/src/components/HeaderToolbar/tests/HeaderToolbar.a11y.spec.ts +0 -25
  409. package/src/components/LunarCalendar/tests/LunarCalendar.a11y.spec.ts +0 -31
  410. package/src/components/MaintenancePage/index.ts +0 -3
  411. package/src/components/PageContainer/Accessibilite/Accessibility.mdx +0 -53
  412. package/src/components/PageContainer/Accessibilite/AccessibilityGuide.mdx +0 -0
  413. package/src/components/PaginatedTable/tests/PaginatedTable.a11y.spec.ts +0 -43
  414. /package/src/components/NotFoundPage/assets/{not-found.svg → not-found-cnam.svg} +0 -0
@@ -1,6 +1,6 @@
1
1
  <script setup lang="ts">
2
2
  import { useWidthable, type Widthable } from '@/composables/widthable'
3
- import { ref, useId, watch } from 'vue'
3
+ import { ref, useAttrs, useId, watch } from 'vue'
4
4
  import { useTheme } from 'vuetify'
5
5
  import FileUploadContent, { type FileUploadContentSlots } from './FileUploadContent.vue'
6
6
  import { locales as defaultLocales } from './locales'
@@ -33,6 +33,8 @@
33
33
  default(): void
34
34
  } & FileUploadContentSlots>()
35
35
 
36
+ const attrs = useAttrs()
37
+
36
38
  const dragover = ref(false)
37
39
  const id = 'file-upload-' + useId()
38
40
  const dropZone = ref<HTMLElement | null>(null)
@@ -40,8 +42,16 @@
40
42
  const fileList = ref<File[]>([])
41
43
  const isDarkMode = useTheme().current.value.dark
42
44
 
45
+ function openFileDialog() {
46
+ if (props.disabled) {
47
+ return
48
+ }
49
+ fileInput.value?.click()
50
+ }
51
+
43
52
  defineExpose({
44
53
  fileInput,
54
+ openFileDialog,
45
55
  })
46
56
 
47
57
  watch(() => props.modelValue, (value) => {
@@ -93,61 +103,79 @@
93
103
  ;(e.target as HTMLInputElement).value = ''
94
104
  }
95
105
  </script>
96
- <!-- eslint-disable vuejs-accessibility/no-static-element-interactions -->
106
+
97
107
  <template>
98
- <label
99
- ref="dropZone"
100
- :for="id"
101
- :class="[
102
- {
103
- dragover: dragover,
104
- 'sy-file-upload--disabled': disabled,
105
- 'dark-mode': isDarkMode,
106
- },
107
- ]"
108
- :style="widthStyles"
109
- class="sy-file-upload d-block pa-4"
110
- @dragover.prevent="dragover = true"
111
- @dragleave="dragover = false"
108
+ <div
109
+ class="sy-file-upload-wrapper"
112
110
  >
113
111
  <input
114
112
  :id="id"
115
113
  ref="fileInput"
116
114
  type="file"
117
- :disabled="disabled"
118
- :multiple="multiple"
115
+ tabindex="-1"
116
+ aria-hidden="true"
117
+ :disabled="disabled ? true : undefined"
118
+ :multiple="multiple ? true : undefined"
119
119
  :accept="allowedExtensions.map(el=>`.${el}`).join(', ')"
120
120
  class="sy-file-upload-input"
121
121
  @change="onFileChange"
122
122
  >
123
- <slot>
124
- <FileUploadContent
125
- :allowed-extensions="allowedExtensions"
126
- :multiple="multiple"
127
- :file-size-max="fileSizeMax"
128
- :file-size-units="fileSizeUnits"
129
- >
130
- <template
131
- v-for="(_, slotName) in $slots"
132
- #[slotName]="slotProps"
123
+ <div
124
+ ref="dropZone"
125
+ :aria-disabled="disabled ? true : undefined"
126
+ :title="locales.fileUploadTitle"
127
+ role="button"
128
+ :tabindex="disabled ? -1 : 0"
129
+ :class="[
130
+ {
131
+ dragover: dragover,
132
+ 'sy-file-upload--disabled': disabled,
133
+ 'dark-mode': isDarkMode,
134
+ },
135
+ ]"
136
+ :style="widthStyles"
137
+ class="sy-file-upload d-block pa-4"
138
+ v-bind="attrs"
139
+ @click="openFileDialog"
140
+ @keydown.enter.prevent="openFileDialog"
141
+ @keydown.space.prevent="openFileDialog"
142
+ @dragover.prevent="dragover = true"
143
+ @dragleave="dragover = false"
144
+ @drop="dragover = false"
145
+ >
146
+ <slot>
147
+ <FileUploadContent
148
+ :allowed-extensions="allowedExtensions"
149
+ :multiple="multiple"
150
+ :file-size-max="fileSizeMax"
151
+ :file-size-units="fileSizeUnits"
133
152
  >
134
- <slot
135
- :name="slotName"
136
- v-bind="slotProps || {}"
137
- />
138
- </template>
139
- </FileUploadContent>
140
- </slot>
141
- </label>
153
+ <template
154
+ v-for="(_, slotName) in $slots"
155
+ #[slotName]="slotProps"
156
+ >
157
+ <slot
158
+ :name="slotName"
159
+ v-bind="slotProps || {}"
160
+ />
161
+ </template>
162
+ </FileUploadContent>
163
+ </slot>
164
+ </div>
165
+ </div>
142
166
  </template>
143
167
 
144
168
  <style lang="scss" scoped>
145
169
  @use '@/assets/tokens';
146
170
 
171
+ .sy-file-upload-wrapper {
172
+ display: contents;
173
+ }
174
+
147
175
  .sy-file-upload {
148
176
  cursor: pointer;
149
177
  position: relative;
150
- border: 1px dashed tokens.$colors-border-accent;
178
+ border: 1px dashed tokens.$colors-border-accent-primary;
151
179
  border-radius: tokens.$radius-rounded-lg;
152
180
  transition: background 0.25s;
153
181
 
@@ -60,7 +60,7 @@
60
60
  </span>
61
61
 
62
62
  <span
63
- class="sy-file-upload-btn bg-primary text-white elevation-2"
63
+ class="sy-file-upload-btn bg-primary text-white"
64
64
  >
65
65
  <slot name="button-text">
66
66
  {{ locales.chooseFile(multiple) }}
@@ -1,12 +1,55 @@
1
1
  import { Meta, Story } from '@storybook/addon-docs';
2
2
  import * as Stories from '../FileUpload.stories.ts';
3
- import '@/stories/styles/shared.css';
3
+ import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
4
+
5
+ import {
6
+ AccessibilityGuideLayout,
7
+ CriteriaSection,
8
+ CriteriaCard,
9
+ DemoSection,
10
+ BestPracticesSection,
11
+ ResourcesSection,
12
+ } from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
13
+
4
14
 
5
15
  <Meta of={Stories} />
6
16
 
7
- <div className="header">
8
- <h1>Accessibilité</h1>
9
- <p>Cette page sera bientôt disponible</p>
10
- </div>
17
+ <AccessibilityGuideLayout
18
+ componentName="FileUpload"
19
+ iconSrc={AccessibilityIcon}
20
+ >
21
+ <CriteriaSection>
22
+ <CriteriaCard icon="🔍" title="Structure sémantique">
23
+ <ul>
24
+ <li><strong>Utilisation d'un boutton</strong> : Le composant utilise un élément avec le role <code>button</code> pour déclencher l'ouverture du sélecteur de fichiers. Ceci permet de gérer l'interaction avec le clavier, le clic souris ainsi que le glisser-déposer simultanément tout en gardant une bonne sémantique.</li>
25
+ <li><strong>Disabled</strong> : Utilisation de l'attribut <code>disabled</code> sur le bouton si le champ est désactivé.</li>
26
+ </ul>
27
+ </CriteriaCard>
28
+
29
+ <CriteriaCard icon="⌨️" title="Navigation clavier">
30
+ <ul>
31
+ <li><strong>Navigation au clavier</strong> : La zone d'upload de fichier est focusable, l'utilisateur peut utiliser le clic souris, le clavier ainsi que le glisser-déposer.</li>
32
+ </ul>
33
+ </CriteriaCard>
34
+ </CriteriaSection>
35
+
36
+ <DemoSection componentName="FileUpload">
37
+ <Story name="Default" />
38
+ </DemoSection>
11
39
 
40
+ <BestPracticesSection>
41
+ <ul>
42
+ <li><strong>Utiliser dans une balise de formulaire</strong> : Intégrer le composant dans une balise <code>form</code> ou le composant <code>SyForm</code> pour la sémantique et l'accessibilité.</li>
43
+ <li><strong>Fournir des messages d'erreur clairs</strong> : Utiliser des messages d'erreur explicites et accessibles pour informer les utilisateurs des problèmes de téléchargement.</li>
44
+ <li><strong>Gérer les états de téléchargement</strong> : Fournir des indications visuelles et textuelles pour les différents états de téléchargement, y compris les erreurs et les succès.</li>
45
+ </ul>
46
+ </BestPracticesSection>
12
47
 
48
+ <ResourcesSection>
49
+ <ul>
50
+ <li><a href="https://react.carbondesignsystem.com/?path=/docs/components-fileuploader--overview" target="_blank" rel="noopener noreferrer">Design system d'IBM</a></li>
51
+ <li><a href="https://developer.mozilla.org/fr/docs/Web/HTML/Reference/Elements/input/file" target="_blank" rel="noopener noreferrer">MDN: input type="file"</a></li>
52
+ <li><a href="https://www.w3.org/WAI/WCAG21/quickref/" target="_blank" rel="noopener noreferrer">Référence rapide WCAG 2.1</a></li>
53
+ </ul>
54
+ </ResourcesSection>
55
+ </AccessibilityGuideLayout>
@@ -1,4 +1,5 @@
1
1
  export const locales = {
2
+ fileUploadTitle: 'Téléverser un fichier',
2
3
  or: 'Ou',
3
4
  chooseFile: (multiple: boolean) => multiple ? 'Choisir des fichiers' : 'Choisir un fichier',
4
5
  infoText: (max: string, ext: string[]): string =>
@@ -48,13 +48,13 @@ describe('FileUpload', () => {
48
48
  },
49
49
  })
50
50
 
51
- const label = wrapper.find('label')
51
+ const label = wrapper.find('.sy-file-upload')
52
52
  const labelClasses = label.classes()
53
53
 
54
- await wrapper.find('input').trigger('dragover')
54
+ await wrapper.find('.sy-file-upload').trigger('dragover')
55
55
  expect(label.classes()).not.toEqual(labelClasses)
56
56
 
57
- await wrapper.find('input').trigger('dragleave')
57
+ await wrapper.find('.sy-file-upload').trigger('dragleave')
58
58
  expect(label.classes()).toEqual(labelClasses)
59
59
  })
60
60
 
@@ -68,7 +68,7 @@ describe('FileUpload', () => {
68
68
 
69
69
  const file: File = new File([''], 'filename.pdf', { type: 'application/pdf' })
70
70
 
71
- await wrapper.find('input').trigger('drop', {
71
+ await wrapper.find('.sy-file-upload').trigger('drop', {
72
72
  dataTransfer: {
73
73
  files: [file],
74
74
  },
@@ -89,13 +89,13 @@ describe('FileUpload', () => {
89
89
 
90
90
  const file: File = new File([''], 'filename.pdf', { type: 'application/pdf' })
91
91
 
92
- await wrapper.find('label').trigger('drop', {
92
+ await wrapper.find('.sy-file-upload').trigger('drop', {
93
93
  dataTransfer: {
94
94
  files: [file],
95
95
  },
96
96
  })
97
97
 
98
- await wrapper.find('label').trigger('drop', {
98
+ await wrapper.find('.sy-file-upload').trigger('drop', {
99
99
  dataTransfer: {
100
100
  files: [file, file],
101
101
  },
@@ -115,7 +115,7 @@ describe('FileUpload', () => {
115
115
 
116
116
  const file: File = new File([''], 'filename.jpg', { type: 'image/jpeg' })
117
117
 
118
- await wrapper.find('input').trigger('drop', {
118
+ await wrapper.find('.sy-file-upload').trigger('drop', {
119
119
  dataTransfer: {
120
120
  files: [file],
121
121
  },
@@ -137,7 +137,7 @@ describe('FileUpload', () => {
137
137
  },
138
138
  })
139
139
 
140
- await wrapper.find('label').trigger('drop', {
140
+ await wrapper.find('.sy-file-upload').trigger('drop', {
141
141
  dataTransfer: {
142
142
  files: [jpgFile],
143
143
  },
@@ -146,7 +146,7 @@ describe('FileUpload', () => {
146
146
  expect(wrapper.emitted('update:modelValue')?.[0]).toEqual(undefined)
147
147
  expect(wrapper.emitted('error')?.[0]).toEqual([['Le fichier filename.jpg a une extension invalide. Extensions acceptées : pdf']])
148
148
 
149
- await wrapper.find('label').trigger('drop', {
149
+ await wrapper.find('.sy-file-upload').trigger('drop', {
150
150
  dataTransfer: {
151
151
  files: [pdfFile],
152
152
  },
@@ -166,7 +166,7 @@ describe('FileUpload', () => {
166
166
 
167
167
  const file: File = new File(['42'], 'filename.jpg', { type: 'image/jpeg' })
168
168
 
169
- await wrapper.find('label').trigger('drop', {
169
+ await wrapper.find('.sy-file-upload').trigger('drop', {
170
170
  dataTransfer: {
171
171
  files: [file],
172
172
  },
@@ -183,7 +183,7 @@ describe('FileUpload', () => {
183
183
  },
184
184
  })
185
185
 
186
- await wrapper.find('label').trigger('drop', {
186
+ await wrapper.find('.sy-file-upload').trigger('drop', {
187
187
  dataTransfer: {
188
188
  files: [],
189
189
  },
@@ -203,7 +203,7 @@ describe('FileUpload', () => {
203
203
 
204
204
  const file: File = new File([''], 'filename.xyz', { type: 'unknown' })
205
205
 
206
- await wrapper.find('label').trigger('drop', {
206
+ await wrapper.find('.sy-file-upload').trigger('drop', {
207
207
  dataTransfer: {
208
208
  files: [file],
209
209
  },
@@ -221,7 +221,7 @@ describe('FileUpload', () => {
221
221
  },
222
222
  })
223
223
 
224
- await wrapper.find('label').trigger('drop', {
224
+ await wrapper.find('.sy-file-upload').trigger('drop', {
225
225
  dataTransfer: {
226
226
  files: [file],
227
227
  },
@@ -241,7 +241,7 @@ describe('FileUpload', () => {
241
241
  const file1: File = new File([''], 'filename1.jpg', { type: 'image/jpeg' })
242
242
  const file2: File = new File([''], 'filename2.jpg', { type: 'image/jpeg' })
243
243
 
244
- await wrapper.find('label').trigger('drop', {
244
+ await wrapper.find('.sy-file-upload').trigger('drop', {
245
245
  dataTransfer: {
246
246
  files: [file1, file2],
247
247
  },
@@ -207,9 +207,6 @@ export const Default: Story = {
207
207
  `,
208
208
  }),
209
209
  parameters: {
210
- a11y: {
211
- disable: true,
212
- },
213
210
  sourceCode: [
214
211
  {
215
212
  name: 'Template',
@@ -370,9 +367,6 @@ export const ChipFormat: Story = {
370
367
  `,
371
368
  }),
372
369
  parameters: {
373
- a11y: {
374
- disable: true,
375
- },
376
370
  sourceCode: [
377
371
  {
378
372
  name: 'Template',
@@ -599,9 +593,6 @@ export const FilterCombination: Story = {
599
593
  `,
600
594
  }),
601
595
  parameters: {
602
- a11y: {
603
- disable: true,
604
- },
605
596
  layout: 'fullscreen',
606
597
  sourceCode: [
607
598
  {
@@ -835,9 +826,6 @@ export const Boolean: Story = {
835
826
  `,
836
827
  }),
837
828
  parameters: {
838
- a11y: {
839
- disable: true,
840
- },
841
829
  sourceCode: [
842
830
  {
843
831
  name: 'Template',
@@ -988,9 +976,6 @@ export const ManyFields: Story = {
988
976
  `,
989
977
  }),
990
978
  parameters: {
991
- a11y: {
992
- disable: true,
993
- },
994
979
  sourceCode: [
995
980
  {
996
981
  name: 'Template',
@@ -45,6 +45,7 @@
45
45
  <template #activator="{ props: menuProps, isActive }">
46
46
  <VBtn
47
47
  v-bind="menuProps"
48
+ :aria-controls="isActive ? menuProps['aria-controls'] : undefined"
48
49
  :class="`sy-filter-${filter.name}`"
49
50
  :variant="getFilterCount(filter) ? undefined : 'outlined'"
50
51
  color="secondary"
@@ -1,12 +1,75 @@
1
- import { Meta, Story } from '@storybook/addon-docs';
2
- import * as Stories from '../FilterInline.stories.ts';
1
+ import { Meta, Story } from '@storybook/blocks';
2
+ import * as Stories from '../FilterInline.stories';
3
+ import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
3
4
  import '@/stories/styles/shared.css';
5
+ import {
6
+ AccessibilityGuideLayout,
7
+ CriteriaSection,
8
+ CriteriaCard,
9
+ DemoSection,
10
+ BestPracticesSection,
11
+ ResourcesSection,
12
+ AuditSection,
13
+ } from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
4
14
 
5
15
  <Meta of={Stories} />
6
16
 
7
- <div className="header">
8
- <h1>Accessibilité</h1>
9
- <p>Cette page sera bientôt disponible</p>
10
- </div>
17
+ <AccessibilityGuideLayout
18
+ componentName="FilterInline"
19
+ iconSrc={AccessibilityIcon}
20
+ >
21
+ <AuditSection>
22
+ <div>Aucun audit externe spécifique à ce composant pour le moment.</div>
23
+ <div style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>
24
+ Testez via l’addon a11y et les tests axe dédiés.
25
+ </div>
26
+ </AuditSection>
11
27
 
12
- <br />
28
+ <CriteriaSection>
29
+ <CriteriaCard icon="🏷️" title="Structure et rôles">
30
+ <ul>
31
+ <li>Chaque filtre est un <code>button</code> ouvrant un menu (<code>VMenu</code>) avec <code>aria-haspopup="menu"</code> et <code>aria-expanded</code> géré par Vuetify.</li>
32
+ <li><code>aria-controls</code> est présent uniquement quand le menu est ouvert pour éviter des références manquantes.</li>
33
+ <li>Les listes de valeurs utilisent des composants champs (Select, SearchListField, PeriodField…) conservant leurs rôles natifs.</li>
34
+ <li>Les puces récapitulatives (<code>ChipList</code>) exposent un libellé (<code>aria-label</code>) et des actions de suppression.</li>
35
+ </ul>
36
+ </CriteriaCard>
37
+
38
+ <CriteriaCard icon="⌨️" title="Navigation clavier">
39
+ <ul>
40
+ <li>Activation des menus au clavier (Entrée/Espace) via <code>VMenu</code>.</li>
41
+ <li>Focus visible sur les boutons de filtres et sur les items des listes.</li>
42
+ <li>Échappe (Esc) pour fermer les menus.</li>
43
+ </ul>
44
+ </CriteriaCard>
45
+
46
+ <CriteriaCard icon="🎨" title="Contraste et lisibilité">
47
+ <ul>
48
+ <li>Boutons par défaut en thème secondaire avec contrastes conformes aux tokens.</li>
49
+ <li>Badges de comptage lisibles et annoncés via <code>aria-label</code> localisé.</li>
50
+ <li>Textes des puces issus des valeurs choisies ; évitez les libellés trop longs.</li>
51
+ </ul>
52
+ </CriteriaCard>
53
+ </CriteriaSection>
54
+
55
+ <DemoSection componentName="FilterInline">
56
+ <Story of={Stories.Default} />
57
+ </DemoSection>
58
+
59
+ <BestPracticesSection>
60
+ <ul>
61
+ <li>Préférez des titres de filtres courts et explicites ; complétez avec une aide textuelle dans le menu si nécessaire.</li>
62
+ <li>Évitez de masquer les focus visibles : laisser les styles par défaut ou renforcer le contour si nécessaire.</li>
63
+ <li>Pour les listes multiples, assurez-vous que chaque option a un libellé unique et compréhensible.</li>
64
+ <li>Ne forcez pas la fermeture automatique du menu lors de la sélection multiple afin de laisser l’utilisateur compléter sa saisie.</li>
65
+ <li>Vérifiez l’ordre logique de tabulation quand vous combinez FilterInline et FilterSideBar sur une même page.</li>
66
+ </ul>
67
+ </BestPracticesSection>
68
+
69
+ <ResourcesSection>
70
+ <ul>
71
+ <li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/" target="_blank" rel="noopener noreferrer">WAI-ARIA Authoring Practices – Menu Button</a></li>
72
+ <li><a href="https://www.numerique.gouv.fr/publications/rgaa-accessibilite/" target="_blank" rel="noopener noreferrer">RGAA – critères 7.1 (attributs ARIA) et 10.8 (éléments masqués)</a></li>
73
+ </ul>
74
+ </ResourcesSection>
75
+ </AccessibilityGuideLayout>
@@ -9,9 +9,9 @@ exports[`FilterInline > renders correctly with an active filter 1`] = `
9
9
  sy-filters-inline
10
10
  ">
11
11
  <button
12
- aria-controls="v-menu-v-0"
13
12
  aria-expanded="false"
14
13
  aria-haspopup="menu"
14
+ aria-owns="v-menu-v-0"
15
15
  class="
16
16
  bg-secondary
17
17
  ma-2
@@ -90,9 +90,9 @@ exports[`FilterInline > renders correctly with multiple active filters 1`] = `
90
90
  sy-filters-inline
91
91
  ">
92
92
  <button
93
- aria-controls="v-menu-v-0"
94
93
  aria-expanded="false"
95
94
  aria-haspopup="menu"
95
+ aria-owns="v-menu-v-0"
96
96
  class="
97
97
  bg-secondary
98
98
  ma-2
@@ -160,9 +160,9 @@ exports[`FilterInline > renders correctly with multiple active filters 1`] = `
160
160
  </button>
161
161
  <!---->
162
162
  <button
163
- aria-controls="v-menu-v-2"
164
163
  aria-expanded="false"
165
164
  aria-haspopup="menu"
165
+ aria-owns="v-menu-v-2"
166
166
  class="
167
167
  bg-secondary
168
168
  ma-2
@@ -644,9 +644,6 @@ export const FilterCombination: Story = {
644
644
  `,
645
645
  }),
646
646
  parameters: {
647
- a11y: {
648
- disable: true,
649
- },
650
647
  sourceCode: [
651
648
  {
652
649
  name: 'Template',
@@ -115,10 +115,11 @@
115
115
  rail
116
116
  rail-width="395"
117
117
  disable-resize-watcher
118
- tabindex="0"
118
+ :tabindex="drawer ? 0 : -1"
119
119
  class="sy-filters-side-bar__content elevation-6 bg-white"
120
120
  role="dialog"
121
121
  :aria-hidden="drawer ? undefined : 'true'"
122
+ :inert="drawer ? undefined : 'true'"
122
123
  :aria-modal="props.modale"
123
124
  :aria-label="locales.modaleLabel"
124
125
  @keydown.escape.prevent="drawer = false"
@@ -1,15 +1,76 @@
1
- import { Meta, Story } from '@storybook/addon-docs';
2
- import * as Stories from '../FilterSideBar.stories.ts';
1
+ import { Meta, Story } from '@storybook/blocks';
2
+ import * as Stories from '../FilterSideBar.stories';
3
+ import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
3
4
  import '@/stories/styles/shared.css';
5
+ import {
6
+ AccessibilityGuideLayout,
7
+ CriteriaSection,
8
+ CriteriaCard,
9
+ DemoSection,
10
+ BestPracticesSection,
11
+ ResourcesSection,
12
+ AuditSection,
13
+ } from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
4
14
 
5
15
  <Meta of={Stories} />
6
16
 
7
- <div className="header">
8
- <h1>Accessibilité</h1>
9
- </div>
17
+ <AccessibilityGuideLayout
18
+ componentName="FilterSideBar"
19
+ iconSrc={AccessibilityIcon}
20
+ >
21
+ <AuditSection>
22
+ <div>Rapport d’audit manuel : <a href="/audits/FilterSideBar.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></div>
23
+ <div style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>
24
+ Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/913" target="_blank" style={{color:'#0C41BD'}}>issue #913</a>)
25
+ </div>
26
+ </AuditSection>
10
27
 
28
+ <CriteriaSection>
29
+ <CriteriaCard icon="🏷️" title="Structure et rôles">
30
+ <ul>
31
+ <li>Le bouton d’ouverture est un <code>button</code> avec badge de comptage et libellé localisé.</li>
32
+ <li>Le panneau est un <code>VNavigationDrawer</code> exposé en <code>role="dialog"</code> et <code>aria-modal</code> lorsque <code>modale</code> est activé.</li>
33
+ <li><code>aria-hidden</code>, <code>inert</code> et <code>tabindex=-1</code> appliqués lorsqu’il est fermé pour éviter le focus sur du contenu masqué.</li>
34
+ <li>Chaque groupe de filtres conserve le rôle natif des champs (Select, SearchListField, PeriodField…) et les puces (<code>ChipList</code>) exposent un libellé <code>aria-label</code> pour la liste.</li>
35
+ </ul>
36
+ </CriteriaCard>
11
37
 
12
- <div class="mt-2">
13
- <p>Rapport d’audit manuel : <a href="/audits/FilterSideBar.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
14
- <p style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/913" target="_blank" style={{color:'#0C41BD'}}>issue #913</a>)</p>
15
- </div>
38
+ <CriteriaCard icon="⌨️" title="Navigation clavier">
39
+ <ul>
40
+ <li>Ouverture/fermeture du panneau via Entrée/Espace sur le bouton ; focus renvoyé au bouton à la fermeture.</li>
41
+ <li>Échappe (Esc) pour fermer le panneau.</li>
42
+ <li>Si <code>modale</code> est vrai, le focus est verrouillé dans le panneau via <code>v-lock-focus</code>.</li>
43
+ <li>Focus visible maintenu sur les boutons d’action (Appliquer, Réinitialiser, Fermer).</li>
44
+ </ul>
45
+ </CriteriaCard>
46
+
47
+ <CriteriaCard icon="🎨" title="Contraste et lisibilité">
48
+ <ul>
49
+ <li>Bouton d’ouverture et actions en thème primaire/secondaire avec halo focus contrasté.</li>
50
+ <li>Badges de comptage colorés et annoncés via <code>locales.badgeLabel</code>.</li>
51
+ <li>Texte et champs héritent du thème (fond blanc, ombre) pour une lecture claire.</li>
52
+ </ul>
53
+ </CriteriaCard>
54
+ </CriteriaSection>
55
+
56
+ <DemoSection componentName="FilterSideBar">
57
+ <Story of={Stories.Default} />
58
+ </DemoSection>
59
+
60
+ <BestPracticesSection>
61
+ <ul>
62
+ <li>Fournissez des titres courts pour chaque filtre et un texte d’aide si nécessaire.</li>
63
+ <li>Activez <code>modale</code> quand le focus doit rester dans le panneau (dialogue bloquant).</li>
64
+ <li>Évitez de cacher le focus visible ; renforcez-le si votre thème réduit les contours.</li>
65
+ <li>Utilisez des libellés uniques pour les options (Select, listes) afin d’éviter les ambiguïtés.</li>
66
+ <li>Vérifiez l’ordre de tabulation si vous combinez FilterSideBar et FilterInline dans la même vue.</li>
67
+ </ul>
68
+ </BestPracticesSection>
69
+
70
+ <ResourcesSection>
71
+ <ul>
72
+ <li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/" target="_blank" rel="noopener noreferrer">WAI-ARIA Authoring Practices – Dialog (Modal)</a></li>
73
+ <li><a href="https://www.numerique.gouv.fr/publications/rgaa-accessibilite/" target="_blank" rel="noopener noreferrer">RGAA – critères 7.1 (attributs ARIA) et 10.8 (éléments masqués)</a></li>
74
+ </ul>
75
+ </ResourcesSection>
76
+ </AccessibilityGuideLayout>