@cnamts/synapse 1.0.5 → 1.0.7

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 (364) hide show
  1. package/dist/{DateFilter-BQpRKTju.js → DateFilter-CHDLz2EO.js} +1 -1
  2. package/dist/{NumberFilter-BykSKt2D.js → NumberFilter-DXNQ4Uls.js} +1 -1
  3. package/dist/{PeriodFilter-Cks6NygV.js → PeriodFilter-C8Qf3Jcn.js} +1 -1
  4. package/dist/{SelectFilter-DEL5dHd_.js → SelectFilter-B2Ejs4Cb.js} +1 -1
  5. package/dist/{TextFilter-0RAFj7Oe.js → TextFilter-CfR5_A1S.js} +1 -1
  6. package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordion.d.ts +103 -0
  7. package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.d.ts +105 -0
  8. package/dist/components/Amelipro/AmeliproAccordionGroup/AmeliproAccordionGroup.d.ts +116 -0
  9. package/dist/components/Amelipro/AmeliproAccordionGroup/types.d.ts +4 -0
  10. package/dist/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.d.ts +220 -0
  11. package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.d.ts +68 -0
  12. package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.d.ts +70 -0
  13. package/dist/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.d.ts +204 -0
  14. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +26 -26
  15. package/dist/components/Amelipro/AmeliproBadge/AmeliproBadge.d.ts +59 -0
  16. package/dist/components/Amelipro/AmeliproBtn/AmeliproBtn.d.ts +3 -3
  17. package/dist/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.d.ts +132 -0
  18. package/dist/components/Amelipro/AmeliproCaptcha/types.d.ts +5 -0
  19. package/dist/components/Amelipro/AmeliproCard/AmeliproCard.d.ts +3 -3
  20. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarousel.d.ts +214 -0
  21. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/AmeliproCarouselItem.d.ts +70 -0
  22. package/dist/components/Amelipro/AmeliproCarousel/types.d.ts +7 -0
  23. package/dist/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.d.ts +125 -0
  24. package/dist/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.d.ts +126 -0
  25. package/dist/components/Amelipro/AmeliproCustomSelector/types.d.ts +6 -0
  26. package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +1 -1
  27. package/dist/components/Amelipro/AmeliproIllustratedDataTile/AmeliproIllustratedDataTile.d.ts +3 -3
  28. package/dist/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.d.ts +1 -1
  29. package/dist/components/Amelipro/AmeliproResultList/AmeliproResultList.d.ts +164 -0
  30. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +27 -27
  31. package/dist/components/Amelipro/AmeliproStateTile/AmeliproStateTile.d.ts +1 -1
  32. package/dist/components/Amelipro/AmeliproTable/AmeliproTable.d.ts +190 -0
  33. package/dist/components/Amelipro/AmeliproTable/types.d.ts +34 -0
  34. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +32 -32
  35. package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +6 -6
  36. package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +7 -7
  37. package/dist/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.d.ts +2 -2
  38. package/dist/components/Amelipro/AmeliproTooltips/AmeliproTooltips.d.ts +2 -2
  39. package/dist/components/Amelipro/types.d.ts +6 -0
  40. package/dist/components/ChipList/ChipList.d.ts +4 -0
  41. package/dist/components/ChipList/locales.d.ts +4 -2
  42. package/dist/components/CookieBanner/CookieBanner.d.ts +1 -1
  43. package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +8 -8
  44. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +454 -8
  45. package/dist/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.d.ts +6 -1
  46. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +2 -0
  47. package/dist/components/Customs/SyTabs/SyTabs.d.ts +71 -0
  48. package/dist/components/Customs/SyTabs/config.d.ts +17 -0
  49. package/dist/components/Customs/SyTabs/types.d.ts +11 -0
  50. package/dist/components/Customs/SyTextField/SyTextField.d.ts +12 -10
  51. package/dist/components/DataList/DataList.d.ts +10 -1
  52. package/dist/components/DataListGroup/DataListGroup.d.ts +10 -1
  53. package/dist/components/DataListItem/DataListItem.d.ts +1 -1
  54. package/dist/components/DataListItem/config.d.ts +1 -1
  55. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +4825 -244
  56. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +58 -29
  57. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +28 -10
  58. package/dist/components/DatePicker/composables/useDateInputEditing.d.ts +18 -8
  59. package/dist/components/DatePicker/composables/useKeyboardEvents.d.ts +41 -0
  60. package/dist/components/DatePicker/composables/useManualDateValidation.d.ts +4 -9
  61. package/dist/components/DatePicker/composables/useTodayButton.d.ts +1 -0
  62. package/dist/components/DatePicker/utils/dateFormattingUtils.d.ts +72 -0
  63. package/dist/components/DatePicker/utils/validationUtils.d.ts +38 -0
  64. package/dist/components/DialogBox/DialogBox.d.ts +219 -0
  65. package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.d.ts +9 -3
  66. package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.d.ts +6 -1
  67. package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.d.ts +11 -1
  68. package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.d.ts +11 -1
  69. package/dist/components/HeaderBar/HeaderBurgerMenu/locals.d.ts +2 -0
  70. package/dist/components/HeaderBar/HeaderBurgerMenu/useMenuPosition.d.ts +4 -0
  71. package/dist/components/HeaderLoading/HeaderLoading.d.ts +27 -0
  72. package/dist/components/HeaderNavigationBar/HeaderNavigationBar.d.ts +110 -3
  73. package/dist/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.d.ts +19 -1
  74. package/dist/components/LangBtn/LangBtn.d.ts +2 -2
  75. package/dist/components/NirField/NirField.d.ts +30 -20
  76. package/dist/components/PeriodField/PeriodField.d.ts +10949 -1783
  77. package/dist/components/PhoneField/PhoneField.d.ts +1866 -2
  78. package/dist/components/PhoneField/indicatifs.d.ts +1 -0
  79. package/dist/components/PhoneField/locales.d.ts +1 -0
  80. package/dist/components/RangeField/RangeField.d.ts +1 -1
  81. package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +1 -1
  82. package/dist/components/SubHeader/SubHeader.d.ts +8 -0
  83. package/dist/components/SubHeader/locales.d.ts +1 -0
  84. package/dist/components/SyTextArea/SyTextArea.d.ts +6 -6
  85. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -4
  86. package/dist/components/Tables/SyTable/SyTable.d.ts +5 -4
  87. package/dist/components/Tables/common/SyTablePagination.d.ts +458 -7
  88. package/dist/components/Tables/common/organizeColumns/OrganizeColumns.d.ts +2 -2
  89. package/dist/components/Tables/common/types.d.ts +2 -0
  90. package/dist/components/index.d.ts +13 -0
  91. package/dist/composables/index.d.ts +1 -0
  92. package/dist/composables/usePagination.d.ts +16 -0
  93. package/dist/design-system-v3.js +174 -160
  94. package/dist/design-system-v3.umd.cjs +290 -281
  95. package/dist/directives/lockFocus.d.ts +17 -0
  96. package/dist/{main-Co2P_lBt.js → main-C66C1BkG.js} +14406 -11554
  97. package/dist/style.css +1 -1
  98. package/package.json +4 -1
  99. package/src/assets/amelipro/apTheme.scss +149 -0
  100. package/src/assets/amelipro/apTokens.scss +0 -148
  101. package/src/assets/amelipro/icons.ts +38 -11
  102. package/src/assets/overrides/_btns.scss +15 -0
  103. package/src/assets/overrides/_container.scss +36 -0
  104. package/src/assets/overrides/_forms.scss +7 -0
  105. package/src/assets/{_spacers.scss → overrides/_spacers.scss} +0 -7
  106. package/src/assets/overrides/_tables.scss +18 -0
  107. package/src/assets/overrides/_tooltips.scss +10 -0
  108. package/src/assets/overrides/_typography.scss +196 -0
  109. package/src/assets/settings.scss +11 -51
  110. package/src/assets/themes.scss +10 -0
  111. package/src/assets/tokens.scss +9 -156
  112. package/src/components/Accordion/composables/__tests__/useAccordionGroupCommunication.spec.ts +80 -40
  113. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.mdx +15 -0
  114. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.stories.ts +83 -0
  115. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.vue +86 -0
  116. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.vue +242 -0
  117. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/__tests__/AmeliproAccordionTemplate.spec.ts +20 -0
  118. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/__tests__/__snapshots__/AmeliproAccordionTemplate.spec.ts.snap +124 -0
  119. package/src/components/Amelipro/AmeliproAccordion/__tests__/AmeliproAccordion.spec.ts +20 -0
  120. package/src/components/Amelipro/AmeliproAccordion/__tests__/__snapshots__/AmeliproAccordion.spec.ts.snap +124 -0
  121. package/src/components/Amelipro/AmeliproAccordionGroup/AmeliproAccordionGroup.mdx +20 -0
  122. package/src/components/Amelipro/AmeliproAccordionGroup/AmeliproAccordionGroup.stories.ts +135 -0
  123. package/src/components/Amelipro/AmeliproAccordionGroup/AmeliproAccordionGroup.vue +107 -0
  124. package/src/components/Amelipro/AmeliproAccordionGroup/__tests__/AmeliproAccordionGroup.spec.ts +37 -0
  125. package/src/components/Amelipro/AmeliproAccordionGroup/__tests__/__snapshots__/AmeliproAccordionGroup.spec.ts.snap +513 -0
  126. package/src/components/Amelipro/AmeliproAccordionGroup/types.d.ts +4 -0
  127. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.mdx +16 -0
  128. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.stories.ts +300 -0
  129. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +288 -0
  130. package/src/components/Amelipro/AmeliproAccordionList/__tests__/AmeliproAccordionList.spec.ts +38 -0
  131. package/src/components/Amelipro/AmeliproAccordionList/__tests__/__snapshots__/AmeliproAccordionList.spec.ts.snap +1712 -0
  132. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.mdx +19 -0
  133. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.stories.ts +68 -0
  134. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.vue +66 -0
  135. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.vue +145 -0
  136. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/__tests__/AmeliproAccordionResultTemplate.spec.ts +24 -0
  137. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/__tests__/__snapshots__/AmeliproAccordionResultTemplate.spec.ts.snap +127 -0
  138. package/src/components/Amelipro/AmeliproAccordionResult/__tests__/AmeliproAccordionResult.spec.ts +24 -0
  139. package/src/components/Amelipro/AmeliproAccordionResult/__tests__/__snapshots__/AmeliproAccordionResult.spec.ts.snap +123 -0
  140. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.mdx +20 -0
  141. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.stories.ts +273 -0
  142. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +275 -0
  143. package/src/components/Amelipro/AmeliproAccordionResultList/__tests__/AmeliproAccordionResultList.spec.ts +38 -0
  144. package/src/components/Amelipro/AmeliproAccordionResultList/__tests__/__snapshots__/AmeliproAccordionResultList.spec.ts.snap +1593 -0
  145. package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.mdx +15 -0
  146. package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.stories.ts +54 -0
  147. package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.vue +76 -0
  148. package/src/components/Amelipro/AmeliproBadge/__tests__/AmeliproBadge.spec.ts +20 -0
  149. package/src/components/Amelipro/AmeliproBadge/__tests__/__snapshots__/AmeliproBadge.spec.ts.snap +19 -0
  150. package/src/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.mdx +15 -0
  151. package/src/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.stories.ts +87 -0
  152. package/src/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.vue +233 -0
  153. package/src/components/Amelipro/AmeliproCaptcha/__tests__/AmeliproCaptcha.spec.ts +24 -0
  154. package/src/components/Amelipro/AmeliproCaptcha/__tests__/__snapshots__/AmeliproCaptcha.spec.ts.snap +384 -0
  155. package/src/components/Amelipro/AmeliproCaptcha/types.d.ts +5 -0
  156. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarousel.mdx +15 -0
  157. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarousel.stories.ts +191 -0
  158. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarousel.vue +263 -0
  159. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/AmeliproCarouselItem.vue +93 -0
  160. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/__tests__/AmeliproCarouselItem.spec.ts +24 -0
  161. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/__tests__/__snapshots__/AmeliproCarouselItem.spec.ts.snap +43 -0
  162. package/src/components/Amelipro/AmeliproCarousel/__tests__/AmeliproCarousel.spec.ts +40 -0
  163. package/src/components/Amelipro/AmeliproCarousel/__tests__/__snapshots__/AmeliproCarousel.spec.ts.snap +342 -0
  164. package/src/components/Amelipro/AmeliproCarousel/types.d.ts +8 -0
  165. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.mdx +18 -0
  166. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.stories.ts +67 -0
  167. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.vue +233 -0
  168. package/src/components/Amelipro/AmeliproClickableTile/tests/AmeliproClickableTile.spec.ts +21 -0
  169. package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +140 -0
  170. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.mdx +15 -0
  171. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.stories.ts +143 -0
  172. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.vue +351 -0
  173. package/src/components/Amelipro/AmeliproCustomSelector/__tests__/AmeliproCustomSelector.spec.ts +50 -0
  174. package/src/components/Amelipro/AmeliproCustomSelector/__tests__/__snapshots__/AmeliproCustomSelector.spec.ts.snap +186 -0
  175. package/src/components/Amelipro/AmeliproCustomSelector/types.d.ts +6 -0
  176. package/src/components/Amelipro/AmeliproHeader/AmeliproHeader.vue +7 -1
  177. package/src/components/Amelipro/AmeliproHeader/tests/__snapshots__/AmeliproHeader.spec.ts.snap +5 -711
  178. package/src/components/Amelipro/AmeliproIcon/iconList.ts +6 -0
  179. package/src/components/Amelipro/AmeliproPageLayout/tests/__snapshots__/AmeliproPageLayout.spec.ts.snap +5 -711
  180. package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.mdx +15 -0
  181. package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.stories.ts +264 -0
  182. package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.vue +231 -0
  183. package/src/components/Amelipro/AmeliproResultList/__tests__/AmeliproResultList.spec.ts +37 -0
  184. package/src/components/Amelipro/AmeliproResultList/__tests__/__snapshots__/AmeliproResultList.spec.ts.snap +434 -0
  185. package/src/components/Amelipro/AmeliproTable/AmeliproTable.mdx +22 -0
  186. package/src/components/Amelipro/AmeliproTable/AmeliproTable.stories.ts +550 -0
  187. package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +422 -0
  188. package/src/components/Amelipro/AmeliproTable/__tests__/AmeliproTable.spec.ts +72 -0
  189. package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +424 -0
  190. package/src/components/Amelipro/AmeliproTable/types.d.ts +34 -0
  191. package/src/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.stories.ts +2 -2
  192. package/src/components/Amelipro/ServiceMenu/ServiceMenu.vue +12 -1
  193. package/src/components/Amelipro/ServiceMenu/tests/__snapshots__/ServiceMenu.spec.ts.snap +0 -820
  194. package/src/components/Amelipro/types.ts +8 -0
  195. package/src/components/ChipList/Accessibilite.stories.ts +4 -0
  196. package/src/components/ChipList/ChipList.vue +185 -42
  197. package/src/components/ChipList/locales.ts +4 -2
  198. package/src/components/ChipList/tests/chipList.spec.ts +7 -4
  199. package/src/components/CollapsibleList/CollapsibleList.vue +0 -2
  200. package/src/components/CookieBanner/CookieBanner.vue +1 -3
  201. package/src/components/CopyBtn/CopyBtn.vue +9 -2
  202. package/src/components/CopyBtn/tests/CopyBtn.spec.ts +3 -1
  203. package/src/components/Customs/Selects/SelectOverview.mdx +18 -15
  204. package/src/components/Customs/Selects/SyBtnSelect/SyBtnSelect.stories.ts +10 -10
  205. package/src/components/Customs/Selects/SySelect/Accessibilite.mdx +7 -0
  206. package/src/components/Customs/Selects/SySelect/Accessibilite.stories.ts +4 -1
  207. package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +92 -4
  208. package/src/components/Customs/Selects/SySelect/SySelect.vue +373 -56
  209. package/src/components/Customs/Selects/SySelect/composables/tests/useSySelectKeyboard.spec.ts +14 -5
  210. package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +129 -12
  211. package/src/components/Customs/SyCheckbox/SyCheckbox.mdx +3 -1
  212. package/src/components/Customs/SyCheckbox/SyCheckbox.stories.ts +165 -0
  213. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +28 -9
  214. package/src/components/Customs/SyIcon/SyIcon.spec.ts +3 -0
  215. package/src/components/Customs/SyTabs/Accessibilite.mdx +309 -0
  216. package/src/components/Customs/SyTabs/SyTabs.mdx +117 -0
  217. package/src/components/Customs/SyTabs/SyTabs.stories.ts +354 -0
  218. package/src/components/Customs/SyTabs/SyTabs.vue +350 -0
  219. package/src/components/Customs/SyTabs/config.ts +17 -0
  220. package/src/components/Customs/SyTabs/tests/SyTabs.spec.ts +425 -0
  221. package/src/components/Customs/SyTabs/types.ts +12 -0
  222. package/src/components/Customs/SyTextField/Accessibilite.stories.ts +3 -1
  223. package/src/components/Customs/SyTextField/SyTextField.mdx +3 -0
  224. package/src/components/Customs/SyTextField/SyTextField.stories.ts +221 -7
  225. package/src/components/Customs/SyTextField/SyTextField.vue +226 -29
  226. package/src/components/DataList/Accessibilite.stories.ts +4 -0
  227. package/src/components/DataList/DataList.vue +52 -47
  228. package/src/components/DataListGroup/Accessibilite.stories.ts +4 -0
  229. package/src/components/DataListGroup/DataListGroup.vue +32 -15
  230. package/src/components/DataListItem/DataListItem.vue +72 -65
  231. package/src/components/DataListItem/config.ts +1 -1
  232. package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +3 -3
  233. package/src/components/DatePicker/CalendarMode/DatePicker.vue +59 -18
  234. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +174 -0
  235. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +421 -636
  236. package/src/components/DatePicker/DatePickerValidationExample/CalendarMode.stories.ts +215 -0
  237. package/src/components/DatePicker/DatePickerValidationExample/ComplexDatePicker.stories.ts +218 -0
  238. package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.mdx +2 -0
  239. package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts +287 -1
  240. package/src/components/DatePicker/DatePickerValidationExample/DateTextInput.stories.ts +218 -0
  241. package/src/components/DatePicker/DatePickerValidationExample/MultiMode.stories.ts +281 -0
  242. package/src/components/DatePicker/DateTextInput/DateRange.stories.ts +1 -1
  243. package/src/components/DatePicker/DateTextInput/DateTextInput.events.spec.ts +17 -4
  244. package/src/components/DatePicker/DateTextInput/DateTextInput.range.spec.ts +111 -18
  245. package/src/components/DatePicker/DateTextInput/DateTextInput.spec.ts +238 -6
  246. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +716 -759
  247. package/src/components/DatePicker/composables/tests/useDateInputEditing.spec.ts +4 -4
  248. package/src/components/DatePicker/composables/tests/useDisplayedDateString.spec.ts +17 -10
  249. package/src/components/DatePicker/composables/tests/useManualDateValidation.spec.ts +11 -3
  250. package/src/components/DatePicker/composables/useDateInputEditing.ts +119 -225
  251. package/src/components/DatePicker/composables/useDisplayedDateString.ts +18 -4
  252. package/src/components/DatePicker/composables/useKeyboardEvents.ts +149 -0
  253. package/src/components/DatePicker/composables/useManualDateValidation.ts +27 -68
  254. package/src/components/DatePicker/composables/useTodayButton.ts +13 -1
  255. package/src/components/DatePicker/utils/dateFormattingUtils.ts +293 -0
  256. package/src/components/DatePicker/utils/validationUtils.ts +90 -0
  257. package/src/components/DialogBox/Accessibilite.stories.ts +4 -0
  258. package/src/components/DialogBox/DialogBox.stories.ts +22 -10
  259. package/src/components/DialogBox/DialogBox.vue +89 -22
  260. package/src/components/DialogBox/tests/DialogBox.spec.ts +22 -0
  261. package/src/components/DialogBox/tests/__snapshots__/DialogBox.spec.ts.snap +12 -6
  262. package/src/components/FileUpload/tests/FileUpload.spec.ts +3 -0
  263. package/src/components/FooterBar/FooterBar.vue +1 -0
  264. package/src/components/HeaderBar/Accessibilite.stories.ts +4 -0
  265. package/src/components/HeaderBar/HeaderBar.mdx +47 -22
  266. package/src/components/HeaderBar/HeaderBar.stories.ts +54 -13
  267. package/src/components/HeaderBar/HeaderBar.vue +2 -1
  268. package/src/components/HeaderBar/HeaderBurgerMenu/Accessibilite.stories.ts +4 -0
  269. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.stories.ts +160 -82
  270. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.vue +41 -56
  271. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.vue +10 -3
  272. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.vue +41 -18
  273. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/tests/HeaderMenuSection.spec.ts +7 -2
  274. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.stories.ts +36 -9
  275. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.vue +41 -9
  276. package/src/components/HeaderBar/HeaderBurgerMenu/locals.ts +2 -0
  277. package/src/components/HeaderBar/HeaderBurgerMenu/tests/HeaderBurgerMenu.spec.ts +1 -1
  278. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/HeaderBurgerMenu.spec.ts.snap +8 -3
  279. package/src/components/HeaderBar/HeaderBurgerMenu/useMenuPosition.ts +50 -0
  280. package/src/components/HeaderBar/HeaderLogo/HeaderLogo.vue +5 -5
  281. package/src/components/HeaderBar/HeaderMenuBtn/HeaderMenuBtn.vue +7 -4
  282. package/src/components/HeaderBar/locales.ts +1 -1
  283. package/src/components/HeaderBar/tests/__snapshots__/HeaderBar.spec.ts.snap +2 -1
  284. package/src/components/HeaderLoading/Accessibilite.mdx +429 -8
  285. package/src/components/HeaderLoading/Accessibilite.stories.ts +4 -0
  286. package/src/components/HeaderLoading/HeaderLoading.vue +59 -1
  287. package/src/components/HeaderNavigationBar/HeaderNavigationBar.mdx +17 -2
  288. package/src/components/HeaderNavigationBar/HeaderNavigationBar.stories.ts +91 -2
  289. package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +37 -1
  290. package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +276 -21
  291. package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.spec.ts +4 -2
  292. package/src/components/LangBtn/LangBtn.vue +0 -3
  293. package/src/components/LogoBrandSection/Accessibilite.stories.ts +4 -1
  294. package/src/components/LogoBrandSection/LogoBrandSection.stories.ts +2 -2
  295. package/src/components/LogoBrandSection/LogoBrandSection.vue +13 -8
  296. package/src/components/LogoBrandSection/locales.ts +1 -1
  297. package/src/components/LogoBrandSection/tests/LogoBrandSection.spec.ts +1 -1
  298. package/src/components/LogoBrandSection/tests/__snapshots__/LogoBrandSection.spec.ts.snap +6 -4
  299. package/src/components/NirField/NirField.mdx +3 -0
  300. package/src/components/NirField/NirField.vue +15 -6
  301. package/src/components/NirField/tests/NirField.spec.ts +159 -12
  302. package/src/components/PasswordField/PasswordField.mdx +3 -0
  303. package/src/components/PeriodField/PeriodField.mdx +2 -0
  304. package/src/components/PeriodField/PeriodField.stories.ts +195 -0
  305. package/src/components/PhoneField/Accessibilite.stories.ts +4 -0
  306. package/src/components/PhoneField/PhoneField.mdx +3 -1
  307. package/src/components/PhoneField/PhoneField.stories.ts +285 -1
  308. package/src/components/PhoneField/PhoneField.vue +228 -95
  309. package/src/components/PhoneField/indicatifs.ts +102 -102
  310. package/src/components/PhoneField/locales.ts +1 -0
  311. package/src/components/PhoneField/tests/PhoneField.spec.ts +429 -2
  312. package/src/components/SkipLink/SkipLink.vue +3 -31
  313. package/src/components/SkipLink/tests/skipLink.spec.ts +0 -21
  314. package/src/components/SubHeader/Accessibilite.stories.ts +8 -0
  315. package/src/components/SubHeader/SubHeader.mdx +1 -0
  316. package/src/components/SubHeader/SubHeader.stories.ts +179 -60
  317. package/src/components/SubHeader/SubHeader.vue +45 -15
  318. package/src/components/SubHeader/locales.ts +1 -0
  319. package/src/components/SyAlert/SyAlert.vue +6 -0
  320. package/src/components/Tables/SyServerTable/SyServerTable.mdx +3 -10
  321. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +242 -0
  322. package/src/components/Tables/SyServerTable/SyServerTable.vue +29 -10
  323. package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +104 -6
  324. package/src/components/Tables/SyTable/SyTable.mdx +3 -10
  325. package/src/components/Tables/SyTable/SyTable.stories.ts +242 -0
  326. package/src/components/Tables/SyTable/SyTable.vue +2 -0
  327. package/src/components/Tables/common/SyTablePagination.vue +13 -6
  328. package/src/components/Tables/common/TableHeader.vue +10 -7
  329. package/src/components/Tables/common/tableAccessibilityUtils.ts +13 -2
  330. package/src/components/Tables/common/tests/SyTablePagination.spec.ts +157 -0
  331. package/src/components/Tables/common/types.ts +2 -0
  332. package/src/components/Tables/common/useTableAria.ts +17 -1
  333. package/src/components/UserMenuBtn/tests/UserMenuBtn.spec.ts +2 -1
  334. package/src/components/index.ts +13 -0
  335. package/src/composables/date/tests/useDatePickerAccessibility.spec.ts +34 -5
  336. package/src/composables/index.ts +3 -0
  337. package/src/composables/useFilterable/useFilterable.ts +23 -1
  338. package/src/composables/usePagination.ts +103 -0
  339. package/src/designTokens/tokens/amelipro/apColors.ts +1 -1
  340. package/src/designTokens/tokens/cnam/cnamSemantic.ts +3 -3
  341. package/src/directives/lockFocus.ts +48 -0
  342. package/src/main.ts +1 -2
  343. package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +1 -8
  344. package/src/stories/Accessibilite/{Aculturation/AuditDesignSystem.mdx → AuditDesignSystem.mdx} +1 -1
  345. package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/FauxPositifs.mdx +102 -0
  346. package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/FauxPositifs.stories.ts +219 -0
  347. package/src/stories/Accessibilite/KitDePreAudit/Outils/{Tanaguru.mdx → Tanaguru/Utilisation.mdx} +1 -1
  348. package/src/stories/Components/Components.stories.ts +1 -1
  349. package/src/stories/DesignTokens/ColorIntegrationExample.vue +43 -0
  350. package/src/stories/DesignTokens/Colors.mdx +2 -0
  351. package/src/stories/DesignTokens/colors.stories.ts +9 -0
  352. package/src/stories/GuideDuDev/FormValidationGuide.mdx +342 -0
  353. package/src/stories/Templates/Templates.stories.ts +1 -1
  354. package/src/utils/functions/ameliproColors/ameliproColors.ts +1 -1
  355. package/src/vuetifyConfig.ts +3 -3
  356. package/dist/components/DataList/locales.d.ts +0 -3
  357. package/dist/directives/letterSpacing.d.ts +0 -27
  358. package/src/assets/_fonts.scss +0 -6
  359. package/src/assets/_typography.scss +0 -157
  360. package/src/components/DataList/locales.ts +0 -3
  361. package/src/components/PhoneField/tests/PhoneField.additional.spec.ts +0 -266
  362. package/src/directives/letterSpacing.ts +0 -233
  363. /package/src/assets/{_elevations.scss → overrides/_elevations.scss} +0 -0
  364. /package/src/assets/{_radius.scss → overrides/_radius.scss} +0 -0
@@ -1,9 +1,8 @@
1
1
  <script lang="ts" setup>
2
+ import useCustomizableOptions, { type CustomizableOptions } from '@/composables/useCustomizableOptions'
2
3
  import { computed } from 'vue'
3
4
  import { useTheme } from 'vuetify'
4
-
5
- import useCustomizableOptions, { type CustomizableOptions } from '@/composables/useCustomizableOptions'
6
-
5
+ import SyIcon from '../Customs/SyIcon/SyIcon.vue'
7
6
  import { config } from './config'
8
7
  import { locales } from './locales'
9
8
 
@@ -34,7 +33,7 @@
34
33
 
35
34
  const labelColor = computed(() => {
36
35
  return theme.current.value.dark
37
- ? 'rgba(255, 255, 255, .7)'
36
+ ? 'rgba(255, 255, 255, .85)'
38
37
  : 'rgba(0, 0, 0, .6)'
39
38
  })
40
39
 
@@ -46,87 +45,95 @@
46
45
  }
47
46
  return props.value || props.placeholder
48
47
  })
48
+
49
+ const actionButtonColor = computed(() => {
50
+ return theme.current.value.dark ? 'white' : 'primary'
51
+ })
49
52
  </script>
50
53
 
51
54
  <template>
52
- <li class="sy-data-list-item d-flex flex-wrap">
53
- <slot name="icon">
54
- <VIcon
55
- v-if="icon"
56
- v-bind="options.icon"
55
+ <div
56
+ :class="{ 'sy-row': row }"
57
+ class="sy-data-list-item"
58
+ >
59
+ <dt
60
+ class="sy-data-list-item-label text-caption"
61
+ :style="{ color: labelColor }"
62
+ >
63
+ <slot name="icon">
64
+ <SyIcon
65
+ v-if="icon"
66
+ v-bind="options.icon"
67
+ :icon="icon"
68
+ :decorative="true"
69
+ />
70
+ </slot>
71
+ <span>{{ label }} :</span>
72
+ </dt>
73
+
74
+ <dd
75
+ class="sy-data-list-item-value d-flex align-center ga-2"
76
+ :class="{ 'has-icon': icon }"
77
+ >
78
+ <slot
79
+ name="value"
80
+ v-bind="{ itemValue }"
57
81
  >
58
- {{ icon }}
59
- </VIcon>
60
- </slot>
61
-
62
- <div class="sy-data-list-item-content">
63
- <div :class="{ 'sy-row': row }">
64
- <div
65
- class="sy-data-list-item-label text-caption"
66
- :style="{ color: labelColor }"
82
+ <VChip
83
+ v-if="chip"
84
+ v-bind="options.chip"
67
85
  >
68
- {{ label }}
69
- </div>
70
-
71
- <div class="sy-data-list-item-value">
72
- <slot
73
- name="value"
74
- v-bind="{ itemValue }"
86
+ {{ itemValue }}
87
+ </VChip>
88
+
89
+ <span
90
+ v-else-if="renderHtmlValue"
91
+ class="text-body-1"
92
+ v-html="itemValue"
93
+ />
94
+
95
+ <span
96
+ v-else
97
+ class="text-body-1"
98
+ v-text="itemValue"
99
+ />
100
+
101
+ <slot name="action">
102
+ <VBtn
103
+ v-if="action"
104
+ class="sy-data-list-item-action-btn px-2"
105
+ size="small"
106
+ variant="tonal"
107
+ :color="actionButtonColor"
108
+ @click="emits('click:action')"
75
109
  >
76
- <VChip
77
- v-if="chip"
78
- v-bind="options.chip"
79
- >
80
- {{ itemValue }}
81
- </VChip>
82
-
83
- <span
84
- v-else-if="renderHtmlValue"
85
- class="text-body-1"
86
- v-html="itemValue"
87
- />
88
-
89
- <span
90
- v-else
91
- class="text-body-1"
92
- v-text="itemValue"
93
- />
94
- </slot>
95
- </div>
96
- </div>
97
-
98
- <slot name="action">
99
- <VBtn
100
- v-if="action"
101
- v-bind="options.actionBtn"
102
- class="sy-data-list-item-action-btn"
103
- @click="emits('click:action')"
104
- >
105
- {{ action }}
106
- </VBtn>
110
+ {{ action }}
111
+ </VBtn>
112
+ </slot>
107
113
  </slot>
108
- </div>
109
- </li>
114
+ </dd>
115
+ </div>
110
116
  </template>
111
117
 
112
118
  <style lang="scss" scoped>
113
119
  .sy-row {
114
120
  display: flex;
115
121
  flex-wrap: wrap;
122
+ gap: 0.25rem;
116
123
 
117
124
  .sy-data-list-item-label {
118
125
  align-self: center;
119
-
120
- &::after {
121
- content: ':';
122
- margin: 0 4px;
123
- }
124
126
  }
125
127
  }
126
128
 
129
+ .sy-data-list-item-value.has-icon {
130
+ margin-left: 2.5rem;
131
+ }
132
+
127
133
  .sy-data-list-item-action-btn.v-btn {
128
- min-width: 0;
129
- margin: 0 -1px;
134
+ &:focus-visible::after {
135
+ opacity: 1;
136
+ }
130
137
  }
131
138
 
132
139
  .v-icon.v-theme--light {
@@ -2,7 +2,7 @@ import type { VariantType } from '@/types/vuetifyTypes'
2
2
 
3
3
  export const config = {
4
4
  icon: {
5
- size: 24,
5
+ size: '24',
6
6
  class: 'mr-4 mt-2',
7
7
  },
8
8
  chip: {
@@ -622,8 +622,8 @@ export const WithError: Story = {
622
622
  v-model="date"
623
623
  placeholder="notAfterToday"
624
624
  :custom-rules="[
625
- { type: 'notAfterToday', options: { message: 'La date ne peut pas être après aujourd'hui' } }
626
- ]"
625
+ { type: 'notAfterToday', options: { message: 'La date ne peut pas être après aujourd'hui' } },
626
+ ]"
627
627
  />
628
628
  </template>
629
629
  `,
@@ -656,7 +656,7 @@ export const WithError: Story = {
656
656
  'noCalendar': false,
657
657
  'modelValue': '01/01/2100',
658
658
  'customRules': [
659
- { type: 'notAfterToday', options: { message: 'La date ne peut pas être après aujourd\'hui' } },
659
+ { type: 'notAfterToday', options: { message: 'La date ne peut pas être après aujourd hui' } },
660
660
  ],
661
661
  'onUpdate:modelValue': fn(),
662
662
  'onFocus': fn(),
@@ -68,6 +68,7 @@
68
68
  max?: string
69
69
  }
70
70
  autoClamp?: boolean
71
+ isValidateOnBlur?: boolean
71
72
  }>(), {
72
73
  modelValue: undefined,
73
74
  label: DATE_PICKER_MESSAGES.LABEL_DEFAULT,
@@ -106,13 +107,14 @@
106
107
  max: '',
107
108
  }),
108
109
  autoClamp: false,
110
+ isValidateOnBlur: true,
109
111
  })
110
112
 
111
113
  // La compatibilité entre isBirthDate et birthDate est gérée directement dans l'appel au composable
112
114
 
113
115
  // Utilisation des composables pour les fonctionnalités du CalendarMode
114
116
  const { displayWeekendDays } = useWeekendDays(props)
115
- const { todayInString } = useTodayButton(props)
117
+ const { todayInString, headerDate } = useTodayButton(props)
116
118
  const { labelWithAsterisk } = useAsteriskDisplay(props)
117
119
 
118
120
  const selectedDates = ref<Date | Date[] | null>(
@@ -125,9 +127,12 @@
125
127
  todayInString,
126
128
  })
127
129
 
130
+ const onblur = ref(false)
131
+
128
132
  const dateTextInputRef = ref<null | ComponentPublicInstance<typeof DateTextInput>>()
129
133
  const dateCalendarTextInputRef = ref<null | ComponentPublicInstance<typeof SyTextField>>()
130
134
  const datePickerRef = ref<null | ComponentPublicInstance<typeof VDatePicker>>()
135
+ const complexDatePickerRef = ref<null | ComponentPublicInstance<typeof ComplexDatePicker>>()
131
136
 
132
137
  // Fonction pour sélectionner la date du jour
133
138
  const handleSelectToday = () => {
@@ -151,6 +156,12 @@
151
156
 
152
157
  // Mettre à jour l'affichage formaté
153
158
  updateDisplayFormattedDate()
159
+
160
+ // Mettre à jour les variables currentMonth et currentYear pour refléter la date d'aujourd'hui
161
+ currentMonth.value = today.getMonth().toString()
162
+ currentYear.value = today.getFullYear().toString()
163
+ currentMonthName.value = dayjs(today).format('MMMM')
164
+ currentYearName.value = today.getFullYear().toString()
154
165
  }
155
166
 
156
167
  const emit = defineEmits<{
@@ -210,6 +221,10 @@
210
221
  if (props.readonly) {
211
222
  return
212
223
  }
224
+ // Ne pas afficher d'erreur si on est sur une perte de focus et si isValidateOnBlur est false
225
+ if (onblur.value && !props.isValidateOnBlur) {
226
+ return
227
+ }
213
228
  // Ne pas afficher d'erreur si on est dans le contexte du mounted initial
214
229
  if (shouldDisplayErrors && (!isInitialValidation.value || forceValidation)) {
215
230
  errors.value.push(DATE_PICKER_MESSAGES.ERROR_REQUIRED)
@@ -275,8 +290,13 @@
275
290
  try {
276
291
  isUpdatingFromInternal.value = true
277
292
  if (Array.isArray(newValue)) {
278
- // Pour les plages de dates, utiliser la première date
279
- if (newValue.length > 0) {
293
+ // Pour les plages de dates, formater correctement la plage complète
294
+ if (props.displayRange && newValue.length >= 2) {
295
+ // Formater la plage complète pour l'affichage
296
+ textInputValue.value = `${formatDate(newValue[0], props.format)} - ${formatDate(newValue[1], props.format)}`
297
+ }
298
+ else if (newValue.length > 0) {
299
+ // Si on n'a qu'une date ou mode non-range, utiliser la première date
280
300
  textInputValue.value = formatDate(newValue[0], props.format)
281
301
  }
282
302
  }
@@ -545,9 +565,14 @@
545
565
  })
546
566
 
547
567
  const validateOnSubmit = () => {
568
+ // Si le mode noCalendar est activé, on délègue la validation au DateTextInput
548
569
  if (props.noCalendar) {
549
570
  return dateTextInputRef.value?.validateOnSubmit()
550
571
  }
572
+ // Si le mode combiné est activé, on délègue la validation au ComplexDatePicker
573
+ else if (props.useCombinedMode) {
574
+ return complexDatePickerRef.value?.validateOnSubmit()
575
+ }
551
576
  // Forcer la validation pour ignorer les conditions de validation interactive
552
577
  validateDates(true)
553
578
  // Retourner directement un booléen pour maintenir la compatibilité avec les tests existants
@@ -652,7 +677,10 @@
652
677
 
653
678
  const handleInputBlur = () => {
654
679
  emit('blur')
655
- validateDates(true)
680
+ onblur.value = true
681
+ if (props.isValidateOnBlur) {
682
+ validateDates(true)
683
+ }
656
684
  }
657
685
 
658
686
  watch(isDatePickerVisible, async (isVisible) => {
@@ -665,22 +693,14 @@
665
693
  resetViewMode()
666
694
  }
667
695
 
668
- if (isVisible) {
669
- // set the focus on the date picker
670
- await nextTick()
671
- const firstButton = datePickerRef.value?.$el.querySelector('button')
672
- if (firstButton) {
673
- firstButton.focus()
674
- }
675
- }
676
- else {
696
+ if (!isVisible) {
677
697
  // set the focus on the text input
678
698
  // wait for VMenu to finish DOM updates & transition
679
699
  setTimeout(() => {
680
700
  requestAnimationFrame(() => {
681
- const inputElement = dateCalendarTextInputRef.value?.$el?.querySelector('input')
701
+ const inputElement = dateCalendarTextInputRef.value?.$el?.querySelector?.('input')
682
702
  if (inputElement) {
683
- inputElement.focus()
703
+ inputElement.focus({ preventScroll: true })
684
704
  isDatePickerVisible.value = false
685
705
  }
686
706
  })
@@ -793,8 +813,9 @@
793
813
  customizeMonthButton()
794
814
  }
795
815
 
816
+ // Ne plus ouvrir automatiquement le calendrier au focus, juste émettre l'événement
796
817
  const openDatePickerOnFocus = () => {
797
- openDatePicker()
818
+ // openDatePicker() - désactivé pour améliorer l'accessibilité
798
819
  emit('focus')
799
820
  }
800
821
 
@@ -802,6 +823,22 @@
802
823
  toggleDatePicker()
803
824
  }
804
825
 
826
+ // Gestionnaire d'événement clavier pour l'input
827
+ const handleInputKeydown = (event: KeyboardEvent) => {
828
+ // Ouvrir le calendrier uniquement lorsque la touche Entrée est pressée
829
+ if (event.key === 'Enter') {
830
+ openDatePicker()
831
+ event.preventDefault() // Empêcher la soumission du formulaire
832
+ }
833
+ // Fermer le calendrier lorsque la touche Escape est pressée
834
+ else if ((event.key === 'Escape' || event.key === 'Esc') && isDatePickerVisible.value) {
835
+ isDatePickerVisible.value = false
836
+ emit('closed')
837
+ validateDates() // Valider les dates à la fermeture
838
+ event.preventDefault()
839
+ }
840
+ }
841
+
805
842
  defineExpose({
806
843
  validateOnSubmit,
807
844
  isDatePickerVisible,
@@ -847,6 +884,7 @@
847
884
  :period="props.period"
848
885
  :auto-clamp="props.autoClamp"
849
886
  :display-asterisk="props.displayAsterisk"
887
+ :is-validate-on-blur="props.isValidateOnBlur"
850
888
  @update:model-value="handleDateTextInputUpdate"
851
889
  @date-selected="handleDateTextInputSelection"
852
890
  @blur="handleInputBlur"
@@ -855,6 +893,7 @@
855
893
  </template>
856
894
  <template v-else-if="props.useCombinedMode">
857
895
  <ComplexDatePicker
896
+ ref="complexDatePickerRef"
858
897
  :model-value="props.modelValue"
859
898
  :format="props.format"
860
899
  :date-format-return="props.dateFormatReturn"
@@ -886,6 +925,7 @@
886
925
  :auto-clamp="props.autoClamp"
887
926
  :label="props.label"
888
927
  :placeholder="props.placeholder"
928
+ :is-validate-on-blur="props.isValidateOnBlur"
889
929
  @update:model-value="emit('update:modelValue', $event)"
890
930
  @focus="emit('focus')"
891
931
  @blur="emit('blur')"
@@ -901,7 +941,7 @@
901
941
  location="bottom"
902
942
  :close-on-content-click="false"
903
943
  :open-on-click="false"
904
- scroll-strategy="none"
944
+ scroll-strategy="reposition"
905
945
  transition="fade-transition"
906
946
  attach="body"
907
947
  :offset="[-20, 5]"
@@ -938,6 +978,7 @@
938
978
  @click="openDatePickerOnClick"
939
979
  @focus="openDatePickerOnFocus"
940
980
  @blur="handleInputBlur"
981
+ @keydown="handleInputKeydown"
941
982
  @update:model-value="updateSelectedDates"
942
983
  @prepend-icon-click="openDatePickerOnIconClick"
943
984
  @append-icon-click="openDatePickerOnIconClick"
@@ -970,7 +1011,7 @@
970
1011
  </template>
971
1012
  <template #header>
972
1013
  <h3 class="mx-auto my-auto ml-5 mb-4">
973
- {{ displayedDateString }}
1014
+ {{ selectedDates ? displayedDateString : headerDate }}
974
1015
  </h3>
975
1016
  </template>
976
1017
  <template
@@ -1305,3 +1305,177 @@ export const WithFormSubmission: Story = {
1305
1305
  }
1306
1306
  },
1307
1307
  }
1308
+
1309
+ export const CustomRules: Story = {
1310
+ parameters: {
1311
+ sourceCode: [
1312
+ {
1313
+ name: 'Template',
1314
+ code: `
1315
+ <template>
1316
+ <DatePicker
1317
+ v-model="date"
1318
+ placeholder="Date requise"
1319
+ format="DD/MM/YYYY"
1320
+ required
1321
+ class="mb-4"
1322
+ useCombinedMode
1323
+ :customRules="customRules"
1324
+ />
1325
+ </template>
1326
+ `,
1327
+ },
1328
+ {
1329
+ name: 'Script',
1330
+ code: `
1331
+ <script setup lang="ts">
1332
+ import { DatePicker } from '@cnamts/synapse'
1333
+ import { ref } from 'vue'
1334
+
1335
+ const date = ref('')
1336
+
1337
+ const customRules = [
1338
+ {
1339
+ type: 'notBeforeToday',
1340
+ options: {
1341
+ message: 'La date ne peut pas être antérieure à aujourd'hui',
1342
+ },
1343
+ },
1344
+ ]
1345
+ </script>
1346
+ `,
1347
+ },
1348
+ ],
1349
+ },
1350
+ render: () => {
1351
+ return {
1352
+ components: { DatePicker },
1353
+ setup() {
1354
+ const customRules = [
1355
+ {
1356
+ type: 'notBeforeToday',
1357
+ options: {
1358
+ message: 'La date ne peut pas être antérieure à aujourd\'hui',
1359
+ },
1360
+ },
1361
+ ]
1362
+
1363
+ // Valeur du DatePicker
1364
+ const date = ref(null)
1365
+
1366
+ return { date, customRules }
1367
+ },
1368
+ template: `
1369
+ <div class="d-flex flex-wrap align-center pa-4">
1370
+ <DatePicker
1371
+ v-model="date"
1372
+ :custom-rules="customRules"
1373
+ required
1374
+ use-combined-mode
1375
+ label="Date de rendez-vous"
1376
+ placeholder="JJ/MM/AAAA"
1377
+ />
1378
+ </div>
1379
+ `,
1380
+ }
1381
+ },
1382
+ }
1383
+
1384
+ export const CustomWarningRules: Story = {
1385
+ parameters: {
1386
+ sourceCode: [
1387
+ {
1388
+ name: 'Template',
1389
+ code: `
1390
+ <template>
1391
+ <DatePicker
1392
+ v-model="date"
1393
+ placeholder="Date requise"
1394
+ format="DD/MM/YYYY"
1395
+ required
1396
+ class="mb-4"
1397
+ useCombinedMode
1398
+ :customWarningRules="customWarningRules"
1399
+ />
1400
+ </template>
1401
+ `,
1402
+ },
1403
+ {
1404
+ name: 'Script',
1405
+ code: `
1406
+ <script setup lang="ts">
1407
+ import { DatePicker } from '@cnamts/synapse'
1408
+ import { ref } from 'vue'
1409
+
1410
+ const date = ref('')
1411
+ const customWarningRules = [
1412
+ {
1413
+ type: 'custom',
1414
+ options: {
1415
+ validate: (value: string | Date) => {
1416
+ // check if manual entry
1417
+ if (typeof value === 'string') {
1418
+ return !value.includes('2025')
1419
+ } else {
1420
+ // check if DatePicker selection
1421
+ return !value.getFullYear().toString().includes('2025')
1422
+ }
1423
+ },
1424
+ warningMessage: 'Les dates en 2025 ne sont pas autorisées',
1425
+ successMessage: 'Date hors 2025',
1426
+ fieldIdentifier: 'date',
1427
+ },
1428
+ },
1429
+ ]
1430
+ </script>
1431
+ `,
1432
+ },
1433
+ ],
1434
+ },
1435
+ render: () => {
1436
+ return {
1437
+ components: { DatePicker },
1438
+ setup() {
1439
+ const customWarningRules = [
1440
+ {
1441
+ type: 'custom',
1442
+ options: {
1443
+ validate: (value: string | Date) => {
1444
+ // check typeof value
1445
+ if (typeof value === 'string') {
1446
+ return !value.includes('2025')
1447
+ }
1448
+ else {
1449
+ // check if value is a Date
1450
+ return !value.getFullYear().toString().includes('2025')
1451
+ }
1452
+ },
1453
+ warningMessage: 'Les dates en 2025 ne sont pas autorisées',
1454
+ successMessage: 'Date hors 2025',
1455
+ fieldIdentifier: 'date',
1456
+ isWarning: true,
1457
+ },
1458
+ },
1459
+ ]
1460
+
1461
+ // Valeur du DatePicker
1462
+ const date = ref('')
1463
+
1464
+ return { date, customWarningRules }
1465
+ },
1466
+ template: `
1467
+ <div class="d-flex flex-wrap align-center pa-4">
1468
+ <DatePicker
1469
+ v-model="date"
1470
+ :custom-warning-rules="customWarningRules"
1471
+ required
1472
+ use-combined-mode
1473
+ label="Date de rendez-vous"
1474
+ placeholder="JJ/MM/AAAA"
1475
+ />
1476
+ </div>
1477
+ `,
1478
+ }
1479
+ },
1480
+
1481
+ }