@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,233 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest'
2
+ import { ref } from 'vue'
3
+ import { useManualDateValidation } from '../useManualDateValidation'
4
+
5
+ describe('useManualDateValidation', () => {
6
+ // Mocks et setup
7
+ const mockClearValidation = vi.fn()
8
+ const mockValidateDateFormat = vi.fn()
9
+ const mockIsDateComplete = vi.fn()
10
+ const mockParseDate = vi.fn()
11
+ const mockValidateField = vi.fn()
12
+ const hasInteracted = ref(false)
13
+ const errors = ref<string[]>([])
14
+
15
+ beforeEach(() => {
16
+ // Réinitialiser les mocks et les refs avant chaque test
17
+ mockClearValidation.mockReset()
18
+ mockValidateDateFormat.mockReset()
19
+ mockIsDateComplete.mockReset()
20
+ mockParseDate.mockReset()
21
+ mockValidateField.mockReset()
22
+ hasInteracted.value = false
23
+ errors.value = []
24
+ })
25
+
26
+ it('devrait appeler clearValidation lors de la validation', () => {
27
+ const { validateManualInput } = useManualDateValidation({
28
+ format: 'DD/MM/YYYY',
29
+ hasInteracted,
30
+ errors,
31
+ clearValidation: mockClearValidation,
32
+ validateDateFormat: mockValidateDateFormat,
33
+ isDateComplete: mockIsDateComplete,
34
+ parseDate: mockParseDate,
35
+ validateField: mockValidateField,
36
+ })
37
+
38
+ validateManualInput('01/01/2023')
39
+
40
+ expect(mockClearValidation).toHaveBeenCalledTimes(1)
41
+ })
42
+
43
+ it('devrait retourner false et ajouter une erreur si le champ est requis, vide et l\'utilisateur a interagi', () => {
44
+ hasInteracted.value = true
45
+
46
+ const { validateManualInput } = useManualDateValidation({
47
+ format: 'DD/MM/YYYY',
48
+ required: true,
49
+ hasInteracted,
50
+ errors,
51
+ clearValidation: mockClearValidation,
52
+ validateDateFormat: mockValidateDateFormat,
53
+ isDateComplete: mockIsDateComplete,
54
+ parseDate: mockParseDate,
55
+ validateField: mockValidateField,
56
+ })
57
+
58
+ const result = validateManualInput('')
59
+
60
+ expect(result).toBe(false)
61
+ expect(errors.value).toContain('La date est requise.')
62
+ })
63
+
64
+ it('devrait retourner true si le champ est vide et non requis', () => {
65
+ const { validateManualInput } = useManualDateValidation({
66
+ format: 'DD/MM/YYYY',
67
+ required: false,
68
+ hasInteracted,
69
+ errors,
70
+ clearValidation: mockClearValidation,
71
+ validateDateFormat: mockValidateDateFormat,
72
+ isDateComplete: mockIsDateComplete,
73
+ parseDate: mockParseDate,
74
+ validateField: mockValidateField,
75
+ })
76
+
77
+ const result = validateManualInput('')
78
+
79
+ expect(result).toBe(true)
80
+ expect(errors.value).toHaveLength(0)
81
+ })
82
+
83
+ it('devrait retourner true si la saisie n\'est pas complète', () => {
84
+ mockIsDateComplete.mockReturnValue(false)
85
+
86
+ const { validateManualInput } = useManualDateValidation({
87
+ format: 'DD/MM/YYYY',
88
+ hasInteracted,
89
+ errors,
90
+ clearValidation: mockClearValidation,
91
+ validateDateFormat: mockValidateDateFormat,
92
+ isDateComplete: mockIsDateComplete,
93
+ parseDate: mockParseDate,
94
+ validateField: mockValidateField,
95
+ })
96
+
97
+ const result = validateManualInput('01/01')
98
+
99
+ expect(result).toBe(true)
100
+ expect(errors.value).toHaveLength(0)
101
+ })
102
+
103
+ it('devrait retourner false et ajouter une erreur si le format est invalide', () => {
104
+ mockIsDateComplete.mockReturnValue(true)
105
+ mockValidateDateFormat.mockReturnValue({ isValid: false, message: 'Format de date invalide (DD/MM/YYYY)' })
106
+
107
+ const { validateManualInput } = useManualDateValidation({
108
+ format: 'DD/MM/YYYY',
109
+ hasInteracted,
110
+ errors,
111
+ clearValidation: mockClearValidation,
112
+ validateDateFormat: mockValidateDateFormat,
113
+ isDateComplete: mockIsDateComplete,
114
+ parseDate: mockParseDate,
115
+ validateField: mockValidateField,
116
+ })
117
+
118
+ const result = validateManualInput('32/01/2023')
119
+
120
+ expect(result).toBe(false)
121
+ expect(errors.value).toContain('Format de date invalide (DD/MM/YYYY)')
122
+ })
123
+
124
+ it('ne devrait pas ajouter d\'erreur si disableErrorHandling=true', () => {
125
+ mockIsDateComplete.mockReturnValue(true)
126
+ mockValidateDateFormat.mockReturnValue({ isValid: false, message: 'Format de date invalide (DD/MM/YYYY)' })
127
+
128
+ const { validateManualInput } = useManualDateValidation({
129
+ format: 'DD/MM/YYYY',
130
+ disableErrorHandling: true,
131
+ hasInteracted,
132
+ errors,
133
+ clearValidation: mockClearValidation,
134
+ validateDateFormat: mockValidateDateFormat,
135
+ isDateComplete: mockIsDateComplete,
136
+ parseDate: mockParseDate,
137
+ validateField: mockValidateField,
138
+ })
139
+
140
+ validateManualInput('32/01/2023')
141
+
142
+ expect(errors.value).toHaveLength(0)
143
+ })
144
+
145
+ it('devrait retourner false et ajouter une erreur si la date ne peut pas être parsée', () => {
146
+ mockIsDateComplete.mockReturnValue(true)
147
+ mockValidateDateFormat.mockReturnValue({ isValid: true, message: '' })
148
+ mockParseDate.mockReturnValue(null)
149
+
150
+ const { validateManualInput } = useManualDateValidation({
151
+ format: 'DD/MM/YYYY',
152
+ hasInteracted,
153
+ errors,
154
+ clearValidation: mockClearValidation,
155
+ validateDateFormat: mockValidateDateFormat,
156
+ isDateComplete: mockIsDateComplete,
157
+ parseDate: mockParseDate,
158
+ validateField: mockValidateField,
159
+ })
160
+
161
+ const result = validateManualInput('01/01/2023')
162
+
163
+ expect(result).toBe(false)
164
+ expect(errors.value).toContain('Format de date invalide (DD/MM/YYYY)')
165
+ })
166
+
167
+ it('devrait appeler validateField avec les règles personnalisées', () => {
168
+ const date = new Date('2023-01-01')
169
+ const customRules = [{ type: 'custom', options: {} }]
170
+ const customWarningRules = [{ type: 'warning', options: {} }]
171
+
172
+ mockIsDateComplete.mockReturnValue(true)
173
+ mockValidateDateFormat.mockReturnValue({ isValid: true, message: '' })
174
+ mockParseDate.mockReturnValue(date)
175
+ mockValidateField.mockReturnValue({ valid: true })
176
+
177
+ const { validateManualInput } = useManualDateValidation({
178
+ format: 'DD/MM/YYYY',
179
+ customRules,
180
+ customWarningRules,
181
+ hasInteracted,
182
+ errors,
183
+ clearValidation: mockClearValidation,
184
+ validateDateFormat: mockValidateDateFormat,
185
+ isDateComplete: mockIsDateComplete,
186
+ parseDate: mockParseDate,
187
+ validateField: mockValidateField,
188
+ })
189
+
190
+ validateManualInput('01/01/2023')
191
+
192
+ expect(mockValidateField).toHaveBeenCalledWith(date, customRules, customWarningRules)
193
+ })
194
+
195
+ it('devrait retourner le résultat de validateField', () => {
196
+ mockIsDateComplete.mockReturnValue(true)
197
+ mockValidateDateFormat.mockReturnValue({ isValid: true, message: '' })
198
+ mockParseDate.mockReturnValue(new Date('2023-01-01'))
199
+
200
+ // Cas où validateField retourne un résultat sans erreur
201
+ mockValidateField.mockReturnValue({
202
+ hasError: false,
203
+ hasWarning: false,
204
+ hasSuccess: true,
205
+ state: { errors: [], warnings: [], successes: ['Valide'] },
206
+ })
207
+
208
+ const { validateManualInput } = useManualDateValidation({
209
+ format: 'DD/MM/YYYY',
210
+ hasInteracted,
211
+ errors,
212
+ clearValidation: mockClearValidation,
213
+ validateDateFormat: mockValidateDateFormat,
214
+ isDateComplete: mockIsDateComplete,
215
+ parseDate: mockParseDate,
216
+ validateField: mockValidateField,
217
+ })
218
+
219
+ let result = validateManualInput('01/01/2023')
220
+ expect(result).toBe(true)
221
+
222
+ // Cas où validateField retourne un résultat avec erreur
223
+ mockValidateField.mockReturnValue({
224
+ hasError: true,
225
+ hasWarning: false,
226
+ hasSuccess: false,
227
+ state: { errors: ['Erreur'], warnings: [], successes: [] },
228
+ })
229
+
230
+ result = validateManualInput('01/01/2023')
231
+ expect(result).toBe(false)
232
+ })
233
+ })
@@ -0,0 +1,125 @@
1
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
2
+ import { ref, nextTick, type Ref } from 'vue'
3
+ import { useMonthButtonCustomization } from '../useMonthButtonCustomization'
4
+
5
+ describe('useMonthButtonCustomization', () => {
6
+ let isPickerVisibleGetter: () => boolean
7
+ // Définir explicitement le type pour éviter les erreurs de compatibilité
8
+ let monthName: Ref<string | null>
9
+ let yearName: Ref<string | null>
10
+
11
+ beforeEach(() => {
12
+ // Réinitialiser les refs pour chaque test avec le type exact attendu par le composable
13
+ monthName = ref<string | null>(null)
14
+ yearName = ref<string | null>(null)
15
+
16
+ document.body.innerHTML = `
17
+ <div class="v-date-picker-controls">
18
+ <button class="v-date-picker-controls__month-btn">janvier 2023</button>
19
+ <button class="v-date-picker-controls__mode-btn">2023</button>
20
+ </div>
21
+ `
22
+ isPickerVisibleGetter = () => true
23
+ })
24
+
25
+ afterEach(() => {
26
+ document.body.innerHTML = ''
27
+ })
28
+
29
+ // Test de l'affichage des mois personnalisés via les noms de mois fournis
30
+ it('personnalise correctement les noms de mois (janvier -> Janv.)', async () => {
31
+ monthName.value = 'janvier'
32
+ const { customizeMonthButton } = useMonthButtonCustomization(
33
+ isPickerVisibleGetter,
34
+ monthName,
35
+ )
36
+
37
+ await customizeMonthButton()
38
+ await nextTick()
39
+
40
+ const monthBtn = document.querySelector('.v-date-picker-controls__month-btn')!
41
+ expect(monthBtn.textContent).toContain('Janv.')
42
+ })
43
+
44
+ it('personnalise correctement les noms de mois (février -> Févr.)', async () => {
45
+ monthName.value = 'février'
46
+ const { customizeMonthButton } = useMonthButtonCustomization(
47
+ isPickerVisibleGetter,
48
+ monthName,
49
+ )
50
+
51
+ await customizeMonthButton()
52
+ await nextTick()
53
+
54
+ const monthBtn = document.querySelector('.v-date-picker-controls__month-btn')!
55
+ expect(monthBtn.textContent).toContain('Févr.')
56
+ })
57
+
58
+ it('capitalise le premier caractère si le mois n\'est pas reconnu', async () => {
59
+ monthName.value = 'pluviose'
60
+ const { customizeMonthButton } = useMonthButtonCustomization(
61
+ isPickerVisibleGetter,
62
+ monthName,
63
+ )
64
+
65
+ await customizeMonthButton()
66
+ await nextTick()
67
+
68
+ const monthBtn = document.querySelector('.v-date-picker-controls__month-btn')!
69
+ expect(monthBtn.textContent).toContain('Pluviose')
70
+ })
71
+
72
+ it('customise les boutons du mois et de l’année', async () => {
73
+ // S'assurer que monthName est null pour ce test
74
+ monthName.value = null
75
+
76
+ const { customizeMonthButton, monthButtonText } = useMonthButtonCustomization(
77
+ isPickerVisibleGetter,
78
+ monthName,
79
+ yearName,
80
+ )
81
+
82
+ await customizeMonthButton()
83
+ await nextTick()
84
+
85
+ const monthBtn = document.querySelector('.v-date-picker-controls__month-btn')!
86
+ const yearBtn = document.querySelector('.v-date-picker-controls__mode-btn')!
87
+
88
+ expect(monthBtn.innerHTML).toContain('<svg') // icône ajoutée
89
+ expect(monthBtn.textContent).toContain('Janv.') // mois transformé
90
+ expect(monthButtonText.value).toBe('janvier 2023')
91
+
92
+ expect(yearBtn.innerHTML).toContain('2023')
93
+ expect(yearBtn.innerHTML).toContain('<svg')
94
+ })
95
+
96
+ it('utilise monthName et yearName si fournis', async () => {
97
+ monthName.value = 'mars'
98
+ yearName.value = '2030'
99
+
100
+ const { customizeMonthButton } = useMonthButtonCustomization(
101
+ isPickerVisibleGetter,
102
+ monthName,
103
+ yearName,
104
+ )
105
+
106
+ await customizeMonthButton()
107
+ await nextTick()
108
+
109
+ const monthBtn = document.querySelector('.v-date-picker-controls__month-btn')!
110
+ const yearBtn = document.querySelector('.v-date-picker-controls__mode-btn')!
111
+
112
+ expect(monthBtn.textContent).toContain('Mars')
113
+ expect(yearBtn.textContent).toContain('2030')
114
+ })
115
+
116
+ it('observe les changements du DOM et personnalise automatiquement', async () => {
117
+ const { setupMonthButtonObserver } = useMonthButtonCustomization(() => true)
118
+ const spy = vi.spyOn(document, 'querySelectorAll')
119
+
120
+ setupMonthButtonObserver()
121
+ await nextTick()
122
+
123
+ expect(spy).toHaveBeenCalledWith('.v-date-picker-controls')
124
+ })
125
+ })
@@ -0,0 +1,97 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest'
2
+ import { useTodayButton } from '../useTodayButton'
3
+
4
+ // Mock pour dayjs
5
+ vi.mock('dayjs', () => {
6
+ return {
7
+ default: vi.fn(() => ({
8
+ locale: vi.fn().mockReturnThis(),
9
+ format: vi.fn().mockReturnValue('lundi 1 janvier'),
10
+ })),
11
+ }
12
+ })
13
+
14
+ describe('useTodayButton', () => {
15
+ beforeEach(() => {
16
+ vi.clearAllMocks()
17
+ })
18
+
19
+ it('devrait initialiser correctement', () => {
20
+ const { selectToday } = useTodayButton({})
21
+ // Vérifier que la fonction selectToday est définie
22
+ expect(selectToday).toBeDefined()
23
+ })
24
+
25
+ it('devrait sélectionner la date du jour lorsque selectToday est appelé', () => {
26
+ const { selectToday } = useTodayButton({})
27
+
28
+ const selectedDates = { value: null }
29
+ selectToday(selectedDates)
30
+
31
+ // Vérifier que selectedDates a été mis à jour
32
+ expect(selectedDates.value).not.toBeNull()
33
+ })
34
+
35
+ it('devrait formater la date du jour correctement', () => {
36
+ const { todayInString } = useTodayButton({})
37
+
38
+ // Vérifier que le computed todayInString est défini
39
+ expect(todayInString.value).toBeDefined()
40
+ })
41
+
42
+ describe('todayInString', () => {
43
+ it('devrait retourner la date du jour formatée avec la première lettre en majuscule', () => {
44
+ const { todayInString } = useTodayButton({})
45
+
46
+ // Vérifier que la valeur de todayInString est définie
47
+ expect(todayInString.value).toBeDefined()
48
+ })
49
+ })
50
+
51
+ describe('selectToday', () => {
52
+ it('devrait définir selectedDates à la date du jour en mode date unique', () => {
53
+ // Créer une date fixe pour le test
54
+ const fixedDate = new Date('2023-01-01')
55
+ // Espionner le constructeur Date pour qu'il retourne notre date fixe
56
+ vi.spyOn(global, 'Date').mockImplementation(() => fixedDate)
57
+
58
+ const { selectToday } = useTodayButton({
59
+ displayRange: false,
60
+ })
61
+
62
+ const selectedDates = { value: null }
63
+ selectToday(selectedDates)
64
+
65
+ expect(selectedDates.value).toBeDefined()
66
+ expect(selectedDates.value).toEqual(fixedDate)
67
+
68
+ // Restaurer le mock
69
+ vi.restoreAllMocks()
70
+ })
71
+
72
+ it('devrait définir selectedDates à un tableau avec deux fois la date du jour en mode plage', () => {
73
+ // Créer une date fixe pour le test
74
+ const fixedDate = new Date('2023-01-01')
75
+ // Espionner le constructeur Date pour qu'il retourne notre date fixe
76
+ vi.spyOn(global, 'Date').mockImplementation(() => fixedDate)
77
+
78
+ const { selectToday } = useTodayButton({
79
+ displayRange: true,
80
+ })
81
+
82
+ const selectedDates = { value: null }
83
+ selectToday(selectedDates)
84
+
85
+ expect(Array.isArray(selectedDates.value)).toBe(true)
86
+ expect(selectedDates.value).toHaveLength(2)
87
+ // Ajouter une vérification non-null pour satisfaire TypeScript
88
+ if (selectedDates.value) {
89
+ expect(selectedDates.value[0]).toEqual(fixedDate)
90
+ expect(selectedDates.value[1]).toEqual(fixedDate)
91
+ }
92
+
93
+ // Restaurer le mock
94
+ vi.restoreAllMocks()
95
+ })
96
+ })
97
+ })
@@ -0,0 +1,28 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import { useWeekendDays } from '../useWeekendDays'
3
+
4
+ describe('useWeekendDays', () => {
5
+ describe('displayWeekendDays', () => {
6
+ it('devrait retourner true par défaut', () => {
7
+ const { displayWeekendDays } = useWeekendDays({})
8
+
9
+ expect(displayWeekendDays.value).toBe(true)
10
+ })
11
+
12
+ it('devrait retourner true si displayWeekendDays=true', () => {
13
+ const { displayWeekendDays } = useWeekendDays({
14
+ displayWeekendDays: true,
15
+ })
16
+
17
+ expect(displayWeekendDays.value).toBe(true)
18
+ })
19
+
20
+ it('devrait retourner false si displayWeekendDays=false', () => {
21
+ const { displayWeekendDays } = useWeekendDays({
22
+ displayWeekendDays: false,
23
+ })
24
+
25
+ expect(displayWeekendDays.value).toBe(false)
26
+ })
27
+ })
28
+ })
@@ -0,0 +1,31 @@
1
+ import { computed } from 'vue'
2
+
3
+ /**
4
+ * Composable pour gérer l'affichage d'un astérisque à côté du label
5
+ * @param props - Les propriétés du composant contenant displayAsterisk et required
6
+ * @param labelProp - Le nom de la propriété contenant le label (par défaut: 'label')
7
+ * @returns Un objet contenant isShouldDisplayAsterisk et labelWithAsterisk
8
+ */
9
+ export const useAsteriskDisplay = (
10
+ props: { displayAsterisk?: boolean, required?: boolean, [key: string]: unknown },
11
+ labelProp = 'label',
12
+ ) => {
13
+ // Détermine si l'astérisque doit être affiché
14
+ const isShouldDisplayAsterisk = computed(() => {
15
+ return props.displayAsterisk && props.required
16
+ })
17
+
18
+ // Ajoute l'astérisque au label si nécessaire
19
+ const labelWithAsterisk = computed(() => {
20
+ // Assertion de type pour indiquer que props[labelProp] est de type string | undefined
21
+ const label = props[labelProp] as string | undefined
22
+ return isShouldDisplayAsterisk.value && label
23
+ ? `${label} *`
24
+ : label
25
+ })
26
+
27
+ return {
28
+ isShouldDisplayAsterisk,
29
+ labelWithAsterisk,
30
+ }
31
+ }
@@ -0,0 +1,136 @@
1
+ import dayjs from 'dayjs'
2
+ import customParseFormat from 'dayjs/plugin/customParseFormat'
3
+
4
+ // Initialiser les plugins dayjs
5
+ dayjs.extend(customParseFormat)
6
+
7
+ /**
8
+ * Composable pour gérer l'auto-clamping des dates invalides
9
+ * Cette fonctionnalité permet de ramener automatiquement les dates invalides
10
+ * (comme le 29/02 sur une année non bissextile ou 33/12) au dernier jour valide du mois
11
+ */
12
+ export const useDateAutoClamp = () => {
13
+ /**
14
+ * Ajuste une date pour qu'elle soit valide en ramenant les jours invalides
15
+ * au dernier jour du mois correspondant
16
+ *
17
+ * @param day - Le jour à ajuster
18
+ * @param month - Le mois (0-11)
19
+ * @param year - L'année
20
+ * @returns Un objet contenant le jour ajusté et un booléen indiquant si un ajustement a été fait
21
+ */
22
+ const clampDayToValidDate = (day: number, month: number, year: number): { day: number, adjusted: boolean } => {
23
+ // Vérifier si le jour est valide pour ce mois et cette année
24
+ // Créer une date pour le premier jour du mois et obtenir le nombre de jours dans ce mois
25
+ const dateObj = dayjs(`${year}-${month + 1}-01`)
26
+ const daysInMonth = dateObj.daysInMonth()
27
+
28
+ // Si le jour est supérieur au nombre de jours dans le mois, le ramener au dernier jour du mois
29
+ if (day > daysInMonth) {
30
+ return { day: daysInMonth, adjusted: true }
31
+ }
32
+
33
+ return { day, adjusted: false }
34
+ }
35
+
36
+ /**
37
+ * Ajuste une date complète pour qu'elle soit valide
38
+ *
39
+ * @param dateStr - La chaîne de date à ajuster
40
+ * @param format - Le format de la date (ex: 'DD/MM/YYYY')
41
+ * @returns Un objet contenant la date ajustée et un booléen indiquant si un ajustement a été fait
42
+ */
43
+ const autoClampDate = (dateStr: string, format: string): { clampedDate: string, adjusted: boolean } => {
44
+ // Si la chaîne est vide, retourner telle quelle
45
+ if (!dateStr) {
46
+ return { clampedDate: dateStr, adjusted: false }
47
+ }
48
+
49
+ // Déterminer le séparateur utilisé dans le format
50
+ const separator = format.match(/[^DMY]/)?.[0] || '/'
51
+
52
+ // Extraire les parties du format pour déterminer l'ordre (jour, mois, année)
53
+ const formatParts = format.split(separator)
54
+ const dateParts = dateStr.split(separator)
55
+
56
+ // Si le nombre de parties ne correspond pas, retourner la chaîne originale
57
+ if (formatParts.length !== dateParts.length) {
58
+ return { clampedDate: dateStr, adjusted: false }
59
+ }
60
+
61
+ let day = -1
62
+ let month = -1
63
+ let year = -1
64
+
65
+ // Extraire les valeurs de jour, mois et année selon le format
66
+ for (let i = 0; i < formatParts.length; i++) {
67
+ const formatPart = formatParts[i].toUpperCase()
68
+ const value = parseInt(dateParts[i], 10)
69
+
70
+ if (isNaN(value)) {
71
+ return { clampedDate: dateStr, adjusted: false }
72
+ }
73
+
74
+ if (formatPart.startsWith('D')) {
75
+ day = value
76
+ }
77
+ else if (formatPart.startsWith('M')) {
78
+ month = value - 1 // Convertir en index de mois (0-11)
79
+ }
80
+ else if (formatPart.startsWith('Y')) {
81
+ year = value
82
+ }
83
+ }
84
+
85
+ // Vérifier si toutes les parties nécessaires ont été trouvées
86
+ if (day === -1 || month === -1 || year === -1) {
87
+ return { clampedDate: dateStr, adjusted: false }
88
+ }
89
+
90
+ // Vérifier si nous avons une date valide
91
+ if (month < 0 || month > 11 || year < 0 || day < 1) {
92
+ return { clampedDate: dateStr, adjusted: false }
93
+ }
94
+
95
+ // Calculer directement le nombre de jours dans le mois
96
+ const daysInMonth = dayjs(new Date(year, month, 1)).daysInMonth()
97
+
98
+ // Ajuster le jour si nécessaire
99
+ let adjusted = false
100
+ let clampedDay = day
101
+
102
+ if (day > daysInMonth) {
103
+ clampedDay = daysInMonth
104
+ adjusted = true
105
+ }
106
+
107
+ // Si aucun ajustement n'a été fait, retourner la chaîne originale
108
+ if (!adjusted) {
109
+ return { clampedDate: dateStr, adjusted: false }
110
+ }
111
+
112
+ // Reconstruire la chaîne de date avec le jour ajusté
113
+ const newDateParts = [...dateParts]
114
+ for (let i = 0; i < formatParts.length; i++) {
115
+ const formatPart = formatParts[i].toUpperCase()
116
+ if (formatPart.startsWith('D')) {
117
+ // Formater le jour avec le bon nombre de chiffres (01 ou 1 selon le format)
118
+ newDateParts[i] = formatPart.length > 1
119
+ ? clampedDay.toString().padStart(2, '0')
120
+ : clampedDay.toString()
121
+ }
122
+ }
123
+
124
+ return {
125
+ clampedDate: newDateParts.join(separator),
126
+ adjusted: true,
127
+ }
128
+ }
129
+
130
+ return {
131
+ autoClampDate,
132
+ clampDayToValidDate,
133
+ }
134
+ }
135
+
136
+ export default useDateAutoClamp