@cnamts/synapse 1.0.25 → 1.0.27

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 (393) hide show
  1. package/dist/{AutocompleteFilter-D7qBuCAP.js → AutocompleteFilter-C9eLKyW8.js} +3 -3
  2. package/dist/{DateFilter-BitMWrMU.js → DateFilter-y-GLkAkn.js} +9 -9
  3. package/dist/{NumberFilter-BTLUxw0a.js → NumberFilter-DN6hIBS7.js} +1 -1
  4. package/dist/{PeriodFilter-B5rUIPAC.js → PeriodFilter-MoUUp9qS.js} +1 -1
  5. package/dist/{SelectFilter-l4QnRcuk.js → SelectFilter-bCbrdLmu.js} +1 -1
  6. package/dist/{TextFilter-C9hj6Qrp.js → TextFilter-CvjgEaoM.js} +4 -4
  7. package/dist/apLightTheme2026-ug4Y23ns.js +611 -0
  8. package/dist/components/Customs/Selects/SyAutocomplete/SyAutocomplete.d.ts +2369 -351
  9. package/dist/components/Customs/Selects/SyAutocomplete/composables/useSyAutocompleteValidation.d.ts +18 -0
  10. package/dist/components/Customs/Selects/SyAutocomplete/utils/ariaManager.d.ts +1 -1
  11. package/dist/components/Customs/Selects/SyAutocomplete/utils/useKeyboardHandler.d.ts +3 -1
  12. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +58 -288
  13. package/dist/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.d.ts +1 -0
  14. package/dist/components/Customs/Selects/SySelect/composables/useSySelectValidation.d.ts +15 -0
  15. package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +4 -3
  16. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +4 -3
  17. package/dist/components/Customs/SyIconButton/SyIconButton.d.ts +18 -0
  18. package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +20 -37
  19. package/dist/components/Customs/SyRadioGroup/composables/useSyRadioGroupValidation.d.ts +50 -0
  20. package/dist/components/Customs/SyTextField/SyTextField.d.ts +8 -10
  21. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +197 -185
  22. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +91 -82
  23. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +35 -32
  24. package/dist/components/DatePicker/composables/index.d.ts +1 -0
  25. package/dist/components/DatePicker/composables/useDatePickerState.d.ts +3 -3
  26. package/dist/components/DatePicker/composables/useDatePickerValidationBridge.d.ts +51 -0
  27. package/dist/components/DatePicker/composables/useDateTextField.d.ts +2 -2
  28. package/dist/components/DatePicker/composables/useInputBlurHandler.d.ts +2 -2
  29. package/dist/components/DatePicker/types.d.ts +1 -2
  30. package/dist/components/LunarCalendar/useLunarCalendarValidation.d.ts +1 -0
  31. package/dist/components/MonthPicker/MonthPicker.d.ts +24 -24
  32. package/dist/components/MonthPicker/MonthPickerText/MonthPickerInput.d.ts +24 -24
  33. package/dist/components/NirField/NirField.d.ts +64 -60
  34. package/dist/components/NirField/useNirValidation.d.ts +6 -2
  35. package/dist/components/PasswordField/PasswordField.d.ts +3 -3
  36. package/dist/components/PeriodField/PeriodField.d.ts +338 -314
  37. package/dist/components/PhoneField/PhoneField.d.ts +34 -24
  38. package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +0 -3
  39. package/dist/components/RatingPicker/EmotionPicker/EmotionPicker.d.ts +3 -1
  40. package/dist/components/RatingPicker/NumberPicker/NumberPicker.d.ts +4 -3
  41. package/dist/components/RatingPicker/RatingPicker.d.ts +18 -5
  42. package/dist/components/RatingPicker/StarsPicker/StarsPicker.d.ts +3 -1
  43. package/dist/components/RatingPicker/useRatingFocus.d.ts +18 -0
  44. package/dist/components/SyTextArea/SyTextArea.d.ts +25 -15
  45. package/dist/components/SyTextArea/composables/useSyTextAreaValidation.d.ts +20 -0
  46. package/dist/components/SyTextArea/locales.d.ts +1 -0
  47. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -4
  48. package/dist/components/Tables/SyTable/SyTable.d.ts +5 -4
  49. package/dist/components/Tables/common/SyTablePagination.d.ts +152 -364
  50. package/dist/components/Tables/common/TableHeader.d.ts +1 -1
  51. package/dist/components/Tables/common/filters/DateFilter.d.ts +4 -4
  52. package/dist/components/Tables/common/types.d.ts +2 -0
  53. package/dist/components/index.d.ts +1 -0
  54. package/dist/composables/date/useDateInitializationDayjs.d.ts +3 -1
  55. package/dist/composables/unifyValidation/documentationValidationProps.d.ts +160 -160
  56. package/dist/composables/unifyValidation/useCustomValidation.d.ts +3 -1
  57. package/dist/composables/unifyValidation/useValidation.d.ts +27 -19
  58. package/dist/composables/unifyValidation/useVuetifyValidation.d.ts +1 -1
  59. package/dist/composables/validation/useValidation.d.ts +1 -0
  60. package/dist/design-system-v3.js +81 -80
  61. package/dist/designTokens/tokens/amelipro/apContextual.d.ts +6 -6
  62. package/dist/designTokens/tokens/amelipro/apDarkTheme.d.ts +3 -1
  63. package/dist/designTokens/tokens/amelipro/apLightTheme.d.ts +53 -98
  64. package/dist/designTokens/tokens/baseContextualTokens.d.ts +0 -6
  65. package/dist/designTokens/tokens/baseTokens.d.ts +232 -0
  66. package/dist/designTokens/tokens/cnam/cnamContextual.d.ts +6 -6
  67. package/dist/designTokens/tokens/cnam/cnamDarkTheme.d.ts +1 -1
  68. package/dist/designTokens/tokens/cnam/cnamLightTheme.d.ts +57 -99
  69. package/dist/designTokens/tokens/pa/paContextual.d.ts +0 -6
  70. package/dist/designTokens/tokens/pa/paDarkTheme.d.ts +1 -1
  71. package/dist/designTokens/tokens/pa/paLightTheme.d.ts +53 -97
  72. package/dist/designTokens/tokens/pa/paSemantic.d.ts +1 -0
  73. package/dist/designTokens/tokens/semanticTokens.d.ts +112 -0
  74. package/dist/{main-Cpx8Co6H.js → main-CI6Q9nmO.js} +13843 -13478
  75. package/dist/synapse.css +1 -1
  76. package/dist/vuetifyConfig.js +208 -72
  77. package/package.json +10 -7
  78. package/src/assets/overrides/_icons.scss +5 -17
  79. package/src/assets/overrides/_otp.scss +4 -5
  80. package/src/assets/overrides/_typography.scss +2 -1
  81. package/src/assets/overrides/_utilities.scss +1 -42
  82. package/src/components/Accordion/Accordion.vue +2 -0
  83. package/src/components/ChipList/ChipList.vue +30 -18
  84. package/src/components/ChipList/tests/chipList.spec.ts +4 -4
  85. package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +2 -1
  86. package/src/components/CookiesSelection/CookiesSelection.vue +2 -1
  87. package/src/components/CopyBtn/CopyBtn.vue +9 -0
  88. package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.stories.ts +4 -0
  89. package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.vue +7 -6
  90. package/src/components/Customs/Selects/SelectBtnField/tests/SelectBtnField.spec.ts +223 -0
  91. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.stories.ts +283 -351
  92. package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.vue +183 -219
  93. package/src/components/Customs/Selects/SyAutocomplete/composables/useSyAutocompleteValidation.ts +101 -0
  94. package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.spec.ts +761 -1
  95. package/src/components/Customs/Selects/SyAutocomplete/utils/ariaManager.ts +3 -1
  96. package/src/components/Customs/Selects/SyAutocomplete/utils/useKeyboardHandler.ts +79 -5
  97. package/src/components/Customs/Selects/SyAutocomplete/validation/Validation.stories.ts +1029 -0
  98. package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +52 -217
  99. package/src/components/Customs/Selects/SySelect/SySelect.vue +248 -236
  100. package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +3 -0
  101. package/src/components/Customs/Selects/SySelect/composables/useSySelectValidation.ts +64 -0
  102. package/src/components/Customs/Selects/SySelect/tests/SySelect.spec.ts +440 -5
  103. package/src/components/Customs/Selects/SySelect/validation/Validation.stories.ts +1026 -0
  104. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.stories.ts +18 -7
  105. package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.vue +5 -5
  106. package/src/components/Customs/SyCheckbox/SyCheckbox.stories.ts +8 -8
  107. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +27 -6
  108. package/src/components/Customs/SyCheckbox/tests/SyCheckbox.spec.ts +1 -1
  109. package/src/components/Customs/SyIcon/accessibilite/Accessibility.mdx +0 -6
  110. package/src/components/Customs/SyIcon/utils/tests/iconUtils.spec.ts +107 -0
  111. package/src/components/Customs/SyRadioGroup/SyRadioGroup.mdx +2 -2
  112. package/src/components/Customs/SyRadioGroup/SyRadioGroup.stories.ts +395 -200
  113. package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +100 -127
  114. package/src/components/Customs/SyRadioGroup/composables/useSyRadioGroupValidation.ts +127 -0
  115. package/src/components/Customs/SyRadioGroup/tests/SyRadioGroup.a11y.spec.ts +93 -1
  116. package/src/components/Customs/SyRadioGroup/tests/SyRadioGroup.spec.ts +146 -9
  117. package/src/components/Customs/SyRadioGroup/tests/SyRadioGroup.visual.cy.ts +165 -0
  118. package/src/components/Customs/SyRadioGroup/validation/Validation.stories.ts +773 -0
  119. package/src/components/Customs/SyTabs/SyTabs.stories.ts +5 -5
  120. package/src/components/Customs/SyTabs/config.ts +3 -3
  121. package/src/components/Customs/SyTabs/tests/SyTabs.spec.ts +265 -0
  122. package/src/components/Customs/SyTabs/tests/useTabTransition.spec.ts +188 -0
  123. package/src/components/Customs/SyTextField/SyTextField.stories.ts +10 -29
  124. package/src/components/Customs/SyTextField/SyTextField.vue +52 -17
  125. package/src/components/DataList/DataList.stories.ts +1 -1
  126. package/src/components/DataListItem/tests/DataListItem.spec.ts +3 -1
  127. package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +1 -1
  128. package/src/components/DatePicker/CalendarMode/DatePicker.vue +52 -154
  129. package/src/components/DatePicker/CalendarMode/tests/DatePicker.coverage.spec.ts +156 -0
  130. package/src/components/DatePicker/CalendarMode/tests/DatePicker.spec.ts +495 -4
  131. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +1 -1
  132. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +55 -73
  133. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +207 -1
  134. package/src/components/DatePicker/ComplexDatePicker/tests/bridge-integration.regression.spec.ts +210 -0
  135. package/src/components/DatePicker/ComplexDatePicker/tests/calendar-navigation.regression.spec.ts +214 -0
  136. package/src/components/DatePicker/ComplexDatePicker/tests/validation-cross.regression.spec.ts +194 -0
  137. package/src/components/DatePicker/ComplexDatePicker/tests/validation-success-messages.regression.spec.ts +83 -0
  138. package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts +1 -1
  139. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +169 -60
  140. package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +1 -1
  141. package/src/components/DatePicker/DateTextInput/tests/DateTextInput.spec.ts +320 -0
  142. package/src/components/DatePicker/composables/index.ts +1 -0
  143. package/src/components/DatePicker/composables/tests/useCalendarKeyboardNavigation.spec.ts +360 -0
  144. package/src/components/DatePicker/composables/tests/useDatePickerValidationBridge.spec.ts +129 -0
  145. package/src/components/DatePicker/composables/useDatePickerState.ts +33 -14
  146. package/src/components/DatePicker/composables/useDatePickerValidationBridge.ts +205 -0
  147. package/src/components/DatePicker/composables/useDateRangeInput.ts +2 -1
  148. package/src/components/DatePicker/composables/useDateSelection.ts +2 -1
  149. package/src/components/DatePicker/composables/useDateTextField.ts +2 -2
  150. package/src/components/DatePicker/composables/useInputBlurHandler.ts +2 -2
  151. package/src/components/DatePicker/docExamples/BidirectionalComplexValidation.vue +1 -1
  152. package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +1 -1
  153. package/src/components/DatePicker/tests/exposed-methods.coverage.spec.ts +75 -0
  154. package/src/components/DatePicker/types.ts +1 -2
  155. package/src/components/DialogBox/DialogBox.stories.ts +8 -8
  156. package/src/components/DialogBox/DialogBox.vue +1 -1
  157. package/src/components/DialogBox/accessibilite/Accessibility.mdx +86 -22
  158. package/src/components/FileList/UploadItem/UploadItem.vue +4 -4
  159. package/src/components/FileUpload/FileUpload.vue +2 -2
  160. package/src/components/FileUpload/FileUploadContent.vue +1 -1
  161. package/src/components/FilterInline/FilterInline.mdx +2 -2
  162. package/src/components/FilterSideBar/FilterSideBar.stories.ts +1 -1
  163. package/src/components/FilterSideBar/FilterSideBar.vue +4 -3
  164. package/src/components/FooterBar/FooterBar.vue +7 -7
  165. package/src/components/FranceConnectBtn/FranceConnectBtn.vue +1 -1
  166. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.vue +2 -2
  167. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.vue +7 -7
  168. package/src/components/HeaderBar/HeaderMenuBtn/HeaderMenuBtn.vue +2 -2
  169. package/src/components/HeaderLoading/tests/HeaderLoading.spec.ts +87 -8
  170. package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +3 -3
  171. package/src/components/HeaderNavigationBar/HorizontalNavbar/tests/HorizontalNavbar.spec.ts +589 -0
  172. package/src/components/HeaderToolbar/tests/HeaderToolBar.spec.ts +153 -1
  173. package/src/components/HeaderToolbar/tests/useMobileRightMenu.spec.ts +258 -0
  174. package/src/components/LangBtn/LangBtn.vue +2 -1
  175. package/src/components/LogoBrandSection/tests/LogoBrandSection.spec.ts +2 -2
  176. package/src/components/LogoBrandSection/tests/__snapshots__/LogoBrandSection.spec.ts.snap +1 -1
  177. package/src/components/LunarCalendar/tests/useLunarCalendarRules.spec.ts +184 -0
  178. package/src/components/MonthPicker/MonthPickerVisual/MonthSelector.vue +3 -3
  179. package/src/components/MonthPicker/MonthPickerVisual/VisualPickerFooter.vue +1 -1
  180. package/src/components/MonthPicker/MonthPickerVisual/VisualPickerHeader.vue +2 -2
  181. package/src/components/MonthPicker/MonthPickerVisual/YearSelector.vue +1 -1
  182. package/src/components/NirField/NirField.vue +3 -3
  183. package/src/components/NotificationBar/Notification/Notification.vue +12 -12
  184. package/src/components/NotificationBar/NotificationBar.stories.ts +8 -8
  185. package/src/components/PaginatedTable/PaginatedTable.vue +1 -1
  186. package/src/components/PaginatedTable/Pagination.vue +3 -3
  187. package/src/components/PasswordField/PasswordField.vue +15 -11
  188. package/src/components/PasswordField/tests/PasswordField.spec.ts +3 -3
  189. package/src/components/PhoneField/PhoneField.vue +4 -2
  190. package/src/components/RangeField/RangeSlider/RangeSlider.vue +11 -18
  191. package/src/components/RangeField/RangeSlider/Tooltip/Tooltip.vue +1 -1
  192. package/src/components/RatingPicker/EmotionPicker/EmotionPicker.vue +32 -48
  193. package/src/components/RatingPicker/EmotionPicker/tests/__snapshots__/EmotionPicker.spec.ts.snap +5 -0
  194. package/src/components/RatingPicker/NumberPicker/NumberPicker.vue +48 -53
  195. package/src/components/RatingPicker/NumberPicker/tests/NumberPicker.spec.ts +2 -1
  196. package/src/components/RatingPicker/NumberPicker/tests/__snapshots__/NumberPicker.spec.ts.snap +40 -13
  197. package/src/components/RatingPicker/RatingPicker.stories.ts +65 -88
  198. package/src/components/RatingPicker/RatingPicker.vue +71 -15
  199. package/src/components/RatingPicker/StarsPicker/StarsPicker.vue +28 -37
  200. package/src/components/RatingPicker/StarsPicker/tests/StarsPicker.spec.ts +1 -1
  201. package/src/components/RatingPicker/StarsPicker/tests/__snapshots__/StarsPicker.spec.ts.snap +5 -0
  202. package/src/components/RatingPicker/accessibilite/Accessibility.mdx +137 -9
  203. package/src/components/RatingPicker/tests/RatingPicker.a11y.spec.ts +123 -0
  204. package/src/components/RatingPicker/tests/RatingPicker.spec.ts +3 -2
  205. package/src/components/RatingPicker/tests/__snapshots__/RatingPicker.spec.ts.snap +40 -11
  206. package/src/components/RatingPicker/useRatingFocus.ts +97 -0
  207. package/src/components/StatusPage/tests/StatusPage.spec.ts +149 -0
  208. package/src/components/SubHeader/SubHeader.vue +1 -1
  209. package/src/components/SyAlert/SyAlert.vue +23 -23
  210. package/src/components/SyTextArea/SyTextArea.stories.ts +177 -131
  211. package/src/components/SyTextArea/SyTextArea.vue +257 -74
  212. package/src/components/SyTextArea/composables/useSyTextAreaValidation.ts +81 -0
  213. package/src/components/SyTextArea/locales.ts +1 -0
  214. package/src/components/SyTextArea/tests/SyTextArea.spec.ts +449 -1
  215. package/src/components/SyTextArea/useDefaultValidationRules.ts +2 -7
  216. package/src/components/SyTextArea/validation/Validation.stories.ts +856 -0
  217. package/src/components/TableToolbar/TableToolbar.vue +6 -6
  218. package/src/components/TableToolbar/accessibilite/Accessibility.mdx +81 -7
  219. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +163 -0
  220. package/src/components/Tables/SyServerTable/SyServerTable.vue +3 -2
  221. package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +67 -0
  222. package/src/components/Tables/SyTable/SyTable.stories.ts +94 -0
  223. package/src/components/Tables/SyTable/SyTable.vue +3 -2
  224. package/src/components/Tables/SyTable/tests/SyTable.spec.ts +64 -0
  225. package/src/components/Tables/common/SyTableFilter.vue +4 -4
  226. package/src/components/Tables/common/SyTablePagination.vue +1 -0
  227. package/src/components/Tables/common/TableHeader.vue +3 -3
  228. package/src/components/Tables/common/filters/DateFilter.vue +2 -2
  229. package/src/components/Tables/common/filters/logics/tests/NumberFilterLogic.spec.ts +176 -0
  230. package/src/components/Tables/common/filters/logics/tests/SelectFilterLogic.spec.ts +111 -0
  231. package/src/components/Tables/common/tableStyles.scss +6 -6
  232. package/src/components/Tables/common/types.ts +2 -0
  233. package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +2 -0
  234. package/src/components/index.ts +1 -0
  235. package/src/composables/date/tests/useDateFormatDayjs.spec.ts +112 -0
  236. package/src/composables/date/tests/{useDateInitialization.spec.ts → useDateInitializationDayjs.spec.ts} +39 -3
  237. package/src/composables/date/tests/useHolidayDay.spec.ts +109 -0
  238. package/src/composables/date/useDateInitializationDayjs.ts +4 -1
  239. package/src/composables/rules/tests/useFieldValidation.spec.ts +374 -0
  240. package/src/composables/tests/useError.spec.ts +30 -0
  241. package/src/composables/tests/useFormFieldErrorHandling.spec.ts +234 -0
  242. package/src/composables/unifyValidation/documentationValidationProps.ts +12 -12
  243. package/src/composables/unifyValidation/tests/documentationValidationProps.spec.ts +177 -0
  244. package/src/composables/unifyValidation/tests/useCustomValidation.spec.ts +32 -1
  245. package/src/composables/unifyValidation/tests/useValidation.spec.ts +28 -2
  246. package/src/composables/unifyValidation/useCustomValidation.ts +34 -12
  247. package/src/composables/unifyValidation/useValidation.ts +55 -27
  248. package/src/composables/unifyValidation/useVuetifyValidation.ts +2 -2
  249. package/src/composables/useFilterable/useFilterable.spec.ts +42 -0
  250. package/src/composables/useFilterable/useFilterable.ts +11 -7
  251. package/src/composables/useFormFieldErrorHandling.ts +6 -3
  252. package/src/composables/validation/tests/useValidation.spec.ts +2 -2
  253. package/src/composables/validation/useValidation.ts +15 -3
  254. package/src/composantsVuetify/VBtn/VBtn.mdx +9 -39
  255. package/src/composantsVuetify/VBtn/v-btn.stories.ts +26 -86
  256. package/src/composantsVuetify/VCard/VCard.mdx +59 -0
  257. package/src/composantsVuetify/VCard/v-card.stories.ts +279 -0
  258. package/src/designTokens/tokens/amelipro/apColors2026.ts +1 -1
  259. package/src/designTokens/tokens/amelipro/apContextual.ts +6 -0
  260. package/src/designTokens/tokens/amelipro/apDarkTheme.ts +2 -2
  261. package/src/designTokens/tokens/amelipro/apLightTheme.ts +72 -100
  262. package/src/designTokens/tokens/amelipro/apSemantic.ts +1 -1
  263. package/src/designTokens/tokens/baseContextualTokens.ts +1 -6
  264. package/src/designTokens/tokens/baseTokens.ts +232 -0
  265. package/src/designTokens/tokens/cnam/cnamContextual.ts +6 -0
  266. package/src/designTokens/tokens/cnam/cnamDarkTheme.ts +2 -2
  267. package/src/designTokens/tokens/cnam/cnamLightTheme.ts +76 -101
  268. package/src/designTokens/tokens/pa/paDarkTheme.ts +2 -2
  269. package/src/designTokens/tokens/pa/paLightTheme.ts +73 -99
  270. package/src/designTokens/tokens/pa/paSemantic.ts +2 -0
  271. package/src/designTokens/tokens/semanticTokens.ts +114 -0
  272. package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +61 -91
  273. package/src/stories/Accessibilite/AuditDesignSystem.mdx +5 -8
  274. package/src/stories/Accessibilite/AuditEtContreAudit/Exemptions-derogations.mdx +1 -1
  275. package/src/stories/Accessibilite/AuditEtContreAudit/Introduction.mdx +11 -8
  276. package/src/stories/Accessibilite/AuditEtContreAudit/RGAA.mdx +6 -7
  277. package/src/stories/Accessibilite/Introduction.mdx +30 -30
  278. package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +168 -78
  279. package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +13 -6
  280. package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +66 -45
  281. package/src/stories/Accessibilite/KitDePreAudit/Outils/LecteursDEcran.mdx +23 -49
  282. package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/FauxPositifs.stories.ts +6 -0
  283. package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/Utilisation.mdx +7 -19
  284. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +18 -20
  285. package/src/stories/Components/Components.stories.ts +59 -6
  286. package/src/stories/DesignTokens/ColorIntegrationExample.vue +2 -3
  287. package/src/stories/DesignTokens/Colors.mdx +6 -8
  288. package/src/stories/DesignTokens/colors.stories.ts +244 -1081
  289. package/src/utils/amelipro/toKebabCase/tests/toKebabCase.spec.ts +52 -0
  290. package/src/utils/formatNir/tests/formatNir.spec.ts +34 -0
  291. package/src/utils/tests/insertAt.spec.ts +44 -0
  292. package/dist/AutocompleteFilter-Df9i5mAl.cjs +0 -1
  293. package/dist/DateFilter-BJD6FMev.cjs +0 -1
  294. package/dist/NumberFilter-DGCzCXzI.cjs +0 -1
  295. package/dist/PeriodFilter-DO_ecTZW.cjs +0 -1
  296. package/dist/SelectFilter-CGwcKWLm.cjs +0 -1
  297. package/dist/TextFilter-B8nf7xoK.cjs +0 -1
  298. package/dist/apLightTheme-CEK4iY3f.cjs +0 -1
  299. package/dist/apLightTheme-DnIM24Lv.js +0 -950
  300. package/dist/composables/date/useDateFormat.d.ts +0 -26
  301. package/dist/composables/date/useDateInitialization.d.ts +0 -18
  302. package/dist/design-system-v3.umd.cjs +0 -1
  303. package/dist/main-ByDPHpae.cjs +0 -1067
  304. package/dist/tooth-11-D3sLWv2n.cjs +0 -1
  305. package/dist/tooth-12-CXrLuH03.cjs +0 -1
  306. package/dist/tooth-13-BSfo5fpT.cjs +0 -1
  307. package/dist/tooth-14-DMzulx0h.cjs +0 -1
  308. package/dist/tooth-15-BKRFVi-9.cjs +0 -1
  309. package/dist/tooth-16-CpuxAbuM.cjs +0 -1
  310. package/dist/tooth-17-BPoahUdg.cjs +0 -1
  311. package/dist/tooth-18-DhHJz8sy.cjs +0 -1
  312. package/dist/tooth-21-Dgd5hn_X.cjs +0 -1
  313. package/dist/tooth-22-C2Tn19sB.cjs +0 -1
  314. package/dist/tooth-23-C9uaaSGb.cjs +0 -1
  315. package/dist/tooth-24-BrK9UGpf.cjs +0 -1
  316. package/dist/tooth-25-CE_EfGNp.cjs +0 -1
  317. package/dist/tooth-26-Ctv4i9Fy.cjs +0 -1
  318. package/dist/tooth-27-C5J7JkWM.cjs +0 -1
  319. package/dist/tooth-28-Z9oWqjo0.cjs +0 -1
  320. package/dist/tooth-31-BrYqmkTi.cjs +0 -1
  321. package/dist/tooth-32-BNNR0oCZ.cjs +0 -1
  322. package/dist/tooth-33-DuxvqO2J.cjs +0 -1
  323. package/dist/tooth-34-BCSCXMB6.cjs +0 -1
  324. package/dist/tooth-35-BLUXkX88.cjs +0 -1
  325. package/dist/tooth-36-IrKHYqlA.cjs +0 -1
  326. package/dist/tooth-37-BYqpdMwo.cjs +0 -1
  327. package/dist/tooth-38-B_eNXXdu.cjs +0 -1
  328. package/dist/tooth-41-Ddva4Ot8.cjs +0 -1
  329. package/dist/tooth-42-szcDqlM0.cjs +0 -1
  330. package/dist/tooth-43-B3ka6rQm.cjs +0 -1
  331. package/dist/tooth-44-CazyQucj.cjs +0 -1
  332. package/dist/tooth-45-B4HQtc8n.cjs +0 -1
  333. package/dist/tooth-46-BPM40gbG.cjs +0 -1
  334. package/dist/tooth-47-Dvr20dlh.cjs +0 -1
  335. package/dist/tooth-48-Bd8ljGsF.cjs +0 -1
  336. package/dist/tooth-51-OBpwCOF3.cjs +0 -1
  337. package/dist/tooth-52-aKxyHcmq.cjs +0 -1
  338. package/dist/tooth-53-vCwJjTOc.cjs +0 -1
  339. package/dist/tooth-54-DsWu2iFy.cjs +0 -1
  340. package/dist/tooth-55-BxC1X2Dn.cjs +0 -1
  341. package/dist/tooth-61-BbLvxMQi.cjs +0 -1
  342. package/dist/tooth-62-CmTkWczP.cjs +0 -1
  343. package/dist/tooth-63-DI7l_2qI.cjs +0 -1
  344. package/dist/tooth-64-B21sOsJh.cjs +0 -1
  345. package/dist/tooth-65-D2ZC2VEr.cjs +0 -1
  346. package/dist/tooth-71-D473PPO5.cjs +0 -1
  347. package/dist/tooth-72-Drh1wnNu.cjs +0 -1
  348. package/dist/tooth-73-DzlwYI23.cjs +0 -1
  349. package/dist/tooth-74-8aGvcZPg.cjs +0 -1
  350. package/dist/tooth-75-BFK7At_r.cjs +0 -1
  351. package/dist/tooth-81-BZmR-I0M.cjs +0 -1
  352. package/dist/tooth-82-euVfUUZV.cjs +0 -1
  353. package/dist/tooth-83-KV010j64.cjs +0 -1
  354. package/dist/tooth-84-BBg1RjhZ.cjs +0 -1
  355. package/dist/tooth-85-Cr-kc1wM.cjs +0 -1
  356. package/dist/vuetifyConfig.umd.cjs +0 -1
  357. package/src/components/BackBtn/tests/__snapshots__/back-btn-custom-bg.snap.png +0 -0
  358. package/src/components/BackBtn/tests/__snapshots__/back-btn-dark-mode.snap.png +0 -0
  359. package/src/components/BackBtn/tests/__snapshots__/back-btn-default.snap.png +0 -0
  360. package/src/components/BackBtn/tests/__snapshots__/back-btn-no-icon.snap.png +0 -0
  361. package/src/components/DatePicker/CalendarMode/tests/DatePicker.events.spec.ts +0 -178
  362. package/src/components/DialogBox/tests/__snapshots__/dialog-box-custom-texts.snap.png +0 -0
  363. package/src/components/DialogBox/tests/__snapshots__/dialog-box-default.snap.png +0 -0
  364. package/src/components/DialogBox/tests/__snapshots__/dialog-box-no-actions.snap.png +0 -0
  365. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated-submenu-open.snap.png +0 -0
  366. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated.snap.png +0 -0
  367. package/src/components/HeaderBar/tests/__snapshots__/header-bar-custom-width.snap.png +0 -0
  368. package/src/components/HeaderBar/tests/__snapshots__/header-bar-default.snap.png +0 -0
  369. package/src/components/HeaderBar/tests/__snapshots__/header-bar-no-sticky.snap.png +0 -0
  370. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-prepend.snap.png +0 -0
  371. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-side.snap.png +0 -0
  372. package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-subtitle.snap.png +0 -0
  373. package/src/components/Logo/tests/__snapshots__/logo-avatar.snap.png +0 -0
  374. package/src/components/Logo/tests/__snapshots__/logo-dark.snap.png +0 -0
  375. package/src/components/Logo/tests/__snapshots__/logo-default.snap.png +0 -0
  376. package/src/components/Logo/tests/__snapshots__/logo-no-organism.snap.png +0 -0
  377. package/src/components/Logo/tests/__snapshots__/logo-no-signature.snap.png +0 -0
  378. package/src/components/Logo/tests/__snapshots__/logo-risque-pro.snap.png +0 -0
  379. package/src/components/RangeField/tests/__snapshots__/range-field-custom-bg.snap.png +0 -0
  380. package/src/components/RangeField/tests/__snapshots__/range-field-custom-range.snap.png +0 -0
  381. package/src/components/RangeField/tests/__snapshots__/range-field-default.snap.png +0 -0
  382. package/src/components/RangeField/tests/__snapshots__/range-field-step.snap.png +0 -0
  383. package/src/components/RangeField/tests/__snapshots__/range-field-with-label.snap.png +0 -0
  384. package/src/components/SyAlert/tests/__snapshots__/sy-alert-closable.snap.png +0 -0
  385. package/src/components/SyAlert/tests/__snapshots__/sy-alert-error.snap.png +0 -0
  386. package/src/components/SyAlert/tests/__snapshots__/sy-alert-info.snap.png +0 -0
  387. package/src/components/SyAlert/tests/__snapshots__/sy-alert-success.snap.png +0 -0
  388. package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-outlined.snap.png +0 -0
  389. package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-tonal.snap.png +0 -0
  390. package/src/components/SyAlert/tests/__snapshots__/sy-alert-warning.snap.png +0 -0
  391. package/src/composables/date/tests/useDateFormat.spec.ts +0 -67
  392. package/src/composables/date/useDateFormat.ts +0 -110
  393. package/src/composables/date/useDateInitialization.ts +0 -92
@@ -2,7 +2,7 @@
2
2
  import { computed } from 'vue'
3
3
  import type { FilterOption, TableColumnHeader } from '../types'
4
4
  import DatePicker from '@/components/DatePicker/CalendarMode/DatePicker.vue'
5
- import type { DateValue } from '@/composables/date/useDateInitializationDayjs'
5
+ import type { DateModelValue } from '@/composables/date/useDateInitializationDayjs'
6
6
  import { useDateFormat } from '@/composables/date/useDateFormatDayjs'
7
7
  const { parseDate } = useDateFormat()
8
8
 
@@ -16,7 +16,7 @@
16
16
  default: () => [],
17
17
  },
18
18
  filterValue: {
19
- type: [String, Date, Object, null] as unknown as () => DateValue,
19
+ type: [String, Date, Object, null] as unknown as () => DateModelValue,
20
20
  default: null,
21
21
  },
22
22
  inputConfig: {
@@ -0,0 +1,176 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import filter from '../number'
3
+
4
+ describe('Number filter logic', () => {
5
+ describe('itemValue non-number', () => {
6
+ it('retourne false si itemValue est une string', () => {
7
+ expect(filter('42', 42)).toBe(false)
8
+ })
9
+
10
+ it('retourne false si itemValue est null', () => {
11
+ expect(filter(null, 42)).toBe(false)
12
+ })
13
+
14
+ it('retourne false si itemValue est undefined', () => {
15
+ expect(filter(undefined, 42)).toBe(false)
16
+ })
17
+
18
+ it('retourne false si itemValue est un boolean', () => {
19
+ expect(filter(true, 1)).toBe(false)
20
+ })
21
+ })
22
+
23
+ describe('filterValue numérique (exact match)', () => {
24
+ it('retourne true pour une valeur égale', () => {
25
+ expect(filter(42, 42)).toBe(true)
26
+ })
27
+
28
+ it('retourne false pour une valeur différente', () => {
29
+ expect(filter(42, 43)).toBe(false)
30
+ })
31
+
32
+ it('retourne true pour 0 === 0', () => {
33
+ expect(filter(0, 0)).toBe(true)
34
+ })
35
+
36
+ it('retourne false pour 0 !== 1', () => {
37
+ expect(filter(0, 1)).toBe(false)
38
+ })
39
+
40
+ it('retourne true pour des négatifs égaux', () => {
41
+ expect(filter(-5, -5)).toBe(true)
42
+ })
43
+ })
44
+
45
+ describe('filterValue string sans opérateur', () => {
46
+ it('retourne true pour correspondance exacte via string', () => {
47
+ expect(filter(42, '42')).toBe(true)
48
+ })
49
+
50
+ it('retourne true pour string avec virgule décimale', () => {
51
+ expect(filter(3.14, '3,14')).toBe(true)
52
+ })
53
+
54
+ it('retourne true pour string avec point décimal', () => {
55
+ expect(filter(3.14, '3.14')).toBe(true)
56
+ })
57
+
58
+ it('retourne false pour une string non numérique', () => {
59
+ expect(filter(42, 'abc')).toBe(false)
60
+ })
61
+
62
+ it('retourne false si la valeur ne correspond pas', () => {
63
+ expect(filter(42, '43')).toBe(false)
64
+ })
65
+ })
66
+
67
+ describe('opérateur =', () => {
68
+ it('retourne true pour =42 avec itemValue 42', () => {
69
+ expect(filter(42, '=42')).toBe(true)
70
+ })
71
+
72
+ it('retourne false pour =42 avec itemValue 43', () => {
73
+ expect(filter(43, '=42')).toBe(false)
74
+ })
75
+
76
+ it('retourne false si la valeur après = est non numérique', () => {
77
+ expect(filter(42, '=abc')).toBe(false)
78
+ })
79
+ })
80
+
81
+ describe('opérateur <>', () => {
82
+ it('retourne true pour <>42 avec itemValue 43', () => {
83
+ expect(filter(43, '<>42')).toBe(true)
84
+ })
85
+
86
+ it('retourne false pour <>42 avec itemValue 42', () => {
87
+ expect(filter(42, '<>42')).toBe(false)
88
+ })
89
+ })
90
+
91
+ describe('opérateur <', () => {
92
+ it('retourne true si itemValue < filterValue', () => {
93
+ expect(filter(10, '<20')).toBe(true)
94
+ })
95
+
96
+ it('retourne false si itemValue === filterValue', () => {
97
+ expect(filter(20, '<20')).toBe(false)
98
+ })
99
+
100
+ it('retourne false si itemValue > filterValue', () => {
101
+ expect(filter(30, '<20')).toBe(false)
102
+ })
103
+ })
104
+
105
+ describe('opérateur <=', () => {
106
+ it('retourne true si itemValue < filterValue', () => {
107
+ expect(filter(10, '<=20')).toBe(true)
108
+ })
109
+
110
+ it('retourne true si itemValue === filterValue', () => {
111
+ expect(filter(20, '<=20')).toBe(true)
112
+ })
113
+
114
+ it('retourne false si itemValue > filterValue', () => {
115
+ expect(filter(30, '<=20')).toBe(false)
116
+ })
117
+ })
118
+
119
+ describe('opérateur >', () => {
120
+ it('retourne true si itemValue > filterValue', () => {
121
+ expect(filter(30, '>20')).toBe(true)
122
+ })
123
+
124
+ it('retourne false si itemValue === filterValue', () => {
125
+ expect(filter(20, '>20')).toBe(false)
126
+ })
127
+
128
+ it('retourne false si itemValue < filterValue', () => {
129
+ expect(filter(10, '>20')).toBe(false)
130
+ })
131
+ })
132
+
133
+ describe('opérateur >=', () => {
134
+ it('retourne true si itemValue > filterValue', () => {
135
+ expect(filter(30, '>=20')).toBe(true)
136
+ })
137
+
138
+ it('retourne true si itemValue === filterValue', () => {
139
+ expect(filter(20, '>=20')).toBe(true)
140
+ })
141
+
142
+ it('retourne false si itemValue < filterValue', () => {
143
+ expect(filter(10, '>=20')).toBe(false)
144
+ })
145
+ })
146
+
147
+ describe('virgule comme séparateur décimal dans opérateurs', () => {
148
+ it('retourne true pour >=3,5 avec itemValue 4', () => {
149
+ expect(filter(4, '>=3,5')).toBe(true)
150
+ })
151
+
152
+ it('retourne true pour <=3,5 avec itemValue 3', () => {
153
+ expect(filter(3, '<=3,5')).toBe(true)
154
+ })
155
+
156
+ it('retourne true pour =3,14 avec itemValue 3.14', () => {
157
+ expect(filter(3.14, '=3,14')).toBe(true)
158
+ })
159
+ })
160
+
161
+ describe('valeur NaN après opérateur', () => {
162
+ it('retourne false si la valeur après < est non numérique', () => {
163
+ expect(filter(42, '<abc')).toBe(false)
164
+ })
165
+
166
+ it('retourne false si la valeur après > est non numérique', () => {
167
+ expect(filter(42, '>abc')).toBe(false)
168
+ })
169
+ })
170
+
171
+ describe('fallback String.includes pour filterValue autre', () => {
172
+ it('retourne true si String(itemValue).includes(String(filterValue)) pour filterValue boolean', () => {
173
+ expect(filter(42, true as unknown as string)).toBe(false)
174
+ })
175
+ })
176
+ })
@@ -0,0 +1,111 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import filter from '../select'
3
+
4
+ describe('Select filter logic', () => {
5
+ describe('filterValue scalaire (valeur unique)', () => {
6
+ it('retourne true pour une correspondance exacte de string', () => {
7
+ expect(filter('foo', 'foo')).toBe(true)
8
+ })
9
+
10
+ it('retourne false pour une non-correspondance de string', () => {
11
+ expect(filter('foo', 'bar')).toBe(false)
12
+ })
13
+
14
+ it('retourne true pour une correspondance exacte de number', () => {
15
+ expect(filter(42, 42)).toBe(true)
16
+ })
17
+
18
+ it('retourne false pour une non-correspondance de number', () => {
19
+ expect(filter(42, 43)).toBe(false)
20
+ })
21
+
22
+ it('retourne true pour null === null', () => {
23
+ expect(filter(null, null)).toBe(true)
24
+ })
25
+
26
+ it('retourne false pour null !== "foo"', () => {
27
+ expect(filter(null, 'foo')).toBe(false)
28
+ })
29
+
30
+ it('retourne true pour boolean true === true', () => {
31
+ expect(filter(true, true)).toBe(true)
32
+ })
33
+
34
+ it('retourne false pour boolean true !== false', () => {
35
+ expect(filter(true, false)).toBe(false)
36
+ })
37
+ })
38
+
39
+ describe('filterValue objet (comparaison JSON)', () => {
40
+ it('retourne true pour deux objets identiques', () => {
41
+ expect(filter({ id: 1, label: 'A' }, { id: 1, label: 'A' })).toBe(true)
42
+ })
43
+
44
+ it('retourne false pour deux objets différents', () => {
45
+ expect(filter({ id: 1, label: 'A' }, { id: 2, label: 'B' })).toBe(false)
46
+ })
47
+
48
+ it('retourne false si itemValue est une string et filterValue un objet', () => {
49
+ expect(filter('foo', { id: 1 })).toBe(false)
50
+ })
51
+
52
+ it('retourne true pour deux objets imbriqués identiques', () => {
53
+ const obj = { a: { b: 1 } }
54
+ expect(filter({ a: { b: 1 } }, obj)).toBe(true)
55
+ })
56
+ })
57
+
58
+ describe('filterValue tableau — itemValue scalaire', () => {
59
+ it('retourne true si itemValue est dans le tableau', () => {
60
+ expect(filter('foo', ['foo', 'bar'])).toBe(true)
61
+ })
62
+
63
+ it('retourne false si itemValue n\'est pas dans le tableau', () => {
64
+ expect(filter('baz', ['foo', 'bar'])).toBe(false)
65
+ })
66
+
67
+ it('retourne true pour un number inclus dans le tableau', () => {
68
+ expect(filter(2, [1, 2, 3])).toBe(true)
69
+ })
70
+
71
+ it('retourne false pour un number non inclus dans le tableau', () => {
72
+ expect(filter(5, [1, 2, 3])).toBe(false)
73
+ })
74
+
75
+ it('retourne false pour un tableau filterValue vide', () => {
76
+ expect(filter('foo', [])).toBe(false)
77
+ })
78
+ })
79
+
80
+ describe('filterValue tableau — itemValue tableau', () => {
81
+ it('retourne true si au moins un élément commun (primitifs)', () => {
82
+ expect(filter(['Vue', 'React'], ['Vue', 'Angular'])).toBe(true)
83
+ })
84
+
85
+ it('retourne false si aucun élément commun (primitifs)', () => {
86
+ expect(filter(['Svelte', 'Angular'], ['Vue', 'React'])).toBe(false)
87
+ })
88
+
89
+ it('retourne true si au moins un objet commun (comparaison JSON)', () => {
90
+ expect(filter(
91
+ [{ id: 1 }, { id: 2 }],
92
+ [{ id: 2 }, { id: 3 }],
93
+ )).toBe(true)
94
+ })
95
+
96
+ it('retourne false si aucun objet commun (comparaison JSON)', () => {
97
+ expect(filter(
98
+ [{ id: 1 }],
99
+ [{ id: 2 }],
100
+ )).toBe(false)
101
+ })
102
+
103
+ it('retourne false si itemValue est tableau vide', () => {
104
+ expect(filter([], ['foo'])).toBe(false)
105
+ })
106
+
107
+ it('retourne false si filterValue est tableau vide', () => {
108
+ expect(filter(['foo'], [])).toBe(false)
109
+ })
110
+ })
111
+ })
@@ -56,28 +56,28 @@
56
56
 
57
57
  // Override Vuetify's checkbox styles to use primary color
58
58
  .v-table .v-selection-control {
59
- color: rgb(var(--v-theme-borderAccentPrimary)) !important;
59
+ color: rgb(var(--v-theme-primary)) !important;
60
60
  }
61
61
 
62
62
  .v-table .v-selection-control--dirty .v-selection-control__input::before {
63
- background-color: rgb(var(--v-theme-borderAccentPrimary)) !important;
64
- border-color: rgb(var(--v-theme-borderAccentPrimary)) !important;
63
+ background-color: rgb(var(--v-theme-primary)) !important;
64
+ border-color: rgb(var(--v-theme-primary)) !important;
65
65
  }
66
66
 
67
67
  // Target the header checkbox specifically
68
68
  .v-data-table-header__checkbox .v-selection-control {
69
- color: rgb(var(--v-theme-borderAccentPrimary)) !important;
69
+ color: rgb(var(--v-theme-primary)) !important;
70
70
  }
71
71
 
72
72
  // Target the row checkboxes specifically
73
73
  .v-data-table-row__checkbox .v-selection-control {
74
- color: rgb(var(--v-theme-borderAccentPrimary)) !important;
74
+ color: rgb(var(--v-theme-primary)) !important;
75
75
  }
76
76
 
77
77
  // Add a global style for all checkboxes in the table
78
78
  .v-checkbox .v-selection-control__input::before,
79
79
  .v-checkbox-btn .v-selection-control__input::before {
80
- border-color: rgb(var(--v-theme-borderAccentPrimary)) !important;
80
+ border-color: rgb(var(--v-theme-primary)) !important;
81
81
  }
82
82
 
83
83
  .v-data-table-rows-no-data {
@@ -106,6 +106,7 @@ export type SyTableProps = {
106
106
  pinnedColumnKey?: string
107
107
  clickableRow?: boolean
108
108
  pageInput?: boolean
109
+ hideDefaultFooter?: boolean
109
110
  }
110
111
 
111
112
  export type SyServerTableProps = {
@@ -134,4 +135,5 @@ export type SyServerTableProps = {
134
135
  pinnedColumnKey?: string
135
136
  clickableRow?: boolean
136
137
  pageInput?: boolean
138
+ hideDefaultFooter?: boolean
137
139
  }
@@ -48,10 +48,12 @@ describe('UploadWorkflow', () => {
48
48
  })
49
49
 
50
50
  it('handles undefined upload list without crashing', async () => {
51
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {})
51
52
  const wrapper = mount(UploadWorkflow, {
52
53
  /* eslint-disable-next-line @typescript-eslint/no-explicit-any */
53
54
  props: {} as any,
54
55
  })
56
+ warnSpy.mockRestore()
55
57
 
56
58
  expect(wrapper.html()).toMatchSnapshot()
57
59
  expect(wrapper.findAll('.file-item')).toHaveLength(0)
@@ -95,6 +95,7 @@ export { default as ChipList } from './ChipList/ChipList.vue'
95
95
  export * from './ChipList/types'
96
96
  export { default as CollapsibleList } from './CollapsibleList/CollapsibleList.vue'
97
97
  export { default as SyIcon } from './Customs/SyIcon/SyIcon.vue'
98
+ export { default as SyIconButton } from './Customs/SyIconButton/SyIconButton.vue'
98
99
  export { default as DataList } from './DataList/DataList.vue'
99
100
  export { default as DataListGroup } from './DataListGroup/DataListGroup.vue'
100
101
  export { default as DataListItem } from './DataListItem/DataListItem.vue'
@@ -2,7 +2,88 @@ import { describe, it, expect } from 'vitest'
2
2
  import { formatDate, parseDate } from '../useDateFormatDayjs'
3
3
 
4
4
  describe('useDateFormatDayjs', () => {
5
+ describe('formatDate', () => {
6
+ it('formats a Date object to string according to the specified format', () => {
7
+ const date = new Date(2023, 0, 15) // 15 janvier 2023
8
+ expect(formatDate(date, 'DD/MM/YYYY')).toBe('15/01/2023')
9
+ expect(formatDate(date, 'YYYY-MM-DD')).toBe('2023-01-15')
10
+ })
11
+
12
+ it('returns empty string when date is null or undefined', () => {
13
+ expect(formatDate(null as unknown as Date, 'DD/MM/YYYY')).toBe('')
14
+ expect(formatDate(undefined as unknown as Date, 'DD/MM/YYYY')).toBe('')
15
+ })
16
+
17
+ it('handles different date formats correctly', () => {
18
+ const date = new Date(2023, 11, 31) // 31 décembre 2023
19
+ expect(formatDate(date, 'DD/MM/YYYY')).toBe('31/12/2023')
20
+ expect(formatDate(date, 'YYYY-MM-DD')).toBe('2023-12-31')
21
+ })
22
+
23
+ it('handles custom separators correctly', () => {
24
+ const date = new Date(2023, 0, 15) // 15 janvier 2023
25
+ expect(formatDate(date, 'DD.MM.YYYY')).toBe('15.01.2023')
26
+ expect(formatDate(date, 'DD-MM-YYYY')).toBe('15-01-2023')
27
+ expect(formatDate(date, 'YYYY/MM/DD')).toBe('2023/01/15')
28
+ })
29
+ })
30
+
5
31
  describe('parseDate', () => {
32
+ it('parses a date string to a Date object according to the specified format', () => {
33
+ const dateStr = '15/01/2023'
34
+ const date = parseDate(dateStr, 'DD/MM/YYYY')
35
+ expect(date).toBeInstanceOf(Date)
36
+ expect(date?.getFullYear()).toBe(2023)
37
+ expect(date?.getMonth()).toBe(0) // Janvier = 0
38
+ expect(date?.getDate()).toBe(15)
39
+ })
40
+
41
+ it('returns null for invalid date strings', () => {
42
+ expect(parseDate('invalid', 'DD/MM/YYYY')).toBeNull()
43
+ expect(parseDate('31/02/2023', 'DD/MM/YYYY')).toBeNull() // 31 février n'existe pas
44
+ })
45
+
46
+ it('handles different date formats correctly', () => {
47
+ expect(parseDate('2023-01-15', 'YYYY-MM-DD')?.getDate()).toBe(15)
48
+ expect(parseDate('15.01.2023', 'DD.MM.YYYY')?.getDate()).toBe(15)
49
+ })
50
+
51
+ it('returns null when input is null or empty', () => {
52
+ expect(parseDate(null, 'DD/MM/YYYY')).toBeNull()
53
+ expect(parseDate('', 'DD/MM/YYYY')).toBeNull()
54
+ })
55
+
56
+ it('handles leap years correctly', () => {
57
+ // 2020 était une année bissextile
58
+ expect(parseDate('29/02/2020', 'DD/MM/YYYY')).not.toBeNull()
59
+ // 2023 n'est pas une année bissextile
60
+ expect(parseDate('29/02/2023', 'DD/MM/YYYY')).toBeNull()
61
+ })
62
+
63
+ it('returns the Date object as-is when input is already a Date', () => {
64
+ const original = new Date(2023, 5, 15, 10, 30)
65
+ const result = parseDate(original, 'DD/MM/YYYY')
66
+ expect(result).toBe(original) // même référence
67
+ })
68
+
69
+ it('creates dates at midnight (00:00:00.000)', () => {
70
+ const date = parseDate('15/01/2023', 'DD/MM/YYYY')!
71
+ expect(date.getHours()).toBe(0)
72
+ expect(date.getMinutes()).toBe(0)
73
+ expect(date.getSeconds()).toBe(0)
74
+ expect(date.getMilliseconds()).toBe(0)
75
+ })
76
+
77
+ it('roundtrip: parseDate then formatDate preserves the same calendar day', () => {
78
+ const formats = ['DD/MM/YYYY', 'YYYY-MM-DD', 'DD.MM.YYYY']
79
+ const inputs = ['01/01/2023', '2023-06-30', '31.12.2020']
80
+ formats.forEach((fmt, i) => {
81
+ const parsed = parseDate(inputs[i]!, fmt)
82
+ expect(parsed).not.toBeNull()
83
+ expect(formatDate(parsed, fmt)).toBe(inputs[i])
84
+ })
85
+ })
86
+
6
87
  it('keeps the same calendar day when formatting back in a negative timezone (UTC-4)', () => {
7
88
  const previousTz = process.env.TZ
8
89
  process.env.TZ = 'America/Guadeloupe'
@@ -15,5 +96,36 @@ describe('useDateFormatDayjs', () => {
15
96
  process.env.TZ = previousTz
16
97
  }
17
98
  })
99
+
100
+ it('handles non-string non-Date input by converting to string', () => {
101
+ // Test avec un nombre qui sera converti en string
102
+ const result = parseDate(20230115 as unknown as string, 'YYYYMMDD')
103
+ expect(result).not.toBeNull()
104
+ expect(result?.getFullYear()).toBe(2023)
105
+ })
106
+
107
+ it('handles undefined input', () => {
108
+ expect(parseDate(undefined, 'DD/MM/YYYY')).toBeNull()
109
+ })
110
+ })
111
+
112
+ describe('useDateFormat composable', () => {
113
+ it('returns parseDate and formatDate functions', async () => {
114
+ const { useDateFormat } = await import('../useDateFormatDayjs')
115
+ const hook = useDateFormat()
116
+ expect(hook.parseDate).toBeDefined()
117
+ expect(hook.formatDate).toBeDefined()
118
+ expect(typeof hook.parseDate).toBe('function')
119
+ expect(typeof hook.formatDate).toBe('function')
120
+ })
121
+
122
+ it('uses returned functions correctly', async () => {
123
+ const { useDateFormat } = await import('../useDateFormatDayjs')
124
+ const { parseDate: hookParse, formatDate: hookFormat } = useDateFormat()
125
+
126
+ const date = hookParse('15/01/2023', 'DD/MM/YYYY')
127
+ expect(date).not.toBeNull()
128
+ expect(hookFormat(date, 'DD/MM/YYYY')).toBe('15/01/2023')
129
+ })
18
130
  })
19
131
  })
@@ -1,7 +1,7 @@
1
1
  import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
2
- import { initializeSelectedDates, type DateInput } from '../useDateInitialization'
2
+ import { initializeSelectedDates, type DateInput } from '../useDateInitializationDayjs'
3
3
 
4
- describe('useDateInitialization', () => {
4
+ describe('useDateInitializationDayjs', () => {
5
5
  describe('initializeSelectedDates', () => {
6
6
  it('returns null when modelValue is null or undefined', () => {
7
7
  expect(initializeSelectedDates(null, 'DD/MM/YYYY')).toBeNull()
@@ -70,7 +70,7 @@ describe('useDateInitialization', () => {
70
70
  expect(result1).toBeInstanceOf(Date)
71
71
  expect((result1 as Date).getDate()).toBe(15)
72
72
 
73
- // Date au format d'affichage quand le format de retour est différen
73
+ // Date au format d'affichage quand le format de retour est différent
74
74
  const result2 = initializeSelectedDates('15/01/2023', 'DD/MM/YYYY', 'YYYY-MM-DD')
75
75
  expect(result2).toBeInstanceOf(Date)
76
76
  expect((result2 as Date).getDate()).toBe(15)
@@ -97,6 +97,42 @@ describe('useDateInitialization', () => {
97
97
  })
98
98
  })
99
99
 
100
+ it('creates dates at midnight (00:00:00.000)', () => {
101
+ const result = initializeSelectedDates('15/06/2023', 'DD/MM/YYYY') as Date
102
+ expect(result.getHours()).toBe(0)
103
+ expect(result.getMinutes()).toBe(0)
104
+ expect(result.getSeconds()).toBe(0)
105
+ expect(result.getMilliseconds()).toBe(0)
106
+ })
107
+
108
+ it('creates dates at midnight for arrays too', () => {
109
+ const result = initializeSelectedDates(['01/03/2023', '15/03/2023'], 'DD/MM/YYYY') as Date[]
110
+ result.forEach((date) => {
111
+ expect(date.getHours()).toBe(0)
112
+ expect(date.getMinutes()).toBe(0)
113
+ expect(date.getSeconds()).toBe(0)
114
+ })
115
+ })
116
+
117
+ it('handles range array with different return format', () => {
118
+ const result = initializeSelectedDates(['2023-01-10', '2023-01-20'], 'DD/MM/YYYY', 'YYYY-MM-DD')
119
+ expect(Array.isArray(result)).toBe(true)
120
+ const dates = result as Date[]
121
+ expect(dates).toHaveLength(2)
122
+ expect(dates[0]?.getDate()).toBe(10)
123
+ expect(dates[1]?.getDate()).toBe(20)
124
+ })
125
+
126
+ it('accepts a range where both dates are equal', () => {
127
+ const result = initializeSelectedDates(['15/01/2023', '15/01/2023'], 'DD/MM/YYYY')
128
+ expect(Array.isArray(result)).toBe(true)
129
+ expect(result).toHaveLength(2)
130
+ })
131
+
132
+ it('returns null for empty string input', () => {
133
+ expect(initializeSelectedDates('', 'DD/MM/YYYY')).toBeNull()
134
+ })
135
+
100
136
  it('returns null for object input', () => {
101
137
  const result = initializeSelectedDates({}, 'DD/MM/YYYY')
102
138
  expect(result).toBeNull()
@@ -0,0 +1,109 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import {
3
+ getJoursFeries,
4
+ isHolidayDay,
5
+ useHolidayDay,
6
+ } from '../useHolidayDay'
7
+
8
+ describe('useHolidayDay', () => {
9
+ const { calculPaquesGregorienne } = useHolidayDay()
10
+
11
+ describe('calculPaquesGregorienne', () => {
12
+ it('calculates Easter date for various years', () => {
13
+ // Pâques 2023: 9 avril
14
+ const paques2023 = calculPaquesGregorienne(2023)
15
+ expect(paques2023.jour).toBe(9)
16
+ expect(paques2023.mois).toBe(4)
17
+
18
+ // Pâques 2024: 31 mars
19
+ const paques2024 = calculPaquesGregorienne(2024)
20
+ expect(paques2024.jour).toBe(31)
21
+ expect(paques2024.mois).toBe(3)
22
+
23
+ // Pâques 2025: 20 avril
24
+ const paques2025 = calculPaquesGregorienne(2025)
25
+ expect(paques2025.jour).toBe(20)
26
+ expect(paques2025.mois).toBe(4)
27
+ })
28
+
29
+ it('handles years where sum <= 9 (Easter in March)', () => {
30
+ // Certaines années Pâques tombe en mars (sum <= 9)
31
+ const paques2016 = calculPaquesGregorienne(2016)
32
+ expect(paques2016.mois).toBe(3) // 27 mars 2016
33
+ })
34
+ })
35
+
36
+ describe('getJoursFeries', () => {
37
+ it('returns a Set of holidays for a given year', () => {
38
+ const holidays2023 = getJoursFeries(2023)
39
+ expect(holidays2023).toBeInstanceOf(Set)
40
+ expect(holidays2023.size).toBe(11) // 11 jours fériés fixes + variables
41
+ })
42
+
43
+ it('includes fixed holidays', () => {
44
+ const holidays2023 = getJoursFeries(2023)
45
+ expect(holidays2023.has('01/01/2023')).toBe(true) // Jour de l'an
46
+ expect(holidays2023.has('01/05/2023')).toBe(true) // Fête du travail
47
+ expect(holidays2023.has('08/05/2023')).toBe(true) // Victoire
48
+ expect(holidays2023.has('14/07/2023')).toBe(true) // Fête nationale
49
+ expect(holidays2023.has('15/08/2023')).toBe(true) // Assomption
50
+ expect(holidays2023.has('01/11/2023')).toBe(true) // Toussaint
51
+ expect(holidays2023.has('11/11/2023')).toBe(true) // Armistice
52
+ expect(holidays2023.has('25/12/2023')).toBe(true) // Noël
53
+ })
54
+
55
+ it('includes Easter-related holidays', () => {
56
+ const holidays2023 = getJoursFeries(2023)
57
+ // Pâques 2023: 9 avril
58
+ expect(holidays2023.has('10/04/2023')).toBe(true) // Lundi de Pâques
59
+ expect(holidays2023.has('18/05/2023')).toBe(true) // Ascension
60
+ expect(holidays2023.has('29/05/2023')).toBe(true) // Lundi de Pentecôte
61
+ })
62
+
63
+ it('accepts custom format', () => {
64
+ const holidays2023 = getJoursFeries(2023, 'YYYY-MM-DD')
65
+ expect(holidays2023.has('2023-01-01')).toBe(true)
66
+ expect(holidays2023.has('2023-12-25')).toBe(true)
67
+ })
68
+ })
69
+
70
+ describe('isHolidayDay', () => {
71
+ it('returns true for holidays', () => {
72
+ expect(isHolidayDay(new Date(2023, 0, 1))).toBe(true) // Jour de l'an
73
+ expect(isHolidayDay(new Date(2023, 4, 1))).toBe(true) // Fête du travail
74
+ expect(isHolidayDay(new Date(2023, 11, 25))).toBe(true) // Noël
75
+ })
76
+
77
+ it('returns false for non-holidays', () => {
78
+ expect(isHolidayDay(new Date(2023, 0, 2))).toBe(false) // 2 janvier
79
+ expect(isHolidayDay(new Date(2023, 5, 15))).toBe(false) // 15 juin
80
+ })
81
+
82
+ it('accepts string dates', () => {
83
+ expect(isHolidayDay('01/01/2023', 'DD/MM/YYYY')).toBe(true)
84
+ expect(isHolidayDay('02/01/2023', 'DD/MM/YYYY')).toBe(false)
85
+ })
86
+
87
+ it('accepts custom format', () => {
88
+ expect(isHolidayDay('2023-01-01', 'YYYY-MM-DD')).toBe(true)
89
+ expect(isHolidayDay('2023-12-25', 'YYYY-MM-DD')).toBe(true)
90
+ })
91
+
92
+ it('returns false for invalid dates', () => {
93
+ expect(isHolidayDay('invalid-date', 'DD/MM/YYYY')).toBe(false)
94
+ expect(isHolidayDay('', 'DD/MM/YYYY')).toBe(false)
95
+ })
96
+ })
97
+
98
+ describe('useHolidayDay composable', () => {
99
+ it('returns all functions', () => {
100
+ const hook = useHolidayDay()
101
+ expect(hook.getJoursFeries).toBeDefined()
102
+ expect(hook.isHolidayDay).toBeDefined()
103
+ expect(hook.calculPaquesGregorienne).toBeDefined()
104
+ expect(typeof hook.getJoursFeries).toBe('function')
105
+ expect(typeof hook.isHolidayDay).toBe('function')
106
+ expect(typeof hook.calculPaquesGregorienne).toBe('function')
107
+ })
108
+ })
109
+ })