@cnamts/synapse 1.0.14 → 1.0.16

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 (395) hide show
  1. package/README.md +0 -0
  2. package/dist/{DateFilter-isr8mXVb.js → DateFilter-DSwJUvBu.js} +12 -12
  3. package/dist/{NumberFilter-BOe7DqWX.js → NumberFilter-CwsbYyz4.js} +1 -1
  4. package/dist/{PeriodFilter-WTprpO40.js → PeriodFilter-csnEZU30.js} +1 -1
  5. package/dist/{SelectFilter-CqlG5dmI.js → SelectFilter-Bd5fndzR.js} +1 -1
  6. package/dist/{TextFilter-fVW5bsRw.js → TextFilter-B6gxzq2a.js} +1 -1
  7. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +2836 -2845
  8. package/dist/components/Amelipro/AmeliproCallback/AmeliproCallback.d.ts +3 -3
  9. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarousel.d.ts +7 -7
  10. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/AmeliproCarouselItem.d.ts +3 -3
  11. package/dist/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.d.ts +3 -3
  12. package/dist/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.d.ts +3 -3
  13. package/dist/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.d.ts +3 -3
  14. package/dist/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.d.ts +3 -3
  15. package/dist/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.d.ts +3 -3
  16. package/dist/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.d.ts +3 -3
  17. package/dist/components/Amelipro/AmeliproFooter/AmeliproFooter.d.ts +18 -18
  18. package/dist/components/Amelipro/AmeliproHeader/AmeliproHeader.d.ts +9 -9
  19. package/dist/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBar.d.ts +3 -3
  20. package/dist/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/AmeliproHeaderBrandSection.d.ts +3 -3
  21. package/dist/components/Amelipro/AmeliproIcon/AmeliproIcon.d.ts +3 -1
  22. package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +5 -3
  23. package/dist/components/Amelipro/AmeliproIllustratedRadioGroup/AmeliproIllustratedRadioGroup.d.ts +3 -3
  24. package/dist/components/Amelipro/AmeliproMenu/AmeliproMenu.d.ts +3 -3
  25. package/dist/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.d.ts +1 -1
  26. package/dist/components/Amelipro/AmeliproPagination/AmeliproPaginationBtn/AmeliproPaginationBtn.d.ts +3 -3
  27. package/dist/components/Amelipro/AmeliproPatientBanner/AmeliproPatientBanner.d.ts +3 -3
  28. package/dist/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.d.ts +9 -0
  29. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +1288 -1284
  30. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +1936 -1930
  31. package/dist/components/Amelipro/AmeliproRadioGroup/AmeliproRadioGroup.d.ts +3 -3
  32. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +2838 -2865
  33. package/dist/components/Amelipro/AmeliproStateTile/AmeliproStateTile.d.ts +3 -3
  34. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +2843 -2870
  35. package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +397 -397
  36. package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +642 -640
  37. package/dist/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.d.ts +233 -5
  38. package/dist/components/Amelipro/AmeliproTransmission/AmeliproTransmission.d.ts +9 -9
  39. package/dist/components/Captcha/CaptchaHelpdesk.d.ts +6 -0
  40. package/dist/components/CookieBanner/CookieBanner.d.ts +117 -119
  41. package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +484 -484
  42. package/dist/components/CookiesSelection/CookiesSelection.d.ts +104 -106
  43. package/dist/components/Customs/Selects/SelectBtnField/SelectBtnField.d.ts +14 -10
  44. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +118 -129
  45. package/dist/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.d.ts +1 -3
  46. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +1 -1
  47. package/dist/components/Customs/SyForm/SyForm.d.ts +60 -53
  48. package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +88 -0
  49. package/dist/components/Customs/SyRadioGroup/locales.d.ts +3 -0
  50. package/dist/components/Customs/SyTextField/SyTextField.d.ts +644 -642
  51. package/dist/components/DataList/DataList.d.ts +6 -1
  52. package/dist/components/DataListGroup/DataListGroup.d.ts +14 -2
  53. package/dist/components/DataListItem/DataListItem.d.ts +3 -0
  54. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +2988 -3100
  55. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +1458 -1558
  56. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +655 -651
  57. package/dist/components/DatePicker/composables/index.d.ts +4 -0
  58. package/dist/components/DatePicker/composables/useAsteriskDisplay.d.ts +1 -1
  59. package/dist/components/DatePicker/composables/useCalendarKeyboardNavigation.d.ts +11 -0
  60. package/dist/components/DatePicker/composables/useDatePickerState.d.ts +25 -0
  61. package/dist/components/DatePicker/composables/useDateTextField.d.ts +61 -0
  62. package/dist/components/DatePicker/composables/useHolidayHighlighting.d.ts +15 -0
  63. package/dist/components/DatePicker/constants/messages.d.ts +0 -1
  64. package/dist/components/DialogBox/DialogBox.d.ts +175 -177
  65. package/dist/components/FilterSideBar/FilterSideBar.d.ts +161 -171
  66. package/dist/components/FooterBar/FooterBar.d.ts +5 -5
  67. package/dist/components/HeaderBar/HeaderBar.d.ts +2 -2
  68. package/dist/components/HeaderBar/HeaderLogo/HeaderLogo.d.ts +1 -1
  69. package/dist/components/HeaderNavigationBar/HeaderNavigationBar.d.ts +1 -1
  70. package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +234 -258
  71. package/dist/components/LangBtn/LangBtn.d.ts +173 -179
  72. package/dist/components/LogoBrandSection/LogoBrandSection.d.ts +1 -1
  73. package/dist/components/LunarCalendar/LunarCalendar.d.ts +29 -0
  74. package/dist/components/LunarCalendar/useLunarCalendarRules.d.ts +5 -0
  75. package/dist/components/LunarCalendar/useLunarCalendarValidation.d.ts +13 -0
  76. package/dist/components/NirField/NirField.d.ts +1296 -1292
  77. package/dist/components/PaginatedTable/PaginatedTable.d.ts +1 -1
  78. package/dist/components/PeriodField/PeriodField.d.ts +5844 -6068
  79. package/dist/components/PhoneField/PhoneField.d.ts +645 -643
  80. package/dist/components/SyAlert/SyAlert.d.ts +31 -31
  81. package/dist/components/SyTextArea/SyTextArea.d.ts +395 -395
  82. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +193 -227
  83. package/dist/components/Tables/SyTable/SyTable.d.ts +192 -226
  84. package/dist/components/Tables/common/SyTableFilter.d.ts +1 -1
  85. package/dist/components/Tables/common/SyTablePagination.d.ts +118 -129
  86. package/dist/components/Tables/common/TableHeader.d.ts +52 -2
  87. package/dist/components/Tables/common/filters/DateFilter.d.ts +1 -1
  88. package/dist/components/Tables/common/filters/NumberFilter.d.ts +1 -1
  89. package/dist/components/Tables/common/filters/PeriodFilter.d.ts +1 -1
  90. package/dist/components/Tables/common/filters/SelectFilter.d.ts +1 -1
  91. package/dist/components/Tables/common/filters/TextFilter.d.ts +1 -1
  92. package/dist/components/Tables/common/locales.d.ts +1 -0
  93. package/dist/components/Tables/common/organizeColumns/OrganizeColumns.d.ts +86 -90
  94. package/dist/components/Tables/common/tableFilterUtils.d.ts +2 -2
  95. package/dist/components/Tables/common/types.d.ts +3 -2
  96. package/dist/components/Tables/common/useTableCheckbox.d.ts +3 -2
  97. package/dist/components/Tables/common/useTableFilter.d.ts +1 -1
  98. package/dist/components/Tables/common/useTableItems.d.ts +6 -8
  99. package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +18 -18
  100. package/dist/components/index.d.ts +2 -0
  101. package/dist/design-system-v3.js +101 -98
  102. package/dist/design-system-v3.umd.cjs +25 -33
  103. package/dist/main-DkZZpa3S.js +35197 -0
  104. package/dist/style.css +1 -1
  105. package/dist/utils/formatNir/formatNir.d.ts +2 -0
  106. package/dist/utils/index.d.ts +1 -0
  107. package/dist/utils/insertAt.d.ts +1 -0
  108. package/dist/utils/rules/validateDateValue.d.ts +14 -0
  109. package/dist/vuetifyConfig.d.ts +6 -6
  110. package/package.json +4 -4
  111. package/src/assets/tokens.scss +2 -0
  112. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/__tests__/__snapshots__/AmeliproAccordionTemplate.spec.ts.snap +1 -18
  113. package/src/components/Amelipro/AmeliproAccordion/__tests__/AmeliproAccordion.spec.ts +178 -9
  114. package/src/components/Amelipro/AmeliproAccordion/__tests__/__snapshots__/AmeliproAccordion.spec.ts.snap +28 -121
  115. package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/__snapshots__/AmeliproAccordionFrieze.spec.ts.snap +15 -270
  116. package/src/components/Amelipro/AmeliproAccordionList/__tests__/__snapshots__/AmeliproAccordionList.spec.ts.snap +12 -194
  117. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/__tests__/__snapshots__/AmeliproAccordionResultTemplate.spec.ts.snap +1 -18
  118. package/src/components/Amelipro/AmeliproAccordionResult/__tests__/__snapshots__/AmeliproAccordionResult.spec.ts.snap +1 -18
  119. package/src/components/Amelipro/AmeliproAccordionResultList/__tests__/__snapshots__/AmeliproAccordionResultList.spec.ts.snap +12 -194
  120. package/src/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.stories.ts +9 -9
  121. package/src/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.vue +5 -4
  122. package/src/components/Amelipro/AmeliproAutoCompleteField/__tests__/AmeliproAutoCompleteField.spec.ts +6 -6
  123. package/src/components/Amelipro/AmeliproAutoCompleteField/__tests__/__snapshots__/AmeliproAutoCompleteField.spec.ts.snap +2 -0
  124. package/src/components/Amelipro/AmeliproBadge/__tests__/AmeliproBadge.spec.ts +135 -9
  125. package/src/components/Amelipro/AmeliproBadge/__tests__/__snapshots__/AmeliproBadge.spec.ts.snap +20 -5
  126. package/src/components/Amelipro/AmeliproBreadcrumb/__tests__/AmeliproBreadcrumb.spec.ts +195 -28
  127. package/src/components/Amelipro/AmeliproBreadcrumb/__tests__/__snapshots__/AmeliproBreadcrumb.spec.ts.snap +193 -124
  128. package/src/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.vue +1 -1
  129. package/src/components/Amelipro/AmeliproCaptcha/__tests__/AmeliproCaptcha.spec.ts +364 -12
  130. package/src/components/Amelipro/AmeliproCaptcha/__tests__/__snapshots__/AmeliproCaptcha.spec.ts.snap +30 -390
  131. package/src/components/Amelipro/AmeliproCarousel/__tests__/__snapshots__/AmeliproCarousel.spec.ts.snap +4 -36
  132. package/src/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.stories.ts +10 -10
  133. package/src/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.vue +7 -7
  134. package/src/components/Amelipro/AmeliproCheckbox/__tests__/AmeliproCheckbox.spec.ts +5 -5
  135. package/src/components/Amelipro/AmeliproCheckbox/__tests__/__snapshots__/AmeliproCheckbox.spec.ts.snap +1 -1
  136. package/src/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.stories.ts +7 -6
  137. package/src/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.vue +6 -6
  138. package/src/components/Amelipro/AmeliproCheckboxGroup/__tests__/AmeliproCheckboxGroup.spec.ts +6 -6
  139. package/src/components/Amelipro/AmeliproCheckboxGroup/__tests__/__snapshots__/AmeliproCheckboxGroup.spec.ts.snap +2 -2
  140. package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +2 -43
  141. package/src/components/Amelipro/AmeliproContentLayout/__tests__/AmeliproContentLayout.spec.ts +80 -9
  142. package/src/components/Amelipro/AmeliproContentLayout/__tests__/__snapshots__/AmeliproContentLayout.spec.ts.snap +25 -4
  143. package/src/components/Amelipro/AmeliproCopyBtn/__tests__/__snapshots__/AmeliproCopyBtn.spec.ts.snap +1 -13
  144. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.stories.ts +7 -6
  145. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.vue +5 -5
  146. package/src/components/Amelipro/AmeliproCustomSelector/__tests__/AmeliproCustomSelector.spec.ts +187 -39
  147. package/src/components/Amelipro/AmeliproCustomSelector/__tests__/__snapshots__/AmeliproCustomSelector.spec.ts.snap +147 -147
  148. package/src/components/Amelipro/AmeliproDentalChart/tests/__snapshots__/AmeliproDentalChart.spec.ts.snap +1 -1
  149. package/src/components/Amelipro/AmeliproDialog/__tests__/__snapshots__/AmeliproDialog.spec.ts.snap +0 -2
  150. package/src/components/Amelipro/AmeliproErrorTemplate/__tests__/AmeliproErrorTemplate.spec.ts +160 -20
  151. package/src/components/Amelipro/AmeliproErrorTemplate/__tests__/__snapshots__/AmeliproErrorTemplate.spec.ts.snap +34 -177
  152. package/src/components/Amelipro/AmeliproFilePreview/AmeliproFilePreview.vue +1 -0
  153. package/src/components/Amelipro/AmeliproFilePreview/__tests__/AmeliproFilePreview.spec.ts +248 -19
  154. package/src/components/Amelipro/AmeliproFilePreview/__tests__/__snapshots__/AmeliproFilePreview.spec.ts.snap +34 -203
  155. package/src/components/Amelipro/AmeliproFirstLogin/__tests__/__snapshots__/AmeliproFirstLogin.spec.ts.snap +6 -144
  156. package/src/components/Amelipro/AmeliproIcon/AmeliproIcon.vue +20 -2
  157. package/src/components/Amelipro/AmeliproIcon/__tests__/__snapshots__/AmeliproIcon.spec.ts.snap +1 -25
  158. package/src/components/Amelipro/AmeliproIllustratedRadioGroup/AmeliproIllustratedRadioGroup.stories.ts +5 -5
  159. package/src/components/Amelipro/AmeliproIllustratedRadioGroup/AmeliproIllustratedRadioGroup.vue +6 -6
  160. package/src/components/Amelipro/AmeliproIllustratedRadioGroup/__tests__/AmeliproIllustratedRadioGroup.spec.ts +22 -22
  161. package/src/components/Amelipro/AmeliproIllustratedRadioGroup/__tests__/__snapshots__/AmeliproIllustratedRadioGroup.spec.ts.snap +2 -2
  162. package/src/components/Amelipro/AmeliproMultipleFoldingCard/__tests__/AmeliproMultipleFoldingCard.spec.ts +304 -0
  163. package/src/components/Amelipro/AmeliproMultipleFoldingCard/__tests__/__snapshots__/AmeliproMultipleFoldingCard.spec.ts.snap +373 -0
  164. package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.stories.ts +2 -0
  165. package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.vue +28 -2
  166. package/src/components/Amelipro/AmeliproPatientLogged/__tests__/__snapshots__/AmeliproPatientLogged.spec.ts.snap +9 -173
  167. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/AmeliproPatientLoginForm.vue +1 -1
  168. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.vue +162 -72
  169. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/__tests__/AmeliproPostalAddressCityRow.spec.ts +2 -2
  170. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/__tests__/__snapshots__/AmeliproPostalAddressCityRow.spec.ts.snap +6 -39
  171. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.stories.ts +3 -3
  172. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.vue +8 -8
  173. package/src/components/Amelipro/AmeliproPostalAddressField/{tests → __tests__}/AmeliproPostalAddressField.spec.ts +2 -2
  174. package/src/components/Amelipro/AmeliproPostalAddressField/{tests → __tests__}/__snapshots__/AmeliproPostalAddressField.spec.ts.snap +11 -52
  175. package/src/components/Amelipro/AmeliproRadioGroup/AmeliproRadioGroup.stories.ts +7 -7
  176. package/src/components/Amelipro/AmeliproRadioGroup/AmeliproRadioGroup.vue +8 -8
  177. package/src/components/Amelipro/AmeliproRadioGroup/__tests__/AmeliproRadioGroup.spec.ts +6 -6
  178. package/src/components/Amelipro/AmeliproRadioGroup/__tests__/__snapshots__/AmeliproRadioGroup.spec.ts.snap +2 -2
  179. package/src/components/Amelipro/AmeliproResultList/__tests__/__snapshots__/AmeliproResultList.spec.ts.snap +2 -14
  180. package/src/components/Amelipro/AmeliproSelect/AmeliproSelect.stories.ts +7 -7
  181. package/src/components/Amelipro/AmeliproSelect/AmeliproSelect.vue +4 -4
  182. package/src/components/Amelipro/AmeliproSelect/__tests__/AmeliproSelect.spec.ts +12 -12
  183. package/src/components/Amelipro/AmeliproStepper/AmeliproStepper.vue +2 -2
  184. package/src/components/Amelipro/AmeliproStepper/__tests__/__snapshots__/AmeliproStepper.spec.ts.snap +2 -2
  185. package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +2 -2
  186. package/src/components/Amelipro/AmeliproTable/__tests__/AmeliproTable.spec.ts +463 -68
  187. package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +176 -511
  188. package/src/components/Amelipro/AmeliproTextArea/AmeliproTextArea.stories.ts +6 -6
  189. package/src/components/Amelipro/AmeliproTextArea/AmeliproTextArea.vue +4 -4
  190. package/src/components/Amelipro/AmeliproTextArea/__tests__/AmeliproTextArea.spec.ts +3 -3
  191. package/src/components/Amelipro/AmeliproTextArea/__tests__/__snapshots__/AmeliproTextArea.spec.ts.snap +1 -2
  192. package/src/components/Amelipro/AmeliproTextField/AmeliproTextField.stories.ts +10 -10
  193. package/src/components/Amelipro/AmeliproTextField/AmeliproTextField.vue +4 -4
  194. package/src/components/Amelipro/AmeliproTextField/__tests__/AmeliproTextField.spec.ts +5 -5
  195. package/src/components/Amelipro/AmeliproTextField/tests/__snapshots__/AmeliproTextField.spec.ts.snap +162 -0
  196. package/src/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.stories.ts +44 -0
  197. package/src/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.vue +79 -1
  198. package/src/components/Amelipro/AmeliproTooltips/__tests__/__snapshots__/AmeliproTooltips.spec.ts.snap +0 -2
  199. package/src/components/Amelipro/AmeliproUpload/AmeliproUpload.stories.ts +2 -2
  200. package/src/components/Amelipro/AmeliproUpload/AmeliproUpload.vue +21 -7
  201. package/src/components/Amelipro/AmeliproUpload/__tests__/AmeliproUpload.spec.ts +252 -44
  202. package/src/components/Amelipro/AmeliproUpload/__tests__/__snapshots__/AmeliproUpload.spec.ts.snap +166 -0
  203. package/src/components/Amelipro/ServiceMenu/ServiceBtn/__tests__/ServiceBtn.spec.ts +137 -0
  204. package/src/components/Amelipro/ServiceMenu/ServiceBtn/__tests__/__snapshots__/ServiceBtn.spec.ts.snap +56 -0
  205. package/src/components/Amelipro/ServiceMenu/ServiceList/__tests__/ServiceList.spec.ts +116 -0
  206. package/src/components/Amelipro/ServiceMenu/ServiceList/__tests__/__snapshots__/ServiceList.spec.ts.snap +58 -0
  207. package/src/components/Amelipro/ServiceMenu/ServiceMenuContent/__tests__/ServiceMenuContent.spec.ts +118 -0
  208. package/src/components/Amelipro/ServiceMenu/ServiceMenuContent/__tests__/__snapshots__/ServiceMenuContent.spec.ts.snap +151 -0
  209. package/src/components/Amelipro/ServiceMenu/__tests__/ServiceMenu.spec.ts +259 -0
  210. package/src/components/Amelipro/ServiceMenu/__tests__/__snapshots__/ServiceMenu.spec.ts.snap +102 -0
  211. package/src/components/Amelipro/StructureMenu/StructureBtn/__tests__/StructureBtn.spec.ts +90 -0
  212. package/src/components/Amelipro/StructureMenu/StructureBtn/__tests__/__snapshots__/StructureBtn.spec.ts.snap +63 -0
  213. package/src/components/Amelipro/StructureMenu/StructureItem/__tests__/StructureItem.spec.ts +133 -0
  214. package/src/components/Amelipro/StructureMenu/StructureItem/__tests__/__snapshots__/StructureItem.spec.ts.snap +143 -0
  215. package/src/components/Amelipro/StructureMenu/StructureList/__tests__/StructureList.spec.ts +190 -0
  216. package/src/components/Amelipro/StructureMenu/StructureList/__tests__/__snapshots__/StructureList.spec.ts.snap +109 -0
  217. package/src/components/Amelipro/StructureMenu/StructureTabs/__tests__/StructureTabs.spec.ts +159 -0
  218. package/src/components/Amelipro/StructureMenu/StructureTabs/__tests__/__snapshots__/StructureTabs.spec.ts.snap +103 -0
  219. package/src/components/Amelipro/StructureMenu/__tests__/StructureMenu.spec.ts +165 -0
  220. package/src/components/Amelipro/StructureMenu/__tests__/__snapshots__/StructureMenu.spec.ts.snap +39 -0
  221. package/src/components/Amelipro/UserInformationSummary/__tests__/UserInformationSummary.spec.ts +140 -0
  222. package/src/components/Amelipro/UserInformationSummary/{tests → __tests__}/__snapshots__/UserInformationSummary.spec.ts.snap +17 -24
  223. package/src/components/Amelipro/UserMenu/UserMenu.stories.ts +3 -3
  224. package/src/components/Amelipro/UserMenu/UserMenu.vue +2 -2
  225. package/src/components/Amelipro/UserMenu/UserMenuDetails/__tests__/UserMenuDetails.spec.ts +150 -0
  226. package/src/components/Amelipro/UserMenu/UserMenuDetails/__tests__/__snapshots__/UserMenuDetails.spec.ts.snap +117 -0
  227. package/src/components/Amelipro/UserMenu/__tests__/UserMenu.spec.ts +141 -0
  228. package/src/components/Amelipro/UserMenu/__tests__/__snapshots__/UserMenu.spec.ts.snap +103 -0
  229. package/src/components/Captcha/Captcha.vue +9 -24
  230. package/src/components/Captcha/CaptchaHelpdesk.vue +42 -0
  231. package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +256 -268
  232. package/src/components/CopyBtn/tests/__snapshots__/CopyBtn.spec.ts.snap +0 -1
  233. package/src/components/Customs/Selects/SelectBtnField/Accessibilite.stories.ts +4 -0
  234. package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.stories.ts +154 -82
  235. package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.vue +229 -125
  236. package/src/components/Customs/Selects/SelectBtnField/tests/SelectBtnField.spec.ts +12 -12
  237. package/src/components/Customs/Selects/SelectBtnField/tests/__snapshots__/SelectBtnField.spec.ts.snap +344 -826
  238. package/src/components/Customs/Selects/SySelect/SySelect.vue +215 -169
  239. package/src/components/Customs/Selects/SySelect/composables/tests/useSySelectKeyboard.spec.ts +4 -2
  240. package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +7 -9
  241. package/src/components/Customs/SyForm/SyForm.mdx +47 -7
  242. package/src/components/Customs/SyForm/SyForm.stories.ts +38 -34
  243. package/src/components/Customs/SyForm/SyForm.vue +27 -6
  244. package/src/components/Customs/SyRadioGroup/Accessibilite.mdx +263 -0
  245. package/src/components/Customs/SyRadioGroup/SyRadioGroup.mdx +37 -0
  246. package/src/components/Customs/SyRadioGroup/SyRadioGroup.stories.ts +665 -0
  247. package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +324 -0
  248. package/src/components/Customs/SyRadioGroup/locales.ts +3 -0
  249. package/src/components/Customs/SyRadioGroup/tests/SyRadioGroup.spec.ts +135 -0
  250. package/src/components/Customs/SyTabs/SyTabs.vue +1 -1
  251. package/src/components/Customs/SyTextField/SyTextField.vue +225 -194
  252. package/src/components/Customs/SyTextField/tests/SyTextField.spec.ts +32 -2
  253. package/src/components/DataList/DataList.mdx +3 -1
  254. package/src/components/DataList/DataList.stories.ts +67 -17
  255. package/src/components/DataList/DataList.vue +13 -1
  256. package/src/components/DataListGroup/DataListGroup.stories.ts +42 -12
  257. package/src/components/DataListGroup/DataListGroup.vue +14 -1
  258. package/src/components/DataListItem/DataListItem.vue +10 -2
  259. package/src/components/DataListItem/tests/DataListItem.spec.ts +1 -1
  260. package/src/components/DatePicker/CalendarMode/DatePicker.vue +157 -178
  261. package/src/components/DatePicker/CalendarMode/tests/DatePicker.events.spec.ts +5 -0
  262. package/src/components/DatePicker/CalendarMode/tests/DatePicker.spec.ts +179 -179
  263. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +261 -258
  264. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +234 -827
  265. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +46 -73
  266. package/src/components/DatePicker/DateTextInput/tests/DateTextInput.spec.ts +350 -0
  267. package/src/components/DatePicker/composables/index.ts +4 -0
  268. package/src/components/DatePicker/composables/tests/useCalendarKeyboardNavigation.spec.ts +270 -0
  269. package/src/components/DatePicker/composables/tests/useDatePickerViewMode.spec.ts +61 -3
  270. package/src/components/DatePicker/composables/tests/useDateRangeInput.spec.ts +198 -0
  271. package/src/components/DatePicker/composables/tests/useDisplayedDateString.spec.ts +36 -2
  272. package/src/components/DatePicker/composables/tests/useInputHandler.spec.ts +755 -0
  273. package/src/components/DatePicker/composables/tests/useKeyboardEvents.spec.ts +168 -0
  274. package/src/components/DatePicker/composables/tests/useMonthButtonCustomization.spec.ts +40 -34
  275. package/src/components/DatePicker/composables/useAsteriskDisplay.ts +1 -2
  276. package/src/components/DatePicker/composables/useCalendarKeyboardNavigation.ts +155 -0
  277. package/src/components/DatePicker/composables/useDatePickerState.ts +163 -0
  278. package/src/components/DatePicker/composables/useDateRangeInput.ts +4 -8
  279. package/src/components/DatePicker/composables/useDateTextField.ts +156 -0
  280. package/src/components/DatePicker/composables/useHolidayHighlighting.ts +64 -0
  281. package/src/components/DatePicker/composables/useInputHandler.ts +25 -19
  282. package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +52 -26
  283. package/src/components/DatePicker/constants/messages.ts +0 -1
  284. package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +2 -2
  285. package/src/components/DatePicker/playground/ComplexDatePickerPlayground.vue +16 -8
  286. package/src/components/ErrorPage/ErrorPage.vue +1 -1
  287. package/src/components/ErrorPage/tests/ErrorPage.spec.ts +17 -0
  288. package/src/components/ExternalLinks/tests/__snapshots__/ExternalLinks.spec.ts.snap +0 -1
  289. package/src/components/LunarCalendar/LunarCalendar.mdx +33 -0
  290. package/src/components/LunarCalendar/LunarCalendar.stories.ts +232 -0
  291. package/src/components/LunarCalendar/LunarCalendar.vue +57 -0
  292. package/src/components/LunarCalendar/tests/LunarCalendar.spec.ts +79 -0
  293. package/src/components/LunarCalendar/useLunarCalendarRules.ts +96 -0
  294. package/src/components/LunarCalendar/useLunarCalendarValidation.ts +47 -0
  295. package/src/components/NotificationBar/NotificationBar.vue +2 -2
  296. package/src/components/PaginatedTable/PaginatedTable.stories.ts +15 -10
  297. package/src/components/PaginatedTable/PaginatedTable.vue +24 -35
  298. package/src/components/PhoneField/PhoneField.vue +102 -83
  299. package/src/components/SearchListField/tests/SearchListField.spec.ts +7 -53
  300. package/src/components/SyAlert/SyAlert.vue +5 -2
  301. package/src/components/TableToolbar/tests/__snapshots__/TableToolbar.spec.ts.snap +24 -72
  302. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +521 -23
  303. package/src/components/Tables/SyServerTable/SyServerTable.vue +19 -13
  304. package/src/components/Tables/SyTable/SyTable.stories.ts +391 -18
  305. package/src/components/Tables/SyTable/SyTable.vue +16 -11
  306. package/src/components/Tables/common/TableHeader.vue +16 -7
  307. package/src/components/Tables/common/filters/DateFilter.vue +1 -1
  308. package/src/components/Tables/common/locales.ts +1 -0
  309. package/src/components/Tables/common/tableFilterUtils.ts +3 -3
  310. package/src/components/Tables/common/types.ts +4 -2
  311. package/src/components/Tables/common/useTableCheckbox.ts +4 -3
  312. package/src/components/Tables/common/useTableFilter.ts +2 -2
  313. package/src/components/Tables/common/useTableItems.ts +4 -19
  314. package/src/components/index.ts +2 -0
  315. package/src/composables/validation/tests/useFormValidation.spec.ts +251 -0
  316. package/src/composables/validation/tests/useValidatable.spec.ts +90 -0
  317. package/src/stories/Accessibilite/Audit/Exemptions-derogations.mdx +241 -0
  318. package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +17 -10
  319. package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +16 -0
  320. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +160 -106
  321. package/src/stories/Accessibilite/Vuetify/VuetifyItems.ts +2 -1
  322. package/src/stories/GuideDuDev/ClassesUtilitaires/FormattingUtilities.mdx +20 -0
  323. package/src/stories/GuideDuDev/ClassesUtilitaires/index.mdx +10 -0
  324. package/src/utils/formatNir/formatNir.ts +15 -0
  325. package/src/utils/index.ts +1 -0
  326. package/src/utils/insertAt.ts +11 -0
  327. package/src/utils/rules/isDateValid/IsDateValid.mdx +2 -2
  328. package/src/utils/rules/isDateValid/IsDateValid.stories.ts +6 -4
  329. package/src/utils/rules/isDateValid/index.ts +23 -8
  330. package/src/utils/rules/isDateValid/tests/isDateValid.spec.ts +9 -0
  331. package/src/utils/rules/isExactLength/IsExactLenght.mdx +1 -1
  332. package/src/utils/rules/isHolidayDay/IsHolidayDay.mdx +19 -7
  333. package/src/utils/rules/isHolidayDay/index.ts +6 -8
  334. package/src/utils/rules/isHolidayDay/tests/isHolidayDay.spec.ts +13 -1
  335. package/src/utils/rules/isNotAfterDate/IsNotAfterDate.mdx +2 -2
  336. package/src/utils/rules/isNotAfterDate/IsNotAfterDate.stories.ts +9 -2
  337. package/src/utils/rules/isNotAfterDate/index.ts +5 -12
  338. package/src/utils/rules/isNotAfterDate/tests/isNotAfterDate.spec.ts +20 -0
  339. package/src/utils/rules/isNotAfterToday/IsNotAfterToday.mdx +2 -2
  340. package/src/utils/rules/isNotAfterToday/IsNotAfterToday.stories.ts +8 -2
  341. package/src/utils/rules/isNotAfterToday/index.ts +6 -6
  342. package/src/utils/rules/isNotAfterToday/tests/isNotAfterToday.spec.ts +20 -0
  343. package/src/utils/rules/isNotBeforeDate/IsNotBeforeDate.mdx +2 -2
  344. package/src/utils/rules/isNotBeforeDate/index.ts +5 -12
  345. package/src/utils/rules/isNotBeforeDate/tests/IsNotBeforeDate.spec.ts +20 -0
  346. package/src/utils/rules/isNotBeforeToday/IsNotBeforeToday.mdx +2 -2
  347. package/src/utils/rules/isNotBeforeToday/IsNotBeforeToday.stories.ts +8 -2
  348. package/src/utils/rules/isNotBeforeToday/index.ts +6 -6
  349. package/src/utils/rules/isNotBeforeToday/tests/notBeforeToday.spec.ts +19 -0
  350. package/src/utils/rules/validateDateValue.ts +37 -0
  351. package/src/vuetifyConfig.ts +6 -2
  352. package/dist/components/Customs/Selects/SelectBtnField/config.d.ts +0 -11
  353. package/dist/components/DatePicker/tests/setup.d.ts +0 -75370
  354. package/dist/components/Tables/common/formatters.d.ts +0 -17
  355. package/dist/main-CbBVJ_le.js +0 -34377
  356. package/dist/stories/Accessibilite/Vuetify/VuetifyItems.d.ts +0 -70
  357. package/dist/stories/DesignTokens/StylesTypographiques.stories.new.d.ts +0 -8
  358. package/dist/stories/DesignTokens/TypographyDisplay.d.ts +0 -28
  359. package/dist/stories/DesignTokens/vue-shims.d.ts +0 -6
  360. package/src/components/Amelipro/AmeliproMultipleFoldingCard/tests/AmeliproMultipleFoldingCard.spec.ts +0 -40
  361. package/src/components/Amelipro/AmeliproMultipleFoldingCard/tests/__snapshots__/AmeliproMultipleFoldingCard.spec.ts.snap +0 -369
  362. package/src/components/Amelipro/ServiceMenu/ServiceBtn/tests/ServiceBtn.spec.ts +0 -21
  363. package/src/components/Amelipro/ServiceMenu/ServiceBtn/tests/__snapshots__/ServiceBtn.spec.ts.snap +0 -100
  364. package/src/components/Amelipro/ServiceMenu/ServiceList/tests/ServiceList.spec.ts +0 -25
  365. package/src/components/Amelipro/ServiceMenu/ServiceList/tests/__snapshots__/ServiceList.spec.ts.snap +0 -245
  366. package/src/components/Amelipro/ServiceMenu/ServiceMenuContent/tests/ServiceMenuContent.spec.ts +0 -45
  367. package/src/components/Amelipro/ServiceMenu/ServiceMenuContent/tests/__snapshots__/ServiceMenuContent.spec.ts.snap +0 -787
  368. package/src/components/Amelipro/ServiceMenu/tests/ServiceMenu.spec.ts +0 -46
  369. package/src/components/Amelipro/ServiceMenu/tests/__snapshots__/ServiceMenu.spec.ts.snap +0 -111
  370. package/src/components/Amelipro/StructureMenu/StructureBtn/tests/StructureBtn.spec.ts +0 -17
  371. package/src/components/Amelipro/StructureMenu/StructureBtn/tests/__snapshots__/StructureBtn.spec.ts.snap +0 -34
  372. package/src/components/Amelipro/StructureMenu/StructureItem/tests/StructureItem.spec.ts +0 -21
  373. package/src/components/Amelipro/StructureMenu/StructureItem/tests/__snapshots__/StructureItem.spec.ts.snap +0 -106
  374. package/src/components/Amelipro/StructureMenu/StructureList/tests/StructureList.spec.ts +0 -33
  375. package/src/components/Amelipro/StructureMenu/StructureList/tests/__snapshots__/StructureList.spec.ts.snap +0 -353
  376. package/src/components/Amelipro/StructureMenu/StructureTabs/tests/StructureTabs.spec.ts +0 -60
  377. package/src/components/Amelipro/StructureMenu/StructureTabs/tests/__snapshots__/StructureTabs.spec.ts.snap +0 -824
  378. package/src/components/Amelipro/StructureMenu/tests/StructureMenu.spec.ts +0 -69
  379. package/src/components/Amelipro/StructureMenu/tests/__snapshots__/StructureMenu.spec.ts.snap +0 -1383
  380. package/src/components/Amelipro/UserInformationSummary/tests/UserInformationSummary.spec.ts +0 -24
  381. package/src/components/Amelipro/UserMenu/UserMenuDetails/tests/UserMenuDetails.spec.ts +0 -33
  382. package/src/components/Amelipro/UserMenu/UserMenuDetails/tests/__snapshots__/UserMenuDetails.spec.ts.snap +0 -3
  383. package/src/components/Amelipro/UserMenu/tests/UserMenu.spec.ts +0 -34
  384. package/src/components/Amelipro/UserMenu/tests/__snapshots__/UserMenu.spec.ts.snap +0 -101
  385. package/src/components/Customs/Selects/SelectBtnField/config.ts +0 -11
  386. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.events.spec.ts +0 -151
  387. package/src/components/DatePicker/DateTextInput/DateTextInput.events.spec.ts +0 -148
  388. package/src/components/DatePicker/DateTextInput/DateTextInput.range.spec.ts +0 -361
  389. package/src/components/DatePicker/DateTextInput/DateTextInput.spec.ts +0 -709
  390. package/src/components/DatePicker/tests/DatePicker.validation.spec.ts +0 -4111
  391. package/src/components/DatePicker/tests/archiTest.md +0 -33
  392. package/src/components/DatePicker/tests/navigation.regression.spec.ts +0 -74
  393. package/src/components/DatePicker/tests/navigation.simple.spec.ts +0 -137
  394. package/src/components/DatePicker/tests/setup.ts +0 -243
  395. package/src/components/Tables/common/formatters.ts +0 -72
@@ -192,7 +192,7 @@ import '../../styles/shared.css';
192
192
 
193
193
  <div className="info-section">
194
194
  <h2>🌟 Objectif</h2>
195
- <p>L'objectif du pré-audit est d'atteindre en semi-autonomie un premier palier de conformité de votre service web avant de convenir d'un réel audit <abbr title="Référentiel Général d'Amélioration de l'Accessibilité">RGAA</abbr>.</p>
195
+ <p>L'objectif du pré-audit est d'atteindre en semi-autonomie un premier palier de conformité de votre service web avant de convenir d'un réel audit <abbr title="Référentiel Général d'Amélioration de l'Accessibilité">RGAA</abbr>. La procédure se fait en autonomie par l'équipe de développement du produit. Le relevé des non-conformités relève de la responsabilité de l’équipe de développement, ce kit étant conçu pour guider l’auto-évaluation.</p>
196
196
 
197
197
  <p>Pour prouver ce palier et être éligible à la demande d'audit complet vous devez compléter <a href="/documents/Checklist_pre-audit_CNAM_NOM_DU_PRODUIT.xlsx" target="_blank">ce fichier</a> qui mentionne les exigences requises par la vérification assistée des outils automatisés et la vérification manuelle.</p>
198
198
  </div>
@@ -227,9 +227,9 @@ import '../../styles/shared.css';
227
227
 
228
228
  <div className="info-section">
229
229
  <h2>👤 Vérification manuelle</h2>
230
-
231
- <p>L'objectif est de vérifier chacun des 8 points suivants pour chaque page de l'échantillon de test.</p>
232
-
230
+
231
+ <p>L'objectif est de vérifier chacun des 8 points suivants pour chaque page de l'échantillon de test. Nous recommandons vivement, au préalable, de naviguer sur la totalité de la page via le lecteur d'écran car il s'agit d'un moyen concret de vérifier si le code sémantique et la navigation au clavier sont réellement conformes. Vous pouvez consulter notre <a href="/?path=/docs/accessibilité-kit-de-pré-audit-outils-lecteurs-d-écran--docs">mode d'emploi sur les lecteurs d'écran</a>.</p>
232
+
233
233
  <div className="alert">
234
234
  <p><strong>Notation :</strong> Au sein de la check-list, il faudra choisir entre <span className="highlight">"Conforme"</span>, <span className="highlight">"Non conforme"</span>, <span className="highlight">"Non applicable"</span>, <span className="highlight">"Dérogé"</span> ou <span className="highlight">"Non testé"</span> pour chacun des critères.</p>
235
235
  <p>Il est possible d'ajouter un commentaire pour expliciter les erreurs relevées, des recommandations ou d'éventuelles questions.</p>
@@ -238,153 +238,207 @@ import '../../styles/shared.css';
238
238
 
239
239
  <div className="verification-card">
240
240
  <h3>⌨️ 1. Navigation au clavier</h3>
241
-
242
- <p>Testez que toutes les parties de votre site sont entièrement navigables à l'aide du clavier (touche Tab pour se déplacer, Shift+Tab pour revenir en arrière, Entrée pour activer un élément, Espace pour les actions interactives comme les boutons).</p>
243
-
244
- <h4>Vérification manuelle :</h4>
245
- <ul className="verification-steps">
246
- <li>Naviguez sur toutes les sections du site uniquement avec le clavier.</li>
247
- <li>Testez tous les éléments interactifs : menus, formulaires, liens, boutons, carrousels, fenêtres modales, etc.</li>
248
- <li>Assurez-vous que les menus déroulants s'ouvrent avec le clavier et que vous pouvez accéder à tous les champs de formulaire et boutons sans difficulté.</li>
249
- <li>Vérifiez qu'aucun piège au clavier n'existe (boucle, etc.)</li>
250
- </ul>
251
-
241
+
242
+ <h4>Objectif</h4>
243
+ <p>S'assurer que toutes les parties sont entièrement navigables au clavier</p>
244
+ <h4>Méthode de test</h4>
245
+ <ol>
246
+ <li>Naviguer via la touche Tab pour se déplacer, Shift+Tab pour revenir en arrière, Entrée/Espace/Flèches/etc. en fonction des composants.</li>
247
+ <li>Tester tous les éléments interactifs : menus, menus déroulants, formulaires, liens, boutons, carrousels, fenêtres modales, etc. Concernant le comportement clavier pour les composants d'interface, se renseigner via les <a href="https://www.w3.org/WAI/ARIA/apg/patterns/">patterns du W3C</a>.</li>
248
+ <li>S'assurer que l'ordre de tabulation est cohérent.</li>
249
+ <li>S'assurer que le focus du clavier reste visible et possède un contraste minimum de 3:1.</li>
250
+ <li>Vérifier qu'aucun piège au clavier n'existe (boucle, etc.).</li>
251
+ </ol>
252
+ <h4>Outil éventuel</h4>
253
+ <p>Aucun</p>
254
+
252
255
  <div className="alert">
253
- <p><strong>Exemple :</strong> Vérifiez si un utilisateur peut remplir un formulaire de contact en utilisant uniquement les touches de tabulation.</p>
256
+ <p><strong>Exemple :</strong> </p>
257
+ <ul>
258
+ <li>Vérifiez si un utilisateur peut remplir un formulaire de contact en utilisant uniquement les touches de tabulation.</li>
259
+ <li>S'assurer que la navigation via les touches de tabulation reste uniquement au sein de la boîte de dialogue.</li>
260
+ </ul>
254
261
  </div>
255
262
  </div>
256
263
 
257
264
  <div className="verification-card">
258
265
  <h3>📺 2. Éléments visuels et déclenchements automatiques</h3>
259
-
260
- <p>Vérifiez que les animations, transitions et autres éléments visuels peuvent être arrêtés, mis en pause ou désactivés par l'utilisateur.</p>
261
-
262
- <h4>Vérification manuelle :</h4>
263
- <ul className="verification-steps">
264
- <li>Identifiez tous les éléments qui bougent, clignotent ou se mettent à jour automatiquement sur votre site.</li>
265
- <li>Vérifiez que ces éléments peuvent être arrêtés ou mis en pause par l'utilisateur.</li>
266
- <li>Assurez-vous qu'aucun contenu ne clignote plus de trois fois par seconde (risque de crises d'épilepsie).</li>
267
- </ul>
268
-
266
+
267
+ <h4>Objectif</h4>
268
+ <p>Vérifier que les animations, transitions et autres éléments visuels peuvent être arrêtés, mis en pause ou désactivés par l'utilisateur.</p>
269
+ <h4>Méthode de test</h4>
270
+ <ol>
271
+ <li>Identifier tous les éléments animés, qui clignotent ou se mettent à jour automatiquement sur votre site.</li>
272
+ <li>Vérifier que ces éléments peuvent être arrêtés ou mis en pause par l'utilisateur.</li>
273
+ <li>S'assurer que la durée du mouvement est inférieure ou égale à 5 secondes s'il n'existe aucun moyen d'arrêter ou de masquer le contenu.</li>
274
+ </ol>
275
+ <h4>Outil éventuel</h4>
276
+ <p>Aucun</p>
277
+
269
278
  <div className="alert">
270
- <p><strong>Exemple :</strong> Un carrousel d'images doit pouvoir être arrêté ou ralenti par l'utilisateur.</p>
279
+ <p><strong>Exemple :</strong> Un carrousel d'images doit pouvoir être arrêté par l'utilisateur.</p>
271
280
  </div>
272
281
  </div>
273
282
 
274
283
  <div className="verification-card">
275
- <h3>🔗 3. Pertinence des liens et des boutons</h3>
276
-
277
- <p>Le texte des liens et des boutons doit être explicite, clair et contextuel, en évitant les termes génériques comme "Cliquez ici" ou "En savoir plus".</p>
278
-
279
- <h4>Vérification manuelle :</h4>
280
- <ul className="verification-steps">
281
- <li>Parcourez tous les liens et boutons du site.</li>
282
- <li>Vérifiez que chaque lien ou bouton a un intitulé qui décrit clairement sa fonction ou sa destination.</li>
283
- <li>Assurez-vous que les liens vers des documents téléchargeables indiquent le format et la taille du fichier.</li>
284
- </ul>
285
-
284
+ <h3>🔗 3. Pertinence des libellés et textes alternatifs</h3>
285
+
286
+ <h4>Objectif</h4>
287
+ <p>Les libellés et textes alternatifs des images, liens, boutons doivent être explicite, clair et contextuel, en évitant les termes génériques comme "Logo", "Cliquez ici" ou "En savoir plus".</p>
288
+ <h4>Méthode de test</h4>
289
+ <ol>
290
+ <li>Inspecter les images porteuses d'information et s'assurer qu'elles contiennent un alt pertinent (ou legend pour les balises picture)</li>
291
+ <li l'inverse, s'assurer que seules les images de décoration sont ignorées par les technologies d'assistance (ex: aria-hidden="true")</li>
292
+ <li>Vérifier que chaque lien ou bouton a un intitulé qui décrit clairement sa fonction ou sa destination.</li>
293
+ </ol>
294
+ <h4>Outil éventuel</h4>
295
+ <p>Pour les images, le plugin Assistant RGAA permet de mettre en évidence les images considérées avec ou sans alternative textuelle (catégorie 1). La catégorie 6 du même plugin permet de mettre en évidence les liens et liens images.</p>
296
+
286
297
  <div className="alert">
287
- <p><strong>Exemple :</strong> Au lieu de "Cliquez ici", préférez "Télécharger le formulaire d'inscription (PDF, 1,2 Mo)".</p>
298
+ <p><strong>Exemple :</strong></p>
299
+ <ul>
300
+ <li>Au lieu de "Cliquez ici", préférer "Télécharger le formulaire d'inscription (PDF, 1,2 Mo)"</li>
301
+ <li>Pour une image d'un graphique présentant des données, l'attribut alt pourrait être : <code>alt="Graphique montrant l'évolution des ventes de 2019 à 2023 avec une augmentation de 20% en 2023"</code></li>
302
+ <li>Ajouter un <code>`<span class="sr-only">Fermer le panier</span>`</code> au sein du bouton de l'icône croix de la boîte de dialogue.</li>
303
+ </ul>
288
304
  </div>
289
305
  </div>
290
306
 
291
307
  <div className="verification-card">
292
308
  <h3>📝 4. Formulaires</h3>
293
-
309
+
310
+ <h4>Objectif</h4>
294
311
  <p>Assurez-vous que tous les éléments d'un formulaire sont accessibles et compréhensibles pour les utilisateurs, y compris ceux qui utilisent des technologies d'assistance (lecteurs d'écran, commandes vocales, etc.).</p>
295
-
296
- <h4>Vérification manuelle :</h4>
297
-
312
+
313
+ <h4>Méthode de test :</h4>
314
+
298
315
  <div className="verification-steps">
299
316
  <h5>1. Labels associés aux champs</h5>
300
- <ul>
301
- <li>Vérifiez que chaque champ de formulaire a un label explicite et associé correctement, en utilisant les balises <code>&lt;label&gt;</code> avec l'attribut <code>for</code> correspondant à l'<code>id</code> du champ de saisie.</li>
302
- <li>Consultez <a href="https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#11.2">le critère RGAA 11.2</a> pour en savoir plus sur la pertinence d'une étiquette associée à un champ de formulaire.</li>
303
- </ul>
317
+ <ol>
318
+ <li>Vérifier que chaque champ de formulaire a un label explicite et associé correctement, en utilisant les balises <code>&lt;label&gt;</code> avec l'attribut <code>for</code> correspondant à l'<code>id</code> du champ de saisie. Ce label ne devra pas disparaître au remplissage.</li>
319
+ <li>Consulter <a href="https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#11.2">le critère RGAA 11.2</a> pour en savoir plus sur la pertinence d'une étiquette associée à un champ de formulaire.</li>
320
+ <li>S'assurer que les étiquettes de champ sont accolées au champ, immédiatement au-dessous ou à droite pour les champ de type `checkbox` ou `radio`, immédiatement au-dessus ou à gauche pour les autres (cas d'un sens de lecture de langue de gauche à droite).</li>
321
+ </ol>
304
322
  <div className="alert">
305
323
  <p><strong>Exemple :</strong> Pour un champ de saisie de nom, assurez-vous qu'il est bien associé à un label : <code>&lt;label for="nom"&gt;Nom :&lt;/label&gt; &lt;input type="text" id="nom"&gt;</code>.</p>
306
324
  </div>
307
-
308
- <h5>2. Messages d'erreur et validation</h5>
309
- <ul>
310
- <li>Vérifiez que des messages d'erreur sont clairement associés aux champs en cas de saisie incorrecte.</li>
311
- <li>Testez que ces messages d'erreur sont visibles, compréhensibles et bien positionnés.</li>
312
- <li>Vérifiez également qu'ils sont annoncés par le lecteur d'écran.</li>
313
- </ul>
314
-
315
- <h5>3. Groupes de champs et aide contextuelle</h5>
316
- <ul>
317
- <li>Vérifiez que les champs sont regroupés de manière logique, avec des titres ou des instructions claires pour chaque section.</li>
318
- <li>Assurez-vous que des indices ou des descriptions contextuelles sont fournis pour aider l'utilisateur.</li>
319
- </ul>
320
-
321
- <h5>4. Focus visuel</h5>
322
- <ul>
323
- <li>Testez que le focus visuel est bien visible lorsqu'un utilisateur navigue au clavier entre les champs du formulaire.</li>
324
- </ul>
325
+
326
+ <h5>2. Aide à la saisie, messages d'erreur et validation</h5>
327
+ <ol>
328
+ <li>S'assurer que l'indication de champ obligatoire est visible et qu'il existe un attribut `required` (ou `aria-requied="true"`).</li>
329
+ <li>Vérifier que les aides à la saisie et messages d'erreur sont clairement associés aux champs en cas de saisie incorrecte (annoncé au lecteur d'écran via un `aria-describedby` + ajout de la balise `aria-invalid="true"`).</li>
330
+ <li>Tester que ces messages d'erreur sont visibles, compréhensibles et bien positionnés. Si nécessaire, le message d'erreur devra posséder une suggestion.</li>
331
+ </ol>
332
+
333
+ <h5>3. Groupes de champs</h5>
334
+ <ol>
335
+ <li>Vérifier que les champs de même nature sont regroupés via un `fieldset` ou un `role="group"` (par exemple, champs de type `checkbox` ou `radio`, numéro de sécurité social en 2 champs, etc.)</li>
336
+ <li>S'assurer qu'une légende existe et est pertinente (`legend` si `fielset`; `aria-label` ou `aria-describedby` si `role="group"`).</li>
337
+ </ol>
338
+
339
+ <h5>4. Retour après soumission du formulaire</h5>
340
+ <ol>
341
+ <li>Tester la soumission du formulaire et vérifier le comportement en cas de succès. L'utilisateur doit être informé (changement de page, message de statut, etc.).</li>
342
+ <li>Tester la soumission du formulaire et vérifier le comportement en cas d'erreur. L'utilisateur devra être redirigé, soit vers le premier champ en erreur, soit sur un message d'erreur global situé tout en haut du formulaire.</li>
343
+ </ol>
344
+
345
+ <h5>5. Remplissage automatique</h5>
346
+ <ol>
347
+ <li>Inspecter les champs de formulaire afin de vérifier la présence de l'attribut `autocomplete` et sa pertinence (s'appuyer sur la <a href="https://accessibilite.numerique.gouv.fr/methode/glossaire/#liste-des-valeurs-possibles-pour-l-attribut-autocomplete">liste des valeurs possibles pour l’attribut autocomplete du site officiel <abbr title="Référentiel Général d'Amélioration de l'Accessibilité">RGAA</abbr></a>)</li>
348
+ <li>Tester la soumission du formulaire et vérifier le comportement en cas d'erreur. L'utilisateur devra être redirigé, soit vers le premier champ en erreur, soit sur un message d'erreur global situé tout en haut du formulaire.</li>
349
+ </ol>
325
350
  </div>
351
+
352
+ <h4>Outil éventuel</h4>
353
+ <p>Utilisation du lecteur d'écran pour vérifier la navigation et l'accessibilité des formulaires, tel que l'indication du caractère obligatoire du champ, la liaison du champ aux aides à la saisie ainsi qu'aux messages d'erreurs, le comportement à la soumission du formulaire, etc.</p>
326
354
  </div>
327
355
 
328
356
  <div className="verification-card">
329
- <h3>📃 5. Tableaux accessibles</h3>
330
-
331
- <p>Vérifiez que les tableaux de données sont bien structurés avec des balises <code>&lt;th&gt;</code> pour les en-têtes et des descriptions de colonnes et lignes claires, permettant une navigation facile pour les utilisateurs de lecteurs d'écran.</p>
332
-
333
- <h4>Vérification manuelle :</h4>
334
- <ul className="verification-steps">
335
- <li>Identifiez tous les tableaux de données sur le site.</li>
336
- <li>Vérifiez que les cellules d'en-tête sont correctement marquées avec des balises <code>&lt;th&gt;</code> et non des balises <code>&lt;td&gt;</code> stylisées.</li>
357
+ <h3>📃 5. Tableaux</h3>
358
+
359
+ <h4>Objectif</h4>
360
+ <p>Vérifier que les tableaux de données sont bien structurés</p>
361
+ <h4>Méthode de test</h4>
362
+ <ol>
363
+ <li>S'assurer que les titres des tableaux de données sont sémantiquement rattachés au tableau et sont pertinents.</li>
364
+ <li>S'assurer que tableaux de données complexes (en-têtes n'étant pas qu'en une seule ligne ou une seule colonne) possèdent un résumé pertinent.</li>
365
+ <li>Vérifiez que les cellules d'en-tête sont correctement déclarées avec des balises <code>&lt;th&gt;</code> et non des balises <code>&lt;td&gt;</code> stylisées.</li>
337
366
  <li>Assurez-vous que les tableaux complexes ont des attributs <code>scope</code> ou des associations entre cellules d'en-tête et cellules de données.</li>
338
- </ul>
339
-
367
+ </ol>
368
+ <h4>Outil éventuel</h4>
369
+ <p>Inspecteur de code</p>
370
+
340
371
  <div className="alert">
341
- <p><strong>Exemple :</strong> Pour un tableau listant des produits avec leurs prix, assurez-vous que les en-têtes de colonnes ("Produit", "Prix", etc.) sont marquées avec des balises <code>&lt;th&gt;</code> et non des balises <code>&lt;td&gt;</code> stylisées.</p>
372
+ <p><strong>Exemple :</strong> </p>
373
+ <ul>
374
+ <li>Le tableau a un titre visible pertinent "Effectif et densité de professionnels de santé libéraux par région - 2016 à 2023" qui est rattaché sémantiquement au tableau via la balise `caption` (ou l'attribut `aria-labelledby`).</li>
375
+ <li>Les en-têtes de colonnes des tableaux utilisent des balises `th` avec l'attribut `scope="col"`.</li>
376
+ </ul>
342
377
  </div>
343
378
  </div>
344
379
 
345
380
  <div className="verification-card">
346
- <h3>📬 6. Langue de la page</h3>
347
-
348
- <p>Vérifiez que la langue du contenu principal de la page est correctement définie avec l’attribut `lang` dans l'élément `<html>`, ce qui permet aux technologies d’assistance de prononcer le texte dans la langue correcte.</p>
349
-
350
- <h4>Vérification manuelle :</h4>
351
- <ul className="verification-steps">
381
+ <h3>📬 6. Langue</h3>
382
+ <h4>Objectif</h4>
383
+ <p>Permettre aux lecteurs d’écran dutiliser la bonne prononciation.</p>
384
+ <h4>Méthode de test</h4>
385
+ <ol>
352
386
  <li>Inspectez le code source de la page (clic droit > "Inspecter" dans le navigateur) et vérifiez que l’attribut `lang="fr"` (ou la langue correspondante) est bien présent dans l’élément `<html>`. S’il s’agit d’une autre langue, elle doit être pertinente ([voir documentation MDN sur l’attribut lang](https://developer.mozilla.org/fr/docs/Web/HTML/Global_attributes/lang))</li>
353
- <li>Exemple : Si votre site est en français, l'élément `<html>` devrait être : `<html lang="fr">`.</li>
354
- </ul>
387
+ <li>Repérer les mots/phrases dans une autre langue au sein de la page et vérifier l'existence et la valeur de l’attribut <code>lang</code>.</li>
388
+ </ol>
389
+ <h4>Outil éventuel</h4>
390
+ <p>Inspecteur de code</p>
391
+
392
+ <div className="alert">
393
+ <p><strong>Exemple :</strong> Si votre site est en français, l'élément `<html>` devrait être : `<html lang="fr">`.</p>
394
+ </div>
355
395
  </div>
356
396
 
357
397
  <div className="verification-card">
358
- <h3>📄 7. Titre de la page</h3>
359
-
360
- <p>Le titre de chaque page (`<title>`) doit être descriptif, unique et pertinent par rapport au contenu de la page.</p>
361
-
362
- <h4>Vérification manuelle :</h4>
363
- <ul className="verification-steps">
364
- <li>Ouvrez chaque page du site et lisez le titre affiché dans l'onglet du navigateur.</li>
365
- <li>Vérifiez que le titre est spécifique à la page (par exemple, "Page d'accueil" pour la page d'accueil, "Contactez-nous" pour la page de contact).</li>
366
- <li>Exemple : Le titre de la page sur un annuaire pourrait être "Annuaire - [Nom du service]" et non "Page 1".</li>
367
- </ul>
398
+ <h3>📄 7. Titre de la page et hiérarchie des titres</h3>
399
+
400
+ <h4>Objectif</h4>
401
+ <p>Vérifier que la page possède un titre descriptif, unique et pertinent. De plus, s'assurer que la structure des titres au sein de la page est cohérente.</p>
402
+ <h4>Méthode de test</h4>
403
+ <ol>
404
+ <li>Identifier si le titre affiché dans l'onglet du navigateur est pertinent.</li>
405
+ <li>Le contenu de la page devra avoir au moins un titre.</li>
406
+ <li>Analyser les balises de <code>h1</code> à <code>h6</code> en vérifiant la pertinence et la structure (aucun saut de niveau).</li>
407
+ <li>S'assurer que les titres sont sémantiquement correctes (présence d'une balise <code>hx</code> ou balises <code>role="heading" aria-level="x"</code></li>
408
+ </ol>
409
+ <h4>Outil éventuel</h4>
410
+ <p>Extension HeadingsMap (<a href="/?path=/docs/accessibilité-kit-de-pré-audit-outils-introduction--docs">voir la page des outils</a>)</p>
411
+
412
+ <div className="alert">
413
+ <p><strong>Exemple :</strong></p>
414
+ <ul>
415
+ <li>Le titre de la page sur un annuaire pourrait être "Annuaire (page 1 sur 5) - [Nom du service]" et non "Page 1".</li>
416
+ <li>Les titres "Logement", "Véhicule" et "Emploi" doivent être un sous-niveau du titre "Aides financières".</li>
417
+ </ul>
418
+ </div>
368
419
  </div>
369
420
 
370
421
  <div className="verification-card">
371
- <h3>📹 8. Accès aux contenus multimédia</h3>
372
-
373
- <p>Vérifiez que les vidéos et autres contenus multimédia sont accessibles, notamment en fournissant des sous-titres, des transcriptions ou d’autres alternatives textuelles.</p>
374
-
375
- <h4>Vérification manuelle :</h4>
376
- <ul className="verification-steps">
377
- <li>Testez les vidéos du site pour vérifier si elles proposent des sous-titres ou des transcriptions disponibles.</li>
378
- <li>Assurez-vous que les lecteurs vidéo permettent l’activation des sous-titres et que ces derniers sont synchronisés avec le contenu audio.</li>
379
- <li>Exemple : Si une vidéo présente une interview, vérifiez qu’une transcription complète ou des sous-titres sont fournis pour les utilisateurs sourds ou malentendants.</li>
380
- </ul>
422
+ <h3>📹 8. Contenus multimédia</h3>
423
+
424
+ <h4>Objectif</h4>
425
+ <p>Vérifier que les vidéos et autres contenus multimédia temporels possèdent, si nécessaire, une transcription textuelle, une audiodescription synchronisée et/ou des sous-titres synchronisés. Concernant les médias non temporels, s'assurer qu'ils possèdent une alternative ou sont accessibles par le clavier et tout dispositif de pointage.</p>
426
+ <h4>Méthode de test</h4>
427
+ <ol>
428
+ <li>Écouter les vidéos sans regarder l’écran et statuer sur la pertinence de l'audiodescription.</li>
429
+ <li>Lire une vidéo avec sous-titres activés et statuer sur leur pertinence.</li>
430
+ <li>Vérifier que toute transcription textuelle exprime tout ce qui est retranscrit oralement et suivent la chronologie du média.</li>
431
+ <li>S'assurer que tout son déclenché automatiquement peut, soit être stoppé, soit contrôlé indépendemment du volume, soit possède une durée inféreure ou égale à 3 secondes.</li>
432
+ </ol>
433
+ <h4>Outil éventuel</h4>
434
+ <p>Aucun</p>
381
435
  </div>
382
436
 
383
437
  <div className="info-section">
384
438
  <h2>💬 Conclusion</h2>
385
-
439
+
386
440
  <p>En suivant ces vérifications manuelles et automatisées, vous pourrez atteindre un premier niveau de conformité d'accessibilité pour votre service web. N'hésitez pas à documenter vos résultats et à solliciter de l'aide si nécessaire.</p>
387
-
441
+
388
442
  <div className="alert">
389
443
  <p><strong>Rappel :</strong> Complétez <a href="/documents/Checklist_pre-audit_CNAM_NOM_DU_PRODUIT.xlsx" target="_blank">le fichier de check-list</a> pour chaque page de votre échantillon afin de prouver votre niveau de conformité.</p>
390
444
  </div>
@@ -477,7 +477,8 @@ export const VuetifyItems = [
477
477
  ],
478
478
 
479
479
  solution: [{
480
- name: 'En étude',
480
+ name: 'SyRadioGroup',
481
+ href: '/?path=/docs/composants-formulaires-syradiogroup--docs',
481
482
  }],
482
483
  },
483
484
  {
@@ -282,6 +282,26 @@ export default {
282
282
  </script>
283
283
  `}/>
284
284
 
285
+ ## formatNir
286
+
287
+ Cette fonction formate un numéro de sécurité sociale (NIR) pour le rendre plus lisible en ajoutant des espaces à des positions fixes.
288
+
289
+ ### Importation
290
+
291
+ <Source dark code={`import { formatNir } from '@cnamts/synpase'
292
+ `}/>
293
+
294
+ ### Utilisation
295
+
296
+ <Source dark code={`// NIR sans clé
297
+ formatNir('1234567890123')
298
+ // '1 23 45 67 890 123'
299
+
300
+ // NIR avec clé
301
+ formatNir('123456789012345')
302
+ // '1 23 45 67 890 123 45'
303
+ `}/>
304
+
285
305
  ## Bonnes pratiques
286
306
 
287
307
  - Utilisez `formatDate` pour l'affichage des dates à l'utilisateur
@@ -96,6 +96,16 @@ console.log(parseDate('15/01/2023').toISOString()) // '2023-01-15T00:00:00.000Z'
96
96
  console.log(parseDate('2023-01-15').toISOString()) // '2023-01-15T00:00:00.000Z'
97
97
  `}/>
98
98
 
99
+ ### formatNir
100
+
101
+ Formate un numéro de sécurité sociale (NIR) pour le rendre plus lisible en ajoutant des espaces à des positions fixes.
102
+
103
+ <Source dark code={`import { formatNir } from '@cnamts/synpase'
104
+
105
+ console.log(formatNir('1234567890123')) // '1 23 45 67 890 123'
106
+ console.log(formatNir('123456789012345')) // '1 23 45 67 890 123 45'
107
+ `}/>
108
+
99
109
  ## Utilitaires de validation
100
110
 
101
111
  ### propValidator
@@ -0,0 +1,15 @@
1
+ import { insertAt } from '../insertAt'
2
+
3
+ const SPACE_CHARACTER = ' '
4
+ const SPACE_POSITIONS = [13, 10, 7, 5, 3, 1]
5
+
6
+ /** Format a NIR (with or without key) */
7
+ export function formatNir(nir: string): string {
8
+ let newValue = nir
9
+
10
+ SPACE_POSITIONS.forEach((position: number) => {
11
+ newValue = insertAt(newValue, position, SPACE_CHARACTER)
12
+ })
13
+
14
+ return newValue.trim()
15
+ }
@@ -9,6 +9,7 @@ export { LocalStorageUtility } from './localStorageUtility'
9
9
  export { calcHumanFileSize } from './calcHumanFileSize'
10
10
  export { convertToUnit } from './convertToUnit'
11
11
  export { formatDate } from './formatDate'
12
+ export { formatNir } from './formatNir/formatNir'
12
13
  export { parseDate } from './parseDate'
13
14
 
14
15
  // ===========================
@@ -0,0 +1,11 @@
1
+ export function insertAt(value: string, index: number, insert: string): string {
2
+ if (index <= 0) {
3
+ return insert + value
4
+ }
5
+
6
+ if (index >= value.length) {
7
+ return value
8
+ }
9
+
10
+ return value.slice(0, index) + insert + value.slice(index)
11
+ }
@@ -27,7 +27,7 @@ import * as IsDateValidStories from './IsDateValid.stories';
27
27
 
28
28
  <div className="header">
29
29
  <h1>Règle de validation `isDateValid`</h1>
30
- <p>La règle de validation `isDateValid` permet de vérifier si une chaîne de caractères est une date au format *DD/MM/YYYY*. </p>
30
+ <p>La règle de validation `isDateValid` permet de vérifier si une valeur (chaîne de caractères ou objet `Date`) correspond à une date au format *DD/MM/YYYY*. </p>
31
31
  </div>
32
32
 
33
33
  ## Usage
@@ -90,7 +90,7 @@ isDateValidFn(
90
90
  monthNotMatch: string;
91
91
  notALeapYear: string;
92
92
  }
93
- ): (value: string) => true | string;
93
+ ): (value: string | Date) => true | string;
94
94
  `} />
95
95
 
96
96
  ### Arguments
@@ -59,19 +59,21 @@ export const CustomMessage: StoryObj<unknown> = {
59
59
  return {
60
60
  components: { VTextField },
61
61
  setup() {
62
+ const date = ref('31/11/1993')
62
63
  const dateValid = isDateValidFn({
63
64
  default: 'The date you entered is invalid',
64
65
  wrongFormat: 'The format you entered is invalid',
65
66
  monthNotMatch: 'The day you entered exceeds the number of days in the corresponding month',
66
67
  notALeapYear: 'The day you entered is invalid because the corresponding year is not a leap year',
67
68
  })
68
- return { dateValid }
69
+ return { date, dateValid }
69
70
  },
70
71
  template: `
71
72
  <VTextField
73
+ v-model="date"
72
74
  :rules="[dateValid]"
73
75
  label="Date"
74
- validate-on="blur"
76
+ validate-on="eager blur"
75
77
  variant="outlined"
76
78
  />
77
79
  `,
@@ -86,7 +88,7 @@ export const CustomMessage: StoryObj<unknown> = {
86
88
  import { VTextField } from 'vuetify/components'
87
89
  import { isDateValidFn } from '@cnamts/synapse'
88
90
 
89
- const isDateValidCustom = isDateValid({
91
+ const isDateValidCustom = isDateValidFn({
90
92
  default: 'The date you entered is invalid',
91
93
  wrongFormat: 'The format you entered is invalid',
92
94
  monthNotMatch: 'The day you entered exceeds the number of days in the corresponding month',
@@ -102,7 +104,7 @@ export const CustomMessage: StoryObj<unknown> = {
102
104
  <VTextField
103
105
  :rules="[isDateValidCustom]"
104
106
  label="Date"
105
- validate-on="blur"
107
+ validate-on="eager blur"
106
108
  variant="outlined"
107
109
  />
108
110
  </template>
@@ -1,4 +1,6 @@
1
1
  import { ruleMessage } from '@/utils/ruleMessage'
2
+ import { formatDate } from '@/utils/formatDate'
3
+ import dayjs from 'dayjs'
2
4
  import type {
3
5
  ValidationRule,
4
6
  ValidationResult,
@@ -18,14 +20,27 @@ export function isDateValidFn(
18
20
  if (!value) {
19
21
  return true
20
22
  }
21
-
22
- const validationResult = typeof value === 'string' && checkIfDateValid(value)
23
- const errorMessage
24
- = typeof validationResult === 'string'
25
- ? ruleMessage(errorMessages, validationResult)
26
- : true
27
-
28
- return errorMessage || ruleMessage(errorMessages, 'default')
23
+ let validationResult: string | true | false
24
+ if (value instanceof Date) {
25
+ const formatted = formatDate(dayjs(value))
26
+ validationResult = checkIfDateValid(formatted)
27
+ }
28
+ else if (typeof value === 'string') {
29
+ validationResult = checkIfDateValid(value)
30
+ }
31
+ else {
32
+ return ruleMessage(errorMessages, 'default')
33
+ }
34
+ if (validationResult === true) {
35
+ return true
36
+ }
37
+ if (typeof validationResult === 'string') {
38
+ if (Object.prototype.hasOwnProperty.call(errorMessages, validationResult)) {
39
+ return ruleMessage(errorMessages, validationResult)
40
+ }
41
+ return ruleMessage(errorMessages, 'default')
42
+ }
43
+ return ruleMessage(errorMessages, 'default')
29
44
  }
30
45
  }
31
46
 
@@ -3,6 +3,7 @@ import { describe, it, expect } from 'vitest'
3
3
 
4
4
  const validDate = '14/09/2019'
5
5
  const invalidDate = '99/99/9999'
6
+ const validDateObject = new Date(2019, 8, 14)
6
7
 
7
8
  describe('isDateValid', () => {
8
9
  it('returns an error when the date is not valid', () => {
@@ -17,6 +18,14 @@ describe('isDateValid', () => {
17
18
  expect(isDateValid('')).toBe(true)
18
19
  })
19
20
 
21
+ it('returns true when the value is a valid Date object', () => {
22
+ expect(isDateValid(validDateObject)).toBe(true)
23
+ })
24
+
25
+ it('returns an error when the value type is not supported', () => {
26
+ expect(typeof isDateValid(123 as unknown as string)).toBe('string')
27
+ })
28
+
20
29
  it('works with custom error messages', () => {
21
30
  const rule = isDateValidFn({
22
31
  default: 'test',
@@ -65,7 +65,7 @@ const length15 = isExactLengthFn(15);
65
65
 
66
66
  ## API
67
67
 
68
- `} />typescript
68
+ <Source dark code={`
69
69
  isExactLengthFn(
70
70
  lengthValue: number,
71
71
  ignoreSpaces?: boolean