@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
@@ -90,6 +90,8 @@
90
90
  disableClickButton?: boolean
91
91
  autocomplete?: string
92
92
  helpText?: string
93
+ maxlength?: string | number
94
+ title?: string | false
93
95
  }>(),
94
96
  {
95
97
  modelValue: undefined,
@@ -159,6 +161,8 @@
159
161
  disableClickButton: true,
160
162
  autocomplete: 'off',
161
163
  helpText: '',
164
+ maxlength: undefined,
165
+ title: undefined,
162
166
  },
163
167
  )
164
168
 
@@ -173,6 +177,8 @@
173
177
 
174
178
  const emit = defineEmits([
175
179
  'update:modelValue',
180
+ 'input',
181
+ 'keydown',
176
182
  'clear',
177
183
  'prepend-icon-click',
178
184
  'append-icon-click',
@@ -197,6 +203,11 @@
197
203
  Object.entries(attrs).filter(([key]) => key !== 'display-asterisk'),
198
204
  ) as Record<string, unknown>
199
205
 
206
+ // aria-controls coming from menu activators is invalid on the input itself; drop it
207
+ if ('aria-controls' in filteredAttrs) {
208
+ delete filteredAttrs['aria-controls']
209
+ }
210
+
200
211
  if (!('validate-on' in filteredAttrs) && 'rules' in filteredAttrs && props.isValidateOnBlur) {
201
212
  filteredAttrs['validate-on'] = 'blur lazy'
202
213
  }
@@ -300,7 +311,11 @@
300
311
  }
301
312
  })
302
313
 
303
- const hasError = computed(() => validation.hasError.value || props.hasError)
314
+ const hasError = computed(() =>
315
+ validation.hasError.value
316
+ || (props.errorMessages?.length ?? 0) > 0
317
+ || props.hasError,
318
+ )
304
319
  const hasWarning = computed(() => validation.hasWarning.value || props.hasWarning)
305
320
  const hasSuccess = computed(() => ((validation.hasSuccess.value && !hasError.value && !hasWarning.value) || props.hasSuccess) && props.showSuccessMessages)
306
321
 
@@ -355,7 +370,13 @@
355
370
  return props.helpText && hasMessages.value && !props.areDetailsHidden
356
371
  })
357
372
 
358
- // Accessible label that includes prefix and suffix content for screen readers
373
+ // Use title prop if provided, otherwise fall back to accessible label
374
+ const titleValue = computed(() => {
375
+ // If title is explicitly false, don't show any title
376
+ if (props.title === false) return undefined
377
+ // Otherwise use title if provided, or accessibleLabel as fallback
378
+ return props.title || accessibleLabel.value
379
+ })
359
380
  const accessibleLabel = computed(() => {
360
381
  let label = labelWithAsterisk.value
361
382
 
@@ -449,7 +470,12 @@
449
470
  const describedbyIds = existingIds.join(' ').trim()
450
471
 
451
472
  // Associate input with messages via aria-describedby (preserve existing IDs)
452
- inputElement.setAttribute('aria-describedby', describedbyIds)
473
+ if (describedbyIds) {
474
+ inputElement.setAttribute('aria-describedby', describedbyIds)
475
+ }
476
+ else {
477
+ inputElement.removeAttribute('aria-describedby')
478
+ }
453
479
 
454
480
  // Remove problematic ARIA attributes from details container (parent)
455
481
  if (detailsContainer) {
@@ -517,7 +543,12 @@
517
543
  const describedbyIds = existingIds.join(' ').trim()
518
544
 
519
545
  // Associate input with messages via aria-describedby (preserve existing IDs)
520
- inputElement.setAttribute('aria-describedby', describedbyIds)
546
+ if (describedbyIds) {
547
+ inputElement.setAttribute('aria-describedby', describedbyIds)
548
+ }
549
+ else {
550
+ inputElement.removeAttribute('aria-describedby')
551
+ }
521
552
 
522
553
  // Remove problematic ARIA attributes from details container (parent)
523
554
  if (detailsContainer) {
@@ -579,7 +610,7 @@
579
610
  v-model="model"
580
611
  :autocomplete="props.autocomplete"
581
612
  :active="props.isActive"
582
- :title="accessibleLabel"
613
+ :title="titleValue"
583
614
  :aria-label="accessibleLabel"
584
615
  :aria-required="props.required ? 'true' : undefined"
585
616
  :base-color="props.baseColor"
@@ -600,6 +631,7 @@
600
631
  :hint="showHelpTextAsMessage ? props.helpText : props.hint"
601
632
  :label="labelWithAsterisk"
602
633
  :loading="props.loading"
634
+ :maxlength="props.maxlength"
603
635
  :max-errors="props.maxErrors"
604
636
  :max-width="props.maxWidth"
605
637
  :messages="hasError ? errors : (hasWarning ? warnings : (hasSuccess && props.showSuccessMessages ? successes : []))"
@@ -630,10 +662,12 @@
630
662
  'basic-field': !hasError && !hasWarning && !hasSuccess
631
663
  }"
632
664
  @blur="checkErrorOnBlur"
665
+ @input="(e: Event) => emit('input', e)"
666
+ @keydown="(e: KeyboardEvent) => emit('keydown', e)"
633
667
  >
634
668
  <!-- Prepend -->
635
669
  <template
636
- v-if="props.prependIcon || props.prependTooltip"
670
+ v-if="props.prependIcon || props.prependTooltip || $slots['prepend']"
637
671
  #prepend
638
672
  >
639
673
  <slot name="prepend">
@@ -672,7 +706,7 @@
672
706
 
673
707
  <!-- Append -->
674
708
  <template
675
- v-if="props.appendIcon || props.appendTooltip"
709
+ v-if="props.appendIcon || props.appendTooltip || $slots['append']"
676
710
  #append
677
711
  >
678
712
  <slot name="append">
@@ -709,6 +743,14 @@
709
743
  </slot>
710
744
  </template>
711
745
 
746
+ <!-- Default slot passthrough: renders inside v-field__input (flex-wrap container) -->
747
+ <template
748
+ v-if="$slots.default"
749
+ #default
750
+ >
751
+ <slot />
752
+ </template>
753
+
712
754
  <!-- Prepend inner -->
713
755
  <template #prepend-inner>
714
756
  <slot name="prepend-inner">
@@ -761,6 +803,16 @@
761
803
  <template #details>
762
804
  <slot name="details" />
763
805
  </template>
806
+
807
+ <template #loader="{ color: loaderColor, isActive: loaderActive }">
808
+ <VProgressLinear
809
+ v-if="loaderActive"
810
+ indeterminate
811
+ rounded
812
+ :color="loaderColor"
813
+ :aria-label="props.label ? `Chargement de ${props.label}` : 'Chargement en cours'"
814
+ />
815
+ </template>
764
816
  </VTextField>
765
817
 
766
818
  <div
@@ -1,15 +1,73 @@
1
- import { Meta, Story } from '@storybook/addon-docs';
1
+ import { Meta, Primary } from '@storybook/blocks';
2
2
  import * as Stories from '../SyTextField.stories.ts';
3
- import '@/stories/styles/shared.css';
3
+ import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
4
+ import {
5
+ AccessibilityGuideLayout,
6
+ CriteriaSection,
7
+ CriteriaCard,
8
+ DemoSection,
9
+ BestPracticesSection,
10
+ ResourcesSection,
11
+ } from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
4
12
 
5
13
  <Meta of={Stories} />
6
14
 
7
- <div className="header">
8
- <h1>Accessibilité</h1>
9
- </div>
10
-
11
-
12
- <div class="mt-2">
13
- <p>Rapport d’audit manuel : <a href="/audits/SyTextField.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
15
+ <AccessibilityGuideLayout
16
+ componentName="SyTextField"
17
+ iconSrc={AccessibilityIcon}
18
+ apgHref="https://www.w3.org/WAI/ARIA/apg/patterns/textinput/"
19
+ >
20
+ <div class="mt-8">
21
+ <p>Rapport d’audit manuel : <a href="/audits/SyTextField.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
14
22
  <p style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/935" target="_blank" style={{color:'#0C41BD'}}>issue #935</a>), (<a href="https://github.com/assurance-maladie-digital/design-system/issues/4028" target="_blank" style={{color:'#0C41BD'}}>issue #4028</a>)</p>
15
23
  </div>
24
+
25
+ <CriteriaSection>
26
+ <CriteriaCard icon="🔍" title="Structure sémantique et attributs">
27
+ <ul>
28
+ <li><strong>Élément input natif</strong> : Utilisation de <code>&lt;input&gt;</code> via VTextField pour une sémantique correcte.</li>
29
+ <li><strong>Labels explicites</strong> : Gestion automatique du <code>aria-label</code> combinant label, préfixe et suffixe. L'attribut <code>aria-required</code> est ajouté si le champ est requis.</li>
30
+ <li><strong>Association avec les messages</strong> : Implémentation dynamique de <code>aria-describedby</code> pour lier le champ à ses messages d'erreur, d'avertissement ou de succès.</li>
31
+ <li><strong>Icônes décoratives</strong> : Les icônes de validation (erreur, avertissement, succès) sont masquées aux lecteurs d'écran (<code>role="presentation"</code>) pour éviter la redondance avec les messages textuels.</li>
32
+ </ul>
33
+ </CriteriaCard>
34
+
35
+ <CriteriaCard icon="⌨️" title="Navigation et interaction clavier">
36
+ <ul>
37
+ <li><strong>Focus natif</strong> : Le champ est naturellement focusable via <kbd>Tab</kbd>.</li>
38
+ <li><strong>Boutons accessibles</strong> : Les icônes interactives (prepend/append) sont des boutons focusables avec des labels descriptifs et gèrent les événements <kbd>Entrée</kbd> et <kbd>Espace</kbd>.</li>
39
+ <li><strong>Bouton de vidage</strong> : Le bouton "clear" possède un <code>aria-label</code> descriptif ("Vider [label]") et est accessible au clavier.</li>
40
+ <li><strong>Indicateur de focus</strong> : Styles de focus visibles sur le champ et les icônes interactives.</li>
41
+ </ul>
42
+ </CriteriaCard>
43
+
44
+ <CriteriaCard icon="🎨" title="Styles et états visuels">
45
+ <ul>
46
+ <li><strong>Contrastes garantis</strong> : Couleurs distinctes pour les états erreur (rouge), avertissement (orange) et succès (vert) respectant les critères WCAG.</li>
47
+ <li><strong>États cohérents</strong> : Changements visuels clairs entre les états normal, erreur, avertissement et succès.</li>
48
+ <li><strong>Astérisque optionnel</strong> : Possibilité d'afficher un astérisque visuel pour les champs requis via la prop <code>display-asterisk</code>.</li>
49
+ </ul>
50
+ </CriteriaCard>
51
+ </CriteriaSection>
52
+
53
+ <DemoSection componentName="SyTextField">
54
+ <Primary />
55
+ </DemoSection>
56
+
57
+ <BestPracticesSection>
58
+ <ul>
59
+ <li><strong>Labels descriptifs</strong> : Utilisez toujours un <code>label</code> clair et concis. Évitez les placeholders comme seuls indicateurs de champ.</li>
60
+ <li><strong>Messages d'erreur utiles</strong> : Fournissez des messages d'erreur spécifiques qui aident l'utilisateur à corriger sa saisie.</li>
61
+ <li><strong>Validation appropriée</strong> : Utilisez la validation au blur (<code>isValidateOnBlur</code>) pour ne pas surcharger l'utilisateur pendant la saisie.</li>
62
+ <li><strong>Évitez les changements de contexte automatiques</strong> : Ne soumettez pas automatiquement le formulaire ou ne changez pas de page lors de la saisie.</li>
63
+ <li><strong>Préfixes et suffixes accessibles</strong> : Le composant ajoute automatiquement des spans screen-reader-only pour le contenu textuel des préfixes/suffixes.</li>
64
+ </ul>
65
+ </BestPracticesSection>
66
+
67
+ <ResourcesSection>
68
+ <ul>
69
+ <li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/textinput/" target="_blank" rel="noopener noreferrer">Guide des pratiques WAI-ARIA : Champs de texte</a></li>
70
+ <li><a href="https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#11.9" target="_blank" rel="noopener noreferrer">RGAA : Champs de formulaire</a></li>
71
+ </ul>
72
+ </ResourcesSection>
73
+ </AccessibilityGuideLayout>
@@ -24,4 +24,19 @@ describe('SyTextField – accessibility (axe)', () => {
24
24
  ignoreRules: ['region'],
25
25
  })
26
26
  })
27
+
28
+ it('has no obvious axe violations when loading is true', async () => {
29
+ const wrapper = mount(SyTextField, {
30
+ props: {
31
+ label: 'Nom',
32
+ modelValue: '',
33
+ loading: true,
34
+ },
35
+ })
36
+
37
+ const results = await axe(wrapper.element as HTMLElement)
38
+ assertNoA11yViolations(results, 'SyTextField – loading state', {
39
+ ignoreRules: ['region'],
40
+ })
41
+ })
27
42
  })
@@ -209,6 +209,42 @@ describe('SyTextField', () => {
209
209
  expect(messages.text()).toContain('Attention : Test Field peut contenir une erreur')
210
210
  })
211
211
 
212
+ describe('loading', () => {
213
+ it('shows progress bar when loading is true', async () => {
214
+ wrapper = mount(SyTextField, {
215
+ props: { loading: true, label: 'Nom' },
216
+ })
217
+ await wrapper.vm.$nextTick()
218
+ expect(wrapper.find('.v-progress-linear').exists()).toBe(true)
219
+ })
220
+
221
+ it('does not show progress bar when loading is false', async () => {
222
+ wrapper = mount(SyTextField, {
223
+ props: { loading: false, label: 'Nom' },
224
+ })
225
+ await wrapper.vm.$nextTick()
226
+ expect(wrapper.find('.v-progress-linear').exists()).toBe(false)
227
+ })
228
+
229
+ it('sets aria-label with field label when loading', async () => {
230
+ wrapper = mount(SyTextField, {
231
+ props: { loading: true, label: 'Nom' },
232
+ })
233
+ await wrapper.vm.$nextTick()
234
+ const bar = wrapper.find('.v-progress-linear')
235
+ expect(bar.attributes('aria-label')).toBe('Chargement de Nom')
236
+ })
237
+
238
+ it('sets generic aria-label when no label and loading', async () => {
239
+ wrapper = mount(SyTextField, {
240
+ props: { loading: true },
241
+ })
242
+ await wrapper.vm.$nextTick()
243
+ const bar = wrapper.find('.v-progress-linear')
244
+ expect(bar.attributes('aria-label')).toBe('Chargement en cours')
245
+ })
246
+ })
247
+
212
248
  it('maintains input value without validation rules', async () => {
213
249
  wrapper = mount(SyTextField)
214
250
  const input = wrapper.find('input')
@@ -1,15 +1,83 @@
1
- import { Meta, Story } from '@storybook/addon-docs';
2
- import * as Stories from '../DataList.stories.ts';
3
- import '@/stories/styles/shared.css';
1
+ import { Meta, Primary } from '@storybook/blocks';
2
+ import * as DataListStories from '../DataList.stories.ts';
3
+ import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
4
+ import {
5
+ AccessibilityGuideLayout,
6
+ CriteriaSection,
7
+ CriteriaCard,
8
+ DemoSection,
9
+ BestPracticesSection,
10
+ ResourcesSection,
11
+ } from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
4
12
 
5
- <Meta of={Stories} />
13
+ <Meta of={DataListStories}/>
6
14
 
7
- <div className="header">
8
- <h1>Accessibilité</h1>
9
- </div>
15
+ <AccessibilityGuideLayout
16
+ componentName="DataList"
17
+ iconSrc={AccessibilityIcon}
18
+ apgHref="https://www.w3.org/WAI/ARIA/apg/patterns/listbox/"
19
+ >
20
+ <div class="mt-8">
21
+ <p>Rapport d'audit manuel : <a href="/audits/DataList.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
22
+ <p style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/4030" target="_blank" style={{color:'#0C41BD'}}>issue #4030</a>)</p>
23
+ </div>
10
24
 
25
+ <CriteriaSection>
26
+ <CriteriaCard icon="🔍" title="Structure sémantique des listes">
27
+ <ul>
28
+ <li><strong>Élément dl/dt/dd</strong> : Utilisation native des balises de liste de définitions pour une sémantique correcte</li>
29
+ <li><strong>Section avec titre</strong> : Conteneur <code>&lt;section&gt;</code> avec <code>aria-labelledby</code> lorsque <code>listTitle</code> est fourni</li>
30
+ <li><strong>Titre personnalisable</strong> : Tag de titre configurable (<code>titleTag</code>) avec ID unique pour l'association ARIA</li>
31
+ </ul>
32
+ </CriteriaCard>
11
33
 
12
- <div class="mt-2">
13
- <p>Rapport d’audit manuel : <a href="/audits/DataList.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
14
- <p style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/4030" target="_blank" style={{color:'#0C41BD'}}>issue #4030</a>)</p>
15
- </div>
34
+ <CriteriaCard icon="⌨️" title="Navigation et interaction">
35
+ <ul>
36
+ <li><strong>Boutons d'action</strong> : Utilisation de <code>VBtn</code> natif pour les actions avec focus clavier correct</li>
37
+ <li><strong>Focus visible</strong> : Style <code>:focus-visible::after</code> pour une indication claire de navigation</li>
38
+ <li><strong>Événements accessibles</strong> : Émission d'événements <code>click:item-action</code> pour les interactions</li>
39
+ </ul>
40
+ </CriteriaCard>
41
+
42
+ <CriteriaCard icon="🎨" title="Icônes et éléments visuels">
43
+ <ul>
44
+ <li><strong>Icônes décoratives</strong> : Icônes avec <code>decorative="true"</code> pour masquer aux lecteurs d'écran</li>
45
+ <li><strong>Contrastes adaptatifs</strong> : Couleurs de label adaptées au thème clair/sombre</li>
46
+ <li><strong>Chips accessibles</strong> : Utilisation de <code>VChip</code> pour les valeurs avec contraste approprié</li>
47
+ </ul>
48
+ </CriteriaCard>
49
+
50
+ <CriteriaCard icon="📱" title="Flexibilité et responsive">
51
+ <ul>
52
+ <li><strong>Layout adaptable</strong> : Mode <code>row</code> pour les affichages horizontaux avec flexbox</li>
53
+ <li><strong>Widthable</strong> : Gestion des dimensions via <code>useWidthable</code> pour le responsive</li>
54
+ <li><strong>Slots personnalisables</strong> : Slots <code>value</code>, <code>action</code>, <code>icon</code> pour une flexibilité maximale</li>
55
+ </ul>
56
+ </CriteriaCard>
57
+ </CriteriaSection>
58
+
59
+ <DemoSection componentName="DataList">
60
+ <Primary />
61
+ </DemoSection>
62
+
63
+ <BestPracticesSection>
64
+ <ul>
65
+ <li><strong>Titres descriptifs</strong> : Utilisez toujours <code>listTitle</code> pour fournir un contexte aux listes importantes</li>
66
+ <li><strong>Labels clairs</strong> : Assurez-vous que les <code>key</code> (labels) sont concis et descriptifs</li>
67
+ <li><strong>Actions explicites</strong> : Utilisez des verbes d'action clairs pour les boutons ("Modifier", "Supprimer", "Voir")</li>
68
+ <li><strong>Ordre logique</strong> : Maintenez un ordre cohérent des paires label/valeur dans toute l'application</li>
69
+ <li><strong>Slots sécurisés</strong> : Préférez le slot <code>value</code> à <code>renderHtmlValue</code> pour le contenu HTML</li>
70
+ <li><strong>États de chargement</strong> : Utilisez <code>loading</code> avec <code>DataListLoading</code> pour les données asynchrones</li>
71
+ </ul>
72
+ </BestPracticesSection>
73
+
74
+ <ResourcesSection>
75
+ <ul>
76
+ <li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/listbox/" target="_blank" rel="noopener noreferrer">Guide des pratiques WAI-ARIA : Listbox</a></li>
77
+ <li><a href="https://www.w3.org/WAI/WCAG21/quickref/" target="_blank" rel="noopener noreferrer">Référence rapide WCAG 2.1</a></li>
78
+ <li><a href="https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#11.10" target="_blank" rel="noopener noreferrer">RGAA Critère 11.10 : Listes de définitions</a></li>
79
+ <li><a href="https://developer.mozilla.org/fr/docs/Web/HTML/Element/dl" target="_blank" rel="noopener noreferrer">MDN : Élément dl - Liste de définitions</a></li>
80
+ </ul>
81
+ </ResourcesSection>
82
+
83
+ </AccessibilityGuideLayout>
@@ -1,14 +1,83 @@
1
- import { Meta, Story } from '@storybook/addon-docs';
2
- import * as Stories from '../DataListGroup.stories.ts';
3
- import '@/stories/styles/shared.css';
1
+ import { Meta, Primary } from '@storybook/blocks';
2
+ import * as DataListGroupStories from '../DataListGroup.stories.ts';
3
+ import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
4
+ import {
5
+ AccessibilityGuideLayout,
6
+ CriteriaSection,
7
+ CriteriaCard,
8
+ DemoSection,
9
+ BestPracticesSection,
10
+ ResourcesSection,
11
+ } from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
4
12
 
5
- <Meta of={Stories} />
13
+ <Meta of={DataListGroupStories}/>
6
14
 
7
- <div className="header">
8
- <h1>Accessibilité</h1>
9
- </div>
10
-
11
- <div class="mt-2">
12
- <p>Rapport d’audit manuel : <a href="/audits/DataListGroup.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
15
+ <AccessibilityGuideLayout
16
+ componentName="DataListGroup"
17
+ iconSrc={AccessibilityIcon}
18
+ apgHref="https://www.w3.org/WAI/ARIA/apg/patterns/listbox/"
19
+ >
20
+ <div class="mt-8">
21
+ <p>Rapport d'audit manuel : <a href="/audits/DataListGroup.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
13
22
  <p style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/651" target="_blank" style={{color:'#0C41BD'}}>issue #651</a>)</p>
14
- </div>
23
+ </div>
24
+
25
+ <CriteriaSection>
26
+ <CriteriaCard icon="🔍" title="Structure sémantique des groupes">
27
+ <ul>
28
+ <li><strong>Élément ul/li</strong> : Utilisation native de liste non ordonnée pour regrouper les DataList</li>
29
+ <li><strong>Composition sémantique</strong> : Chaque élément contient un DataList avec structure dl/dt/dd héritée</li>
30
+ <li><strong>Titres hiérarchiques</strong> : Tags de titre configurables (<code>titlesTag</code>) pour chaque sous-liste</li>
31
+ </ul>
32
+ </CriteriaCard>
33
+
34
+ <CriteriaCard icon="⌨️" title="Navigation et interactions">
35
+ <ul>
36
+ <li><strong>Focus séquentiel</strong> : Navigation logique entre les différents groupes et leurs éléments</li>
37
+ <li><strong>Actions contextualisées</strong> : Événements <code>click:list-item</code> avec indices doubles (dataListIndex, itemIndex)</li>
38
+ <li><strong>Boutons accessibles</strong> : Actions héritées des DataList avec focus clavier correct</li>
39
+ </ul>
40
+ </CriteriaCard>
41
+
42
+ <CriteriaCard icon="🎨" title="Mise en page et responsive">
43
+ <ul>
44
+ <li><strong>Layout flexbox</strong> : Utilisation de <code>d-flex</code> pour l'affichage horizontal des groupes</li>
45
+ <li><strong>Largeurs configurables</strong> : <code>itemWidth</code> pour contrôler la taille de chaque groupe</li>
46
+ <li><strong>Marges négatives</strong> : <code>ma-n4</code> sur le conteneur avec <code>ma-4</code> sur les éléments pour un espacement optimal</li>
47
+ </ul>
48
+ </CriteriaCard>
49
+
50
+ <CriteriaCard icon="📱" title="États et chargement">
51
+ <ul>
52
+ <li><strong>États de chargement</strong> : Propagation de <code>loading</code> à tous les DataList enfants</li>
53
+ <li><strong>Slots avancés</strong> : Slot <code>item</code> avec contexte enrichi (dataListIndex inclus)</li>
54
+ <li><strong>Gestion HTML</strong> : Support de <code>renderHtmlValue</code> avec avertissement de dépréciation</li>
55
+ </ul>
56
+ </CriteriaCard>
57
+ </CriteriaSection>
58
+
59
+ <DemoSection componentName="DataListGroup">
60
+ <Primary />
61
+ </DemoSection>
62
+
63
+ <BestPracticesSection>
64
+ <ul>
65
+ <li><strong>Groupes cohérents</strong> : Organisez les DataList par thématiques logiques (informations personnelles, coordonnées, etc.)</li>
66
+ <li><strong>Titres distinctifs</strong> : Utilisez des <code>title</code> uniques et descriptifs pour chaque groupe</li>
67
+ <li><strong>Largeurs adaptées</strong> : Choisissez <code>itemWidth</code> en fonction du contenu (plus large pour les textes longs)</li>
68
+ <li><strong>Actions groupées</strong> : Maintenez la cohérence des actions entre les différents groupes</li>
69
+ <li><strong>États synchronisés</strong> : Utilisez <code>loading</code> au niveau du groupe pour des chargements coordonnés</li>
70
+ <li><strong>Slots contextuels</strong> : Exploitez le <code>data-list-index</code> dans les slots pour des personnalisations avancées</li>
71
+ </ul>
72
+ </BestPracticesSection>
73
+
74
+ <ResourcesSection>
75
+ <ul>
76
+ <li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/listbox/" target="_blank" rel="noopener noreferrer">Guide des pratiques WAI-ARIA : Listbox</a></li>
77
+ <li><a href="https://www.w3.org/WAI/WCAG21/quickref/" target="_blank" rel="noopener noreferrer">Référence rapide WCAG 2.1</a></li>
78
+ <li><a href="https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#11.10" target="_blank" rel="noopener noreferrer">RGAA Critère 11.10 : Listes de définitions</a></li>
79
+ <li><a href="https://developer.mozilla.org/fr/docs/Web/HTML/Element/ul" target="_blank" rel="noopener noreferrer">MDN : Élément ul - Liste non ordonnée</a></li>
80
+ </ul>
81
+ </ResourcesSection>
82
+
83
+ </AccessibilityGuideLayout>
@@ -38,6 +38,10 @@ const meta = {
38
38
  },
39
39
  },
40
40
  argTypes: {
41
+ 'headingLevel': {
42
+ control: { type: 'select' },
43
+ options: [1, 2, 3, 4, 5, 6],
44
+ },
41
45
  'onUpdate:modelValue': {
42
46
  description: 'Émis lorsque la valeur du champ est mise à jour',
43
47
  table: {
@@ -345,6 +349,7 @@ export const Default: Story = {
345
349
  ],
346
350
  },
347
351
  args: {
352
+ 'headingLevel': 3,
348
353
  'placeholder': 'Sélectionner une date',
349
354
  'format': 'DD/MM/YYYY',
350
355
  'isBirthDate': false,
@@ -417,6 +422,7 @@ export const Required: Story = {
417
422
  ],
418
423
  },
419
424
  args: {
425
+ 'headingLevel': 3,
420
426
  'placeholder': 'Sélectionner une date',
421
427
  'format': 'DD/MM/YYYY',
422
428
  'isBirthDate': false,
@@ -489,6 +495,7 @@ export const DateRange: Story = {
489
495
  ],
490
496
  },
491
497
  args: {
498
+ 'headingLevel': 3,
492
499
  'placeholder': 'Sélectionner une période',
493
500
  'label': 'Sélectionner une période',
494
501
  'format': 'DD/MM/YYYY',
@@ -575,6 +582,7 @@ export const WithCustomPeriod: Story = {
575
582
  ],
576
583
  },
577
584
  args: {
585
+ 'headingLevel': 3,
578
586
  'placeholder': 'Sélectionner une date',
579
587
  'format': 'DD/MM/YYYY',
580
588
  'isBirthDate': false,
@@ -671,6 +679,7 @@ export const WithAppendIcon: Story = {
671
679
  ],
672
680
  },
673
681
  args: {
682
+ 'headingLevel': 3,
674
683
  'placeholder': 'Sélectionner une date',
675
684
  'format': 'DD/MM/YYYY',
676
685
  'dateFormatReturn': '',
@@ -738,6 +747,7 @@ export const WithoutIcon: Story = {
738
747
  ],
739
748
  },
740
749
  args: {
750
+ 'headingLevel': 3,
741
751
  'placeholder': 'Sélectionner une date',
742
752
  'format': 'DD/MM/YYYY',
743
753
  'dateFormatReturn': '',
@@ -805,6 +815,7 @@ export const BirthDate: Story = {
805
815
  ],
806
816
  },
807
817
  args: {
818
+ 'headingLevel': 3,
808
819
  'placeholder': 'Date de naissance',
809
820
  'format': 'DD/MM/YYYY',
810
821
  'dateFormatReturn': '',
@@ -873,6 +884,7 @@ export const WithError: Story = {
873
884
  ],
874
885
  },
875
886
  args: {
887
+ 'headingLevel': 3,
876
888
  'placeholder': 'Sélectionner une date',
877
889
  'format': 'DD/MM/YYYY',
878
890
  'dateFormatReturn': '',
@@ -948,6 +960,7 @@ export const WithWarning: Story = {
948
960
  ],
949
961
  },
950
962
  args: {
963
+ 'headingLevel': 3,
951
964
  'placeholder': 'Date avec avertissement',
952
965
  'format': 'DD/MM/YYYY',
953
966
  'dateFormatReturn': '',
@@ -1026,6 +1039,7 @@ export const WithSuccess: Story = {
1026
1039
  ],
1027
1040
  },
1028
1041
  args: {
1042
+ 'headingLevel': 3,
1029
1043
  'placeholder': 'Date valide',
1030
1044
  'format': 'DD/MM/YYYY',
1031
1045
  'dateFormatReturn': '',
@@ -1222,6 +1236,7 @@ export const WithDateFormatReturn: Story = {
1222
1236
  ],
1223
1237
  },
1224
1238
  args: {
1239
+ 'headingLevel': 3,
1225
1240
  'placeholder': 'Sélectionner une date',
1226
1241
  'format': 'DD/MM/YYYY',
1227
1242
  'dateFormatReturn': '',
@@ -1333,6 +1348,7 @@ export const WithDayjsFormat: Story = {
1333
1348
  ],
1334
1349
  },
1335
1350
  args: {
1351
+ headingLevel: 3,
1336
1352
  placeholder: 'Sélectionner une date',
1337
1353
  format: 'DD/MM/YYYY',
1338
1354
  isBirthDate: false,
@@ -1465,6 +1481,7 @@ export const UTC: Story = {
1465
1481
  ],
1466
1482
  },
1467
1483
  args: {
1484
+ 'headingLevel': 3,
1468
1485
  'placeholder': 'Sélectionner une date',
1469
1486
  'format': 'DD/MM/YYYY',
1470
1487
  'dateFormatReturn': '',
@@ -1496,12 +1513,20 @@ export const UTC: Story = {
1496
1513
 
1497
1514
  const dateString = computed({
1498
1515
  get() {
1499
- return dayjs.utc(utcIso.value).tz(selectedTimeZone.value).format(DISPLAY_FORMAT.value)
1516
+ return dayjs.utc(utcIso.value).format(DISPLAY_FORMAT.value)
1500
1517
  },
1501
1518
  set(v: string) {
1502
- const parsed = dayjs.tz(v, DISPLAY_FORMAT.value, selectedTimeZone.value)
1519
+ const parsed = dayjs.utc(v, DISPLAY_FORMAT.value, true)
1503
1520
  if (!parsed.isValid() || parsed.format(DISPLAY_FORMAT.value) !== v) return
1504
- utcIso.value = parsed.utc().toISOString()
1521
+ utcIso.value = dayjs.utc()
1522
+ .year(parsed.year())
1523
+ .month(parsed.month())
1524
+ .date(parsed.date())
1525
+ .hour(0)
1526
+ .minute(0)
1527
+ .second(0)
1528
+ .millisecond(0)
1529
+ .toISOString()
1505
1530
  args['onUpdate:modelValue']?.(v)
1506
1531
  },
1507
1532
  })