@cnamts/synapse 1.0.5 → 1.0.7

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 (364) hide show
  1. package/dist/{DateFilter-BQpRKTju.js → DateFilter-CHDLz2EO.js} +1 -1
  2. package/dist/{NumberFilter-BykSKt2D.js → NumberFilter-DXNQ4Uls.js} +1 -1
  3. package/dist/{PeriodFilter-Cks6NygV.js → PeriodFilter-C8Qf3Jcn.js} +1 -1
  4. package/dist/{SelectFilter-DEL5dHd_.js → SelectFilter-B2Ejs4Cb.js} +1 -1
  5. package/dist/{TextFilter-0RAFj7Oe.js → TextFilter-CfR5_A1S.js} +1 -1
  6. package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordion.d.ts +103 -0
  7. package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.d.ts +105 -0
  8. package/dist/components/Amelipro/AmeliproAccordionGroup/AmeliproAccordionGroup.d.ts +116 -0
  9. package/dist/components/Amelipro/AmeliproAccordionGroup/types.d.ts +4 -0
  10. package/dist/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.d.ts +220 -0
  11. package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.d.ts +68 -0
  12. package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.d.ts +70 -0
  13. package/dist/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.d.ts +204 -0
  14. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +26 -26
  15. package/dist/components/Amelipro/AmeliproBadge/AmeliproBadge.d.ts +59 -0
  16. package/dist/components/Amelipro/AmeliproBtn/AmeliproBtn.d.ts +3 -3
  17. package/dist/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.d.ts +132 -0
  18. package/dist/components/Amelipro/AmeliproCaptcha/types.d.ts +5 -0
  19. package/dist/components/Amelipro/AmeliproCard/AmeliproCard.d.ts +3 -3
  20. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarousel.d.ts +214 -0
  21. package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/AmeliproCarouselItem.d.ts +70 -0
  22. package/dist/components/Amelipro/AmeliproCarousel/types.d.ts +7 -0
  23. package/dist/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.d.ts +125 -0
  24. package/dist/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.d.ts +126 -0
  25. package/dist/components/Amelipro/AmeliproCustomSelector/types.d.ts +6 -0
  26. package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +1 -1
  27. package/dist/components/Amelipro/AmeliproIllustratedDataTile/AmeliproIllustratedDataTile.d.ts +3 -3
  28. package/dist/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.d.ts +1 -1
  29. package/dist/components/Amelipro/AmeliproResultList/AmeliproResultList.d.ts +164 -0
  30. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +27 -27
  31. package/dist/components/Amelipro/AmeliproStateTile/AmeliproStateTile.d.ts +1 -1
  32. package/dist/components/Amelipro/AmeliproTable/AmeliproTable.d.ts +190 -0
  33. package/dist/components/Amelipro/AmeliproTable/types.d.ts +34 -0
  34. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +32 -32
  35. package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +6 -6
  36. package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +7 -7
  37. package/dist/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.d.ts +2 -2
  38. package/dist/components/Amelipro/AmeliproTooltips/AmeliproTooltips.d.ts +2 -2
  39. package/dist/components/Amelipro/types.d.ts +6 -0
  40. package/dist/components/ChipList/ChipList.d.ts +4 -0
  41. package/dist/components/ChipList/locales.d.ts +4 -2
  42. package/dist/components/CookieBanner/CookieBanner.d.ts +1 -1
  43. package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +8 -8
  44. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +454 -8
  45. package/dist/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.d.ts +6 -1
  46. package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +2 -0
  47. package/dist/components/Customs/SyTabs/SyTabs.d.ts +71 -0
  48. package/dist/components/Customs/SyTabs/config.d.ts +17 -0
  49. package/dist/components/Customs/SyTabs/types.d.ts +11 -0
  50. package/dist/components/Customs/SyTextField/SyTextField.d.ts +12 -10
  51. package/dist/components/DataList/DataList.d.ts +10 -1
  52. package/dist/components/DataListGroup/DataListGroup.d.ts +10 -1
  53. package/dist/components/DataListItem/DataListItem.d.ts +1 -1
  54. package/dist/components/DataListItem/config.d.ts +1 -1
  55. package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +4825 -244
  56. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +58 -29
  57. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +28 -10
  58. package/dist/components/DatePicker/composables/useDateInputEditing.d.ts +18 -8
  59. package/dist/components/DatePicker/composables/useKeyboardEvents.d.ts +41 -0
  60. package/dist/components/DatePicker/composables/useManualDateValidation.d.ts +4 -9
  61. package/dist/components/DatePicker/composables/useTodayButton.d.ts +1 -0
  62. package/dist/components/DatePicker/utils/dateFormattingUtils.d.ts +72 -0
  63. package/dist/components/DatePicker/utils/validationUtils.d.ts +38 -0
  64. package/dist/components/DialogBox/DialogBox.d.ts +219 -0
  65. package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.d.ts +9 -3
  66. package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.d.ts +6 -1
  67. package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.d.ts +11 -1
  68. package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.d.ts +11 -1
  69. package/dist/components/HeaderBar/HeaderBurgerMenu/locals.d.ts +2 -0
  70. package/dist/components/HeaderBar/HeaderBurgerMenu/useMenuPosition.d.ts +4 -0
  71. package/dist/components/HeaderLoading/HeaderLoading.d.ts +27 -0
  72. package/dist/components/HeaderNavigationBar/HeaderNavigationBar.d.ts +110 -3
  73. package/dist/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.d.ts +19 -1
  74. package/dist/components/LangBtn/LangBtn.d.ts +2 -2
  75. package/dist/components/NirField/NirField.d.ts +30 -20
  76. package/dist/components/PeriodField/PeriodField.d.ts +10949 -1783
  77. package/dist/components/PhoneField/PhoneField.d.ts +1866 -2
  78. package/dist/components/PhoneField/indicatifs.d.ts +1 -0
  79. package/dist/components/PhoneField/locales.d.ts +1 -0
  80. package/dist/components/RangeField/RangeField.d.ts +1 -1
  81. package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +1 -1
  82. package/dist/components/SubHeader/SubHeader.d.ts +8 -0
  83. package/dist/components/SubHeader/locales.d.ts +1 -0
  84. package/dist/components/SyTextArea/SyTextArea.d.ts +6 -6
  85. package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -4
  86. package/dist/components/Tables/SyTable/SyTable.d.ts +5 -4
  87. package/dist/components/Tables/common/SyTablePagination.d.ts +458 -7
  88. package/dist/components/Tables/common/organizeColumns/OrganizeColumns.d.ts +2 -2
  89. package/dist/components/Tables/common/types.d.ts +2 -0
  90. package/dist/components/index.d.ts +13 -0
  91. package/dist/composables/index.d.ts +1 -0
  92. package/dist/composables/usePagination.d.ts +16 -0
  93. package/dist/design-system-v3.js +174 -160
  94. package/dist/design-system-v3.umd.cjs +290 -281
  95. package/dist/directives/lockFocus.d.ts +17 -0
  96. package/dist/{main-Co2P_lBt.js → main-C66C1BkG.js} +14406 -11554
  97. package/dist/style.css +1 -1
  98. package/package.json +4 -1
  99. package/src/assets/amelipro/apTheme.scss +149 -0
  100. package/src/assets/amelipro/apTokens.scss +0 -148
  101. package/src/assets/amelipro/icons.ts +38 -11
  102. package/src/assets/overrides/_btns.scss +15 -0
  103. package/src/assets/overrides/_container.scss +36 -0
  104. package/src/assets/overrides/_forms.scss +7 -0
  105. package/src/assets/{_spacers.scss → overrides/_spacers.scss} +0 -7
  106. package/src/assets/overrides/_tables.scss +18 -0
  107. package/src/assets/overrides/_tooltips.scss +10 -0
  108. package/src/assets/overrides/_typography.scss +196 -0
  109. package/src/assets/settings.scss +11 -51
  110. package/src/assets/themes.scss +10 -0
  111. package/src/assets/tokens.scss +9 -156
  112. package/src/components/Accordion/composables/__tests__/useAccordionGroupCommunication.spec.ts +80 -40
  113. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.mdx +15 -0
  114. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.stories.ts +83 -0
  115. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.vue +86 -0
  116. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.vue +242 -0
  117. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/__tests__/AmeliproAccordionTemplate.spec.ts +20 -0
  118. package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/__tests__/__snapshots__/AmeliproAccordionTemplate.spec.ts.snap +124 -0
  119. package/src/components/Amelipro/AmeliproAccordion/__tests__/AmeliproAccordion.spec.ts +20 -0
  120. package/src/components/Amelipro/AmeliproAccordion/__tests__/__snapshots__/AmeliproAccordion.spec.ts.snap +124 -0
  121. package/src/components/Amelipro/AmeliproAccordionGroup/AmeliproAccordionGroup.mdx +20 -0
  122. package/src/components/Amelipro/AmeliproAccordionGroup/AmeliproAccordionGroup.stories.ts +135 -0
  123. package/src/components/Amelipro/AmeliproAccordionGroup/AmeliproAccordionGroup.vue +107 -0
  124. package/src/components/Amelipro/AmeliproAccordionGroup/__tests__/AmeliproAccordionGroup.spec.ts +37 -0
  125. package/src/components/Amelipro/AmeliproAccordionGroup/__tests__/__snapshots__/AmeliproAccordionGroup.spec.ts.snap +513 -0
  126. package/src/components/Amelipro/AmeliproAccordionGroup/types.d.ts +4 -0
  127. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.mdx +16 -0
  128. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.stories.ts +300 -0
  129. package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +288 -0
  130. package/src/components/Amelipro/AmeliproAccordionList/__tests__/AmeliproAccordionList.spec.ts +38 -0
  131. package/src/components/Amelipro/AmeliproAccordionList/__tests__/__snapshots__/AmeliproAccordionList.spec.ts.snap +1712 -0
  132. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.mdx +19 -0
  133. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.stories.ts +68 -0
  134. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.vue +66 -0
  135. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.vue +145 -0
  136. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/__tests__/AmeliproAccordionResultTemplate.spec.ts +24 -0
  137. package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/__tests__/__snapshots__/AmeliproAccordionResultTemplate.spec.ts.snap +127 -0
  138. package/src/components/Amelipro/AmeliproAccordionResult/__tests__/AmeliproAccordionResult.spec.ts +24 -0
  139. package/src/components/Amelipro/AmeliproAccordionResult/__tests__/__snapshots__/AmeliproAccordionResult.spec.ts.snap +123 -0
  140. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.mdx +20 -0
  141. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.stories.ts +273 -0
  142. package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +275 -0
  143. package/src/components/Amelipro/AmeliproAccordionResultList/__tests__/AmeliproAccordionResultList.spec.ts +38 -0
  144. package/src/components/Amelipro/AmeliproAccordionResultList/__tests__/__snapshots__/AmeliproAccordionResultList.spec.ts.snap +1593 -0
  145. package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.mdx +15 -0
  146. package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.stories.ts +54 -0
  147. package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.vue +76 -0
  148. package/src/components/Amelipro/AmeliproBadge/__tests__/AmeliproBadge.spec.ts +20 -0
  149. package/src/components/Amelipro/AmeliproBadge/__tests__/__snapshots__/AmeliproBadge.spec.ts.snap +19 -0
  150. package/src/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.mdx +15 -0
  151. package/src/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.stories.ts +87 -0
  152. package/src/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.vue +233 -0
  153. package/src/components/Amelipro/AmeliproCaptcha/__tests__/AmeliproCaptcha.spec.ts +24 -0
  154. package/src/components/Amelipro/AmeliproCaptcha/__tests__/__snapshots__/AmeliproCaptcha.spec.ts.snap +384 -0
  155. package/src/components/Amelipro/AmeliproCaptcha/types.d.ts +5 -0
  156. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarousel.mdx +15 -0
  157. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarousel.stories.ts +191 -0
  158. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarousel.vue +263 -0
  159. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/AmeliproCarouselItem.vue +93 -0
  160. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/__tests__/AmeliproCarouselItem.spec.ts +24 -0
  161. package/src/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/__tests__/__snapshots__/AmeliproCarouselItem.spec.ts.snap +43 -0
  162. package/src/components/Amelipro/AmeliproCarousel/__tests__/AmeliproCarousel.spec.ts +40 -0
  163. package/src/components/Amelipro/AmeliproCarousel/__tests__/__snapshots__/AmeliproCarousel.spec.ts.snap +342 -0
  164. package/src/components/Amelipro/AmeliproCarousel/types.d.ts +8 -0
  165. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.mdx +18 -0
  166. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.stories.ts +67 -0
  167. package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.vue +233 -0
  168. package/src/components/Amelipro/AmeliproClickableTile/tests/AmeliproClickableTile.spec.ts +21 -0
  169. package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +140 -0
  170. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.mdx +15 -0
  171. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.stories.ts +143 -0
  172. package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.vue +351 -0
  173. package/src/components/Amelipro/AmeliproCustomSelector/__tests__/AmeliproCustomSelector.spec.ts +50 -0
  174. package/src/components/Amelipro/AmeliproCustomSelector/__tests__/__snapshots__/AmeliproCustomSelector.spec.ts.snap +186 -0
  175. package/src/components/Amelipro/AmeliproCustomSelector/types.d.ts +6 -0
  176. package/src/components/Amelipro/AmeliproHeader/AmeliproHeader.vue +7 -1
  177. package/src/components/Amelipro/AmeliproHeader/tests/__snapshots__/AmeliproHeader.spec.ts.snap +5 -711
  178. package/src/components/Amelipro/AmeliproIcon/iconList.ts +6 -0
  179. package/src/components/Amelipro/AmeliproPageLayout/tests/__snapshots__/AmeliproPageLayout.spec.ts.snap +5 -711
  180. package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.mdx +15 -0
  181. package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.stories.ts +264 -0
  182. package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.vue +231 -0
  183. package/src/components/Amelipro/AmeliproResultList/__tests__/AmeliproResultList.spec.ts +37 -0
  184. package/src/components/Amelipro/AmeliproResultList/__tests__/__snapshots__/AmeliproResultList.spec.ts.snap +434 -0
  185. package/src/components/Amelipro/AmeliproTable/AmeliproTable.mdx +22 -0
  186. package/src/components/Amelipro/AmeliproTable/AmeliproTable.stories.ts +550 -0
  187. package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +422 -0
  188. package/src/components/Amelipro/AmeliproTable/__tests__/AmeliproTable.spec.ts +72 -0
  189. package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +424 -0
  190. package/src/components/Amelipro/AmeliproTable/types.d.ts +34 -0
  191. package/src/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.stories.ts +2 -2
  192. package/src/components/Amelipro/ServiceMenu/ServiceMenu.vue +12 -1
  193. package/src/components/Amelipro/ServiceMenu/tests/__snapshots__/ServiceMenu.spec.ts.snap +0 -820
  194. package/src/components/Amelipro/types.ts +8 -0
  195. package/src/components/ChipList/Accessibilite.stories.ts +4 -0
  196. package/src/components/ChipList/ChipList.vue +185 -42
  197. package/src/components/ChipList/locales.ts +4 -2
  198. package/src/components/ChipList/tests/chipList.spec.ts +7 -4
  199. package/src/components/CollapsibleList/CollapsibleList.vue +0 -2
  200. package/src/components/CookieBanner/CookieBanner.vue +1 -3
  201. package/src/components/CopyBtn/CopyBtn.vue +9 -2
  202. package/src/components/CopyBtn/tests/CopyBtn.spec.ts +3 -1
  203. package/src/components/Customs/Selects/SelectOverview.mdx +18 -15
  204. package/src/components/Customs/Selects/SyBtnSelect/SyBtnSelect.stories.ts +10 -10
  205. package/src/components/Customs/Selects/SySelect/Accessibilite.mdx +7 -0
  206. package/src/components/Customs/Selects/SySelect/Accessibilite.stories.ts +4 -1
  207. package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +92 -4
  208. package/src/components/Customs/Selects/SySelect/SySelect.vue +373 -56
  209. package/src/components/Customs/Selects/SySelect/composables/tests/useSySelectKeyboard.spec.ts +14 -5
  210. package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +129 -12
  211. package/src/components/Customs/SyCheckbox/SyCheckbox.mdx +3 -1
  212. package/src/components/Customs/SyCheckbox/SyCheckbox.stories.ts +165 -0
  213. package/src/components/Customs/SyCheckbox/SyCheckbox.vue +28 -9
  214. package/src/components/Customs/SyIcon/SyIcon.spec.ts +3 -0
  215. package/src/components/Customs/SyTabs/Accessibilite.mdx +309 -0
  216. package/src/components/Customs/SyTabs/SyTabs.mdx +117 -0
  217. package/src/components/Customs/SyTabs/SyTabs.stories.ts +354 -0
  218. package/src/components/Customs/SyTabs/SyTabs.vue +350 -0
  219. package/src/components/Customs/SyTabs/config.ts +17 -0
  220. package/src/components/Customs/SyTabs/tests/SyTabs.spec.ts +425 -0
  221. package/src/components/Customs/SyTabs/types.ts +12 -0
  222. package/src/components/Customs/SyTextField/Accessibilite.stories.ts +3 -1
  223. package/src/components/Customs/SyTextField/SyTextField.mdx +3 -0
  224. package/src/components/Customs/SyTextField/SyTextField.stories.ts +221 -7
  225. package/src/components/Customs/SyTextField/SyTextField.vue +226 -29
  226. package/src/components/DataList/Accessibilite.stories.ts +4 -0
  227. package/src/components/DataList/DataList.vue +52 -47
  228. package/src/components/DataListGroup/Accessibilite.stories.ts +4 -0
  229. package/src/components/DataListGroup/DataListGroup.vue +32 -15
  230. package/src/components/DataListItem/DataListItem.vue +72 -65
  231. package/src/components/DataListItem/config.ts +1 -1
  232. package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +3 -3
  233. package/src/components/DatePicker/CalendarMode/DatePicker.vue +59 -18
  234. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +174 -0
  235. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +421 -636
  236. package/src/components/DatePicker/DatePickerValidationExample/CalendarMode.stories.ts +215 -0
  237. package/src/components/DatePicker/DatePickerValidationExample/ComplexDatePicker.stories.ts +218 -0
  238. package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.mdx +2 -0
  239. package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts +287 -1
  240. package/src/components/DatePicker/DatePickerValidationExample/DateTextInput.stories.ts +218 -0
  241. package/src/components/DatePicker/DatePickerValidationExample/MultiMode.stories.ts +281 -0
  242. package/src/components/DatePicker/DateTextInput/DateRange.stories.ts +1 -1
  243. package/src/components/DatePicker/DateTextInput/DateTextInput.events.spec.ts +17 -4
  244. package/src/components/DatePicker/DateTextInput/DateTextInput.range.spec.ts +111 -18
  245. package/src/components/DatePicker/DateTextInput/DateTextInput.spec.ts +238 -6
  246. package/src/components/DatePicker/DateTextInput/DateTextInput.vue +716 -759
  247. package/src/components/DatePicker/composables/tests/useDateInputEditing.spec.ts +4 -4
  248. package/src/components/DatePicker/composables/tests/useDisplayedDateString.spec.ts +17 -10
  249. package/src/components/DatePicker/composables/tests/useManualDateValidation.spec.ts +11 -3
  250. package/src/components/DatePicker/composables/useDateInputEditing.ts +119 -225
  251. package/src/components/DatePicker/composables/useDisplayedDateString.ts +18 -4
  252. package/src/components/DatePicker/composables/useKeyboardEvents.ts +149 -0
  253. package/src/components/DatePicker/composables/useManualDateValidation.ts +27 -68
  254. package/src/components/DatePicker/composables/useTodayButton.ts +13 -1
  255. package/src/components/DatePicker/utils/dateFormattingUtils.ts +293 -0
  256. package/src/components/DatePicker/utils/validationUtils.ts +90 -0
  257. package/src/components/DialogBox/Accessibilite.stories.ts +4 -0
  258. package/src/components/DialogBox/DialogBox.stories.ts +22 -10
  259. package/src/components/DialogBox/DialogBox.vue +89 -22
  260. package/src/components/DialogBox/tests/DialogBox.spec.ts +22 -0
  261. package/src/components/DialogBox/tests/__snapshots__/DialogBox.spec.ts.snap +12 -6
  262. package/src/components/FileUpload/tests/FileUpload.spec.ts +3 -0
  263. package/src/components/FooterBar/FooterBar.vue +1 -0
  264. package/src/components/HeaderBar/Accessibilite.stories.ts +4 -0
  265. package/src/components/HeaderBar/HeaderBar.mdx +47 -22
  266. package/src/components/HeaderBar/HeaderBar.stories.ts +54 -13
  267. package/src/components/HeaderBar/HeaderBar.vue +2 -1
  268. package/src/components/HeaderBar/HeaderBurgerMenu/Accessibilite.stories.ts +4 -0
  269. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.stories.ts +160 -82
  270. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.vue +41 -56
  271. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.vue +10 -3
  272. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.vue +41 -18
  273. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/tests/HeaderMenuSection.spec.ts +7 -2
  274. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.stories.ts +36 -9
  275. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.vue +41 -9
  276. package/src/components/HeaderBar/HeaderBurgerMenu/locals.ts +2 -0
  277. package/src/components/HeaderBar/HeaderBurgerMenu/tests/HeaderBurgerMenu.spec.ts +1 -1
  278. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/HeaderBurgerMenu.spec.ts.snap +8 -3
  279. package/src/components/HeaderBar/HeaderBurgerMenu/useMenuPosition.ts +50 -0
  280. package/src/components/HeaderBar/HeaderLogo/HeaderLogo.vue +5 -5
  281. package/src/components/HeaderBar/HeaderMenuBtn/HeaderMenuBtn.vue +7 -4
  282. package/src/components/HeaderBar/locales.ts +1 -1
  283. package/src/components/HeaderBar/tests/__snapshots__/HeaderBar.spec.ts.snap +2 -1
  284. package/src/components/HeaderLoading/Accessibilite.mdx +429 -8
  285. package/src/components/HeaderLoading/Accessibilite.stories.ts +4 -0
  286. package/src/components/HeaderLoading/HeaderLoading.vue +59 -1
  287. package/src/components/HeaderNavigationBar/HeaderNavigationBar.mdx +17 -2
  288. package/src/components/HeaderNavigationBar/HeaderNavigationBar.stories.ts +91 -2
  289. package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +37 -1
  290. package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +276 -21
  291. package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.spec.ts +4 -2
  292. package/src/components/LangBtn/LangBtn.vue +0 -3
  293. package/src/components/LogoBrandSection/Accessibilite.stories.ts +4 -1
  294. package/src/components/LogoBrandSection/LogoBrandSection.stories.ts +2 -2
  295. package/src/components/LogoBrandSection/LogoBrandSection.vue +13 -8
  296. package/src/components/LogoBrandSection/locales.ts +1 -1
  297. package/src/components/LogoBrandSection/tests/LogoBrandSection.spec.ts +1 -1
  298. package/src/components/LogoBrandSection/tests/__snapshots__/LogoBrandSection.spec.ts.snap +6 -4
  299. package/src/components/NirField/NirField.mdx +3 -0
  300. package/src/components/NirField/NirField.vue +15 -6
  301. package/src/components/NirField/tests/NirField.spec.ts +159 -12
  302. package/src/components/PasswordField/PasswordField.mdx +3 -0
  303. package/src/components/PeriodField/PeriodField.mdx +2 -0
  304. package/src/components/PeriodField/PeriodField.stories.ts +195 -0
  305. package/src/components/PhoneField/Accessibilite.stories.ts +4 -0
  306. package/src/components/PhoneField/PhoneField.mdx +3 -1
  307. package/src/components/PhoneField/PhoneField.stories.ts +285 -1
  308. package/src/components/PhoneField/PhoneField.vue +228 -95
  309. package/src/components/PhoneField/indicatifs.ts +102 -102
  310. package/src/components/PhoneField/locales.ts +1 -0
  311. package/src/components/PhoneField/tests/PhoneField.spec.ts +429 -2
  312. package/src/components/SkipLink/SkipLink.vue +3 -31
  313. package/src/components/SkipLink/tests/skipLink.spec.ts +0 -21
  314. package/src/components/SubHeader/Accessibilite.stories.ts +8 -0
  315. package/src/components/SubHeader/SubHeader.mdx +1 -0
  316. package/src/components/SubHeader/SubHeader.stories.ts +179 -60
  317. package/src/components/SubHeader/SubHeader.vue +45 -15
  318. package/src/components/SubHeader/locales.ts +1 -0
  319. package/src/components/SyAlert/SyAlert.vue +6 -0
  320. package/src/components/Tables/SyServerTable/SyServerTable.mdx +3 -10
  321. package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +242 -0
  322. package/src/components/Tables/SyServerTable/SyServerTable.vue +29 -10
  323. package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +104 -6
  324. package/src/components/Tables/SyTable/SyTable.mdx +3 -10
  325. package/src/components/Tables/SyTable/SyTable.stories.ts +242 -0
  326. package/src/components/Tables/SyTable/SyTable.vue +2 -0
  327. package/src/components/Tables/common/SyTablePagination.vue +13 -6
  328. package/src/components/Tables/common/TableHeader.vue +10 -7
  329. package/src/components/Tables/common/tableAccessibilityUtils.ts +13 -2
  330. package/src/components/Tables/common/tests/SyTablePagination.spec.ts +157 -0
  331. package/src/components/Tables/common/types.ts +2 -0
  332. package/src/components/Tables/common/useTableAria.ts +17 -1
  333. package/src/components/UserMenuBtn/tests/UserMenuBtn.spec.ts +2 -1
  334. package/src/components/index.ts +13 -0
  335. package/src/composables/date/tests/useDatePickerAccessibility.spec.ts +34 -5
  336. package/src/composables/index.ts +3 -0
  337. package/src/composables/useFilterable/useFilterable.ts +23 -1
  338. package/src/composables/usePagination.ts +103 -0
  339. package/src/designTokens/tokens/amelipro/apColors.ts +1 -1
  340. package/src/designTokens/tokens/cnam/cnamSemantic.ts +3 -3
  341. package/src/directives/lockFocus.ts +48 -0
  342. package/src/main.ts +1 -2
  343. package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +1 -8
  344. package/src/stories/Accessibilite/{Aculturation/AuditDesignSystem.mdx → AuditDesignSystem.mdx} +1 -1
  345. package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/FauxPositifs.mdx +102 -0
  346. package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/FauxPositifs.stories.ts +219 -0
  347. package/src/stories/Accessibilite/KitDePreAudit/Outils/{Tanaguru.mdx → Tanaguru/Utilisation.mdx} +1 -1
  348. package/src/stories/Components/Components.stories.ts +1 -1
  349. package/src/stories/DesignTokens/ColorIntegrationExample.vue +43 -0
  350. package/src/stories/DesignTokens/Colors.mdx +2 -0
  351. package/src/stories/DesignTokens/colors.stories.ts +9 -0
  352. package/src/stories/GuideDuDev/FormValidationGuide.mdx +342 -0
  353. package/src/stories/Templates/Templates.stories.ts +1 -1
  354. package/src/utils/functions/ameliproColors/ameliproColors.ts +1 -1
  355. package/src/vuetifyConfig.ts +3 -3
  356. package/dist/components/DataList/locales.d.ts +0 -3
  357. package/dist/directives/letterSpacing.d.ts +0 -27
  358. package/src/assets/_fonts.scss +0 -6
  359. package/src/assets/_typography.scss +0 -157
  360. package/src/components/DataList/locales.ts +0 -3
  361. package/src/components/PhoneField/tests/PhoneField.additional.spec.ts +0 -266
  362. package/src/directives/letterSpacing.ts +0 -233
  363. /package/src/assets/{_elevations.scss → overrides/_elevations.scss} +0 -0
  364. /package/src/assets/{_radius.scss → overrides/_radius.scss} +0 -0
@@ -3,9 +3,6 @@
3
3
  defineOptions({
4
4
  inheritAttrs: false,
5
5
  })
6
- import { computed, onMounted, ref, watch, nextTick, type ComponentPublicInstance } from 'vue'
7
- import type { IconType, VariantStyle, ColorType } from './types'
8
- import { useValidation, type ValidationRule } from '@/composables/validation/useValidation'
9
6
  import {
10
7
  mdiAlertOutline,
11
8
  mdiCheck,
@@ -14,6 +11,10 @@
14
11
  mdiInformation,
15
12
  mdiCalendar,
16
13
  } from '@mdi/js'
14
+ import { computed, onMounted, ref, watch, nextTick, type ComponentPublicInstance } from 'vue'
15
+ import type { IconType, VariantStyle, ColorType } from './types'
16
+ import { useValidation, type ValidationRule } from '@/composables/validation/useValidation'
17
+ import SyIcon from '@/components/Customs/SyIcon/SyIcon.vue'
17
18
 
18
19
  const props = withDefaults(
19
20
  defineProps<{
@@ -84,6 +85,7 @@
84
85
  disableErrorHandling?: boolean
85
86
  disableClickButton?: boolean
86
87
  autocomplete?: string
88
+ helpText?: string
87
89
  }>(),
88
90
  {
89
91
  modelValue: undefined,
@@ -150,6 +152,7 @@
150
152
  disableErrorHandling: false,
151
153
  disableClickButton: true,
152
154
  autocomplete: 'off',
155
+ helpText: '',
153
156
  },
154
157
  )
155
158
 
@@ -215,13 +218,19 @@
215
218
  : [],
216
219
  )
217
220
 
221
+ // Check if customRules contains a 'required' rule
222
+ const hasCustomRequiredRule = () => {
223
+ return props.customRules.some(rule => rule.type === 'required')
224
+ }
225
+
218
226
  const validateField = (value: string | number | null) => {
219
227
  if (props.readonly) {
220
228
  validation.clearValidation()
221
229
  return true
222
230
  }
223
231
 
224
- if (!value && !props.required) {
232
+ // Don't short-circuit if a custom required rule exists
233
+ if (!value && !props.required && !hasCustomRequiredRule()) {
225
234
  validation.clearValidation()
226
235
  return true
227
236
  }
@@ -292,6 +301,40 @@
292
301
  return isShouldDisplayAsterisk.value ? `${props.label} *` : props.label
293
302
  })
294
303
 
304
+ // Détermine s'il y a des messages d'erreur ou d'état
305
+ const hasMessages = computed(() => {
306
+ if (props.disableErrorHandling) return false
307
+ return (props.errorMessages?.length ?? 0) > 0 || hasError.value || hasWarning.value || hasSuccess.value
308
+ })
309
+
310
+ // Détermine si le helpText doit être affiché à la position du message ou en dessous
311
+ const showHelpTextAsMessage = computed(() => {
312
+ // Afficher à la position du message si pas de messages d'erreur
313
+ return props.helpText && !hasMessages.value
314
+ })
315
+
316
+ const showHelpTextBelow = computed(() => {
317
+ // Afficher en dessous si il y a des messages d'erreur ET hideMessages n'est pas activé
318
+ return props.helpText && hasMessages.value && !props.areDetailsHidden
319
+ })
320
+
321
+ // Accessible label that includes prefix and suffix content for screen readers
322
+ const accessibleLabel = computed(() => {
323
+ let label = labelWithAsterisk.value
324
+
325
+ // Add prefix content if provided
326
+ if (props.prefix) {
327
+ label += ` ${props.prefix}`
328
+ }
329
+
330
+ // Add suffix content if provided
331
+ if (props.suffix) {
332
+ label += ` ${props.suffix}`
333
+ }
334
+
335
+ return label
336
+ })
337
+
295
338
  const dividerProps = {
296
339
  thickness: 2,
297
340
  length: '25px',
@@ -343,11 +386,137 @@
343
386
  addSrOnlySpan('.v-text-field__prefix')
344
387
  addSrOnlySpan('.v-text-field__suffix')
345
388
 
346
- // Remove aria-describedby attribute
347
- const inputElement = syTextFieldRef.value?.$el?.querySelector('input')
348
- if (inputElement) {
349
- inputElement.removeAttribute('aria-describedby')
389
+ // RGAA compliance: Associate error messages with input via aria-describedby
390
+ const setupAriaDescribedby = () => {
391
+ const inputElement = syTextFieldRef.value?.$el?.querySelector('input')
392
+ const messagesContainer = syTextFieldRef.value?.$el?.querySelector('.v-messages')
393
+ const detailsContainer = syTextFieldRef.value?.$el?.querySelector('.v-input__details')
394
+
395
+ if (inputElement && messagesContainer) {
396
+ // Create unique ID for messages container only
397
+ const messagesId = `${inputElement.id || 'input'}-messages`
398
+ messagesContainer.id = messagesId
399
+
400
+ // Get existing aria-describedby value and combine with messages ID (avoid duplicates)
401
+ const existingDescribedby = inputElement.getAttribute('aria-describedby')
402
+ const existingIds = existingDescribedby ? existingDescribedby.split(' ').filter(id => id.trim()) : []
403
+
404
+ // Only add messagesId if it's not already present
405
+ if (!existingIds.includes(messagesId)) {
406
+ existingIds.push(messagesId)
407
+ }
408
+
409
+ const describedbyIds = existingIds.join(' ').trim()
410
+
411
+ // Associate input with messages via aria-describedby (preserve existing IDs)
412
+ inputElement.setAttribute('aria-describedby', describedbyIds)
413
+
414
+ // Remove problematic ARIA attributes from details container (parent)
415
+ if (detailsContainer) {
416
+ // Remove any existing ID to avoid duplicates
417
+ if (detailsContainer.id === messagesId) {
418
+ detailsContainer.removeAttribute('id')
419
+ }
420
+ detailsContainer.removeAttribute('role')
421
+ detailsContainer.removeAttribute('aria-live')
422
+ detailsContainer.removeAttribute('aria-atomic')
423
+ }
424
+
425
+ // Also remove from messages container itself
426
+ messagesContainer.removeAttribute('role')
427
+ messagesContainer.removeAttribute('aria-live')
428
+ messagesContainer.removeAttribute('aria-atomic')
429
+ }
430
+ else if (inputElement) {
431
+ // No messages container, but preserve existing aria-describedby values
432
+ const existingDescribedby = inputElement.getAttribute('aria-describedby')
433
+ const messagesId = `${inputElement.id || 'input'}-messages`
434
+
435
+ if (existingDescribedby) {
436
+ // Remove only the messages ID if it exists, keep other IDs
437
+ const describedbyIds = existingDescribedby
438
+ .split(' ')
439
+ .filter(id => id.trim() && id !== messagesId)
440
+ .join(' ')
441
+ .trim()
442
+
443
+ if (describedbyIds) {
444
+ inputElement.setAttribute('aria-describedby', describedbyIds)
445
+ }
446
+ else {
447
+ inputElement.removeAttribute('aria-describedby')
448
+ }
449
+ }
450
+ }
350
451
  }
452
+
453
+ setupAriaDescribedby()
454
+ })
455
+
456
+ // Watch for error state changes to update aria-describedby dynamically
457
+ watch([hasError, errors], () => {
458
+ nextTick(() => {
459
+ const inputElement = syTextFieldRef.value?.$el?.querySelector('input')
460
+ const messagesContainer = syTextFieldRef.value?.$el?.querySelector('.v-messages')
461
+ const detailsContainer = syTextFieldRef.value?.$el?.querySelector('.v-input__details')
462
+
463
+ if (inputElement && messagesContainer) {
464
+ // Create unique ID for messages container only
465
+ const messagesId = `${inputElement.id || 'input'}-messages`
466
+ messagesContainer.id = messagesId
467
+
468
+ // Get existing aria-describedby value and combine with messages ID (avoid duplicates)
469
+ const existingDescribedby = inputElement.getAttribute('aria-describedby')
470
+ const existingIds = existingDescribedby ? existingDescribedby.split(' ').filter(id => id.trim()) : []
471
+
472
+ // Only add messagesId if it's not already present
473
+ if (!existingIds.includes(messagesId)) {
474
+ existingIds.push(messagesId)
475
+ }
476
+
477
+ const describedbyIds = existingIds.join(' ').trim()
478
+
479
+ // Associate input with messages via aria-describedby (preserve existing IDs)
480
+ inputElement.setAttribute('aria-describedby', describedbyIds)
481
+
482
+ // Remove problematic ARIA attributes from details container (parent)
483
+ if (detailsContainer) {
484
+ // Remove any existing ID to avoid duplicates
485
+ if (detailsContainer.id === messagesId) {
486
+ detailsContainer.removeAttribute('id')
487
+ }
488
+ detailsContainer.removeAttribute('role')
489
+ detailsContainer.removeAttribute('aria-live')
490
+ detailsContainer.removeAttribute('aria-atomic')
491
+ }
492
+
493
+ // Also remove from messages container itself
494
+ messagesContainer.removeAttribute('role')
495
+ messagesContainer.removeAttribute('aria-live')
496
+ messagesContainer.removeAttribute('aria-atomic')
497
+ }
498
+ else if (inputElement) {
499
+ // No messages container, but preserve existing aria-describedby values
500
+ const existingDescribedby = inputElement.getAttribute('aria-describedby')
501
+ const messagesId = `${inputElement.id || 'input'}-messages`
502
+
503
+ if (existingDescribedby) {
504
+ // Remove only the messages ID if it exists, keep other IDs
505
+ const describedbyIds = existingDescribedby
506
+ .split(' ')
507
+ .filter(id => id.trim() && id !== messagesId)
508
+ .join(' ')
509
+ .trim()
510
+
511
+ if (describedbyIds) {
512
+ inputElement.setAttribute('aria-describedby', describedbyIds)
513
+ }
514
+ else {
515
+ inputElement.removeAttribute('aria-describedby')
516
+ }
517
+ }
518
+ }
519
+ })
351
520
  })
352
521
  })
353
522
 
@@ -365,8 +534,9 @@
365
534
  v-model="model"
366
535
  :autocomplete="props.autocomplete"
367
536
  :active="props.isActive"
368
- :title="props.label"
369
- :aria-label="props.label"
537
+ :title="accessibleLabel"
538
+ :aria-label="accessibleLabel"
539
+ :aria-required="props.required ? 'true' : undefined"
370
540
  :base-color="props.baseColor"
371
541
  :bg-color="props.bgColor"
372
542
  :center-affix="props.centerAffix"
@@ -382,9 +552,8 @@
382
552
  :error-messages="errors"
383
553
  :flat="props.isFlat"
384
554
  :focused="props.isFocused"
385
- :hide-details="props.areDetailsHidden"
386
- :hide-spin-buttons="props.areSpinButtonsHidden"
387
- :hint="props.hint"
555
+ :hide-details="props.areDetailsHidden && !showHelpTextAsMessage"
556
+ :hint="showHelpTextAsMessage ? props.helpText : props.hint"
388
557
  :label="labelWithAsterisk"
389
558
  :loading="props.loading"
390
559
  :max-errors="props.maxErrors"
@@ -394,7 +563,7 @@
394
563
  :name="props.name"
395
564
  :persistent-clear="props.displayPersistentClear"
396
565
  :persistent-counter="props.displayPersistentCounter"
397
- :persistent-hint="props.displayPersistentHint"
566
+ :persistent-hint="props.displayPersistentHint || !!showHelpTextAsMessage"
398
567
  :persistent-placeholder="props.displayPersistentPlaceholder"
399
568
  :placeholder="props.placeholder"
400
569
  :prefix="props.prefix"
@@ -430,24 +599,29 @@
430
599
  :location="props.tooltipLocation"
431
600
  >
432
601
  <template #activator="{ props: tooltipProps }">
433
- <VIcon
602
+ <SyIcon
434
603
  v-bind="tooltipProps"
435
- :aria-label="props.label ? `${props.label} - info` : 'Info'"
604
+ :label="props.label ? `${props.label} - info` : 'Info'"
436
605
  :color="appendInnerIconColor"
437
606
  :icon="ICONS.info"
438
607
  role="button"
608
+ :decorative="false"
439
609
  />
440
610
  </template>
441
611
  </VTooltip>
442
612
  </template>
443
- <VIcon
613
+ <SyIcon
444
614
  v-else-if="props.prependIcon && !props.noIcon"
445
- :aria-label="disableClickButton ? (props.label ? props.label : props.prependIcon) : (props.label ? `${props.label} - bouton ${props.prependIcon}` : `Bouton ${props.prependIcon}`)"
615
+ :label="disableClickButton ? undefined : (props.label ? `${props.label} - bouton ${props.prependIcon}` : `Bouton ${props.prependIcon}`)"
446
616
  :color="appendInnerIconColor"
447
617
  :icon="ICONS[props.prependIcon]"
448
618
  :role="disableClickButton ? 'presentation' : 'button'"
449
619
  :class="disableClickButton ? 'cursor-default' : 'cursor-pointer'"
620
+ :decorative="disableClickButton"
621
+ :tabindex="disableClickButton ? undefined : '0'"
450
622
  @click="handlePrependIconClick"
623
+ @keydown.enter.prevent="handlePrependIconClick"
624
+ @keydown.space.prevent="handlePrependIconClick"
451
625
  />
452
626
  </slot>
453
627
  </template>
@@ -464,24 +638,29 @@
464
638
  :location="props.tooltipLocation"
465
639
  >
466
640
  <template #activator="{ props: tooltipProps }">
467
- <VIcon
641
+ <SyIcon
468
642
  v-bind="tooltipProps"
469
- :aria-label="props.label ? `${props.label} - info` : 'Info'"
643
+ :label="props.label ? `${props.label} - info` : 'Info'"
470
644
  :color="appendInnerIconColor"
471
645
  :icon="ICONS.info"
472
646
  role="button"
647
+ :decorative="false"
473
648
  />
474
649
  </template>
475
650
  </VTooltip>
476
651
  </template>
477
- <VIcon
652
+ <SyIcon
478
653
  v-else-if="props.appendIcon && !props.noIcon"
479
- :aria-label="disableClickButton ? (props.label ? props.label : props.appendIcon) : (props.label ? `${props.label} - bouton ${props.appendIcon}` : `Bouton ${props.appendIcon}`)"
654
+ :label="disableClickButton ? undefined : (props.label ? `${props.label} - bouton ${props.appendIcon}` : `Bouton ${props.appendIcon}`)"
480
655
  :color="appendInnerIconColor"
481
656
  :icon="ICONS[props.appendIcon]"
482
657
  :role="disableClickButton ? 'presentation' : 'button'"
483
658
  :class="disableClickButton ? 'cursor-default' : 'cursor-pointer'"
659
+ :decorative="disableClickButton"
660
+ :tabindex="disableClickButton ? undefined : '0'"
484
661
  @click="handleAppendIconClick"
662
+ @keydown.enter.prevent="handleAppendIconClick"
663
+ @keydown.space.prevent="handleAppendIconClick"
485
664
  />
486
665
  </slot>
487
666
  </template>
@@ -489,10 +668,11 @@
489
668
  <!-- Prepend inner -->
490
669
  <template #prepend-inner>
491
670
  <slot name="prepend-inner">
492
- <VIcon
671
+ <SyIcon
493
672
  v-if="props.prependInnerIcon && !props.noIcon"
494
673
  :icon="ICONS[props.prependInnerIcon]"
495
674
  role="presentation"
675
+ :decorative="true"
496
676
  />
497
677
  <VDivider
498
678
  v-if="props.showDivider"
@@ -506,23 +686,31 @@
506
686
  <!-- Append inner -->
507
687
  <template #append-inner>
508
688
  <slot name="append-inner">
509
- <VIcon
689
+ <SyIcon
510
690
  v-if="validationIcon && !props.appendInnerIcon"
511
691
  :icon="validationIcon"
512
692
  role="presentation"
693
+ :decorative="true"
513
694
  />
514
- <VIcon
695
+ <SyIcon
515
696
  v-if="props.appendInnerIcon && !props.noIcon"
516
697
  :color="appendInnerIconColor"
517
698
  role="presentation"
518
- >
519
- {{ ICONS[props.appendInnerIcon] }}
520
- </VIcon>
699
+ :icon="ICONS[props.appendInnerIcon]"
700
+ :decorative="true"
701
+ />
521
702
  </slot>
522
703
  </template>
523
704
 
524
705
  <template #details>
525
706
  <slot name="details" />
707
+ <div
708
+ v-if="showHelpTextBelow"
709
+ class="help-text-below px-4 mt-1"
710
+ :class="{ 'text-disabled': props.disabled }"
711
+ >
712
+ {{ props.helpText }}
713
+ </div>
526
714
  </template>
527
715
  </VTextField>
528
716
  </template>
@@ -599,8 +787,17 @@
599
787
 
600
788
  .basic-field {
601
789
  :deep(.v-icon__svg) {
602
- fill: rgb(0 0 0 / 100%);
790
+ fill: rgb(0 0 0 / 70%);
603
791
  }
604
792
  }
605
793
 
794
+ .help-text-below {
795
+ color: rgba(var(--v-theme-on-surface), var(--v-medium-emphasis-opacity));
796
+ font-size: 14px;
797
+ line-height: 1.2;
798
+ }
799
+
800
+ .help-text-below.text-disabled {
801
+ color: rgba(var(--v-theme-on-surface), var(--v-disabled-opacity));
802
+ }
606
803
  </style>
@@ -159,6 +159,10 @@ export const Legende: StoryObj = {
159
159
  </div>
160
160
  </div>
161
161
  </div>
162
+ <div class="mt-4">
163
+ <p>Rapport d’audit manuel : <a href="/audits/DataList.xlsx" style="color:#0C41BD;">Voir le rapport</a></p>
164
+ <p style="color: grey; font-size: 14px">Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system/issues/4030" target="_blank" style="color:#0C41BD;">issue #4030</a>)</p>
165
+ </div>
162
166
  `,
163
167
  }
164
168
  },
@@ -1,8 +1,6 @@
1
1
  <script lang="ts" setup>
2
- import { computed } from 'vue'
3
2
  import type { PropType } from 'vue'
4
3
 
5
- import { locales } from './locales'
6
4
  import DataListItem from '@/components/DataListItem/DataListItem.vue'
7
5
  import DataListLoading from './DataListLoading/DataListLoading.vue'
8
6
 
@@ -26,6 +24,10 @@
26
24
  type: String,
27
25
  default: 'text-subtitle-1 font-weight-bold mb-3',
28
26
  },
27
+ titleTag: {
28
+ type: String,
29
+ default: 'h4',
30
+ },
29
31
  row: {
30
32
  type: Boolean,
31
33
  default: false,
@@ -64,12 +66,14 @@
64
66
  },
65
67
  })
66
68
 
69
+ const uniqueId = Math.random().toString(36).substr(2, 9)
70
+
71
+ const sectionTitleId = `data-list-section-title-${uniqueId}`
72
+
67
73
  const { widthStyles } = useWidthable(props)
68
74
 
69
75
  const emit = defineEmits(['click:item-action'])
70
76
 
71
- const label = computed(() => (props.loading ? locales.loadingLabel : undefined))
72
-
73
77
  const getIcon = (iconName?: string): string | undefined => {
74
78
  if (!iconName || !props.icons) {
75
79
  return
@@ -86,51 +90,52 @@
86
90
  </script>
87
91
 
88
92
  <template>
89
- <div
90
- :aria-label="label"
91
- :style="widthStyles"
92
- class="sy-data-list"
93
- >
94
- <VFadeTransition mode="out-in">
95
- <DataListLoading
96
- v-if="loading"
97
- :items-number="itemsNumberLoading"
98
- :heading="headingLoading"
99
- :title-class="titleClass"
100
- :row="row"
101
- />
93
+ <VFadeTransition mode="out-in">
94
+ <DataListLoading
95
+ v-if="loading"
96
+ :items-number="itemsNumberLoading"
97
+ :heading="headingLoading"
98
+ :row="row"
99
+ />
102
100
 
103
- <div v-else>
104
- <slot name="title">
105
- <h4
106
- v-if="listTitle"
107
- :class="titleClass"
108
- >
109
- {{ listTitle }}
110
- </h4>
111
- </slot>
101
+ <component
102
+ :is="listTitle ? 'section' : 'div'"
103
+ v-else
104
+ :aria-labelledby="listTitle ? sectionTitleId : undefined"
105
+ :style="widthStyles"
106
+ class="sy-data-list"
107
+ >
108
+ <slot name="title">
109
+ <component
110
+ :is="titleTag"
111
+ v-if="listTitle"
112
+ :id="sectionTitleId"
113
+ :class="titleClass"
114
+ >
115
+ {{ listTitle }}
116
+ </component>
117
+ </slot>
112
118
 
113
- <ul v-if="items.length">
114
- <DataListItem
115
- v-for="(item, index) in items"
116
- :key="index"
117
- :label="item.key"
118
- :value="item.value"
119
- :action="item.action"
120
- :chip="item.chip"
121
- :row="row"
122
- :render-html-value="renderHtmlValue"
123
- :icon="getIcon(item.icon)"
124
- :placeholder="placeholder"
125
- :vuetify-options="item.options"
126
- :class="getItemClass(index, item.class)"
127
- class="sy-data-list-item text-body-1"
128
- @click:action="emit('click:item-action', index)"
129
- />
130
- </ul>
131
- </div>
132
- </VFadeTransition>
133
- </div>
119
+ <dl v-if="items.length">
120
+ <DataListItem
121
+ v-for="(item, index) in items"
122
+ :key="index"
123
+ :label="item.key"
124
+ :value="item.value"
125
+ :action="item.action"
126
+ :chip="item.chip"
127
+ :row="row"
128
+ :render-html-value="renderHtmlValue"
129
+ :icon="getIcon(item.icon)"
130
+ :placeholder="placeholder"
131
+ :vuetify-options="item.options"
132
+ :class="getItemClass(index, item.class)"
133
+ class="sy-data-list-item text-body-1"
134
+ @click:action="emit('click:item-action', index)"
135
+ />
136
+ </dl>
137
+ </component>
138
+ </VFadeTransition>
134
139
  </template>
135
140
 
136
141
  <style lang="scss" scoped>
@@ -218,6 +218,10 @@ export const Legende: StoryObj = {
218
218
  </div>
219
219
  </div>
220
220
  </div>
221
+ <div class="mt-4">
222
+ <p>Rapport d’audit manuel : <a href="/audits/DataListGroup.xlsx" style="color:#0C41BD;">Voir le rapport</a></p>
223
+ <p style="color: grey; font-size: 14px">Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/651" target="_blank" style="color:#0C41BD;">issue #651</a>)</p>
224
+ </div>
221
225
  `,
222
226
  }
223
227
  },
@@ -17,6 +17,10 @@
17
17
  type: String,
18
18
  default: '200px',
19
19
  },
20
+ titlesTag: {
21
+ type: String,
22
+ default: 'h4',
23
+ },
20
24
  loading: {
21
25
  type: Boolean,
22
26
  default: false,
@@ -40,20 +44,33 @@
40
44
  </script>
41
45
 
42
46
  <template>
43
- <div class="vd-data-list-group d-flex flex-wrap max-width-none ma-n4">
44
- <DataList
47
+ <ul class="sy-data-list-group d-flex max-width-none ma-n4">
48
+ <li
45
49
  v-for="(dataList, index) in props.items"
46
- :key="`vd-data-list-${index}`"
47
- :loading="props.loading"
48
- :render-html-value="props.renderHtmlValue"
49
- :list-title="dataList.title"
50
- :items="dataList.items"
51
- :items-number-loading="dataList.itemsNumberLoading"
52
- :heading-loading="dataList.headingLoading"
53
- :width="props.itemWidth"
54
- :icons="props.icons"
55
- class="ma-4"
56
- @click:item-action="emitItemAction(index, $event)"
57
- />
58
- </div>
50
+ :key="`sy-data-list-${index}`"
51
+ class="sy-data-list-group-item"
52
+ >
53
+ <DataList
54
+ :loading="props.loading"
55
+ :render-html-value="props.renderHtmlValue"
56
+ :list-title="dataList.title"
57
+ :items="dataList.items"
58
+ :items-number-loading="dataList.itemsNumberLoading"
59
+ :heading-loading="dataList.headingLoading"
60
+ :title-tag="props.titlesTag"
61
+ :width="props.itemWidth"
62
+ :icons="props.icons"
63
+ class="ma-4"
64
+ @click:item-action="emitItemAction(index, $event)"
65
+ />
66
+ </li>
67
+ </ul>
59
68
  </template>
69
+
70
+ <style lang="scss" scoped>
71
+ .sy-data-list-group {
72
+ list-style: none;
73
+ padding: 0;
74
+ margin: 0;
75
+ }
76
+ </style>