@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
@@ -0,0 +1,95 @@
1
+ import { computed, type Ref } from 'vue'
2
+ import dayjs from 'dayjs'
3
+ import customParseFormat from 'dayjs/plugin/customParseFormat'
4
+ import { DATE_PICKER_MESSAGES } from '../constants/messages'
5
+
6
+ // Initialiser le plugin dayjs nécessaire pour la validation des formats de date
7
+ dayjs.extend(customParseFormat)
8
+
9
+ /**
10
+ * Composable pour la validation du format des dates
11
+ *
12
+ * @param options - Options de configuration
13
+ * @param options.format - Format d'affichage de la date (ex: 'DD/MM/YYYY')
14
+ * @param options.dateFormatReturn - Format de retour de la date (optionnel)
15
+ * @param options.required - Indique si le champ est requis
16
+ * @param options.hasInteracted - Ref indiquant si l'utilisateur a interagi avec le champ
17
+ * @param options.disableErrorHandling - Désactive la gestion des erreurs
18
+ * @returns Fonctions et propriétés pour la validation du format des dates
19
+ */
20
+ export const useDateFormatValidation = (options: {
21
+ format: string
22
+ dateFormatReturn?: string
23
+ required?: boolean
24
+ hasInteracted: Ref<boolean>
25
+ disableErrorHandling?: boolean
26
+ }) => {
27
+ const { format, dateFormatReturn, required = false, hasInteracted, disableErrorHandling = false } = options
28
+
29
+ /**
30
+ * Valide le format d'une chaîne de date
31
+ *
32
+ * @param dateStr - Chaîne de date à valider
33
+ * @returns Objet contenant l'état de validité et un message d'erreur éventuel
34
+ */
35
+ const validateDateFormat = (dateStr: string): { isValid: boolean, message: string } => {
36
+ if (!dateStr) {
37
+ return {
38
+ isValid: !required || !hasInteracted.value || disableErrorHandling,
39
+ message: (required && hasInteracted.value && !disableErrorHandling) ? DATE_PICKER_MESSAGES.ERROR_REQUIRED : '',
40
+ }
41
+ }
42
+
43
+ if (!/^[\d/.-]*$/.test(dateStr)) {
44
+ return {
45
+ isValid: disableErrorHandling,
46
+ message: disableErrorHandling ? '' : `Format de date invalide (${format})`,
47
+ }
48
+ }
49
+
50
+ const isValid = dayjs(dateStr, format, true).isValid()
51
+ || (dateFormatReturn ? dayjs(dateStr, dateFormatReturn, true).isValid() : false)
52
+
53
+ if (!isValid) {
54
+ return {
55
+ isValid: disableErrorHandling,
56
+ message: disableErrorHandling ? '' : `Format de date invalide (${format})`,
57
+ }
58
+ }
59
+
60
+ return { isValid: true, message: '' }
61
+ }
62
+
63
+ /**
64
+ * Vérifie si une chaîne de date est complète selon le format spécifié
65
+ * en comptant le nombre de chiffres attendus et saisis, et en vérifiant la validité de la date
66
+ *
67
+ * @param dateStr - Chaîne de date à vérifier
68
+ * @returns Booléen indiquant si la date est complète
69
+ */
70
+ const isDateCompleteFunc = (dateStr: string): boolean => {
71
+ if (!dateStr) return false
72
+
73
+ // Compter le nombre de chiffres attendus en fonction du format
74
+ const expectedDigits = format.replace(/[^DMY]/g, '').length
75
+
76
+ // Compter le nombre de chiffres saisis
77
+ const actualDigits = dateStr.replace(/[^\d]/g, '').length
78
+
79
+ // Vérifier si la date est complète en termes de nombre de chiffres
80
+ const hasAllDigits = actualDigits === expectedDigits
81
+
82
+ // Vérifier si la date est valide selon le format spécifié
83
+ const isValid = hasAllDigits
84
+
85
+ return isValid
86
+ }
87
+
88
+ // Créer une version réactive de la fonction isDateComplete
89
+ const isDateComplete = computed(() => (dateStr: string) => isDateCompleteFunc(dateStr))
90
+
91
+ return {
92
+ validateDateFormat,
93
+ isDateComplete,
94
+ }
95
+ }
@@ -0,0 +1,326 @@
1
+ // Pas besoin d'importer Ref car il n'est pas utilisé
2
+
3
+ /**
4
+ * Options pour le composable useDateInputEditing
5
+ */
6
+ export interface DateInputEditingOptions {
7
+ // Format de date (ex: 'DD/MM/YYYY')
8
+ format: string
9
+ // Fonction pour mettre à jour la valeur d'affichage
10
+ updateDisplayValue: (value: string) => void
11
+ // Fonction pour mettre à jour l'attribut aria-label (pour l'accessibilité)
12
+ updateAriaLabel?: (value: string) => void
13
+ // Caractère à utiliser pour les positions non remplies (défaut: '_')
14
+ placeholderChar?: string
15
+ // Si true, utilise des caractères invisibles pour les lecteurs d'écran
16
+ accessiblePlaceholders?: boolean
17
+ }
18
+
19
+ /**
20
+ * Résultat du formatage d'une date
21
+ */
22
+ export interface FormatDateInputResult {
23
+ // Valeur formatée
24
+ formatted: string
25
+ // Position du curseur après formatage
26
+ cursorPos: number
27
+ }
28
+
29
+ /**
30
+ * Composable pour gérer l'édition manuelle des dates
31
+ * Ce composable fournit des fonctions pour formater les dates pendant la saisie
32
+ * et gérer les touches spéciales comme Backspace et les flèches
33
+ *
34
+ * @param options - Options de configuration
35
+ * @returns Fonctions pour gérer l'édition manuelle des dates
36
+ */
37
+ export const useDateInputEditing = (options: DateInputEditingOptions) => {
38
+ const {
39
+ format,
40
+ updateDisplayValue,
41
+ updateAriaLabel,
42
+ placeholderChar = '_',
43
+ accessiblePlaceholders = true,
44
+ } = options
45
+
46
+ /**
47
+ * Formate une entrée de date en ajoutant les séparateurs appropriés
48
+ *
49
+ * @param input - Chaîne de caractères saisie
50
+ * @param cursorPosition - Position actuelle du curseur
51
+ * @returns Objet contenant la chaîne formatée et la nouvelle position du curseur
52
+ */
53
+ const formatDateInput = (input: string, cursorPosition?: number): FormatDateInputResult => {
54
+ // Nettoyer l'entrée pour ne garder que les chiffres
55
+ let cleanedInput = input.replace(/[^\d]/g, '')
56
+
57
+ // Déterminer le séparateur utilisé dans le format
58
+ const separator = format.match(/[^DMY]/)?.[0] || '/'
59
+
60
+ // Calculer la position du curseur dans l'entrée nettoyée (sans séparateurs)
61
+ const inputBeforeCursor = input.substring(0, cursorPosition || 0)
62
+ const digitsBeforeCursor = inputBeforeCursor.replace(/[^\d]/g, '').length
63
+
64
+ // Extraire les groupes de chiffres du format (DD, MM, YYYY)
65
+ const digitGroups: string[] = []
66
+ let currentGroup = ''
67
+
68
+ for (const char of format) {
69
+ if (['D', 'M', 'Y'].includes(char.toUpperCase())) {
70
+ currentGroup += char
71
+ }
72
+ else if (currentGroup) {
73
+ digitGroups.push(currentGroup)
74
+ currentGroup = ''
75
+ }
76
+ }
77
+
78
+ // Ajouter le dernier groupe s'il existe
79
+ if (currentGroup) {
80
+ digitGroups.push(currentGroup)
81
+ }
82
+
83
+ // Calculer le nombre total de chiffres attendus dans le format
84
+ const expectedDigits = format.replace(/[^DMY]/g, '').length
85
+
86
+ // Limiter le nombre de chiffres saisis au nombre attendu
87
+ if (cleanedInput.length > expectedDigits) {
88
+ cleanedInput = cleanedInput.substring(0, expectedDigits)
89
+ }
90
+
91
+ // Construire la chaîne formatée
92
+ let result = ''
93
+ let digitIndex = 0
94
+
95
+ // Parcourir les groupes de chiffres pour construire la date formatée
96
+ for (let groupIndex = 0; groupIndex < digitGroups.length; groupIndex++) {
97
+ const group = digitGroups[groupIndex]
98
+ const groupLength = group.length
99
+
100
+ // Ajouter les chiffres pour ce groupe
101
+ for (let j = 0; j < groupLength; j++) {
102
+ if (digitIndex < cleanedInput.length) {
103
+ result += cleanedInput[digitIndex]
104
+ digitIndex++
105
+ }
106
+ else {
107
+ // Utiliser le caractère de placeholder configuré pour les positions non remplies
108
+ result += placeholderChar
109
+ }
110
+ }
111
+
112
+ // Ajouter le séparateur après chaque groupe sauf le dernier
113
+ if (groupIndex < digitGroups.length - 1) {
114
+ result += separator
115
+ }
116
+ }
117
+
118
+ // Calculer la nouvelle position du curseur
119
+ let newCursorPos = 0
120
+ let digitCount = 0
121
+
122
+ // Parcourir le résultat formaté pour trouver la position du curseur
123
+ for (let i = 0; i < result.length && digitCount < digitsBeforeCursor; i++) {
124
+ newCursorPos++
125
+ if (/\d/.test(result[i])) {
126
+ digitCount++
127
+ }
128
+ }
129
+
130
+ return {
131
+ formatted: result,
132
+ cursorPos: Math.min(newCursorPos, result.length),
133
+ }
134
+ }
135
+
136
+ /**
137
+ * Gère l'événement keydown pour les touches spéciales
138
+ *
139
+ * @param event - Événement keydown
140
+ */
141
+ const handleKeydown = (event: KeyboardEvent & { target: HTMLInputElement }): void => {
142
+ // Bloquer la saisie de caractères non numériques
143
+ // Autoriser uniquement : chiffres, touches de navigation, touches de modification et touches de contrôle
144
+ if (
145
+ // Si la touche n'est pas un chiffre
146
+ !/^\d$/.test(event.key)
147
+ // Et n'est pas une touche spéciale autorisée
148
+ && ![
149
+ 'Backspace', 'Delete', 'ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown',
150
+ 'Home', 'End', 'Tab', 'Escape', 'Enter',
151
+ 'Control', 'Alt', 'Shift', 'Meta',
152
+ ].includes(event.key)
153
+ // Et n'est pas une combinaison de touches (Ctrl+A, Ctrl+C, Ctrl+V, etc.)
154
+ && !(event.ctrlKey || event.metaKey)
155
+ ) {
156
+ // Empêcher la saisie de caractères non numériques
157
+ event.preventDefault()
158
+ return
159
+ }
160
+
161
+ // Gérer la suppression des séparateurs
162
+ if (event.key === 'Backspace') {
163
+ const input = event.target
164
+ if (!input.selectionStart || input.selectionStart !== input.selectionEnd) {
165
+ return
166
+ }
167
+
168
+ const cursorPos = input.selectionStart
169
+ const charBeforeCursor = input.value[cursorPos - 1]
170
+
171
+ if (!/\d/.test(charBeforeCursor)) {
172
+ // Si le caractère avant le curseur n'est pas un chiffre, on le supprime aussi
173
+ // et on supprime le chiffre avant le séparateur
174
+ event.preventDefault() // Empêcher le comportement par défaut
175
+
176
+ const newValue = input.value.substring(0, cursorPos - 2)
177
+ + input.value.substring(cursorPos)
178
+
179
+ // Mettre à jour la valeur
180
+ updateDisplayValue(newValue)
181
+
182
+ // Positionner le curseur après un court délai
183
+ setTimeout(() => {
184
+ const newCursorPos = cursorPos - 2
185
+ input.setSelectionRange(newCursorPos, newCursorPos)
186
+ }, 0)
187
+ }
188
+ }
189
+
190
+ // Gérer les touches de direction pour éviter de se retrouver entre un séparateur et un chiffre
191
+ if (event.key === 'ArrowLeft' || event.key === 'ArrowRight') {
192
+ const input = event.target
193
+ const cursorPos = input.selectionStart || 0
194
+
195
+ // Déterminer le séparateur utilisé dans le format
196
+ const separator = format.match(/[^DMY]/)?.[0] || '/'
197
+
198
+ if (event.key === 'ArrowLeft' && cursorPos > 0) {
199
+ const charBeforeCursor = input.value[cursorPos - 1]
200
+
201
+ if (charBeforeCursor === separator) {
202
+ // Si on se déplace à gauche et qu'on rencontre un séparateur, sauter par-dessus
203
+ event.preventDefault()
204
+ input.setSelectionRange(cursorPos - 2, cursorPos - 2)
205
+ }
206
+ }
207
+ else if (event.key === 'ArrowRight' && cursorPos < input.value.length) {
208
+ const charAtCursor = input.value[cursorPos]
209
+
210
+ if (charAtCursor === separator) {
211
+ // Si on se déplace à droite et qu'on rencontre un séparateur, sauter par-dessus
212
+ event.preventDefault()
213
+ input.setSelectionRange(cursorPos + 2, cursorPos + 2)
214
+ }
215
+ }
216
+ }
217
+ }
218
+
219
+ /**
220
+ * Gère l'événement paste pour formater correctement les dates collées
221
+ *
222
+ * @param event - Événement paste
223
+ */
224
+ const handlePaste = (event: ClipboardEvent): void => {
225
+ if (!event.clipboardData) return
226
+
227
+ const pastedText = event.clipboardData.getData('text')
228
+ if (!pastedText) return
229
+
230
+ // Empêcher le comportement par défaut
231
+ event.preventDefault()
232
+
233
+ // Récupérer l'élément input
234
+ const input = event.target as HTMLInputElement
235
+ const cursorPos = input.selectionStart || 0
236
+
237
+ // Récupérer la valeur actuelle
238
+ const currentValue = input.value
239
+
240
+ // Insérer le texte collé à la position du curseur
241
+ const newValue = currentValue.substring(0, cursorPos)
242
+ + pastedText
243
+ + currentValue.substring(input.selectionEnd || cursorPos)
244
+
245
+ // Formater la nouvelle valeur
246
+ const { formatted, cursorPos: newCursorPos } = formatDateInput(newValue, cursorPos + pastedText.length)
247
+
248
+ // Mettre à jour la valeur
249
+ updateDisplayValue(formatted)
250
+
251
+ // Mettre à jour l'aria-label si la fonction est fournie
252
+ if (updateAriaLabel && accessiblePlaceholders) {
253
+ // Créer une version accessible pour les lecteurs d'écran (sans les caractères de placeholder)
254
+ const accessibleValue = formatted.replace(new RegExp(placeholderChar, 'g'), ' ')
255
+
256
+ // Créer un message descriptif pour le lecteur d'écran
257
+ const dateDescription = getDateDescription(accessibleValue, format)
258
+ updateAriaLabel(dateDescription)
259
+ }
260
+
261
+ // Positionner le curseur après un court délai
262
+ setTimeout(() => {
263
+ input.setSelectionRange(newCursorPos, newCursorPos)
264
+ }, 0)
265
+ }
266
+
267
+ /**
268
+ * Crée une description accessible de la date pour les lecteurs d'écran
269
+ *
270
+ * @param dateStr - La chaîne de date à décrire
271
+ * @param format - Le format de la date
272
+ * @returns Une description de la date adaptée aux lecteurs d'écran
273
+ */
274
+ const getDateDescription = (dateStr: string, format: string): string => {
275
+ // Si la chaîne est vide, retourner un message simple
276
+ if (!dateStr.trim()) {
277
+ return 'Aucune date saisie'
278
+ }
279
+
280
+ // Déterminer le séparateur utilisé dans le format
281
+ const separator = format.match(/[^DMY]/)?.[0] || '/'
282
+
283
+ // Extraire les parties de la date
284
+ const dateParts = dateStr.split(separator)
285
+ const formatParts = format.split(separator)
286
+
287
+ // Créer une description en fonction du format
288
+ let description = 'Date en cours de saisie: '
289
+
290
+ for (let i = 0; i < formatParts.length; i++) {
291
+ if (i >= dateParts.length) break
292
+
293
+ const part = dateParts[i].trim()
294
+ const formatPart = formatParts[i].charAt(0).toUpperCase()
295
+
296
+ // Ignorer les parties vides ou contenant uniquement des placeholders
297
+ if (!part || part.replace(new RegExp(placeholderChar, 'g'), '').length === 0) {
298
+ continue
299
+ }
300
+
301
+ switch (formatPart) {
302
+ case 'D':
303
+ description += `jour ${part}, `
304
+ break
305
+ case 'M':
306
+ description += `mois ${part}, `
307
+ break
308
+ case 'Y':
309
+ description += `année ${part}, `
310
+ break
311
+ }
312
+ }
313
+
314
+ // Supprimer la virgule finale si elle existe
315
+ return description.endsWith(', ')
316
+ ? description.slice(0, -2)
317
+ : description
318
+ }
319
+
320
+ return {
321
+ formatDateInput,
322
+ handleKeydown,
323
+ handlePaste,
324
+ getDateDescription,
325
+ }
326
+ }
@@ -0,0 +1,61 @@
1
+ import { ref, watch, type Ref } from 'vue'
2
+
3
+ export type ViewMode = 'month' | 'year' | 'months' | undefined
4
+
5
+ export interface ViewModeReturn {
6
+ currentViewMode: Ref<ViewMode>
7
+ handleViewModeUpdate: (newMode: ViewMode) => void
8
+ handleYearUpdate: () => void
9
+ handleMonthUpdate: () => void
10
+ resetViewMode: () => void
11
+ }
12
+
13
+ /**
14
+ * Composable pour gérer le mode d'affichage du DatePicker (année, mois, jour)
15
+ * Utilisé pour contrôler le comportement du DatePicker, notamment pour les dates de naissance
16
+ *
17
+ * @param isBirthDateGetter - Une fonction qui retourne la valeur actuelle de isBirthDate
18
+ */
19
+ export function useDatePickerViewMode(isBirthDateGetter: () => boolean): ViewModeReturn {
20
+ // Variable pour suivre le mode d'affichage actuel du DatePicker
21
+ const currentViewMode = ref<ViewMode>(isBirthDateGetter() ? 'year' : 'month')
22
+
23
+ // Mettre à jour le mode d'affichage quand isBirthDate change
24
+ watch(isBirthDateGetter, (newValue) => {
25
+ currentViewMode.value = newValue ? 'year' : 'month'
26
+ })
27
+
28
+ // Fonction pour gérer le changement de mode d'affichage
29
+ const handleViewModeUpdate = (newMode: ViewMode) => {
30
+ currentViewMode.value = newMode
31
+ }
32
+
33
+ // Fonction pour gérer la sélection de l'année quand isBirthDate est true
34
+ const handleYearUpdate = () => {
35
+ if (isBirthDateGetter()) {
36
+ // Après la sélection de l'année, passer automatiquement à la sélection du mois
37
+ currentViewMode.value = 'months'
38
+ }
39
+ }
40
+
41
+ // Fonction pour gérer la sélection du mois quand isBirthDate est true
42
+ const handleMonthUpdate = () => {
43
+ if (isBirthDateGetter()) {
44
+ // Après la sélection du mois, passer automatiquement à la sélection du jour
45
+ currentViewMode.value = undefined
46
+ }
47
+ }
48
+
49
+ // Fonction pour réinitialiser le mode d'affichage (utile lors de la fermeture du DatePicker)
50
+ const resetViewMode = () => {
51
+ currentViewMode.value = isBirthDateGetter() ? 'year' : 'month'
52
+ }
53
+
54
+ return {
55
+ currentViewMode,
56
+ handleViewModeUpdate,
57
+ handleYearUpdate,
58
+ handleMonthUpdate,
59
+ resetViewMode,
60
+ }
61
+ }
@@ -0,0 +1,146 @@
1
+ import { type Ref, nextTick, onMounted, onBeforeUnmount } from 'vue'
2
+
3
+ /**
4
+ * Composable pour gérer la visibilité et les interactions avec le DatePicker
5
+ *
6
+ * @param options - Options de configuration
7
+ * @returns Fonctions pour gérer la visibilité du DatePicker
8
+ */
9
+ export const useDatePickerVisibility = (options: {
10
+ // Propriétés de configuration
11
+ disabled?: boolean
12
+ readonly?: boolean
13
+ textFieldActivator?: boolean
14
+
15
+ // Références réactives
16
+ isDatePickerVisible: Ref<boolean>
17
+ isManualInputActive: Ref<boolean>
18
+ hasInteracted: Ref<boolean>
19
+
20
+ // Fonctions
21
+ updateAccessibility: () => void
22
+ validateDates: () => void
23
+
24
+ // Émetteurs d'événements
25
+ emitClosed: () => void
26
+ emitFocus: () => void
27
+ }) => {
28
+ const {
29
+ disabled = false,
30
+ readonly = false,
31
+ textFieldActivator = false,
32
+ isDatePickerVisible,
33
+ isManualInputActive,
34
+ hasInteracted,
35
+ updateAccessibility,
36
+ validateDates,
37
+ emitClosed,
38
+ emitFocus,
39
+ } = options
40
+
41
+ /**
42
+ * Bascule l'affichage du DatePicker
43
+ */
44
+ const toggleDatePicker = () => {
45
+ if (disabled || readonly) return
46
+
47
+ isDatePickerVisible.value = !isDatePickerVisible.value
48
+
49
+ if (isDatePickerVisible.value) {
50
+ // Mettre à jour l'accessibilité après l'ouverture du DatePicker
51
+ nextTick(() => {
52
+ updateAccessibility()
53
+ })
54
+ }
55
+ else {
56
+ emitClosed()
57
+ validateDates()
58
+ }
59
+ }
60
+
61
+ /**
62
+ * Ouvre le DatePicker s'il n'est pas déjà visible
63
+ */
64
+ const openDatePicker = () => {
65
+ if (!isDatePickerVisible.value) {
66
+ toggleDatePicker()
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Ouvre le DatePicker lors d'un clic sur le champ de texte
72
+ */
73
+ const openDatePickerOnClick = () => {
74
+ if (textFieldActivator) {
75
+ openDatePicker()
76
+ }
77
+ }
78
+
79
+ /**
80
+ * Gère le focus sur le champ de texte
81
+ */
82
+ const openDatePickerOnFocus = () => {
83
+ // Only open the DatePicker if textFieldActivator is true
84
+ if (textFieldActivator) {
85
+ openDatePicker()
86
+ }
87
+ // Always emit the focus event
88
+ emitFocus()
89
+ isManualInputActive.value = true
90
+ hasInteracted.value = true
91
+ }
92
+
93
+ /**
94
+ * Gère le clic sur l'icône du DatePicker
95
+ */
96
+ const openDatePickerOnIconClick = () => {
97
+ toggleDatePicker()
98
+ }
99
+
100
+ /**
101
+ * Gère les clics en dehors du DatePicker pour le fermer
102
+ */
103
+ const handleClickOutside = (event: MouseEvent) => {
104
+ if (!isDatePickerVisible.value) return
105
+
106
+ const target = event.target as HTMLElement
107
+ const container = target.closest('.date-picker-container')
108
+
109
+ // Si on clique dans le conteneur du DatePicker, on ne fait rien
110
+ if (container) return
111
+ emitClosed()
112
+ // Déclencher la validation à la fermeture
113
+ validateDates()
114
+ }
115
+
116
+ // Gestion des événements de clic en dehors du DatePicker
117
+ onMounted(() => {
118
+ document.addEventListener('click', handleClickOutside)
119
+ })
120
+
121
+ onBeforeUnmount(() => {
122
+ document.removeEventListener('click', handleClickOutside)
123
+ })
124
+
125
+ /**
126
+ * Gère l'ouverture du DatePicker lors de l'appui sur Entrée ou Espace
127
+ */
128
+ const handleKeyboardNavigation = (event: KeyboardEvent) => {
129
+ if ((event.key === 'Enter' || event.key === ' ') && !disabled && !readonly) {
130
+ event.preventDefault() // Empêcher le comportement par défaut
131
+ openDatePicker()
132
+ return true
133
+ }
134
+ return false
135
+ }
136
+
137
+ return {
138
+ toggleDatePicker,
139
+ openDatePicker,
140
+ openDatePickerOnClick,
141
+ openDatePickerOnFocus,
142
+ openDatePickerOnIconClick,
143
+ handleClickOutside,
144
+ handleKeyboardNavigation,
145
+ }
146
+ }