@cnamts/synapse 1.0.21 → 1.0.23

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 (449) hide show
  1. package/dist/{DateFilter-uN8OURoP.js → DateFilter-Dc-gSGwk.js} +29 -24
  2. package/dist/{NumberFilter-sm1dQNQi.js → NumberFilter-vP38Wp6j.js} +1 -1
  3. package/dist/{PeriodFilter-Cklsxnh9.js → PeriodFilter-Ba1uYUnT.js} +1 -1
  4. package/dist/{SelectFilter-CWefj27Z.js → SelectFilter-BioGT6Nn.js} +1 -1
  5. package/dist/{TextFilter-Ddyj885L.js → TextFilter-B84dpnoq.js} +1 -1
  6. package/dist/components/Accordion/Accordion.d.ts +13 -2
  7. package/dist/components/Accordion/composables/useAccordionState.d.ts +2 -1
  8. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +7405 -5973
  9. package/dist/components/Amelipro/AmeliproBtn/AmeliproBtn.d.ts +1 -1
  10. package/dist/components/Amelipro/AmeliproCallback/AmeliproCallback.d.ts +1 -1
  11. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarousel.d.ts +10 -14
  12. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/AmeliproCarouselItem.d.ts +1 -1
  13. package/dist/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.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 +2413 -2029
  27. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +8885 -7323
  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 +8884 -7330
  31. package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +950 -838
  32. package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +1614 -1358
  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 +1108 -846
  42. package/dist/components/Customs/Selects/SyAutocomplete/locales.d.ts +5 -0
  43. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +514 -320
  44. package/dist/components/Customs/Selects/SySelect/locales.d.ts +1 -0
  45. package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +40 -38
  46. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +920 -800
  47. package/dist/components/Customs/SyForm/SyForm.d.ts +356 -348
  48. package/dist/components/Customs/SyPagination/SyPagination.d.ts +11 -1
  49. package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +906 -794
  50. package/dist/components/Customs/SyTextField/SyTextField.d.ts +1634 -1367
  51. package/dist/components/DataList/DataList.d.ts +1 -1
  52. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +3869 -3120
  53. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +1947 -1561
  54. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +831 -684
  55. package/dist/components/DialogBox/DialogBox.d.ts +482 -416
  56. package/dist/components/DownloadBtn/config.d.ts +1 -1
  57. package/dist/components/ErrorPage/ErrorPage.d.ts +6 -0
  58. package/dist/components/FileList/UploadItem/UploadItem.d.ts +6 -0
  59. package/dist/components/FileList/UploadItem/locales.d.ts +1 -0
  60. package/dist/components/FileUpload/FileUpload.d.ts +4 -4
  61. package/dist/components/FileUpload/FileUploadContent.d.ts +2 -0
  62. package/dist/components/FileUpload/locales.d.ts +1 -0
  63. package/dist/components/FileUpload/validateFiles.d.ts +2 -1
  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 +2 -0
  69. package/dist/components/HeaderBar/HeaderLogo/HeaderLogo.d.ts +2 -0
  70. package/dist/components/HeaderNavigationBar/HeaderNavigationBar.d.ts +4 -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/MonthPicker/MonthPicker.d.ts +1939 -0
  76. package/dist/components/MonthPicker/MonthPickerText/MonthPickerInput.d.ts +1899 -0
  77. package/dist/components/MonthPicker/MonthPickerText/useTextField.d.ts +21 -0
  78. package/dist/components/MonthPicker/MonthPickerVisual/MonthPickerVisual.d.ts +21 -0
  79. package/dist/components/MonthPicker/MonthPickerVisual/MonthPickerVisualProps.d.ts +12 -0
  80. package/dist/components/MonthPicker/MonthPickerVisual/MonthSelector.d.ts +11 -0
  81. package/dist/components/MonthPicker/MonthPickerVisual/VisualPickerFooter.d.ts +6 -0
  82. package/dist/components/MonthPicker/MonthPickerVisual/VisualPickerHeader.d.ts +14 -0
  83. package/dist/components/MonthPicker/MonthPickerVisual/YearSelector.d.ts +14 -0
  84. package/dist/components/MonthPicker/MonthPickerVisual/useMonthGrid.d.ts +9 -0
  85. package/dist/components/MonthPicker/MonthPickerVisual/useYearGrid.d.ts +8 -0
  86. package/dist/components/MonthPicker/MonthPickerVisual/utils.d.ts +8 -0
  87. package/dist/components/MonthPicker/locales.d.ts +12 -0
  88. package/dist/components/MonthPicker/useMonthPickerValidation.d.ts +25 -0
  89. package/dist/components/NirField/NirField.d.ts +1669 -1379
  90. package/dist/components/NotFoundPage/NotFoundPage.d.ts +9 -3
  91. package/dist/components/NotificationBar/Notification/Notification.d.ts +3 -0
  92. package/dist/components/PageContainer/PageContainer.d.ts +3 -1
  93. package/dist/components/PeriodField/PeriodField.d.ts +7696 -6192
  94. package/dist/components/PhoneField/PhoneField.d.ts +829 -684
  95. package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +4 -12
  96. package/dist/components/StatusPage/StatusPage.d.ts +12 -1
  97. package/dist/components/SubHeader/SubHeader.d.ts +2 -0
  98. package/dist/components/SyAlert/SyAlert.d.ts +74 -70
  99. package/dist/components/SyBtnMenu/SyBtnMenu.d.ts +9 -0
  100. package/dist/components/SyHeading/SyHeading.a11y.test.d.ts +1 -0
  101. package/dist/components/SyHeading/SyHeading.d.ts +22 -0
  102. package/dist/components/SyHeading/SyHeading.test.d.ts +1 -0
  103. package/dist/components/SyTextArea/SyTextArea.d.ts +475 -419
  104. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +759 -468
  105. package/dist/components/Tables/SyTable/SyTable.d.ts +761 -470
  106. package/dist/components/Tables/common/SyTableFilter.d.ts +1 -1
  107. package/dist/components/Tables/common/SyTablePagination.d.ts +263 -164
  108. package/dist/components/Tables/common/filters/DateFilter.d.ts +10 -1
  109. package/dist/components/Tables/common/filters/NumberFilter.d.ts +1 -1
  110. package/dist/components/Tables/common/filters/PeriodFilter.d.ts +1 -1
  111. package/dist/components/Tables/common/filters/SelectFilter.d.ts +1 -1
  112. package/dist/components/Tables/common/filters/TextFilter.d.ts +1 -1
  113. package/dist/components/Tables/common/organizeColumns/OrganizeColumns.d.ts +166 -138
  114. package/dist/components/Tables/common/types.d.ts +2 -0
  115. package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +24 -1211
  116. package/dist/components/UserMenuBtn/UserMenuBtn.d.ts +1 -0
  117. package/dist/components/index.d.ts +2 -0
  118. package/dist/components/types.d.ts +2 -0
  119. package/dist/design-system-v3.js +111 -107
  120. package/dist/design-system-v3.umd.cjs +158 -158
  121. package/dist/designTokens/tokens/amelipro/apLightTheme.d.ts +26 -14
  122. package/dist/designTokens/tokens/amelipro/apSemantic.d.ts +19 -13
  123. package/dist/designTokens/tokens/cnam/cnamContextual.d.ts +5 -0
  124. package/dist/designTokens/tokens/cnam/cnamLightTheme.d.ts +28 -15
  125. package/dist/designTokens/tokens/cnam/cnamSemantic.d.ts +20 -13
  126. package/dist/designTokens/tokens/pa/paLightTheme.d.ts +26 -15
  127. package/dist/designTokens/tokens/pa/paSemantic.d.ts +19 -13
  128. package/dist/main-aLKwdMi1.js +37886 -0
  129. package/dist/main.d.ts +1 -0
  130. package/dist/style.css +1 -1
  131. package/dist/vuetifyConfig.d.ts +14 -14
  132. package/package.json +21 -9
  133. package/src/assets/amelipro/img/logo-amelipro.svg +9 -0
  134. package/src/assets/apTokens.scss +53 -17
  135. package/src/assets/overrides/_btns.scss +8 -0
  136. package/src/assets/overrides/_forms.scss +9 -0
  137. package/src/assets/overrides/_icons.scss +43 -4
  138. package/src/assets/overrides/_tables.scss +19 -0
  139. package/src/assets/overrides/_tooltips.scss +5 -6
  140. package/src/assets/overrides/_typography.scss +17 -2
  141. package/src/assets/overrides/_utilities.scss +49 -3
  142. package/src/assets/tokens.scss +53 -17
  143. package/src/components/Accordion/Accordion.mdx +23 -9
  144. package/src/components/Accordion/Accordion.stories.ts +153 -3
  145. package/src/components/Accordion/Accordion.vue +7 -6
  146. package/src/components/Accordion/accessibilite/Accessibility.mdx +5 -4
  147. package/src/components/Accordion/composables/__tests__/useAccordionState.spec.ts +40 -12
  148. package/src/components/Accordion/composables/useAccordionState.ts +3 -4
  149. package/src/components/Accordion/tests/accordion.spec.ts +131 -19
  150. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.vue +2 -2
  151. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/__tests__/__snapshots__/AmeliproAccordionTemplate.spec.ts.snap +0 -2
  152. package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +2 -2
  153. package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/__snapshots__/AmeliproAccordionFrieze.spec.ts.snap +14 -56
  154. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +1 -1
  155. package/src/components/Amelipro/AmeliproAccordionList/__tests__/__snapshots__/AmeliproAccordionList.spec.ts.snap +15 -23
  156. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +1 -1
  157. package/src/components/Amelipro/AmeliproAccordionResultList/__tests__/__snapshots__/AmeliproAccordionResultList.spec.ts.snap +15 -3
  158. package/src/components/Amelipro/AmeliproCarousel/__tests__/__snapshots__/AmeliproCarousel.spec.ts.snap +0 -2
  159. package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +0 -98
  160. package/src/components/Amelipro/AmeliproContentLayout/AmeliproContentLayout.mdx +1 -1
  161. package/src/components/Amelipro/AmeliproContentLayout/AmeliproContentLayout.stories.ts +5 -16
  162. package/src/components/Amelipro/AmeliproCopyBtn/AmeliproCopyBtn.mdx +3 -1
  163. package/src/components/Amelipro/AmeliproCopyBtn/AmeliproCopyBtn.stories.ts +7 -0
  164. package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/AmeliproTooth.vue +0 -1
  165. package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/tests/__snapshots__/AmeliproTooth.spec.ts.snap +0 -1
  166. package/src/components/Amelipro/AmeliproDentalChart/tests/__snapshots__/AmeliproDentalChart.spec.ts.snap +0 -52
  167. package/src/components/Amelipro/AmeliproDialog/__tests__/__snapshots__/AmeliproDialog.spec.ts.snap +6 -0
  168. package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.mdx +3 -1
  169. package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.stories.ts +19 -0
  170. package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.vue +2 -2
  171. package/src/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.vue +3 -4
  172. package/src/components/Amelipro/AmeliproFirstLogin/__tests__/__snapshots__/AmeliproFirstLogin.spec.ts.snap +2 -13
  173. package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.mdx +3 -1
  174. package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.stories.ts +7 -0
  175. package/src/components/Amelipro/AmeliproMenu/__tests__/__snapshots__/AmeliproMenu.spec.ts.snap +8 -0
  176. package/src/components/Amelipro/AmeliproPagination/AmeliproPagination.mdx +3 -1
  177. package/src/components/Amelipro/AmeliproPagination/AmeliproPagination.stories.ts +8 -0
  178. package/src/components/Amelipro/AmeliproPatientLogged/__tests__/__snapshots__/AmeliproPatientLogged.spec.ts.snap +9 -2
  179. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/__tests__/__snapshots__/AmeliproPostalAddressCityRow.spec.ts.snap +28 -10
  180. package/src/components/Amelipro/AmeliproPostalAddressField/__tests__/__snapshots__/AmeliproPostalAddressField.spec.ts.snap +44 -8
  181. package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.vue +1 -1
  182. package/src/components/Amelipro/AmeliproResultList/__tests__/__snapshots__/AmeliproResultList.spec.ts.snap +15 -3
  183. package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +1 -1
  184. package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +0 -1
  185. package/src/components/Amelipro/AmeliproTooltips/__tests__/__snapshots__/AmeliproTooltips.spec.ts.snap +6 -0
  186. package/src/components/Amelipro/AmeliproUpload/__tests__/__snapshots__/AmeliproUpload.spec.ts.snap +2 -4
  187. package/src/components/Amelipro/StructureMenu/StructureList/__tests__/__snapshots__/StructureList.spec.ts.snap +0 -2
  188. package/src/components/Amelipro/UserMenu/__tests__/__snapshots__/UserMenu.spec.ts.snap +8 -0
  189. package/src/components/BackBtn/BackBtn.vue +1 -1
  190. package/src/components/BackBtn/accessibilite/Accessibility.mdx +62 -10
  191. package/src/components/BackToTopBtn/BackToTopBtn.stories.ts +9 -3
  192. package/src/components/BackToTopBtn/accessibilite/Accessibility.mdx +86 -6
  193. package/src/components/Captcha/tests/Captcha.spec.ts +0 -29
  194. package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +18 -108
  195. package/src/components/ChipList/ChipList.vue +4 -2
  196. package/src/components/CollapsibleList/CollapsibleList.stories.ts +8 -3
  197. package/src/components/CollapsibleList/CollapsibleList.vue +14 -6
  198. package/src/components/CollapsibleList/accessibilite/Accessibility.mdx +19 -6
  199. package/src/components/CollapsibleList/tests/CollapsibleList.a11y.spec.ts +1 -0
  200. package/src/components/CollapsibleList/tests/CollapsibleList.spec.ts +2 -0
  201. package/src/components/CookieBanner/CookieBanner.stories.ts +10 -0
  202. package/src/components/CookieBanner/CookieBanner.vue +15 -5
  203. package/src/components/CookieBanner/accessibilite/Accessibility.mdx +9 -0
  204. package/src/components/CookieBanner/tests/CookieBanner.spec.ts +10 -2
  205. package/src/components/CookieBanner/tests/__snapshots__/CookieBanner.spec.ts.snap +21 -15
  206. package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +17 -8
  207. package/src/components/CookiesSelection/CookiesInformation/tests/CookiesInformation.a11y.spec.ts +1 -0
  208. package/src/components/CookiesSelection/CookiesInformation/tests/CookiesInformation.spec.ts +5 -0
  209. package/src/components/CookiesSelection/CookiesSelection.vue +7 -2
  210. package/src/components/CookiesSelection/tests/CookiesSelection.a11y.spec.ts +1 -0
  211. package/src/components/CookiesSelection/tests/CookiesSelection.spec.ts +5 -0
  212. package/src/components/CookiesSelection/tests/__snapshots__/CookiesSelection.spec.ts.snap +21 -15
  213. package/src/components/CopyBtn/CopyBtn.vue +6 -4
  214. package/src/components/CopyBtn/accessibilite/Accessibility.mdx +82 -11
  215. package/src/components/CopyBtn/tests/__snapshots__/CopyBtn.spec.ts.snap +5 -1
  216. package/src/components/Customs/Selects/SelectBtnField/accessibilite/Accessibility.mdx +133 -10
  217. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.stories.ts +379 -93
  218. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.vue +144 -83
  219. package/src/components/Customs/Selects/SyAutocomplete/accessibilite/Accessibilite.stories.ts +40 -1
  220. package/src/components/Customs/Selects/SyAutocomplete/accessibilite/Accessibility.mdx +7 -1
  221. package/src/components/Customs/Selects/SyAutocomplete/locales.ts +5 -0
  222. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.a11y.spec.ts +96 -0
  223. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.spec.ts +234 -9
  224. package/src/components/Customs/Selects/SyAutocomplete/utils/ariaManager.ts +13 -3
  225. package/src/components/Customs/Selects/SyAutocomplete/utils/useSelectionLogic.ts +9 -10
  226. package/src/components/Customs/Selects/SyInputSelect/SyInputSelect.stories.ts +4 -10
  227. package/src/components/Customs/Selects/SySelect/SySelect.mdx +0 -1
  228. package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +10 -10
  229. package/src/components/Customs/Selects/SySelect/SySelect.vue +63 -3
  230. package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +1 -1
  231. package/src/components/Customs/Selects/SySelect/locales.ts +1 -0
  232. package/src/components/Customs/Selects/SySelect/tests/SySelect.a11y.spec.ts +1 -3
  233. package/src/components/Customs/Selects/SySelect/tests/SySelect.spec.ts +72 -0
  234. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +1 -1
  235. package/src/components/Customs/SyIcon/SyIcon.a11y.spec.ts +31 -2
  236. package/src/components/Customs/SyIcon/SyIcon.vue +9 -5
  237. package/src/components/Customs/SyIcon/tests/SyIcon.a11y.spec.ts +20 -0
  238. package/src/components/Customs/SyIconButton/SyIconButton.mdx +46 -0
  239. package/src/components/Customs/SyIconButton/SyIconButton.stories.ts +184 -0
  240. package/src/components/Customs/SyIconButton/SyIconButton.vue +38 -0
  241. package/src/components/Customs/SyIconButton/accessibilite/Accessibility.mdx +64 -0
  242. package/src/components/Customs/SyIconButton/tests/SyIconButton.a11y.spec.ts +87 -0
  243. package/src/components/Customs/SyIconButton/tests/SyIconButton.spec.ts +152 -0
  244. package/src/components/Customs/SyIconButton/tests/__snapshots__/SyIconButton.spec.ts.snap +61 -0
  245. package/src/components/Customs/SyPagination/SyPagination.stories.ts +14 -2
  246. package/src/components/Customs/SyPagination/SyPagination.vue +25 -10
  247. package/src/components/Customs/SyPagination/accessibilite/Accessibility.mdx +79 -8
  248. package/src/components/Customs/SyPagination/tests/SyPagination.a11y.spec.ts +53 -0
  249. package/src/components/Customs/SyPagination/tests/SyPagination.spec.ts +12 -0
  250. package/src/components/Customs/SyTextField/SyTextField.stories.ts +4 -0
  251. package/src/components/Customs/SyTextField/SyTextField.vue +59 -7
  252. package/src/components/Customs/SyTextField/accessibilite/Accessibility.mdx +67 -9
  253. package/src/components/Customs/SyTextField/tests/SyTextField.a11y.spec.ts +15 -0
  254. package/src/components/Customs/SyTextField/tests/SyTextField.spec.ts +36 -0
  255. package/src/components/DataList/accessibilite/Accessibility.mdx +79 -11
  256. package/src/components/DataListGroup/accessibilite/Accessibility.mdx +80 -11
  257. package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +28 -3
  258. package/src/components/DatePicker/CalendarMode/DatePicker.vue +20 -8
  259. package/src/components/DatePicker/CalendarMode/tests/DatePicker.spec.ts +9 -3
  260. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +1 -1
  261. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +70 -47
  262. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.a11y.spec.ts +34 -0
  263. package/src/components/DatePicker/DateTextInput/tests/DateTextInput.a11y.spec.ts +27 -0
  264. package/src/components/DatePicker/docExamples/BidirectionalComplexValidation.vue +23 -9
  265. package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +21 -8
  266. package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +50 -22
  267. package/src/components/DatePicker/playground/ComplexDatePickerPlayground.vue +48 -10
  268. package/src/components/DatePicker/playground/DatePickerHolidayRule.vue +16 -3
  269. package/src/components/DialogBox/DialogBox.stories.ts +13 -0
  270. package/src/components/DialogBox/DialogBox.vue +12 -5
  271. package/src/components/DialogBox/accessibilite/Accessibility.mdx +27 -7
  272. package/src/components/DialogBox/tests/DialogBox.a11y.spec.ts +1 -0
  273. package/src/components/DialogBox/tests/DialogBox.spec.ts +40 -6
  274. package/src/components/DownloadBtn/accessibilite/Accessibility.mdx +73 -11
  275. package/src/components/DownloadBtn/config.ts +1 -1
  276. package/src/components/DownloadBtn/tests/DownloadBtn.a11y.spec.ts +25 -0
  277. package/src/components/ErrorPage/ErrorPage.stories.ts +176 -47
  278. package/src/components/ErrorPage/ErrorPage.vue +21 -0
  279. package/src/components/ErrorPage/accessibilite/Accessibility.mdx +15 -0
  280. package/src/components/ErrorPage/tests/ErrorPage.a11y.spec.ts +17 -0
  281. package/src/components/ErrorPage/tests/ErrorPage.spec.ts +21 -1
  282. package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +1 -0
  283. package/src/components/ExternalLinks/tests/ExternalLinks.a11y.spec.ts +23 -0
  284. package/src/components/ExternalLinks/tests/__snapshots__/ExternalLinks.spec.ts.snap +13 -2
  285. package/src/components/FileList/FileList.stories.ts +55 -1
  286. package/src/components/FileList/UploadItem/UploadItem.vue +17 -5
  287. package/src/components/FileList/UploadItem/locales.ts +3 -2
  288. package/src/components/FileList/accessibilite/Accessibility.mdx +58 -7
  289. package/src/components/FileUpload/FileUpload.vue +62 -38
  290. package/src/components/FileUpload/FileUploadContent.vue +3 -2
  291. package/src/components/FileUpload/accessibilite/Accessibility.mdx +48 -5
  292. package/src/components/FileUpload/locales.ts +1 -0
  293. package/src/components/FileUpload/tests/FileUpload.spec.ts +61 -14
  294. package/src/components/FileUpload/validateFiles.ts +5 -2
  295. package/src/components/FilterInline/FilterInline.stories.ts +0 -15
  296. package/src/components/FilterInline/FilterInline.vue +1 -0
  297. package/src/components/FilterInline/accessibilite/Accessibility.mdx +70 -7
  298. package/src/components/FilterInline/tests/__snapshots__/FilterInline.spec.ts.snap +3 -3
  299. package/src/components/FilterSideBar/FilterSideBar.stories.ts +0 -3
  300. package/src/components/FilterSideBar/FilterSideBar.vue +2 -1
  301. package/src/components/FilterSideBar/accessibilite/Accessibility.mdx +70 -9
  302. package/src/components/FooterBar/FooterBar.stories.ts +298 -34
  303. package/src/components/FooterBar/FooterBar.vue +67 -9
  304. package/src/components/FooterBar/config.ts +2 -2
  305. package/src/components/FooterBar/locales.ts +1 -0
  306. package/src/components/FooterBar/tests/FooterBarConfig.spec.ts +1 -1
  307. package/src/components/FooterBar/tests/__snapshots__/FooterBar.spec.ts.snap +6 -25
  308. package/src/components/FooterBar/types.d.ts +1 -0
  309. package/src/components/FranceConnectBtn/accessibilite/Accessibility.mdx +62 -9
  310. package/src/components/HeaderBar/HeaderBar.stories.ts +23 -1
  311. package/src/components/HeaderBar/HeaderBar.vue +5 -0
  312. package/src/components/HeaderBar/HeaderLogo/HeaderLogo.vue +8 -2
  313. package/src/components/HeaderBar/HeaderLogo/tests/HeaderLogo.spec.ts +5 -0
  314. package/src/components/HeaderBar/accessibilite/Accessibility.mdx +24 -5
  315. package/src/components/HeaderBar/tests/HeaderBar.a11y.spec.ts +1 -0
  316. package/src/components/HeaderBar/tests/HeaderBar.spec.ts +3 -0
  317. package/src/components/HeaderNavigationBar/HeaderNavigationBar.stories.ts +4 -0
  318. package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +3 -0
  319. package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.spec.ts +3 -0
  320. package/src/components/LogoBrandSection/LogoBrandSection.stories.ts +22 -0
  321. package/src/components/LogoBrandSection/LogoBrandSection.vue +13 -5
  322. package/src/components/LogoBrandSection/tests/LogoBrandSection.a11y.spec.ts +2 -0
  323. package/src/components/LogoBrandSection/tests/LogoBrandSection.spec.ts +44 -0
  324. package/src/components/LogoBrandSection/tests/__snapshots__/LogoBrandSection.spec.ts.snap +2 -0
  325. package/src/components/LunarCalendar/accessibilite/Accessibility.mdx +74 -8
  326. package/src/components/LunarCalendar/tests/LunarCalendar.a11y.spec.ts +163 -0
  327. package/src/components/MaintenancePage/MaintenancePage.vue +33 -6
  328. package/src/components/MaintenancePage/accessibilite/Accessibility.mdx +3 -1
  329. package/src/components/MaintenancePage/tests/MaintenancePage.a11y.spec.ts +3 -2
  330. package/src/components/MaintenancePage/tests/MaintenancePage.spec.ts +18 -1
  331. package/src/components/MaintenancePage/tests/__snapshots__/MaintenancePage.spec.ts.snap +1 -0
  332. package/src/components/MonthPicker/MonthPicker.mdx +35 -0
  333. package/src/components/MonthPicker/MonthPicker.stories.ts +527 -0
  334. package/src/components/MonthPicker/MonthPicker.vue +79 -0
  335. package/src/components/MonthPicker/MonthPickerText/MonthPickerInput.vue +89 -0
  336. package/src/components/MonthPicker/MonthPickerText/useTextField.ts +27 -0
  337. package/src/components/MonthPicker/MonthPickerVisual/MonthPickerVisual.vue +154 -0
  338. package/src/components/MonthPicker/MonthPickerVisual/MonthPickerVisualProps.ts +13 -0
  339. package/src/components/MonthPicker/MonthPickerVisual/MonthSelector.vue +137 -0
  340. package/src/components/MonthPicker/MonthPickerVisual/VisualPickerFooter.vue +60 -0
  341. package/src/components/MonthPicker/MonthPickerVisual/VisualPickerHeader.vue +149 -0
  342. package/src/components/MonthPicker/MonthPickerVisual/YearSelector.vue +143 -0
  343. package/src/components/MonthPicker/MonthPickerVisual/useMonthGrid.ts +45 -0
  344. package/src/components/MonthPicker/MonthPickerVisual/useYearGrid.ts +45 -0
  345. package/src/components/MonthPicker/MonthPickerVisual/utils.ts +17 -0
  346. package/src/components/MonthPicker/accessibilite/Accessibility.mdx +59 -0
  347. package/src/components/MonthPicker/locales.ts +12 -0
  348. package/src/components/MonthPicker/tests/MonthPicker.a11y.spec.ts +71 -0
  349. package/src/components/MonthPicker/tests/MonthPicker.spec.ts +1248 -0
  350. package/src/components/MonthPicker/tests/__snapshots__/MonthPicker.spec.ts.snap +2545 -0
  351. package/src/components/MonthPicker/useMonthPickerValidation.ts +30 -0
  352. package/src/components/NirField/NirField.mdx +1 -2
  353. package/src/components/NirField/NirField.stories.ts +66 -6
  354. package/src/components/NotFoundPage/NotFoundPage.stories.ts +1 -1
  355. package/src/components/NotFoundPage/NotFoundPage.vue +16 -5
  356. package/src/components/NotFoundPage/accessibilite/Accessibility.mdx +2 -0
  357. package/src/components/NotFoundPage/tests/NotFoundPage.a11y.spec.ts +49 -0
  358. package/src/components/NotFoundPage/tests/NotFoundPage.spec.ts +24 -2
  359. package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +24 -14
  360. package/src/components/NotificationBar/Notification/Notification.vue +3 -1
  361. package/src/components/NotificationBar/NotificationBar.stories.ts +154 -0
  362. package/src/components/NotificationBar/tests/NotificationBar.a11y.spec.ts +26 -0
  363. package/src/components/NotificationBar/tests/NotificationBar.spec.ts +60 -0
  364. package/src/components/PageContainer/PageContainer.stories.ts +47 -0
  365. package/src/components/PageContainer/PageContainer.vue +4 -2
  366. package/src/components/PageContainer/accessibilite/Accessibility.mdx +31 -17
  367. package/src/components/PaginatedTable/PaginatedTable.mdx +3 -3
  368. package/src/components/PaginatedTable/PaginatedTable.stories.ts +9 -1
  369. package/src/components/PeriodField/PeriodField.vue +4 -0
  370. package/src/components/PeriodField/tests/PeriodField.a11y.spec.ts +10 -1
  371. package/src/components/PhoneField/PhoneField.stories.ts +73 -35
  372. package/src/components/PhoneField/PhoneField.vue +152 -83
  373. package/src/components/PhoneField/accessibilite/Accessibility.mdx +306 -9
  374. package/src/components/PhoneField/indicatifs.ts +2 -2
  375. package/src/components/PhoneField/tests/PhoneField.a11y.spec.ts +47 -0
  376. package/src/components/PhoneField/tests/PhoneField.spec.ts +82 -5
  377. package/src/components/RangeField/accessibilite/Accessibility.mdx +79 -11
  378. package/src/components/SearchListField/SearchListField.vue +1 -1
  379. package/src/components/SearchListField/accessibilite/Accessibility.mdx +69 -9
  380. package/src/components/SearchListField/tests/SearchListField.a11y.spec.ts +37 -0
  381. package/src/components/SkipLink/tests/SkipLink.a11y.spec.ts +23 -0
  382. package/src/components/SocialMediaLinks/SocialMediaLinks.vue +1 -1
  383. package/src/components/StatusPage/StatusPage.mdx +10 -1
  384. package/src/components/StatusPage/StatusPage.stories.ts +161 -0
  385. package/src/components/StatusPage/StatusPage.vue +29 -5
  386. package/src/components/StatusPage/accessibilite/Accessibility.mdx +24 -5
  387. package/src/components/StatusPage/tests/StatusPage.a11y.spec.ts +23 -0
  388. package/src/components/StatusPage/tests/StatusPage.spec.ts +25 -0
  389. package/src/components/StatusPage/tests/__snapshots__/StatusPage.spec.ts.snap +24 -14
  390. package/src/components/SubHeader/SubHeader.stories.ts +16 -0
  391. package/src/components/SubHeader/SubHeader.vue +6 -3
  392. package/src/components/SubHeader/accessibilite/Accessibility.mdx +27 -6
  393. package/src/components/SubHeader/tests/SubHeader.a11y.spec.ts +20 -0
  394. package/src/components/SyAlert/SyAlert.vue +22 -20
  395. package/src/components/SyAlert/accessibilite/Accessibility.mdx +79 -9
  396. package/src/components/SyAlert/tests/SyAlert.a11y.spec.ts +23 -0
  397. package/src/components/SyBtnMenu/SyBtnMenu.vue +33 -17
  398. package/src/components/SyBtnMenu/tests/SyBtnMenu.a11y.spec.ts +38 -0
  399. package/src/components/SyBtnMenu/tests/SyBtnMenu.spec.ts +41 -0
  400. package/src/components/SyHeading/SyHeading.a11y.test.ts +149 -0
  401. package/src/components/SyHeading/SyHeading.test.ts +115 -0
  402. package/src/components/SyHeading/SyHeading.vue +20 -0
  403. package/src/components/SyTextArea/accessibilite/Accessibility.mdx +80 -8
  404. package/src/components/SyTextArea/tests/SyTextArea.a11y.spec.ts +151 -0
  405. package/src/components/TableToolbar/tests/__snapshots__/TableToolbar.spec.ts.snap +96 -30
  406. package/src/components/Tables/SyServerTable/SyServerTable.vue +2 -0
  407. package/src/components/Tables/SyTable/SyTable.vue +2 -0
  408. package/src/components/Tables/common/SyTablePagination.vue +16 -10
  409. package/src/components/Tables/common/filters/DateFilter.vue +5 -0
  410. package/src/components/Tables/common/tests/SyTablePagination.spec.ts +40 -24
  411. package/src/components/Tables/common/types.ts +3 -0
  412. package/src/components/ToolbarContainer/tests/ToolbarContainer.a11y.spec.ts +126 -0
  413. package/src/components/UploadWorkflow/UploadWorkflow.stories.ts +11 -11
  414. package/src/components/UploadWorkflow/UploadWorkflow.vue +30 -13
  415. package/src/components/UploadWorkflow/accessibilite/Accessibility.mdx +56 -5
  416. package/src/components/UploadWorkflow/accessibilite/UploadWorkflow.a11y.spec.ts +110 -0
  417. package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +7 -25
  418. package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +146 -123
  419. package/src/components/UserMenuBtn/UserMenuBtn.stories.ts +53 -31
  420. package/src/components/UserMenuBtn/UserMenuBtn.vue +4 -1
  421. package/src/components/UserMenuBtn/accessibilite/Accessibility.mdx +72 -8
  422. package/src/components/index.ts +2 -0
  423. package/src/components/types.ts +4 -0
  424. package/src/composables/date/tests/useDateInitialization.spec.ts +22 -1
  425. package/src/composables/date/useDateInitializationDayjs.ts +4 -7
  426. package/src/composables/date/useDatePickerAccessibility.ts +2 -3
  427. package/src/composables/useFilterable/useFilterable.spec.ts +52 -2
  428. package/src/composables/useFilterable/useFilterable.ts +7 -1
  429. package/src/composables/useFormFieldErrorHandling.ts +11 -2
  430. package/src/designTokens/tokens/amelipro/apLightTheme.ts +27 -15
  431. package/src/designTokens/tokens/amelipro/apSemantic.ts +21 -15
  432. package/src/designTokens/tokens/cnam/cnamContextual.ts +6 -1
  433. package/src/designTokens/tokens/cnam/cnamLightTheme.ts +28 -15
  434. package/src/designTokens/tokens/cnam/cnamSemantic.ts +21 -14
  435. package/src/designTokens/tokens/pa/paLightTheme.ts +27 -16
  436. package/src/designTokens/tokens/pa/paSemantic.ts +19 -13
  437. package/src/directives/rgaaSvgFix.ts +2 -7
  438. package/src/main.ts +2 -0
  439. package/src/stories/Accessibilite/{Audit → AuditEtContreAudit}/Exemptions-derogations.mdx +1 -1
  440. package/src/stories/Accessibilite/AuditEtContreAudit/Introduction.mdx +188 -0
  441. package/src/stories/Accessibilite/{Audit → AuditEtContreAudit}/RGAA.mdx +1 -1
  442. package/src/stories/Accessibilite/Introduction.mdx +22 -3
  443. package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +21 -22
  444. package/src/stories/DeprecationNotice/DeprecationNotice.ts +41 -0
  445. package/src/stories/DesignTokens/ColorDisplay.vue +12 -5
  446. package/src/stories/DesignTokens/Colors.mdx +8 -59
  447. package/src/stories/DesignTokens/colors.stories.ts +1862 -1071
  448. package/src/stories/EcoConception/EcoGuideComponent.vue +10 -4
  449. package/dist/main-CWniLr0s.js +0 -36919
@@ -6,6 +6,7 @@ describe('SyTablePagination.vue', () => {
6
6
  it('renders the component with default props', () => {
7
7
  const wrapper = mount(SyTablePagination, {
8
8
  props: {
9
+ headingLevel: 2,
9
10
  page: 1,
10
11
  itemsPerPage: 10,
11
12
  itemsLength: 100,
@@ -19,6 +20,7 @@ describe('SyTablePagination.vue', () => {
19
20
  it('displays pagination when there are multiple pages', () => {
20
21
  const wrapper = mount(SyTablePagination, {
21
22
  props: {
23
+ headingLevel: 2,
22
24
  page: 1,
23
25
  itemsPerPage: 10,
24
26
  itemsLength: 100,
@@ -31,6 +33,7 @@ describe('SyTablePagination.vue', () => {
31
33
  it('does not display pagination navigation when there is only one page', () => {
32
34
  const wrapper = mount(SyTablePagination, {
33
35
  props: {
36
+ headingLevel: 2,
34
37
  page: 1,
35
38
  itemsPerPage: 10,
36
39
  itemsLength: 5,
@@ -44,6 +47,7 @@ describe('SyTablePagination.vue', () => {
44
47
  it('always shows items per page selector even with only one page', () => {
45
48
  const wrapper = mount(SyTablePagination, {
46
49
  props: {
50
+ headingLevel: 2,
47
51
  page: 1,
48
52
  itemsPerPage: 10,
49
53
  itemsLength: 5,
@@ -59,6 +63,7 @@ describe('SyTablePagination.vue', () => {
59
63
  // Test with standard value
60
64
  const wrapper1 = mount(SyTablePagination, {
61
65
  props: {
66
+ headingLevel: 2,
62
67
  page: 1,
63
68
  itemsPerPage: 10, // Standard value
64
69
  itemsLength: 42,
@@ -66,16 +71,17 @@ describe('SyTablePagination.vue', () => {
66
71
  },
67
72
  })
68
73
 
69
- const vm1 = wrapper1.vm as unknown as { itemsPerPageOptions: Array<{ text: string, value: number }> }
70
- expect(vm1.itemsPerPageOptions).toBeDefined()
74
+ const vm1 = wrapper1.vm as unknown as { formatedItemsPerPageOptions: Array<{ text: string, value: number }> }
75
+ expect(vm1.formatedItemsPerPageOptions).toBeDefined()
71
76
 
72
- const options1 = vm1.itemsPerPageOptions
77
+ const options1 = vm1.formatedItemsPerPageOptions
73
78
  // Should have standard options 5, 10, 25, 50, 100) plus the 'All' option (-1)
74
79
  expect(options1.map(o => o.value).sort((a, b) => a - b)).toEqual([-1, 5, 10, 25, 50, 100])
75
80
 
76
81
  // Test with custom value
77
82
  const wrapper2 = mount(SyTablePagination, {
78
83
  props: {
84
+ headingLevel: 2,
79
85
  page: 1,
80
86
  itemsPerPage: 42, // Custom value
81
87
  itemsLength: 100,
@@ -83,8 +89,8 @@ describe('SyTablePagination.vue', () => {
83
89
  },
84
90
  })
85
91
 
86
- const vm2 = wrapper2.vm as unknown as { itemsPerPageOptions: Array<{ text: string, value: number }> }
87
- const options2 = vm2.itemsPerPageOptions
92
+ const vm2 = wrapper2.vm as unknown as { formatedItemsPerPageOptions: Array<{ text: string, value: number }> }
93
+ const options2 = vm2.formatedItemsPerPageOptions
88
94
 
89
95
  // Should include the custom value (42)
90
96
  const hasCustomValue = options2.some(option => option.value === 42)
@@ -97,6 +103,7 @@ describe('SyTablePagination.vue', () => {
97
103
  it('shows correct range when "All" is selected', async () => {
98
104
  const wrapper = mount(SyTablePagination, {
99
105
  props: {
106
+ headingLevel: 2,
100
107
  page: 1,
101
108
  itemsPerPage: -1, // "All" option
102
109
  itemsLength: 42,
@@ -111,6 +118,7 @@ describe('SyTablePagination.vue', () => {
111
118
  it('emits update:page event when SyPagination emits update:modelValue', async () => {
112
119
  const wrapper = mount(SyTablePagination, {
113
120
  props: {
121
+ headingLevel: 2,
114
122
  page: 1,
115
123
  itemsPerPage: 10,
116
124
  itemsLength: 100,
@@ -130,6 +138,7 @@ describe('SyTablePagination.vue', () => {
130
138
  it('has the correct structure for items per page selection', () => {
131
139
  const wrapper = mount(SyTablePagination, {
132
140
  props: {
141
+ headingLevel: 2,
133
142
  page: 1,
134
143
  itemsPerPage: 10,
135
144
  itemsLength: 100,
@@ -144,10 +153,11 @@ describe('SyTablePagination.vue', () => {
144
153
  })
145
154
 
146
155
  // Tests for itemsPerPageOptions functionality
147
- describe('itemsPerPageOptions', () => {
148
- it('should use default options when itemsPerPageOptions is not provided', () => {
156
+ describe('formatedItemsPerPageOptions', () => {
157
+ it('should use default options when formatedItemsPerPageOptions is not provided', () => {
149
158
  const wrapper = mount(SyTablePagination, {
150
159
  props: {
160
+ headingLevel: 2,
151
161
  page: 1,
152
162
  pageCount: 5,
153
163
  itemsPerPage: 10,
@@ -156,15 +166,16 @@ describe('SyTablePagination.vue', () => {
156
166
  })
157
167
 
158
168
  // Should have default options: 5, 10, 25, 50, 100, and "Tous" (-1)
159
- const vm = wrapper.vm as unknown as { itemsPerPageOptions: Array<{ text: string, value: number }> }
160
- const selectOptions = vm.itemsPerPageOptions
169
+ const vm = wrapper.vm as unknown as { formatedItemsPerPageOptions: Array<{ text: string, value: number }> }
170
+ const selectOptions = vm.formatedItemsPerPageOptions
161
171
  expect(selectOptions).toHaveLength(6)
162
172
  expect(selectOptions.map(opt => opt.value)).toEqual([5, 10, 25, 50, 100, -1])
163
173
  })
164
174
 
165
- it('should limit options when itemsPerPageOptions is provided', () => {
175
+ it('should limit options when formatedItemsPerPageOptions is provided', () => {
166
176
  const wrapper = mount(SyTablePagination, {
167
177
  props: {
178
+ headingLevel: 2,
168
179
  page: 1,
169
180
  pageCount: 5,
170
181
  itemsPerPage: 10,
@@ -174,16 +185,17 @@ describe('SyTablePagination.vue', () => {
174
185
  })
175
186
 
176
187
  // Should only have the limited options, no "Tous" option
177
- const vm = wrapper.vm as unknown as { itemsPerPageOptions: Array<{ text: string, value: number }> }
178
- const selectOptions = vm.itemsPerPageOptions
188
+ const vm = wrapper.vm as unknown as { formatedItemsPerPageOptions: Array<{ text: string, value: number }> }
189
+ const selectOptions = vm.formatedItemsPerPageOptions
179
190
  expect(selectOptions).toHaveLength(3)
180
191
  expect(selectOptions.map(opt => opt.value)).toEqual([5, 10, 25])
181
192
  expect(selectOptions.map(opt => opt.text)).toEqual(['5', '10', '25'])
182
193
  })
183
194
 
184
- it('should include "Tous" option when explicitly allowed in itemsPerPageOptions', () => {
195
+ it('should include "Tous" option when explicitly allowed in formatedItemsPerPageOptions', () => {
185
196
  const wrapper = mount(SyTablePagination, {
186
197
  props: {
198
+ headingLevel: 2,
187
199
  page: 1,
188
200
  pageCount: 5,
189
201
  itemsPerPage: 10,
@@ -193,8 +205,8 @@ describe('SyTablePagination.vue', () => {
193
205
  })
194
206
 
195
207
  // Should have the limited options plus "Tous"
196
- const vm = wrapper.vm as unknown as { itemsPerPageOptions: Array<{ text: string, value: number }> }
197
- const selectOptions = vm.itemsPerPageOptions
208
+ const vm = wrapper.vm as unknown as { formatedItemsPerPageOptions: Array<{ text: string, value: number }> }
209
+ const selectOptions = vm.formatedItemsPerPageOptions
198
210
  expect(selectOptions).toHaveLength(4)
199
211
  expect(selectOptions.map(opt => opt.value)).toEqual([5, 10, 25, -1])
200
212
 
@@ -207,6 +219,7 @@ describe('SyTablePagination.vue', () => {
207
219
  it('should add current itemsPerPage to options if not already included', () => {
208
220
  const wrapper = mount(SyTablePagination, {
209
221
  props: {
222
+ headingLevel: 2,
210
223
  page: 1,
211
224
  pageCount: 5,
212
225
  itemsPerPage: 15, // Not in the itemsPerPageOptions
@@ -216,8 +229,8 @@ describe('SyTablePagination.vue', () => {
216
229
  })
217
230
 
218
231
  // Should include the current itemsPerPage value and sort numerically
219
- const vm = wrapper.vm as unknown as { itemsPerPageOptions: Array<{ text: string, value: number }> }
220
- const selectOptions = vm.itemsPerPageOptions
232
+ const vm = wrapper.vm as unknown as { formatedItemsPerPageOptions: Array<{ text: string, value: number }> }
233
+ const selectOptions = vm.formatedItemsPerPageOptions
221
234
  expect(selectOptions).toHaveLength(4)
222
235
  expect(selectOptions.map(opt => opt.value)).toEqual([5, 10, 15, 25])
223
236
  })
@@ -225,6 +238,7 @@ describe('SyTablePagination.vue', () => {
225
238
  it('should not add current itemsPerPage if it is -1 (Tous)', () => {
226
239
  const wrapper = mount(SyTablePagination, {
227
240
  props: {
241
+ headingLevel: 2,
228
242
  page: 1,
229
243
  pageCount: 5,
230
244
  itemsPerPage: -1, // "Tous" option
@@ -233,9 +247,9 @@ describe('SyTablePagination.vue', () => {
233
247
  },
234
248
  })
235
249
 
236
- // Should not add -1 to the options since itemsPerPageOptions doesn't include it
237
- const vm = wrapper.vm as unknown as { itemsPerPageOptions: Array<{ text: string, value: number }> }
238
- const selectOptions = vm.itemsPerPageOptions
250
+ // Should not add -1 to the options since formatedItemsPerPageOptions doesn't include it
251
+ const vm = wrapper.vm as unknown as { formatedItemsPerPageOptions: Array<{ text: string, value: number }> }
252
+ const selectOptions = vm.formatedItemsPerPageOptions
239
253
  expect(selectOptions).toHaveLength(3)
240
254
  expect(selectOptions.map(opt => opt.value)).toEqual([5, 10, 25])
241
255
  expect(selectOptions.find(opt => opt.value === -1)).toBeUndefined()
@@ -244,6 +258,7 @@ describe('SyTablePagination.vue', () => {
244
258
  it('should work with very restrictive options', () => {
245
259
  const wrapper = mount(SyTablePagination, {
246
260
  props: {
261
+ headingLevel: 2,
247
262
  page: 1,
248
263
  pageCount: 5,
249
264
  itemsPerPage: 5,
@@ -253,8 +268,8 @@ describe('SyTablePagination.vue', () => {
253
268
  })
254
269
 
255
270
  // Should only have one option
256
- const vm = wrapper.vm as unknown as { itemsPerPageOptions: Array<{ text: string, value: number }> }
257
- const selectOptions = vm.itemsPerPageOptions
271
+ const vm = wrapper.vm as unknown as { formatedItemsPerPageOptions: Array<{ text: string, value: number }> }
272
+ const selectOptions = vm.formatedItemsPerPageOptions
258
273
  expect(selectOptions).toHaveLength(1)
259
274
  expect(selectOptions.map(opt => opt.value)).toEqual([5])
260
275
  expect(selectOptions.map(opt => opt.text)).toEqual(['5'])
@@ -263,6 +278,7 @@ describe('SyTablePagination.vue', () => {
263
278
  it('should handle empty itemsPerPageOptions array', () => {
264
279
  const wrapper = mount(SyTablePagination, {
265
280
  props: {
281
+ headingLevel: 2,
266
282
  page: 1,
267
283
  pageCount: 5,
268
284
  itemsPerPage: 10,
@@ -272,8 +288,8 @@ describe('SyTablePagination.vue', () => {
272
288
  })
273
289
 
274
290
  // Should only include the current itemsPerPage since base options are empty
275
- const vm = wrapper.vm as unknown as { itemsPerPageOptions: Array<{ text: string, value: number }> }
276
- const selectOptions = vm.itemsPerPageOptions
291
+ const vm = wrapper.vm as unknown as { formatedItemsPerPageOptions: Array<{ text: string, value: number }> }
292
+ const selectOptions = vm.formatedItemsPerPageOptions
277
293
  expect(selectOptions).toHaveLength(1)
278
294
  expect(selectOptions.map(opt => opt.value)).toEqual([10])
279
295
  })
@@ -98,6 +98,7 @@ export type SyTableProps = {
98
98
  multiSort?: boolean
99
99
  mustSort?: boolean
100
100
  itemsPerPageOptions?: number[]
101
+ headingLevel?: 1 | 2 | 3 | 4 | 5 | 6
101
102
  }
102
103
 
103
104
  export type SyServerTableProps = {
@@ -120,4 +121,6 @@ export type SyServerTableProps = {
120
121
  multiSort?: boolean
121
122
  mustSort?: boolean
122
123
  itemsPerPageOptions?: number[]
124
+ headingLevel?: 1 | 2 | 3 | 4 | 5 | 6
125
+
123
126
  }
@@ -0,0 +1,126 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { mount } from '@vue/test-utils'
3
+ import { axe } from 'vitest-axe'
4
+ import { assertNoA11yViolations } from '@tests/unit/accessibility/axeUtils'
5
+ import ToolbarContainer from '../ToolbarContainer.vue'
6
+
7
+ // Scénario d'accessibilité : barre d'outils avec des boutons de navigation
8
+ // Le composant doit avoir un rôle toolbar et gérer la navigation au clavier
9
+ describe('ToolbarContainer – accessibility (axe)', () => {
10
+ it('should not have any axe violations with default buttons', async () => {
11
+ const wrapper = mount(ToolbarContainer, {
12
+ slots: {
13
+ default: `
14
+ <VBtn>Action 1</VBtn>
15
+ <VBtn>Action 2</VBtn>
16
+ <VBtn>Action 3</VBtn>
17
+ `,
18
+ },
19
+ attachTo: document.body,
20
+ })
21
+
22
+ const results = await axe(wrapper.element)
23
+ assertNoA11yViolations(results, 'ToolbarContainer with default buttons')
24
+ })
25
+
26
+ it('should not have any axe violations with custom content', async () => {
27
+ const wrapper = mount(ToolbarContainer, {
28
+ slots: {
29
+ default: `
30
+ <div>
31
+ <VBtn icon="mdi-plus" aria-label="Ajouter"></VBtn>
32
+ <VBtn icon="mdi-minus" aria-label="Retirer"></VBtn>
33
+ <button aria-label="Action personnalisée">Custom Button</button>
34
+ </div>
35
+ `,
36
+ },
37
+ attachTo: document.body,
38
+ })
39
+
40
+ const results = await axe(wrapper.element)
41
+ assertNoA11yViolations(results, 'ToolbarContainer with custom content')
42
+ })
43
+
44
+ it('should not have any axe violations with disabled buttons', async () => {
45
+ const wrapper = mount(ToolbarContainer, {
46
+ slots: {
47
+ default: `
48
+ <VBtn>Action 1</VBtn>
49
+ <VBtn disabled>Action 2</VBtn>
50
+ <VBtn>Action 3</VBtn>
51
+ `,
52
+ },
53
+ attachTo: document.body,
54
+ })
55
+
56
+ const results = await axe(wrapper.element)
57
+ assertNoA11yViolations(results, 'ToolbarContainer with disabled buttons')
58
+ })
59
+
60
+ it('should not have any axe violations with links and buttons', async () => {
61
+ const wrapper = mount(ToolbarContainer, {
62
+ slots: {
63
+ default: `
64
+ <VBtn>Action Button</VBtn>
65
+ <a href="#home" aria-label="Accueil">Home Link</a>
66
+ <input type="text" placeholder="Rechercher" aria-label="Recherche" />
67
+ `,
68
+ },
69
+ attachTo: document.body,
70
+ })
71
+
72
+ const results = await axe(wrapper.element)
73
+ assertNoA11yViolations(results, 'ToolbarContainer with mixed focusable elements')
74
+ })
75
+
76
+ it('should have proper toolbar role and attributes', async () => {
77
+ const wrapper = mount(ToolbarContainer, {
78
+ slots: {
79
+ default: `
80
+ <VBtn>Action 1</VBtn>
81
+ <VBtn>Action 2</VBtn>
82
+ `,
83
+ },
84
+ attachTo: document.body,
85
+ })
86
+
87
+ const toolbar = wrapper.find('.sy-toolbar')
88
+
89
+ expect(toolbar.exists()).toBe(true)
90
+ expect(toolbar.attributes('role')).toBe('toolbar')
91
+ expect(toolbar.attributes('tabindex')).toBe('0')
92
+
93
+ const results = await axe(wrapper.element)
94
+ assertNoA11yViolations(results, 'ToolbarContainer role and attributes')
95
+ })
96
+
97
+ it('should handle keyboard navigation accessibility', async () => {
98
+ const wrapper = mount(ToolbarContainer, {
99
+ slots: {
100
+ default: `
101
+ <VBtn>Action 1</VBtn>
102
+ <VBtn>Action 2</VBtn>
103
+ <VBtn>Action 3</VBtn>
104
+ `,
105
+ },
106
+ attachTo: document.body,
107
+ })
108
+
109
+ const toolbar = wrapper.find('.sy-toolbar')
110
+ const buttons = wrapper.findAll('button.v-btn')
111
+
112
+ // Vérifier que les boutons ont le tabindex approprié
113
+ expect(buttons[0]?.attributes('tabindex')).toBe('-1')
114
+ expect(buttons[1]?.attributes('tabindex')).toBe('-1')
115
+ expect(buttons[2]?.attributes('tabindex')).toBe('-1')
116
+
117
+ // Simuler le focus sur la toolbar
118
+ await toolbar.trigger('focus')
119
+
120
+ // Après le focus, le premier bouton devrait être focusable
121
+ expect(buttons[0]?.attributes('tabindex')).toBe('0')
122
+
123
+ const results = await axe(wrapper.element)
124
+ assertNoA11yViolations(results, 'ToolbarContainer keyboard navigation')
125
+ })
126
+ })
@@ -259,7 +259,7 @@ const meta: Meta<typeof UploadWorkflow> = {
259
259
  table: {
260
260
  category: 'slots',
261
261
  type: {
262
- summary: '{}',
262
+ summary: '{ id: string }',
263
263
  },
264
264
  },
265
265
  control: 'text',
@@ -386,7 +386,7 @@ export const OptionalDocument: Story = {
386
386
  const uploadList = [
387
387
  {
388
388
  id: '1',
389
- title: 'Carte d'identité',
389
+ title: 'Carte d\\'identité',
390
390
  },
391
391
  {
392
392
  id: '2',
@@ -395,7 +395,7 @@ export const OptionalDocument: Story = {
395
395
  },
396
396
  {
397
397
  id: '3',
398
- title: 'Relevé d'identité bancaire',
398
+ title: 'Relevé d\\'identité bancaire',
399
399
  optional: true,
400
400
  },
401
401
  ]
@@ -447,7 +447,7 @@ export const WithPreviewStep: Story = {
447
447
  const uploadList = [
448
448
  {
449
449
  id: 'ID',
450
- title: 'Carte d'identité',
450
+ title: 'Carte d\\'identité',
451
451
  },
452
452
  {
453
453
  id: 'Bill',
@@ -544,7 +544,7 @@ export const OneFile: Story = {
544
544
  const uploadList = [
545
545
  {
546
546
  id: 'ID',
547
- title: 'Carte d'identité',
547
+ title: 'Carte d\\'identité',
548
548
  },
549
549
  ]
550
550
 
@@ -661,7 +661,7 @@ export const Events: Story = {
661
661
  const uploadList = [
662
662
  {
663
663
  id: 'ID',
664
- title: 'Carte d'identité',
664
+ title: 'Carte d\\'identité',
665
665
  showPreviewBtn: true,
666
666
  },
667
667
  {
@@ -784,7 +784,7 @@ export const Slots: Story = {
784
784
  const uploadList = [
785
785
  {
786
786
  id: 'ID',
787
- title: 'Carte d'identité',
787
+ title: 'Carte d\\'identité',
788
788
  },
789
789
  {
790
790
  id: 'Bill',
@@ -849,7 +849,7 @@ export const Customization: Story = {
849
849
  const uploadList = [
850
850
  {
851
851
  id: '1',
852
- title: 'Carte d'identité',
852
+ title: 'Carte d\\'identité',
853
853
  },
854
854
  {
855
855
  id: '2',
@@ -931,7 +931,7 @@ export const ManuallySetFile: Story = {
931
931
  const files = ref([
932
932
  {
933
933
  id: '1',
934
- title: 'Carte d'identité',
934
+ title: 'Carte d\\'identité',
935
935
  state: 'success',
936
936
  fileName: 'carte_identite.jpg',
937
937
  optional: false,
@@ -952,7 +952,7 @@ export const ManuallySetFile: Story = {
952
952
  const uploadList = [
953
953
  {
954
954
  id: '1',
955
- title: 'Carte d'identité',
955
+ title: 'Carte d\\'identité',
956
956
  },
957
957
  {
958
958
  id: '2',
@@ -1021,7 +1021,7 @@ export const ManuallySetStates: Story = {
1021
1021
  const files = ref([
1022
1022
  {
1023
1023
  id: '1',
1024
- title: 'Carte d'identité',
1024
+ title: 'Carte d\\'identité',
1025
1025
  state: 'error',
1026
1026
  fileName: 'carte_identite.jpg',
1027
1027
  optional: false,
@@ -1,4 +1,5 @@
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'
@@ -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<
@@ -23,7 +25,7 @@
23
25
  sectionTitle?: string
24
26
  showFilePreview?: boolean
25
27
  infoText?: string
26
- headingLevel?: number
28
+ headingLevel?: 1 | 2 | 3 | 4 | 5 | 6
27
29
  locales?: typeof defaultLocales
28
30
  }
29
31
  >(),
@@ -42,6 +44,13 @@
42
44
  (e: 'update:modelValue', value: SelectedFile[]): void
43
45
  }>()
44
46
 
47
+ defineSlots<{
48
+ 'title'?: () => undefined
49
+ 'modal-title'?: (props: { id: string }) => undefined
50
+ 'modal-description'?: () => undefined
51
+ 'preview-description'?: () => undefined
52
+ }>()
53
+
45
54
  const selectedFiles = defineModel<SelectedFile[]>({
46
55
  type: Array,
47
56
  default: () => [],
@@ -137,13 +146,12 @@
137
146
  class="sy-upload-workflow white"
138
147
  >
139
148
  <slot name="title">
140
- <div
141
- :aria-level="props.headingLevel"
142
- role="heading"
143
- class="text-h6 mb-2"
149
+ <SyHeading
150
+ :level="props.headingLevel"
151
+ :class="headingLevel === 4 ? 'text-h6 mb-2' : 'mb-2'"
144
152
  >
145
153
  {{ title }}
146
- </div>
154
+ </SyHeading>
147
155
  </slot>
148
156
 
149
157
  <FileList
@@ -175,24 +183,32 @@
175
183
 
176
184
  <DialogBox
177
185
  v-model="showSelectDialog"
186
+ :heading-level="props.headingLevel"
178
187
  v-bind="options.dialog"
179
188
  @cancel="showSelectDialog = false"
180
189
  @confirm="dialogConfirm"
181
190
  >
182
- <template #title>
183
- <slot name="modal-title">
184
- {{ 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>
185
202
  </slot>
186
203
  </template>
187
204
  <slot name="modal-description" />
188
205
 
189
- <VForm
190
- v-if="true"
206
+ <div
191
207
  ref="form"
192
208
  v-bind="options.form"
193
209
  class="mb-2"
194
210
  >
195
- <VSelect
211
+ <SySelect
196
212
  v-model="selectedItem"
197
213
  v-bind="options.select"
198
214
  :items="selectItems"
@@ -201,7 +217,7 @@
201
217
  :rules="[isRequired]"
202
218
  color="primary"
203
219
  />
204
- </VForm>
220
+ </div>
205
221
 
206
222
  <FilePreview
207
223
  v-if="showFilePreview"
@@ -212,6 +228,7 @@
212
228
 
213
229
  <DialogBox
214
230
  v-model="showPreviewDialog"
231
+ :heading-level="props.headingLevel"
215
232
  v-bind="options.previewDialog"
216
233
  hide-actions
217
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>