@cnamts/synapse 1.0.9 → 1.0.10

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 (393) hide show
  1. package/dist/{DateFilter-BylukfjR.js → DateFilter-C0wDuzgn.js} +1 -1
  2. package/dist/{NumberFilter-C_bUk9o1.js → NumberFilter-CBj7zdOi.js} +1 -1
  3. package/dist/{PeriodFilter-dVOmcfmt.js → PeriodFilter-DB4wWyKy.js} +1 -1
  4. package/dist/{SelectFilter-BW8KpXkQ.js → SelectFilter-Dces8572.js} +1 -1
  5. package/dist/{TextFilter-diwVzTz7.js → TextFilter-BU9nlkuS.js} +1 -1
  6. package/dist/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.d.ts +110 -0
  7. package/dist/components/Amelipro/AmeliproAccordionFrieze/types.d.ts +6 -0
  8. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +120 -120
  9. package/dist/components/Amelipro/AmeliproBtn/AmeliproBtn.d.ts +2 -2
  10. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarousel.d.ts +3 -3
  11. package/dist/components/Amelipro/AmeliproDentalChart/AmeliproDentalChart.d.ts +47 -0
  12. package/dist/components/Amelipro/AmeliproDentalChart/AmeliproTooth/AmeliproTooth.d.ts +88 -0
  13. package/dist/components/Amelipro/AmeliproDentalChart/types.d.ts +13 -0
  14. package/dist/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.d.ts +70 -0
  15. package/dist/components/Amelipro/AmeliproFirstLogin/locales.d.ts +46 -0
  16. package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +1 -1
  17. package/dist/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.d.ts +149 -0
  18. package/dist/components/Amelipro/AmeliproPatientLogged/types.d.ts +48 -0
  19. package/dist/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLogin.d.ts +177 -0
  20. package/dist/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/AmeliproPatientLoginForm.d.ts +169 -0
  21. package/dist/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/types.d.ts +5 -0
  22. package/dist/components/Amelipro/AmeliproPatientLogin/types.d.ts +5 -0
  23. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +2925 -0
  24. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/types.d.ts +11 -0
  25. package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +4489 -0
  26. package/dist/components/Amelipro/AmeliproPostalAddressField/types.d.ts +17 -0
  27. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +120 -120
  28. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +120 -120
  29. package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +12 -12
  30. package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +30 -30
  31. package/dist/components/Amelipro/AmeliproTooltips/AmeliproTooltips.d.ts +12 -2
  32. package/dist/components/CookieBanner/CookieBanner.d.ts +7 -7
  33. package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +20 -20
  34. package/dist/components/CookiesSelection/CookiesSelection.d.ts +9 -9
  35. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +7 -6
  36. package/dist/components/Customs/SyForm/SyForm.d.ts +1820 -0
  37. package/dist/components/Customs/SyTabs/SyTabs.d.ts +3 -1
  38. package/dist/components/Customs/SyTabs/useTabTransition.d.ts +5 -0
  39. package/dist/components/Customs/SyTextField/SyTextField.d.ts +36 -31
  40. package/dist/components/Customs/SyTextField/types.d.ts +1 -1
  41. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +232 -134
  42. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +121 -71
  43. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +60 -37
  44. package/dist/components/DatePicker/composables/useDateValidation.d.ts +14 -2
  45. package/dist/components/DatePicker/composables/useManualDateValidation.d.ts +2 -2
  46. package/dist/components/DatePicker/tests/setup.d.ts +74354 -0
  47. package/dist/components/DialogBox/DialogBox.d.ts +10 -10
  48. package/dist/components/DialogBox/locales.d.ts +1 -0
  49. package/dist/components/DialogBox/useDraggable.d.ts +2 -0
  50. package/dist/components/FilterSideBar/FilterSideBar.d.ts +7 -7
  51. package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.d.ts +2 -0
  52. package/dist/components/HeaderNavigationBar/types.d.ts +1 -0
  53. package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +842 -9
  54. package/dist/components/HeaderToolbar/locales.d.ts +3 -0
  55. package/dist/components/HeaderToolbar/useMobileRightMenu.d.ts +10 -0
  56. package/dist/components/LangBtn/LangBtn.d.ts +8 -8
  57. package/dist/components/NirField/NirField.d.ts +90 -65
  58. package/dist/components/NirField/locales.d.ts +6 -4
  59. package/dist/components/PasswordField/PasswordField.d.ts +3 -1
  60. package/dist/components/PasswordField/locales.d.ts +2 -0
  61. package/dist/components/PeriodField/PeriodField.d.ts +460 -260
  62. package/dist/components/PhoneField/PhoneField.d.ts +45 -32
  63. package/dist/components/RangeField/RangeField.d.ts +11 -1
  64. package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +2 -2
  65. package/dist/components/RangeField/config.d.ts +3 -0
  66. package/dist/components/RatingPicker/EmotionPicker/EmotionPicker.d.ts +3 -1
  67. package/dist/components/RatingPicker/EmotionPicker/locales.d.ts +2 -0
  68. package/dist/components/RatingPicker/NumberPicker/NumberPicker.d.ts +3 -1
  69. package/dist/components/RatingPicker/StarsPicker/StarsPicker.d.ts +3 -1
  70. package/dist/components/RatingPicker/locales.d.ts +1 -0
  71. package/dist/components/SearchListField/SearchListField.d.ts +6 -6
  72. package/dist/components/SyAlert/SyAlert.d.ts +2 -2
  73. package/dist/components/SyTextArea/SyTextArea.d.ts +13 -13
  74. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +3 -5
  75. package/dist/components/Tables/SyTable/SyTable.d.ts +3 -5
  76. package/dist/components/Tables/common/SyTablePagination.d.ts +8 -6
  77. package/dist/components/Tables/common/organizeColumns/OrganizeColumns.d.ts +4 -4
  78. package/dist/components/Tables/common/usePagination.d.ts +1 -3
  79. package/dist/components/Tables/common/useTableCheckbox.d.ts +1 -1
  80. package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +4 -4
  81. package/dist/components/index.d.ts +8 -0
  82. package/dist/composables/validation/useFormValidation.d.ts +24 -0
  83. package/dist/composables/validation/useValidatable.d.ts +17 -0
  84. package/dist/design-system-v3.js +181 -173
  85. package/dist/design-system-v3.umd.cjs +265 -263
  86. package/dist/{main-2eWGB7zZ.js → main-Dt4iNotT.js} +14095 -11151
  87. package/dist/style.css +1 -1
  88. package/dist/tooth-11-B9fN9Ow_.js +4 -0
  89. package/dist/tooth-12-BOOjuDe9.js +4 -0
  90. package/dist/tooth-13-DVU7jhZ8.js +4 -0
  91. package/dist/tooth-14-CXNleTBu.js +4 -0
  92. package/dist/tooth-15-iq3z8dzZ.js +4 -0
  93. package/dist/tooth-16-BuNIHSQk.js +4 -0
  94. package/dist/tooth-17-DLb4ijsH.js +4 -0
  95. package/dist/tooth-18-huijQe68.js +4 -0
  96. package/dist/tooth-21-Bl7Q-o4y.js +4 -0
  97. package/dist/tooth-22-ChQKI3h5.js +4 -0
  98. package/dist/tooth-23-CkzbEvBa.js +4 -0
  99. package/dist/tooth-24-BpaPUSEp.js +4 -0
  100. package/dist/tooth-25-BaVfhAL6.js +4 -0
  101. package/dist/tooth-26-BnL03Jv5.js +4 -0
  102. package/dist/tooth-27-BaHyZfhH.js +4 -0
  103. package/dist/tooth-28-BrMBVEgX.js +4 -0
  104. package/dist/tooth-31-DEH3Btej.js +4 -0
  105. package/dist/tooth-32-Dqcy596v.js +4 -0
  106. package/dist/tooth-33-DLzQOVky.js +4 -0
  107. package/dist/tooth-34-36nkjUPW.js +4 -0
  108. package/dist/tooth-35-VfFhleWT.js +4 -0
  109. package/dist/tooth-36-BHwtGkLx.js +4 -0
  110. package/dist/tooth-37-CT47Rtk-.js +4 -0
  111. package/dist/tooth-38-D15JmYSD.js +4 -0
  112. package/dist/tooth-41--x9N_iSc.js +4 -0
  113. package/dist/tooth-42-DZ1D3qmP.js +4 -0
  114. package/dist/tooth-43-C9T3b5_0.js +4 -0
  115. package/dist/tooth-44-CsPRBSZV.js +4 -0
  116. package/dist/tooth-45-Dg3wQunm.js +4 -0
  117. package/dist/tooth-46-DAOEt4G5.js +4 -0
  118. package/dist/tooth-47-DcqUeVM0.js +4 -0
  119. package/dist/tooth-48-0MVzkYem.js +4 -0
  120. package/dist/tooth-51-DOTod22I.js +4 -0
  121. package/dist/tooth-52-DZB1Jabv.js +4 -0
  122. package/dist/tooth-53-nunm2BQr.js +4 -0
  123. package/dist/tooth-54-BwdYfBd-.js +4 -0
  124. package/dist/tooth-55-BUJdNwqL.js +4 -0
  125. package/dist/tooth-61-BwqR1B88.js +4 -0
  126. package/dist/tooth-62-BzaECsvF.js +4 -0
  127. package/dist/tooth-63-wjdIfSq2.js +4 -0
  128. package/dist/tooth-64-CGW4ZcUq.js +4 -0
  129. package/dist/tooth-65-DxH4GgAL.js +4 -0
  130. package/dist/tooth-71-CmjVz11G.js +4 -0
  131. package/dist/tooth-72-CCyNUD-W.js +4 -0
  132. package/dist/tooth-73-D6aJwVz4.js +4 -0
  133. package/dist/tooth-74-zNtDQ6ig.js +4 -0
  134. package/dist/tooth-75-DDEx6y4E.js +4 -0
  135. package/dist/tooth-81-xg8UVvz2.js +4 -0
  136. package/dist/tooth-82-CtNXwBtB.js +4 -0
  137. package/dist/tooth-83-C2ODw7VT.js +4 -0
  138. package/dist/tooth-84-BKIdO9HA.js +4 -0
  139. package/dist/tooth-85-3YmvfAsK.js +4 -0
  140. package/package.json +2 -2
  141. package/src/assets/amelipro/img/dental-chart-img/tooth-11.svg +16 -0
  142. package/src/assets/amelipro/img/dental-chart-img/tooth-12.svg +11 -0
  143. package/src/assets/amelipro/img/dental-chart-img/tooth-13.svg +11 -0
  144. package/src/assets/amelipro/img/dental-chart-img/tooth-14.svg +26 -0
  145. package/src/assets/amelipro/img/dental-chart-img/tooth-15.svg +21 -0
  146. package/src/assets/amelipro/img/dental-chart-img/tooth-16.svg +31 -0
  147. package/src/assets/amelipro/img/dental-chart-img/tooth-17.svg +26 -0
  148. package/src/assets/amelipro/img/dental-chart-img/tooth-18.svg +26 -0
  149. package/src/assets/amelipro/img/dental-chart-img/tooth-21.svg +16 -0
  150. package/src/assets/amelipro/img/dental-chart-img/tooth-22.svg +11 -0
  151. package/src/assets/amelipro/img/dental-chart-img/tooth-23.svg +11 -0
  152. package/src/assets/amelipro/img/dental-chart-img/tooth-24.svg +26 -0
  153. package/src/assets/amelipro/img/dental-chart-img/tooth-25.svg +21 -0
  154. package/src/assets/amelipro/img/dental-chart-img/tooth-26.svg +31 -0
  155. package/src/assets/amelipro/img/dental-chart-img/tooth-27.svg +26 -0
  156. package/src/assets/amelipro/img/dental-chart-img/tooth-28.svg +26 -0
  157. package/src/assets/amelipro/img/dental-chart-img/tooth-31.svg +11 -0
  158. package/src/assets/amelipro/img/dental-chart-img/tooth-32.svg +11 -0
  159. package/src/assets/amelipro/img/dental-chart-img/tooth-33.svg +11 -0
  160. package/src/assets/amelipro/img/dental-chart-img/tooth-34.svg +11 -0
  161. package/src/assets/amelipro/img/dental-chart-img/tooth-35.svg +22 -0
  162. package/src/assets/amelipro/img/dental-chart-img/tooth-36.svg +26 -0
  163. package/src/assets/amelipro/img/dental-chart-img/tooth-37.svg +26 -0
  164. package/src/assets/amelipro/img/dental-chart-img/tooth-38.svg +11 -0
  165. package/src/assets/amelipro/img/dental-chart-img/tooth-41.svg +11 -0
  166. package/src/assets/amelipro/img/dental-chart-img/tooth-42.svg +11 -0
  167. package/src/assets/amelipro/img/dental-chart-img/tooth-43.svg +11 -0
  168. package/src/assets/amelipro/img/dental-chart-img/tooth-44.svg +11 -0
  169. package/src/assets/amelipro/img/dental-chart-img/tooth-45.svg +22 -0
  170. package/src/assets/amelipro/img/dental-chart-img/tooth-46.svg +26 -0
  171. package/src/assets/amelipro/img/dental-chart-img/tooth-47.svg +26 -0
  172. package/src/assets/amelipro/img/dental-chart-img/tooth-48.svg +11 -0
  173. package/src/assets/amelipro/img/dental-chart-img/tooth-51.svg +11 -0
  174. package/src/assets/amelipro/img/dental-chart-img/tooth-52.svg +16 -0
  175. package/src/assets/amelipro/img/dental-chart-img/tooth-53.svg +16 -0
  176. package/src/assets/amelipro/img/dental-chart-img/tooth-54.svg +11 -0
  177. package/src/assets/amelipro/img/dental-chart-img/tooth-55.svg +16 -0
  178. package/src/assets/amelipro/img/dental-chart-img/tooth-61.svg +11 -0
  179. package/src/assets/amelipro/img/dental-chart-img/tooth-62.svg +16 -0
  180. package/src/assets/amelipro/img/dental-chart-img/tooth-63.svg +16 -0
  181. package/src/assets/amelipro/img/dental-chart-img/tooth-64.svg +11 -0
  182. package/src/assets/amelipro/img/dental-chart-img/tooth-65.svg +16 -0
  183. package/src/assets/amelipro/img/dental-chart-img/tooth-71.svg +11 -0
  184. package/src/assets/amelipro/img/dental-chart-img/tooth-72.svg +16 -0
  185. package/src/assets/amelipro/img/dental-chart-img/tooth-73.svg +16 -0
  186. package/src/assets/amelipro/img/dental-chart-img/tooth-74.svg +11 -0
  187. package/src/assets/amelipro/img/dental-chart-img/tooth-75.svg +16 -0
  188. package/src/assets/amelipro/img/dental-chart-img/tooth-81.svg +11 -0
  189. package/src/assets/amelipro/img/dental-chart-img/tooth-82.svg +16 -0
  190. package/src/assets/amelipro/img/dental-chart-img/tooth-83.svg +16 -0
  191. package/src/assets/amelipro/img/dental-chart-img/tooth-84.svg +11 -0
  192. package/src/assets/amelipro/img/dental-chart-img/tooth-85.svg +16 -0
  193. package/src/assets/amelipro/img/idpa/apcv_logo.svg +16 -0
  194. package/src/assets/amelipro/img/idpa/carte-vitale.svg +75 -0
  195. package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.mdx +15 -0
  196. package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.stories.ts +261 -0
  197. package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +419 -0
  198. package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/AmeliproAccordionFrieze.spec.ts +98 -0
  199. package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/__snapshots__/AmeliproAccordionFrieze.spec.ts.snap +858 -0
  200. package/src/components/Amelipro/AmeliproAccordionFrieze/types.d.ts +6 -0
  201. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +2 -2
  202. package/src/components/Amelipro/AmeliproAccordionList/__tests__/__snapshots__/AmeliproAccordionList.spec.ts.snap +0 -4
  203. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +2 -2
  204. package/src/components/Amelipro/AmeliproAccordionResultList/__tests__/__snapshots__/AmeliproAccordionResultList.spec.ts.snap +0 -4
  205. package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.stories.ts +97 -0
  206. package/src/components/Amelipro/AmeliproBtn/AmeliproBtn.stories.ts +190 -8
  207. package/src/components/Amelipro/AmeliproCallback/AmeliproCallback.stories.ts +321 -0
  208. package/src/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.vue +1 -1
  209. package/src/components/Amelipro/AmeliproCard/AmeliproCard.stories.ts +360 -0
  210. package/src/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.stories.ts +1 -1
  211. package/src/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.stories.ts +2 -2
  212. package/src/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.vue +1 -1
  213. package/src/components/Amelipro/AmeliproChips/AmeliproChips.stories.ts +46 -0
  214. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.stories.ts +173 -0
  215. package/src/components/Amelipro/AmeliproCopyBtn/AmeliproCopyBtn.stories.ts +112 -26
  216. package/src/components/Amelipro/AmeliproDentalChart/AmeliproDentalChart.mdx +15 -0
  217. package/src/components/Amelipro/AmeliproDentalChart/AmeliproDentalChart.stories.ts +1078 -0
  218. package/src/components/Amelipro/AmeliproDentalChart/AmeliproDentalChart.vue +163 -0
  219. package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/AmeliproTooth.vue +183 -0
  220. package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/tests/AmeliproTooth.spec.ts +20 -0
  221. package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/tests/__snapshots__/AmeliproTooth.spec.ts.snap +39 -0
  222. package/src/components/Amelipro/AmeliproDentalChart/tests/AmeliproDentalChart.spec.ts +468 -0
  223. package/src/components/Amelipro/AmeliproDentalChart/tests/__snapshots__/AmeliproDentalChart.spec.ts.snap +2589 -0
  224. package/src/components/Amelipro/AmeliproDentalChart/types.d.ts +13 -0
  225. package/src/components/Amelipro/AmeliproDialog/AmeliproDialog.stories.ts +333 -0
  226. package/src/components/Amelipro/AmeliproDialog/AmeliproDialog.vue +7 -2
  227. package/src/components/Amelipro/AmeliproDialog/tests/__snapshots__/AmeliproDialog.spec.ts.snap +1 -0
  228. package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.vue +1 -1
  229. package/src/components/Amelipro/AmeliproErrorTemplate/__tests__/__snapshots__/AmeliproErrorTemplate.spec.ts.snap +1 -2
  230. package/src/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.mdx +15 -0
  231. package/src/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.stories.ts +287 -0
  232. package/src/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.vue +331 -0
  233. package/src/components/Amelipro/AmeliproFirstLogin/__tests__/AmeliproFirstLogin.spec.ts +29 -0
  234. package/src/components/Amelipro/AmeliproFirstLogin/__tests__/__snapshots__/AmeliproFirstLogin.spec.ts.snap +1210 -0
  235. package/src/components/Amelipro/AmeliproFirstLogin/locales.ts +48 -0
  236. package/src/components/Amelipro/AmeliproIcon/AmeliproIcon.stories.ts +61 -1
  237. package/src/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.stories.ts +174 -0
  238. package/src/components/Amelipro/AmeliproIllustratedDataTile/AmeliproIllustratedDataTile.stories.ts +186 -0
  239. package/src/components/Amelipro/AmeliproMailTile/AmeliproMailTile.stories.ts +237 -0
  240. package/src/components/Amelipro/AmeliproMessage/AmeliproMessage.stories.ts +111 -0
  241. package/src/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.stories.ts +199 -0
  242. package/src/components/Amelipro/AmeliproNumberedCard/AmeliproNumberedCard.stories.ts +150 -0
  243. package/src/components/Amelipro/AmeliproOnboarding/AmeliproOnboarding.stories.ts +281 -8
  244. package/src/components/Amelipro/AmeliproPagination/AmeliproPagination.stories.ts +123 -43
  245. package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.mdx +18 -0
  246. package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.stories.ts +250 -0
  247. package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.vue +520 -0
  248. package/src/components/Amelipro/AmeliproPatientLogged/__tests__/AmeliproPatientLogged.spec.ts +79 -0
  249. package/src/components/Amelipro/AmeliproPatientLogged/__tests__/__snapshots__/AmeliproPatientLogged.spec.ts.snap +1140 -0
  250. package/src/components/Amelipro/AmeliproPatientLogged/types.d.ts +49 -0
  251. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLogin.mdx +18 -0
  252. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLogin.stories.ts +151 -0
  253. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLogin.vue +231 -0
  254. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/AmeliproPatientLoginForm.vue +252 -0
  255. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/__tests__/AmeliproPatientLoginForm.spec.ts +46 -0
  256. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/__tests__/__snapshots__/AmeliproPatientLoginForm.spec.ts.snap +33 -0
  257. package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/types.d.ts +6 -0
  258. package/src/components/Amelipro/AmeliproPatientLogin/__tests__/AmeliproPatientLogin.spec.ts +49 -0
  259. package/src/components/Amelipro/AmeliproPatientLogin/__tests__/__snapshots__/AmeliproPatientLogin.spec.ts.snap +60 -0
  260. package/src/components/Amelipro/AmeliproPatientLogin/types.d.ts +6 -0
  261. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.vue +464 -0
  262. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/__tests__/AmeliproPostalAddressCityRow.spec.ts +41 -0
  263. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/__tests__/__snapshots__/AmeliproPostalAddressCityRow.spec.ts.snap +548 -0
  264. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/types.d.ts +12 -0
  265. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.mdx +15 -0
  266. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.stories.ts +133 -0
  267. package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.vue +360 -0
  268. package/src/components/Amelipro/AmeliproPostalAddressField/tests/AmeliproPostalAddressField.spec.ts +27 -0
  269. package/src/components/Amelipro/AmeliproPostalAddressField/tests/__snapshots__/AmeliproPostalAddressField.spec.ts.snap +548 -0
  270. package/src/components/Amelipro/AmeliproPostalAddressField/types.d.ts +18 -0
  271. package/src/components/Amelipro/AmeliproRadioGroup/AmeliproRadioGroup.vue +4 -3
  272. package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.vue +2 -2
  273. package/src/components/Amelipro/AmeliproResultList/__tests__/__snapshots__/AmeliproResultList.spec.ts.snap +0 -4
  274. package/src/components/Amelipro/AmeliproStateTile/AmeliproStateTile.stories.ts +210 -0
  275. package/src/components/Amelipro/AmeliproStatus/AmeliproStatus.stories.ts +326 -0
  276. package/src/components/Amelipro/AmeliproTable/AmeliproTable.stories.ts +232 -4
  277. package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +3 -2
  278. package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +0 -4
  279. package/src/components/Amelipro/AmeliproTabs/AmeliproTabs.vue +1 -1
  280. package/src/components/Amelipro/AmeliproTextField/AmeliproTextField.stories.ts +2 -2
  281. package/src/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.stories.ts +222 -6
  282. package/src/components/Amelipro/AmeliproTooltips/AmeliproTooltips.stories.ts +169 -0
  283. package/src/components/Amelipro/AmeliproTooltips/AmeliproTooltips.vue +6 -1
  284. package/src/components/Amelipro/AmeliproTooltips/tests/__snapshots__/AmeliproTooltips.spec.ts.snap +1 -5
  285. package/src/components/Amelipro/AmeliproTransmission/AmeliproTransmission.stories.ts +160 -0
  286. package/src/components/Amelipro/StructureMenu/StructureMenu.vue +1 -1
  287. package/src/components/Amelipro/StructureMenu/tests/__snapshots__/StructureMenu.spec.ts.snap +1 -2
  288. package/src/components/Customs/Selects/SySelect/SySelect.vue +43 -1
  289. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +4 -0
  290. package/src/components/Customs/SyForm/Introduction.mdx +132 -0
  291. package/src/components/Customs/SyForm/SyForm.mdx +105 -0
  292. package/src/components/Customs/SyForm/SyForm.stories.ts +375 -0
  293. package/src/components/Customs/SyForm/SyForm.vue +80 -0
  294. package/src/components/Customs/SyTabs/SyTabs.stories.ts +31 -0
  295. package/src/components/Customs/SyTabs/SyTabs.vue +185 -27
  296. package/src/components/Customs/SyTabs/useTabTransition.ts +42 -0
  297. package/src/components/Customs/SyTextField/SyTextField.vue +12 -3
  298. package/src/components/Customs/SyTextField/types.d.ts +1 -1
  299. package/src/components/DataListItem/DataListItem.vue +12 -13
  300. package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +242 -41
  301. package/src/components/DatePicker/CalendarMode/DatePicker.vue +30 -12
  302. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +246 -59
  303. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +40 -10
  304. package/src/components/DatePicker/DatePickerOverview.mdx +5 -1
  305. package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.mdx +21 -21
  306. package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts +240 -133
  307. package/src/components/DatePicker/DateTextInput/DateRange.stories.ts +29 -1
  308. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +32 -9
  309. package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +166 -38
  310. package/src/components/DatePicker/composables/useDateValidation.ts +8 -5
  311. package/src/components/DatePicker/composables/useManualDateValidation.ts +23 -6
  312. package/src/components/DatePicker/datePickers.stories.ts +28 -0
  313. package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +47 -58
  314. package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +2 -2
  315. package/src/components/DatePicker/tests/DatePicker.validation.spec.ts +4654 -0
  316. package/src/components/DatePicker/tests/archiTest.md +33 -0
  317. package/src/components/DatePicker/tests/setup.ts +243 -0
  318. package/src/components/DialogBox/DialogBox.stories.ts +1 -1
  319. package/src/components/DialogBox/DialogBox.vue +25 -8
  320. package/src/components/DialogBox/locales.ts +1 -0
  321. package/src/components/DialogBox/tests/DialogBox.spec.ts +187 -15
  322. package/src/components/DialogBox/useDraggable.ts +92 -4
  323. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.vue +4 -0
  324. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/tests/__snapshots__/HeaderMenuItem.spec.ts.snap +4 -1
  325. package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +18 -2
  326. package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +14 -4
  327. package/src/components/HeaderNavigationBar/types.ts +1 -0
  328. package/src/components/HeaderToolbar/Accessibilite.stories.ts +8 -0
  329. package/src/components/HeaderToolbar/HeaderToolbar.mdx +0 -1
  330. package/src/components/HeaderToolbar/HeaderToolbar.stories.ts +65 -6
  331. package/src/components/HeaderToolbar/HeaderToolbar.vue +589 -162
  332. package/src/components/HeaderToolbar/locales.ts +3 -0
  333. package/src/components/HeaderToolbar/useMobileRightMenu.ts +121 -0
  334. package/src/components/NirField/Accessibilite.stories.ts +4 -0
  335. package/src/components/NirField/NirField.stories.ts +0 -11
  336. package/src/components/NirField/NirField.vue +164 -53
  337. package/src/components/NirField/locales.ts +6 -4
  338. package/src/components/NirField/tests/NirField.spec.ts +2 -2
  339. package/src/components/PasswordField/Accessibilite.stories.ts +96 -0
  340. package/src/components/PasswordField/PasswordField.stories.ts +8 -1
  341. package/src/components/PasswordField/PasswordField.vue +98 -19
  342. package/src/components/PasswordField/locales.ts +2 -0
  343. package/src/components/PasswordField/tests/PasswordField.spec.ts +1 -1
  344. package/src/components/PhoneField/PhoneField.vue +4 -0
  345. package/src/components/RangeField/Accessibilite.stories.ts +4 -0
  346. package/src/components/RangeField/RangeField.stories.ts +60 -0
  347. package/src/components/RangeField/RangeField.vue +37 -21
  348. package/src/components/RangeField/RangeSlider/RangeSlider.vue +30 -8
  349. package/src/components/RangeField/RangeSlider/Tooltip/Tooltip.vue +1 -0
  350. package/src/components/RangeField/RangeSlider/tests/__snapshots__/rangeSlider.spec.ts.snap +12 -4
  351. package/src/components/RangeField/RangeSlider/tests/useMouseSlide.spec.ts +9 -1
  352. package/src/components/RangeField/RangeSlider/useMouseSlide.ts +23 -8
  353. package/src/components/RangeField/config.ts +3 -1
  354. package/src/components/RangeField/tests/__snapshots__/RangeField.spec.ts.snap +132 -141
  355. package/src/components/RatingPicker/Accessibilite.stories.ts +4 -0
  356. package/src/components/RatingPicker/EmotionPicker/EmotionPicker.vue +119 -66
  357. package/src/components/RatingPicker/EmotionPicker/locales.ts +2 -0
  358. package/src/components/RatingPicker/EmotionPicker/tests/EmotionPicker.spec.ts +4 -4
  359. package/src/components/RatingPicker/EmotionPicker/tests/__snapshots__/EmotionPicker.spec.ts.snap +462 -678
  360. package/src/components/RatingPicker/NumberPicker/NumberPicker.vue +106 -42
  361. package/src/components/RatingPicker/NumberPicker/tests/NumberPicker.spec.ts +3 -3
  362. package/src/components/RatingPicker/NumberPicker/tests/__snapshots__/NumberPicker.spec.ts.snap +119 -515
  363. package/src/components/RatingPicker/Rating.ts +5 -1
  364. package/src/components/RatingPicker/RatingPicker.stories.ts +5 -6
  365. package/src/components/RatingPicker/RatingPicker.vue +7 -2
  366. package/src/components/RatingPicker/StarsPicker/StarsPicker.vue +78 -42
  367. package/src/components/RatingPicker/StarsPicker/tests/StarsPicker.spec.ts +7 -7
  368. package/src/components/RatingPicker/StarsPicker/tests/__snapshots__/StarsPicker.spec.ts.snap +163 -245
  369. package/src/components/RatingPicker/locales.ts +1 -0
  370. package/src/components/RatingPicker/tests/__snapshots__/RatingPicker.spec.ts.snap +120 -516
  371. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +109 -84
  372. package/src/components/Tables/SyServerTable/SyServerTable.vue +51 -16
  373. package/src/components/Tables/SyTable/SyTable.vue +1 -6
  374. package/src/components/Tables/SyTable/tests/SyTable.spec.ts +6 -0
  375. package/src/components/Tables/common/SyTablePagination.vue +0 -6
  376. package/src/components/Tables/common/tableProps.ts +19 -1
  377. package/src/components/Tables/common/usePagination.ts +0 -6
  378. package/src/components/Tables/common/useTableCheckbox.ts +5 -5
  379. package/src/components/index.ts +8 -0
  380. package/src/composables/rules/useFieldValidation.ts +21 -3
  381. package/src/composables/validation/AvecVosComposants.mdx +145 -0
  382. package/src/composables/validation/FormValidation.mdx +151 -0
  383. package/src/composables/validation/FormValidation.stories.ts +402 -0
  384. package/src/composables/validation/useFormValidation.ts +91 -0
  385. package/src/composables/validation/useValidatable.ts +41 -0
  386. package/src/stories/Accessibilite/Avancement/Avancement.stories.ts +2 -2
  387. package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +2 -2
  388. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +2 -2
  389. package/src/stories/Demarrer/Accueil.stories.ts +6 -6
  390. package/src/stories/GuideDuDev/Installation.mdx +13 -0
  391. package/src/stories/GuideDuDev/LesBreackingChanges.mdx +1 -1
  392. package/src/stories/GuideDuDev/MigrationDepuisBridge.mdx +1 -1
  393. package/src/stories/GuideDuDev/MigrationDepuisVue2.mdx +1 -1
@@ -73,8 +73,9 @@ ValidationExamples.parameters = {
73
73
  name: 'Script',
74
74
  code: `
75
75
  <script setup>
76
- import { ref } from 'vue'
77
- import DatePicker from '@/components/DatePicker/CalendarMode/DatePicker.vue'
76
+ import { computed, ref, watch } from 'vue';vue'
77
+ import DatePicker from '@/components/DatePicker/CalendarMode/DatePicker.vue'
78
+ import { useDateFormat } from '@/composables/date/useDateFormat';vue'
78
79
 
79
80
  // Exemple 1: Validation de base (required)
80
81
  const date1 = ref('')
@@ -140,143 +141,249 @@ BidirectionalValidation.parameters = {
140
141
  name: 'Template',
141
142
  code: `
142
143
  <template>
143
- <div class="date-picker-bidirectional-validation">
144
- <h1 class="text-h5 mb-6">
145
- Validation bidirectionnelle entre deux DatePickers
146
- </h1>
147
-
148
- <div class="text-body-2 mb-4">
149
- Ce composant démontre la validation bidirectionnelle entre deux DatePickers. Les règles de validation sont appliquées dans les deux sens :
150
- <ul class="ml-4">
151
- <li>La date de fin doit être postérieure ou égale à la date de début</li>
152
- <li>La date de début doit être antérieure ou égale à la date de fin</li>
153
- <li>Lorsque la date de début change, la validation de la date de fin est mise à jour</li>
154
- <li>Lorsque la date de fin change, la validation de la date de début est mise à jour</li>
155
- </ul>
156
- </div>
157
-
158
- <div class="date-range-container mb-6">
159
- <div class="date-picker-wrapper">
160
- <h3 class="text-subtitle-1 mb-2">
161
- Date de début
162
- </h3>
163
- <DatePicker
164
- ref="startDatePickerRef"
165
- v-model="startDate"
166
- placeholder="Date de début"
167
- :custom-rules="startDateRules"
168
- required
169
- @update:model-value="validateEndDate"
170
- />
171
- </div>
172
- <div class="date-picker-wrapper">
173
- <h3 class="text-subtitle-1 mb-2">
174
- Date de fin
175
- </h3>
176
- <DatePicker
177
- ref="endDatePickerRef"
178
- v-model="endDate"
179
- placeholder="Date de fin"
180
- :custom-rules="endDateRules"
181
- required
182
- @update:model-value="validateStartDate"
183
- />
184
- </div>
185
- </div>
186
-
187
- <div class="actions mb-4">
188
- <v-btn
189
- size="small"
190
- color="primary"
191
- class="mr-2"
192
- @click="resetDates"
193
- >
194
- Réinitialiser
195
- </v-btn>
196
-
197
- <v-btn
198
- size="small"
199
- color="success"
200
- class="mr-2"
201
- @click="setTestDates"
202
- >
203
- Dates valides
204
- </v-btn>
205
-
206
- <v-btn
207
- size="small"
208
- color="error"
209
- @click="setInvalidDates"
210
- >
211
- Dates invalides
212
- </v-btn>
213
- </div>
214
-
215
- <div class="current-values mt-4">
216
- <p><strong>Date de début :</strong> {{ startDate || 'Non sélectionnée' }}</p>
217
- <p><strong>Date de fin :</strong> {{ endDate || 'Non sélectionnée' }}</p>
218
- </div>
219
- </div>
220
- </template>
144
+ <div class="date-picker-bidirectional-validation">
145
+ <h1 class="text-h5 mb-6">
146
+ Validation bidirectionnelle entre deux DatePickers
147
+ </h1>
148
+
149
+ <div class="text-body-2 mb-4">
150
+ Ce composant démontre la validation bidirectionnelle entre deux DatePickers. Les règles de validation sont appliquées dans les deux sens :
151
+ <ul class="ml-4">
152
+ <li>La date de fin doit être postérieure ou égale à la date de début</li>
153
+ <li>La date de début doit être antérieure ou égale à la date de fin</li>
154
+ <li>Lorsque la date de début change, la validation de la date de fin est mise à jour</li>
155
+ <li>Lorsque la date de fin change, la validation de la date de début est mise à jour</li>
156
+ </ul>
157
+ </div>
158
+
159
+ <div class="date-range-container mb-6">
160
+ <div class="date-picker-wrapper">
161
+ <h3 class="text-subtitle-1 mb-2">
162
+ Date de début
163
+ </h3>
164
+ <DatePicker
165
+ ref="startDatePickerRef"
166
+ v-model="startDate"
167
+ placeholder="Date de début"
168
+ :custom-rules="startDateRules"
169
+ required
170
+ @update:model-value="validateEndDate"
171
+ />
172
+ </div>
173
+ <div class="date-picker-wrapper">
174
+ <h3 class="text-subtitle-1 mb-2">
175
+ Date de fin
176
+ </h3>
177
+ <DatePicker
178
+ ref="endDatePickerRef"
179
+ v-model="endDate"
180
+ placeholder="Date de fin"
181
+ :custom-rules="endDateRules"
182
+ required
183
+ @update:model-value="validateStartDate"
184
+ />
185
+ </div>
186
+ </div>
187
+
188
+ <div class="actions mb-4">
189
+ <v-btn
190
+ size="small"
191
+ color="primary"
192
+ class="mr-2"
193
+ @click="resetDates"
194
+ >
195
+ Réinitialiser
196
+ </v-btn>
197
+
198
+ <v-btn
199
+ size="small"
200
+ color="success"
201
+ class="mr-2"
202
+ @click="setTestDates"
203
+ >
204
+ Dates valides
205
+ </v-btn>
206
+
207
+ <v-btn
208
+ size="small"
209
+ color="error"
210
+ @click="setInvalidDates"
211
+ >
212
+ Dates invalides
213
+ </v-btn>
214
+ </div>
215
+
216
+ <div class="current-values mt-4">
217
+ <p><strong>Date de début :</strong> {{ startDate || 'Non sélectionnée' }}</p>
218
+ <p><strong>Date de fin :</strong> {{ endDate || 'Non sélectionnée' }}</p>
219
+ </div>
220
+
221
+ <div class="mt-6 pa-4 bg-grey-lighten-4 rounded">
222
+ <h3 class="text-subtitle-1 mb-2">
223
+ Comment fonctionne la validation bidirectionnelle
224
+ </h3>
225
+ <p class="text-body-2">
226
+ La validation bidirectionnelle entre les DatePickers est implémentée grâce à des règles de validation personnalisées
227
+ qui vérifient la relation entre les deux dates. Chaque DatePicker a sa propre règle qui vérifie sa valeur par rapport à l'autre.
228
+ </p>
229
+ <p class="text-body-2 mt-2">
230
+ Lorsqu'une date change, un watcher déclenche la validation de l'autre DatePicker. Cela garantit que les messages d'erreur
231
+ sont toujours à jour, même lorsque les dates sont modifiées dans n'importe quel ordre.
232
+ </p>
233
+ <p class="text-body-2 mt-2">
234
+ Les messages d'erreur apparaissent directement dans les composants DatePicker, ce qui améliore l'expérience utilisateur
235
+ en fournissant un retour immédiat sur la validité des dates sélectionnées.
236
+ </p>
237
+ <p class="text-body-2 mt-2">
238
+ Vous trouverez le code source dans la story Bidirectional Validation.
239
+ </p>
240
+ </div>
241
+ </div>
242
+ </template>
221
243
  `,
222
244
  },
223
245
  {
224
246
  name: 'Script',
225
247
  code: `
226
248
  <script lang="ts" setup>
227
- import { ref, computed, watch } from 'vue'
228
- import DatePicker from '@/components/DatePicker/CalendarMode/DatePicker.vue'
229
- import { useDateFormat } from '@/composables/date/useDateFormat'
230
-
231
- const { parseDate } = useDateFormat()
232
-
233
- // État des dates
234
- const startDate = ref<string | null>(null)
235
- const endDate = ref<string | null>(null)
236
-
237
- // Références aux composants CalendarMode pour accéder à leurs méthodes
238
- const startDatePickerRef = ref<InstanceType<typeof DatePicker> | null>(null)
239
- const endDatePickerRef = ref<InstanceType<typeof DatePicker> | null>(null)
240
-
241
- // Règle de validation pour vérifier que la date de fin n'est pas avant la date de début
242
- const createEndDateValidationRule = () => ({
243
- type: 'custom',
244
- options: {
245
- validate: (value: string) => {
246
- // Si pas de valeur pour la date de fin, pas besoin de validation
247
- if (!value) return true
248
-
249
- // Si pas de date de début mais une date de fin, afficher l'erreur
250
- if (!startDate.value) return 'Veuillez d'abord sélectionner une date de début'
251
-
252
- const start = parseDate(startDate.value, 'DD/MM/YYYY')
253
- const end = parseDate(value, 'DD/MM/YYYY')
254
-
255
- if (!start || !end) return true
256
-
257
- return end >= start || 'La date de fin ne peut pas être antérieure à la date de début'
258
- },
259
- message: 'La date de fin ne peut pas être antérieure à la date de début',
260
- },
261
- }))
262
-
263
- // Règles de validation et méthodes additionnelles
264
- // ...
265
-
266
- // Fonctions pour la démonstration
267
- const setTestDates = () => {
268
- // Définir dates valides (aujourd'hui et demain)
269
- }
270
-
271
- const setInvalidDates = () => {
272
- // Définir dates invalides (aujourd'hui et hier)
273
- }
274
-
275
- const resetDates = () => {
276
- startDate.value = null
277
- endDate.value = null
278
- }
279
- </script>
249
+ // useDateFormat n'est plus nécessaire avec les règles prédéfinies
250
+
251
+ // État des dates
252
+ const startDate = ref<string | null>(null)
253
+ const endDate = ref<string | null>(null)
254
+
255
+ // Références aux composants CalendarMode pour accéder à leurs méthodes
256
+ const startDatePickerRef = ref<InstanceType<typeof DatePicker> | null>(null)
257
+ const endDatePickerRef = ref<InstanceType<typeof DatePicker> | null>(null)
258
+
259
+ // Les règles de validation sont définies directement dans les computed startDateRules et endDateRules
260
+
261
+ // Règles de validation pour la date de début
262
+ const startDateRules = computed(() => {
263
+ const rules = [
264
+ {
265
+ type: 'required',
266
+ options: {
267
+ message: 'La date de début est requise.',
268
+ },
269
+ },
270
+ ]
271
+
272
+ // Ajouter la règle notAfterDate seulement si endDate.value existe
273
+ if (endDate.value) {
274
+ rules.push({
275
+ type: 'notAfterDate',
276
+
277
+ options: {
278
+ message: 'La date de début ne peut pas être postérieure à la date de fin',
279
+ date: endDate.value, // Déjà une chaîne au format DD/MM/YYYY
280
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- mock Axios headers
281
+ } as any,
282
+ })
283
+ }
284
+
285
+ return rules
286
+ })
287
+
288
+ // Règles de validation pour la date de fin
289
+ const endDateRules = computed(() => {
290
+ const rules = [
291
+ {
292
+ type: 'required',
293
+ options: {
294
+ message: 'La date de fin est requise.',
295
+ },
296
+ },
297
+ ]
298
+ // Ajouter la règle notBeforeDate seulement si startDate.value existe
299
+ if (startDate.value) {
300
+ rules.push({
301
+ type: 'notBeforeDate',
302
+
303
+ options: {
304
+ message: 'La date de fin ne peut pas être antérieure à la date de début',
305
+ date: startDate.value, // Déjà une chaîne au format DD/MM/YYYY
306
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- mock Axios headers
307
+ } as any,
308
+ })
309
+ }
310
+ return rules
311
+ })
312
+
313
+ // Fonction pour forcer la validation de la date de fin quand la date de début change
314
+ const validateEndDate = () => {
315
+ if (endDatePickerRef.value && endDate.value) {
316
+ // On utilise validateOnSubmit pour forcer la validation complète
317
+ endDatePickerRef.value.validateOnSubmit()
318
+ }
319
+ }
320
+
321
+ // Fonction pour forcer la validation de la date de début quand la date de fin change
322
+ const validateStartDate = () => {
323
+ if (startDatePickerRef.value && startDate.value) {
324
+ // On utilise validateOnSubmit pour forcer la validation complète
325
+ startDatePickerRef.value.validateOnSubmit()
326
+ }
327
+ }
328
+
329
+ // Watcher pour la date de début qui force la revalidation de la date de fin
330
+ watch(startDate, () => {
331
+ // Laisser le temps au système de mettre à jour les valeurs
332
+ setTimeout(() => {
333
+ validateEndDate()
334
+ }, 0)
335
+ })
336
+
337
+ // Watcher pour la date de fin qui force la revalidation de la date de début
338
+ watch(endDate, () => {
339
+ // Laisser le temps au système de mettre à jour les valeurs
340
+ setTimeout(() => {
341
+ validateStartDate()
342
+ }, 0)
343
+ })
344
+
345
+ // Fonction pour définir des dates de test
346
+ const setTestDates = () => {
347
+ // Définir une date de début (aujourd'hui)
348
+ const today = new Date()
349
+ const day = String(today.getDate()).padStart(2, '0')
350
+ const month = String(today.getMonth() + 1).padStart(2, '0')
351
+ const year = today.getFullYear()
352
+ startDate.value = day + '/' + month + '/' + year
353
+
354
+ // Définir une date de fin (demain) - pour démontrer une validation valide
355
+ const tomorrow = new Date(today)
356
+ tomorrow.setDate(today.getDate() + 1)
357
+ const tomorrowDay = String(tomorrow.getDate()).padStart(2, '0')
358
+ const tomorrowMonth = String(tomorrow.getMonth() + 1).padStart(2, '0')
359
+ const tomorrowYear = tomorrow.getFullYear()
360
+ endDate.value = tomorrowDay + '/' + tomorrowMonth + '/' + tomorrowYear
361
+ }
362
+
363
+ // Fonction pour définir des dates invalides (date de fin avant date de début)
364
+ const setInvalidDates = () => {
365
+ // Définir une date de début (aujourd'hui)
366
+ const today = new Date()
367
+ const day = String(today.getDate()).padStart(2, '0')
368
+ const month = String(today.getMonth() + 1).padStart(2, '0')
369
+ const year = today.getFullYear()
370
+ startDate.value = day + '/' + month + '/' + year
371
+
372
+ // Définir une date de fin (hier) - pour démontrer une validation invalide
373
+ const yesterday = new Date(today)
374
+ yesterday.setDate(today.getDate() - 1)
375
+ const yesterdayDay = String(yesterday.getDate()).padStart(2, '0')
376
+ const yesterdayMonth = String(yesterday.getMonth() + 1).padStart(2, '0')
377
+ const yesterdayYear = yesterday.getFullYear()
378
+ endDate.value = yesterdayDay + '/' + yesterdayMonth + '/' + yesterdayYear
379
+ }
380
+
381
+ // Fonction pour réinitialiser les dates
382
+ const resetDates = () => {
383
+ startDate.value = null
384
+ endDate.value = null
385
+ }
386
+ </script>
280
387
  `,
281
388
  },
282
389
  {
@@ -10,6 +10,7 @@ interface DatePickerProps {
10
10
  'placeholder'?: string
11
11
  'format'?: string
12
12
  'dateFormatReturn'?: string
13
+ 'density'?: 'default' | 'comfortable' | 'compact'
13
14
  'isBirthDate'?: boolean
14
15
  'birthDate'?: boolean
15
16
  'showWeekNumber'?: boolean
@@ -29,7 +30,6 @@ interface DatePickerProps {
29
30
  'disableErrorHandling'?: boolean
30
31
  'showSuccessMessages'?: boolean
31
32
  'bgColor'?: string
32
- 'density'?: 'default' | 'comfortable' | 'compact'
33
33
  'hideDetails'?: boolean | 'auto'
34
34
  'displayWeekendDays'?: boolean
35
35
  'displayTodayButton'?: boolean
@@ -68,80 +68,108 @@ const meta = {
68
68
  placeholder: {
69
69
  control: 'text',
70
70
  description: 'Texte indicatif',
71
+ defaultValue: 'JJ/MM/AAAA - JJ/MM/AAAA',
71
72
  },
72
73
  format: {
73
74
  control: 'select',
74
75
  options: ['DD/MM/YYYY', 'MM/DD/YYYY', 'YYYY-MM-DD'],
75
76
  description: 'Format d\'affichage de la date',
77
+ defaultValue: 'DD/MM/YYYY',
76
78
  },
77
79
  dateFormatReturn: {
78
80
  control: 'select',
79
81
  options: ['', 'DD/MM/YYYY', 'MM/DD/YYYY', 'YYYY-MM-DD'],
80
82
  description: 'Format de la date pour la valeur de retour',
83
+ defaultValue: '',
81
84
  },
82
85
  label: {
83
86
  control: 'text',
84
87
  description: 'Libellé du champ',
88
+ defaultValue: 'Période',
85
89
  },
86
90
  required: {
87
91
  control: 'boolean',
88
92
  description: 'Champ obligatoire',
93
+ defaultValue: false,
89
94
  },
90
95
  disabled: {
91
96
  control: 'boolean',
92
97
  description: 'Désactive le champ',
98
+ defaultValue: false,
93
99
  },
94
100
  readonly: {
95
101
  control: 'boolean',
96
102
  description: 'Le champ est en lecture seule',
103
+ defaultValue: false,
97
104
  },
98
105
  isOutlined: {
99
106
  control: 'boolean',
100
107
  description: 'Affiche le champ en contour',
108
+ defaultValue: true,
101
109
  },
102
110
  displayIcon: {
103
111
  control: 'boolean',
104
112
  description: 'Affiche l\'icône calendrier',
113
+ defaultValue: true,
105
114
  },
106
115
  displayAppendIcon: {
107
116
  control: 'boolean',
108
117
  description: 'Icône à la fin du champ',
118
+ defaultValue: false,
109
119
  },
110
120
  noIcon: {
111
121
  control: 'boolean',
112
122
  description: 'Masque toutes les icônes',
123
+ defaultValue: false,
113
124
  },
114
125
  customRules: {
115
126
  control: 'object',
116
127
  description: 'Règles de validation',
128
+ defaultValue: [],
117
129
  },
118
130
  customWarningRules: {
119
131
  control: 'object',
120
132
  description: 'Règles d\'avertissement',
133
+ defaultValue: [],
121
134
  },
122
135
  displayPrependIcon: {
123
136
  control: 'boolean',
124
137
  description: 'Icône au début du champ',
138
+ defaultValue: true,
125
139
  },
126
140
  disableErrorHandling: {
127
141
  control: 'boolean',
128
142
  description: 'Désactive la gestion des erreurs par le composant',
143
+ defaultValue: false,
129
144
  },
130
145
  showSuccessMessages: {
131
146
  control: 'boolean',
132
147
  description: 'Affiche les messages de succès',
148
+ defaultValue: true,
133
149
  },
134
150
  bgColor: {
135
151
  control: 'color',
136
152
  description: 'Couleur de fond',
153
+ defaultValue: 'white',
137
154
  },
138
155
  displayRange: {
139
156
  control: 'boolean',
140
157
  description: 'Sélection de plage de dates',
158
+ defaultValue: true,
141
159
  },
142
160
  noCalendar: {
143
161
  control: 'boolean',
144
162
  description: 'Masque le calendrier',
163
+ defaultValue: false,
164
+ },
165
+ density: {
166
+ control: 'select',
167
+ options: ['default', 'comfortable', 'compact'],
168
+ description: 'Densité du champ, affecte l\'espacement interne et la hauteur (standard Vuetify)',
169
+ defaultValue: 'default',
170
+ },
171
+ title: {
172
+ control: 'text',
145
173
  },
146
174
  },
147
175
  } as Meta<DatePickerProps>
@@ -13,6 +13,7 @@
13
13
  import dayjs from 'dayjs'
14
14
  import customParseFormat from 'dayjs/plugin/customParseFormat'
15
15
  import { useValidation, type ValidationRule, type ValidationResult } from '@/composables/validation/useValidation'
16
+ import { useValidatable } from '@/composables/validation/useValidatable'
16
17
  import { useDateFormat } from '@/composables/date/useDateFormatDayjs'
17
18
  import { DATE_PICKER_MESSAGES } from '../constants/messages'
18
19
  import type { DateValue } from '@/composables/date/useDateInitializationDayjs'
@@ -34,6 +35,7 @@
34
35
  required?: boolean
35
36
  disabled?: boolean
36
37
  readonly?: boolean
38
+ title?: string | false
37
39
  isOutlined?: boolean
38
40
  displayIcon?: boolean
39
41
  displayAppendIcon?: boolean
@@ -47,6 +49,8 @@
47
49
  displayRange?: boolean
48
50
  autoClamp?: boolean
49
51
  isValidateOnBlur?: boolean
52
+ density?: 'default' | 'comfortable' | 'compact'
53
+ externalErrorMessages?: string[]
50
54
  }>(), {
51
55
  modelValue: null,
52
56
  placeholder: DATE_PICKER_MESSAGES.PLACEHOLDER_DEFAULT,
@@ -56,6 +60,7 @@
56
60
  required: false,
57
61
  disabled: false,
58
62
  readonly: false,
63
+ title: false,
59
64
  isOutlined: true,
60
65
  displayIcon: true,
61
66
  displayAppendIcon: false,
@@ -69,6 +74,8 @@
69
74
  displayRange: false,
70
75
  autoClamp: true,
71
76
  isValidateOnBlur: true,
77
+ density: 'default',
78
+ externalErrorMessages: () => [],
72
79
  })
73
80
 
74
81
  const emit = defineEmits<{
@@ -117,7 +124,9 @@
117
124
  }
118
125
 
119
126
  const { errors, warnings, successes, hasError, clearValidation, validateField } = validationApi
120
- const errorMessages = errors
127
+
128
+ // Agrégation des erreurs internes et externes
129
+ const errorMessages = computed(() => [...errors.value, ...props.externalErrorMessages])
121
130
  const warningMessages = warnings
122
131
  const successMessages = successes
123
132
 
@@ -539,6 +548,13 @@
539
548
  errors.value.push(DATE_PICKER_MESSAGES.ERROR_REQUIRED)
540
549
  return false
541
550
  }
551
+ // Permettre aux custom rules de s'exécuter même sur des champs vides
552
+ // Mais seulement si l'utilisateur a interagi avec le champ
553
+ if (props.customRules && props.customRules.length > 0 && hasInteracted.value) {
554
+ // Exécuter les custom rules sur la valeur vide
555
+ safeValidateField(null, computed(() => props.customRules).value, computed(() => props.customWarningRules).value)
556
+ return !hasError.value
557
+ }
542
558
  return true
543
559
  }
544
560
 
@@ -560,8 +576,8 @@
560
576
  errors.value.push(DATE_PICKER_MESSAGES.ERROR_END_BEFORE_START)
561
577
  return false
562
578
  }
563
- safeValidateField(startDate, props.customRules, props.customWarningRules)
564
- if (errors.value.length === 0) safeValidateField(endDate, props.customRules, props.customWarningRules)
579
+ safeValidateField(startDate, computed(() => props.customRules).value, computed(() => props.customWarningRules).value)
580
+ if (errors.value.length === 0) safeValidateField(endDate, computed(() => props.customRules).value, computed(() => props.customWarningRules).value)
565
581
  }
566
582
  }
567
583
  return !hasError.value
@@ -620,7 +636,7 @@
620
636
 
621
637
  if (inputValue.value) {
622
638
  const formatValidationResult = validateDateFormatForSingleOrRange(inputValue.value)
623
- const customRulesValidationResult = safeValidateField(inputValue.value, props.customRules, props.customWarningRules)
639
+ const customRulesValidationResult = safeValidateField(inputValue.value, computed(() => props.customRules).value, computed(() => props.customWarningRules).value)
624
640
 
625
641
  if (formatValidationResult.isValid && !customRulesValidationResult.hasError && !isRange.value) {
626
642
  const parsedDate = dayjs(inputValue.value, displayFormat.value, true).toDate()
@@ -637,8 +653,11 @@
637
653
  else {
638
654
  runRules(inputValue.value)
639
655
  if (!props.disableErrorHandling && formatValidationResult.message) errors.value.push(formatValidationResult.message)
640
- // For invalid input, emit null instead of previous value
641
- emitModel(null)
656
+ // Only emit null for format errors, not for custom rule errors
657
+ if (!formatValidationResult.isValid) {
658
+ emitModel(null)
659
+ }
660
+ // For custom rule errors with valid format, keep the current value
642
661
  }
643
662
  }
644
663
 
@@ -921,6 +940,9 @@
921
940
  return !hasError.value
922
941
  }
923
942
 
943
+ // Intégration avec le système de validation du formulaire
944
+ useValidatable(validateOnSubmit)
945
+
924
946
  defineExpose({
925
947
  validateOnSubmit,
926
948
  focus() {
@@ -985,7 +1007,7 @@
985
1007
  'warning-field': isOnWarning,
986
1008
  'success-field': isOnSuccess,
987
1009
  }"
988
- :disabled="props.disabled || props.readonly"
1010
+ :disabled="props.disabled"
989
1011
  :error-messages="errorMessages"
990
1012
  :label="props.label || ''"
991
1013
  :placeholder="props.placeholder"
@@ -997,11 +1019,12 @@
997
1019
  :success-messages="props.showSuccessMessages ? successMessages : []"
998
1020
  :bg-color="props.bgColor"
999
1021
  color="primary"
1000
- is-clearable
1022
+ :is-clearable="!props.readonly"
1001
1023
  :display-persistent-placeholder="true"
1002
1024
  :aria-label="ariaLabel || props.placeholder"
1003
1025
  :is-validate-on-blur="props.isValidateOnBlur"
1004
- title="Date text input"
1026
+ :density="props.density"
1027
+ :title="props.title || undefined"
1005
1028
  @focus="onFocus"
1006
1029
  @blur="onBlur"
1007
1030
  @keydown="handleKeydown"