@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
@@ -275,6 +275,13 @@
275
275
  return 'rgba(0, 0, 0, 1)'
276
276
  })
277
277
 
278
+ const clearButtonColorClass = computed(() => {
279
+ if (hasError.value) return 'error-field'
280
+ if (hasWarning.value) return 'warning-field'
281
+ if (hasSuccess.value) return 'success-field'
282
+ return 'text-iconBase'
283
+ })
284
+
278
285
  const handlePrependIconClick = () => {
279
286
  emit('prepend-icon-click')
280
287
  }
@@ -346,7 +353,7 @@
346
353
  const validationIcon = computed(() => {
347
354
  if (hasError.value) return ICONS['error']
348
355
  if (hasWarning.value) return ICONS['warning']
349
- if (hasSuccess.value && props.showSuccessMessages) return ICONS['success']
356
+ if (hasSuccess.value) return ICONS['success']
350
357
  return null
351
358
  })
352
359
 
@@ -361,7 +368,7 @@
361
368
  // Détermine s'il y a des messages d'erreur ou d'état
362
369
  const hasMessages = computed(() => {
363
370
  if (props.disableErrorHandling) return false
364
- return (props.errorMessages?.length ?? 0) > 0 || hasError.value || hasWarning.value || hasSuccess.value
371
+ return (props.errorMessages?.length ?? 0) > 0 || hasError.value || hasWarning.value || (hasSuccess.value && props.showSuccessMessages)
365
372
  })
366
373
 
367
374
  // Détermine si le helpText doit être affiché à la position du message ou en dessous
@@ -634,7 +641,7 @@
634
641
  :maxlength="props.maxlength"
635
642
  :max-errors="props.maxErrors"
636
643
  :max-width="props.maxWidth"
637
- :messages="hasError ? errors : (hasWarning ? warnings : (hasSuccess && props.showSuccessMessages ? successes : messages))"
644
+ :messages="hasError ? errors : (hasWarning ? warnings : (hasSuccess ? (props.showSuccessMessages ? successes : []) : messages))"
638
645
  :min-width="props.minWidth"
639
646
  :name="props.name"
640
647
  :persistent-clear="props.displayPersistentClear"
@@ -778,7 +785,8 @@
778
785
  <!-- Keyboard-focusable clear button -->
779
786
  <VBtn
780
787
  v-if="showClear"
781
- class="v-btn v-btn--density-compact mr-1 text-iconBase"
788
+ class="v-btn v-btn--density-compact mr-1"
789
+ :class="clearButtonColorClass"
782
790
  :aria-label="props.label ? `Vider ${props.label}` : 'Vider'"
783
791
  :title="props.label ? `Vider ${props.label}` : 'Vider'"
784
792
  :icon="mdiClose"
@@ -843,14 +851,22 @@
843
851
  }
844
852
 
845
853
  :deep(.v-icon__svg) {
846
- fill: rgb(var(--v-theme-textWarning)) !important;
854
+ fill: rgb(var(--v-theme-onWarningVariant)) !important;
847
855
  }
848
856
 
849
- :deep(.v-field) {
857
+ :deep(.v-label.v-field-label) {
850
858
  color: rgb(var(--v-theme-borderWarning)) !important;
859
+ }
860
+
861
+ :deep(.v-field) {
862
+ color: rgb(var(--v-theme-onWarningVariant)) !important;
863
+
864
+ --v-medium-emphasis-opacity: 1;
851
865
 
852
866
  .v-field__outline {
853
- color: rgb(var(--v-theme-borderWarning)) !important;
867
+ --v-field-border-opacity: 1;
868
+
869
+ color: rgb(var(--v-theme-onWarningVariant)) !important;
854
870
  }
855
871
  }
856
872
 
@@ -858,11 +874,18 @@
858
874
  opacity: 1 !important;
859
875
 
860
876
  .v-messages__message {
861
- color: rgb(var(--v-theme-borderWarning)) !important;
877
+ color: rgb(var(--v-theme-onWarningVariant)) !important;
862
878
  }
863
879
  }
864
880
  }
865
881
 
882
+ /* stylelint-disable-next-line selector-class-pattern */
883
+ .text-iconBase {
884
+ :deep(.v-icon__svg) {
885
+ fill: rgb(var(--v-theme-primary)) !important;
886
+ }
887
+ }
888
+
866
889
  .error-field {
867
890
  :deep(.v-input__details > .v-icon),
868
891
  :deep(.v-input__prepend > .v-icon),
@@ -870,11 +893,17 @@
870
893
  opacity: 1 !important;
871
894
  }
872
895
 
896
+ :deep(.v-icon__svg) {
897
+ fill: rgb(var(--v-theme-error)) !important;
898
+ }
899
+
873
900
  :deep(.v-field) {
874
- color: rgb(var(--v-theme-borderError)) !important;
901
+ color: rgb(var(--v-theme-error)) !important;
875
902
 
876
903
  .v-field__outline {
877
- color: rgb(var(--v-theme-borderError)) !important;
904
+ --v-field-border-opacity: 1;
905
+
906
+ color: rgb(var(--v-theme-error)) !important;
878
907
  }
879
908
  }
880
909
 
@@ -882,7 +911,7 @@
882
911
  opacity: 1 !important;
883
912
 
884
913
  .v-messages__message {
885
- color: rgb(var(--v-theme-borderError)) !important;
914
+ color: rgb(var(--v-theme-error)) !important;
886
915
  }
887
916
  }
888
917
  }
@@ -895,16 +924,22 @@
895
924
  }
896
925
 
897
926
  :deep(.v-icon__svg) {
898
- fill: rgb(var(--v-theme-textSuccess)) !important;
927
+ fill: rgb(var(--v-theme-onSuccessVariant)) !important;
899
928
  }
900
929
 
901
- :deep(.v-field) {
930
+ :deep(.v-label.v-field-label) {
902
931
  color: rgb(var(--v-theme-borderSuccess)) !important;
932
+ }
933
+
934
+ :deep(.v-field) {
935
+ color: rgb(var(--v-theme-onSuccessVariant)) !important;
903
936
 
904
937
  --v-medium-emphasis-opacity: 1;
905
938
 
906
939
  .v-field__outline {
907
- color: rgb(var(--v-theme-borderSuccess)) !important;
940
+ --v-field-border-opacity: 1;
941
+
942
+ color: rgb(var(--v-theme-onSuccessVariant)) !important;
908
943
  }
909
944
  }
910
945
 
@@ -912,7 +947,7 @@
912
947
  opacity: 1 !important;
913
948
 
914
949
  .v-messages__message {
915
- color: rgb(var(--v-theme-borderSuccess)) !important;
950
+ color: rgb(var(--v-theme-onSuccessVariant)) !important;
916
951
  }
917
952
  }
918
953
  }
@@ -923,13 +958,13 @@
923
958
  }
924
959
 
925
960
  :deep(.v-field--focused .v-field__outline) {
926
- color: rgb(var(--v-theme-borderAccentPrimary)) !important;
961
+ color: rgb(var(--v-theme-primary)) !important;
927
962
  opacity: 1 !important;
928
963
  }
929
964
 
930
965
  :deep(.v-input__prepend .v-icon:focus-visible),
931
966
  :deep(.v-input__append .v-icon:focus-visible) {
932
- outline: 2px solid rgb(var(--v-theme-borderAccentPrimary));
967
+ outline: 2px solid rgb(var(--v-theme-primary));
933
968
  outline-offset: 2px;
934
969
  opacity: 1;
935
970
  }
@@ -561,7 +561,7 @@ export const Chips: Story = {
561
561
  chip: true,
562
562
  options: {
563
563
  chip: {
564
- color: 'success',
564
+ color: 'onSuccessVariant',
565
565
  },
566
566
  },
567
567
  },
@@ -1,5 +1,5 @@
1
1
  import { mount } from '@vue/test-utils'
2
- import { describe, it, expect } from 'vitest'
2
+ import { describe, it, expect, vi } from 'vitest'
3
3
 
4
4
  import DataListItem from '../DataListItem.vue'
5
5
 
@@ -59,6 +59,7 @@ describe('DataListItem', () => {
59
59
  })
60
60
 
61
61
  it('renders correctly a value as plain HTML', () => {
62
+ const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {})
62
63
  const wrapper = mount(DataListItem, {
63
64
  props: {
64
65
  label: 'Test',
@@ -66,6 +67,7 @@ describe('DataListItem', () => {
66
67
  renderHtmlValue: true,
67
68
  },
68
69
  })
70
+ warnSpy.mockRestore()
69
71
 
70
72
  const elValue = wrapper.find('.sy-data-list-item-value span')
71
73
 
@@ -172,7 +172,7 @@ const meta = {
172
172
  },
173
173
  'birthDate': {
174
174
  control: 'boolean',
175
- description: 'Alias pour isBirthDate (pour compatibilité avec l\'attribut kebab-case birth-date dans les templates). ⚠️ Utiliser soit birthDate soit isBirthDate, mais pas les deux.',
175
+ description: '⚠️ **DEPRECATED** Utilisez `isBirthDate` à la place.',
176
176
  defaultValue: false,
177
177
  },
178
178
  'isOutlined': {
@@ -4,12 +4,11 @@
4
4
  import DateTextInput from '../DateTextInput/DateTextInput.vue'
5
5
  import ComplexDatePicker from '../ComplexDatePicker/ComplexDatePicker.vue'
6
6
  import { VDatePicker } from 'vuetify/components'
7
- import { useValidation, type ValidationResult, type ValidationRule } from '@/composables/validation/useValidation'
8
7
  import { useValidatable } from '@/composables/validation/useValidatable'
9
8
  import { useDateFormat } from '@/composables/date/useDateFormatDayjs'
10
- import { useDateInitialization, type DateValue, type DateInput } from '@/composables/date/useDateInitializationDayjs'
9
+ import { useDateInitialization, type DateModelValue, type DateInput } from '@/composables/date/useDateInitializationDayjs'
11
10
  import { useDatePickerAccessibility } from '@/composables/date/useDatePickerAccessibility'
12
- import { useWeekendDays, useTodayButton, useDatePickerViewMode, useDateSelection, useMonthButtonCustomization, useDisplayedDateString, useAsteriskDisplay, useDateValidation, useDatePickerState, useHolidayHighlighting, useCalendarKeyboardNavigation, useDatePickerFocusTrap } from '../composables'
11
+ import { useWeekendDays, useTodayButton, useDatePickerViewMode, useDateSelection, useMonthButtonCustomization, useDisplayedDateString, useAsteriskDisplay, useDatePickerState, useHolidayHighlighting, useCalendarKeyboardNavigation, useDatePickerFocusTrap, useDatePickerValidationBridge } from '../composables'
13
12
  import { DATE_PICKER_MESSAGES } from '../constants/messages'
14
13
  import dayjs from 'dayjs'
15
14
  import customParseFormat from 'dayjs/plugin/customParseFormat'
@@ -40,7 +39,8 @@
40
39
  const props = withDefaults(defineProps<{
41
40
  autoClamp?: boolean
42
41
  bgColor?: string
43
- birthDate?: boolean // Alias pour isBirthDate pour compatibilité avec l'attribut kebab-case birth-date
42
+ /** @deprecated Utilisez isBirthDate à la place */
43
+ birthDate?: boolean
44
44
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
45
  customRules?: { type: string, options: any }[]
46
46
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -241,76 +241,14 @@
241
241
  }
242
242
 
243
243
  const emit = defineEmits<{
244
- (e: 'update:modelValue', value: DateValue): void
244
+ (e: 'update:modelValue', value: DateModelValue): void
245
245
  (e: 'closed'): void
246
246
  (e: 'focus'): void
247
247
  (e: 'blur'): void
248
- (e: 'input', value: DateValue): void
249
- (e: 'date-selected', value: DateValue): void
248
+ (e: 'input', value: DateModelValue): void
249
+ (e: 'date-selected', value: DateModelValue): void
250
250
  }>()
251
251
 
252
- const validation = useValidation({
253
- showSuccessMessages: props.showSuccessMessages,
254
- fieldIdentifier: 'Date',
255
- disableErrorHandling: props.disableErrorHandling,
256
- })
257
- const { errors, warnings, successes, validateField: baseValidateField, clearValidation: baseClearValidation } = validation
258
-
259
- const clearValidation = () => baseClearValidation()
260
-
261
- watch(() => props.readonly, () => {
262
- // When toggling readonly, reset validation state to avoid stale success/errors
263
- errors.value = []
264
- warnings.value = []
265
- successes.value = []
266
- })
267
-
268
- const validateField = (
269
- value: unknown,
270
- rules: ValidationRule[] = [],
271
- warningRules: ValidationRule[] = [],
272
- successRules: ValidationRule[] = [],
273
- ): Promise<ValidationResult> | ValidationResult => {
274
- if (props.readonly) {
275
- return {
276
- hasError: false,
277
- hasWarning: false,
278
- hasSuccess: false,
279
- state: { errors: [], warnings: [], successes: [] },
280
- }
281
- }
282
-
283
- return baseValidateField(value, rules, warningRules, successRules)
284
- }
285
-
286
- const validateFieldForDateValidation = (
287
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- compat signature with useDateValidation
288
- value: any,
289
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- compat signature with useDateValidation
290
- rules: any[] = [],
291
- // eslint-disable-next-line @typescript-eslint/no-explicit-any -- compat signature with useDateValidation
292
- warningRules: any[] = [],
293
- ): ValidationResult => {
294
- if (props.readonly) {
295
- return {
296
- hasError: false,
297
- hasWarning: false,
298
- hasSuccess: false,
299
- state: {
300
- errors: [],
301
- warnings: [],
302
- successes: [],
303
- },
304
- }
305
- }
306
-
307
- return validateField(value, rules, warningRules, []) as ValidationResult
308
- }
309
-
310
- const errorMessages = errors
311
- const warningMessages = warnings
312
- const successMessages = successes
313
-
314
252
  // Variable pour éviter les mises à jour récursives
315
253
  const isUpdatingFromInternal = ref(false)
316
254
  const preventCloseOnKeyboardNavigation = ref(false)
@@ -318,81 +256,40 @@
318
256
  const currentRangeIsValid = ref(true)
319
257
  const getRangeValidationError = ref('')
320
258
 
321
- const { validateDates: coreValidateDates } = useDateValidation({
259
+ const {
260
+ validation,
261
+ errors,
262
+ warnings,
263
+ successes,
264
+ clearValidation,
265
+ validateDates,
266
+ } = useDatePickerValidationBridge({
267
+ showSuccessMessages: props.showSuccessMessages,
268
+ disableErrorHandling: props.disableErrorHandling,
322
269
  noCalendar: props.noCalendar,
323
- // On garde la logique "required" spécifique à CalendarMode
324
- required: false,
270
+ required: props.required,
325
271
  displayRange: props.displayRange,
326
- disableErrorHandling: props.disableErrorHandling,
327
272
  customRules: computed(() => props.customRules),
328
273
  customWarningRules: computed(() => props.customWarningRules),
329
274
  selectedDates: selectedDates as Ref<DateObjectValue>,
330
275
  isUpdatingFromInternal,
331
276
  currentRangeIsValid,
332
277
  getRangeValidationError,
333
- clearValidation,
334
- validateField: validateFieldForDateValidation,
335
- errors,
336
- warnings,
337
- successes,
278
+ readonly: computed(() => props.readonly),
279
+ skipValidationWhenReadonly: true,
280
+ useCalendarModeRequiredFlow: true,
281
+ isInitialValidation,
282
+ isValidateOnBlur: computed(() => props.isValidateOnBlur),
283
+ onblur,
338
284
  })
339
285
 
340
- // Fonction pour valider les dates
341
- const validateDates = async (forceValidation = false) => {
342
- if (props.noCalendar) {
343
- // En mode no-calendar, on délègue la validation au DateTextInput
344
- return
345
- }
346
-
347
- // Réinitialiser la validation
348
- clearValidation()
349
-
350
- // Si la gestion des erreurs est désactivée, on effectue la validation interne
351
- // mais on n'ajoute pas les messages d'erreur
352
- const shouldDisplayErrors = !props.disableErrorHandling
353
-
354
- // Vérifier si le champ est requis et vide
355
- if ((forceValidation || !isUpdatingFromInternal.value) && props.required && (!selectedDates.value || (Array.isArray(selectedDates.value) && selectedDates.value.length === 0))) {
356
- if (props.readonly) {
357
- return
358
- }
359
- // Ne pas afficher d'erreur si on est sur une perte de focus et si isValidateOnBlur est false
360
- if (onblur.value && !props.isValidateOnBlur) {
361
- return
362
- }
363
- // Ne pas afficher d'erreur si on est dans le contexte du mounted initial
364
- if (shouldDisplayErrors && (!isInitialValidation.value || forceValidation)) {
365
- errors.value.push(DATE_PICKER_MESSAGES.ERROR_REQUIRED)
366
- }
367
- return
368
- }
369
- // Permettre aux custom rules de s'exécuter même sur des champs vides
370
- if (!selectedDates.value) {
371
- if (!props.customRules || props.customRules.length === 0) return
372
-
373
- if (shouldDisplayErrors && (!isInitialValidation.value || forceValidation)) {
374
- // Comportement historique : exécuter directement les règles personnalisées même si la valeur est vide
375
- await validateField(
376
- selectedDates.value,
377
- props.customRules,
378
- props.customWarningRules,
379
- )
380
- // Dédoublonner les messages comme auparavant
381
- errors.value = [...new Set(errors.value)]
382
- warnings.value = [...new Set(warnings.value)]
383
- successes.value = [...new Set(successes.value)]
384
- }
385
- return
386
- }
387
-
388
- // Ne pas afficher d'erreurs de custom rules si on est dans le contexte du mounted initial
389
- if (shouldDisplayErrors && (!isInitialValidation.value || forceValidation)) {
390
- await coreValidateDates(forceValidation)
391
- }
392
- }
286
+ const errorMessages = errors
287
+ const warningMessages = warnings
288
+ const successMessages = validation.displaySuccesses
289
+ const isOnSuccess = computed(() => successes.value.length > 0 && errors.value.length === 0 && warnings.value.length === 0)
393
290
 
394
291
  // Fonction centralisée pour mettre à jour le modèle
395
- const updateModel = async (value: DateValue) => {
292
+ const updateModel = async (value: DateModelValue) => {
396
293
  // Éviter les mises à jour inutiles
397
294
  if (JSON.stringify(value) === JSON.stringify(props.modelValue)) return
398
295
 
@@ -407,9 +304,9 @@
407
304
  }
408
305
  finally {
409
306
  // S'assurer que le flag est toujours réinitialisé
410
- setTimeout(() => {
307
+ queueMicrotask(() => {
411
308
  isUpdatingFromInternal.value = false
412
- }, 0)
309
+ })
413
310
  }
414
311
  }
415
312
 
@@ -434,7 +331,7 @@
434
331
  if (Array.isArray(newValue) && props.displayRange && newValue.length >= 2 && props.noCalendar) {
435
332
  // Cas spécifique noCalendar + displayRange : conserver la chaîne de plage complète
436
333
  const start = newValue[0]
437
- const end = newValue[1]
334
+ const end = newValue[newValue.length - 1]
438
335
  if (start && end) {
439
336
  textInputValue.value = `${formatDate(start, props.format)} - ${formatDate(end, props.format)}`
440
337
  }
@@ -445,9 +342,9 @@
445
342
  }
446
343
  }
447
344
  finally {
448
- setTimeout(() => {
345
+ queueMicrotask(() => {
449
346
  isUpdatingFromInternal.value = false
450
- }, 0)
347
+ })
451
348
  }
452
349
  }
453
350
  else {
@@ -465,7 +362,7 @@
465
362
  })
466
363
 
467
364
  // Utilisation du composable pour gérer la sélection de dates
468
- const { updateSelectedDates, rangeBoundaryDates, resetRange } = useDateSelection(
365
+ const { updateSelectedDates, rangeBoundaryDates, generateDateRange, resetRange } = useDateSelection(
469
366
  parseDate,
470
367
  selectedDates,
471
368
  props.format,
@@ -490,11 +387,12 @@
490
387
  initializeSelectedDates,
491
388
  validateDates,
492
389
  updateModel,
390
+ generateDateRange,
493
391
  })
494
392
 
495
393
  // Gestionnaire pour les mises à jour du DateTextInput en mode no-calendar
496
- const handleDateTextInputUpdate = async (value: DateValue) => {
497
- if (isUpdatingFromInternal.value) return
394
+ const handleDateTextInputUpdate = async (value: DateModelValue) => {
395
+ if (isUpdatingFromInternal.value && !props.noCalendar) return
498
396
 
499
397
  try {
500
398
  isUpdatingFromInternal.value = true
@@ -514,7 +412,7 @@
514
412
  const endDate = parseDate(endDateStr, props.dateFormatReturn || props.format)
515
413
 
516
414
  if (startDate && endDate) {
517
- selectedDates.value = [startDate, endDate]
415
+ selectedDates.value = generateDateRange(startDate, endDate)
518
416
  displayFormattedDate.value = `${formatDate(startDate, props.format)} - ${formatDate(endDate, props.format)}`
519
417
  }
520
418
  }
@@ -535,7 +433,7 @@
535
433
  }
536
434
 
537
435
  // Gestionnaire pour les événements date-selected du DateTextInput
538
- const handleDateTextInputSelection = async (value: DateValue) => {
436
+ const handleDateTextInputSelection = async (value: DateModelValue) => {
539
437
  if (isUpdatingFromInternal.value) return
540
438
 
541
439
  // Mettre à jour le modèle avec la valeur sélectionnée
@@ -774,7 +672,6 @@
774
672
 
775
673
  // Utilisation du composable pour gérer le mode d'affichage du CalendarMode
776
674
  const { currentViewMode, handleViewModeUpdate, handleYearUpdate, handleMonthUpdate, resetViewMode } = useDatePickerViewMode(
777
- // Fonction qui retourne la valeur actuelle de isBirthDate (combinaison de isBirthDate et birthDate)
778
675
  () => props.isBirthDate || props.birthDate,
779
676
  // Fonction qui retourne l'état de la date sélectionnée
780
677
  () => selectedDates.value,
@@ -1061,7 +958,8 @@
1061
958
  :class="[getMessageClasses(), 'label-hidden-on-focus']"
1062
959
  :error-messages="errorMessages"
1063
960
  :warning-messages="warningMessages"
1064
- :success-messages="props.showSuccessMessages ? successMessages : []"
961
+ :success-messages="successMessages"
962
+ :has-success="isOnSuccess"
1065
963
  :disabled="props.disabled"
1066
964
  :disable-click-button="false"
1067
965
  :readonly="true"
@@ -1214,13 +1112,13 @@
1214
1112
  .v-messages__message--success {
1215
1113
  :deep(.v-input__control),
1216
1114
  :deep(.v-messages__message) {
1217
- color: rgb(var(--v-theme-textSuccess)) !important;
1115
+ color: rgb(var(--v-theme-onSuccessVariant)) !important;
1218
1116
 
1219
1117
  --v-medium-emphasis-opacity: 1;
1220
1118
  }
1221
1119
 
1222
1120
  .v-field--active & {
1223
- color: rgb(var(--v-theme-borderSuccess)) !important;
1121
+ color: rgb(var(--v-theme-onSuccessVariant)) !important;
1224
1122
  }
1225
1123
  }
1226
1124
 
@@ -1238,33 +1136,33 @@
1238
1136
 
1239
1137
  .v-messages__message--error {
1240
1138
  :deep(.v-input__control) {
1241
- color: rgb(var(--v-theme-textError)) !important;
1139
+ color: rgb(var(--v-theme-error)) !important;
1242
1140
 
1243
1141
  --v-medium-emphasis-opacity: 1;
1244
1142
  }
1245
1143
 
1246
1144
  :deep(.v-messages__message) {
1247
- color: rgb(var(--v-theme-textError)) !important;
1145
+ color: rgb(var(--v-theme-error)) !important;
1248
1146
  }
1249
1147
 
1250
1148
  .v-field--active & {
1251
- color: rgb(var(--v-theme-borderError)) !important;
1149
+ color: rgb(var(--v-theme-error)) !important;
1252
1150
  }
1253
1151
  }
1254
1152
 
1255
1153
  .v-messages__message--warning {
1256
1154
  :deep(.v-input__control) {
1257
- color: rgb(var(--v-theme-textWarning)) !important;
1155
+ color: rgb(var(--v-theme-onWarningVariant)) !important;
1258
1156
 
1259
1157
  --v-medium-emphasis-opacity: 1;
1260
1158
  }
1261
1159
 
1262
1160
  :deep(.v-messages__message) {
1263
- color: rgb(var(--v-theme-textWarning)) !important;
1161
+ color: rgb(var(--v-theme-onWarningVariant)) !important;
1264
1162
  }
1265
1163
 
1266
1164
  .v-field--active & {
1267
- color: rgb(var(--v-theme-textWarning)) !important;
1165
+ color: rgb(var(--v-theme-onWarningVariant)) !important;
1268
1166
  }
1269
1167
  }
1270
1168
 
@@ -1305,7 +1203,7 @@
1305
1203
  }
1306
1204
 
1307
1205
  :deep(.v-date-picker-month__day .v-btn:hover) {
1308
- background-color: rgb(var(--v-theme-backgroundMain));
1206
+ background-color: rgb(var(--v-theme-background));
1309
1207
  }
1310
1208
 
1311
1209
  :deep(.v-date-picker-month__day--selected, .v-date-picker-month__day--adjacent) {
@@ -1313,7 +1211,7 @@
1313
1211
  }
1314
1212
 
1315
1213
  :deep(.v-date-picker-month__day--selected .v-btn:hover) {
1316
- background-color: rgb(var(--v-theme-backgroundAccentContrasted)) !important;
1214
+ background-color: rgb(var(--v-theme-primaryVariant)) !important;
1317
1215
  }
1318
1216
 
1319
1217
  .fade-enter-active,