@cnamts/synapse 1.0.0 → 1.0.2

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 (533) hide show
  1. package/README.md +1 -1
  2. package/dist/DateFilter-YWOTbfeL.js +98 -0
  3. package/dist/NumberFilter-DMmMgALM.js +121 -0
  4. package/dist/PeriodFilter-Bok5BHcn.js +112 -0
  5. package/dist/SelectFilter-BKud2WhN.js +136 -0
  6. package/dist/TextFilter-DvMf2thH.js +114 -0
  7. package/dist/{components/BackBtn → common}/constants/ExpertiseLevelEnum.d.ts +3 -0
  8. package/dist/components/Accordion/Accordion.d.ts +2 -1
  9. package/dist/components/Accordion/composables/useAccordionGroupCommunication.d.ts +5 -0
  10. package/dist/components/Accordion/composables/useAccordionKeyboardNavigation.d.ts +12 -0
  11. package/dist/components/Accordion/composables/useAccordionState.d.ts +13 -0
  12. package/dist/components/BackBtn/AccessibiliteItems.d.ts +1 -1
  13. package/dist/components/BackToTopBtn/AccessibiliteItems.d.ts +1 -1
  14. package/dist/components/ChipList/AccessibiliteItems.d.ts +1 -1
  15. package/dist/components/CollapsibleList/AccessibiliteItems.d.ts +1 -1
  16. package/dist/components/ContextualMenu/AccessibiliteItems.d.ts +1 -1
  17. package/dist/components/CookieBanner/AccessibiliteItems.d.ts +1 -1
  18. package/dist/components/CopyBtn/AccessibiliteItems.d.ts +1 -1
  19. package/dist/components/Customs/SyBtnSelect/AccessibiliteItems.d.ts +1 -1
  20. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +85 -0
  21. package/dist/components/Customs/SyInputSelect/AccessibiliteItems.d.ts +1 -1
  22. package/dist/components/Customs/SyInputSelect/SyInputSelect.d.ts +2 -0
  23. package/dist/components/Customs/SySelect/AccessibiliteItems.d.ts +1 -1
  24. package/dist/components/Customs/SySelect/SySelect.d.ts +33 -13
  25. package/dist/components/Customs/SyTextField/AccessibiliteItems.d.ts +1 -1
  26. package/dist/components/Customs/SyTextField/SyTextField.d.ts +2 -2
  27. package/dist/components/DataList/AccessibiliteItems.d.ts +1 -1
  28. package/dist/components/DataListGroup/AccessibiliteItems.d.ts +1 -1
  29. package/dist/components/DatePicker/AccessibiliteItems.d.ts +1 -1
  30. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +4295 -0
  31. package/dist/components/DatePicker/{DatePicker.d.ts → DatePicker/DatePicker.d.ts} +158 -104
  32. package/dist/components/DatePicker/{DateTextInput.d.ts → DateTextInput/DateTextInput.d.ts} +35 -27
  33. package/dist/components/DatePicker/composables/index.d.ts +17 -0
  34. package/dist/components/DatePicker/composables/useAsteriskDisplay.d.ts +14 -0
  35. package/dist/components/DatePicker/composables/useDateAutoClamp.d.ts +16 -0
  36. package/dist/components/DatePicker/composables/useDateFormatValidation.d.ts +25 -0
  37. package/dist/components/DatePicker/composables/useDateInputEditing.d.ts +33 -0
  38. package/dist/components/DatePicker/composables/useDatePickerViewMode.d.ts +16 -0
  39. package/dist/components/DatePicker/composables/useDatePickerVisibility.d.ts +27 -0
  40. package/dist/components/DatePicker/composables/useDateRangeInput.d.ts +29 -0
  41. package/dist/components/DatePicker/composables/useDateRangeValidation.d.ts +11 -0
  42. package/dist/components/DatePicker/composables/useDateSelection.d.ts +10 -0
  43. package/dist/components/DatePicker/composables/useDateValidation.d.ts +35 -0
  44. package/dist/components/DatePicker/composables/useDisplayedDateString.d.ts +19 -0
  45. package/dist/components/DatePicker/composables/useIconState.d.ts +17 -0
  46. package/dist/components/DatePicker/composables/useInputBlurHandler.d.ts +31 -0
  47. package/dist/components/DatePicker/composables/useInputHandler.d.ts +32 -0
  48. package/dist/components/DatePicker/composables/useManualDateValidation.d.ts +33 -0
  49. package/dist/components/DatePicker/composables/useMonthButtonCustomization.d.ts +12 -0
  50. package/dist/components/DatePicker/composables/useTodayButton.d.ts +16 -0
  51. package/dist/components/DatePicker/composables/useWeekendDays.d.ts +11 -0
  52. package/dist/components/DatePicker/constants/messages.d.ts +29 -0
  53. package/dist/components/DatePicker/types.d.ts +13 -0
  54. package/dist/components/DialogBox/AccessibiliteItems.d.ts +1 -1
  55. package/dist/components/DownloadBtn/AccessibiliteItems.d.ts +1 -1
  56. package/dist/components/ErrorPage/AccessibiliteItems.d.ts +1 -1
  57. package/dist/components/ExternalLinks/AccessibiliteItems.d.ts +1 -1
  58. package/dist/components/FileList/AccessibiliteItems.d.ts +1 -1
  59. package/dist/components/FilePreview/AccessibiliteItems.d.ts +1 -1
  60. package/dist/components/FileUpload/AccessibiliteItems.d.ts +1 -1
  61. package/dist/components/FilterInline/AccessibiliteItems.d.ts +1 -1
  62. package/dist/components/FilterSideBar/AccessibiliteItems.d.ts +1 -1
  63. package/dist/components/FilterSideBar/FilterSideBar.d.ts +395 -1
  64. package/dist/components/FooterBar/AccessibiliteItems.d.ts +1 -1
  65. package/dist/components/FranceConnectBtn/AccessibiliteItems.d.ts +1 -1
  66. package/dist/components/HeaderBar/AccessibiliteItems.d.ts +1 -1
  67. package/dist/components/HeaderBar/HeaderBurgerMenu/AccessibiliteItems.d.ts +1 -1
  68. package/dist/components/HeaderLoading/AccessibiliteItems.d.ts +1 -1
  69. package/dist/components/HeaderToolbar/AccessibiliteItems.d.ts +1 -1
  70. package/dist/components/LangBtn/AccessibiliteItems.d.ts +1 -1
  71. package/dist/components/Logo/AccessibiliteItems.d.ts +1 -1
  72. package/dist/components/LogoBrandSection/AccessibiliteItems.d.ts +1 -1
  73. package/dist/components/MaintenancePage/AccessibiliteItems.d.ts +1 -1
  74. package/dist/components/NirField/AccessibiliteItems.d.ts +1 -1
  75. package/dist/components/NirField/NirField.d.ts +7 -3
  76. package/dist/components/NirField/nirValidation.d.ts +1 -1
  77. package/dist/components/NotFoundPage/AccessibiliteItems.d.ts +1 -1
  78. package/dist/components/NotificationBar/AccessibiliteItems.d.ts +1 -1
  79. package/dist/components/PageContainer/AccessibiliteItems.d.ts +1 -1
  80. package/dist/components/PaginatedTable/AccessibiliteItems.d.ts +1 -1
  81. package/dist/components/PasswordField/AccessibiliteItems.d.ts +1 -1
  82. package/dist/components/PasswordField/PasswordField.d.ts +2 -0
  83. package/dist/components/PeriodField/AccessibiliteItems.d.ts +1 -1
  84. package/dist/components/PeriodField/PeriodField.d.ts +219 -41
  85. package/dist/components/PhoneField/AccessibiliteItems.d.ts +1 -1
  86. package/dist/components/PhoneField/PhoneField.d.ts +2 -2
  87. package/dist/components/RangeField/AccessibiliteItems.d.ts +1 -1
  88. package/dist/components/RangeField/RangeField.d.ts +2 -0
  89. package/dist/components/RatingPicker/AccessibiliteItems.d.ts +1 -1
  90. package/dist/components/SearchListField/AccessibiliteItems.d.ts +1 -1
  91. package/dist/components/SearchListField/SearchListField.d.ts +9 -0
  92. package/dist/components/SelectBtnField/AccessibiliteItems.d.ts +1 -1
  93. package/dist/components/SkipLink/AccessibiliteItems.d.ts +1 -1
  94. package/dist/components/SocialMediaLinks/AccessibiliteItems.d.ts +1 -1
  95. package/dist/components/SubHeader/AccessibiliteItems.d.ts +1 -1
  96. package/dist/components/SyAlert/AccessibiliteItems.d.ts +1 -1
  97. package/dist/components/SyTextArea/SyTextArea.d.ts +2 -0
  98. package/dist/components/TableToolbar/AccessibiliteItems.d.ts +1 -1
  99. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +652 -0
  100. package/dist/components/Tables/SyTable/SyTable.d.ts +671 -0
  101. package/dist/components/Tables/common/SyTableFilter.d.ts +126 -0
  102. package/dist/components/Tables/common/SyTablePagination.d.ts +1636 -0
  103. package/dist/components/Tables/common/TableHeader.d.ts +15 -0
  104. package/dist/components/Tables/common/constants/StateEnum.d.ts +6 -0
  105. package/dist/components/Tables/common/filters/DateFilter.d.ts +121 -0
  106. package/dist/components/Tables/common/filters/NumberFilter.d.ts +132 -0
  107. package/dist/components/Tables/common/filters/PeriodFilter.d.ts +135 -0
  108. package/dist/components/Tables/common/filters/SelectFilter.d.ts +120 -0
  109. package/dist/components/Tables/common/filters/TextFilter.d.ts +132 -0
  110. package/dist/components/Tables/common/filters/getFilterComponent.d.ts +1 -0
  111. package/dist/components/Tables/common/filters/locales.d.ts +4 -0
  112. package/dist/components/Tables/common/filters/logics/date.d.ts +1 -0
  113. package/dist/components/Tables/common/filters/logics/number.d.ts +1 -0
  114. package/dist/components/Tables/common/filters/logics/period.d.ts +1 -0
  115. package/dist/components/Tables/common/filters/logics/select.d.ts +1 -0
  116. package/dist/components/Tables/common/filters/logics/text.d.ts +1 -0
  117. package/dist/components/Tables/common/formatters.d.ts +17 -0
  118. package/dist/components/Tables/common/locales.d.ts +28 -0
  119. package/dist/components/Tables/common/organizeColumns/OrganizeColumns.d.ts +267 -0
  120. package/dist/components/Tables/common/organizeColumns/sortHeaders.d.ts +2 -0
  121. package/dist/components/Tables/common/tableAccessibilityUtils.d.ts +8 -0
  122. package/dist/components/Tables/common/tableFilterUtils.d.ts +3 -0
  123. package/dist/components/Tables/common/tableStorageUtils.d.ts +69 -0
  124. package/dist/components/Tables/common/tableUtils.d.ts +79 -0
  125. package/dist/components/Tables/common/types.d.ts +91 -0
  126. package/dist/components/Tables/common/usePagination.d.ts +22 -0
  127. package/dist/components/Tables/common/useTableCheckbox.d.ts +20 -0
  128. package/dist/components/Tables/common/useTableFilter.d.ts +9 -0
  129. package/dist/components/Tables/common/useTableHeaders.d.ts +76 -0
  130. package/dist/components/Tables/common/useTableItems.d.ts +24 -0
  131. package/dist/components/Tables/common/useTableOptions.d.ts +18 -0
  132. package/dist/components/Tables/index.d.ts +2 -0
  133. package/dist/components/ToolbarContainer/ToolbarContainer.d.ts +11 -0
  134. package/dist/components/UploadWorkflow/AccessibiliteItems.d.ts +1 -1
  135. package/dist/components/UserMenuBtn/AccessibiliteItems.d.ts +1 -1
  136. package/dist/components/UserMenuBtn/UserMenuBtn.d.ts +9 -2
  137. package/dist/components/index.d.ts +9 -5
  138. package/dist/design-system-v3.js +102 -11944
  139. package/dist/design-system-v3.umd.cjs +22 -4
  140. package/dist/designTokens/index.d.ts +3 -1
  141. package/dist/designTokens/tokens/cnam/cnamFonts.d.ts +140 -0
  142. package/dist/designTokens/tokens/pa/paFonts.d.ts +140 -0
  143. package/dist/designTokens/utils/createFontVariables.d.ts +39 -0
  144. package/dist/designTokens/utils/index.d.ts +2 -1
  145. package/dist/main-Cx8qG7YR.js +16344 -0
  146. package/dist/stories/Accessibilite/Vuetify/VuetifyItems.d.ts +14 -2
  147. package/dist/stories/DesignTokens/StylesTypographiques.stories.new.d.ts +8 -0
  148. package/dist/stories/DesignTokens/TypographyDisplay.d.ts +28 -0
  149. package/dist/stories/DesignTokens/vue-shims.d.ts +6 -0
  150. package/dist/style.css +1 -1
  151. package/dist/utils/rules/isRequired/index.d.ts +1 -1
  152. package/dist/vite-env.d.ts +12 -0
  153. package/package.json +3 -3
  154. package/src/assets/_spacers.scss +37 -1
  155. package/src/assets/_typography.scss +158 -0
  156. package/src/assets/settings.scss +7 -0
  157. package/src/common/constants/ExpertiseLevelEnum.ts +7 -0
  158. package/src/common/imgs/accessibility-svgrepo-com.svg +4 -0
  159. package/src/components/Accordion/Accessibilite/AccessibilityGuide.mdx +249 -0
  160. package/src/components/Accordion/Accordion.vue +48 -76
  161. package/src/components/Accordion/composables/__tests__/useAccordionGroupCommunication.spec.ts +146 -0
  162. package/src/components/Accordion/composables/__tests__/useAccordionKeyboardNavigation.spec.ts +209 -0
  163. package/src/components/Accordion/composables/__tests__/useAccordionState.spec.ts +144 -0
  164. package/src/components/Accordion/composables/useAccordionGroupCommunication.ts +52 -0
  165. package/src/components/Accordion/composables/useAccordionKeyboardNavigation.ts +111 -0
  166. package/src/components/Accordion/composables/useAccordionState.ts +59 -0
  167. package/src/components/Accordion/tests/__snapshots__/accordion.spec.ts.snap +3 -0
  168. package/src/components/BackBtn/AccessibiliteItems.ts +1 -1
  169. package/src/components/BackToTopBtn/AccessibiliteItems.ts +1 -1
  170. package/src/components/ChipList/AccessibiliteItems.ts +1 -1
  171. package/src/components/CollapsibleList/AccessibiliteItems.ts +1 -1
  172. package/src/components/ContextualMenu/AccessibiliteItems.ts +1 -1
  173. package/src/components/CookieBanner/AccessibiliteItems.ts +1 -1
  174. package/src/components/CopyBtn/AccessibiliteItems.ts +1 -1
  175. package/src/components/Customs/SyBtnSelect/AccessibiliteItems.ts +1 -1
  176. package/src/components/Customs/SyCheckbox/Accessibilite.mdx +303 -0
  177. package/src/components/Customs/SyCheckbox/SyCheckbox.mdx +50 -0
  178. package/src/components/Customs/SyCheckbox/SyCheckbox.stories.ts +630 -0
  179. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +326 -0
  180. package/src/components/Customs/SyCheckbox/tests/SyCheckbox.spec.ts +201 -0
  181. package/src/components/Customs/SyInputSelect/AccessibiliteItems.ts +1 -1
  182. package/src/components/Customs/SyInputSelect/SyInputSelect.stories.ts +1 -0
  183. package/src/components/Customs/SyInputSelect/SyInputSelect.vue +8 -1
  184. package/src/components/Customs/SySelect/AccessibiliteItems.ts +1 -1
  185. package/src/components/Customs/SySelect/SySelect.stories.ts +160 -0
  186. package/src/components/Customs/SySelect/SySelect.vue +292 -39
  187. package/src/components/Customs/SySelect/tests/SySelect.spec.ts +234 -2
  188. package/src/components/Customs/SyTextField/AccessibiliteItems.ts +1 -1
  189. package/src/components/Customs/SyTextField/SyTextField.stories.ts +3 -2
  190. package/src/components/Customs/SyTextField/SyTextField.vue +19 -8
  191. package/src/components/DataList/AccessibiliteItems.ts +1 -1
  192. package/src/components/DataListGroup/AccessibiliteItems.ts +1 -1
  193. package/src/components/DatePicker/AccessibiliteItems.ts +1 -1
  194. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.mdx +212 -0
  195. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +1307 -0
  196. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +769 -204
  197. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.events.spec.ts +161 -0
  198. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +943 -0
  199. package/src/components/DatePicker/DatePicker/DatePicker.mdx +176 -0
  200. package/src/components/DatePicker/{DatePicker.stories.ts → DatePicker/DatePicker.stories.ts} +356 -519
  201. package/src/components/DatePicker/{DatePicker.vue → DatePicker/DatePicker.vue} +435 -89
  202. package/src/components/DatePicker/DatePicker/tests/DatePicker.events.spec.ts +189 -0
  203. package/src/components/DatePicker/{tests → DatePicker/tests}/DatePicker.spec.ts +0 -14
  204. package/src/components/DatePicker/DatePickerOverview.mdx +227 -0
  205. package/src/components/DatePicker/{DatePickerValidation.mdx → DatePickerValidationExample/DatePickerValidation.mdx} +3 -3
  206. package/src/components/DatePicker/{DatePickerValidation.stories.ts → DatePickerValidationExample/DatePickerValidation.stories.ts} +2 -2
  207. package/src/components/DatePicker/DateTextInput/DateRange.stories.ts +320 -0
  208. package/src/components/DatePicker/DateTextInput/DateTextInput.events.spec.ts +148 -0
  209. package/src/components/DatePicker/DateTextInput/DateTextInput.range.spec.ts +278 -0
  210. package/src/components/DatePicker/{tests → DateTextInput}/DateTextInput.spec.ts +10 -7
  211. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +1111 -0
  212. package/src/components/DatePicker/DateTextInput/NoCalendar.mdx +64 -0
  213. package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +782 -0
  214. package/src/components/DatePicker/composables/index.ts +24 -0
  215. package/src/components/DatePicker/composables/tests/useDateAutoClamp.spec.ts +190 -0
  216. package/src/components/DatePicker/composables/tests/useDateFormatValidation.spec.ts +165 -0
  217. package/src/components/DatePicker/composables/tests/useDateInputEditing.spec.ts +359 -0
  218. package/src/components/DatePicker/composables/tests/useDatePickerViewMode.spec.ts +160 -0
  219. package/src/components/DatePicker/composables/tests/useDatePickerVisibility.spec.ts +339 -0
  220. package/src/components/DatePicker/composables/tests/useDateRangeInput.spec.ts +277 -0
  221. package/src/components/DatePicker/composables/tests/useDateRangeValidation.spec.ts +107 -0
  222. package/src/components/DatePicker/composables/tests/useDateSelection.spec.ts +171 -0
  223. package/src/components/DatePicker/composables/tests/useDateValidation.spec.ts +245 -0
  224. package/src/components/DatePicker/composables/tests/useDisplayedDateString.spec.ts +98 -0
  225. package/src/components/DatePicker/composables/tests/useIconState.spec.ts +130 -0
  226. package/src/components/DatePicker/composables/tests/useInputBlurHandler.spec.ts +456 -0
  227. package/src/components/DatePicker/composables/tests/useManualDateValidation.spec.ts +233 -0
  228. package/src/components/DatePicker/composables/tests/useMonthButtonCustomization.spec.ts +125 -0
  229. package/src/components/DatePicker/composables/tests/useTodayButton.spec.ts +97 -0
  230. package/src/components/DatePicker/composables/tests/useWeekendDays.spec.ts +28 -0
  231. package/src/components/DatePicker/composables/useAsteriskDisplay.ts +31 -0
  232. package/src/components/DatePicker/composables/useDateAutoClamp.ts +136 -0
  233. package/src/components/DatePicker/composables/useDateFormatValidation.ts +95 -0
  234. package/src/components/DatePicker/composables/useDateInputEditing.ts +326 -0
  235. package/src/components/DatePicker/composables/useDatePickerViewMode.ts +61 -0
  236. package/src/components/DatePicker/composables/useDatePickerVisibility.ts +146 -0
  237. package/src/components/DatePicker/composables/useDateRangeInput.ts +378 -0
  238. package/src/components/DatePicker/composables/useDateRangeValidation.ts +48 -0
  239. package/src/components/DatePicker/composables/useDateSelection.ts +121 -0
  240. package/src/components/DatePicker/composables/useDateValidation.ts +225 -0
  241. package/src/components/DatePicker/composables/useDisplayedDateString.ts +70 -0
  242. package/src/components/DatePicker/composables/useIconState.ts +53 -0
  243. package/src/components/DatePicker/composables/useInputBlurHandler.ts +165 -0
  244. package/src/components/DatePicker/composables/useInputHandler.ts +436 -0
  245. package/src/components/DatePicker/composables/useManualDateValidation.ts +161 -0
  246. package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +187 -0
  247. package/src/components/DatePicker/composables/useTodayButton.ts +43 -0
  248. package/src/components/DatePicker/composables/useWeekendDays.ts +21 -0
  249. package/src/components/DatePicker/constants/messages.ts +50 -0
  250. package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +4 -4
  251. package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +1 -1
  252. package/src/components/DatePicker/playground/ComplexDatePickerPlayground.vue +172 -0
  253. package/src/components/DatePicker/types.ts +15 -0
  254. package/src/components/DiacriticPicker/DiacriticPicker.stories.ts +10 -0
  255. package/src/components/DialogBox/AccessibiliteItems.ts +1 -1
  256. package/src/components/DownloadBtn/AccessibiliteItems.ts +1 -1
  257. package/src/components/ErrorPage/Accessibilite.stories.ts +8 -0
  258. package/src/components/ErrorPage/AccessibiliteItems.ts +1 -1
  259. package/src/components/ErrorPage/ErrorPage.vue +12 -6
  260. package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +4 -4
  261. package/src/components/ExternalLinks/AccessibiliteItems.ts +1 -1
  262. package/src/components/FileList/AccessibiliteItems.ts +1 -1
  263. package/src/components/FilePreview/AccessibiliteItems.ts +1 -1
  264. package/src/components/FileUpload/AccessibiliteItems.ts +1 -1
  265. package/src/components/FilterInline/AccessibiliteItems.ts +1 -1
  266. package/src/components/FilterSideBar/AccessibiliteItems.ts +1 -1
  267. package/src/components/FilterSideBar/FilterSideBar.vue +108 -90
  268. package/src/components/FilterSideBar/tests/FilterSideBar.spec.ts +27 -0
  269. package/src/components/FilterSideBar/tests/__snapshots__/FilterSideBar.spec.ts.snap +114 -109
  270. package/src/components/FooterBar/AccessibiliteItems.ts +1 -1
  271. package/src/components/FooterBar/FooterBar.vue +2 -1
  272. package/src/components/FranceConnectBtn/AccessibiliteItems.ts +1 -1
  273. package/src/components/HeaderBar/AccessibiliteItems.ts +1 -1
  274. package/src/components/HeaderBar/HeaderBurgerMenu/AccessibiliteItems.ts +1 -1
  275. package/src/components/HeaderLoading/AccessibiliteItems.ts +1 -1
  276. package/src/components/HeaderToolbar/AccessibiliteItems.ts +1 -1
  277. package/src/components/LangBtn/AccessibiliteItems.ts +1 -1
  278. package/src/components/Logo/Accessibilite.stories.ts +4 -0
  279. package/src/components/Logo/AccessibiliteItems.ts +1 -1
  280. package/src/components/LogoBrandSection/AccessibiliteItems.ts +1 -1
  281. package/src/components/MaintenancePage/AccessibiliteItems.ts +1 -1
  282. package/src/components/NirField/AccessibiliteItems.ts +1 -1
  283. package/src/components/NirField/NirField.mdx +22 -9
  284. package/src/components/NirField/NirField.stories.ts +26 -2
  285. package/src/components/NirField/NirField.vue +209 -22
  286. package/src/components/NirField/nirValidation.ts +17 -3
  287. package/src/components/NirField/tests/NirField.spec.ts +2 -2
  288. package/src/components/NotFoundPage/Accessibilite.stories.ts +8 -0
  289. package/src/components/NotFoundPage/AccessibiliteItems.ts +1 -1
  290. package/src/components/NotFoundPage/NotFoundPage.vue +2 -1
  291. package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +8 -6
  292. package/src/components/NotificationBar/AccessibiliteItems.ts +1 -1
  293. package/src/components/PageContainer/AccessibiliteItems.ts +1 -1
  294. package/src/components/PaginatedTable/AccessibiliteItems.ts +1 -1
  295. package/src/components/PaginatedTable/PaginatedTable.mdx +2 -0
  296. package/src/components/PaginatedTable/PaginatedTable.stories.ts +19 -0
  297. package/src/components/PaginatedTable/PaginatedTable.vue +51 -13
  298. package/src/components/PaginatedTable/tests/PaginatedTable.spec.ts +0 -2
  299. package/src/components/PasswordField/AccessibiliteItems.ts +1 -1
  300. package/src/components/PasswordField/PasswordField.stories.ts +4 -0
  301. package/src/components/PasswordField/PasswordField.vue +3 -0
  302. package/src/components/PeriodField/AccessibiliteItems.ts +1 -1
  303. package/src/components/PeriodField/PeriodField.vue +15 -1
  304. package/src/components/PhoneField/AccessibiliteItems.ts +1 -1
  305. package/src/components/PhoneField/PhoneField.stories.ts +15 -15
  306. package/src/components/PhoneField/PhoneField.vue +1 -1
  307. package/src/components/RangeField/AccessibiliteItems.ts +1 -1
  308. package/src/components/RangeField/RangeField.stories.ts +9 -0
  309. package/src/components/RangeField/RangeField.vue +4 -0
  310. package/src/components/RangeField/tests/__snapshots__/RangeField.spec.ts.snap +12 -0
  311. package/src/components/RatingPicker/AccessibiliteItems.ts +1 -1
  312. package/src/components/SearchListField/AccessibiliteItems.ts +1 -1
  313. package/src/components/SearchListField/SearchListField.vue +5 -0
  314. package/src/components/SelectBtnField/AccessibiliteItems.ts +1 -1
  315. package/src/components/SkipLink/AccessibiliteItems.ts +1 -1
  316. package/src/components/SocialMediaLinks/AccessibiliteItems.ts +1 -1
  317. package/src/components/SubHeader/AccessibiliteItems.ts +1 -1
  318. package/src/components/SyAlert/AccessibiliteItems.ts +1 -1
  319. package/src/components/SyTextArea/SyTextArea.vue +3 -0
  320. package/src/components/SyTextArea/tests/SyTextArea.spec.ts +0 -1
  321. package/src/components/TableToolbar/AccessibiliteItems.ts +1 -1
  322. package/src/components/TableToolbar/TableToolbar.stories.ts +110 -56
  323. package/src/components/Tables/SyServerTable/FilterRules.stories.ts +700 -0
  324. package/src/components/Tables/SyServerTable/SyServerTable.mdx +170 -0
  325. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +4354 -0
  326. package/src/components/Tables/SyServerTable/SyServerTable.vue +391 -0
  327. package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +702 -0
  328. package/src/components/Tables/SyTable/FilterRules.stories.ts +418 -0
  329. package/src/components/Tables/SyTable/SyTable.mdx +139 -0
  330. package/src/components/Tables/SyTable/SyTable.stories.ts +2754 -0
  331. package/src/components/Tables/SyTable/SyTable.vue +397 -0
  332. package/src/components/Tables/SyTable/tests/SyTable.spec.ts +707 -0
  333. package/src/components/Tables/common/SyTableFilter.vue +289 -0
  334. package/src/components/Tables/common/SyTablePagination.vue +375 -0
  335. package/src/components/Tables/common/TableHeader.vue +205 -0
  336. package/src/components/Tables/common/constants/StateEnum.ts +6 -0
  337. package/src/components/Tables/common/filters/DateFilter.vue +140 -0
  338. package/src/components/Tables/common/filters/NumberFilter.vue +234 -0
  339. package/src/components/Tables/common/filters/PeriodFilter.vue +147 -0
  340. package/src/components/Tables/common/filters/SelectFilter.vue +235 -0
  341. package/src/components/Tables/common/filters/TextFilter.vue +191 -0
  342. package/src/components/Tables/common/filters/getFilterComponent.ts +54 -0
  343. package/src/components/Tables/common/filters/locales.ts +4 -0
  344. package/src/components/Tables/common/filters/logics/date.ts +12 -0
  345. package/src/components/Tables/common/filters/logics/number.ts +48 -0
  346. package/src/components/Tables/common/filters/logics/period.ts +25 -0
  347. package/src/components/Tables/common/filters/logics/select.ts +27 -0
  348. package/src/components/Tables/common/filters/logics/tests/TextFilterLogic.spec.ts +177 -0
  349. package/src/components/Tables/common/filters/logics/text.ts +62 -0
  350. package/src/components/Tables/common/filters/tests/DateFilter.spec.ts +187 -0
  351. package/src/components/Tables/common/filters/tests/NumberFilter.spec.ts +280 -0
  352. package/src/components/Tables/common/filters/tests/PeriodFilter.spec.ts +192 -0
  353. package/src/components/Tables/common/filters/tests/SelectFilter.spec.ts +219 -0
  354. package/src/components/Tables/common/filters/tests/TextFilter.spec.ts +260 -0
  355. package/src/components/Tables/common/formatters.ts +72 -0
  356. package/src/components/Tables/common/locales.ts +31 -0
  357. package/src/components/Tables/common/organizeColumns/OrganizeColumns.vue +269 -0
  358. package/src/components/Tables/common/organizeColumns/sortHeaders.ts +9 -0
  359. package/src/components/Tables/common/tableAccessibilityUtils.ts +61 -0
  360. package/src/components/Tables/common/tableFilterUtils.ts +75 -0
  361. package/src/components/Tables/common/tableStorageUtils.ts +127 -0
  362. package/src/components/Tables/common/tableStyles.scss +80 -0
  363. package/src/components/Tables/common/tableUtils.ts +102 -0
  364. package/src/components/Tables/common/tests/SyTableFilter.spec.ts +312 -0
  365. package/src/components/Tables/common/tests/SyTablePagination.spec.ts +170 -0
  366. package/src/components/Tables/common/tests/filterByRange.spec.ts +215 -0
  367. package/src/components/Tables/common/tests/resize.spec.ts +161 -0
  368. package/src/components/Tables/common/tests/tableFilterUtils.spec.ts +92 -0
  369. package/src/components/Tables/common/tests/tableUtils.spec.ts +228 -0
  370. package/src/components/Tables/common/types.ts +92 -0
  371. package/src/components/Tables/common/usePagination.ts +83 -0
  372. package/src/components/Tables/common/useTableCheckbox.ts +58 -0
  373. package/src/components/Tables/common/useTableFilter.ts +19 -0
  374. package/src/components/Tables/common/useTableHeaders.ts +88 -0
  375. package/src/components/Tables/common/useTableItems.ts +87 -0
  376. package/src/components/Tables/common/useTableOptions.ts +93 -0
  377. package/src/components/Tables/index.ts +3 -0
  378. package/src/components/ToolbarContainer/ToolbarContainer.mdx +16 -0
  379. package/src/components/ToolbarContainer/ToolbarContainer.stories.ts +675 -0
  380. package/src/components/ToolbarContainer/ToolbarContainer.vue +128 -0
  381. package/src/components/ToolbarContainer/tests/ToolbarContainer.spec.ts +156 -0
  382. package/src/components/UploadWorkflow/AccessibiliteItems.ts +1 -1
  383. package/src/components/UserMenuBtn/AccessibiliteItems.ts +1 -1
  384. package/src/components/UserMenuBtn/UserMenuBtn.stories.ts +74 -0
  385. package/src/components/UserMenuBtn/UserMenuBtn.vue +19 -17
  386. package/src/components/index.ts +9 -5
  387. package/src/composables/date/useDateFormatDayjs.ts +8 -3
  388. package/src/composables/date/useDateInitializationDayjs.ts +28 -36
  389. package/src/composables/rules/useFieldValidation.ts +1 -2
  390. package/src/designTokens/index.ts +4 -0
  391. package/src/designTokens/tokens/cnam/cnamFonts.ts +140 -0
  392. package/src/designTokens/tokens/pa/paFonts.ts +140 -0
  393. package/src/designTokens/utils/createFontVariables.ts +143 -0
  394. package/src/designTokens/utils/index.ts +2 -1
  395. package/src/stories/Accessibilite/Aculturation/AuditDesignSystem.mdx +293 -20
  396. package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +448 -54
  397. package/src/stories/Accessibilite/Audit/RGAA.mdx +231 -23
  398. package/src/stories/Accessibilite/Avancement/Avancement.mdx +591 -7
  399. package/src/stories/Accessibilite/Avancement/Avancement.stories.ts +139 -38
  400. package/src/stories/Accessibilite/Introduction.mdx +258 -18
  401. package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +221 -31
  402. package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +204 -22
  403. package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +537 -24
  404. package/src/stories/Accessibilite/KitDePreAudit/Outils/LecteursDEcran.mdx +577 -70
  405. package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru.mdx +382 -31
  406. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +419 -81
  407. package/src/stories/Accessibilite/Vuetify/Vuetify.mdx +132 -6
  408. package/src/stories/Accessibilite/Vuetify/Vuetify.stories.ts +370 -146
  409. package/src/stories/Accessibilite/Vuetify/VuetifyItems.ts +35 -57
  410. package/src/stories/Demarrer/Accueil.stories.ts +32 -8
  411. package/src/stories/DesignTokens/StylesTypographiques.mdx +10 -9
  412. package/src/stories/DesignTokens/StylesTypographiques.stories.new.ts +397 -0
  413. package/src/stories/DesignTokens/StylesTypographiques.stories.ts +397 -0
  414. package/src/stories/DesignTokens/TypographyDisplay.vue +155 -0
  415. package/src/stories/DesignTokens/vue-shims.d.ts +6 -0
  416. package/src/stories/GuideDuDev/LesBreackingChanges.mdx +0 -2
  417. package/src/stories/GuideDuDev/MigrationDepuisBridge.mdx +1 -1
  418. package/src/stories/GuideDuDev/MigrationDepuisVue2.mdx +1 -1
  419. package/src/stories/GuideDuDev/PortailAgent.mdx +10 -0
  420. package/src/stories/GuideDuDev/PortailAgent.stories.ts +506 -0
  421. package/src/stories/GuideDuDev/Theme.mdx +41 -0
  422. package/src/utils/rules/isHolidayDay/IsHolidayDay.stories.ts +1 -1
  423. package/src/utils/rules/isRequired/index.ts +2 -1
  424. package/src/vite-env.d.ts +12 -0
  425. package/src/vuetifyConfig.ts +10 -3
  426. package/dist/components/BackToTopBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  427. package/dist/components/ChipList/constants/ExpertiseLevelEnum.d.ts +0 -4
  428. package/dist/components/CollapsibleList/constants/ExpertiseLevelEnum.d.ts +0 -4
  429. package/dist/components/ContextualMenu/constants/ExpertiseLevelEnum.d.ts +0 -4
  430. package/dist/components/CookieBanner/constants/ExpertiseLevelEnum.d.ts +0 -4
  431. package/dist/components/CopyBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  432. package/dist/components/Customs/SyBtnSelect/constants/ExpertiseLevelEnum.d.ts +0 -4
  433. package/dist/components/Customs/SyInputSelect/constants/ExpertiseLevelEnum.d.ts +0 -4
  434. package/dist/components/Customs/SySelect/constants/ExpertiseLevelEnum.d.ts +0 -4
  435. package/dist/components/Customs/SyTextField/constants/ExpertiseLevelEnum.d.ts +0 -4
  436. package/dist/components/DataList/constants/ExpertiseLevelEnum.d.ts +0 -4
  437. package/dist/components/DataListGroup/constants/ExpertiseLevelEnum.d.ts +0 -4
  438. package/dist/components/DatePicker/constants/ExpertiseLevelEnum.d.ts +0 -4
  439. package/dist/components/DialogBox/constants/ExpertiseLevelEnum.d.ts +0 -4
  440. package/dist/components/DownloadBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  441. package/dist/components/ErrorPage/constants/ExpertiseLevelEnum.d.ts +0 -4
  442. package/dist/components/ExternalLinks/constants/ExpertiseLevelEnum.d.ts +0 -4
  443. package/dist/components/FileList/constants/ExpertiseLevelEnum.d.ts +0 -4
  444. package/dist/components/FilePreview/constants/ExpertiseLevelEnum.d.ts +0 -4
  445. package/dist/components/FileUpload/constants/ExpertiseLevelEnum.d.ts +0 -4
  446. package/dist/components/FilterInline/constants/ExpertiseLevelEnum.d.ts +0 -4
  447. package/dist/components/FilterSideBar/constants/ExpertiseLevelEnum.d.ts +0 -4
  448. package/dist/components/FooterBar/constants/ExpertiseLevelEnum.d.ts +0 -4
  449. package/dist/components/FranceConnectBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  450. package/dist/components/HeaderBar/HeaderBurgerMenu/constants/ExpertiseLevelEnum.d.ts +0 -4
  451. package/dist/components/HeaderBar/constants/ExpertiseLevelEnum.d.ts +0 -4
  452. package/dist/components/HeaderLoading/constants/ExpertiseLevelEnum.d.ts +0 -4
  453. package/dist/components/HeaderToolbar/constants/ExpertiseLevelEnum.d.ts +0 -4
  454. package/dist/components/LangBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  455. package/dist/components/Logo/constants/ExpertiseLevelEnum.d.ts +0 -4
  456. package/dist/components/LogoBrandSection/constants/ExpertiseLevelEnum.d.ts +0 -4
  457. package/dist/components/MaintenancePage/constants/ExpertiseLevelEnum.d.ts +0 -4
  458. package/dist/components/NirField/constants/ExpertiseLevelEnum.d.ts +0 -4
  459. package/dist/components/NotFoundPage/constants/ExpertiseLevelEnum.d.ts +0 -4
  460. package/dist/components/NotificationBar/constants/ExpertiseLevelEnum.d.ts +0 -4
  461. package/dist/components/PageContainer/constants/ExpertiseLevelEnum.d.ts +0 -4
  462. package/dist/components/PaginatedTable/constants/ExpertiseLevelEnum.d.ts +0 -4
  463. package/dist/components/PasswordField/constants/ExpertiseLevelEnum.d.ts +0 -4
  464. package/dist/components/PeriodField/constants/ExpertiseLevelEnum.d.ts +0 -4
  465. package/dist/components/PhoneField/constants/ExpertiseLevelEnum.d.ts +0 -4
  466. package/dist/components/RangeField/constants/ExpertiseLevelEnum.d.ts +0 -4
  467. package/dist/components/RatingPicker/constants/ExpertiseLevelEnum.d.ts +0 -4
  468. package/dist/components/SearchListField/constants/ExpertiseLevelEnum.d.ts +0 -4
  469. package/dist/components/SelectBtnField/constants/ExpertiseLevelEnum.d.ts +0 -4
  470. package/dist/components/SkipLink/constants/ExpertiseLevelEnum.d.ts +0 -4
  471. package/dist/components/SocialMediaLinks/constants/ExpertiseLevelEnum.d.ts +0 -4
  472. package/dist/components/SubHeader/constants/ExpertiseLevelEnum.d.ts +0 -4
  473. package/dist/components/SyAlert/constants/ExpertiseLevelEnum.d.ts +0 -4
  474. package/dist/components/TableToolbar/constants/ExpertiseLevelEnum.d.ts +0 -4
  475. package/dist/components/UploadWorkflow/constants/ExpertiseLevelEnum.d.ts +0 -4
  476. package/dist/components/UserMenuBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
  477. package/src/components/BackBtn/constants/ExpertiseLevelEnum.ts +0 -4
  478. package/src/components/BackToTopBtn/constants/ExpertiseLevelEnum.ts +0 -4
  479. package/src/components/ChipList/constants/ExpertiseLevelEnum.ts +0 -4
  480. package/src/components/CollapsibleList/constants/ExpertiseLevelEnum.ts +0 -4
  481. package/src/components/ContextualMenu/constants/ExpertiseLevelEnum.ts +0 -4
  482. package/src/components/CookieBanner/constants/ExpertiseLevelEnum.ts +0 -4
  483. package/src/components/CopyBtn/constants/ExpertiseLevelEnum.ts +0 -4
  484. package/src/components/Customs/SyBtnSelect/constants/ExpertiseLevelEnum.ts +0 -4
  485. package/src/components/Customs/SyInputSelect/constants/ExpertiseLevelEnum.ts +0 -4
  486. package/src/components/Customs/SySelect/constants/ExpertiseLevelEnum.ts +0 -4
  487. package/src/components/Customs/SyTextField/constants/ExpertiseLevelEnum.ts +0 -4
  488. package/src/components/DataList/constants/ExpertiseLevelEnum.ts +0 -4
  489. package/src/components/DataListGroup/constants/ExpertiseLevelEnum.ts +0 -4
  490. package/src/components/DatePicker/DatePicker.mdx +0 -222
  491. package/src/components/DatePicker/DateTextInput.vue +0 -504
  492. package/src/components/DatePicker/constants/ExpertiseLevelEnum.ts +0 -4
  493. package/src/components/DialogBox/constants/ExpertiseLevelEnum.ts +0 -4
  494. package/src/components/DownloadBtn/constants/ExpertiseLevelEnum.ts +0 -4
  495. package/src/components/ErrorPage/constants/ExpertiseLevelEnum.ts +0 -4
  496. package/src/components/ExternalLinks/constants/ExpertiseLevelEnum.ts +0 -4
  497. package/src/components/FileList/constants/ExpertiseLevelEnum.ts +0 -4
  498. package/src/components/FilePreview/constants/ExpertiseLevelEnum.ts +0 -4
  499. package/src/components/FileUpload/constants/ExpertiseLevelEnum.ts +0 -4
  500. package/src/components/FilterInline/constants/ExpertiseLevelEnum.ts +0 -4
  501. package/src/components/FilterSideBar/constants/ExpertiseLevelEnum.ts +0 -4
  502. package/src/components/FooterBar/constants/ExpertiseLevelEnum.ts +0 -4
  503. package/src/components/FranceConnectBtn/constants/ExpertiseLevelEnum.ts +0 -4
  504. package/src/components/HeaderBar/HeaderBurgerMenu/constants/ExpertiseLevelEnum.ts +0 -4
  505. package/src/components/HeaderBar/constants/ExpertiseLevelEnum.ts +0 -4
  506. package/src/components/HeaderLoading/constants/ExpertiseLevelEnum.ts +0 -4
  507. package/src/components/HeaderToolbar/constants/ExpertiseLevelEnum.ts +0 -4
  508. package/src/components/LangBtn/constants/ExpertiseLevelEnum.ts +0 -4
  509. package/src/components/Logo/constants/ExpertiseLevelEnum.ts +0 -4
  510. package/src/components/LogoBrandSection/constants/ExpertiseLevelEnum.ts +0 -4
  511. package/src/components/MaintenancePage/constants/ExpertiseLevelEnum.ts +0 -4
  512. package/src/components/NirField/constants/ExpertiseLevelEnum.ts +0 -4
  513. package/src/components/NotFoundPage/constants/ExpertiseLevelEnum.ts +0 -4
  514. package/src/components/NotificationBar/constants/ExpertiseLevelEnum.ts +0 -4
  515. package/src/components/PageContainer/constants/ExpertiseLevelEnum.ts +0 -4
  516. package/src/components/PaginatedTable/constants/ExpertiseLevelEnum.ts +0 -4
  517. package/src/components/PaginatedTable/tests/__snapshots__/PaginatedTable.spec.ts.snap +0 -886
  518. package/src/components/PasswordField/constants/ExpertiseLevelEnum.ts +0 -4
  519. package/src/components/PeriodField/constants/ExpertiseLevelEnum.ts +0 -4
  520. package/src/components/PhoneField/constants/ExpertiseLevelEnum.ts +0 -4
  521. package/src/components/RangeField/constants/ExpertiseLevelEnum.ts +0 -4
  522. package/src/components/RatingPicker/constants/ExpertiseLevelEnum.ts +0 -4
  523. package/src/components/SearchListField/constants/ExpertiseLevelEnum.ts +0 -4
  524. package/src/components/SelectBtnField/constants/ExpertiseLevelEnum.ts +0 -4
  525. package/src/components/SkipLink/constants/ExpertiseLevelEnum.ts +0 -4
  526. package/src/components/SocialMediaLinks/constants/ExpertiseLevelEnum.ts +0 -4
  527. package/src/components/SubHeader/constants/ExpertiseLevelEnum.ts +0 -4
  528. package/src/components/SyAlert/constants/ExpertiseLevelEnum.ts +0 -4
  529. package/src/components/TableToolbar/constants/ExpertiseLevelEnum.ts +0 -4
  530. package/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.ts +0 -4
  531. package/src/components/UserMenuBtn/constants/ExpertiseLevelEnum.ts +0 -4
  532. package/src/stories/DesignTokens/ThemePA.mdx +0 -35
  533. /package/src/components/DatePicker/{examples → playground}/DatePickerHolidayRule.vue +0 -0
@@ -1,14 +1,19 @@
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, useAsteriskDisplay } 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'
16
+ import { useHolidayDay } from '@/composables/date/useHolidayDay'
12
17
 
13
18
  // Initialiser les plugins dayjs
14
19
  dayjs.extend(customParseFormat)
@@ -17,12 +22,20 @@
17
22
  const { initializeSelectedDates } = useDateInitialization()
18
23
  const { updateAccessibility } = useDatePickerAccessibility()
19
24
 
25
+ // Variables pour suivre le mois et l'année actuellement affichés dans le DatePicker
26
+ const currentMonth = ref<string | null>(null)
27
+ const currentYear = ref<string | null>(null)
28
+ const currentMonthName = ref<string | null>(null)
29
+ const currentYearName = ref<string | null>(null)
30
+
20
31
  const props = withDefaults(defineProps<{
21
32
  modelValue?: DateInput
33
+ label?: string
22
34
  placeholder?: string
23
35
  format?: string
24
36
  dateFormatReturn?: string
25
37
  isBirthDate?: boolean
38
+ birthDate?: boolean // Alias pour isBirthDate pour compatibilité avec l'attribut kebab-case birth-date
26
39
  showWeekNumber?: boolean
27
40
  required?: boolean
28
41
  displayRange?: boolean
@@ -42,12 +55,27 @@
42
55
  disableErrorHandling?: boolean
43
56
  showSuccessMessages?: boolean
44
57
  bgColor?: string
58
+ density?: 'default' | 'comfortable' | 'compact'
59
+ hideDetails?: boolean | 'auto'
60
+ displayWeekendDays?: boolean
61
+ displayTodayButton?: boolean
62
+ displayHolidayDays?: boolean
63
+ useCombinedMode?: boolean
64
+ textFieldActivator?: boolean
65
+ displayAsterisk?: boolean
66
+ period?: {
67
+ min?: string
68
+ max?: string
69
+ }
70
+ autoClamp?: boolean
45
71
  }>(), {
46
72
  modelValue: undefined,
47
- placeholder: 'Sélectionner une date',
48
- format: 'DD/MM/YYYY',
73
+ label: DATE_PICKER_MESSAGES.LABEL_DEFAULT,
74
+ placeholder: DATE_PICKER_MESSAGES.PLACEHOLDER_DEFAULT,
75
+ format: DATE_PICKER_MESSAGES.FORMAT_DEFAULT,
49
76
  dateFormatReturn: '',
50
77
  isBirthDate: false,
78
+ birthDate: false,
51
79
  showWeekNumber: false,
52
80
  required: false,
53
81
  displayRange: false,
@@ -64,20 +92,72 @@
64
92
  width: '100%',
65
93
  disableErrorHandling: false,
66
94
  showSuccessMessages: true,
67
- bgColor: undefined,
95
+ bgColor: 'white',
96
+ density: 'default',
97
+ hideDetails: false,
98
+ displayWeekendDays: true,
99
+ displayTodayButton: true,
100
+ displayHolidayDays: true,
101
+ useCombinedMode: false,
102
+ textFieldActivator: false,
103
+ displayAsterisk: false,
104
+ period: () => ({
105
+ min: '',
106
+ max: '',
107
+ }),
108
+ autoClamp: false,
68
109
  })
69
110
 
111
+ // La compatibilité entre isBirthDate et birthDate est gérée directement dans l'appel au composable
112
+
113
+ // Utilisation des composables pour les fonctionnalités du DatePicker
114
+ const { displayWeekendDays } = useWeekendDays(props)
115
+ const { todayInString } = useTodayButton(props)
116
+ const { labelWithAsterisk } = useAsteriskDisplay(props)
117
+
118
+ const selectedDates = ref<Date | Date[] | null>(
119
+ initializeSelectedDates(props.modelValue as DateInput | null, props.format, props.dateFormatReturn),
120
+ )
121
+
122
+ // Utilisation du composable pour l'affichage formaté des dates
123
+ const { displayedDateString } = useDisplayedDateString({
124
+ selectedDates,
125
+ todayInString,
126
+ })
127
+
128
+ // Fonction pour sélectionner la date du jour
129
+ const handleSelectToday = () => {
130
+ // Créer une seule instance de la date du jour
131
+ const today = new Date()
132
+
133
+ // Si c'est une plage de dates, on définit le même jour pour début et fin
134
+ if (props.displayRange) {
135
+ selectedDates.value = [today, today]
136
+ // Formater les dates pour le modèle (format de retour)
137
+ const formattedToday = formatDate(today, props.dateFormatReturn || props.format)
138
+ updateModel([formattedToday, formattedToday])
139
+ }
140
+ else {
141
+ // Sinon, on sélectionne simplement aujourd'hui
142
+ selectedDates.value = today
143
+ // Formater la date pour le modèle (format de retour)
144
+ const formattedToday = formatDate(today, props.dateFormatReturn || props.format)
145
+ updateModel(formattedToday)
146
+ }
147
+
148
+ // Mettre à jour l'affichage formaté
149
+ updateDisplayFormattedDate()
150
+ }
151
+
70
152
  const emit = defineEmits<{
71
153
  (e: 'update:modelValue', value: DateValue): void
72
154
  (e: 'closed'): void
73
155
  (e: 'focus'): void
74
156
  (e: 'blur'): void
157
+ (e: 'input', value: DateValue): void
158
+ (e: 'date-selected', value: DateValue): void
75
159
  }>()
76
160
 
77
- const selectedDates = ref<Date | Date[] | null>(
78
- initializeSelectedDates(props.modelValue as DateInput | null, props.format, props.dateFormatReturn),
79
- )
80
-
81
161
  const isDatePickerVisible = ref(false)
82
162
  const validation = useValidation({
83
163
  showSuccessMessages: props.showSuccessMessages,
@@ -105,6 +185,7 @@
105
185
 
106
186
  // Variable pour éviter les mises à jour récursives
107
187
  const isUpdatingFromInternal = ref(false)
188
+ const isInitialValidation = ref(true)
108
189
 
109
190
  // Fonction pour valider les dates
110
191
  const validateDates = (forceValidation = false) => {
@@ -125,12 +206,12 @@
125
206
  if (props.readonly) {
126
207
  return
127
208
  }
128
- if (shouldDisplayErrors) {
129
- errors.value.push('La date est requise.')
209
+ // Ne pas afficher d'erreur si on est dans le contexte du mounted initial
210
+ if (shouldDisplayErrors && (!isInitialValidation.value || forceValidation)) {
211
+ errors.value.push(DATE_PICKER_MESSAGES.ERROR_REQUIRED)
130
212
  }
131
213
  return
132
214
  }
133
-
134
215
  if (!selectedDates.value) return
135
216
 
136
217
  // Préparer les dates à valider
@@ -163,6 +244,9 @@
163
244
  try {
164
245
  isUpdatingFromInternal.value = true
165
246
  emit('update:modelValue', value)
247
+ isDatePickerVisible.value = false
248
+ emit('closed')
249
+ validateDates()
166
250
  }
167
251
  finally {
168
252
  // S'assurer que le flag est toujours réinitialisé
@@ -176,6 +260,8 @@
176
260
  watch(selectedDates, (newValue) => {
177
261
  // Valider les dates
178
262
  validateDates()
263
+ // Marquer les jours fériés après la mise à jour des dates
264
+ markHolidayDays()
179
265
 
180
266
  // Mettre à jour le modèle si nécessaire
181
267
  if (newValue !== null) {
@@ -215,9 +301,13 @@
215
301
  'v-messages__message--warning': warningMessages.value.length > 0 && errorMessages.value.length < 1,
216
302
  })
217
303
 
218
- const inputStyle = computed(() => ({
219
- 'min-width': '100%',
220
- }))
304
+ // Utilisation du composable pour gérer la sélection de dates
305
+ const { updateSelectedDates, rangeBoundaryDates } = useDateSelection(
306
+ parseDate,
307
+ selectedDates,
308
+ props.format,
309
+ props.displayRange,
310
+ )
221
311
 
222
312
  // Date(s) formatée(s) en chaîne de caractères pour la valeur de retour
223
313
  const formattedDate = computed<DateValue>(() => {
@@ -225,11 +315,18 @@
225
315
 
226
316
  const returnFormat = props.dateFormatReturn || props.format
227
317
 
228
- if (Array.isArray(selectedDates.value)) {
318
+ // Pour les plages de dates, utiliser rangeBoundaryDates s'il est disponible
319
+ if (props.displayRange && rangeBoundaryDates.value) {
320
+ return [
321
+ formatDate(rangeBoundaryDates.value[0], returnFormat),
322
+ formatDate(rangeBoundaryDates.value[1], returnFormat),
323
+ ] as [string, string]
324
+ }
325
+ else if (Array.isArray(selectedDates.value)) {
229
326
  if (selectedDates.value.length >= 2) {
230
327
  return [
231
328
  formatDate(selectedDates.value[0], returnFormat),
232
- formatDate(selectedDates.value[1], returnFormat),
329
+ formatDate(selectedDates.value[selectedDates.value.length - 1], returnFormat),
233
330
  ] as [string, string]
234
331
  }
235
332
  return ''
@@ -256,9 +353,59 @@
256
353
  }
257
354
  }, { immediate: true })
258
355
 
356
+ // Gestionnaire pour les mises à jour du DateTextInput en mode no-calendar
357
+ const handleDateTextInputUpdate = (value: DateValue) => {
358
+ if (isUpdatingFromInternal.value) return
359
+
360
+ try {
361
+ isUpdatingFromInternal.value = true
362
+
363
+ // Mettre à jour le modèle avec la valeur reçue du DateTextInput
364
+ updateModel(value)
365
+
366
+ // Mettre à jour selectedDates en fonction de la valeur reçue
367
+ if (!value) {
368
+ selectedDates.value = null
369
+ displayFormattedDate.value = ''
370
+ }
371
+ else if (Array.isArray(value) && props.displayRange) {
372
+ // Pour les plages de dates
373
+ const [startDateStr, endDateStr] = value
374
+ const startDate = parseDate(startDateStr, props.dateFormatReturn || props.format)
375
+ const endDate = parseDate(endDateStr, props.dateFormatReturn || props.format)
376
+
377
+ if (startDate && endDate) {
378
+ selectedDates.value = [startDate, endDate]
379
+ displayFormattedDate.value = `${formatDate(startDate, props.format)} - ${formatDate(endDate, props.format)}`
380
+ }
381
+ }
382
+ else if (typeof value === 'string') {
383
+ // Pour une date unique
384
+ const date = parseDate(value, props.dateFormatReturn || props.format)
385
+ if (date) {
386
+ selectedDates.value = date
387
+ displayFormattedDate.value = formatDate(date, props.format)
388
+ }
389
+ }
390
+ }
391
+ finally {
392
+ setTimeout(() => {
393
+ isUpdatingFromInternal.value = false
394
+ }, 0)
395
+ }
396
+ }
397
+
398
+ // Gestionnaire pour les événements date-selected du DateTextInput
399
+ const handleDateTextInputSelection = (value: DateValue) => {
400
+ if (isUpdatingFromInternal.value) return
401
+
402
+ // Mettre à jour le modèle avec la valeur sélectionnée
403
+ updateModel(value)
404
+ }
405
+
259
406
  watch(textInputValue, (newValue) => {
260
407
  // Éviter les mises à jour récursives
261
- if (isUpdatingFromInternal.value) return
408
+ if (isUpdatingFromInternal.value || props.noCalendar) return
262
409
 
263
410
  // Parse la date avec le format d'affichage
264
411
  const date = parseDate(newValue, props.format)
@@ -343,26 +490,7 @@
343
490
  }
344
491
  }
345
492
 
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
- }
493
+ // Le composable useDateSelection est déjà initialisé plus haut dans le code
366
494
 
367
495
  // Gestionnaire de clic en dehors
368
496
  const handleClickOutside = (event: MouseEvent) => {
@@ -378,20 +506,33 @@
378
506
  validateDates()
379
507
  }
380
508
 
381
- const todayInString = computed(() => {
382
- return dayjs().locale('fr').format('dddd D MMMM').replace(/\b\w/g, l => l.toUpperCase())
383
- })
509
+ // todayInString est maintenant fourni par le composable useTodayButton
510
+
511
+ // Utilisation du composable pour personnaliser les boutons du mois et de l'année
512
+ const { customizeMonthButton, setupMonthButtonObserver } = useMonthButtonCustomization(
513
+ () => isDatePickerVisible.value,
514
+ currentMonthName,
515
+ currentYearName,
516
+ )
384
517
 
385
518
  onMounted(() => {
386
519
  document.addEventListener('click', handleClickOutside)
387
520
 
521
+ // Configurer l'observateur pour le bouton du mois
522
+ setupMonthButtonObserver()
523
+
388
524
  // Initialiser l'affichage formaté
389
525
  if (displayFormattedDateComputed.value) {
390
526
  displayFormattedDate.value = displayFormattedDateComputed.value
391
527
  }
392
528
 
393
- // Valider les dates au montage
529
+ // Valider les dates au montage, mais sans afficher d'erreur pour le required
394
530
  validateDates()
531
+
532
+ // Après la validation initiale, désactiver le flag
533
+ nextTick(() => {
534
+ isInitialValidation.value = false
535
+ })
395
536
  })
396
537
 
397
538
  onBeforeUnmount(() => {
@@ -418,35 +559,95 @@
418
559
  }
419
560
  }
420
561
 
421
- type ViewMode = 'month' | 'year' | 'months' | undefined
562
+ // Fonction pour mettre à jour le mois
563
+ const onUpdateMonth = (month: string) => {
564
+ // Éviter les mises à jour inutiles si le mois n'a pas changé
565
+ if (currentMonth.value === month) return
566
+ currentMonth.value = month
567
+ currentMonthName.value = dayjs().month(parseInt(month, 10)).format('MMMM')
568
+ handleMonthUpdate()
569
+ nextTick(() => {
570
+ if (isDatePickerVisible.value) {
571
+ customizeMonthButton()
572
+ markHolidayDays()
573
+ }
574
+ })
575
+ }
576
+
577
+ // Fonction pour mettre à jour l'année
578
+ const onUpdateYear = (year: string) => {
579
+ currentYear.value = year
580
+ currentYearName.value = year
581
+ markHolidayDays()
582
+
583
+ handleYearUpdate()
584
+ handleMonthUpdate()
585
+ nextTick(() => {
586
+ if (isDatePickerVisible.value) {
587
+ customizeMonthButton()
588
+ markHolidayDays()
589
+ }
590
+ })
591
+ }
592
+
593
+ // Propriété calculée pour récupérer les jours fériés de l'année courante
594
+ const holidays = computed(() => {
595
+ // Utiliser le composable useHolidayDay pour récupérer les jours fériés
596
+ const { getJoursFeries } = useHolidayDay()
422
597
 
423
- // Variable pour suivre le mode d'affichage actuel du DatePicker
424
- const currentViewMode = ref<ViewMode>(props.isBirthDate ? 'year' : 'month')
598
+ // Convertir l'année en nombre, utiliser l'année courante comme valeur par défaut
599
+ const year = parseInt(currentYear.value || new Date().getFullYear().toString(), 10)
425
600
 
426
- watch(() => props.isBirthDate, (newValue) => {
427
- currentViewMode.value = newValue ? 'year' : 'month'
601
+ // Récupérer les jours fériés au format DD/MM/YYYY
602
+ const joursFeries = getJoursFeries(year)
603
+
604
+ // Tableau pour stocker les jours fériés
605
+ const holidayDates: Date[] = []
606
+
607
+ // Convertir les dates du format string en objets Date
608
+ joursFeries.forEach((dateStr) => {
609
+ const [day, month, yearStr] = dateStr.split('/')
610
+ // Mois -1 car les mois dans Date sont indexés à partir de 0
611
+ holidayDates.push(new Date(parseInt(yearStr), parseInt(month) - 1, parseInt(day)))
612
+ })
613
+
614
+ // Retourner le tableau des jours fériés
615
+ return holidayDates
428
616
  })
429
617
 
430
- // Fonction pour gérer le changement de mode d'affichage
431
- const handleViewModeUpdate = (newMode: ViewMode) => {
432
- currentViewMode.value = newMode
433
- }
618
+ // Fonction pour marquer les jours fériés dans le calendrier
619
+ const markHolidayDays = () => {
620
+ if (!props.displayHolidayDays) return
621
+ // Attendre que le DOM soit mis à jour
622
+ nextTick(() => {
623
+ // Récupérer l'année et le mois courants
624
+ const year = parseInt(currentYear.value || new Date().getFullYear().toString(), 10)
625
+ // Utiliser currentMonth.value !== null pour vérifier si la valeur est définie, même si c'est 0
626
+ const month = parseInt(currentMonth.value !== null ? currentMonth.value : new Date().getMonth().toString(), 10)
627
+
628
+ // Récupérer les jours fériés pour ce mois
629
+ const monthHolidays = holidays.value.filter((holiday) => {
630
+ // La comparaison doit tenir compte du fait que getMonth() retourne 0-11
631
+ return holiday.getMonth() === month
632
+ })
434
633
 
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
- }
634
+ // Pour chaque jour férié, trouver l'élément DOM correspondant et ajouter la classe
635
+ monthHolidays.forEach((holiday) => {
636
+ const day = holiday.getDate()
637
+ const dateStr = `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`
638
+ const dayElements = document.querySelectorAll(`[data-v-date="${dateStr}"]`)
639
+ dayElements.forEach((element) => {
640
+ element.classList.add('holiday-day')
641
+ })
642
+ })
643
+ })
441
644
  }
442
645
 
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
- }
646
+ // Utilisation du composable pour gérer le mode d'affichage du DatePicker
647
+ const { currentViewMode, handleViewModeUpdate, handleYearUpdate, handleMonthUpdate, resetViewMode } = useDatePickerViewMode(
648
+ // Fonction qui retourne la valeur actuelle de isBirthDate (combinaison de isBirthDate et birthDate)
649
+ () => props.isBirthDate || props.birthDate,
650
+ )
450
651
 
451
652
  const handleInputBlur = () => {
452
653
  emit('blur')
@@ -454,9 +655,13 @@
454
655
  }
455
656
 
456
657
  watch(isDatePickerVisible, async (isVisible) => {
658
+ if (isVisible) {
659
+ // Marquer les jours fériés lorsque le calendrier devient visible
660
+ markHolidayDays()
661
+ }
457
662
  if (!isVisible && props.isBirthDate) {
458
663
  // Réinitialiser le mode d'affichage au type birthdate
459
- currentViewMode.value = 'year'
664
+ resetViewMode()
460
665
  }
461
666
 
462
667
  if (isVisible) {
@@ -525,25 +730,44 @@
525
730
  if (isUpdatingFromInternal.value) {
526
731
  if (props.displayRange) {
527
732
  if (Array.isArray(newValue) && newValue.length >= 2) {
528
- isDatePickerVisible.value = false
529
- emit('closed')
733
+ // Synchroniser les dates de plage avec le modèle
734
+ syncFromModelValue(newValue)
530
735
  }
531
736
  }
532
- else {
533
- isDatePickerVisible.value = false
534
- emit('closed')
535
- }
536
737
  return
537
738
  }
538
739
 
539
- try {
540
- isUpdatingFromInternal.value = true
541
- syncFromModelValue(newValue)
542
- }
543
- finally {
544
- setTimeout(() => {
545
- isUpdatingFromInternal.value = false
546
- }, 0)
740
+ // Synchroniser les dates sélectionnées avec le modèle
741
+ syncFromModelValue(newValue)
742
+
743
+ // Mettre à jour textInputValue pour le DateTextInput en mode no-calendar
744
+ if (props.noCalendar) {
745
+ try {
746
+ isUpdatingFromInternal.value = true
747
+
748
+ if (!newValue) {
749
+ textInputValue.value = ''
750
+ }
751
+ else if (Array.isArray(newValue) && props.displayRange) {
752
+ // Pour les plages de dates, on ne modifie pas directement textInputValue
753
+ // car le DateTextInput gère son propre formatage
754
+ }
755
+ else if (typeof newValue === 'string') {
756
+ // Pour une date unique
757
+ const date = parseDate(newValue, props.dateFormatReturn || props.format)
758
+ if (date) {
759
+ textInputValue.value = formatDate(date, props.format)
760
+ }
761
+ else {
762
+ textInputValue.value = newValue
763
+ }
764
+ }
765
+ }
766
+ finally {
767
+ setTimeout(() => {
768
+ isUpdatingFromInternal.value = false
769
+ }, 0)
770
+ }
547
771
  }
548
772
  }, { immediate: true })
549
773
 
@@ -553,7 +777,6 @@
553
777
  isDatePickerVisible.value = !isDatePickerVisible.value
554
778
 
555
779
  if (isDatePickerVisible.value) {
556
- // Mettre à jour l'accessibilité après l'ouverture du DatePicker
557
780
  nextTick(() => {
558
781
  updateAccessibility()
559
782
  })
@@ -566,6 +789,7 @@
566
789
 
567
790
  const openDatePickerOnClick = () => {
568
791
  openDatePicker()
792
+ customizeMonthButton()
569
793
  }
570
794
 
571
795
  const openDatePickerOnFocus = () => {
@@ -592,17 +816,47 @@
592
816
  <template>
593
817
  <div
594
818
  class="date-picker-container"
595
- :style="inputStyle"
596
819
  >
597
820
  <template v-if="props.noCalendar">
598
821
  <DateTextInput
599
822
  ref="dateTextInputRef"
600
823
  v-model="textInputValue"
601
824
  :class="[getMessageClasses(), 'label-hidden-on-focus']"
825
+ :label="labelWithAsterisk || ''"
826
+ :placeholder="props.placeholder"
827
+ :format="props.format"
602
828
  :date-format-return="props.dateFormatReturn"
829
+ :required="props.required"
830
+ :display-range="props.displayRange"
831
+ :display-icon="props.displayIcon"
832
+ :display-append-icon="props.displayAppendIcon"
833
+ :display-prepend-icon="props.displayPrependIcon"
834
+ :custom-rules="props.customRules"
835
+ :custom-warning-rules="props.customWarningRules"
836
+ :disabled="props.disabled"
837
+ :no-icon="props.noIcon"
838
+ :is-outlined="props.isOutlined"
839
+ :readonly="props.readonly"
840
+ :width="props.width"
841
+ :disable-error-handling="props.disableErrorHandling"
842
+ :show-success-messages="props.showSuccessMessages"
843
+ :bg-color="props.bgColor"
844
+ :density="props.density"
845
+ :hide-details="props.hideDetails"
846
+ :period="props.period"
847
+ :auto-clamp="props.autoClamp"
848
+ :display-asterisk="props.displayAsterisk"
849
+ @update:model-value="handleDateTextInputUpdate"
850
+ @date-selected="handleDateTextInputSelection"
851
+ @blur="handleInputBlur"
852
+ @focus="emit('focus')"
853
+ />
854
+ </template>
855
+ <template v-else-if="props.useCombinedMode">
856
+ <ComplexDatePicker
857
+ :model-value="props.modelValue"
603
858
  :format="props.format"
604
- :label="props.placeholder"
605
- :placeholder="props.placeholder"
859
+ :date-format-return="props.dateFormatReturn"
606
860
  :required="props.required"
607
861
  :custom-rules="props.customRules"
608
862
  :custom-warning-rules="props.customWarningRules"
@@ -616,9 +870,25 @@
616
870
  :disable-error-handling="props.disableErrorHandling"
617
871
  :show-success-messages="props.showSuccessMessages"
618
872
  :bg-color="props.bgColor"
619
- title="Date text input"
873
+ :density="props.density"
874
+ :hide-details="props.hideDetails"
875
+ :display-range="props.displayRange"
876
+ :display-weekend-days="props.displayWeekendDays"
877
+ :display-today-button="props.displayTodayButton"
878
+ :display-holiday-days="props.displayHolidayDays"
879
+ :display-asterisk="props.displayAsterisk"
880
+ :show-week-number="props.showWeekNumber"
881
+ :is-birth-date="props.isBirthDate || props.birthDate"
882
+ :text-field-activator="props.textFieldActivator"
883
+ :title="'Date text input'"
884
+ :period="period"
885
+ :auto-clamp="props.autoClamp"
886
+ :label="props.label"
887
+ :placeholder="props.placeholder"
888
+ @update:model-value="emit('update:modelValue', $event)"
620
889
  @focus="emit('focus')"
621
890
  @blur="emit('blur')"
891
+ @date-selected="emit('date-selected', $event)"
622
892
  />
623
893
  </template>
624
894
  <template v-else>
@@ -649,14 +919,20 @@
649
919
  :disabled="props.disabled"
650
920
  :disable-click-button="false"
651
921
  :readonly="true"
652
- :label="props.placeholder"
922
+ :label="labelWithAsterisk || ''"
923
+ :placeholder="props.placeholder"
924
+ :display-persistent-placeholder="true"
653
925
  :no-icon="props.noIcon"
654
926
  :prepend-icon="displayIcon && !displayAppendIcon ? 'calendar' : undefined"
655
927
  :variant-style="props.isOutlined ? 'outlined' : 'underlined'"
656
928
  color="primary"
657
929
  :show-success-messages="props.showSuccessMessages"
658
930
  :bg-color="props.bgColor"
931
+ :density="props.density"
932
+ :hide-details="props.hideDetails"
933
+ :display-asterisk="props.displayAsterisk"
659
934
  is-clearable
935
+ :auto-clamp="props.autoClamp"
660
936
  title="Date Picker"
661
937
  @click="openDatePickerOnClick"
662
938
  @focus="openDatePickerOnFocus"
@@ -676,19 +952,49 @@
676
952
  :show-adjacent-months="true"
677
953
  :show-week="props.showWeekNumber"
678
954
  :view-mode="currentViewMode"
955
+ :class="displayWeekendDays ? 'weekend' : ''"
956
+ :max="props.period?.max"
957
+ :min="props.period?.min"
958
+ :display-holiday-days="props.displayHolidayDays"
679
959
  @update:view-mode="handleViewModeUpdate"
680
- @update:year="handleYearUpdate"
681
- @update:month="handleMonthUpdate"
960
+ @update:month="onUpdateMonth"
961
+ @update:year="onUpdateYear"
962
+ @click:date="updateSelectedDates"
682
963
  @update:model-value="updateDisplayFormattedDate"
964
+ @focus="markHolidayDays"
965
+ @update:month-year="markHolidayDays"
683
966
  >
684
967
  <template #title>
685
968
  Sélectionnez une date
686
969
  </template>
687
970
  <template #header>
688
971
  <h3 class="mx-auto my-auto ml-5 mb-4">
689
- {{ todayInString }}
972
+ {{ displayedDateString }}
690
973
  </h3>
691
974
  </template>
975
+ <template
976
+ v-if="props.displayTodayButton"
977
+ #actions
978
+ >
979
+ <div class="d-flex justify-center align-center w-100">
980
+ <v-btn
981
+ v-if="props.displayTodayButton"
982
+ size="x-small"
983
+ color="primary"
984
+ :title="DATE_PICKER_MESSAGES.BUTTON_TODAY"
985
+ class="my-2 pa-2 mt-2"
986
+ :ripple="false"
987
+ @click="handleSelectToday"
988
+ >
989
+ <VIcon
990
+ class="mr-1"
991
+ >
992
+ {{ mdiCalendar }}
993
+ </VIcon>
994
+ {{ DATE_PICKER_MESSAGES.BUTTON_TODAY }}
995
+ </v-btn>
996
+ </div>
997
+ </template>
692
998
  </VDatePicker>
693
999
  </VMenu>
694
1000
  </template>
@@ -698,6 +1004,29 @@
698
1004
  <style lang="scss" scoped>
699
1005
  @use '@/assets/tokens';
700
1006
 
1007
+ /* Style pour les jours fériés */
1008
+ :deep(.holiday-day) {
1009
+ background-color: rgb(255 193 7 / 10%);
1010
+ border: 2px dotted tokens.$neutral-black;
1011
+ border-radius: 50%;
1012
+ }
1013
+
1014
+ /* Disable ripple effect on month and year buttons */
1015
+ :deep(.v-date-picker-controls__month-btn),
1016
+ :deep(.v-date-picker-controls__mode-btn) {
1017
+ .v-ripple__container,
1018
+ .v-ripple__animation {
1019
+ display: none !important;
1020
+ opacity: 0 !important;
1021
+ background-color: transparent !important;
1022
+ pointer-events: none !important;
1023
+ }
1024
+ }
1025
+
1026
+ :deep(.v-date-picker-controls .v-btn:last-child) {
1027
+ margin-inline-start: 0;
1028
+ }
1029
+
701
1030
  .label-hidden-on-focus:focus + label {
702
1031
  display: none;
703
1032
  }
@@ -768,7 +1097,7 @@
768
1097
  }
769
1098
 
770
1099
  .date-picker-container {
771
- max-width: 100%;
1100
+ width: 100%;
772
1101
  position: relative;
773
1102
 
774
1103
  :deep(.v-date-picker) {
@@ -797,4 +1126,21 @@
797
1126
  .fade-leave-to {
798
1127
  opacity: 0;
799
1128
  }
1129
+
1130
+ :deep(.weekend .v-date-picker-month__day--week-end .v-btn) {
1131
+ background-color: #afb1b1;
1132
+ }
1133
+
1134
+ /* div avant la class .v-date-picker-month__day--week-end */
1135
+ :deep(.weekend .v-date-picker-month__day:has(+ .v-date-picker-month__day--week-end) .v-btn) {
1136
+ background-color: #afb1b1;
1137
+ }
1138
+
1139
+ :deep(.v-date-picker-controls__mode-btn) {
1140
+ transform: none !important;
1141
+ }
1142
+
1143
+ :deep(.v-btn--variant-text .v-btn__overlay) {
1144
+ padding: 13px;
1145
+ }
800
1146
  </style>