@cnamts/synapse 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (395) hide show
  1. package/dist/DateFilter-BmRuzQ9Z.js +98 -0
  2. package/dist/NumberFilter-CnIPDHqx.js +121 -0
  3. package/dist/PeriodFilter-CZwZ8CnQ.js +112 -0
  4. package/dist/SelectFilter-Cj-GW2Cc.js +97 -0
  5. package/dist/TextFilter-DTxZHJwX.js +114 -0
  6. package/dist/{components/BackBtn → common}/constants/ExpertiseLevelEnum.d.ts +3 -0
  7. package/dist/components/BackBtn/AccessibiliteItems.d.ts +1 -1
  8. package/dist/components/BackToTopBtn/AccessibiliteItems.d.ts +1 -1
  9. package/dist/components/ChipList/AccessibiliteItems.d.ts +1 -1
  10. package/dist/components/CollapsibleList/AccessibiliteItems.d.ts +1 -1
  11. package/dist/components/ContextualMenu/AccessibiliteItems.d.ts +1 -1
  12. package/dist/components/CookieBanner/AccessibiliteItems.d.ts +1 -1
  13. package/dist/components/CopyBtn/AccessibiliteItems.d.ts +1 -1
  14. package/dist/components/Customs/SyBtnSelect/AccessibiliteItems.d.ts +1 -1
  15. package/dist/components/Customs/SyInputSelect/AccessibiliteItems.d.ts +1 -1
  16. package/dist/components/Customs/SySelect/AccessibiliteItems.d.ts +1 -1
  17. package/dist/components/Customs/SyTextField/AccessibiliteItems.d.ts +1 -1
  18. package/dist/components/DataList/AccessibiliteItems.d.ts +1 -1
  19. package/dist/components/DataListGroup/AccessibiliteItems.d.ts +1 -1
  20. package/dist/components/DatePicker/AccessibiliteItems.d.ts +1 -1
  21. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +4162 -0
  22. package/dist/components/DatePicker/{DatePicker.d.ts → DatePicker/DatePicker.d.ts} +142 -102
  23. package/dist/components/DatePicker/{DateTextInput.d.ts → DateTextInput/DateTextInput.d.ts} +32 -26
  24. package/dist/components/DatePicker/composables/index.d.ts +15 -0
  25. package/dist/components/DatePicker/composables/useDateFormatValidation.d.ts +25 -0
  26. package/dist/components/DatePicker/composables/useDateInputEditing.d.ts +33 -0
  27. package/dist/components/DatePicker/composables/useDatePickerViewMode.d.ts +16 -0
  28. package/dist/components/DatePicker/composables/useDatePickerVisibility.d.ts +27 -0
  29. package/dist/components/DatePicker/composables/useDateRangeInput.d.ts +29 -0
  30. package/dist/components/DatePicker/composables/useDateRangeValidation.d.ts +11 -0
  31. package/dist/components/DatePicker/composables/useDateSelection.d.ts +10 -0
  32. package/dist/components/DatePicker/composables/useDateValidation.d.ts +35 -0
  33. package/dist/components/DatePicker/composables/useDisplayedDateString.d.ts +16 -0
  34. package/dist/components/DatePicker/composables/useIconState.d.ts +17 -0
  35. package/dist/components/DatePicker/composables/useInputBlurHandler.d.ts +30 -0
  36. package/dist/components/DatePicker/composables/useInputHandler.d.ts +32 -0
  37. package/dist/components/DatePicker/composables/useManualDateValidation.d.ts +33 -0
  38. package/dist/components/DatePicker/composables/useMonthButtonCustomization.d.ts +9 -0
  39. package/dist/components/DatePicker/composables/useTodayButton.d.ts +16 -0
  40. package/dist/components/DatePicker/composables/useWeekendDays.d.ts +11 -0
  41. package/dist/components/DatePicker/constants/messages.d.ts +29 -0
  42. package/dist/components/DatePicker/types.d.ts +13 -0
  43. package/dist/components/DialogBox/AccessibiliteItems.d.ts +1 -1
  44. package/dist/components/DownloadBtn/AccessibiliteItems.d.ts +1 -1
  45. package/dist/components/ErrorPage/AccessibiliteItems.d.ts +1 -1
  46. package/dist/components/ExternalLinks/AccessibiliteItems.d.ts +1 -1
  47. package/dist/components/FileList/AccessibiliteItems.d.ts +1 -1
  48. package/dist/components/FilePreview/AccessibiliteItems.d.ts +1 -1
  49. package/dist/components/FileUpload/AccessibiliteItems.d.ts +1 -1
  50. package/dist/components/FilterInline/AccessibiliteItems.d.ts +1 -1
  51. package/dist/components/FilterSideBar/AccessibiliteItems.d.ts +1 -1
  52. package/dist/components/FilterSideBar/FilterSideBar.d.ts +395 -1
  53. package/dist/components/FooterBar/AccessibiliteItems.d.ts +1 -1
  54. package/dist/components/FranceConnectBtn/AccessibiliteItems.d.ts +1 -1
  55. package/dist/components/HeaderBar/AccessibiliteItems.d.ts +1 -1
  56. package/dist/components/HeaderBar/HeaderBurgerMenu/AccessibiliteItems.d.ts +1 -1
  57. package/dist/components/HeaderLoading/AccessibiliteItems.d.ts +1 -1
  58. package/dist/components/HeaderToolbar/AccessibiliteItems.d.ts +1 -1
  59. package/dist/components/LangBtn/AccessibiliteItems.d.ts +1 -1
  60. package/dist/components/Logo/AccessibiliteItems.d.ts +1 -1
  61. package/dist/components/LogoBrandSection/AccessibiliteItems.d.ts +1 -1
  62. package/dist/components/MaintenancePage/AccessibiliteItems.d.ts +1 -1
  63. package/dist/components/NirField/AccessibiliteItems.d.ts +1 -1
  64. package/dist/components/NotFoundPage/AccessibiliteItems.d.ts +1 -1
  65. package/dist/components/NotificationBar/AccessibiliteItems.d.ts +1 -1
  66. package/dist/components/PageContainer/AccessibiliteItems.d.ts +1 -1
  67. package/dist/components/PaginatedTable/AccessibiliteItems.d.ts +1 -1
  68. package/dist/components/PasswordField/AccessibiliteItems.d.ts +1 -1
  69. package/dist/components/PeriodField/AccessibiliteItems.d.ts +1 -1
  70. package/dist/components/PeriodField/PeriodField.d.ts +171 -37
  71. package/dist/components/PhoneField/AccessibiliteItems.d.ts +1 -1
  72. package/dist/components/RangeField/AccessibiliteItems.d.ts +1 -1
  73. package/dist/components/RatingPicker/AccessibiliteItems.d.ts +1 -1
  74. package/dist/components/SearchListField/AccessibiliteItems.d.ts +1 -1
  75. package/dist/components/SelectBtnField/AccessibiliteItems.d.ts +1 -1
  76. package/dist/components/SkipLink/AccessibiliteItems.d.ts +1 -1
  77. package/dist/components/SocialMediaLinks/AccessibiliteItems.d.ts +1 -1
  78. package/dist/components/SubHeader/AccessibiliteItems.d.ts +1 -1
  79. package/dist/components/SyAlert/AccessibiliteItems.d.ts +1 -1
  80. package/dist/components/TableToolbar/AccessibiliteItems.d.ts +1 -1
  81. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +647 -0
  82. package/dist/components/Tables/SyTable/SyTable.d.ts +666 -0
  83. package/dist/components/Tables/common/SyTableFilter.d.ts +126 -0
  84. package/dist/components/Tables/common/TableHeader.d.ts +33 -0
  85. package/dist/components/Tables/common/constants/StateEnum.d.ts +6 -0
  86. package/dist/components/Tables/common/filters/DateFilter.d.ts +121 -0
  87. package/dist/components/Tables/common/filters/NumberFilter.d.ts +132 -0
  88. package/dist/components/Tables/common/filters/PeriodFilter.d.ts +135 -0
  89. package/dist/components/Tables/common/filters/SelectFilter.d.ts +120 -0
  90. package/dist/components/Tables/common/filters/TextFilter.d.ts +132 -0
  91. package/dist/components/Tables/common/formatters.d.ts +17 -0
  92. package/dist/components/Tables/common/locales.d.ts +7 -0
  93. package/dist/components/Tables/common/tableAccessibilityUtils.d.ts +8 -0
  94. package/dist/components/Tables/common/tableFilterUtils.d.ts +2 -0
  95. package/dist/components/Tables/common/tableStorageUtils.d.ts +29 -0
  96. package/dist/components/Tables/common/tableUtils.d.ts +42 -0
  97. package/dist/components/Tables/common/types.d.ts +80 -0
  98. package/dist/components/Tables/common/useTableFilter.d.ts +9 -0
  99. package/dist/components/Tables/index.d.ts +2 -0
  100. package/dist/components/UploadWorkflow/AccessibiliteItems.d.ts +1 -1
  101. package/dist/components/UserMenuBtn/AccessibiliteItems.d.ts +1 -1
  102. package/dist/components/index.d.ts +3 -1
  103. package/dist/design-system-v3.js +100 -11944
  104. package/dist/design-system-v3.umd.cjs +22 -4
  105. package/dist/designTokens/index.d.ts +3 -1
  106. package/dist/designTokens/tokens/cnam/cnamFonts.d.ts +140 -0
  107. package/dist/designTokens/tokens/pa/paFonts.d.ts +140 -0
  108. package/dist/designTokens/utils/createFontVariables.d.ts +39 -0
  109. package/dist/designTokens/utils/index.d.ts +2 -1
  110. package/dist/main-WDqeoGM-.js +14788 -0
  111. package/dist/style.css +1 -1
  112. package/dist/utils/rules/isRequired/index.d.ts +1 -1
  113. package/dist/vite-env.d.ts +12 -0
  114. package/package.json +3 -3
  115. package/src/assets/_spacers.scss +37 -1
  116. package/src/assets/_typography.scss +158 -0
  117. package/src/assets/settings.scss +7 -0
  118. package/src/common/constants/ExpertiseLevelEnum.ts +7 -0
  119. package/src/components/BackBtn/AccessibiliteItems.ts +1 -1
  120. package/src/components/BackToTopBtn/AccessibiliteItems.ts +1 -1
  121. package/src/components/ChipList/AccessibiliteItems.ts +1 -1
  122. package/src/components/CollapsibleList/AccessibiliteItems.ts +1 -1
  123. package/src/components/ContextualMenu/AccessibiliteItems.ts +1 -1
  124. package/src/components/CookieBanner/AccessibiliteItems.ts +1 -1
  125. package/src/components/CopyBtn/AccessibiliteItems.ts +1 -1
  126. package/src/components/Customs/SyBtnSelect/AccessibiliteItems.ts +1 -1
  127. package/src/components/Customs/SyInputSelect/AccessibiliteItems.ts +1 -1
  128. package/src/components/Customs/SySelect/AccessibiliteItems.ts +1 -1
  129. package/src/components/Customs/SySelect/SySelect.vue +3 -9
  130. package/src/components/Customs/SySelect/tests/SySelect.spec.ts +4 -2
  131. package/src/components/Customs/SyTextField/AccessibiliteItems.ts +1 -1
  132. package/src/components/DataList/AccessibiliteItems.ts +1 -1
  133. package/src/components/DataListGroup/AccessibiliteItems.ts +1 -1
  134. package/src/components/DatePicker/AccessibiliteItems.ts +1 -1
  135. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.mdx +212 -0
  136. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +1097 -0
  137. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +497 -180
  138. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +941 -0
  139. package/src/components/DatePicker/DatePicker/DatePicker.mdx +176 -0
  140. package/src/components/DatePicker/{tests → DatePicker}/DatePicker.spec.ts +1 -1
  141. package/src/components/DatePicker/{DatePicker.stories.ts → DatePicker/DatePicker.stories.ts} +115 -400
  142. package/src/components/DatePicker/{DatePicker.vue → DatePicker/DatePicker.vue} +302 -84
  143. package/src/components/DatePicker/DatePickerOverview.mdx +227 -0
  144. package/src/components/DatePicker/{DatePickerValidation.mdx → DatePickerValidationExample/DatePickerValidation.mdx} +3 -3
  145. package/src/components/DatePicker/{DatePickerValidation.stories.ts → DatePickerValidationExample/DatePickerValidation.stories.ts} +2 -2
  146. package/src/components/DatePicker/DateTextInput/DateRange.stories.ts +310 -0
  147. package/src/components/DatePicker/DateTextInput/DateTextInput.range.spec.ts +278 -0
  148. package/src/components/DatePicker/{tests → DateTextInput}/DateTextInput.spec.ts +8 -7
  149. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +916 -0
  150. package/src/components/DatePicker/DateTextInput/NoCalendar.mdx +64 -0
  151. package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +572 -0
  152. package/src/components/DatePicker/composables/index.ts +22 -0
  153. package/src/components/DatePicker/composables/tests/useDateFormatValidation.spec.ts +165 -0
  154. package/src/components/DatePicker/composables/tests/useDateInputEditing.spec.ts +359 -0
  155. package/src/components/DatePicker/composables/tests/useDatePickerViewMode.spec.ts +160 -0
  156. package/src/components/DatePicker/composables/tests/useDatePickerVisibility.spec.ts +339 -0
  157. package/src/components/DatePicker/composables/tests/useDateRangeInput.spec.ts +277 -0
  158. package/src/components/DatePicker/composables/tests/useDateRangeValidation.spec.ts +107 -0
  159. package/src/components/DatePicker/composables/tests/useDateSelection.spec.ts +171 -0
  160. package/src/components/DatePicker/composables/tests/useDateValidation.spec.ts +245 -0
  161. package/src/components/DatePicker/composables/tests/useDisplayedDateString.spec.ts +98 -0
  162. package/src/components/DatePicker/composables/tests/useIconState.spec.ts +130 -0
  163. package/src/components/DatePicker/composables/tests/useInputBlurHandler.spec.ts +278 -0
  164. package/src/components/DatePicker/composables/tests/useManualDateValidation.spec.ts +233 -0
  165. package/src/components/DatePicker/composables/tests/useMonthButtonCustomization.spec.ts +100 -0
  166. package/src/components/DatePicker/composables/tests/useTodayButton.spec.ts +97 -0
  167. package/src/components/DatePicker/composables/tests/useWeekendDays.spec.ts +28 -0
  168. package/src/components/DatePicker/composables/useDateFormatValidation.ts +95 -0
  169. package/src/components/DatePicker/composables/useDateInputEditing.ts +326 -0
  170. package/src/components/DatePicker/composables/useDatePickerViewMode.ts +61 -0
  171. package/src/components/DatePicker/composables/useDatePickerVisibility.ts +146 -0
  172. package/src/components/DatePicker/composables/useDateRangeInput.ts +375 -0
  173. package/src/components/DatePicker/composables/useDateRangeValidation.ts +48 -0
  174. package/src/components/DatePicker/composables/useDateSelection.ts +121 -0
  175. package/src/components/DatePicker/composables/useDateValidation.ts +225 -0
  176. package/src/components/DatePicker/composables/useDisplayedDateString.ts +58 -0
  177. package/src/components/DatePicker/composables/useIconState.ts +53 -0
  178. package/src/components/DatePicker/composables/useInputBlurHandler.ts +101 -0
  179. package/src/components/DatePicker/composables/useInputHandler.ts +436 -0
  180. package/src/components/DatePicker/composables/useManualDateValidation.ts +161 -0
  181. package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +89 -0
  182. package/src/components/DatePicker/composables/useTodayButton.ts +43 -0
  183. package/src/components/DatePicker/composables/useWeekendDays.ts +21 -0
  184. package/src/components/DatePicker/constants/messages.ts +50 -0
  185. package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +4 -4
  186. package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +1 -1
  187. package/src/components/DatePicker/playground/ComplexDatePickerPlayground.vue +172 -0
  188. package/src/components/DatePicker/types.ts +15 -0
  189. package/src/components/DialogBox/AccessibiliteItems.ts +1 -1
  190. package/src/components/DownloadBtn/AccessibiliteItems.ts +1 -1
  191. package/src/components/ErrorPage/AccessibiliteItems.ts +1 -1
  192. package/src/components/ExternalLinks/AccessibiliteItems.ts +1 -1
  193. package/src/components/FileList/AccessibiliteItems.ts +1 -1
  194. package/src/components/FilePreview/AccessibiliteItems.ts +1 -1
  195. package/src/components/FileUpload/AccessibiliteItems.ts +1 -1
  196. package/src/components/FilterInline/AccessibiliteItems.ts +1 -1
  197. package/src/components/FilterSideBar/AccessibiliteItems.ts +1 -1
  198. package/src/components/FilterSideBar/FilterSideBar.vue +108 -90
  199. package/src/components/FilterSideBar/tests/FilterSideBar.spec.ts +27 -0
  200. package/src/components/FilterSideBar/tests/__snapshots__/FilterSideBar.spec.ts.snap +114 -109
  201. package/src/components/FooterBar/AccessibiliteItems.ts +1 -1
  202. package/src/components/FooterBar/FooterBar.vue +2 -1
  203. package/src/components/FranceConnectBtn/AccessibiliteItems.ts +1 -1
  204. package/src/components/HeaderBar/AccessibiliteItems.ts +1 -1
  205. package/src/components/HeaderBar/HeaderBurgerMenu/AccessibiliteItems.ts +1 -1
  206. package/src/components/HeaderLoading/AccessibiliteItems.ts +1 -1
  207. package/src/components/HeaderToolbar/AccessibiliteItems.ts +1 -1
  208. package/src/components/LangBtn/AccessibiliteItems.ts +1 -1
  209. package/src/components/Logo/Accessibilite.stories.ts +4 -0
  210. package/src/components/Logo/AccessibiliteItems.ts +1 -1
  211. package/src/components/LogoBrandSection/AccessibiliteItems.ts +1 -1
  212. package/src/components/MaintenancePage/AccessibiliteItems.ts +1 -1
  213. package/src/components/NirField/AccessibiliteItems.ts +1 -1
  214. package/src/components/NotFoundPage/AccessibiliteItems.ts +1 -1
  215. package/src/components/NotificationBar/AccessibiliteItems.ts +1 -1
  216. package/src/components/PageContainer/AccessibiliteItems.ts +1 -1
  217. package/src/components/PaginatedTable/AccessibiliteItems.ts +1 -1
  218. package/src/components/PaginatedTable/PaginatedTable.stories.ts +19 -0
  219. package/src/components/PaginatedTable/PaginatedTable.vue +51 -13
  220. package/src/components/PaginatedTable/tests/PaginatedTable.spec.ts +0 -2
  221. package/src/components/PasswordField/AccessibiliteItems.ts +1 -1
  222. package/src/components/PeriodField/AccessibiliteItems.ts +1 -1
  223. package/src/components/PeriodField/PeriodField.vue +13 -1
  224. package/src/components/PhoneField/AccessibiliteItems.ts +1 -1
  225. package/src/components/RangeField/AccessibiliteItems.ts +1 -1
  226. package/src/components/RatingPicker/AccessibiliteItems.ts +1 -1
  227. package/src/components/SearchListField/AccessibiliteItems.ts +1 -1
  228. package/src/components/SelectBtnField/AccessibiliteItems.ts +1 -1
  229. package/src/components/SkipLink/AccessibiliteItems.ts +1 -1
  230. package/src/components/SocialMediaLinks/AccessibiliteItems.ts +1 -1
  231. package/src/components/SubHeader/AccessibiliteItems.ts +1 -1
  232. package/src/components/SyAlert/AccessibiliteItems.ts +1 -1
  233. package/src/components/TableToolbar/AccessibiliteItems.ts +1 -1
  234. package/src/components/TableToolbar/TableToolbar.stories.ts +110 -56
  235. package/src/components/Tables/SyServerTable/FilterRules.stories.ts +83 -0
  236. package/src/components/Tables/SyServerTable/SyServerTable.mdx +160 -0
  237. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +2887 -0
  238. package/src/components/Tables/SyServerTable/SyServerTable.vue +302 -0
  239. package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +450 -0
  240. package/src/components/Tables/SyServerTable/tests/__snapshots__/SyServerTable.spec.ts.snap +521 -0
  241. package/src/components/Tables/SyTable/FilterRules.stories.ts +235 -0
  242. package/src/components/Tables/SyTable/SyTable.mdx +129 -0
  243. package/src/components/Tables/SyTable/SyTable.stories.ts +1966 -0
  244. package/src/components/Tables/SyTable/SyTable.vue +317 -0
  245. package/src/components/Tables/SyTable/tests/SyTable.spec.ts +345 -0
  246. package/src/components/Tables/SyTable/tests/__snapshots__/SyTable.spec.ts.snap +521 -0
  247. package/src/components/Tables/common/SyTableFilter.vue +342 -0
  248. package/src/components/Tables/common/TableHeader.vue +221 -0
  249. package/src/components/Tables/common/constants/StateEnum.ts +6 -0
  250. package/src/components/Tables/common/filters/DateFilter.vue +140 -0
  251. package/src/components/Tables/common/filters/NumberFilter.vue +234 -0
  252. package/src/components/Tables/common/filters/PeriodFilter.vue +147 -0
  253. package/src/components/Tables/common/filters/SelectFilter.vue +126 -0
  254. package/src/components/Tables/common/filters/TextFilter.vue +191 -0
  255. package/src/components/Tables/common/filters/tests/DateFilter.spec.ts +187 -0
  256. package/src/components/Tables/common/filters/tests/NumberFilter.spec.ts +280 -0
  257. package/src/components/Tables/common/filters/tests/PeriodFilter.spec.ts +192 -0
  258. package/src/components/Tables/common/filters/tests/SelectFilter.spec.ts +219 -0
  259. package/src/components/Tables/common/filters/tests/TextFilter.spec.ts +260 -0
  260. package/src/components/Tables/common/formatters.ts +72 -0
  261. package/src/components/Tables/common/locales.ts +7 -0
  262. package/src/components/Tables/common/tableAccessibilityUtils.ts +61 -0
  263. package/src/components/Tables/common/tableFilterUtils.ts +327 -0
  264. package/src/components/Tables/common/tableStorageUtils.ts +102 -0
  265. package/src/components/Tables/common/tableStyles.scss +54 -0
  266. package/src/components/Tables/common/tableUtils.ts +115 -0
  267. package/src/components/Tables/common/tests/SyTableFilter.spec.ts +312 -0
  268. package/src/components/Tables/common/tests/resize.spec.ts +161 -0
  269. package/src/components/Tables/common/tests/tableFilterUtils.spec.ts +106 -0
  270. package/src/components/Tables/common/tests/tableUtils.spec.ts +272 -0
  271. package/src/components/Tables/common/types.ts +81 -0
  272. package/src/components/Tables/common/useTableFilter.ts +19 -0
  273. package/src/components/Tables/index.ts +3 -0
  274. package/src/components/UploadWorkflow/AccessibiliteItems.ts +1 -1
  275. package/src/components/UserMenuBtn/AccessibiliteItems.ts +1 -1
  276. package/src/components/index.ts +3 -1
  277. package/src/composables/date/useDateFormatDayjs.ts +8 -3
  278. package/src/composables/date/useDateInitializationDayjs.ts +28 -36
  279. package/src/composables/rules/useFieldValidation.ts +1 -2
  280. package/src/designTokens/index.ts +4 -0
  281. package/src/designTokens/tokens/cnam/cnamFonts.ts +140 -0
  282. package/src/designTokens/tokens/pa/paFonts.ts +140 -0
  283. package/src/designTokens/utils/createFontVariables.ts +143 -0
  284. package/src/designTokens/utils/index.ts +2 -1
  285. package/src/stories/Demarrer/Accueil.stories.ts +12 -3
  286. package/src/utils/rules/isHolidayDay/IsHolidayDay.stories.ts +1 -1
  287. package/src/utils/rules/isRequired/index.ts +2 -1
  288. package/src/vite-env.d.ts +12 -0
  289. package/src/vuetifyConfig.ts +10 -3
  290. package/dist/components/BackToTopBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  291. package/dist/components/ChipList/constants/ExpertiseLevelEnum.d.ts +0 -4
  292. package/dist/components/CollapsibleList/constants/ExpertiseLevelEnum.d.ts +0 -4
  293. package/dist/components/ContextualMenu/constants/ExpertiseLevelEnum.d.ts +0 -4
  294. package/dist/components/CookieBanner/constants/ExpertiseLevelEnum.d.ts +0 -4
  295. package/dist/components/CopyBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  296. package/dist/components/Customs/SyBtnSelect/constants/ExpertiseLevelEnum.d.ts +0 -4
  297. package/dist/components/Customs/SyInputSelect/constants/ExpertiseLevelEnum.d.ts +0 -4
  298. package/dist/components/Customs/SySelect/constants/ExpertiseLevelEnum.d.ts +0 -4
  299. package/dist/components/Customs/SyTextField/constants/ExpertiseLevelEnum.d.ts +0 -4
  300. package/dist/components/DataList/constants/ExpertiseLevelEnum.d.ts +0 -4
  301. package/dist/components/DataListGroup/constants/ExpertiseLevelEnum.d.ts +0 -4
  302. package/dist/components/DatePicker/constants/ExpertiseLevelEnum.d.ts +0 -4
  303. package/dist/components/DialogBox/constants/ExpertiseLevelEnum.d.ts +0 -4
  304. package/dist/components/DownloadBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  305. package/dist/components/ErrorPage/constants/ExpertiseLevelEnum.d.ts +0 -4
  306. package/dist/components/ExternalLinks/constants/ExpertiseLevelEnum.d.ts +0 -4
  307. package/dist/components/FileList/constants/ExpertiseLevelEnum.d.ts +0 -4
  308. package/dist/components/FilePreview/constants/ExpertiseLevelEnum.d.ts +0 -4
  309. package/dist/components/FileUpload/constants/ExpertiseLevelEnum.d.ts +0 -4
  310. package/dist/components/FilterInline/constants/ExpertiseLevelEnum.d.ts +0 -4
  311. package/dist/components/FilterSideBar/constants/ExpertiseLevelEnum.d.ts +0 -4
  312. package/dist/components/FooterBar/constants/ExpertiseLevelEnum.d.ts +0 -4
  313. package/dist/components/FranceConnectBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  314. package/dist/components/HeaderBar/HeaderBurgerMenu/constants/ExpertiseLevelEnum.d.ts +0 -4
  315. package/dist/components/HeaderBar/constants/ExpertiseLevelEnum.d.ts +0 -4
  316. package/dist/components/HeaderLoading/constants/ExpertiseLevelEnum.d.ts +0 -4
  317. package/dist/components/HeaderToolbar/constants/ExpertiseLevelEnum.d.ts +0 -4
  318. package/dist/components/LangBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  319. package/dist/components/Logo/constants/ExpertiseLevelEnum.d.ts +0 -4
  320. package/dist/components/LogoBrandSection/constants/ExpertiseLevelEnum.d.ts +0 -4
  321. package/dist/components/MaintenancePage/constants/ExpertiseLevelEnum.d.ts +0 -4
  322. package/dist/components/NirField/constants/ExpertiseLevelEnum.d.ts +0 -4
  323. package/dist/components/NotFoundPage/constants/ExpertiseLevelEnum.d.ts +0 -4
  324. package/dist/components/NotificationBar/constants/ExpertiseLevelEnum.d.ts +0 -4
  325. package/dist/components/PageContainer/constants/ExpertiseLevelEnum.d.ts +0 -4
  326. package/dist/components/PaginatedTable/constants/ExpertiseLevelEnum.d.ts +0 -4
  327. package/dist/components/PasswordField/constants/ExpertiseLevelEnum.d.ts +0 -4
  328. package/dist/components/PeriodField/constants/ExpertiseLevelEnum.d.ts +0 -4
  329. package/dist/components/PhoneField/constants/ExpertiseLevelEnum.d.ts +0 -4
  330. package/dist/components/RangeField/constants/ExpertiseLevelEnum.d.ts +0 -4
  331. package/dist/components/RatingPicker/constants/ExpertiseLevelEnum.d.ts +0 -4
  332. package/dist/components/SearchListField/constants/ExpertiseLevelEnum.d.ts +0 -4
  333. package/dist/components/SelectBtnField/constants/ExpertiseLevelEnum.d.ts +0 -4
  334. package/dist/components/SkipLink/constants/ExpertiseLevelEnum.d.ts +0 -4
  335. package/dist/components/SocialMediaLinks/constants/ExpertiseLevelEnum.d.ts +0 -4
  336. package/dist/components/SubHeader/constants/ExpertiseLevelEnum.d.ts +0 -4
  337. package/dist/components/SyAlert/constants/ExpertiseLevelEnum.d.ts +0 -4
  338. package/dist/components/TableToolbar/constants/ExpertiseLevelEnum.d.ts +0 -4
  339. package/dist/components/UploadWorkflow/constants/ExpertiseLevelEnum.d.ts +0 -4
  340. package/dist/components/UserMenuBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  341. package/src/components/BackBtn/constants/ExpertiseLevelEnum.ts +0 -4
  342. package/src/components/BackToTopBtn/constants/ExpertiseLevelEnum.ts +0 -4
  343. package/src/components/ChipList/constants/ExpertiseLevelEnum.ts +0 -4
  344. package/src/components/CollapsibleList/constants/ExpertiseLevelEnum.ts +0 -4
  345. package/src/components/ContextualMenu/constants/ExpertiseLevelEnum.ts +0 -4
  346. package/src/components/CookieBanner/constants/ExpertiseLevelEnum.ts +0 -4
  347. package/src/components/CopyBtn/constants/ExpertiseLevelEnum.ts +0 -4
  348. package/src/components/Customs/SyBtnSelect/constants/ExpertiseLevelEnum.ts +0 -4
  349. package/src/components/Customs/SyInputSelect/constants/ExpertiseLevelEnum.ts +0 -4
  350. package/src/components/Customs/SySelect/constants/ExpertiseLevelEnum.ts +0 -4
  351. package/src/components/Customs/SyTextField/constants/ExpertiseLevelEnum.ts +0 -4
  352. package/src/components/DataList/constants/ExpertiseLevelEnum.ts +0 -4
  353. package/src/components/DataListGroup/constants/ExpertiseLevelEnum.ts +0 -4
  354. package/src/components/DatePicker/DatePicker.mdx +0 -222
  355. package/src/components/DatePicker/DateTextInput.vue +0 -504
  356. package/src/components/DatePicker/constants/ExpertiseLevelEnum.ts +0 -4
  357. package/src/components/DialogBox/constants/ExpertiseLevelEnum.ts +0 -4
  358. package/src/components/DownloadBtn/constants/ExpertiseLevelEnum.ts +0 -4
  359. package/src/components/ErrorPage/constants/ExpertiseLevelEnum.ts +0 -4
  360. package/src/components/ExternalLinks/constants/ExpertiseLevelEnum.ts +0 -4
  361. package/src/components/FileList/constants/ExpertiseLevelEnum.ts +0 -4
  362. package/src/components/FilePreview/constants/ExpertiseLevelEnum.ts +0 -4
  363. package/src/components/FileUpload/constants/ExpertiseLevelEnum.ts +0 -4
  364. package/src/components/FilterInline/constants/ExpertiseLevelEnum.ts +0 -4
  365. package/src/components/FilterSideBar/constants/ExpertiseLevelEnum.ts +0 -4
  366. package/src/components/FooterBar/constants/ExpertiseLevelEnum.ts +0 -4
  367. package/src/components/FranceConnectBtn/constants/ExpertiseLevelEnum.ts +0 -4
  368. package/src/components/HeaderBar/HeaderBurgerMenu/constants/ExpertiseLevelEnum.ts +0 -4
  369. package/src/components/HeaderBar/constants/ExpertiseLevelEnum.ts +0 -4
  370. package/src/components/HeaderLoading/constants/ExpertiseLevelEnum.ts +0 -4
  371. package/src/components/HeaderToolbar/constants/ExpertiseLevelEnum.ts +0 -4
  372. package/src/components/LangBtn/constants/ExpertiseLevelEnum.ts +0 -4
  373. package/src/components/Logo/constants/ExpertiseLevelEnum.ts +0 -4
  374. package/src/components/LogoBrandSection/constants/ExpertiseLevelEnum.ts +0 -4
  375. package/src/components/MaintenancePage/constants/ExpertiseLevelEnum.ts +0 -4
  376. package/src/components/NirField/constants/ExpertiseLevelEnum.ts +0 -4
  377. package/src/components/NotFoundPage/constants/ExpertiseLevelEnum.ts +0 -4
  378. package/src/components/NotificationBar/constants/ExpertiseLevelEnum.ts +0 -4
  379. package/src/components/PageContainer/constants/ExpertiseLevelEnum.ts +0 -4
  380. package/src/components/PaginatedTable/constants/ExpertiseLevelEnum.ts +0 -4
  381. package/src/components/PasswordField/constants/ExpertiseLevelEnum.ts +0 -4
  382. package/src/components/PeriodField/constants/ExpertiseLevelEnum.ts +0 -4
  383. package/src/components/PhoneField/constants/ExpertiseLevelEnum.ts +0 -4
  384. package/src/components/RangeField/constants/ExpertiseLevelEnum.ts +0 -4
  385. package/src/components/RatingPicker/constants/ExpertiseLevelEnum.ts +0 -4
  386. package/src/components/SearchListField/constants/ExpertiseLevelEnum.ts +0 -4
  387. package/src/components/SelectBtnField/constants/ExpertiseLevelEnum.ts +0 -4
  388. package/src/components/SkipLink/constants/ExpertiseLevelEnum.ts +0 -4
  389. package/src/components/SocialMediaLinks/constants/ExpertiseLevelEnum.ts +0 -4
  390. package/src/components/SubHeader/constants/ExpertiseLevelEnum.ts +0 -4
  391. package/src/components/SyAlert/constants/ExpertiseLevelEnum.ts +0 -4
  392. package/src/components/TableToolbar/constants/ExpertiseLevelEnum.ts +0 -4
  393. package/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.ts +0 -4
  394. package/src/components/UserMenuBtn/constants/ExpertiseLevelEnum.ts +0 -4
  395. /package/src/components/DatePicker/{examples → playground}/DatePickerHolidayRule.vue +0 -0
@@ -1,14 +1,18 @@
1
1
  <script lang="ts" setup>
2
2
  import { ref, computed, watch, onMounted, onBeforeUnmount, nextTick, type ComponentPublicInstance } from 'vue'
3
- import SyTextField from '@/components/Customs/SyTextField/SyTextField.vue'
4
- import DateTextInput from './DateTextInput.vue'
3
+ import SyTextField from '../../Customs/SyTextField/SyTextField.vue'
4
+ import DateTextInput from '../DateTextInput/DateTextInput.vue'
5
+ import ComplexDatePicker from '../ComplexDatePicker/ComplexDatePicker.vue'
5
6
  import { VDatePicker } from 'vuetify/components'
6
7
  import { useValidation } from '@/composables/validation/useValidation'
7
8
  import { useDateFormat } from '@/composables/date/useDateFormatDayjs'
8
9
  import { useDateInitialization, type DateValue, type DateInput } from '@/composables/date/useDateInitializationDayjs'
9
10
  import { useDatePickerAccessibility } from '@/composables/date/useDatePickerAccessibility'
11
+ import { useWeekendDays, useTodayButton, useDatePickerViewMode, useDateSelection, useMonthButtonCustomization, useDisplayedDateString } from '../composables'
12
+ import { DATE_PICKER_MESSAGES } from '../constants/messages'
10
13
  import dayjs from 'dayjs'
11
14
  import customParseFormat from 'dayjs/plugin/customParseFormat'
15
+ import { mdiCalendar } from '@mdi/js'
12
16
 
13
17
  // Initialiser les plugins dayjs
14
18
  dayjs.extend(customParseFormat)
@@ -19,10 +23,12 @@
19
23
 
20
24
  const props = withDefaults(defineProps<{
21
25
  modelValue?: DateInput
26
+ label?: string
22
27
  placeholder?: string
23
28
  format?: string
24
29
  dateFormatReturn?: string
25
30
  isBirthDate?: boolean
31
+ birthDate?: boolean // Alias pour isBirthDate pour compatibilité avec l'attribut kebab-case birth-date
26
32
  showWeekNumber?: boolean
27
33
  required?: boolean
28
34
  displayRange?: boolean
@@ -42,12 +48,24 @@
42
48
  disableErrorHandling?: boolean
43
49
  showSuccessMessages?: boolean
44
50
  bgColor?: string
51
+ density?: 'default' | 'comfortable' | 'compact'
52
+ hideDetails?: boolean | 'auto'
53
+ displayWeekendDays?: boolean
54
+ displayTodayButton?: boolean
55
+ useCombinedMode?: boolean
56
+ textFieldActivator?: boolean
57
+ period?: {
58
+ min?: string
59
+ max?: string
60
+ }
45
61
  }>(), {
46
62
  modelValue: undefined,
47
- placeholder: 'Sélectionner une date',
48
- format: 'DD/MM/YYYY',
63
+ label: DATE_PICKER_MESSAGES.LABEL_DEFAULT,
64
+ placeholder: DATE_PICKER_MESSAGES.PLACEHOLDER_DEFAULT,
65
+ format: DATE_PICKER_MESSAGES.FORMAT_DEFAULT,
49
66
  dateFormatReturn: '',
50
67
  isBirthDate: false,
68
+ birthDate: false,
51
69
  showWeekNumber: false,
52
70
  required: false,
53
71
  displayRange: false,
@@ -65,8 +83,58 @@
65
83
  disableErrorHandling: false,
66
84
  showSuccessMessages: true,
67
85
  bgColor: undefined,
86
+ density: 'default',
87
+ hideDetails: false,
88
+ displayWeekendDays: true,
89
+ displayTodayButton: true,
90
+ useCombinedMode: false,
91
+ textFieldActivator: false,
92
+ period: () => ({
93
+ min: '',
94
+ max: '',
95
+ }),
96
+ })
97
+
98
+ // La compatibilité entre isBirthDate et birthDate est gérée directement dans l'appel au composable
99
+
100
+ // Utilisation des composables pour les fonctionnalités du DatePicker
101
+ const { displayWeekendDays } = useWeekendDays(props)
102
+ const { todayInString } = useTodayButton(props)
103
+
104
+ const selectedDates = ref<Date | Date[] | null>(
105
+ initializeSelectedDates(props.modelValue as DateInput | null, props.format, props.dateFormatReturn),
106
+ )
107
+
108
+ // Utilisation du composable pour l'affichage formaté des dates
109
+ const { displayedDateString } = useDisplayedDateString({
110
+ selectedDates,
111
+ todayInString,
68
112
  })
69
113
 
114
+ // Fonction pour sélectionner la date du jour
115
+ const handleSelectToday = () => {
116
+ // Créer une seule instance de la date du jour
117
+ const today = new Date()
118
+
119
+ // Si c'est une plage de dates, on définit le même jour pour début et fin
120
+ if (props.displayRange) {
121
+ selectedDates.value = [today, today]
122
+ // Formater les dates pour le modèle (format de retour)
123
+ const formattedToday = formatDate(today, props.dateFormatReturn || props.format)
124
+ updateModel([formattedToday, formattedToday])
125
+ }
126
+ else {
127
+ // Sinon, on sélectionne simplement aujourd'hui
128
+ selectedDates.value = today
129
+ // Formater la date pour le modèle (format de retour)
130
+ const formattedToday = formatDate(today, props.dateFormatReturn || props.format)
131
+ updateModel(formattedToday)
132
+ }
133
+
134
+ // Mettre à jour l'affichage formaté
135
+ updateDisplayFormattedDate()
136
+ }
137
+
70
138
  const emit = defineEmits<{
71
139
  (e: 'update:modelValue', value: DateValue): void
72
140
  (e: 'closed'): void
@@ -74,10 +142,6 @@
74
142
  (e: 'blur'): void
75
143
  }>()
76
144
 
77
- const selectedDates = ref<Date | Date[] | null>(
78
- initializeSelectedDates(props.modelValue as DateInput | null, props.format, props.dateFormatReturn),
79
- )
80
-
81
145
  const isDatePickerVisible = ref(false)
82
146
  const validation = useValidation({
83
147
  showSuccessMessages: props.showSuccessMessages,
@@ -105,6 +169,7 @@
105
169
 
106
170
  // Variable pour éviter les mises à jour récursives
107
171
  const isUpdatingFromInternal = ref(false)
172
+ const isInitialValidation = ref(true)
108
173
 
109
174
  // Fonction pour valider les dates
110
175
  const validateDates = (forceValidation = false) => {
@@ -125,12 +190,12 @@
125
190
  if (props.readonly) {
126
191
  return
127
192
  }
128
- if (shouldDisplayErrors) {
129
- errors.value.push('La date est requise.')
193
+ // Ne pas afficher d'erreur si on est dans le contexte du mounted initial
194
+ if (shouldDisplayErrors && (!isInitialValidation.value || forceValidation)) {
195
+ errors.value.push(DATE_PICKER_MESSAGES.ERROR_REQUIRED)
130
196
  }
131
197
  return
132
198
  }
133
-
134
199
  if (!selectedDates.value) return
135
200
 
136
201
  // Préparer les dates à valider
@@ -163,6 +228,9 @@
163
228
  try {
164
229
  isUpdatingFromInternal.value = true
165
230
  emit('update:modelValue', value)
231
+ isDatePickerVisible.value = false
232
+ emit('closed')
233
+ validateDates()
166
234
  }
167
235
  finally {
168
236
  // S'assurer que le flag est toujours réinitialisé
@@ -219,17 +287,32 @@
219
287
  'min-width': '100%',
220
288
  }))
221
289
 
290
+ // Utilisation du composable pour gérer la sélection de dates
291
+ const { updateSelectedDates, rangeBoundaryDates } = useDateSelection(
292
+ parseDate,
293
+ selectedDates,
294
+ props.format,
295
+ props.displayRange,
296
+ )
297
+
222
298
  // Date(s) formatée(s) en chaîne de caractères pour la valeur de retour
223
299
  const formattedDate = computed<DateValue>(() => {
224
300
  if (!selectedDates.value) return ''
225
301
 
226
302
  const returnFormat = props.dateFormatReturn || props.format
227
303
 
228
- if (Array.isArray(selectedDates.value)) {
304
+ // Pour les plages de dates, utiliser rangeBoundaryDates s'il est disponible
305
+ if (props.displayRange && rangeBoundaryDates.value) {
306
+ return [
307
+ formatDate(rangeBoundaryDates.value[0], returnFormat),
308
+ formatDate(rangeBoundaryDates.value[1], returnFormat),
309
+ ] as [string, string]
310
+ }
311
+ else if (Array.isArray(selectedDates.value)) {
229
312
  if (selectedDates.value.length >= 2) {
230
313
  return [
231
314
  formatDate(selectedDates.value[0], returnFormat),
232
- formatDate(selectedDates.value[1], returnFormat),
315
+ formatDate(selectedDates.value[selectedDates.value.length - 1], returnFormat),
233
316
  ] as [string, string]
234
317
  }
235
318
  return ''
@@ -256,9 +339,59 @@
256
339
  }
257
340
  }, { immediate: true })
258
341
 
342
+ // Gestionnaire pour les mises à jour du DateTextInput en mode no-calendar
343
+ const handleDateTextInputUpdate = (value: DateValue) => {
344
+ if (isUpdatingFromInternal.value) return
345
+
346
+ try {
347
+ isUpdatingFromInternal.value = true
348
+
349
+ // Mettre à jour le modèle avec la valeur reçue du DateTextInput
350
+ updateModel(value)
351
+
352
+ // Mettre à jour selectedDates en fonction de la valeur reçue
353
+ if (!value) {
354
+ selectedDates.value = null
355
+ displayFormattedDate.value = ''
356
+ }
357
+ else if (Array.isArray(value) && props.displayRange) {
358
+ // Pour les plages de dates
359
+ const [startDateStr, endDateStr] = value
360
+ const startDate = parseDate(startDateStr, props.dateFormatReturn || props.format)
361
+ const endDate = parseDate(endDateStr, props.dateFormatReturn || props.format)
362
+
363
+ if (startDate && endDate) {
364
+ selectedDates.value = [startDate, endDate]
365
+ displayFormattedDate.value = `${formatDate(startDate, props.format)} - ${formatDate(endDate, props.format)}`
366
+ }
367
+ }
368
+ else if (typeof value === 'string') {
369
+ // Pour une date unique
370
+ const date = parseDate(value, props.dateFormatReturn || props.format)
371
+ if (date) {
372
+ selectedDates.value = date
373
+ displayFormattedDate.value = formatDate(date, props.format)
374
+ }
375
+ }
376
+ }
377
+ finally {
378
+ setTimeout(() => {
379
+ isUpdatingFromInternal.value = false
380
+ }, 0)
381
+ }
382
+ }
383
+
384
+ // Gestionnaire pour les événements date-selected du DateTextInput
385
+ const handleDateTextInputSelection = (value: DateValue) => {
386
+ if (isUpdatingFromInternal.value) return
387
+
388
+ // Mettre à jour le modèle avec la valeur sélectionnée
389
+ updateModel(value)
390
+ }
391
+
259
392
  watch(textInputValue, (newValue) => {
260
393
  // Éviter les mises à jour récursives
261
- if (isUpdatingFromInternal.value) return
394
+ if (isUpdatingFromInternal.value || props.noCalendar) return
262
395
 
263
396
  // Parse la date avec le format d'affichage
264
397
  const date = parseDate(newValue, props.format)
@@ -343,26 +476,7 @@
343
476
  }
344
477
  }
345
478
 
346
- const updateSelectedDates = (input: DateValue) => {
347
- if (Array.isArray(input)) {
348
- const dates = input
349
- .map(date => (date ? parseDate(date, props.format) : null))
350
- .filter((date): date is Date => date !== null)
351
-
352
- if (dates.length === 0) {
353
- selectedDates.value = null
354
- return
355
- }
356
-
357
- selectedDates.value = dates
358
- return
359
- }
360
-
361
- if (!props.displayRange) {
362
- const date = input ? parseDate(input, props.format) : null
363
- selectedDates.value = date === null ? null : date
364
- }
365
- }
479
+ // Le composable useDateSelection est déjà initialisé plus haut dans le code
366
480
 
367
481
  // Gestionnaire de clic en dehors
368
482
  const handleClickOutside = (event: MouseEvent) => {
@@ -378,20 +492,31 @@
378
492
  validateDates()
379
493
  }
380
494
 
381
- const todayInString = computed(() => {
382
- return dayjs().locale('fr').format('dddd D MMMM').replace(/\b\w/g, l => l.toUpperCase())
383
- })
495
+ // todayInString est maintenant fourni par le composable useTodayButton
496
+
497
+ // Utilisation du composable pour personnaliser le bouton du mois
498
+ const { customizeMonthButton, setupMonthButtonObserver } = useMonthButtonCustomization(
499
+ () => isDatePickerVisible.value,
500
+ )
384
501
 
385
502
  onMounted(() => {
386
503
  document.addEventListener('click', handleClickOutside)
387
504
 
505
+ // Configurer l'observateur pour le bouton du mois
506
+ setupMonthButtonObserver()
507
+
388
508
  // Initialiser l'affichage formaté
389
509
  if (displayFormattedDateComputed.value) {
390
510
  displayFormattedDate.value = displayFormattedDateComputed.value
391
511
  }
392
512
 
393
- // Valider les dates au montage
513
+ // Valider les dates au montage, mais sans afficher d'erreur pour le required
394
514
  validateDates()
515
+
516
+ // Après la validation initiale, désactiver le flag
517
+ nextTick(() => {
518
+ isInitialValidation.value = false
519
+ })
395
520
  })
396
521
 
397
522
  onBeforeUnmount(() => {
@@ -418,35 +543,11 @@
418
543
  }
419
544
  }
420
545
 
421
- type ViewMode = 'month' | 'year' | 'months' | undefined
422
-
423
- // Variable pour suivre le mode d'affichage actuel du DatePicker
424
- const currentViewMode = ref<ViewMode>(props.isBirthDate ? 'year' : 'month')
425
-
426
- watch(() => props.isBirthDate, (newValue) => {
427
- currentViewMode.value = newValue ? 'year' : 'month'
428
- })
429
-
430
- // Fonction pour gérer le changement de mode d'affichage
431
- const handleViewModeUpdate = (newMode: ViewMode) => {
432
- currentViewMode.value = newMode
433
- }
434
-
435
- // Fonction pour gérer la sélection de l'année quand isBirthDate est true
436
- const handleYearUpdate = () => {
437
- if (props.isBirthDate) {
438
- // Après la sélection de l'année, passer automatiquement à la sélection du mois
439
- currentViewMode.value = 'months'
440
- }
441
- }
442
-
443
- // Fonction pour gérer la sélection du mois quand isBirthDate est true
444
- const handleMonthUpdate = () => {
445
- if (props.isBirthDate) {
446
- // Après la sélection du mois, passer automatiquement à la sélection du jour
447
- currentViewMode.value = undefined
448
- }
449
- }
546
+ // Utilisation du composable pour gérer le mode d'affichage du DatePicker
547
+ const { currentViewMode, handleViewModeUpdate, handleYearUpdate, handleMonthUpdate, resetViewMode } = useDatePickerViewMode(
548
+ // Fonction qui retourne la valeur actuelle de isBirthDate (combinaison de isBirthDate et birthDate)
549
+ () => props.isBirthDate || props.birthDate,
550
+ )
450
551
 
451
552
  const handleInputBlur = () => {
452
553
  emit('blur')
@@ -456,7 +557,7 @@
456
557
  watch(isDatePickerVisible, async (isVisible) => {
457
558
  if (!isVisible && props.isBirthDate) {
458
559
  // Réinitialiser le mode d'affichage au type birthdate
459
- currentViewMode.value = 'year'
560
+ resetViewMode()
460
561
  }
461
562
 
462
563
  if (isVisible) {
@@ -525,25 +626,44 @@
525
626
  if (isUpdatingFromInternal.value) {
526
627
  if (props.displayRange) {
527
628
  if (Array.isArray(newValue) && newValue.length >= 2) {
528
- isDatePickerVisible.value = false
529
- emit('closed')
629
+ // Synchroniser les dates de plage avec le modèle
630
+ syncFromModelValue(newValue)
530
631
  }
531
632
  }
532
- else {
533
- isDatePickerVisible.value = false
534
- emit('closed')
535
- }
536
633
  return
537
634
  }
538
635
 
539
- try {
540
- isUpdatingFromInternal.value = true
541
- syncFromModelValue(newValue)
542
- }
543
- finally {
544
- setTimeout(() => {
545
- isUpdatingFromInternal.value = false
546
- }, 0)
636
+ // Synchroniser les dates sélectionnées avec le modèle
637
+ syncFromModelValue(newValue)
638
+
639
+ // Mettre à jour textInputValue pour le DateTextInput en mode no-calendar
640
+ if (props.noCalendar) {
641
+ try {
642
+ isUpdatingFromInternal.value = true
643
+
644
+ if (!newValue) {
645
+ textInputValue.value = ''
646
+ }
647
+ else if (Array.isArray(newValue) && props.displayRange) {
648
+ // Pour les plages de dates, on ne modifie pas directement textInputValue
649
+ // car le DateTextInput gère son propre formatage
650
+ }
651
+ else if (typeof newValue === 'string') {
652
+ // Pour une date unique
653
+ const date = parseDate(newValue, props.dateFormatReturn || props.format)
654
+ if (date) {
655
+ textInputValue.value = formatDate(date, props.format)
656
+ }
657
+ else {
658
+ textInputValue.value = newValue
659
+ }
660
+ }
661
+ }
662
+ finally {
663
+ setTimeout(() => {
664
+ isUpdatingFromInternal.value = false
665
+ }, 0)
666
+ }
547
667
  }
548
668
  }, { immediate: true })
549
669
 
@@ -553,7 +673,6 @@
553
673
  isDatePickerVisible.value = !isDatePickerVisible.value
554
674
 
555
675
  if (isDatePickerVisible.value) {
556
- // Mettre à jour l'accessibilité après l'ouverture du DatePicker
557
676
  nextTick(() => {
558
677
  updateAccessibility()
559
678
  })
@@ -566,6 +685,7 @@
566
685
 
567
686
  const openDatePickerOnClick = () => {
568
687
  openDatePicker()
688
+ customizeMonthButton()
569
689
  }
570
690
 
571
691
  const openDatePickerOnFocus = () => {
@@ -616,9 +736,46 @@
616
736
  :disable-error-handling="props.disableErrorHandling"
617
737
  :show-success-messages="props.showSuccessMessages"
618
738
  :bg-color="props.bgColor"
739
+ :hide-details="props.hideDetails"
740
+ :display-range="props.displayRange"
619
741
  title="Date text input"
620
742
  @focus="emit('focus')"
621
743
  @blur="emit('blur')"
744
+ @date-selected="handleDateTextInputSelection"
745
+ @update:model-value="handleDateTextInputUpdate"
746
+ />
747
+ </template>
748
+ <template v-else-if="props.useCombinedMode">
749
+ <ComplexDatePicker
750
+ :model-value="props.modelValue"
751
+ :format="props.format"
752
+ :date-format-return="props.dateFormatReturn"
753
+ :required="props.required"
754
+ :custom-rules="props.customRules"
755
+ :custom-warning-rules="props.customWarningRules"
756
+ :disabled="props.disabled"
757
+ :readonly="props.readonly"
758
+ :is-outlined="props.isOutlined"
759
+ :display-icon="props.displayIcon"
760
+ :display-append-icon="props.displayAppendIcon"
761
+ :display-prepend-icon="props.displayPrependIcon"
762
+ :no-icon="props.noIcon"
763
+ :disable-error-handling="props.disableErrorHandling"
764
+ :show-success-messages="props.showSuccessMessages"
765
+ :bg-color="props.bgColor"
766
+ :density="props.density"
767
+ :hide-details="props.hideDetails"
768
+ :display-range="props.displayRange"
769
+ :display-weekend-days="props.displayWeekendDays"
770
+ :display-today-button="props.displayTodayButton"
771
+ :show-week-number="props.showWeekNumber"
772
+ :is-birth-date="props.isBirthDate || props.birthDate"
773
+ :text-field-activator="props.textFieldActivator"
774
+ :title="'Date text input'"
775
+ :period="period"
776
+ @update:model-value="emit('update:modelValue', $event)"
777
+ @focus="emit('focus')"
778
+ @blur="emit('blur')"
622
779
  />
623
780
  </template>
624
781
  <template v-else>
@@ -656,6 +813,8 @@
656
813
  color="primary"
657
814
  :show-success-messages="props.showSuccessMessages"
658
815
  :bg-color="props.bgColor"
816
+ :density="props.density"
817
+ :hide-details="props.hideDetails"
659
818
  is-clearable
660
819
  title="Date Picker"
661
820
  @click="openDatePickerOnClick"
@@ -676,6 +835,9 @@
676
835
  :show-adjacent-months="true"
677
836
  :show-week="props.showWeekNumber"
678
837
  :view-mode="currentViewMode"
838
+ :class="displayWeekendDays ? 'weekend' : ''"
839
+ :max="props.period?.max"
840
+ :min="props.period?.min"
679
841
  @update:view-mode="handleViewModeUpdate"
680
842
  @update:year="handleYearUpdate"
681
843
  @update:month="handleMonthUpdate"
@@ -686,9 +848,32 @@
686
848
  </template>
687
849
  <template #header>
688
850
  <h3 class="mx-auto my-auto ml-5 mb-4">
689
- {{ todayInString }}
851
+ {{ displayedDateString }}
690
852
  </h3>
691
853
  </template>
854
+ <template
855
+ v-if="props.displayTodayButton"
856
+ #actions
857
+ >
858
+ <div class="d-flex justify-center align-center w-100">
859
+ <v-btn
860
+ v-if="props.displayTodayButton"
861
+ size="x-small"
862
+ color="primary"
863
+ :title="DATE_PICKER_MESSAGES.BUTTON_TODAY"
864
+ class="my-2 pa-2 mt-2"
865
+ :ripple="false"
866
+ @click="handleSelectToday"
867
+ >
868
+ <VIcon
869
+ class="mr-1"
870
+ >
871
+ {{ mdiCalendar }}
872
+ </VIcon>
873
+ {{ DATE_PICKER_MESSAGES.BUTTON_TODAY }}
874
+ </v-btn>
875
+ </div>
876
+ </template>
692
877
  </VDatePicker>
693
878
  </VMenu>
694
879
  </template>
@@ -698,6 +883,22 @@
698
883
  <style lang="scss" scoped>
699
884
  @use '@/assets/tokens';
700
885
 
886
+ /* Disable ripple effect on month and year buttons */
887
+ :deep(.v-date-picker-controls__month-btn),
888
+ :deep(.v-date-picker-controls__mode-btn) {
889
+ .v-ripple__container,
890
+ .v-ripple__animation {
891
+ display: none !important;
892
+ opacity: 0 !important;
893
+ background-color: transparent !important;
894
+ pointer-events: none !important;
895
+ }
896
+ }
897
+
898
+ :deep(.v-date-picker-controls .v-btn:last-child) {
899
+ margin-inline-start: 0;
900
+ }
901
+
701
902
  .label-hidden-on-focus:focus + label {
702
903
  display: none;
703
904
  }
@@ -797,4 +998,21 @@
797
998
  .fade-leave-to {
798
999
  opacity: 0;
799
1000
  }
1001
+
1002
+ :deep(.weekend .v-date-picker-month__day--week-end .v-btn) {
1003
+ background-color: #afb1b1;
1004
+ }
1005
+
1006
+ /* div avant la class .v-date-picker-month__day--week-end */
1007
+ :deep(.weekend .v-date-picker-month__day:has(+ .v-date-picker-month__day--week-end) .v-btn) {
1008
+ background-color: #afb1b1;
1009
+ }
1010
+
1011
+ :deep(.v-date-picker-controls__mode-btn) {
1012
+ transform: none !important;
1013
+ }
1014
+
1015
+ :deep(.v-btn--variant-text .v-btn__overlay) {
1016
+ padding: 13px;
1017
+ }
800
1018
  </style>