@cnamts/synapse 1.0.3 → 1.0.4

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 (207) hide show
  1. package/dist/DateFilter-yrwJv_2R.js +95 -0
  2. package/dist/NumberFilter-BQXtywZI.js +117 -0
  3. package/dist/PeriodFilter-BYXVSzr5.js +108 -0
  4. package/dist/SelectFilter-CJV_mlN3.js +133 -0
  5. package/dist/TextFilter-DN0ejYIs.js +110 -0
  6. package/dist/components/Accordion/Accordion.d.ts +2 -2
  7. package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +5 -5
  8. package/dist/components/Amelipro/AmeliproIcon/AmeliproIcon.d.ts +1 -1
  9. package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +7 -7
  10. package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +5 -5
  11. package/dist/components/Amelipro/AmeliproStateTile/AmeliproStateTile.d.ts +9 -0
  12. package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +10 -10
  13. package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +1 -1
  14. package/dist/components/CookieBanner/CookieBanner.d.ts +302 -1
  15. package/dist/components/CookieBanner/config.d.ts +1 -0
  16. package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +1188 -1
  17. package/dist/components/CookiesSelection/CookiesSelection.d.ts +217 -0
  18. package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +1 -1
  19. package/dist/components/Customs/SyTextField/SyTextField.d.ts +1 -1
  20. package/dist/components/DataList/DataList.d.ts +1 -1
  21. package/dist/components/DataListItem/DataListItem.d.ts +1 -1
  22. package/dist/components/DatePicker/{DatePicker → CalendarMode}/DatePicker.d.ts +15 -15
  23. package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +13 -13
  24. package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +4 -4
  25. package/dist/components/DatePicker/composables/useDatePickerViewMode.d.ts +2 -2
  26. package/dist/components/DatePicker/composables/useDatePickerVisibility.d.ts +2 -2
  27. package/dist/components/DatePicker/composables/useDateSelection.d.ts +1 -1
  28. package/dist/components/DatePicker/composables/useMonthButtonCustomization.d.ts +2 -2
  29. package/dist/components/DatePicker/composables/useTodayButton.d.ts +1 -1
  30. package/dist/components/DatePicker/composables/useWeekendDays.d.ts +1 -1
  31. package/dist/components/DatePicker/constants/messages.d.ts +1 -1
  32. package/dist/components/DatePicker/types.d.ts +2 -2
  33. package/dist/components/ExternalLinks/ExternalLinks.d.ts +3 -3
  34. package/dist/components/ExternalLinks/config.d.ts +4 -3
  35. package/dist/components/ExternalLinks/locales.d.ts +1 -0
  36. package/dist/components/NirField/NirField.d.ts +11 -11
  37. package/dist/components/PasswordField/PasswordField.d.ts +1 -1
  38. package/dist/components/PeriodField/PeriodField.d.ts +24 -24
  39. package/dist/components/Tables/common/locales.d.ts +5 -0
  40. package/dist/components/Tables/common/useTableAria.d.ts +21 -0
  41. package/dist/components/index.d.ts +1 -1
  42. package/dist/composables/date/useDatePickerAccessibility.d.ts +2 -2
  43. package/dist/{style.css → design-system-v3.css} +1 -1
  44. package/dist/design-system-v3.js +1 -1
  45. package/dist/design-system-v3.umd.cjs +273 -252
  46. package/dist/directives/Toolbar.d.ts +15 -0
  47. package/dist/directives/letterSpacing.d.ts +27 -0
  48. package/dist/{main-DoYCrS2Q.js → main-BzyNNvHX.js} +10482 -10252
  49. package/package.json +12 -12
  50. package/src/assets/_typography.scss +22 -23
  51. package/src/components/Accordion/Accordion.vue +2 -2
  52. package/src/components/Accordion/tests/__snapshots__/accordion.spec.ts.snap +5 -1
  53. package/src/components/Amelipro/AmeliproAutoCompleteField/__tests__/__snapshots__/AmeliproAutoCompleteField.spec.ts.snap +26 -14
  54. package/src/components/Amelipro/AmeliproBreadcrumb/__tests__/__snapshots__/AmeliproBreadcrumb.spec.ts.snap +15 -3
  55. package/src/components/Amelipro/AmeliproBtn/tests/__snapshots__/AmeliproBtn.spec.ts.snap +5 -1
  56. package/src/components/Amelipro/AmeliproCallback/tests/__snapshots__/AmeliproCallback.spec.ts.snap +14 -3
  57. package/src/components/Amelipro/AmeliproCard/tests/__snapshots__/AmeliproCard.spec.ts.snap +9 -2
  58. package/src/components/Amelipro/AmeliproChips/tests/__snapshots__/AmeliproChips.spec.ts.snap +4 -1
  59. package/src/components/Amelipro/AmeliproDialog/tests/__snapshots__/AmeliproDialog.spec.ts.snap +9 -2
  60. package/src/components/Amelipro/AmeliproDisclosure/tests/__snapshots__/AmeliproDisclosure.spec.ts.snap +19 -3
  61. package/src/components/Amelipro/AmeliproFooter/tests/__snapshots__/AmeliproFooter.spec.ts.snap +35 -7
  62. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +1 -1
  63. package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/__snapshots__/AmeliproHeaderBar.spec.ts.snap +5 -2
  64. package/src/components/Amelipro/AmeliproHeader/tests/__snapshots__/AmeliproHeader.spec.ts.snap +130 -30
  65. package/src/components/Amelipro/AmeliproIconBtn/tests/__snapshots__/AmeliproIconBtn.spec.ts.snap +4 -1
  66. package/src/components/Amelipro/AmeliproIllustratedDataTile/tests/__snapshots__/AmeliproIllustratedDataTile.spec.ts.snap +4 -1
  67. package/src/components/Amelipro/AmeliproIllustratedRadioGroup/tests/__snapshots__/AmeliproIllustratedRadioGroup.spec.ts.snap +25 -5
  68. package/src/components/Amelipro/AmeliproMailTile/tests/__snapshots__/AmeliproMailTile.spec.ts.snap +5 -1
  69. package/src/components/Amelipro/AmeliproMenu/tests/__snapshots__/AmeliproMenu.spec.ts.snap +77 -15
  70. package/src/components/Amelipro/AmeliproMessage/tests/__snapshots__/AmeliproMessage.spec.ts.snap +11 -2
  71. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +5 -1
  72. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +25 -5
  73. package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +10 -2
  74. package/src/components/Amelipro/AmeliproMessagingLayout/tests/__snapshots__/AmeliproMessagingLayout.spec.ts.snap +42 -8
  75. package/src/components/Amelipro/AmeliproMultipleFoldingCard/tests/__snapshots__/AmeliproMultipleFoldingCard.spec.ts.snap +13 -3
  76. package/src/components/Amelipro/AmeliproNumberedCard/tests/__snapshots__/AmeliproNumberedCard.spec.ts.snap +12 -3
  77. package/src/components/Amelipro/AmeliproPageLayout/tests/__snapshots__/AmeliproPageLayout.spec.ts.snap +195 -42
  78. package/src/components/Amelipro/AmeliproPagination/AmeliproPaginationBtn/tests/__snapshots__/AmeliproPaginationBtn.spec.ts.snap +5 -1
  79. package/src/components/Amelipro/AmeliproPagination/tests/__snapshots__/AmeliproPagination.spec.ts.snap +10 -2
  80. package/src/components/Amelipro/AmeliproPatientBanner/tests/__snapshots__/AmeliproPatientBanner.spec.ts.snap +26 -4
  81. package/src/components/Amelipro/AmeliproSelect/tests/__snapshots__/AmeliproSelect.spec.ts.snap +10 -11
  82. package/src/components/Amelipro/AmeliproStateTile/AmeliproStateTile.stories.ts +2 -0
  83. package/src/components/Amelipro/AmeliproStateTile/AmeliproStateTile.vue +11 -4
  84. package/src/components/Amelipro/AmeliproStateTile/AmeliproStateTileTypes.ts +5 -0
  85. package/src/components/Amelipro/AmeliproStateTile/tests/__snapshots__/AmeliproStateTile.spec.ts.snap +13 -2
  86. package/src/components/Amelipro/AmeliproStatus/tests/__snapshots__/AmeliproStatus.spec.ts.snap +5 -1
  87. package/src/components/Amelipro/AmeliproStepper/AmeliproStepBtn/tests/__snapshots__/AmeliproStepBtn.spec.ts.snap +7 -1
  88. package/src/components/Amelipro/AmeliproStepper/tests/__snapshots__/AmeliproStepper.spec.ts.snap +49 -7
  89. package/src/components/Amelipro/AmeliproTabs/AmeliproTabBtn/tests/__snapshots__/AmeliproTabBtn.spec.ts.snap +5 -1
  90. package/src/components/Amelipro/AmeliproTabs/tests/__snapshots__/AmeliproTabs.spec.ts.snap +21 -4
  91. package/src/components/Amelipro/AmeliproTextArea/__tests__/__snapshots__/AmeliproTextArea.spec.ts.snap +10 -11
  92. package/src/components/Amelipro/AmeliproTextField/tests/__snapshots__/AmeliproTextField.spec.ts.snap +10 -11
  93. package/src/components/Amelipro/AmeliproTileBtn/tests/__snapshots__/AmeliproTileBtn.spec.ts.snap +8 -1
  94. package/src/components/Amelipro/AmeliproTooltips/tests/__snapshots__/AmeliproTooltips.spec.ts.snap +11 -2
  95. package/src/components/Amelipro/AmeliproTransmission/tests/__snapshots__/AmeliproTransmission.spec.ts.snap +26 -5
  96. package/src/components/Amelipro/ServiceMenu/ServiceBtn/tests/__snapshots__/ServiceBtn.spec.ts.snap +9 -2
  97. package/src/components/Amelipro/ServiceMenu/ServiceList/tests/__snapshots__/ServiceList.spec.ts.snap +18 -4
  98. package/src/components/Amelipro/ServiceMenu/ServiceMenuContent/tests/__snapshots__/ServiceMenuContent.spec.ts.snap +69 -15
  99. package/src/components/Amelipro/ServiceMenu/tests/__snapshots__/ServiceMenu.spec.ts.snap +84 -19
  100. package/src/components/Amelipro/StructureMenu/StructureItem/tests/__snapshots__/StructureItem.spec.ts.snap +5 -1
  101. package/src/components/Amelipro/StructureMenu/StructureList/tests/__snapshots__/StructureList.spec.ts.snap +15 -4
  102. package/src/components/Amelipro/StructureMenu/StructureTabs/tests/__snapshots__/StructureTabs.spec.ts.snap +30 -8
  103. package/src/components/Amelipro/StructureMenu/tests/__snapshots__/StructureMenu.spec.ts.snap +72 -16
  104. package/src/components/Amelipro/UserMenu/tests/__snapshots__/UserMenu.spec.ts.snap +9 -2
  105. package/src/components/BackToTopBtn/tests/BackToTopBtn.spec.ts +53 -15
  106. package/src/components/BackToTopBtn/tests/__snapshots__/BackToTopBtn.spec.ts.snap +10 -2
  107. package/src/components/CollapsibleList/CollapsibleList.vue +5 -1
  108. package/src/components/CookieBanner/Accessibilite.stories.ts +4 -0
  109. package/src/components/CookieBanner/CookieBanner.vue +137 -10
  110. package/src/components/CookieBanner/config.ts +3 -0
  111. package/src/components/CookieBanner/tests/__snapshots__/CookieBanner.spec.ts.snap +49 -38
  112. package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +80 -2
  113. package/src/components/CookiesSelection/CookiesSelection.vue +15 -2
  114. package/src/components/CookiesSelection/tests/__snapshots__/CookiesSelection.spec.ts.snap +49 -34
  115. package/src/components/CopyBtn/tests/__snapshots__/CopyBtn.spec.ts.snap +1 -1
  116. package/src/components/Customs/Selects/SelectBtnField/tests/__snapshots__/SelectBtnField.spec.ts.snap +58 -13
  117. package/src/components/Customs/Selects/SySelect/SySelect.vue +144 -147
  118. package/src/components/DatePicker/{DatePicker → CalendarMode}/DatePicker.stories.ts +3 -3
  119. package/src/components/DatePicker/{DatePicker → CalendarMode}/DatePicker.vue +4 -4
  120. package/src/components/DatePicker/{DatePicker → CalendarMode}/tests/DatePicker.events.spec.ts +1 -1
  121. package/src/components/DatePicker/{DatePicker → CalendarMode}/tests/DatePicker.spec.ts +4 -4
  122. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.mdx +1 -1
  123. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +3 -3
  124. package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +6 -6
  125. package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +3 -3
  126. package/src/components/DatePicker/DatePickerOverview.mdx +1 -1
  127. package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts +1 -1
  128. package/src/components/DatePicker/DateTextInput/DateRange.stories.ts +76 -3
  129. package/src/components/DatePicker/DateTextInput/NoCalendar.mdx +1 -1
  130. package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +1 -1
  131. package/src/components/DatePicker/composables/index.ts +2 -2
  132. package/src/components/DatePicker/composables/tests/useDatePickerVisibility.spec.ts +14 -14
  133. package/src/components/DatePicker/composables/useDatePickerViewMode.ts +4 -4
  134. package/src/components/DatePicker/composables/useDatePickerVisibility.ts +12 -12
  135. package/src/components/DatePicker/composables/useDateSelection.ts +1 -1
  136. package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +3 -3
  137. package/src/components/DatePicker/composables/useTodayButton.ts +1 -1
  138. package/src/components/DatePicker/composables/useWeekendDays.ts +1 -1
  139. package/src/components/DatePicker/constants/messages.ts +1 -1
  140. package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +2 -2
  141. package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +1 -1
  142. package/src/components/DatePicker/types.ts +2 -2
  143. package/src/components/DialogBox/tests/DialogBox.spec.ts +26 -4
  144. package/src/components/DialogBox/tests/__snapshots__/DialogBox.spec.ts.snap +13 -3
  145. package/src/components/DownloadBtn/tests/__snapshots__/DownloadBtn.spec.ts.snap +8 -2
  146. package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +18 -4
  147. package/src/components/ExternalLinks/Accessibilite.mdx +4 -1
  148. package/src/components/ExternalLinks/Accessibilite.stories.ts +34 -0
  149. package/src/components/ExternalLinks/ExternalLinks.stories.ts +1 -3
  150. package/src/components/ExternalLinks/ExternalLinks.vue +96 -41
  151. package/src/components/ExternalLinks/config.ts +5 -4
  152. package/src/components/ExternalLinks/locales.ts +1 -0
  153. package/src/components/ExternalLinks/tests/ExternalLinks.spec.ts +3 -3
  154. package/src/components/ExternalLinks/tests/__snapshots__/ExternalLinks.spec.ts.snap +510 -400
  155. package/src/components/FilterInline/tests/__snapshots__/FilterInline.spec.ts.snap +3 -3
  156. package/src/components/FilterSideBar/tests/FilterSideBar.spec.ts +15 -6
  157. package/src/components/FooterBar/Accessibilite.stories.ts +4 -0
  158. package/src/components/FooterBar/FooterBar.vue +9 -5
  159. package/src/components/FooterBar/tests/__snapshots__/FooterBar.spec.ts.snap +0 -5
  160. package/src/components/FranceConnectBtn/tests/__snapshots__/FranceConnectBtn.spec.ts.snap +15 -3
  161. package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/HeaderBurgerMenu.spec.ts.snap +5 -1
  162. package/src/components/HeaderBar/HeaderLogo/tests/HeaderLogo.spec.ts +31 -6
  163. package/src/components/HeaderBar/tests/__snapshots__/HeaderBar.spec.ts.snap +7 -1
  164. package/src/components/HeaderBar/tests/useHeaderResponsiveMode.spec.ts +63 -5
  165. package/src/components/NirField/NirField.vue +41 -1
  166. package/src/components/NirField/tests/NirField.spec.ts +2 -2
  167. package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +18 -4
  168. package/src/components/PeriodField/PeriodField.vue +3 -3
  169. package/src/components/RangeField/RangeSlider/tests/__snapshots__/rangeSlider.spec.ts.snap +12 -3
  170. package/src/components/RangeField/tests/__snapshots__/RangeField.spec.ts.snap +132 -111
  171. package/src/components/RatingPicker/EmotionPicker/tests/__snapshots__/EmotionPicker.spec.ts.snap +66 -31
  172. package/src/components/RatingPicker/NumberPicker/tests/__snapshots__/NumberPicker.spec.ts.snap +33 -33
  173. package/src/components/RatingPicker/StarsPicker/tests/__snapshots__/StarsPicker.spec.ts.snap +43 -23
  174. package/src/components/RatingPicker/tests/__snapshots__/RatingPicker.spec.ts.snap +33 -33
  175. package/src/components/SyAlert/tests/__snapshots__/SyAlert.spec.ts.snap +5 -1
  176. package/src/components/TableToolbar/tests/__snapshots__/TableToolbar.spec.ts.snap +107 -95
  177. package/src/components/Tables/SyServerTable/SyServerTable.vue +43 -2
  178. package/src/components/Tables/SyTable/SyTable.vue +45 -7
  179. package/src/components/Tables/common/SyTablePagination.vue +10 -6
  180. package/src/components/Tables/common/filters/DateFilter.vue +1 -1
  181. package/src/components/Tables/common/filters/SelectFilter.vue +1 -2
  182. package/src/components/Tables/common/filters/tests/DateFilter.spec.ts +2 -2
  183. package/src/components/Tables/common/locales.ts +7 -0
  184. package/src/components/Tables/common/useTableAria.ts +279 -0
  185. package/src/components/ToolbarContainer/ToolbarContainer.vue +4 -4
  186. package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +17 -5
  187. package/src/components/index.ts +1 -1
  188. package/src/composables/date/tests/useDatePickerAccessibility.spec.ts +1 -1
  189. package/src/composables/date/useDateInitialization.ts +1 -1
  190. package/src/composables/date/useDateInitializationDayjs.ts +1 -1
  191. package/src/composables/date/useDatePickerAccessibility.ts +5 -5
  192. package/src/composables/useFilterable/useFilterable.spec.ts +10 -2
  193. package/src/designTokens/utils/createFontVariables.ts +6 -6
  194. package/src/directives/Toolbar.ts +172 -0
  195. package/src/directives/letterSpacing.ts +233 -0
  196. package/src/stories/Accessibilite/Avancement/Avancement.mdx +6 -6
  197. package/src/stories/Accessibilite/Avancement/Avancement.stories.ts +10 -9
  198. package/src/utils/functions/throttleDisplayFn/tests/throttleDisplayFn.spec.ts +27 -2
  199. package/src/utils/rules/isHolidayDay/IsHolidayDay.stories.ts +2 -2
  200. package/dist/DateFilter-DFKfon7L.js +0 -98
  201. package/dist/NumberFilter-DmhIL2Pr.js +0 -121
  202. package/dist/PeriodFilter-C46V6bYN.js +0 -112
  203. package/dist/SelectFilter-B8dtHtHo.js +0 -136
  204. package/dist/TextFilter-COKGday2.js +0 -114
  205. package/src/components/FilterSideBar/tests/__snapshots__/FilterSideBar.spec.ts.snap +0 -173
  206. package/src/components/SocialMediaLinks/tests/__snapshots__/SocialMediaLinks.spec.ts.snap +0 -186
  207. /package/src/components/DatePicker/{DatePicker → CalendarMode}/DatePicker.mdx +0 -0
@@ -56,7 +56,10 @@ exports[`StructureMenu > render correctly 1`] = `
56
56
  "
57
57
  id="my-structure-menu-id-structure-menu-close-btn"
58
58
  plain=""
59
- style="height: auto; width: auto;"
59
+ style="
60
+ height: auto;
61
+ width: auto;
62
+ "
60
63
  type="button"
61
64
  >
62
65
  <span class="v-btn__overlay"></span>
@@ -87,7 +90,11 @@ exports[`StructureMenu > render correctly 1`] = `
87
90
  "
88
91
  focusable="false"
89
92
  role="img"
90
- style="color: #00749C; height: 40px; width: 40px;"
93
+ style="
94
+ color: #00749C;
95
+ height: 40px;
96
+ width: 40px;
97
+ "
91
98
  >
92
99
  <span>
93
100
  <svg
@@ -193,7 +200,11 @@ exports[`StructureMenu > render correctly 1`] = `
193
200
  "
194
201
  dense=""
195
202
  id="my-structure-menu-id-structure-message"
196
- style="color: #4D547D; caret-color: #4D547D; width: 100%;"
203
+ style="
204
+ color: #4D547D;
205
+ caret-color: #4D547D;
206
+ width: 100%;
207
+ "
197
208
  >
198
209
  <!---->
199
210
  <span class="v-alert__underlay"></span>
@@ -216,7 +227,11 @@ exports[`StructureMenu > render correctly 1`] = `
216
227
  "
217
228
  focusable="false"
218
229
  role="img"
219
- style="color: #FFFFFF; border-radius: 50%; border: 1px solid #FFFFFF;"
230
+ style="
231
+ color: #FFFFFF;
232
+ border-radius: 50%;
233
+ border: 1px solid #FFFFFF;
234
+ "
220
235
  >
221
236
  <span>
222
237
  <svg
@@ -400,7 +415,6 @@ exports[`StructureMenu > render correctly 1`] = `
400
415
  Je choisis une structure :
401
416
  </label>
402
417
  <div
403
- aria-describedby="structures-0-radio-group-messages"
404
418
  aria-labelledby="structures-0-radio-group"
405
419
  class="v-selection-control-group"
406
420
  column=""
@@ -455,7 +469,11 @@ exports[`StructureMenu > render correctly 1`] = `
455
469
  "
456
470
  focusable="false"
457
471
  role="img"
458
- style="color: #01B9F5; border-radius: 50%; border: 1px solid #01B9F5;"
472
+ style="
473
+ color: #01B9F5;
474
+ border-radius: 50%;
475
+ border: 1px solid #01B9F5;
476
+ "
459
477
  >
460
478
  <span>
461
479
  <svg
@@ -553,7 +571,11 @@ exports[`StructureMenu > render correctly 1`] = `
553
571
  "
554
572
  focusable="false"
555
573
  role="img"
556
- style="color: #01B9F5; border-radius: 50%; border: 1px solid #01B9F5;"
574
+ style="
575
+ color: #01B9F5;
576
+ border-radius: 50%;
577
+ border: 1px solid #01B9F5;
578
+ "
557
579
  >
558
580
  <span>
559
581
  <svg
@@ -651,7 +673,11 @@ exports[`StructureMenu > render correctly 1`] = `
651
673
  "
652
674
  focusable="false"
653
675
  role="img"
654
- style="color: #01B9F5; border-radius: 50%; border: 1px solid #01B9F5;"
676
+ style="
677
+ color: #01B9F5;
678
+ border-radius: 50%;
679
+ border: 1px solid #01B9F5;
680
+ "
655
681
  >
656
682
  <span>
657
683
  <svg
@@ -748,7 +774,6 @@ exports[`StructureMenu > render correctly 1`] = `
748
774
  Je choisis une structure :
749
775
  </label>
750
776
  <div
751
- aria-describedby="structures-1-radio-group-messages"
752
777
  aria-labelledby="structures-1-radio-group"
753
778
  class="v-selection-control-group"
754
779
  column=""
@@ -803,7 +828,11 @@ exports[`StructureMenu > render correctly 1`] = `
803
828
  "
804
829
  focusable="false"
805
830
  role="img"
806
- style="color: #01B9F5; border-radius: 50%; border: 1px solid #01B9F5;"
831
+ style="
832
+ color: #01B9F5;
833
+ border-radius: 50%;
834
+ border: 1px solid #01B9F5;
835
+ "
807
836
  >
808
837
  <span>
809
838
  <svg
@@ -901,7 +930,11 @@ exports[`StructureMenu > render correctly 1`] = `
901
930
  "
902
931
  focusable="false"
903
932
  role="img"
904
- style="color: #01B9F5; border-radius: 50%; border: 1px solid #01B9F5;"
933
+ style="
934
+ color: #01B9F5;
935
+ border-radius: 50%;
936
+ border: 1px solid #01B9F5;
937
+ "
905
938
  >
906
939
  <span>
907
940
  <svg
@@ -999,7 +1032,11 @@ exports[`StructureMenu > render correctly 1`] = `
999
1032
  "
1000
1033
  focusable="false"
1001
1034
  role="img"
1002
- style="color: #01B9F5; border-radius: 50%; border: 1px solid #01B9F5;"
1035
+ style="
1036
+ color: #01B9F5;
1037
+ border-radius: 50%;
1038
+ border: 1px solid #01B9F5;
1039
+ "
1003
1040
  >
1004
1041
  <span>
1005
1042
  <svg
@@ -1139,7 +1176,10 @@ exports[`StructureMenu > render correctly 1`] = `
1139
1176
  "
1140
1177
  id="my-structure-menu-id-default-structure-switch-description-btn"
1141
1178
  plain=""
1142
- style="height: auto; width: auto;"
1179
+ style="
1180
+ height: auto;
1181
+ width: auto;
1182
+ "
1143
1183
  type="button"
1144
1184
  >
1145
1185
  <span class="v-btn__overlay"></span>
@@ -1177,7 +1217,13 @@ exports[`StructureMenu > render correctly 1`] = `
1177
1217
  <svg
1178
1218
  aria-hidden="true"
1179
1219
  height="34"
1180
- style="shape-rendering:geometricPrecision;text-rendering:geometricPrecision;image-rendering:optimizeQuality;fill-rule:evenodd;clip-rule:evenodd"
1220
+ style="
1221
+ shape-rendering:geometricPrecision;
1222
+ text-rendering:geometricPrecision;
1223
+ image-rendering:optimizeQuality;
1224
+ fill-rule:evenodd;
1225
+ clip-rule:evenodd;
1226
+ "
1181
1227
  viewBox="0 0 6828 6828"
1182
1228
  width="34"
1183
1229
  xml:space="preserve"
@@ -1246,7 +1292,11 @@ exports[`StructureMenu > render correctly 1`] = `
1246
1292
  v-theme--light
1247
1293
  "
1248
1294
  id="my-structure-menu-id-default-structure-confirm-btn"
1249
- style="height: auto; min-height: 2.5rem; color: #FFFFFF !important;"
1295
+ style="
1296
+ height: auto;
1297
+ min-height: 2.5rem;
1298
+ color: #FFFFFF !important;
1299
+ "
1250
1300
  type="button"
1251
1301
  >
1252
1302
  <span class="v-btn__overlay"></span>
@@ -1290,7 +1340,13 @@ exports[`StructureMenu > render correctly 1`] = `
1290
1340
  v-theme--light
1291
1341
  "
1292
1342
  id="my-structure-menu-id-default-structure-cancel-btn"
1293
- style="height: auto; min-height: 2.5rem; color: #00749C !important; border: 2px solid #00749C !important; background-color: white;"
1343
+ style="
1344
+ height: auto;
1345
+ min-height: 2.5rem;
1346
+ color: #00749C !important;
1347
+ border: 2px solid #00749C !important;
1348
+ background-color: white;
1349
+ "
1294
1350
  type="button"
1295
1351
  >
1296
1352
  <span class="v-btn__overlay"></span>
@@ -21,7 +21,10 @@ exports[`UserMenu > render correctly 1`] = `
21
21
  "
22
22
  id="user-information-summary-id-open-btn"
23
23
  plain=""
24
- style="height: auto; width: auto;"
24
+ style="
25
+ height: auto;
26
+ width: auto;
27
+ "
25
28
  type="button"
26
29
  >
27
30
  <span class="v-btn__overlay"></span>
@@ -52,7 +55,11 @@ exports[`UserMenu > render correctly 1`] = `
52
55
  "
53
56
  focusable="false"
54
57
  role="img"
55
- style="color: #FFFFFF; height: 2rem; width: 2rem;"
58
+ style="
59
+ color: #FFFFFF;
60
+ height: 2rem;
61
+ width: 2rem;
62
+ "
56
63
  >
57
64
  <span>
58
65
  <svg
@@ -35,6 +35,9 @@ describe('BackToTopBtn', () => {
35
35
  })
36
36
 
37
37
  it('shows the button when the user scrolls down', async () => {
38
+ // Initialize scroll position to 0
39
+ vi.spyOn(window, 'scrollY', 'get').mockReturnValue(0)
40
+
38
41
  const wrapper = mount(BackToTopBtn, {
39
42
  global: {
40
43
  plugins: [vuetify],
@@ -42,41 +45,66 @@ describe('BackToTopBtn', () => {
42
45
  attachTo: document.body,
43
46
  })
44
47
 
48
+ // Wait for component to initialize
49
+ await wrapper.vm.$nextTick()
50
+
45
51
  const buttonElement = wrapper.find('.vd-back-to-top-btn')
46
- expect(buttonElement.isVisible()).toBeFalsy()
52
+ // Button should be hidden initially (v-show="false")
53
+ expect(buttonElement.exists()).toBe(true)
54
+ expect((buttonElement.element as HTMLElement).style.display).toBe('none')
47
55
 
56
+ // Simulate scroll down
48
57
  vi.spyOn(window, 'scrollY', 'get').mockReturnValue(500)
49
58
  window.dispatchEvent(new CustomEvent('scroll'))
50
59
  await wrapper.vm.$nextTick()
51
60
 
52
- expect(buttonElement.isVisible()).toBeTruthy()
61
+ // Button should now be visible
62
+ expect((buttonElement.element as HTMLElement).style.display).not.toBe('none')
53
63
  })
54
64
 
55
65
  it('shows the button when the user scrolls down and the target is a custom element', async () => {
56
- document.body.innerHTML = '<div id="test"></div>'
57
- const divContent = document.getElementById('test') as HTMLDivElement
66
+ const divContent = document.createElement('div')
67
+ divContent.id = 'test-target'
68
+ divContent.style.height = '1000px'
69
+ divContent.style.overflow = 'auto'
70
+ document.body.appendChild(divContent)
71
+
72
+ // Initialize scroll position to 0
73
+ vi.spyOn(divContent, 'scrollTop', 'get').mockReturnValue(0)
58
74
 
59
75
  const wrapper = mount(BackToTopBtn, {
76
+ props: {
77
+ target: 'test-target',
78
+ },
60
79
  global: {
61
80
  plugins: [vuetify],
62
81
  },
63
- attachTo: divContent,
64
- props: {
65
- target: 'test',
66
- },
82
+ attachTo: document.body,
67
83
  })
68
84
 
85
+ // Wait for component to initialize
86
+ await wrapper.vm.$nextTick()
87
+
69
88
  const buttonElement = wrapper.find('.vd-back-to-top-btn')
70
- expect(buttonElement.isVisible()).toBeFalsy()
89
+ // Button should be hidden initially (v-show="false")
90
+ expect(buttonElement.exists()).toBe(true)
91
+ expect((buttonElement.element as HTMLElement).style.display).toBe('none')
71
92
 
93
+ // Simulate scroll down
72
94
  vi.spyOn(divContent, 'scrollTop', 'get').mockReturnValue(500)
73
95
  divContent.dispatchEvent(new CustomEvent('scroll'))
74
-
75
96
  await wrapper.vm.$nextTick()
76
- expect(buttonElement.isVisible()).toBeTruthy()
97
+
98
+ // Button should now be visible
99
+ expect((buttonElement.element as HTMLElement).style.display).not.toBe('none')
100
+
101
+ document.body.removeChild(divContent)
77
102
  })
78
103
 
79
104
  it('do not show the button when the user scrolls up', async () => {
105
+ // Initialize scroll position to 0
106
+ vi.spyOn(window, 'scrollY', 'get').mockReturnValue(0)
107
+
80
108
  const wrapper = mount(BackToTopBtn, {
81
109
  global: {
82
110
  plugins: [vuetify],
@@ -84,19 +112,29 @@ describe('BackToTopBtn', () => {
84
112
  attachTo: document.body,
85
113
  })
86
114
 
115
+ // Wait for component to initialize
116
+ await wrapper.vm.$nextTick()
117
+
87
118
  const buttonElement = wrapper.find('.vd-back-to-top-btn')
88
- expect(buttonElement.isVisible()).toBeFalsy()
119
+ // Button should be hidden initially (v-show="false")
120
+ expect(buttonElement.exists()).toBe(true)
121
+ expect((buttonElement.element as HTMLElement).style.display).toBe('none')
89
122
 
123
+ // Simulate scroll down
90
124
  vi.spyOn(window, 'scrollY', 'get').mockReturnValue(500)
91
125
  window.dispatchEvent(new CustomEvent('scroll'))
92
126
  await wrapper.vm.$nextTick()
93
- expect(buttonElement.isVisible()).toBeTruthy()
94
127
 
95
- vi.spyOn(window, 'scrollY', 'get').mockReturnValue(100)
128
+ // Button should now be visible
129
+ expect((buttonElement.element as HTMLElement).style.display).not.toBe('none')
130
+
131
+ // Scroll back up
132
+ vi.spyOn(window, 'scrollY', 'get').mockReturnValue(50)
96
133
  window.dispatchEvent(new CustomEvent('scroll'))
97
134
  await wrapper.vm.$nextTick()
98
135
 
99
- expect(buttonElement.isVisible()).toBeFalsy()
136
+ // Button should be hidden again
137
+ expect((buttonElement.element as HTMLElement).style.display).toBe('none')
100
138
  })
101
139
 
102
140
  it('scrolls to the top when the button is clicked', async () => {
@@ -20,7 +20,11 @@ exports[`BackToTopBtn > renders correctly 1`] = `
20
20
  v-theme--light
21
21
  vd-back-to-top-btn
22
22
  "
23
- style="bottom: 16px; margin-right: 16px; display: none;"
23
+ style="
24
+ bottom: 16px;
25
+ margin-right: 16px;
26
+ display: none;
27
+ "
24
28
  type="button"
25
29
  >
26
30
  <span class="v-btn__overlay"></span>
@@ -74,7 +78,11 @@ exports[`BackToTopBtn > renders correctly when nudgeBottom and nudgeRight are se
74
78
  v-theme--light
75
79
  vd-back-to-top-btn
76
80
  "
77
- style="bottom: 0px; margin-right: 0px; display: none;"
81
+ style="
82
+ bottom: 0px;
83
+ margin-right: 0px;
84
+ display: none;
85
+ "
78
86
  type="button"
79
87
  >
80
88
  <span class="v-btn__overlay"></span>
@@ -2,6 +2,7 @@
2
2
  import { computed } from 'vue'
3
3
  import { useDisplay } from 'vuetify'
4
4
  import type { ListItem } from './types'
5
+ import { vLetterSpacing } from '@/directives/letterSpacing'
5
6
 
6
7
  const props = defineProps<{
7
8
  listTitle: string | null
@@ -55,7 +56,10 @@
55
56
  v-else
56
57
  class="vd-collapse-list"
57
58
  >
58
- <h4 class="text-subtitle-1 font-weight-bold mb-3">
59
+ <h4
60
+ v-letter-spacing
61
+ class="text-subtitle-1 font-weight-bold mb-3"
62
+ >
59
63
  {{ listTitle }}
60
64
  </h4>
61
65
 
@@ -212,6 +212,10 @@ export const Legende: StoryObj = {
212
212
  </div>
213
213
  </div>
214
214
  </div>
215
+ <div class="mt-4">
216
+ <p>Rapport d’audit manuel : <a href="/audits/Cookies.xlsx" style="color:#0C41BD;">Voir le rapport</a></p>
217
+ <p style="color: grey; font-size: 14px">Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/806" target="_blank" style="color:#0C41BD;">issue #658</a>)</p>
218
+ </div>
215
219
  `,
216
220
  }
217
221
  },
@@ -1,13 +1,15 @@
1
1
  <script setup lang="ts">
2
2
  import type { CustomizableOptions } from '@/composables/useCustomizableOptions'
3
3
  import useCustomizableOptions from '@/composables/useCustomizableOptions'
4
+ import SyIcon from '@/components/Customs/SyIcon/SyIcon.vue'
4
5
  import { mdiClose, mdiArrowULeftBottom } from '@mdi/js'
5
- import { computed, ref } from 'vue'
6
+ import { computed, ref, onMounted, onUnmounted, watch, nextTick } from 'vue'
6
7
  import { useDisplay } from 'vuetify'
7
8
  import type { CookiesItems } from '../CookiesSelection/types'
8
9
  import { config } from './config'
9
10
  import { locales } from './locales'
10
11
  import CookiesSelection from '../CookiesSelection/CookiesSelection.vue'
12
+ import { vLetterSpacing } from '@/directives/letterSpacing'
11
13
 
12
14
  const props = defineProps<CustomizableOptions & {
13
15
  items?: CookiesItems
@@ -23,6 +25,10 @@
23
25
  })
24
26
 
25
27
  const showCookiesSelection = ref(false)
28
+ const closeBtnRef = ref<HTMLElement | null>(null)
29
+ const vsheetRef = ref<HTMLElement | null>(null)
30
+ const bannerRef = ref<HTMLElement | null>(null)
31
+ const focusableElements = ref<HTMLElement[]>([])
26
32
 
27
33
  const display = useDisplay()
28
34
  const btnWidth = computed(() => {
@@ -51,6 +57,107 @@
51
57
  showCookiesSelection.value = false
52
58
  active.value = false
53
59
  }
60
+
61
+ // Fonction pour mettre à jour la liste des éléments focusables dans le banner
62
+ function updateFocusableElements(): void {
63
+ if (!bannerRef.value) return
64
+
65
+ // Sélecteur pour tous les éléments focusables
66
+ const selector = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
67
+
68
+ // Récupérer tous les éléments focusables dans le banner
69
+ const elements = bannerRef.value.querySelectorAll(selector)
70
+
71
+ // Convertir NodeList en Array et filtrer les éléments visibles et non désactivés
72
+ focusableElements.value = Array.from(elements)
73
+ .filter((el) => {
74
+ const element = el as HTMLElement
75
+ return !element.hasAttribute('disabled')
76
+ && element.style.display !== 'none'
77
+ && element.style.visibility !== 'hidden'
78
+ }) as HTMLElement[]
79
+ }
80
+
81
+ // Mettre le focus sur le bouton de fermeture lorsque le composant est monté
82
+ onMounted(() => {
83
+ if (active.value && !showCookiesSelection.value) {
84
+ nextTick(() => {
85
+ // Accéder à l'élément DOM réel via $el
86
+ if (closeBtnRef.value && '$el' in closeBtnRef.value) {
87
+ (closeBtnRef.value.$el as HTMLElement).focus()
88
+ }
89
+
90
+ // Initialiser la liste des éléments focusables
91
+ updateFocusableElements()
92
+ })
93
+ }
94
+
95
+ document.addEventListener('keydown', handleKeydown)
96
+ })
97
+
98
+ // Observer les changements de l'état actif pour mettre le focus sur le bouton de fermeture
99
+ watch(active, (newValue) => {
100
+ if (newValue && !showCookiesSelection.value) {
101
+ nextTick(() => {
102
+ // Accéder à l'élément DOM réel via $el
103
+ if (closeBtnRef.value && '$el' in closeBtnRef.value) {
104
+ (closeBtnRef.value.$el as HTMLElement).focus()
105
+ }
106
+
107
+ // Mettre à jour la liste des éléments focusables
108
+ updateFocusableElements()
109
+ })
110
+ }
111
+ })
112
+
113
+ // Fonction pour gérer les touches clavier (Escape et Tab)
114
+ function handleKeydown(event: KeyboardEvent): void {
115
+ // Gestion de la touche Escape
116
+ if (event.key === 'Escape') {
117
+ if (showCookiesSelection.value) {
118
+ showCookiesSelection.value = false
119
+ }
120
+ else {
121
+ reject()
122
+ }
123
+ }
124
+
125
+ // Gestion de la touche Tab pour créer une boucle de focus
126
+ if (event.key === 'Tab') {
127
+ // Mettre à jour la liste des éléments focusables
128
+ updateFocusableElements()
129
+
130
+ // S'il n'y a pas d'éléments focusables, on ne fait rien
131
+ if (focusableElements.value.length === 0) return
132
+
133
+ // Récupérer le premier et le dernier élément focusable
134
+ const firstFocusableElement = focusableElements.value[0]
135
+ const lastFocusableElement = focusableElements.value[focusableElements.value.length - 1]
136
+
137
+ // Si Shift+Tab est pressé et que le focus est sur le premier élément, rediriger vers le dernier
138
+ if (event.shiftKey && document.activeElement === firstFocusableElement) {
139
+ lastFocusableElement.focus()
140
+ event.preventDefault()
141
+ }
142
+ // Si Tab est pressé et que le focus est sur le dernier élément, rediriger vers le premier
143
+ else if (!event.shiftKey && document.activeElement === lastFocusableElement) {
144
+ firstFocusableElement.focus()
145
+ event.preventDefault()
146
+ }
147
+ }
148
+ }
149
+
150
+ // Observer les changements dans le contenu du banner pour mettre à jour les éléments focusables
151
+ watch(showCookiesSelection, () => {
152
+ nextTick(() => {
153
+ updateFocusableElements()
154
+ })
155
+ })
156
+
157
+ // Nettoyer l'écouteur d'événement lorsque le composant est détruit
158
+ onUnmounted(() => {
159
+ document.removeEventListener('keydown', handleKeydown)
160
+ })
54
161
  </script>
55
162
 
56
163
  <template>
@@ -59,13 +166,22 @@
59
166
  to="body"
60
167
  >
61
168
  <VSheet
169
+ ref="vsheetRef"
170
+ v-letter-spacing
62
171
  v-bind="options.banner"
63
172
  :aria-label="locales.label"
64
173
  class="vd-cookie-banner"
65
174
  >
66
- <div class="vd-cookie-banner__inner">
175
+ <div
176
+ ref="bannerRef"
177
+ class="vd-cookie-banner__inner"
178
+ role="dialog"
179
+ >
67
180
  <div class="d-flex align-start flex-nowrap pa-0 mb-6">
68
- <h2 class="text-h5 font-weight-bold">
181
+ <h2
182
+ v-letter-spacing
183
+ class="text-h5 font-weight-bold"
184
+ >
69
185
  {{ locales.title }}
70
186
  </h2>
71
187
 
@@ -77,19 +193,24 @@
77
193
  :aria-label="locales.backBtn"
78
194
  @click="showCookiesSelection = false"
79
195
  >
80
- <VIcon v-bind="options.icon">
81
- {{ mdiArrowULeftBottom }}
82
- </VIcon>
196
+ <SyIcon
197
+ v-bind="options.icon"
198
+ :icon="mdiArrowULeftBottom"
199
+ label="Bouton de retour en arrière."
200
+ />
83
201
  </VBtn>
84
202
  <VBtn
85
203
  v-else
86
204
  v-bind="options.closeBtn"
205
+ ref="closeBtnRef"
87
206
  :aria-label="locales.closeBtn"
88
207
  @click="reject"
89
208
  >
90
- <VIcon v-bind="options.icon">
91
- {{ mdiClose }}
92
- </VIcon>
209
+ <SyIcon
210
+ v-bind="options.icon"
211
+ :icon="mdiClose"
212
+ label="Bouton de fermeture."
213
+ />
93
214
  </VBtn>
94
215
  </div>
95
216
  <div class="vd-cookie-banner-content">
@@ -158,6 +279,13 @@
158
279
  </template>
159
280
 
160
281
  <style lang="scss" scoped>
282
+ :deep(.text-h5) {
283
+ font-size: 1.5rem;
284
+ font-weight: 400;
285
+ line-height: 1.333;
286
+ line-height: normal;
287
+ }
288
+
161
289
  .vd-cookie-banner {
162
290
  position: fixed;
163
291
  left: 50%;
@@ -224,5 +352,4 @@
224
352
  .height-leave-from {
225
353
  height: auto;
226
354
  }
227
-
228
355
  </style>
@@ -1,3 +1,5 @@
1
+ import { cnamColorsTokens } from '@/designTokens/tokens/cnam/cnamColors'
2
+
1
3
  const commonBtnConfig = {
2
4
  color: 'primary',
3
5
  height: 'auto',
@@ -10,6 +12,7 @@ export const config = {
10
12
  rounded: true,
11
13
  elevation: 2,
12
14
  class: 'pa-8',
15
+ color: cnamColorsTokens.blue.lighten80,
13
16
  },
14
17
  closeBtn: {
15
18
  icon: true,