@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
@@ -0,0 +1,205 @@
1
+ import { computed, watch, type Ref } from 'vue'
2
+ import { useValidation, type ValidationResult, type ValidationRule } from '@/composables/validation/useValidation'
3
+ import { DATE_PICKER_MESSAGES } from '../constants/messages'
4
+ import { useDateValidation } from './useDateValidation'
5
+ import type { DateObjectValue } from '../types'
6
+
7
+ export type DatePickerValidationRule = {
8
+ type: string
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- DatePicker rules are still legacy-shaped during migration.
10
+ options: any
11
+ }
12
+
13
+ export type DatePickerValidationBridgeOptions = {
14
+ showSuccessMessages: boolean
15
+ disableErrorHandling: boolean
16
+ noCalendar: boolean
17
+ required: boolean
18
+ displayRange: boolean
19
+ customRules: Ref<DatePickerValidationRule[]>
20
+ customWarningRules: Ref<DatePickerValidationRule[]>
21
+ selectedDates: Ref<DateObjectValue>
22
+ isUpdatingFromInternal: Ref<boolean>
23
+ currentRangeIsValid: Ref<boolean>
24
+ getRangeValidationError: Ref<string>
25
+ readonly?: Ref<boolean>
26
+ skipValidationWhenReadonly?: boolean
27
+ useCalendarModeRequiredFlow?: boolean
28
+ isInitialValidation?: Ref<boolean>
29
+ isValidateOnBlur?: Ref<boolean>
30
+ onblur?: Ref<boolean>
31
+ fieldIdentifier?: string
32
+ revalidateOnCustomRulesChange?: boolean
33
+ }
34
+
35
+ const emptyValidationResult = (): ValidationResult => ({
36
+ hasError: false,
37
+ hasWarning: false,
38
+ hasSuccess: false,
39
+ state: {
40
+ errors: [],
41
+ warnings: [],
42
+ successes: [],
43
+ },
44
+ })
45
+
46
+ export function useDatePickerValidationBridge(options: DatePickerValidationBridgeOptions) {
47
+ const validation = useValidation({
48
+ showSuccessMessages: options.showSuccessMessages,
49
+ fieldIdentifier: options.fieldIdentifier ?? 'Date',
50
+ disableErrorHandling: options.disableErrorHandling,
51
+ })
52
+
53
+ const {
54
+ errors,
55
+ warnings,
56
+ successes,
57
+ validateField: baseValidateField,
58
+ clearValidation: baseClearValidation,
59
+ } = validation
60
+
61
+ const clearValidation = () => baseClearValidation()
62
+
63
+ if (options.skipValidationWhenReadonly && options.readonly) {
64
+ watch(options.readonly, () => {
65
+ errors.value = []
66
+ warnings.value = []
67
+ successes.value = []
68
+ })
69
+ }
70
+
71
+ const validateField = (
72
+ value: unknown,
73
+ rules: ValidationRule[] = [],
74
+ warningRules: ValidationRule[] = [],
75
+ successRules: ValidationRule[] = [],
76
+ ): Promise<ValidationResult> | ValidationResult => {
77
+ if (options.skipValidationWhenReadonly && options.readonly?.value) {
78
+ return emptyValidationResult()
79
+ }
80
+
81
+ return baseValidateField(value, rules, warningRules, successRules)
82
+ }
83
+
84
+ const validateFieldForDateValidation = (
85
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Compatibility signature for legacy useDateValidation.
86
+ value: any,
87
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Compatibility signature for legacy useDateValidation.
88
+ rules: any[] = [],
89
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Compatibility signature for legacy useDateValidation.
90
+ warningRules: any[] = [],
91
+ ): ValidationResult | Promise<ValidationResult> => {
92
+ return validateField(value, rules, warningRules, [])
93
+ }
94
+
95
+ const { validateDates: coreValidateDates } = useDateValidation({
96
+ noCalendar: options.noCalendar,
97
+ required: options.useCalendarModeRequiredFlow ? false : options.required,
98
+ displayRange: options.displayRange,
99
+ disableErrorHandling: options.disableErrorHandling,
100
+ customRules: computed(() => options.customRules.value),
101
+ customWarningRules: computed(() => options.customWarningRules.value),
102
+ selectedDates: options.selectedDates,
103
+ isUpdatingFromInternal: options.isUpdatingFromInternal,
104
+ currentRangeIsValid: options.currentRangeIsValid,
105
+ getRangeValidationError: options.getRangeValidationError,
106
+ clearValidation,
107
+ validateField: validateFieldForDateValidation,
108
+ errors,
109
+ warnings,
110
+ successes,
111
+ })
112
+
113
+ if (options.revalidateOnCustomRulesChange) {
114
+ watch(options.customRules, () => {
115
+ if (options.selectedDates.value === null) {
116
+ return
117
+ }
118
+
119
+ queueMicrotask(async () => {
120
+ clearValidation()
121
+
122
+ const datesToValidate = Array.isArray(options.selectedDates.value)
123
+ ? options.selectedDates.value
124
+ : [options.selectedDates.value]
125
+
126
+ for (const date of datesToValidate) {
127
+ await Promise.resolve(validateField(
128
+ date,
129
+ options.customRules.value,
130
+ options.customWarningRules.value,
131
+ ))
132
+ }
133
+ })
134
+ }, { deep: true })
135
+ }
136
+
137
+ const validateCalendarModeDates = async (forceValidation = false) => {
138
+ if (!options.useCalendarModeRequiredFlow) {
139
+ return await Promise.resolve(coreValidateDates(forceValidation))
140
+ }
141
+
142
+ if (options.noCalendar) {
143
+ return
144
+ }
145
+
146
+ clearValidation()
147
+
148
+ const shouldDisplayErrors = !options.disableErrorHandling
149
+ const hasNoSelection = !options.selectedDates.value || (Array.isArray(options.selectedDates.value) && options.selectedDates.value.length === 0)
150
+
151
+ if ((forceValidation || !options.isUpdatingFromInternal.value) && options.required && hasNoSelection) {
152
+ if (options.readonly?.value) {
153
+ return
154
+ }
155
+ if (options.onblur?.value && !options.isValidateOnBlur?.value) {
156
+ return
157
+ }
158
+ if (shouldDisplayErrors && (!options.isInitialValidation?.value || forceValidation)) {
159
+ errors.value.push(DATE_PICKER_MESSAGES.ERROR_REQUIRED)
160
+ }
161
+ return
162
+ }
163
+
164
+ if (!options.selectedDates.value) {
165
+ if (!options.customRules.value || options.customRules.value.length === 0) return
166
+
167
+ if (shouldDisplayErrors && (!options.isInitialValidation?.value || forceValidation)) {
168
+ await validateField(
169
+ options.selectedDates.value,
170
+ options.customRules.value,
171
+ options.customWarningRules.value,
172
+ )
173
+ errors.value = [...new Set(errors.value)]
174
+ warnings.value = [...new Set(warnings.value)]
175
+ successes.value = [...new Set(successes.value)]
176
+ }
177
+ return
178
+ }
179
+
180
+ if (shouldDisplayErrors && (!options.isInitialValidation?.value || forceValidation)) {
181
+ return await Promise.resolve(coreValidateDates(forceValidation))
182
+ }
183
+ }
184
+
185
+ const validateDates = (forceValidation = false) => {
186
+ if (!options.useCalendarModeRequiredFlow) {
187
+ return coreValidateDates(forceValidation)
188
+ }
189
+
190
+ return validateCalendarModeDates(forceValidation)
191
+ }
192
+
193
+ return {
194
+ validation,
195
+ errors,
196
+ warnings,
197
+ successes,
198
+ errorMessages: errors,
199
+ warningMessages: warnings,
200
+ successMessages: validation.displaySuccesses,
201
+ clearValidation,
202
+ validateField,
203
+ validateDates,
204
+ }
205
+ }
@@ -2,6 +2,7 @@ import { ref, computed } from 'vue'
2
2
  import dayjs from 'dayjs'
3
3
  import customParseFormat from 'dayjs/plugin/customParseFormat'
4
4
  import { extractRangeParts as extractRangePartsUtil, hasRangeSeparator as hasRangeSeparatorUtil, isValidDateRange } from '../utils/dateFormattingUtils'
5
+ import { DATE_PICKER_MESSAGES } from '../constants/messages'
5
6
 
6
7
  // Initialiser les plugins dayjs
7
8
  dayjs.extend(customParseFormat)
@@ -23,7 +24,7 @@ export function useDateRangeInput(
23
24
  // Stockage temporaire pour la deuxième date saisie
24
25
  const secondDate = ref<Date | null>(null)
25
26
  // Séparateur de plage
26
- const rangeSeparator = ' - '
27
+ const rangeSeparator = DATE_PICKER_MESSAGES.RANGE_SEPARATOR
27
28
 
28
29
  /**
29
30
  * Vérifie si une chaîne de caractères contient un séparateur de plage
@@ -1,5 +1,6 @@
1
1
  import { ref } from 'vue'
2
2
  import type { Ref } from 'vue'
3
+ import { DATE_PICKER_MESSAGES } from '../constants/messages'
3
4
 
4
5
  /**
5
6
  * Composable pour gérer la sélection de dates dans les composants CalendarMode
@@ -101,7 +102,7 @@ export function useDateSelection(
101
102
  }
102
103
  else if (typeof input === 'string') {
103
104
  // Mode plage de dates
104
- const dates = input.split(' - ')
105
+ const dates = input.split(DATE_PICKER_MESSAGES.RANGE_SEPARATOR)
105
106
  if (dates.length === 2) {
106
107
  const startDate = parseDate(dates[0]!, format)
107
108
  const endDate = parseDate(dates[1]!, format)
@@ -1,6 +1,6 @@
1
1
  import type { Ref } from 'vue'
2
2
  import type { ValidationResult } from '@/composables/validation/useValidation'
3
- import type { DateValue } from '@/composables/date/useDateInitializationDayjs'
3
+ import type { DateModelValue } from '@/composables/date/useDateInitializationDayjs'
4
4
  import { useManualDateValidation } from './useManualDateValidation'
5
5
 
6
6
  export interface UseDateTextFieldManualValidationOptions {
@@ -37,7 +37,7 @@ export interface UseDateTextFieldResetOptions {
37
37
  inputValue: Ref<string>
38
38
  selectedDates: Ref<unknown>
39
39
  resetState: () => void
40
- emitModel: (value: DateValue) => void
40
+ emitModel: (value: DateModelValue) => void
41
41
  }
42
42
 
43
43
  export interface UseDateTextFieldOptions {
@@ -1,5 +1,5 @@
1
1
  import { type Ref, ref } from 'vue'
2
- import { type DateValue } from '@/composables/date/useDateInitializationDayjs'
2
+ import { type DateModelValue } from '@/composables/date/useDateInitializationDayjs'
3
3
  import { type DateObjectValue } from '../types'
4
4
  import { DATE_PICKER_MESSAGES } from '../constants/messages'
5
5
 
@@ -27,7 +27,7 @@ export const useInputBlurHandler = (options: {
27
27
  validateDateFormat: (dateStr: string) => { isValid: boolean, message: string }
28
28
  parseDate: (dateStr: string, format: string) => Date | null
29
29
  formatDate: (date: Date, format: string) => string
30
- updateModel: (value: DateValue) => void
30
+ updateModel: (value: DateModelValue) => void
31
31
  validateManualInput: (value: string) => boolean | Promise<boolean>
32
32
 
33
33
  // Émetteurs d'événements
@@ -210,7 +210,7 @@
210
210
 
211
211
  <v-btn
212
212
  size="small"
213
- color="success"
213
+ color="onSuccessVariant"
214
214
  class="mr-2"
215
215
  @click="setTestDates"
216
216
  >
@@ -207,7 +207,7 @@
207
207
 
208
208
  <v-btn
209
209
  size="small"
210
- color="success"
210
+ color="onSuccessVariant"
211
211
  class="mr-2"
212
212
  @click="setTestDates"
213
213
  >
@@ -0,0 +1,75 @@
1
+ import { mount } from '@vue/test-utils'
2
+ import { describe, it, expect } from 'vitest'
3
+ import DateTextInput from '../DateTextInput/DateTextInput.vue'
4
+
5
+ /**
6
+ * Tests pour couvrir les méthodes exposées (focus, blur)
7
+ * Zones non couvertes : DateTextInput.vue lignes 1138-1144
8
+ */
9
+ describe('Exposed Methods Coverage Tests', () => {
10
+ /**
11
+ * Test 1 : Méthode focus() exposée
12
+ * Couvre ligne 1138-1140
13
+ */
14
+ it('expose la méthode focus() pour le focus programmatique', async () => {
15
+ const wrapper = mount(DateTextInput, {
16
+ props: {
17
+ modelValue: '',
18
+ label: 'Date',
19
+ format: 'DD/MM/YYYY',
20
+ },
21
+ attachTo: document.body,
22
+ })
23
+
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
25
+ expect(typeof (wrapper.vm as any).focus).toBe('function')
26
+ // Appel réel pour couvrir le corps de la méthode (ligne 1139)
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ expect(() => (wrapper.vm as any).focus()).not.toThrow()
29
+
30
+ wrapper.unmount()
31
+ })
32
+
33
+ /**
34
+ * Test 2 : Méthode blur() exposée
35
+ * Couvre ligne 1142-1144
36
+ */
37
+ it('expose la méthode blur() pour le blur programmatique', async () => {
38
+ const wrapper = mount(DateTextInput, {
39
+ props: {
40
+ modelValue: '',
41
+ label: 'Date',
42
+ format: 'DD/MM/YYYY',
43
+ },
44
+ attachTo: document.body,
45
+ })
46
+
47
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
+ expect(typeof (wrapper.vm as any).blur).toBe('function')
49
+ // Appel réel pour couvrir le corps de la méthode (ligne 1142-1143)
50
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
51
+ expect(() => (wrapper.vm as any).blur()).not.toThrow()
52
+
53
+ wrapper.unmount()
54
+ })
55
+
56
+ /**
57
+ * Test 3 : validateOnSubmit exposé
58
+ */
59
+ it('expose validateOnSubmit pour validation externe', async () => {
60
+ const wrapper = mount(DateTextInput, {
61
+ props: {
62
+ modelValue: '',
63
+ label: 'Date',
64
+ format: 'DD/MM/YYYY',
65
+ required: true,
66
+ },
67
+ })
68
+
69
+ // La méthode doit exister
70
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
71
+ expect((wrapper.vm as any).validateOnSubmit).toBeDefined()
72
+
73
+ wrapper.unmount()
74
+ })
75
+ })
@@ -9,7 +9,6 @@
9
9
  export type DateObjectValue = Date | (Date | null)[] | null
10
10
 
11
11
  /**
12
- * Alias pour maintenir la compatibilité avec le code existant
13
- * @deprecated Utilisez DateObjectValue pour les objets Date ou importez DateValue depuis useDateInitializationDayjs pour les chaînes
12
+ * @deprecated Utilisez DateObjectValue pour les objets Date ou importez DateModelValue depuis useDateInitializationDayjs pour les chaînes
14
13
  */
15
14
  export type DateValue = DateObjectValue
@@ -730,7 +730,7 @@ export const VuetifyOptions: Story = {
730
730
  rounded: 'xl',
731
731
  },
732
732
  cardTitle: {
733
- class: 'pa-5 mb-4 accent--text',
733
+ class: 'pa-5 mb-4 secondary--text',
734
734
  },
735
735
  closeBtn: {
736
736
  class: {
@@ -738,14 +738,14 @@ export const VuetifyOptions: Story = {
738
738
  },
739
739
  },
740
740
  icon: {
741
- color: 'accent',
741
+ color: 'secondary',
742
742
  },
743
743
  cancelBtn: {
744
- color: 'accent',
744
+ color: 'secondary',
745
745
  text: false,
746
746
  },
747
747
  confirmBtn: {
748
- color: 'accent',
748
+ color: 'secondary',
749
749
  text: true,
750
750
  },
751
751
  },
@@ -813,7 +813,7 @@ export const VuetifyOptions: Story = {
813
813
  rounded: 'xl',
814
814
  },
815
815
  cardTitle: {
816
- class: 'pa-5 mb-4 accent--text',
816
+ class: 'pa-5 mb-4 secondary--text',
817
817
  },
818
818
  closeBtn: {
819
819
  class: {
@@ -821,14 +821,14 @@ export const VuetifyOptions: Story = {
821
821
  },
822
822
  },
823
823
  icon: {
824
- color: 'accent',
824
+ color: 'secondary',
825
825
  },
826
826
  cancelBtn: {
827
- color: 'accent',
827
+ color: 'secondary',
828
828
  text: false,
829
829
  },
830
830
  confirmBtn: {
831
- color: 'accent',
831
+ color: 'secondary',
832
832
  text: true,
833
833
  },
834
834
  }
@@ -253,7 +253,7 @@
253
253
  }
254
254
 
255
255
  .v-btn--icon {
256
- color: rgb(var(--v-theme-iconBase));
256
+ color: rgb(var(--v-theme-primary));
257
257
  position: absolute;
258
258
  right: 24px;
259
259
  }
@@ -1,14 +1,13 @@
1
- import { Meta, Story, Primary } from '@storybook/addon-docs';
1
+ import { Meta } from '@storybook/addon-docs';
2
2
  import * as DialogBoxStories from '../DialogBox.stories.ts';
3
3
  import '@/stories/styles/shared.css';
4
4
  import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
5
+
5
6
  import {
6
- AccessibilityGuideLayout,
7
- CriteriaSection,
8
- CriteriaCard,
9
- DemoSection,
10
- BestPracticesSection,
11
- ResourcesSection,
7
+ AccessibilityGuideLayout,
8
+ CriteriaSection,
9
+ CriteriaCard,
10
+ AuditSection
12
11
  } from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
13
12
 
14
13
  <Meta of={DialogBoxStories} />
@@ -16,20 +15,85 @@ import {
16
15
  componentName="DialogBox"
17
16
  iconSrc={AccessibilityIcon}
18
17
  >
19
- <div class="mt-2">
20
- <p>Rapport d’audit manuel : <a href="/audits/DialogBox.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
21
- <p style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/798" target="_blank" style={{color:'#0C41BD'}}>issue #798</a>)</p>
22
- </div>
23
- <CriteriaSection>
24
- <CriteriaCard icon="🧩" title="Niveau de titre configurable via la prop headingLevel">
25
- <ul>
26
- <li>Le niveau du titre (h1 à h6) est défini grâce à la propriété <strong>headingLevel</strong> déclarée dans le composant. Si aucune valeur n’est fournie, le composant applique par défaut un titre de niveau h2, défini dans l’implémentation du composant.</li>
27
- <code>&lt;DialogBox
28
- :heading-level="2" /&gt; </code>
29
-
30
- <li><strong>Accessibilité</strong> : Permet que la hiérarchie entre les titres soit pertinente (critère 9.1.1 RGAA) </li>
31
- </ul>
32
- </CriteriaCard>
33
- </CriteriaSection>
18
+ <AuditSection>
19
+ <div>Rapport d’audit manuel : <a href="/audits/DialogBox.xlsx" style={{color: '#0C41BD'}}>Voir le rapport</a></div>
20
+ <div style={{color: 'grey', fontSize: '14px', marginTop: '0px'}}>
21
+ Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/798" target="_blank" style={{color: '#0C41BD'}}>issue #798</a>)
22
+ </div>
23
+ </AuditSection>
24
+ <CriteriaSection>
25
+ <CriteriaCard icon="🧩" title="Niveau de titre configurable via la prop headingLevel">
26
+ <ul>
27
+ <li>Le niveau du titre (h1 à h6) est défini grâce à la propriété <strong>headingLevel</strong> déclarée dans le composant. Si aucune valeur n’est fournie, le composant applique par défaut un titre de niveau h2, défini dans l’implémentation du composant.</li>
28
+ <code>&lt;DialogBox
29
+ :heading-level="2" /&gt; </code>
30
+
31
+ <li><strong>Accessibilité</strong> : Permet que la hiérarchie entre les titres soit pertinente (critère 9.1.1 RGAA) </li>
32
+
33
+ <li>Si aucune valeur n’est fournie, le composant applique par défaut un titre de niveau<strong> h2</strong>.</li>
34
+
35
+ <li>Ce titre est rendu via le composant<strong> SyHeading</strong>, ce qui garantit une structure sémantique correcte dans le DOM.</li>
36
+
37
+ <li><strong>Accessibilité :</strong> permet de respecter une hiérarchie de titres cohérente et pertinente pour les technologies d’assistance (critère 9.1.1 RGAA).</li>
38
+ </ul>
39
+ </CriteriaCard>
40
+
41
+ <CriteriaCard icon="🎯" title="Gestion automatique du focus à l’ouverture et à la fermeture">
42
+ <ul>
43
+ <li>À l’ouverture de la modale, le focus est déplacé soit sur le bouton de validation (<strong>autofocusValidateBtn</strong>), soit sur la zone de titre si la modale est draggable.</li>
44
+
45
+ <li>À la fermeture, le focus est automatiquement restauré sur l’élément qui avait le focus avant l’ouverture.</li>
46
+
47
+ <li><strong>Accessibilité :</strong> évite la perte de contexte pour les utilisateurs clavier et lecteurs d’écran (critère 7.3 RGAA).</li>
48
+ </ul>
49
+ </CriteriaCard>
50
+
51
+ <CriteriaCard icon="⌨️" title="Piégeage du focus dans la boîte de dialogue">
52
+ <ul>
53
+ <li>La navigation clavier avec la touche<strong> Tab </strong>est maintenue à l’intérieur de la modale.</li>
54
+
55
+ <li>Le focus boucle automatiquement entre le premier et le dernier élément interactif.</li>
56
+
57
+ <li>La combinaison<strong> Shift + Tab </strong>est également gérée.</li>
58
+
59
+ <li><strong>Accessibilité :</strong> empêche la sortie involontaire du focus hors de la fenêtre modale (critère 7.1 RGAA).</li>
60
+ </ul>
61
+ </CriteriaCard>
62
+
63
+ <CriteriaCard icon="🏷️" title="Association correcte du titre avec aria-labelledby">
64
+ <ul>
65
+ <li>Le composant utilise un identifiant unique généré avec <strong>useId() </strong>.</li>
66
+
67
+ <li>Cet identifiant est appliqué au titre et référencé via <strong> aria-labelledby </strong>sur le composant dialog.</li>
68
+
69
+ <li>Le composant déclare également<strong> aria-modal="true" </strong>.</li>
70
+
71
+ <li><strong>Accessibilité :</strong> permet aux lecteurs d’écran d’annoncer correctement le contexte de la fenêtre modale (critère 7.1 RGAA).</li>
72
+ </ul>
73
+ </CriteriaCard>
74
+
75
+ <CriteriaCard icon="✋" title="Support clavier du mode draggable">
76
+ <ul>
77
+ <li>Lorsque la prop<strong> draggable </strong>est activée, le titre devient focusable avec <strong>tabindex="0"</strong>.</li>
78
+
79
+ <li>Le déplacement peut être réalisé avec les flèches clavier (gauche, droite, haut, bas).</li>
80
+
81
+ <li>Des attributs<strong> title </strong>et <strong> aria-label </strong>expliquent l’usage aux utilisateurs.</li>
82
+
83
+ <li><strong>Accessibilité :</strong> rend le déplacement utilisable sans souris et améliore l’accessibilité fonctionnelle.</li>
84
+ </ul>
85
+ </CriteriaCard>
86
+
87
+ <CriteriaCard icon="❌" title="Bouton de fermeture explicite et accessible">
88
+ <ul>
89
+ <li>Le bouton de fermeture possède un<strong> aria-label </strong>explicite.</li>
90
+
91
+ <li>L’icône est décorative (<strong>decorative=true</strong>) pour éviter une lecture redondante.</li>
92
+
93
+ <li>Le style de focus visible est renforcé pour garantir une navigation clavier claire.</li>
34
94
 
95
+ <li><strong>Accessibilité :</strong> assure une identification immédiate de l’action de fermeture (critère 11.10 RGAA).</li>
96
+ </ul>
97
+ </CriteriaCard>
98
+ </CriteriaSection>
35
99
  </AccessibilityGuideLayout>
@@ -97,7 +97,7 @@
97
97
  v-else-if="state === 'success'"
98
98
  :icon="mdiCheckCircle"
99
99
  :size="cnamContextualTokens.iconSize.default"
100
- color="success"
100
+ color="onSuccessVariant"
101
101
  decorative
102
102
  />
103
103
 
@@ -211,7 +211,7 @@
211
211
  flex-direction: column;
212
212
  gap: var(--v-gap-3);
213
213
  padding-block: var(--v-padding-4);
214
- border-bottom: 1px solid rgb(var(--v-theme-borderSubdued));
214
+ border-bottom: 1px solid rgb(var(--v-theme-disabled));
215
215
 
216
216
  &:first-child:last-child {
217
217
  border-bottom: none;
@@ -224,7 +224,7 @@
224
224
 
225
225
  .file-item__name {
226
226
  font-size: 0.875rem;
227
- color: rgb(var(--v-theme-textBase));
227
+ color: rgb(var(--v-theme-onSurface));
228
228
  }
229
229
 
230
230
  .file-item__description {
@@ -278,7 +278,7 @@
278
278
 
279
279
  .file-item__message {
280
280
  font-size: 0.875rem;
281
- color: rgb(var(--v-theme-textSubdued));
281
+ color: rgb(var(--v-theme-onSurfaceVariant));
282
282
  }
283
283
 
284
284
  .file-item__message-success,
@@ -174,14 +174,14 @@
174
174
  .sy-file-upload {
175
175
  cursor: pointer;
176
176
  position: relative;
177
- border: 1px dashed rgb(var(--v-theme-borderAccentPrimary));
177
+ border: 1px dashed rgb(var(--v-theme-primary));
178
178
  border-radius: var(--v-radius-roundedLg);
179
179
  transition: background 0.25s;
180
180
 
181
181
  &:hover,
182
182
  &:focus-within,
183
183
  &.dragover {
184
- background: rgb(var(--v-theme-backgroundSurfaceAlt));
184
+ background: rgb(var(--v-theme-surfaceDim));
185
185
  }
186
186
 
187
187
  &.dark-mode {
@@ -96,7 +96,7 @@
96
96
 
97
97
  .sy-file-upload-caption {
98
98
  font-size: 0.875rem;
99
- color: rgb(var(--v-theme-textSubdued));
99
+ color: rgb(var(--v-theme-onSurfaceVariant));
100
100
  }
101
101
 
102
102
  .sy-file-upload-btn {
@@ -6,7 +6,7 @@ import * as FilterSideBarStories from '@/components/FilterSideBar/FilterSideBar.
6
6
 
7
7
  <div className="header">
8
8
  <h1>FilterInline</h1>
9
-
9
+
10
10
  </div><Canvas of={FilterInlineStories.Default} />
11
11
 
12
12
  # API
@@ -135,7 +135,7 @@ const professionList = [
135
135
  value: 'pharmacien',
136
136
  },
137
137
  ]
138
-
138
+
139
139
  </script>
140
140
 
141
141
  <template>
@@ -486,7 +486,7 @@ export const FilterCombination: Story = {
486
486
  decorators: [
487
487
  () => ({
488
488
  template: `
489
- <VApp style="height: 500px; overflow-y: hidden;">
489
+ <VApp style="height: 500px; overflow-y: hidden; background: none">
490
490
  <div class="pa-4">
491
491
  <story />
492
492
  </div>