@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
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("./apLightTheme-CEK4iY3f.cjs"),b=require("vuetify/components"),u=require("vuetify/directives"),m=require("vuetify/iconsets/mdi-svg"),z=require("vuetify/locale"),W=require("vuetify");function S(n){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const i=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(t,e,i.get?i:{enumerable:!0,get:()=>n[e]})}}return t.default=n,Object.freeze(t)}const F=S(b),H=S(u),h={family:{primary:'"Arial", sans-serif',secondary:'"Arial", sans-serif'},weight:{thin:100,light:300,regular:400,medium:500,bold:700,black:900},size:{xs:"0.75rem",sm:"0.875rem",base:"1rem",lg:"1.125rem",xl:"1.25rem",xxl:"1.5rem"},lineHeight:{tight:1.3,normal:1.5},letterSpacing:{tighter:"-0.05em",tight:"-0.025em",normal:"0",wide:"0.025em",wider:"0.05em"},heading:{h1:{fontFamily:'"Arial", sans-serif',fontWeight:700,fontSize:"2rem",lineHeight:1.3,letterSpacing:"-0.025em"},h2:{fontFamily:'"Arial", sans-serif',fontWeight:700,fontSize:"1.75rem",lineHeight:1.3,letterSpacing:"-0.025em"},h3:{fontFamily:'"Arial", sans-serif',fontWeight:700,fontSize:"1.5rem",lineHeight:1.3,letterSpacing:"-0.025em"},h4:{fontFamily:'"Arial", sans-serif',fontWeight:700,fontSize:"1.25rem",lineHeight:1.3,letterSpacing:"0"},h5:{fontFamily:'"Arial", sans-serif',fontWeight:700,fontSize:"1.125rem",lineHeight:1.3,letterSpacing:"0"},h6:{fontFamily:'"Arial", sans-serif',fontWeight:700,fontSize:"1rem",lineHeight:1.3,letterSpacing:"0"}},body:{body1:{fontFamily:'"Arial", sans-serif',fontWeight:400,fontSize:"1.125rem",lineHeight:1.5,letterSpacing:"0"},body2:{fontFamily:'"Arial", sans-serif',fontWeight:400,fontSize:"1rem",lineHeight:1.5,letterSpacing:"0"}},subtitle:{subtitle1:{fontFamily:'"Arial", sans-serif',fontWeight:500,fontSize:"1.125rem",lineHeight:1.5,letterSpacing:"0.009em"},subtitle2:{fontFamily:'"Arial", sans-serif',fontWeight:500,fontSize:"1rem",lineHeight:1.5,letterSpacing:"0.007em"}},caption:{fontFamily:'"Arial", sans-serif',fontWeight:400,fontSize:"0.875rem",lineHeight:1.5,letterSpacing:"0"},overline:{fontFamily:'"Arial", sans-serif',fontWeight:400,fontSize:"0.875rem",lineHeight:1.5,letterSpacing:"0.1em",textTransform:"uppercase"},display:{display1:{fontFamily:'"Arial", sans-serif',fontWeight:300,fontSize:"2.5rem",lineHeight:1.15,letterSpacing:"-0.0075em"},display2:{fontFamily:'"Arial", sans-serif',fontWeight:300,fontSize:"1.875rem",lineHeight:1.1,letterSpacing:"-0.00375em"}}},p={family:{primary:'"Arial", sans-serif',secondary:'"Arial", sans-serif'},weight:{thin:100,light:300,regular:400,medium:500,bold:700,black:900},size:{xs:"0.75rem",sm:"0.875rem",base:"1rem",lg:"1.125rem",xl:"1.25rem",xxl:"1.5rem"},lineHeight:{tight:1.3,normal:1.5},letterSpacing:{tighter:"-0.05em",tight:"-0.025em",normal:"0",wide:"0.025em",wider:"0.05em"},heading:{h1:{fontFamily:'"Arial", sans-serif',fontWeight:700,fontSize:"1.75rem",lineHeight:1.3,letterSpacing:"-0.025em"},h2:{fontFamily:'"Arial", sans-serif',fontWeight:700,fontSize:"1.25rem",lineHeight:1.3,letterSpacing:"-0.025em"},h3:{fontFamily:'"Arial", sans-serif',fontWeight:700,fontSize:"1.125rem",lineHeight:1.3,letterSpacing:"-0.025em"},h4:{fontFamily:'"Arial", sans-serif',fontWeight:700,fontSize:"1rem",lineHeight:1.3,letterSpacing:"0"},h5:{fontFamily:'"Arial", sans-serif',fontWeight:700,fontSize:"0.875rem",lineHeight:1.3,letterSpacing:"0"},h6:{fontFamily:'"Arial", sans-serif',fontWeight:700,fontSize:"0.75rem",lineHeight:1.3,letterSpacing:"0"}},body:{body1:{fontFamily:'"Arial", sans-serif',fontWeight:400,fontSize:"1rem",lineHeight:1.5,letterSpacing:"0"},body2:{fontFamily:'"Arial", sans-serif',fontWeight:400,fontSize:"0.875rem",lineHeight:1.5,letterSpacing:"0"}},subtitle:{subtitle1:{fontFamily:'"Arial", sans-serif',fontWeight:500,fontSize:"1rem",lineHeight:1.5,letterSpacing:"0.009em"},subtitle2:{fontFamily:'"Arial", sans-serif',fontWeight:500,fontSize:"0.875rem",lineHeight:1.5,letterSpacing:"0.007em"}},caption:{fontFamily:'"Arial", sans-serif',fontWeight:400,fontSize:"0.75rem",lineHeight:1.5,letterSpacing:"0"},overline:{fontFamily:'"Arial", sans-serif',fontWeight:500,fontSize:"0.75rem",lineHeight:1.5,letterSpacing:"0.1em",textTransform:"uppercase"},display:{display1:{fontFamily:'"Arial", sans-serif',fontWeight:300,fontSize:"2rem",lineHeight:1.15,letterSpacing:"-0.006em"},display2:{fontFamily:'"Arial", sans-serif',fontWeight:300,fontSize:"1.75rem",lineHeight:1.1,letterSpacing:"-0.003em"}}},A={...l.baseContextualTokens,colors:{background:"#ffffff",border:"#dddddd",text:"#333333",icon:"#666666",overlay:"rgba(0, 0, 0, 0.5)",interactive:"#007bff"}},c={...l.baseContextualTokens,colors:{background:"#ffffff",border:"#dddddd",text:"#333333",icon:"#666666",overlay:"rgba(0, 0, 0, 0.5)",interactive:"#007bff"},ap:{fontWeightRegular:"400",fontWeightBold:"700",fontSizeXxs:"0.75rem",fontSizeXs:"0.875rem",fontSizeSm:"1rem",fontSizeMd:"1.125rem",fontSizeLg:"1.25rem",fontSizeXl:"1.375rem",fontSizeXxl:"1.5rem",btnRadius:"0.75rem",btnPaddingX:"1rem",btnPaddingY:"0.5rem",btnMinHeight:"2.5rem",cardRadius:"0.75rem",cardPaddingDesktop:"1rem",cardPaddingTablet:"1rem",cardPaddingMobile:"0.75rem",dialogPadding:"1.5rem",inputRadius:"0.5rem",inputMinHeight:"2.625rem",labelFontWeight:"700",filterRadius:"0.75rem",filterPaddingX:"2rem",filterPaddingY:"0.75rem",filterFontWeight:"700",tabsPillRadius:"0.75rem",tabsPillPaddingX:"2rem",tabsPillPaddingY:"0.5rem",tabsPillFontWeight:"700",multiFoldingBtnRadius:"0.75rem",multiFoldingBtnPaddingX:"2rem",multiFoldingBtnPaddingY:"0.5rem",multiFoldingBtnFontWeight:"700",switchTrackHeight:"2rem",switchTrackWidth:"3.5rem",switchTrackTop:"0",switchThumbHeight:"1.5rem",switchThumbWidth:"1.5rem",switchThumbTop:"0.25rem",switchThumbElevation:"0",switchWidth:"3.5rem",switchTrackOpacity:"1"}},d={},T=n=>typeof n=="object"&&n!==null,f=n=>{const t={},e=(i,r="")=>{for(const[a,s]of Object.entries(i)){const o=r?`${r}-${a}`:a;if(s===void 0)throw new Error(`Missing theme value for key "${o}"`);T(s)?e(s,o):t[o]=s}};return e(n),t};function y(n){const t={};if(n.family&&n.family.primary&&(t["font-family"]=n.family.primary),n.heading&&Object.entries(n.heading).forEach(([e,i])=>{var r,a;t[`typography-${e}-font-size`]=i.fontSize||"",t[`typography-${e}-font-weight`]=((r=i.fontWeight)==null?void 0:r.toString())||"",t[`typography-${e}-line-height`]=((a=i.lineHeight)==null?void 0:a.toString())||"",t[`typography-${e}-letter-spacing`]=i.letterSpacing||"normal"}),n.body&&Object.entries(n.body).forEach(([e,i])=>{var r,a;t[`typography-${e}-font-size`]=i.fontSize||"",t[`typography-${e}-font-weight`]=((r=i.fontWeight)==null?void 0:r.toString())||"",t[`typography-${e}-line-height`]=((a=i.lineHeight)==null?void 0:a.toString())||"",t[`typography-${e}-letter-spacing`]=i.letterSpacing||"normal"}),n.subtitle&&Object.entries(n.subtitle).forEach(([e,i])=>{var r,a;t[`typography-${e}-font-size`]=i.fontSize||"",t[`typography-${e}-font-weight`]=((r=i.fontWeight)==null?void 0:r.toString())||"",t[`typography-${e}-line-height`]=((a=i.lineHeight)==null?void 0:a.toString())||"",t[`typography-${e}-letter-spacing`]=i.letterSpacing||"normal"}),["caption","overline"].forEach(e=>{var i,r,a,s;if(n[e]){const o=n[e];if(o&&typeof o=="object"&&!Array.isArray(o))if("fontSize"in o)t[`typography-${e}-font-size`]=o.fontSize||"",t[`typography-${e}-font-weight`]=((i=o.fontWeight)==null?void 0:i.toString())||"",t[`typography-${e}-line-height`]=((r=o.lineHeight)==null?void 0:r.toString())||"",t[`typography-${e}-letter-spacing`]=o.letterSpacing||"normal",o.textTransform&&(t[`typography-${e}-text-transform`]=o.textTransform||"");else{const g=o[e];g&&(t[`typography-${e}-font-size`]=g.fontSize||"",t[`typography-${e}-font-weight`]=((a=g.fontWeight)==null?void 0:a.toString())||"",t[`typography-${e}-line-height`]=((s=g.lineHeight)==null?void 0:s.toString())||"",t[`typography-${e}-letter-spacing`]=g.letterSpacing||"normal",g.textTransform&&(t[`typography-${e}-text-transform`]=g.textTransform||""))}}}),n.display){const e=n.display;["display1","display2"].forEach(i=>{var a,s;const r=e[i];r&&(t[`typography-${i}-font-size`]=r.fontSize||"",t[`typography-${i}-font-weight`]=((a=r.fontWeight)==null?void 0:a.toString())||"",t[`typography-${i}-line-height`]=((s=r.lineHeight)==null?void 0:s.toString())||"",t[`typography-${i}-letter-spacing`]=r.letterSpacing||"normal",r.textTransform&&(t[`typography-${i}-text-transform`]=r.textTransform||""))})}return t}const $=()=>W.createVuetify({components:F,directives:H,locale:{locale:"fr",messages:{fr:z.fr}},theme:{defaultTheme:"cnam",themes:{cnam:{dark:!1,colors:{...l.cnamLightTheme,...l.cnamDarkTheme,...f(l.cnamColorsTokens)},variables:{"border-color":l.cnamColorsTokens.grey.base,"font-family":h.family.primary,...y(h),...f(l.cnamContextualTokens)}},pa:{dark:!1,colors:{...l.paLightTheme,...l.paDarkTheme,...f(l.cnamColorsTokens)},variables:{"border-color":l.cnamColorsTokens.grey.base,"font-family":p.family.primary,...y(p),...f(A)}},ap2026:{dark:!1,colors:{...l.apLightTheme2026,...d,...f(l.apColorsTokens2026)},variables:{"font-family":'"Arial", sans-serif',...f(c)}},ap:{dark:!1,colors:{...l.apLightTheme,...d,...f(l.apColorsTokens)},variables:{"font-family":'"Arial", sans-serif',...f(c)}}}},icons:{defaultSet:"mdi",aliases:m.aliases,sets:{mdi:m.mdi}}});exports.createVuetifyInstance=$;
@@ -1,178 +0,0 @@
1
- import { mount } from '@vue/test-utils'
2
- import { describe, it, expect, beforeEach } from 'vitest'
3
- import { nextTick } from 'vue'
4
- import DatePicker from '../DatePicker.vue'
5
-
6
- describe('CalendarMode.vue - Events', () => {
7
- let wrapper
8
-
9
- beforeEach(() => {
10
- wrapper = mount(DatePicker, {
11
- props: {
12
- label: 'Date Field',
13
- modelValue: '',
14
- format: 'DD/MM/YYYY',
15
- },
16
- })
17
- })
18
-
19
- it('émet update:modelValue lors de la saisie d\'une date valide', async () => {
20
- const input = wrapper.find('input')
21
- await input.setValue('01/01/2023')
22
- await input.trigger('blur')
23
-
24
- expect(wrapper.emitted('update:modelValue')).toBeTruthy()
25
- expect(wrapper.emitted('update:modelValue')[0]).toEqual(['01/01/2023'])
26
- })
27
-
28
- it('gère la visibilité du calendrier', async () => {
29
- // Ouvrir le calendrier
30
- await wrapper.find('.v-text-field').trigger('click')
31
- await nextTick()
32
-
33
- // Vérifier que le calendrier est visible
34
- expect(wrapper.vm.isDatePickerVisible).toBe(true)
35
-
36
- // Fermer le calendrier
37
- wrapper.vm.isDatePickerVisible = false
38
- await nextTick()
39
-
40
- // Vérifier que le calendrier est fermé
41
- expect(wrapper.vm.isDatePickerVisible).toBe(false)
42
- })
43
-
44
- it('accepte la saisie de dates', async () => {
45
- const input = wrapper.find('input')
46
-
47
- // Simuler la saisie de chiffres
48
- await input.setValue('0101')
49
- await nextTick()
50
-
51
- // Vérifier que la valeur est bien prise en compte
52
- expect(input.element.value).toContain('01')
53
- })
54
-
55
- it('permet la saisie manuelle même avec disablePickerInteraction', async () => {
56
- // Créer un composant avec disablePickerInteraction à true
57
- const wrapperWithDisabledPicker = mount(DatePicker, {
58
- props: {
59
- label: 'Date Field',
60
- modelValue: '',
61
- format: 'DD/MM/YYYY',
62
- disablePickerInteraction: true,
63
- },
64
- })
65
-
66
- // Simuler une saisie dans l'input
67
- const input = wrapperWithDisabledPicker.find('input')
68
- await input.setValue('01/01/2023')
69
- await input.trigger('blur')
70
- await nextTick()
71
-
72
- // Vérifier que l'événement update:modelValue est émis même avec disablePickerInteraction
73
- const emitted = wrapperWithDisabledPicker.emitted('update:modelValue')
74
- expect(emitted).toBeTruthy()
75
- expect(emitted && emitted[0]?.[0]).toBe('01/01/2023')
76
- })
77
-
78
- it('synchronise textInputValue et selectedDates', async () => {
79
- const input = wrapper.find('input')
80
- await input.setValue('01/01/2023')
81
- await input.trigger('blur')
82
- await nextTick()
83
-
84
- // Vérifier que selectedDates est mis à jour
85
- expect(wrapper.vm.selectedDates).not.toBeNull()
86
- const selectedDate = wrapper.vm.selectedDates
87
- expect(selectedDate instanceof Date).toBe(true)
88
- expect(selectedDate.getFullYear()).toBe(2023)
89
- expect(selectedDate.getMonth()).toBe(0) // Janvier (0-indexed)
90
- expect(selectedDate.getDate()).toBe(1)
91
- })
92
-
93
- it('met à jour displayFormattedDate lors de la sélection d\'une date dans le calendrier', async () => {
94
- // Ouvrir le calendrier
95
- await wrapper.find('.v-text-field').trigger('click')
96
- await nextTick()
97
-
98
- // Simuler une sélection de date dans le VDatePicker
99
- if (wrapper.vm.$refs.datePicker) {
100
- // Simuler l'événement update:model-value du VDatePicker
101
- const date = new Date(2023, 0, 1) // 1 janvier 2023
102
- wrapper.vm.handleDatePickerInput(date)
103
- await nextTick()
104
-
105
- // Appeler updateDisplayFormattedDate comme le ferait le gestionnaire d'événements
106
- wrapper.vm.updateDisplayFormattedDate()
107
- await nextTick()
108
-
109
- // Vérifier que displayFormattedDate est mis à jour correctement
110
- expect(wrapper.vm.displayFormattedDate).toBe('01/01/2023')
111
- }
112
- })
113
-
114
- it('accepte différents formats de date', async () => {
115
- const wrapperWithDashFormat = mount(DatePicker, {
116
- props: {
117
- label: 'Date Field',
118
- modelValue: '',
119
- format: 'YYYY-MM-DD',
120
- },
121
- })
122
-
123
- const input = wrapperWithDashFormat.find('input')
124
-
125
- // Simuler la saisie d'une date complète au format YYYY-MM-DD
126
- await input.setValue('2023-01-01')
127
- await input.trigger('blur')
128
- await nextTick()
129
-
130
- // Vérifier que l'événement update:modelValue est émis avec le bon format
131
- const emitted = wrapperWithDashFormat.emitted('update:modelValue')
132
- expect(emitted).toBeTruthy()
133
- expect(emitted && emitted[0]?.[0]).toBe('2023-01-01')
134
- })
135
-
136
- it('accepte les plages de dates en entrée', async () => {
137
- const wrapperWithRange = mount(DatePicker, {
138
- props: {
139
- label: 'Date Field',
140
- modelValue: ['01/01/2023', '05/01/2023'],
141
- format: 'DD/MM/YYYY',
142
- displayRange: true,
143
- },
144
- })
145
- await nextTick()
146
-
147
- // Vérifier que l'input affiche la plage de dates
148
- const input = wrapperWithRange.find('input')
149
- expect(input.element.value).toContain('01/01/2023')
150
-
151
- // Vérifier que la propriété displayRange est bien prise en compte
152
- expect(wrapperWithRange.props('displayRange')).toBe(true)
153
- })
154
-
155
- it('valide les dates selon les règles personnalisées', async () => {
156
- const customRule = {
157
- type: 'isDateValid',
158
- options: {},
159
- }
160
-
161
- const wrapperWithRules = mount(DatePicker, {
162
- props: {
163
- label: 'Date Field',
164
- modelValue: '',
165
- format: 'DD/MM/YYYY',
166
- customRules: [customRule],
167
- required: true,
168
- },
169
- })
170
-
171
- // Valider sans sélectionner de date
172
- await wrapperWithRules.vm.validateOnSubmit()
173
- await nextTick()
174
-
175
- // Vérifier qu'une erreur de validation est affichée
176
- expect(wrapperWithRules.vm.errorMessages.length).toBeGreaterThan(0)
177
- })
178
- })
@@ -1,67 +0,0 @@
1
- import { describe, it, expect } from 'vitest'
2
- import { formatDate, parseDate } from '../useDateFormat'
3
-
4
- describe('useDateFormat', () => {
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
- expect(formatDate(date, 'MM.DD.YYYY')).toBe('01.15.2023')
11
- })
12
-
13
- it('returns empty string when date is null or undefined', () => {
14
- expect(formatDate(null as unknown as Date, 'DD/MM/YYYY')).toBe('')
15
- expect(formatDate(undefined as unknown as Date, 'DD/MM/YYYY')).toBe('')
16
- })
17
-
18
- it('handles different date formats correctly', () => {
19
- const date = new Date(2023, 11, 31) // 31 décembre 2023
20
- expect(formatDate(date, 'DD/MM/YYYY')).toBe('31/12/2023')
21
- expect(formatDate(date, 'D/M/YYYY')).toBe('31/12/2023')
22
- expect(formatDate(date, 'YYYY-MM-DD')).toBe('2023-12-31')
23
- expect(formatDate(date, 'MM/DD/YYYY')).toBe('12/31/2023')
24
- })
25
-
26
- it('handles custom separators correctly', () => {
27
- const date = new Date(2023, 0, 15) // 15 janvier 2023
28
- expect(formatDate(date, 'DD.MM.YYYY')).toBe('15.01.2023')
29
- expect(formatDate(date, 'DD-MM-YYYY')).toBe('15-01-2023')
30
- expect(formatDate(date, 'YYYY/MM/DD')).toBe('2023/01/15')
31
- })
32
- })
33
-
34
- describe('parseDate', () => {
35
- it('parses a date string to a Date object according to the specified format', () => {
36
- const dateStr = '15/01/2023'
37
- const date = parseDate(dateStr, 'DD/MM/YYYY')
38
- expect(date).toBeInstanceOf(Date)
39
- expect(date?.getFullYear()).toBe(2023)
40
- expect(date?.getMonth()).toBe(0) // Janvier = 0
41
- expect(date?.getDate()).toBe(15)
42
- })
43
-
44
- it('returns null for invalid date strings', () => {
45
- expect(parseDate('invalid', 'DD/MM/YYYY')).toBeNull()
46
- expect(parseDate('31/02/2023', 'DD/MM/YYYY')).toBeNull() // 31 février n'existe pas
47
- })
48
-
49
- it('handles different date formats correctly', () => {
50
- expect(parseDate('2023-01-15', 'YYYY-MM-DD')?.getDate()).toBe(15)
51
- expect(parseDate('01/15/2023', 'MM/DD/YYYY')?.getDate()).toBe(15)
52
- expect(parseDate('15.01.2023', 'DD.MM.YYYY')?.getDate()).toBe(15)
53
- })
54
-
55
- it('returns null when input is null or empty', () => {
56
- expect(parseDate(null as unknown as string, 'DD/MM/YYYY')).toBeNull()
57
- expect(parseDate('', 'DD/MM/YYYY')).toBeNull()
58
- })
59
-
60
- it('handles leap years correctly', () => {
61
- // 2020 était une année bissextile
62
- expect(parseDate('29/02/2020', 'DD/MM/YYYY')).not.toBeNull()
63
- // 2023 n'est pas une année bissextile
64
- expect(parseDate('29/02/2023', 'DD/MM/YYYY')).toBeNull()
65
- })
66
- })
67
- })
@@ -1,110 +0,0 @@
1
- /**
2
- * Composable pour le formatage et le parsing des dates
3
- */
4
-
5
- /**
6
- * Parse une chaîne de caractères en objet Date selon un format spécifié
7
- * @param dateString - La chaîne de caractères à parser
8
- * @param format - Le format de la date (ex: 'DD/MM/YYYY')
9
- * @returns Un objet Date ou null si la chaîne n'est pas valide
10
- */
11
- export const parseDate = (dateString: string | Date | null, format: string): Date | null => {
12
- // Si dateString est null ou undefined, retourner null
13
- if (!dateString) return null
14
-
15
- // Si dateString est déjà un objet Date, le retourner directement
16
- if (dateString instanceof Date) {
17
- return dateString
18
- }
19
-
20
- // Si dateString n'est pas une chaîne de caractères, convertir en chaîne ou retourner null
21
- if (typeof dateString !== 'string') {
22
- try {
23
- dateString = String(dateString)
24
- }
25
- catch {
26
- return null
27
- }
28
- }
29
-
30
- // Créer un mapping des positions des éléments de date selon le format
31
- const separator = format.includes('/') ? '/' : format.includes('-') ? '-' : '.'
32
- const parts = format.split(separator)
33
- const dateParts = dateString.split(separator)
34
-
35
- if (parts.length !== dateParts.length) return null
36
-
37
- let day = 0, month = 0, year = 0
38
-
39
- // Extraire les valeurs selon leur position dans le format
40
- parts.forEach((part, index) => {
41
- const value = parseInt(dateParts[index]!, 10)
42
- if (isNaN(value)) return
43
-
44
- if (part.includes('DD') || part.includes('D')) day = value
45
- else if (part.includes('MM') || part.includes('M')) month = value - 1 // Les mois en JS sont 0-indexés
46
- else if (part.includes('YYYY')) year = value
47
- else if (part.includes('YY')) {
48
- // Gestion intelligente des années à 2 chiffres
49
- // Si l'année est < 50, on considère qu'elle est dans le 21ème siècle
50
- // Sinon, elle est dans le 20ème siècle
51
- year = value < 50 ? 2000 + value : 1900 + value
52
- }
53
- })
54
-
55
- // Vérifier que nous avons toutes les parties nécessaires et qu'elles sont dans des plages valides
56
- if (day < 1 || day > 31 || month < 0 || month > 11 || year < 1000 || year > 9999) return null
57
-
58
- // Créer la date à midi (12:00) pour éviter les problèmes de décalage de fuseau horaire
59
- // Cela garantit que la date reste la même lors de la conversion en UTC
60
- const date = new Date(year, month, day, 12, 0, 0)
61
-
62
- // Vérifier que la date est valide (par exemple, 31 février n'existe pas)
63
- if (date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day) return null
64
-
65
- return date
66
- }
67
-
68
- /**
69
- * Formate une date selon un format spécifié
70
- * @param date - La date à formater
71
- * @param format - Le format de sortie (ex: 'DD/MM/YYYY')
72
- * @returns La date formatée en chaîne de caractères
73
- */
74
- export const formatDate = (date: Date, format: string): string => {
75
- if (!date) return ''
76
-
77
- // Formats de base
78
- const day = date.getDate().toString().padStart(2, '0')
79
- const month = (date.getMonth() + 1).toString().padStart(2, '0')
80
- const year = date.getFullYear().toString()
81
- const shortYear = year.slice(-2)
82
-
83
- // Formats sans padding
84
- const dayNoPad = date.getDate().toString()
85
- const monthNoPad = (date.getMonth() + 1).toString()
86
-
87
- // Remplacer les tokens dans l'ordre correct (du plus spécifique au moins spécifique)
88
- const result = format
89
- .replace(/YYYY/g, year)
90
- .replace(/YY/g, shortYear)
91
- .replace(/MM/g, month)
92
- .replace(/M/g, monthNoPad)
93
- .replace(/DD/g, day)
94
- .replace(/D/g, dayNoPad)
95
-
96
- return result
97
- }
98
-
99
- /**
100
- * Hook composable pour le formatage et le parsing des dates
101
- * @returns Fonctions de formatage et parsing de dates
102
- */
103
- export function useDateFormat() {
104
- return {
105
- parseDate,
106
- formatDate,
107
- }
108
- }
109
-
110
- export default useDateFormat
@@ -1,92 +0,0 @@
1
- /**
2
- * Composable pour l'initialisation des dates dans le CalendarMode
3
- */
4
- import { parseDate } from './useDateFormat'
5
-
6
- // Types
7
- export type DateValue = string | [string, string] | null
8
- export type DateInput = string | string[] | null | object
9
-
10
- /**
11
- * Initialise les dates sélectionnées à partir d'une valeur d'entrée
12
- * @param modelValue - La valeur d'entrée (peut être une chaîne, un tableau, null ou un objet)
13
- * @param displayFormat - Le format d'affichage des dates
14
- * @param returnFormat - Le format de retour des dates (optionnel)
15
- * @returns Une date, un tableau de dates ou null
16
- */
17
- export const initializeSelectedDates = (
18
- modelValue: DateInput | null,
19
- displayFormat: string,
20
- returnFormat: string = '',
21
- ): Date | Date[] | null => {
22
- if (!modelValue) return null
23
-
24
- // Déterminer le format à utiliser pour l'analyse
25
- const parseFormat = returnFormat || displayFormat
26
-
27
- if (Array.isArray(modelValue)) {
28
- if (modelValue.length >= 2) {
29
- // Essayer d'abord avec le format de retour, puis avec le format d'affichage
30
- let dates = [parseDate(modelValue[0], parseFormat), parseDate(modelValue[1], parseFormat)]
31
-
32
- // Si l'une des dates est invalide avec le format de retour, essayer avec le format d'affichage
33
- if (dates.some(date => date === null) && returnFormat) {
34
- dates = [parseDate(modelValue[0], displayFormat), parseDate(modelValue[1], displayFormat)]
35
- }
36
-
37
- // Vérifie si l'une des dates est toujours invalide
38
- if (dates.some(date => date === null)) {
39
- return []
40
- }
41
-
42
- // Vérifie si la première date est après la seconde
43
- if (dates[0] && dates[1] && dates[0] > dates[1]) {
44
- return []
45
- }
46
-
47
- // Filtrer les dates nulles et convertir en tableau de Date
48
- return dates.filter((date): date is Date => date !== null)
49
- }
50
-
51
- if (modelValue.length === 1) {
52
- // Essayer d'abord avec le format de retour, puis avec le format d'affichage
53
- let date = parseDate(modelValue[0], parseFormat)
54
-
55
- // Si la date est invalide avec le format de retour, essayer avec le format d'affichage
56
- if (date === null && returnFormat) {
57
- date = parseDate(modelValue[0], displayFormat)
58
- }
59
-
60
- return date === null ? [] : [date]
61
- }
62
-
63
- return []
64
- }
65
-
66
- // Si modelValue est un objet, on le convertit en chaîne
67
- if (typeof modelValue === 'object') {
68
- return null
69
- }
70
-
71
- // Essayer d'abord avec le format de retour, puis avec le format d'affichage
72
- let date = parseDate(modelValue, parseFormat)
73
-
74
- // Si la date est invalide avec le format de retour, essayer avec le format d'affichage
75
- if (date === null && returnFormat) {
76
- date = parseDate(modelValue, displayFormat)
77
- }
78
-
79
- return date === null ? null : date
80
- }
81
-
82
- /**
83
- * Hook composable pour l'initialisation des dates
84
- * @returns Fonction d'initialisation des dates
85
- */
86
- export function useDateInitialization() {
87
- return {
88
- initializeSelectedDates,
89
- }
90
- }
91
-
92
- export default useDateInitialization