@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
@@ -103,7 +103,7 @@
103
103
  .visual-picker-header {
104
104
  padding-block: 16px;
105
105
  background-color: rgb(var(--v-theme-primary, '12, 65, 154'));
106
- color: rgb(var(--v-theme-textOnDark));
106
+ color: rgb(var(--v-theme-onPrimary));
107
107
  }
108
108
 
109
109
  .visual-picker-header__title {
@@ -143,7 +143,7 @@
143
143
 
144
144
  &:focus-visible {
145
145
  /* stylelint-disable-next-line custom-property-pattern */
146
- outline: 2px solid rgb(var(--v-theme-accentPrimary, 12, 65, 154));
146
+ outline: 2px solid rgb(var(--v-theme-primary, 12, 65, 154));
147
147
  }
148
148
  }
149
149
  </style>
@@ -132,7 +132,7 @@
132
132
 
133
133
  &:hover {
134
134
  /* stylelint-disable-next-line custom-property-pattern */
135
- background-color: rgb(var(--v-theme-accentPrimaryContrasted, 7, 39, 92));
135
+ background-color: rgb(var(--v-theme-primaryVariant, 7, 39, 92));
136
136
  }
137
137
  }
138
138
 
@@ -594,16 +594,16 @@
594
594
 
595
595
  .sy-number-errors,
596
596
  .sy-key-errors {
597
- color: rgb(var(--v-theme-textError));
597
+ color: rgb(var(--v-theme-error));
598
598
  }
599
599
 
600
600
  .sy-number-warnings,
601
601
  .sy-key-warnings {
602
- color: rgb(var(--v-theme-textWarning));
602
+ color: rgb(var(--v-theme-onWarningVariant));
603
603
  }
604
604
 
605
605
  .sy-number-success,
606
606
  .sy-key-success {
607
- color: rgb(var(--v-theme-textSuccess));
607
+ color: rgb(var(--v-theme-onSuccessVariant));
608
608
  }
609
609
  </style>
@@ -137,38 +137,38 @@
137
137
 
138
138
  /* stylelint-disable custom-property-pattern */
139
139
  .notification--info {
140
- background-color: rgb(var(--v-theme-backgroundInfoContrasted, '12, 65, 154'));
141
- color: rgb(var(--v-theme-textOnDark, '255, 255, 255'));
140
+ background-color: rgb(var(--v-theme-info));
141
+ color: rgb(var(--v-theme-onPrimary));
142
142
 
143
143
  .notification__close:focus-visible {
144
- outline: 2px solid rgb(var(--v-theme-textOnDark, '255, 255, 255'));
144
+ outline: 2px solid rgb(var(--v-theme-onPrimary));
145
145
  }
146
146
  }
147
147
 
148
148
  .notification--success {
149
- background-color: rgb(var(--v-theme-backgroundSuccessContrasted, '86, 194, 113'));
150
- color: rgb(var(--v-theme-textBase, '0, 0, 0'));
149
+ background-color: rgb(var(--v-theme-success, '86, 194, 113'));
150
+ color: rgb(var(--v-theme-onSuccess));
151
151
 
152
152
  .notification__close:focus-visible {
153
- outline: 2px solid rgb(var(--v-theme-textBase, '0, 0, 0'));
153
+ outline: 2px solid rgb(var(--v-theme-onSuccess));
154
154
  }
155
155
  }
156
156
 
157
157
  .notification--warning {
158
- background-color: rgb(var(--v-theme-backgroundWarningContrasted, '240, 179, 35'));
159
- color: rgb(var(--v-theme-textBase, '0, 0, 0'));
158
+ background-color: rgb(var(--v-theme-warning));
159
+ color: rgb(var(--v-theme-onWarning));
160
160
 
161
161
  .notification__close:focus-visible {
162
- outline: 2px solid rgb(var(--v-theme-textBase, '0, 0, 0'));
162
+ outline: 2px solid rgb(var(--v-theme-onSurface));
163
163
  }
164
164
  }
165
165
 
166
166
  .notification--error {
167
- background-color: rgb(var(--v-theme-backgroundErrorContrasted, '179, 63, 46'));
168
- color: rgb(var(--v-theme-textOnDark, '255, 255, 255'));
167
+ background-color: rgb(var(--v-theme-error));
168
+ color: rgb(var(--v-theme-onPrimary));
169
169
 
170
170
  .notification__close:focus-visible {
171
- outline: 2px solid rgb(var(--v-theme-textOnDark, '255, 255, 255'));
171
+ outline: 2px solid rgb(var(--v-theme-onPrimary));
172
172
  }
173
173
  }
174
174
 
@@ -649,13 +649,13 @@ export const WithClearQueue: Story = (args) => {
649
649
  Ajouter info
650
650
  </VBtn>
651
651
  <VBtn
652
- color="success"
652
+ color="onSuccessVariant"
653
653
  @click="envoyerNotification('Notification succès', 'success')"
654
654
  >
655
655
  Ajouter succès
656
656
  </VBtn>
657
657
  <VBtn
658
- color="warning"
658
+ color="onWarningVariant"
659
659
  @click="envoyerNotification('Notification avertissement', 'warning')"
660
660
  >
661
661
  Ajouter avertissement
@@ -719,13 +719,13 @@ export const showAll: Story = (args) => {
719
719
  Ajouter info
720
720
  </VBtn>
721
721
  <VBtn
722
- color="success"
722
+ color="onSuccessVariant"
723
723
  @click="envoyerNotification('Notification succès', 'success')"
724
724
  >
725
725
  Ajouter succès
726
726
  </VBtn>
727
727
  <VBtn
728
- color="warning"
728
+ color="onWarningVariant"
729
729
  @click="envoyerNotification('Notification avertissement', 'warning')"
730
730
  >
731
731
  Ajouter avertissement
@@ -769,14 +769,14 @@ showAll.parameters = {
769
769
  Ajouter une notification info
770
770
  </VBtn>
771
771
  <VBtn
772
- color="success"
773
- @click="envoyerNotification('Notification succès', 'success')"
772
+ color="onSuccessVariant"
773
+ @click="envoyerNotification('Notification succès', 'onSuccessVariant')"
774
774
  >
775
775
  Ajouter une notification succès
776
776
  </VBtn>
777
777
  <VBtn
778
- color="warning"
779
- @click="envoyerNotification('Notification avertissement', 'warning')"
778
+ color="onWarningVariant"
779
+ @click="envoyerNotification('Notification avertissement', 'onWarningVariant')"
780
780
  >
781
781
  Ajouter une notification avertissement
782
782
  </VBtn>
@@ -3,7 +3,7 @@
3
3
  import type { DataOptions, SortOption, GroupOption } from './types'
4
4
  import { LocalStorageUtility } from '@/utils/localStorageUtility'
5
5
  import Pagination from './Pagination.vue'
6
- import type { VDataTable } from 'vuetify/components'
6
+ import type { VDataTable } from 'vuetify/components/VDataTable'
7
7
 
8
8
  const props = defineProps({
9
9
  serverItemsLength: {
@@ -1,5 +1,4 @@
1
1
  <script setup lang="ts">
2
- import { VPagination } from 'vuetify/components'
3
2
  import { usePagination } from 'vuetify/lib/components/VDataTable/composables/paginate.mjs'
4
3
  import SySelect from '../Customs/Selects/SySelect/SySelect.vue'
5
4
  import { useLocale } from 'vuetify'
@@ -31,6 +30,7 @@
31
30
  density="compact"
32
31
  variant="outlined"
33
32
  hide-details
33
+ disable-error-handling
34
34
  @update:model-value="v => setItemsPerPage(Number(v))"
35
35
  />
36
36
  </div>
@@ -78,7 +78,7 @@
78
78
  }
79
79
 
80
80
  :deep(.v-pagination) .v-pagination__list [aria-disabled='false'] svg {
81
- color: rgb(var(--v-theme-iconBase));
81
+ color: rgb(var(--v-theme-primary));
82
82
  }
83
83
 
84
84
  :deep(.v-pagination) .v-btn--variant-plain[aria-disabled='false'] {
@@ -86,6 +86,6 @@
86
86
  }
87
87
 
88
88
  :deep(.v-pagination) .v-btn--variant-plain:hover[aria-disabled='false'] svg {
89
- color: rgb(var(--v-theme-textBase));
89
+ color: rgb(var(--v-theme-onSurface));
90
90
  }
91
91
  </style>
@@ -99,7 +99,7 @@
99
99
  })
100
100
 
101
101
  // Initialisation du composable de validation
102
- const { errors, warnings, successes, validateField } = !props.readonly
102
+ const { errors, warnings, successes, displaySuccesses, validateField } = !props.readonly
103
103
  ? useValidation({
104
104
  showSuccessMessages: props.showSuccessMessages,
105
105
  fieldIdentifier: props.label || 'password',
@@ -109,12 +109,13 @@
109
109
  errors: ref<string[]>([]),
110
110
  warnings: ref<string[]>([]),
111
111
  successes: ref<string[]>([]),
112
+ displaySuccesses: ref<string[]>([]),
112
113
  validateField: () => ({ hasError: false, hasWarning: false, hasSuccess: false, state: { errors: [], warnings: [], successes: [] } }),
113
114
  }
114
115
 
115
116
  const hasError = computed(() => errors.value.length > 0)
116
117
  const hasWarning = computed(() => warnings.value.length > 0)
117
- const hasSuccess = computed(() => successes.value.length > 0 && props.showSuccessMessages)
118
+ const hasSuccess = computed(() => successes.value.length > 0 && !hasError.value && !hasWarning.value)
118
119
 
119
120
  const validationIcon = computed(() => {
120
121
  if (hasError.value) return mdiAlertCircle
@@ -254,7 +255,9 @@
254
255
  :required="props.required"
255
256
  :error-messages="errors"
256
257
  :warning-messages="warnings"
257
- :success-messages="successes"
258
+ :success-messages="displaySuccesses"
259
+ :has-success="hasSuccess"
260
+ :show-success-messages="props.showSuccessMessages"
258
261
  :readonly="props.readonly"
259
262
  :disabled="props.disabled"
260
263
  :placeholder="props.placeholder"
@@ -283,6 +286,7 @@
283
286
  class="d-flex align-center"
284
287
  >
285
288
  <SyIcon
289
+ v-if="validationIcon"
286
290
  :icon="validationIcon"
287
291
  :color="validationColor"
288
292
  decorative
@@ -358,10 +362,10 @@
358
362
  }
359
363
 
360
364
  :deep(.v-field) {
361
- color: rgb(var(--v-theme-borderWarning)) !important;
365
+ color: rgb(var(--v-theme-warning)) !important;
362
366
 
363
367
  .v-field__outline {
364
- color: rgb(var(--v-theme-borderWarning)) !important;
368
+ color: rgb(var(--v-theme-warning)) !important;
365
369
  }
366
370
  }
367
371
 
@@ -369,7 +373,7 @@
369
373
  opacity: 1 !important;
370
374
 
371
375
  .v-messages__message {
372
- color: rgb(var(--v-theme-borderWarning)) !important;
376
+ color: rgb(var(--v-theme-warning)) !important;
373
377
  }
374
378
  }
375
379
  }
@@ -377,11 +381,11 @@
377
381
  .error-field {
378
382
  :deep(.v-input__control),
379
383
  :deep(.v-messages__message) {
380
- color: rgb(var(--v-theme-textError)) !important;
384
+ color: rgb(var(--v-theme-error)) !important;
381
385
  }
382
386
 
383
387
  .v-field--active & {
384
- color: rgb(var(--v-theme-borderError)) !important;
388
+ color: rgb(var(--v-theme-error)) !important;
385
389
  }
386
390
  }
387
391
 
@@ -393,10 +397,10 @@
393
397
  }
394
398
 
395
399
  :deep(.v-field) {
396
- color: rgb(var(--v-theme-borderSuccess)) !important;
400
+ color: rgb(var(--v-theme-onSuccessVariant)) !important;
397
401
 
398
402
  .v-field__outline {
399
- color: rgb(var(--v-theme-borderSuccess)) !important;
403
+ color: rgb(var(--v-theme-onSuccessVariant)) !important;
400
404
  }
401
405
  }
402
406
 
@@ -404,7 +408,7 @@
404
408
  opacity: 1 !important;
405
409
 
406
410
  .v-messages__message {
407
- color: rgb(var(--v-theme-borderSuccess)) !important;
411
+ color: rgb(var(--v-theme-onSuccessVariant)) !important;
408
412
  }
409
413
  }
410
414
  }
@@ -16,12 +16,12 @@ interface PasswordFieldVM {
16
16
 
17
17
  describe('PasswordField.vue', () => {
18
18
  it('renders the password field', () => {
19
- const wrapper = mount(PasswordField)
19
+ const wrapper = mount(PasswordField, { props: { label: 'Password' } })
20
20
  expect(wrapper.exists()).toBe(true)
21
21
  })
22
22
 
23
23
  it('toggles password visibility', async () => {
24
- const wrapper = mount(PasswordField)
24
+ const wrapper = mount(PasswordField, { props: { label: 'Password' } })
25
25
  // 2. Cast wrapper.vm as your interface
26
26
  const vm = wrapper.vm as unknown as PasswordFieldVM
27
27
 
@@ -34,7 +34,7 @@ describe('PasswordField.vue', () => {
34
34
  })
35
35
 
36
36
  it('emits update:modelValue event on input', async () => {
37
- const wrapper = mount(PasswordField)
37
+ const wrapper = mount(PasswordField, { props: { label: 'Password' } })
38
38
  const input = wrapper.find('input')
39
39
  await input.setValue('new-password')
40
40
  expect(wrapper.emitted()['update:modelValue']?.[0]).toEqual(['new-password'])
@@ -36,6 +36,7 @@
36
36
  isValidatedOnBlur: { type: Boolean, default: true },
37
37
  displayAsterisk: { type: Boolean, default: false },
38
38
  disableErrorHandling: { type: Boolean, default: false },
39
+ showSuccessMessages: { type: Boolean, default: true },
39
40
  bgColor: { type: String, default: 'white' },
40
41
  readonly: { type: Boolean, default: false },
41
42
  disabled: { type: Boolean, default: false },
@@ -300,7 +301,7 @@
300
301
  })
301
302
 
302
303
  const validation = useValidation({
303
- showSuccessMessages: true,
304
+ showSuccessMessages: props.showSuccessMessages,
304
305
  disableErrorHandling: shouldDisableErrorHandling.value,
305
306
  })
306
307
 
@@ -326,7 +327,7 @@
326
327
  const successes = computed(() =>
327
328
  shouldDisableErrorHandling.value || hasError.value || hasWarning.value
328
329
  ? []
329
- : validation.successes.value,
330
+ : validation.displaySuccesses.value,
330
331
  )
331
332
 
332
333
  const showHelpTextBelow = computed(() => !!props.helpText?.trim())
@@ -475,6 +476,7 @@
475
476
  :error-messages="errors"
476
477
  :warning-messages="warnings"
477
478
  :success-messages="successes"
479
+ :show-success-messages="props.showSuccessMessages"
478
480
  :disable-error-handling="shouldDisableErrorHandling"
479
481
  :variant="outlined ? 'outlined' : 'underlined'"
480
482
  :display-asterisk="displayAsterisk"
@@ -3,7 +3,6 @@
3
3
  // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/slider_role
4
4
 
5
5
  <script setup lang="ts">
6
- import { cnamColorsTokens } from '@/designTokens'
7
6
  import { computed, ref, toRef, watch, type Ref } from 'vue'
8
7
  import Tooltip from './Tooltip/Tooltip.vue'
9
8
  import type { PropsStyle } from './types'
@@ -27,15 +26,12 @@
27
26
  maxLabel?: string
28
27
  }>(),
29
28
  {
30
- 'modelValue': () => [],
31
- 'min': 0,
32
- 'max': 100,
33
- 'step': 1,
34
- 'minLabel': 'Minimum',
35
- 'maxLabel': 'Maximum',
36
- 'thumb-color': cnamColorsTokens.blue.base,
37
- 'track-color': cnamColorsTokens.blue.lighten60,
38
- 'track-fill-color': cnamColorsTokens.blue.lighten20,
29
+ modelValue: () => [],
30
+ min: 0,
31
+ max: 100,
32
+ step: 1,
33
+ minLabel: 'Minimum',
34
+ maxLabel: 'Maximum',
39
35
  },
40
36
  )
41
37
 
@@ -259,9 +255,6 @@ $virtual-thumb-size: 40px;
259
255
  .wrapper {
260
256
  --sy-track-height: 4px;
261
257
  --sy-thumb-size: 20px;
262
- --sy-thumb-color: v-bind(props.thumbColor);
263
- --sy-track-color: v-bind(props.trackColor);
264
- --sy-track-fill-color: v-bind(props.trackFillColor);
265
258
 
266
259
  position: relative;
267
260
  margin-inline: var(--sy-thumb-size);
@@ -280,7 +273,7 @@ $virtual-thumb-size: 40px;
280
273
  transform: translate(0, -50%);
281
274
  width: 100%;
282
275
  height: var(--sy-track-height);
283
- background-color: var(--sy-track-color);
276
+ background-color: rgb(var(--v-theme-infoVariant));
284
277
  }
285
278
  }
286
279
 
@@ -305,7 +298,7 @@ $virtual-thumb-size: 40px;
305
298
  transform: translate(-50%, -50%);
306
299
  width: var(--sy-thumb-size);
307
300
  height: var(--sy-thumb-size);
308
- background-color: var(--sy-thumb-color);
301
+ background-color: rgb(var(--v-theme-primary));
309
302
  border-radius: 50%;
310
303
  transform-origin: bottom right;
311
304
  transition: transform 0.1s;
@@ -320,7 +313,7 @@ $virtual-thumb-size: 40px;
320
313
  transform: translate(-50%, -50%);
321
314
  width: var(--sy-thumb-size);
322
315
  height: var(--sy-thumb-size);
323
- background-color: var(--sy-thumb-color);
316
+ background-color: rgb(var(--v-theme-primary));
324
317
  opacity: 0.4;
325
318
  border-radius: 50%;
326
319
  transform-origin: bottom right;
@@ -358,7 +351,7 @@ $virtual-thumb-size: 40px;
358
351
  transform: translate(-50%, -50%);
359
352
  width: var(--sy-thumb-size);
360
353
  height: var(--sy-thumb-size);
361
- background-color: var(--sy-thumb-color);
354
+ background-color: rgb(var(--v-theme-primary));
362
355
  border-radius: 50%;
363
356
  box-shadow: 0 1px 5px 0 #0000001f, 0 2px 2px 0 #00000024, 0 3px 1px -2px #0003;
364
357
  }
@@ -388,7 +381,7 @@ $virtual-thumb-size: 40px;
388
381
  transform: translate(0, -50%);
389
382
  width: 100%;
390
383
  height: var(--sy-track-height);
391
- background-color: var(--sy-track-fill-color);
384
+ background-color: rgb(var(--v-theme-primary));
392
385
  transition: all 0.1s;
393
386
  }
394
387
 
@@ -57,7 +57,7 @@
57
57
  position: absolute;
58
58
  bottom: 0;
59
59
  background-color: rgb(0 0 0 / 70%);
60
- color: rgb(var(--v-theme-textOnDark));
60
+ color: rgb(var(--v-theme-onPrimary));
61
61
  padding: 4px 8px;
62
62
  border-radius: 4px;
63
63
  will-change: transform;
@@ -1,8 +1,9 @@
1
1
  <script lang="ts" setup>
2
- import { type PropType, computed, onMounted, ref } from 'vue'
2
+ import { type PropType, computed, onMounted, toRef } from 'vue'
3
3
  import { RatingEnum, useRating } from '../Rating'
4
4
  import { locales } from './locales'
5
5
  import { propValidator } from '@/utils/propValidator'
6
+ import { useRatingFocus } from '../useRatingFocus'
6
7
  import {
7
8
  mdiEmoticonHappyOutline,
8
9
  mdiEmoticonSadOutline,
@@ -81,45 +82,27 @@
81
82
  return props.itemLabels[value]
82
83
  }
83
84
 
84
- const ratingElement = ref<HTMLDivElement[]>([])
85
- function focusNextElement(index: number) {
86
- const currentIndex = ratingElement.value?.findIndex(el => el === ratingElement.value[index]) ?? -1
87
- const nextIndex = currentIndex < (props.length - 1) ? currentIndex + 1 : 0
88
- const nextElem = ratingElement.value?.[nextIndex]
89
-
90
- ratingElement.value[index]?.setAttribute('tabindex', '-1')
91
- nextElem?.setAttribute('tabindex', '0')
92
- nextElem?.focus()
93
- }
94
-
95
- function focusPrevElement(index: number) {
96
- const currentIndex = ratingElement.value?.findIndex(el => el === ratingElement.value[index]) ?? -1
97
- const prevIndex = currentIndex > 0 ? currentIndex - 1 : (props.length - 1)
98
- const prevElem = ratingElement.value?.[prevIndex]
99
-
100
- ratingElement.value[index]?.setAttribute('tabindex', '-1')
101
- prevElem?.setAttribute('tabindex', '0')
102
- prevElem?.focus()
103
- }
85
+ const {
86
+ ratingElement,
87
+ initFocus,
88
+ selectAndFocus,
89
+ focusNextElement,
90
+ focusPrevElement,
91
+ focus,
92
+ } = useRatingFocus({
93
+ length: toRef(props, 'length'),
94
+ modelValue: internalValue,
95
+ selectValue: emitInputEvent,
96
+ wrap: true,
97
+ })
104
98
 
105
- function setFocus(index: number) {
106
- ratingElement.value.forEach((el, i) => {
107
- if (i === index) {
108
- el?.setAttribute('tabindex', '0')
109
- }
110
- else {
111
- el?.setAttribute('tabindex', '-1')
112
- }
113
- })
114
- }
99
+ defineExpose({
100
+ focus,
101
+ })
115
102
 
116
103
  onMounted(() => {
117
- ratingElement.value[0]?.setAttribute('tabindex', '0')
118
- for (let i = 1; i < ratingElement.value.length; i++) {
119
- ratingElement.value[i]?.setAttribute('tabindex', '-1')
120
- }
104
+ initFocus()
121
105
  })
122
-
123
106
  </script>
124
107
 
125
108
  <template>
@@ -142,22 +125,23 @@
142
125
  :key="index"
143
126
  ref="ratingElement"
144
127
  v-ripple="!(props.readonly || hasAnswered)"
128
+ :tabindex="-1"
145
129
  role="radio"
146
- :aria-disabled="(props.readonly || hasAnswered) ? 'true' : undefined"
147
- :aria-checked="isActive(index) ? 'true' : undefined"
130
+ :aria-checked="isActive(index) ? 'true' : 'false'"
148
131
  :class="[getColor(index - 1), { 'sy-emotion-picker__item--active': isActive(index) }]"
149
132
  :style="{
150
133
  'min-height': btnSize,
151
134
  'min-width': btnSize
152
135
  }"
136
+ :aria-disabled="(props.readonly || hasAnswered) ? 'true' : undefined"
153
137
  class="sy-emotion-picker__item rounded-lg px-1 px-sm-4 mx-1 mx-sm-2"
154
- @click="emitInputEvent(index); setFocus(index - 1)"
155
- @keyup.enter="emitInputEvent(index); setFocus(index - 1)"
156
- @keyup.space="emitInputEvent(index); setFocus(index - 1)"
157
- @keyup.right="focusNextElement(index - 1)"
158
- @keyup.left="focusPrevElement(index - 1)"
159
- @keyup.up="focusPrevElement(index - 1)"
160
- @keyup.down="focusNextElement(index - 1)"
138
+ @click="selectAndFocus(index - 1)"
139
+ @keydown.enter.prevent="selectAndFocus(index - 1)"
140
+ @keydown.space.prevent="selectAndFocus(index - 1)"
141
+ @keydown.right.prevent="focusNextElement(index - 1)"
142
+ @keydown.left.prevent="focusPrevElement(index - 1)"
143
+ @keydown.up.prevent="focusPrevElement(index - 1)"
144
+ @keydown.down.prevent="focusNextElement(index - 1)"
161
145
  >
162
146
  <SyIcon
163
147
  :icon="getIcon(index - 1)"
@@ -184,7 +168,7 @@
184
168
  border: 0;
185
169
  }
186
170
 
187
- .sy-emotion-picker__item:not([disabled]) {
171
+ .sy-emotion-picker__item:not([aria-disabled='true']) {
188
172
  cursor: pointer;
189
173
  }
190
174
 
@@ -238,8 +222,8 @@
238
222
  }
239
223
  }
240
224
 
241
- &:hover[disabled='true']:not([aria-checked='true']),
242
- &:focus[disabled='true']:not([aria-checked='true']) {
225
+ &:hover[aria-disabled='true']:not([aria-checked='true']),
226
+ &:focus[aria-disabled='true']:not([aria-checked='true']) {
243
227
  background-color: transparent;
244
228
  }
245
229
  }
@@ -21,6 +21,7 @@ exports[`EmotionPicker > renders correctly 1`] = `
21
21
  role="radiogroup"
22
22
  >
23
23
  <div
24
+ aria-checked="false"
24
25
  class="
25
26
  mx-1
26
27
  mx-sm-2
@@ -110,6 +111,7 @@ exports[`EmotionPicker > renders correctly 1`] = `
110
111
  </span>
111
112
  </div>
112
113
  <div
114
+ aria-checked="false"
113
115
  class="
114
116
  mx-1
115
117
  mx-sm-2
@@ -199,6 +201,7 @@ exports[`EmotionPicker > renders correctly 1`] = `
199
201
  </span>
200
202
  </div>
201
203
  <div
204
+ aria-checked="false"
202
205
  class="
203
206
  happy
204
207
  mx-1
@@ -312,6 +315,7 @@ exports[`EmotionPicker > renders correctly with only 2 items 1`] = `
312
315
  role="radiogroup"
313
316
  >
314
317
  <div
318
+ aria-checked="false"
315
319
  class="
316
320
  mx-1
317
321
  mx-sm-2
@@ -401,6 +405,7 @@ exports[`EmotionPicker > renders correctly with only 2 items 1`] = `
401
405
  </span>
402
406
  </div>
403
407
  <div
408
+ aria-checked="false"
404
409
  class="
405
410
  happy
406
411
  mx-1