@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,10 +1,11 @@
1
1
  <script setup lang="ts">
2
+ import SySelect from '@/components/Customs/Selects/SySelect/SySelect.vue'
2
3
  import useCustomizableOptions, {
3
4
  type CustomizableOptions,
4
5
  } from '@/composables/useCustomizableOptions'
5
6
  import { useWidthable, type Widthable } from '@/composables/widthable'
6
7
  import { isRequired } from '@/utils/rules/isRequired'
7
- import { computed, reactive, ref, toRef, watch } from 'vue'
8
+ import { computed, ref, toRef } from 'vue'
8
9
  import DialogBox from '../DialogBox/DialogBox.vue'
9
10
  import FileList from '../FileList/FileList.vue'
10
11
  import FilePreview from '../FilePreview/FilePreview.vue'
@@ -14,6 +15,7 @@
14
15
  import type { FileItem, SelectedFile, UploadItem } from './types'
15
16
  import useFileUploadJourney from './useFileUploadJourney'
16
17
  import useFileList from './useFileList'
18
+ import SyHeading from '../SyHeading/SyHeading.vue'
17
19
 
18
20
  const props = withDefaults(
19
21
  defineProps<
@@ -22,37 +24,42 @@
22
24
  uploadList: UploadItem[]
23
25
  sectionTitle?: string
24
26
  showFilePreview?: boolean
27
+ infoText?: string
28
+ headingLevel?: 1 | 2 | 3 | 4 | 5 | 6
25
29
  locales?: typeof defaultLocales
26
30
  }
27
31
  >(),
28
32
  {
29
33
  sectionTitle: undefined,
30
34
  showFilePreview: false,
35
+ infoText: '',
36
+ headingLevel: 4,
31
37
  locales: () => defaultLocales,
32
38
  },
33
39
  )
34
40
 
35
41
  const emits = defineEmits<{
36
42
  (e: 'error', value: string[]): void
43
+ (e: 'preview', value: FileItem): void
37
44
  (e: 'update:modelValue', value: SelectedFile[]): void
38
45
  }>()
39
46
 
47
+ defineSlots<{
48
+ 'title'?: () => undefined
49
+ 'modal-title'?: (props: { id: string }) => undefined
50
+ 'modal-description'?: () => undefined
51
+ 'preview-description'?: () => undefined
52
+ }>()
53
+
40
54
  const selectedFiles = defineModel<SelectedFile[]>({
41
55
  type: Array,
42
- default: reactive([]),
56
+ default: () => [],
43
57
  })
44
- watch(
45
- selectedFiles,
46
- (value) => {
47
- emits('update:modelValue', value)
48
- },
49
- { deep: true },
50
- )
51
58
 
52
59
  const { widthStyles } = useWidthable(props)
53
60
  const options = useCustomizableOptions(config, props)
54
61
 
55
- const fileUpload = ref<typeof FileUpload>()
62
+ const fileUpload = ref<InstanceType<typeof FileUpload>>()
56
63
  const { selectItems, selectedItem } = useFileUploadJourney(
57
64
  toRef(props, 'uploadList'),
58
65
  )
@@ -65,19 +72,21 @@
65
72
  = useFileList(selectedFiles, toRef(props, 'uploadList'))
66
73
 
67
74
  // handle FileList
68
- let inlineSelectedItemId: string | undefined = undefined
75
+ const inlineSelectedItemId = ref<string | undefined>(undefined)
69
76
  function uploadInline(item: FileItem) {
70
- inlineSelectedItemId = item.id
77
+ inlineSelectedItemId.value = item.id
71
78
 
72
- fileUpload.value!.fileInput!.click()
79
+ fileUpload.value?.openFileDialog()
73
80
  }
74
81
  function previewFile(file: FileItem & { file?: File }) {
82
+ emits('preview', file)
75
83
  showPreviewDialog.value = true
76
84
  fileToPreview.value = file.file
77
85
  }
78
86
 
79
87
  // handle FileUpload
80
88
  const uploadedFiles = ref<File[]>([])
89
+ const uploadedFile = computed(() => uploadedFiles.value[0])
81
90
 
82
91
  const showFileUpload = computed(
83
92
  () => (
@@ -88,10 +97,10 @@
88
97
 
89
98
  function fileSelected(files: File[]) {
90
99
  const fileId
91
- = inlineSelectedItemId ?? (props.uploadList.length === 1
100
+ = inlineSelectedItemId.value ?? (props.uploadList.length === 1
92
101
  ? props.uploadList[0]!.id
93
102
  : undefined)
94
- inlineSelectedItemId = undefined
103
+ inlineSelectedItemId.value = undefined
95
104
 
96
105
  if (props.showFilePreview || fileId === undefined) {
97
106
  showSelectDialog.value = true
@@ -105,22 +114,22 @@
105
114
 
106
115
  function uploadError(errors: string[]) {
107
116
  emits('error', errors)
108
- if (!inlineSelectedItemId) {
117
+ if (!inlineSelectedItemId.value) {
109
118
  return
110
119
  }
111
- setItemOnError(inlineSelectedItemId)
112
- inlineSelectedItemId = undefined
120
+ setItemOnError(inlineSelectedItemId.value)
121
+ inlineSelectedItemId.value = undefined
113
122
  }
114
123
 
115
124
  // handle DialogBox
116
125
  const showSelectDialog = ref(false)
117
126
 
118
127
  function dialogConfirm() {
119
- if (!selectedItem.value) {
128
+ if (!selectedItem.value || !uploadedFile.value) {
120
129
  return
121
130
  }
122
131
 
123
- addOrReplaceFile(uploadedFiles.value[0]!, selectedItem.value)
132
+ addOrReplaceFile(uploadedFile.value, selectedItem.value)
124
133
 
125
134
  showSelectDialog.value = false
126
135
  selectedItem.value = undefined
@@ -137,9 +146,12 @@
137
146
  class="sy-upload-workflow white"
138
147
  >
139
148
  <slot name="title">
140
- <h4 class="text-h6 mb-2">
149
+ <SyHeading
150
+ :level="props.headingLevel"
151
+ :class="headingLevel === 4 ? 'text-h6 mb-2' : 'mb-2'"
152
+ >
141
153
  {{ title }}
142
- </h4>
154
+ </SyHeading>
143
155
  </slot>
144
156
 
145
157
  <FileList
@@ -159,29 +171,44 @@
159
171
  v-model="uploadedFiles"
160
172
  @error="uploadError"
161
173
  @update:model-value="fileSelected"
162
- />
174
+ >
175
+ <template
176
+ v-if="props.infoText"
177
+ #info-text
178
+ >
179
+ {{ props.infoText }}
180
+ </template>
181
+ </FileUpload>
163
182
  </Transition>
164
183
 
165
184
  <DialogBox
166
185
  v-model="showSelectDialog"
186
+ :heading-level="props.headingLevel"
167
187
  v-bind="options.dialog"
168
188
  @cancel="showSelectDialog = false"
169
189
  @confirm="dialogConfirm"
170
190
  >
171
- <template #title>
172
- <slot name="modal-title">
173
- {{ locales.modalTitle }}
191
+ <template #title="titleSlotProps">
192
+ <slot
193
+ :id="titleSlotProps.id"
194
+ name="modal-title"
195
+ >
196
+ <div
197
+ :id="titleSlotProps.id"
198
+ class="text-h4 font-weight-medium"
199
+ >
200
+ {{ locales.modalTitle }}
201
+ </div>
174
202
  </slot>
175
203
  </template>
176
204
  <slot name="modal-description" />
177
205
 
178
- <VForm
179
- v-if="true"
206
+ <div
180
207
  ref="form"
181
208
  v-bind="options.form"
182
209
  class="mb-2"
183
210
  >
184
- <VSelect
211
+ <SySelect
185
212
  v-model="selectedItem"
186
213
  v-bind="options.select"
187
214
  :items="selectItems"
@@ -190,17 +217,18 @@
190
217
  :rules="[isRequired]"
191
218
  color="primary"
192
219
  />
193
- </VForm>
220
+ </div>
194
221
 
195
222
  <FilePreview
196
223
  v-if="showFilePreview"
197
224
  :options="options.filePreview"
198
- :file="uploadedFiles[0]"
225
+ :file="uploadedFile"
199
226
  />
200
227
  </DialogBox>
201
228
 
202
229
  <DialogBox
203
230
  v-model="showPreviewDialog"
231
+ :heading-level="props.headingLevel"
204
232
  v-bind="options.previewDialog"
205
233
  hide-actions
206
234
  >
@@ -1,12 +1,63 @@
1
1
  import { Meta, Story } from '@storybook/addon-docs';
2
2
  import * as Stories from '../UploadWorkflow.stories.ts';
3
3
  import '@/stories/styles/shared.css';
4
+ import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
5
+ import {
6
+ AccessibilityGuideLayout,
7
+ CriteriaSection,
8
+ CriteriaCard,
9
+ DemoSection,
10
+ BestPracticesSection,
11
+ ResourcesSection,
12
+ } from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
4
13
 
5
14
  <Meta of={Stories} />
15
+ <AccessibilityGuideLayout
16
+ componentName="UploadWorkflow"
17
+ iconSrc={AccessibilityIcon}
18
+ >
19
+ <CriteriaSection>
6
20
 
7
- <div className="header">
8
- <h1>Accessibilité</h1>
9
- <p>Cette page sera bientôt disponible</p>
10
- </div>
21
+ <CriteriaCard icon="🧩" title="Niveau de titre configurable via la prop headingLevel">
22
+ <ul>
23
+ <li>Le niveau du titre (h1 à h6) est défini grâce à la propriété <strong>headingLevel</strong> déclarée dans le composant. Si aucune valeur n’est fournie, le composant applique par défaut un titre de niveau h4, défini dans l’implémentation du composant.</li>
24
+ <code>&lt;UploadWorkflow
25
+ :heading-level="4" /&gt; </code>
26
+
27
+ <li><strong>Accessibilité</strong> : Permet que la hiérarchie entre les titres soit pertinente (critère 9.1.1 RGAA)</li>
28
+ </ul>
29
+ </CriteriaCard>
30
+ </CriteriaSection>
31
+ <CriteriaSection>
32
+ <CriteriaCard icon="🔍" title="Structure sémantique">
33
+ <ul>
34
+ <li><strong>Niveaux de titres personnalisables</strong> : Permet de choisir le niveau de titre de la zone de contenu.</li>
35
+ <li><strong>Dialog</strong> : Voir la page d'accessibilité des dialogues pour plus d'informations.</li>
36
+ <li><strong>Liste des fichiers</strong> : Utilisation des balises <code>ul</code> et <code>li</code> pour présenter les fichiers téléchargés.</li>
37
+ <li><strong>Actions</strong> : Utilisation des balises <code>button</code> et <code>role="button"</code> pour les actions disponibles.</li>
38
+ <li><strong>Champs de fichier</strong> : Utilisation de <code>input type="file"</code>, <code>label</code> et <code>accept</code> pour les champs de téléchargement de fichiers.</li>
39
+ </ul>
40
+ </CriteriaCard>
11
41
 
12
- <br />
42
+ <CriteriaCard icon="⌨️" title="Navigation clavier complète">
43
+ <ul>
44
+ <li><strong>Boutons d'actions</strong> : Utilisation des touches Espace et Entrée.</li>
45
+ <li><strong>Modal</strong> : Navigation complète au clavier dans les dialogues, y compris la gestion du focus et des raccourcis clavier pour fermer les modals.</li>
46
+ </ul>
47
+ </CriteriaCard>
48
+ </CriteriaSection>
49
+
50
+ <DemoSection componentName="UploadWorkflow">
51
+ <Story name="Default" />
52
+ </DemoSection>
53
+
54
+ <BestPracticesSection>
55
+ <ul>
56
+ <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>
57
+ <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>
58
+ <li><strong>Renseigner le bon niveau de titre</strong> : Choisir le niveau de titre approprié pour la zone de contenu afin de maintenir une structure sémantique claire.</li>
59
+ <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>
60
+ </ul>
61
+ </BestPracticesSection>
62
+
63
+ </AccessibilityGuideLayout>
@@ -0,0 +1,110 @@
1
+ // @vitest-environment jsdom
2
+
3
+ import { describe, it } from 'vitest'
4
+ import { mount } from '@vue/test-utils'
5
+ import { axe } from 'vitest-axe'
6
+ import { assertNoA11yViolations } from '@tests/unit/accessibility/axeUtils'
7
+ import UploadWorkflow from '@/components/UploadWorkflow/UploadWorkflow.vue'
8
+
9
+ // Scénario d’accessibilité : zone de dépôt de fichier simple, sans fichier sélectionné,
10
+ // avec les textes d’aide par défaut.
11
+
12
+ describe('UploadWorkflow – accessibility (axe)', () => {
13
+ it('has no obvious axe violations', async () => {
14
+ const wrapper = mount(UploadWorkflow, {
15
+ attachTo: document.body,
16
+ props: {
17
+ uploadList: [
18
+ {
19
+ id: '1',
20
+ title: 'Carte d\'identité',
21
+ },
22
+ {
23
+ id: '2',
24
+ title: 'Facture de soin',
25
+ optional: true,
26
+ },
27
+ {
28
+ id: '3',
29
+ title: 'Relevé d\'identité bancaire',
30
+ optional: true,
31
+ },
32
+ ],
33
+ },
34
+ })
35
+
36
+ const results = await axe(wrapper.element as HTMLElement)
37
+ assertNoA11yViolations(results, 'UploadWorflow', {
38
+ ignoreRules: ['region'],
39
+ })
40
+ })
41
+
42
+ it('has no obvious axe violations in the modal of file selection', async () => {
43
+ const wrapper = mount(UploadWorkflow, {
44
+ attachTo: document.body,
45
+ props: {
46
+ uploadList: [
47
+ {
48
+ id: 'ID',
49
+ title: 'Carte d\'identité',
50
+ },
51
+ {
52
+ id: 'bill',
53
+ title: 'Facture de soin',
54
+ },
55
+ ],
56
+ },
57
+ })
58
+
59
+ const file: File = new File([''], 'uploadInField.pdf', {
60
+ type: 'application/pdf',
61
+ })
62
+
63
+ await wrapper.find('input').trigger('drop', {
64
+ dataTransfer: {
65
+ files: [file],
66
+ },
67
+ })
68
+
69
+ const results = await axe(document.body)
70
+ assertNoA11yViolations(results, 'UploadWorkflow - file selection modal', {
71
+ ignoreRules: ['region'],
72
+ })
73
+ })
74
+
75
+ it('has no obvious axe violations in the modal of file preview', async () => {
76
+ const wrapper = mount(UploadWorkflow, {
77
+ attachTo: document.body,
78
+ props: {
79
+ uploadList: [
80
+ {
81
+ id: 'ID',
82
+ title: 'Carte d\'identité',
83
+ showPreviewBtn: true,
84
+ },
85
+ {
86
+ id: 'bill',
87
+ title: 'Facture de soin',
88
+ },
89
+ ],
90
+ modelValue: [
91
+ {
92
+ fileName: 'file1.pdf',
93
+ file: new File([''], 'file1.pdf', {
94
+ type: 'application/pdf',
95
+ }),
96
+ id: 'ID',
97
+ title: 'Carte d\'identité',
98
+ },
99
+ ],
100
+ },
101
+ })
102
+
103
+ await wrapper.find('.file-item button').trigger('click')
104
+
105
+ const results = await axe(document.body)
106
+ assertNoA11yViolations(results, 'UploadWorkflow - file preview modal', {
107
+ ignoreRules: ['region'],
108
+ })
109
+ })
110
+ })
@@ -1,11 +1,12 @@
1
1
  import { describe, it, expect, vi } from 'vitest'
2
2
  import { mount } from '@vue/test-utils'
3
+ import { nextTick } from 'vue'
3
4
 
4
5
  import UploadWorkflow from '../UploadWorkflow.vue'
5
6
  import { locales as fileListLocales } from '@/components/FileList/UploadItem/locales'
6
7
  import { locales as FileUploadLocales } from '@/components/FileUpload/locales'
7
8
  import { afterEach } from 'node:test'
8
- import { VSelect } from 'vuetify/components'
9
+ import { SySelect } from '@/components'
9
10
 
10
11
  describe('UploadWorkflow', () => {
11
12
  afterEach(() => {
@@ -56,7 +57,7 @@ describe('UploadWorkflow', () => {
56
57
  type: 'application/pdf',
57
58
  })
58
59
 
59
- await wrapper.find('input').trigger('drop', {
60
+ await wrapper.find('.sy-file-upload').trigger('drop', {
60
61
  dataTransfer: {
61
62
  files: [file],
62
63
  },
@@ -136,14 +137,14 @@ describe('UploadWorkflow', () => {
136
137
  type: 'application/pdf',
137
138
  })
138
139
 
139
- await wrapper.find('input').trigger('drop', {
140
+ await wrapper.find('.sy-file-upload').trigger('drop', {
140
141
  dataTransfer: {
141
142
  files: [file],
142
143
  },
143
144
  })
144
145
 
145
- wrapper.find('.v-select input').setValue('bill')
146
- wrapper.findComponent(VSelect).vm.$emit('update:modelValue', 'bill')
146
+ wrapper.find('.sy-select input').setValue('bill')
147
+ wrapper.findComponent(SySelect).vm.$emit('update:modelValue', 'bill')
147
148
 
148
149
  await wrapper.find('[data-test-id="confirm-btn"]').trigger('click')
149
150
 
@@ -185,7 +186,7 @@ describe('UploadWorkflow', () => {
185
186
  type: 'application/pdf',
186
187
  })
187
188
 
188
- await wrapper.find('input').trigger('drop', {
189
+ await wrapper.find('.sy-file-upload').trigger('drop', {
189
190
  dataTransfer: {
190
191
  files: [file],
191
192
  },
@@ -229,7 +230,7 @@ describe('UploadWorkflow', () => {
229
230
 
230
231
  await wrapper.find('.file-item button').trigger('click')
231
232
 
232
- await wrapper.find('input').trigger('drop', {
233
+ await wrapper.find('.sy-file-upload').trigger('drop', {
233
234
  dataTransfer: {
234
235
  files: [image],
235
236
  },
@@ -237,6 +238,35 @@ describe('UploadWorkflow', () => {
237
238
 
238
239
  await wrapper.find('.file-item__action-preview').trigger('click')
239
240
 
241
+ expect(wrapper.emitted('preview')).toBeTruthy()
242
+ expect(wrapper.emitted('preview')?.[0]?.[0]).toMatchObject({
243
+ id: 'CERFA1',
244
+ title: 'CERFA 1',
245
+ showPreviewBtn: true,
246
+ })
247
+
240
248
  expect(wrapper.find('.sy-file-preview img').exists()).toBeTruthy()
241
249
  })
250
+
251
+ it('render custom infoText in FileUpload info-text slot', async () => {
252
+ const wrapper = mount(UploadWorkflow, {
253
+ props: {
254
+ modelValue: [],
255
+ uploadList: [
256
+ {
257
+ id: 'ID',
258
+ title: 'Carte d\'identité',
259
+ },
260
+ ],
261
+ infoText: 'Texte personnalisé',
262
+ },
263
+ })
264
+
265
+ await nextTick()
266
+
267
+ const fileUpload = wrapper.find('.sy-file-upload')
268
+ expect(fileUpload.exists()).toBe(true)
269
+
270
+ expect(fileUpload.text()).toContain('Texte personnalisé')
271
+ })
242
272
  })