@cnamts/synapse 0.0.5-alpha → 0.0.7-alpha

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 (229) hide show
  1. package/dist/design-system-v3.d.ts +487 -415
  2. package/dist/design-system-v3.js +2954 -2203
  3. package/dist/design-system-v3.umd.cjs +6 -6
  4. package/dist/style.css +1 -1
  5. package/package.json +17 -17
  6. package/src/assets/settings.scss +3 -0
  7. package/src/assets/tokens.scss +16 -16
  8. package/src/components/BackBtn/AccessibiliteItems.ts +0 -30
  9. package/src/components/BackBtn/BackBtn.mdx +1 -1
  10. package/src/components/BackBtn/BackBtn.stories.ts +12 -9
  11. package/src/components/BackBtn/BackBtn.vue +0 -1
  12. package/src/components/BackToTopBtn/AccessibiliteItems.ts +0 -30
  13. package/src/components/BackToTopBtn/BackToTopBtn.mdx +1 -1
  14. package/src/components/BackToTopBtn/BackToTopBtn.stories.ts +3 -3
  15. package/src/components/CollapsibleList/Accessibilite.stories.ts +4 -0
  16. package/src/components/CollapsibleList/AccessibiliteItems.ts +55 -62
  17. package/src/components/CollapsibleList/CollapsibleList.stories.ts +1 -1
  18. package/src/components/CookieBanner/Accessibilite.stories.ts +219 -0
  19. package/src/components/CookieBanner/AccessibiliteItems.ts +356 -0
  20. package/src/components/CookieBanner/CookieBanner.mdx +219 -0
  21. package/src/components/CookieBanner/CookieBanner.stories.ts +680 -0
  22. package/src/components/CookieBanner/CookieBanner.vue +225 -0
  23. package/src/components/CookieBanner/config.ts +38 -0
  24. package/src/components/CookieBanner/locales.ts +12 -0
  25. package/src/components/CookieBanner/tests/CookieBanner.spec.ts +129 -0
  26. package/src/components/CookieBanner/tests/__snapshots__/CookieBanner.spec.ts.snap +197 -0
  27. package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +123 -0
  28. package/src/components/CookiesSelection/CookiesInformation/locales.ts +21 -0
  29. package/src/components/CookiesSelection/CookiesInformation/tests/CookiesInformation.spec.ts +121 -0
  30. package/src/components/CookiesSelection/CookiesSelection.vue +127 -0
  31. package/src/components/CookiesSelection/CookiesTable/CookiesTable.vue +47 -0
  32. package/src/components/CookiesSelection/CookiesTable/headers.ts +14 -0
  33. package/src/components/CookiesSelection/CookiesTable/tests/CookiesTable.spec.ts +30 -0
  34. package/src/components/CookiesSelection/CookiesTable/tests/__snapshots__/CookiesTable.spec.ts.snap +3 -0
  35. package/src/components/CookiesSelection/locales.ts +10 -0
  36. package/src/components/CookiesSelection/tests/CookiesSelection.spec.ts +184 -0
  37. package/src/components/CookiesSelection/tests/__snapshots__/CookiesSelection.spec.ts.snap +192 -0
  38. package/src/components/CookiesSelection/types.ts +15 -0
  39. package/src/components/CopyBtn/AccessibiliteItems.ts +0 -30
  40. package/src/components/CopyBtn/CopyBtn.mdx +1 -1
  41. package/src/components/CopyBtn/CopyBtn.stories.ts +9 -6
  42. package/src/components/CopyBtn/CopyBtn.vue +0 -1
  43. package/src/components/Customs/SyBtnSelect/Accessibilite.mdx +14 -0
  44. package/src/components/Customs/SyBtnSelect/Accessibilite.stories.ts +193 -0
  45. package/src/components/Customs/SyBtnSelect/AccessibiliteItems.ts +139 -0
  46. package/src/components/Customs/SyBtnSelect/SyBtnSelect.mdx +3 -2
  47. package/src/components/Customs/SyBtnSelect/SyBtnSelect.stories.ts +30 -14
  48. package/src/components/Customs/SyBtnSelect/SyBtnSelect.vue +21 -13
  49. package/src/components/Customs/SyBtnSelect/constants/ExpertiseLevelEnum.ts +4 -0
  50. package/src/components/Customs/SyInputSelect/Accessibilite.mdx +14 -0
  51. package/src/components/Customs/SyInputSelect/Accessibilite.stories.ts +166 -0
  52. package/src/components/Customs/SyInputSelect/AccessibiliteItems.ts +96 -0
  53. package/src/components/Customs/SyInputSelect/SyInputSelect.mdx +7 -3
  54. package/src/components/Customs/SyInputSelect/SyInputSelect.stories.ts +24 -65
  55. package/src/components/Customs/SyInputSelect/SyInputSelect.vue +36 -4
  56. package/src/components/Customs/SyInputSelect/constants/ExpertiseLevelEnum.ts +4 -0
  57. package/src/components/Customs/SySelect/Accessibilite.mdx +14 -0
  58. package/src/components/Customs/SySelect/Accessibilite.stories.ts +217 -0
  59. package/src/components/Customs/SySelect/AccessibiliteItems.ts +173 -0
  60. package/src/components/Customs/SySelect/SySelect.mdx +4 -4
  61. package/src/components/Customs/SySelect/SySelect.stories.ts +4 -60
  62. package/src/components/Customs/SySelect/SySelect.vue +35 -8
  63. package/src/components/Customs/SySelect/constants/ExpertiseLevelEnum.ts +4 -0
  64. package/src/components/Customs/SyTextField/Accessibilite.mdx +14 -0
  65. package/src/components/Customs/SyTextField/Accessibilite.stories.ts +224 -0
  66. package/src/components/Customs/SyTextField/AccessibiliteItems.ts +198 -0
  67. package/src/components/Customs/SyTextField/SyTextField.mdx +1 -1
  68. package/src/components/Customs/SyTextField/SyTextField.stories.ts +118 -7
  69. package/src/components/Customs/SyTextField/SyTextField.vue +27 -7
  70. package/src/components/Customs/SyTextField/constants/ExpertiseLevelEnum.ts +4 -0
  71. package/src/components/Customs/SyTextField/tests/__snapshots__/SyTextField.spec.ts.snap +2 -1
  72. package/src/components/DataList/Accessibilite.mdx +14 -0
  73. package/src/components/DataList/Accessibilite.stories.ts +166 -0
  74. package/src/components/DataList/AccessibiliteItems.ts +47 -0
  75. package/src/components/DataList/DataList.mdx +1 -1
  76. package/src/components/DataList/DataList.stories.ts +10 -10
  77. package/src/components/DataList/constants/ExpertiseLevelEnum.ts +4 -0
  78. package/src/components/DataListGroup/Accessibilite.mdx +14 -0
  79. package/src/components/DataListGroup/Accessibilite.stories.ts +225 -0
  80. package/src/components/DataListGroup/AccessibiliteItems.ts +79 -0
  81. package/src/components/DataListGroup/DataListGroup.mdx +1 -1
  82. package/src/components/DataListGroup/DataListGroup.stories.ts +7 -7
  83. package/src/components/DataListGroup/constants/ExpertiseLevelEnum.ts +4 -0
  84. package/src/components/DialogBox/Accessibilite.mdx +14 -0
  85. package/src/components/DialogBox/Accessibilite.stories.ts +189 -0
  86. package/src/components/DialogBox/AccessibiliteItems.ts +167 -0
  87. package/src/components/DialogBox/constants/ExpertiseLevelEnum.ts +4 -0
  88. package/src/components/DownloadBtn/AccessibiliteItems.ts +1 -31
  89. package/src/components/DownloadBtn/DownloadBtn.mdx +5 -6
  90. package/src/components/DownloadBtn/DownloadBtn.stories.ts +25 -26
  91. package/src/components/ErrorPage/Accessibilite.mdx +14 -0
  92. package/src/components/ErrorPage/Accessibilite.stories.ts +189 -0
  93. package/src/components/ErrorPage/AccessibiliteItems.ts +205 -0
  94. package/src/components/ErrorPage/ErrorPage.vue +1 -1
  95. package/src/components/ErrorPage/constants/ExpertiseLevelEnum.ts +4 -0
  96. package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +4 -4
  97. package/src/components/FooterBar/Accessibilite.mdx +14 -0
  98. package/src/components/FooterBar/Accessibilite.stories.ts +223 -0
  99. package/src/components/FooterBar/AccessibiliteItems.ts +257 -0
  100. package/src/components/FooterBar/FooterBar.mdx +2 -2
  101. package/src/components/FooterBar/FooterBar.stories.ts +14 -14
  102. package/src/components/FooterBar/FooterBar.vue +86 -75
  103. package/src/components/FooterBar/constants/ExpertiseLevelEnum.ts +4 -0
  104. package/src/components/FooterBar/tests/__snapshots__/FooterBar.spec.ts.snap +22 -20
  105. package/src/components/FranceConnectBtn/AccessibiliteItems.ts +0 -30
  106. package/src/components/FranceConnectBtn/FranceConnectBtn.mdx +1 -1
  107. package/src/components/FranceConnectBtn/FranceConnectBtn.stories.ts +5 -4
  108. package/src/components/HeaderBar/Accessibilite.mdx +14 -0
  109. package/src/components/HeaderBar/Accessibilite.stories.ts +223 -0
  110. package/src/components/HeaderBar/AccessibiliteItems.ts +194 -0
  111. package/src/components/HeaderBar/HeaderBar.stories.ts +19 -12
  112. package/src/components/HeaderBar/HeaderBar.vue +9 -12
  113. package/src/components/HeaderBar/HeaderBurgerMenu/Accessibilite.mdx +14 -0
  114. package/src/components/HeaderBar/HeaderBurgerMenu/Accessibilite.stories.ts +223 -0
  115. package/src/components/HeaderBar/HeaderBurgerMenu/AccessibiliteItems.ts +174 -0
  116. package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.vue +1 -0
  117. package/src/components/HeaderBar/HeaderBurgerMenu/constants/ExpertiseLevelEnum.ts +4 -0
  118. package/src/components/HeaderBar/constants/ExpertiseLevelEnum.ts +4 -0
  119. package/src/components/HeaderBar/tests/__snapshots__/HeaderBar.spec.ts.snap +1 -1
  120. package/src/components/HeaderLoading/Accessibilite.mdx +14 -0
  121. package/src/components/HeaderLoading/Accessibilite.stories.ts +167 -0
  122. package/src/components/HeaderLoading/AccessibiliteItems.ts +29 -0
  123. package/src/components/HeaderLoading/HeaderLoading.mdx +1 -1
  124. package/src/components/HeaderLoading/HeaderLoading.stories.ts +1 -1
  125. package/src/components/HeaderLoading/constants/ExpertiseLevelEnum.ts +4 -0
  126. package/src/components/HeaderNavigationBar/HeaderNavigationBar.stories.ts +104 -32
  127. package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +35 -33
  128. package/src/components/HeaderToolbar/Accessibilite.mdx +14 -0
  129. package/src/components/HeaderToolbar/Accessibilite.stories.ts +203 -0
  130. package/src/components/HeaderToolbar/AccessibiliteItems.ts +200 -0
  131. package/src/components/HeaderToolbar/HeaderToolbar.mdx +1 -1
  132. package/src/components/HeaderToolbar/HeaderToolbar.stories.ts +2 -2
  133. package/src/components/HeaderToolbar/HeaderToolbar.vue +24 -1
  134. package/src/components/HeaderToolbar/constants/ExpertiseLevelEnum.ts +4 -0
  135. package/src/components/LangBtn/Accessibilite.stories.ts +3 -1
  136. package/src/components/LangBtn/AccessibiliteItems.ts +0 -31
  137. package/src/components/LangBtn/LangBtn.mdx +1 -1
  138. package/src/components/LangBtn/LangBtn.stories.ts +4 -4
  139. package/src/components/LangBtn/LangBtn.vue +3 -2
  140. package/src/components/Logo/Accessibilite.mdx +14 -0
  141. package/src/components/Logo/Accessibilite.stories.ts +223 -0
  142. package/src/components/Logo/AccessibiliteItems.ts +155 -0
  143. package/src/components/Logo/Logo.mdx +1 -1
  144. package/src/components/Logo/Logo.stories.ts +8 -8
  145. package/src/components/Logo/constants/ExpertiseLevelEnum.ts +4 -0
  146. package/src/components/LogoBrandSection/Accessibilite.mdx +14 -0
  147. package/src/components/LogoBrandSection/Accessibilite.stories.ts +223 -0
  148. package/src/components/LogoBrandSection/AccessibiliteItems.ts +194 -0
  149. package/src/components/LogoBrandSection/constants/ExpertiseLevelEnum.ts +4 -0
  150. package/src/components/MaintenancePage/Accessibilite.mdx +14 -0
  151. package/src/components/MaintenancePage/Accessibilite.stories.ts +189 -0
  152. package/src/components/MaintenancePage/AccessibiliteItems.ts +173 -0
  153. package/src/components/MaintenancePage/constants/ExpertiseLevelEnum.ts +4 -0
  154. package/src/components/NirField/Accessibilite.mdx +14 -0
  155. package/src/components/NirField/Accessibilite.stories.ts +214 -0
  156. package/src/components/NirField/AccessibiliteItems.ts +243 -0
  157. package/src/components/NirField/NirField.mdx +213 -0
  158. package/src/components/NirField/NirField.stories.ts +412 -0
  159. package/src/components/NirField/NirField.vue +453 -0
  160. package/src/components/NirField/config.ts +16 -0
  161. package/src/components/NirField/constants/ExpertiseLevelEnum.ts +4 -0
  162. package/src/components/NirField/locales.ts +12 -0
  163. package/src/components/NirField/nirValidation.ts +42 -0
  164. package/src/components/NirField/tests/NirField.spec.ts +120 -0
  165. package/src/components/NotFoundPage/Accessibilite.mdx +14 -0
  166. package/src/components/NotFoundPage/Accessibilite.stories.ts +190 -0
  167. package/src/components/NotFoundPage/AccessibiliteItems.ts +205 -0
  168. package/src/components/NotFoundPage/constants/ExpertiseLevelEnum.ts +4 -0
  169. package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +4 -4
  170. package/src/components/NotificationBar/AccessibiliteItems.ts +0 -30
  171. package/src/components/NotificationBar/NotificationBar.mdx +1 -1
  172. package/src/components/PageContainer/PageContainer.mdx +1 -1
  173. package/src/components/PageContainer/PageContainer.stories.ts +9 -9
  174. package/src/components/PageContainer/PageContainer.vue +24 -18
  175. package/src/components/PageContainer/tests/PageContainer.spec.ts +2 -2
  176. package/src/components/PageContainer/tests/__snapshots__/PageContainer.spec.ts.snap +2 -2
  177. package/src/components/PhoneField/Accessibilite.mdx +14 -0
  178. package/src/components/PhoneField/Accessibilite.stories.ts +216 -0
  179. package/src/components/PhoneField/AccessibiliteItems.ts +238 -0
  180. package/src/components/PhoneField/PhoneField.mdx +1 -1
  181. package/src/components/PhoneField/PhoneField.stories.ts +2 -2
  182. package/src/components/PhoneField/PhoneField.vue +0 -1
  183. package/src/components/PhoneField/constants/ExpertiseLevelEnum.ts +4 -0
  184. package/src/components/SkipLink/Accessibilite.stories.ts +1 -1
  185. package/src/components/SkipLink/SkipLink.stories.ts +2 -2
  186. package/src/components/SocialMediaLinks/Accessibilite.mdx +14 -0
  187. package/src/components/SocialMediaLinks/Accessibilite.stories.ts +170 -0
  188. package/src/components/SocialMediaLinks/AccessibiliteItems.ts +160 -0
  189. package/src/components/SocialMediaLinks/SocialMediaLinks.mdx +1 -1
  190. package/src/components/SocialMediaLinks/SocialMediaLinks.stories.ts +1 -1
  191. package/src/components/SocialMediaLinks/SocialMediaLinks.vue +7 -1
  192. package/src/components/SocialMediaLinks/constants/ExpertiseLevelEnum.ts +4 -0
  193. package/src/components/SocialMediaLinks/tests/__snapshots__/SocialMediaLinks.spec.ts.snap +2 -2
  194. package/src/components/SubHeader/Accessibilite.mdx +14 -0
  195. package/src/components/SubHeader/Accessibilite.stories.ts +166 -0
  196. package/src/components/SubHeader/AccessibiliteItems.ts +146 -0
  197. package/src/components/SubHeader/SubHeader.mdx +1 -1
  198. package/src/components/SubHeader/SubHeader.stories.ts +17 -14
  199. package/src/components/SubHeader/constants/ExpertiseLevelEnum.ts +4 -0
  200. package/src/components/SyAlert/Accessibilite.mdx +14 -0
  201. package/src/components/{Alert → SyAlert}/Accessibilite.stories.ts +1 -1
  202. package/src/components/{Alert → SyAlert}/AccessibiliteItems.ts +2 -32
  203. package/src/components/{Alert/Alert.mdx → SyAlert/SyAlert.mdx} +9 -9
  204. package/src/components/{Alert/Alert.stories.ts → SyAlert/SyAlert.stories.ts} +22 -22
  205. package/src/components/{Alert/Alert.vue → SyAlert/SyAlert.vue} +7 -0
  206. package/src/components/SyAlert/constants/ExpertiseLevelEnum.ts +4 -0
  207. package/src/components/{Alert/tests/Alert.spec.ts → SyAlert/tests/SyAlert.spec.ts} +5 -5
  208. package/src/components/{Alert/tests/__snapshots__/Alert.spec.ts.snap → SyAlert/tests/__snapshots__/SyAlert.spec.ts.snap} +2 -2
  209. package/src/components/UserMenuBtn/Accessibilite.mdx +14 -0
  210. package/src/components/UserMenuBtn/Accessibilite.stories.ts +189 -0
  211. package/src/components/UserMenuBtn/AccessibiliteItems.ts +155 -0
  212. package/src/components/UserMenuBtn/UserMenuBtn.mdx +17 -17
  213. package/src/components/UserMenuBtn/UserMenuBtn.stories.ts +121 -19
  214. package/src/components/UserMenuBtn/UserMenuBtn.vue +25 -29
  215. package/src/components/UserMenuBtn/config.ts +1 -1
  216. package/src/components/UserMenuBtn/constants/ExpertiseLevelEnum.ts +4 -0
  217. package/src/components/index.ts +11 -4
  218. package/src/composables/rules/tests/useFieldValidation.spec.ts +60 -58
  219. package/src/composables/rules/useFieldValidation.ts +65 -28
  220. package/src/main.ts +1 -0
  221. package/src/stories/GuideDuDev/CommentUtiliserLesRules.mdx +67 -79
  222. package/src/stories/GuideDuDev/components.stories.ts +5 -5
  223. package/src/stories/GuideDuDev/moduleDeNotification.mdx +1 -1
  224. package/src/stories/Guidelines/Vuetify/Vuetify.mdx +11 -0
  225. package/src/stories/Guidelines/Vuetify/Vuetify.stories.ts +138 -0
  226. package/src/stories/Guidelines/Vuetify/VuetifyItems.ts +350 -0
  227. /package/src/components/{Alert → CookieBanner}/Accessibilite.mdx +0 -0
  228. /package/src/components/{Alert → CookieBanner}/constants/ExpertiseLevelEnum.ts +0 -0
  229. /package/src/components/{Alert → SyAlert}/locales.ts +0 -0
@@ -0,0 +1,189 @@
1
+ import { VExpansionPanels, VExpansionPanel, VExpansionPanelTitle, VExpansionPanelText, VDataTable, VIcon } from 'vuetify/components'
2
+ import type { StoryObj } from '@storybook/vue3'
3
+ import { AccessibiliteItemsIndeterminate, AccessibiliteItemsValidated } from './AccessibiliteItems'
4
+ import { mdiCheckboxMarkedCircle, mdiLink, mdiEye } from '@mdi/js'
5
+
6
+ const checkIcon = mdiCheckboxMarkedCircle
7
+ const iconEye = mdiEye
8
+ const linkICon = mdiLink
9
+
10
+ export default {
11
+ title: 'Composants/Boutons/UserMenuBtn/Accessibilité',
12
+ }
13
+
14
+ export const AccessibilitePanel: StoryObj = {
15
+
16
+ render: () => {
17
+ return {
18
+ components: { VExpansionPanels, VExpansionPanel, VExpansionPanelTitle, VExpansionPanelText, VDataTable, VIcon },
19
+
20
+ setup() {
21
+ const icon = checkIcon
22
+
23
+ return { AccessibiliteItemsIndeterminate, AccessibiliteItemsValidated, icon, linkICon, iconEye }
24
+ },
25
+ template: `
26
+ <div class="accessibiliteItems" style="display:flex; max-width: none !important;">
27
+ <v-col cols="6">
28
+ <div style="display:flex; margin-bottom: 10px; justify-content: space-between; align-items: center;">
29
+ <h5>{{ AccessibiliteItemsIndeterminate.length }} critères à prendre en charge par le projet</h5>
30
+ <div style="display: flex; align-items: center;">
31
+ <v-btn variant="tonal" color="red" size="x-small" style="margin: 4px;font-size: 8px;"
32
+ rounded>Tanaguru
33
+ </v-btn>
34
+ </div>
35
+ </div>
36
+
37
+ <v-expansion-panels value="opened" multiple>
38
+ <v-expansion-panel v-for="(item, index) in AccessibiliteItemsIndeterminate" :key="index" style="background-color: rgba(42, 96, 158, 0.1); margin-bottom: 10px;">
39
+ <v-expansion-panel-title>
40
+ <VIcon :icon="iconEye" style="margin-right: 5px; color:#5778b7;"/>
41
+ {{ item.title }}
42
+ </v-expansion-panel-title>
43
+ <v-expansion-panel-text>
44
+ <v-expansion-panels>
45
+ <v-expansion-panel v-for="(i, index) in item.items2" :key="i" style="margin-bottom: 10px;">
46
+ <v-expansion-panel-title
47
+ style="font-weight: bold; font-size: 13px; line-height: 16px;">
48
+ {{ i.subtitle}}
49
+ </v-expansion-panel-title>
50
+ <v-expansion-panel-text>
51
+ <div>
52
+ <p style="font-size: 13px;line-height: 16px;">
53
+ {{ i.precision }}
54
+ </p>
55
+ <div v-for="(value, index) in i.solution"
56
+ style="margin-top:15px; font-size: 13px;line-height: 16px;">
57
+ <p style="font-weight: bold;">Méthodologie du test : <a
58
+ href="{{i.link}}" target="blank">
59
+ <VIcon :icon="linkICon"/>
60
+ </a></p>
61
+ <p>{{ value.info1 }}</p>
62
+ <p>{{ value.info2 }}</p>
63
+ <p>{{ value.info3 }}</p>
64
+ </div>
65
+ <span style="display:flex; justify-content:center; margin-bottom:5px;">______</span>
66
+ </div>
67
+ </v-expansion-panel-text>
68
+ </v-expansion-panel>
69
+ <v-expansion-panel >
70
+ <v-expansion-panel-title
71
+ style="font-weight: bold; font-size: 13px; line-height: 16px;">
72
+ {{ item.subtitle }}
73
+ </v-expansion-panel-title>
74
+ <v-expansion-panel-text>
75
+ <div v-for="(value, i) in item.items" :key="i">
76
+ <p style="font-size: 13px;line-height: 16px;">
77
+ {{ value.precision }}
78
+ </p>
79
+ <div v-for="element in value.solution"
80
+ style="margin-top:15px; font-size: 13px;line-height: 16px;">
81
+ <p style="font-weight: bold;">Méthodologie du test : <a
82
+ href="value.link" target="blank">
83
+ <VIcon :icon="linkICon"/>
84
+ </a></p>
85
+ <p>{{ element.info1 }}</p>
86
+ <p>{{ element.info2 }}</p>
87
+ <p>{{ element.info3 }}</p>
88
+ </div>
89
+ <span style="display:flex; justify-content:center; margin-bottom:5px;">______</span>
90
+ </div>
91
+ </v-expansion-panel-text>
92
+ </v-expansion-panel>
93
+ </v-expansion-panels>
94
+ </v-expansion-panel-text>
95
+ </v-expansion-panel>
96
+ </v-expansion-panels>
97
+ </v-col>
98
+ <v-col cols="6">
99
+ <div style="display:flex; margin-bottom: 10px; justify-content: space-between; align-items: center;">
100
+ <h5>{{ AccessibiliteItemsValidated.length }} critères pris en charge par l'équipe Design System</h5>
101
+ <div style="display: flex; align-items: center;">
102
+ <v-btn variant="tonal" color="red" size="x-small" style="margin: 4px;font-size: 8px;"
103
+ rounded>Tanaguru
104
+ </v-btn>
105
+ </div>
106
+ </div>
107
+ <v-expansion-panels v-if="AccessibiliteItemsValidated.length > 0" value="opened" multiple>
108
+ <v-expansion-panel
109
+ v-for="(item, index) in AccessibiliteItemsValidated"
110
+ :key="index" style="background-color: rgba(53,135,0,0.1); margin-bottom: 10px;">
111
+ <v-expansion-panel-title>
112
+ <VIcon color="green" :icon="icon" style="margin-right: 5px;"/>
113
+ {{ item.title }}
114
+ </v-expansion-panel-title>
115
+ <v-expansion-panel-text>
116
+ <v-expansion-panels>
117
+ <v-expansion-panel>
118
+ <v-expansion-panel-title style="font-weight: bold;font-size: 13px; line-height: 16px;">
119
+ {{ item.subtitle }}
120
+ </v-expansion-panel-title>
121
+ <v-expansion-panel-text>
122
+ <div v-for="(value, i) in item.items" :key="i">
123
+ <p style="font-size: 13px;line-height: 16px;">
124
+ {{ value.precision }}
125
+ </p>
126
+ <div v-for="element in value.solution"
127
+ style="margin-top:15px; font-size: 13px;line-height: 16px;">
128
+ <p style="font-weight: bold;">Méthodologie du test : <a
129
+ href="value.link" target="blank">
130
+ <VIcon :icon="linkICon"/>
131
+ </a></p>
132
+ <p>{{ element.info1 }}</p>
133
+ <p>{{ element.info2 }}</p>
134
+ <p>{{ element.info3 }}</p>
135
+ </div>
136
+ <span style="display:flex; justify-content:center; margin-bottom:5px;">______</span>
137
+ </div>
138
+ </v-expansion-panel-text>
139
+ </v-expansion-panel>
140
+ </v-expansion-panels>
141
+ </v-expansion-panel-text>
142
+ </v-expansion-panel>
143
+ </v-expansion-panels>
144
+ <div v-else style="display: flex;justify-content: center;"><span style="text-align:center;" >Pas de critère d'accessibilité bloquant</span></div>
145
+ </v-col>
146
+ </div>
147
+ `,
148
+ }
149
+ },
150
+ tags: ['!dev'],
151
+ }
152
+
153
+ export const Legende: StoryObj = {
154
+ args: {
155
+ icon: checkIcon,
156
+ },
157
+ render: (args) => {
158
+ return {
159
+ components: { VIcon },
160
+ setup() {
161
+ return { args }
162
+ },
163
+ template: `
164
+ <p style="color: grey;font-size: 11px; margin-bottom: 12px;">Date de conception: 20/11/2024</p>
165
+ <div>
166
+ <p>Le tableau ci-dessous liste nos recommandations suivant les <a target="blank" style="color:#0C41BD;" href="https://www.numerique.gouv.fr/publications/rgaa-accessibilite/#contenu">catégories du RGAA</a>.</p>
167
+ <p style="margin-bottom: 12px;font-weight:bold;">Pour rappel le composant seul ne garantie pas
168
+ l'accessibilité du site.</p>
169
+ <div style="font-size: 14px">
170
+ <p>Nous avons deux façons de relever les problèmes d'accessibilité des composants :</p>
171
+ <div>
172
+ <v-btn variant="tonal" color="grey" size="x-small" style="margin: 2px;font-size: 8px;" rounded>
173
+ Audit
174
+ </v-btn>
175
+ Problèmes relevés par le projet
176
+ </div>
177
+ <div>
178
+ <v-btn variant="tonal" color="red" size="x-small" style="margin: 2px;font-size: 8px;" rounded>
179
+ Tanaguru
180
+ </v-btn>
181
+ Problèmes relevés par Tanaguru
182
+ </div>
183
+ </div>
184
+ </div>
185
+ `,
186
+ }
187
+ },
188
+ tags: ['!dev'],
189
+ }
@@ -0,0 +1,155 @@
1
+ import { ExpertiseLevelEnum } from './constants/ExpertiseLevelEnum'
2
+
3
+ export const AccessibiliteItemsIndeterminate = [
4
+
5
+ {
6
+ title: 'Catégorie 3 : Couleurs',
7
+ subtitle: '3.2 Dans chaque page web, le contraste entre la couleur du texte et la couleur de son arrière-plan est-il suffisamment élevé?',
8
+
9
+ items2: [
10
+ {
11
+ subtitle: '3.1 Dans chaque page web, l’information ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ?',
12
+ precision: '3.1.2 Pour chaque indication de couleur donnée par un texte, l’information ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ?',
13
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#3.1.2',
14
+ solution: [{
15
+ info1: '1. Retrouver dans le document les textes et les textes en image sans effet de graisse d’une taille restituée inférieure à 24px qui pourraient poser des problèmes de contraste ;',
16
+ info2: '2. Pour chacun de ces textes, vérifier que : Soit le rapport de contraste entre le texte et son arrière-plan est de 4.5:1, au moins; Soit un mécanisme permet à l’utilisateur d’afficher le texte avec un rapport de contraste de 4.5:1, au moins.',
17
+ info3: '3. Si c’est le cas pour chaque texte, le test est validé',
18
+ }],
19
+ expertise: ExpertiseLevelEnum.DEV,
20
+
21
+ },
22
+
23
+ ],
24
+ items: [
25
+ {
26
+ precision: '3.2.1 Dans chaque page web, le texte et le texte en image sans effet de graisse d’une taille restituée inférieure à 24px vérifient-ils une de ces conditions? Le rapport de contraste entre le texte et son arrière-plan est de 4.5:1, au moins; Un mécanisme permet à l’utilisateur d’afficher le texte avec un rapport de contraste de 4.5:1, au moins.',
27
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#3.2.1',
28
+ solution: [{
29
+ info1: '1. Retrouver dans le document les textes et les textes en image sans effet de graisse d’une taille restituée inférieure à 24px qui pourraient poser des problèmes de contraste ;',
30
+ info2: '2. Pour chacun de ces textes, vérifier que : Soit le rapport de contraste entre le texte et son arrière-plan est de 4.5:1, au moins; Soit un mécanisme permet à l’utilisateur d’afficher le texte avec un rapport de contraste de 4.5:1, au moins.',
31
+ info3: '3. Si c’est le cas pour chaque texte, le test est validé',
32
+ }],
33
+ expertise: ExpertiseLevelEnum.DEV,
34
+
35
+ },
36
+
37
+ ],
38
+ },
39
+
40
+ {
41
+ title: 'Catégorie 10 : Présentation de l’information',
42
+ subtitle: '10.1 Dans le site web, des feuilles de styles sont-elles utilisées pour contrôler la présentation de l’information ? ?',
43
+ items: [
44
+
45
+ {
46
+ precision: '10.1.1 Dans chaque page web, les balises servant à la présentation de l’information ne doivent pas être présentes dans le code source généré des pages. Cette règle est-elle respectée ? ',
47
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#10.1.1',
48
+ solution: [{
49
+ info1: '1. Vérifier l’absence des éléments de présentation <basefont>, <big>, <blink>, <center>, <font>, <marquee>, <s>, <strike>, <tt> ; ',
50
+ info2: '2. Vérifier l’absence de l’élément <u> uniquement si le DOCTYPE du document ne correspond pas à HTML 5 ; ',
51
+ info3: '3. Si c’est le cas, le test est validé',
52
+ }],
53
+ expertise: ExpertiseLevelEnum.DEV,
54
+
55
+ },
56
+
57
+ ],
58
+ },
59
+
60
+ ]
61
+
62
+ export const AccessibiliteItemsValidated = [
63
+ {
64
+ title: 'Catégorie 1 : Images',
65
+ subtitle: '1.2 Chaque image de décoration est-elle correctement ignorée par les technologies d’assistance ?',
66
+ items: [
67
+
68
+ {
69
+ precision: '1.2.4 Chaque image vectorielle (balise <svg>) de décoration, sans légende, vérifie-t-elle ces conditions ?'
70
+ + ' La balise <svg> possède un attribut WAI-ARIA aria-hidden="true" ;'
71
+ + ' La balise <svg> et ses enfants sont dépourvus d’alternative textuelle ;'
72
+ + ' Les balises <title> et <desc> sont absentes ou vides ;'
73
+ + ' La balise <svg> et ses enfants sont dépourvus d’attribut title.',
74
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#1.2.4',
75
+ solution: [{
76
+ info1: '1. Retrouver dans le document les images décoratives dépourvues de légende structurées au moyen d’un élément <svg> ;',
77
+ info2: '2. Pour chaque image, vérifier que l’élément <svg> ne possède pas d’attributs aria-labelledby ou aria-label et qu’il :'
78
+ + ' Possède un attribut WAI-ARIA aria-hidden="true" ;'
79
+ + ' Et est dépourvu d’alternative textuelle (ainsi que ses éléments enfants) ;'
80
+ + ' Et ne contient pas d’éléments <title> et <desc> à moins que vides de contenu ;'
81
+ + ' Et est dépourvu d’attribut title (ainsi que ses éléments enfants).',
82
+ info3: '3. Si c’est le cas pour chaque image, le test est validé',
83
+ }],
84
+ expertise: ExpertiseLevelEnum.DESIGN,
85
+
86
+ },
87
+
88
+ ],
89
+
90
+ },
91
+ {
92
+ title: 'Catégorie 3 : Couleurs',
93
+ subtitle: '3.2 Dans chaque page web, le contraste entre la couleur du texte et la couleur de son arrière-plan est-il suffisamment élevé?',
94
+
95
+ items: [
96
+ {
97
+ precision: '3.2.2 Dans chaque page web, le texte et le texte en image en gras d’une taille restituée inférieure à 18,5px vérifient-ils une de ces conditions (hors cas particuliers) ? Le rapport de contraste entre le texte et son arrière-plan est de 4.5:1, au moins ; Un mécanisme permet à l’utilisateur d’afficher le texte avec un rapport de contraste de 4.5:1, au moins.',
98
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#3.2.2',
99
+ solution: [{
100
+ info1: '1. Retrouver dans le document les textes et les textes en image en gras d’une taille restituée inférieure à 18,5px qui pourraient poser des problèmes de contraste ; ',
101
+ info2: '2. Pour chacun de ces textes, vérifier que : Soit le rapport de contraste entre le texte et son arrière-plan est de 4.5:1, au moins ; Soit un mécanisme permet à l’utilisateur d’afficher le texte avec un rapport de contraste de 4.5:1, au moins.',
102
+ info3: '3. Si c’est le cas pour chaque texte, le test est validé',
103
+ }],
104
+ expertise: ExpertiseLevelEnum.DESIGN,
105
+
106
+ },
107
+
108
+ ],
109
+ },
110
+ {
111
+ title: 'Catégorie 7 : Scripts',
112
+ subtitle: '7.1 Chaque script est-il, si nécessaire, compatible avec les technologies d’assistance ?',
113
+ items: [
114
+
115
+ {
116
+ precision: ' 7.1.3 Chaque script qui génère ou contrôle un composant d’interface vérifie-t-il ces conditions : '
117
+ + 'Le composant possède un nom pertinent ;'
118
+ + 'Le nom accessible du composant contient au moins l’intitulé visible ;'
119
+ + 'Le composant possède un rôle pertinent.',
120
+
121
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#7.1.3',
122
+ solution: [{
123
+ info1: '1. Pour chacun des composants d’interface ayant validé le test 7.1.1, vérifier que le composant d’interface possède : ',
124
+ info2: '2. Un nom pertinent (intitulé visible) et un rôle pertinent',
125
+ info3: '3. Si le composant d’interface possède un nom accessible, vérifier que ce nom est pertinent et contient au moins l’intitulé visible.',
126
+ }],
127
+ expertise: ExpertiseLevelEnum.DESIGN,
128
+
129
+ },
130
+
131
+ ],
132
+ },
133
+ {
134
+ title: 'Catégorie 8 : Eléments Obligatoires',
135
+ subtitle: '8.9 Dans chaque page web, les balises ne doivent pas être utilisées uniquement à des fins de présentation',
136
+ items: [
137
+
138
+ {
139
+ precision: ' 8.9.1 Dans chaque page web les balises (à l’exception de <div>, <span> et <table>) ne doivent pas être utilisées uniquement à des fins de présentation. Cette règle est-elle respectée',
140
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#8.9.1',
141
+ solution: [{
142
+ info1: '1. Retrouver dans le document l’ensemble des éléments sémantiques utilisés à des fins de présentation ;',
143
+ info2: '2. Pour chacun de ces éléments, vérifier que :'
144
+ + 'L’élément est pourvu d’un attribut role=“presentation” ;'
145
+ + 'L’utilisation de cet élément à des fins de présentation reste justifée',
146
+ info3: '3. Si c’est le cas, le test est validé',
147
+ }],
148
+ expertise: ExpertiseLevelEnum.DESIGN,
149
+
150
+ },
151
+
152
+ ],
153
+ },
154
+
155
+ ]
@@ -5,7 +5,7 @@ import * as UserMenuBtnStories from './UserMenuBtn.stories';
5
5
 
6
6
  # UserMenuBtn
7
7
 
8
- The `UserMenuBtn` component is used to display a user menu button with a dropdown menu.
8
+ Le composant `UserMenuBtn` est utilisé pour afficher un bouton de menu utilisateur avec un menu déroulant.
9
9
 
10
10
  <Canvas of={UserMenuBtnStories.Default}/>
11
11
 
@@ -13,23 +13,23 @@ The `UserMenuBtn` component is used to display a user menu button with a dropdow
13
13
 
14
14
  <Controls of={UserMenuBtnStories.Default}/>
15
15
 
16
- # Usage Example
16
+ # Example d'utilisation
17
17
 
18
18
  <Source dark code={`
19
- <script setup lang="ts">
20
- import UserMenuBtn from './UserMenuBtn.vue';
21
-
22
- const menuItems = [
23
- { text: 'Administration', value: 'Administration' },
24
- { text: 'Profil', value: 'Profil' },
25
- { text: 'Paramètres', value: 'Paramètres' },
26
- ];
27
- </script>
28
-
29
- <template>
30
- <UserMenuBtn
31
- :items="menuItems"
32
- />
33
- </template>
19
+ <script setup lang="ts">
20
+ import { UserMenuBtn } from '@cnamts/synapse';
21
+
22
+ const menuItems = [
23
+ { text: 'Administration', value: 'Administration' },
24
+ { text: 'Profil', value: 'Profil' },
25
+ { text: 'Paramètres', value: 'Paramètres' },
26
+ ];
27
+ </script>
28
+
29
+ <template>
30
+ <UserMenuBtn
31
+ :items="menuItems"
32
+ />
33
+ </template>
34
34
  `}
35
35
  />
@@ -5,15 +5,121 @@ const meta = {
5
5
  title: 'Composants/Boutons/UserMenuBtn',
6
6
  component: UserMenuBtn,
7
7
  parameters: {
8
- layout: 'fullscreen',
9
- controls: { exclude: ['modelValue', 'label', 'icon', 'logoutIcon'] },
8
+ controls: { exclude: ['logout'] },
10
9
  },
11
10
  argTypes: {
12
- hideLogoutBtn: { control: 'boolean' },
13
- hideUserIcon: { control: 'boolean' },
14
- isMobileView: { control: 'boolean' },
15
- fullName: { control: 'text' },
16
- additionalInformation: { control: 'text' },
11
+ 'modelValue': {
12
+ control: false,
13
+ description: 'Élément sélectionné dans le menu',
14
+ table: {
15
+ category: 'props',
16
+ type: { summary: '{ text: string, value: string } | null | undefined' },
17
+ },
18
+ },
19
+ 'hideLogoutBtn': {
20
+ control: 'boolean',
21
+ description: 'Masque le bouton de déconnexion',
22
+ table: {
23
+ type: { summary: 'boolean' },
24
+ },
25
+ },
26
+ 'hideUserIcon': {
27
+ control: 'boolean',
28
+ description: 'Masque l\'icône utilisateur',
29
+ table: {
30
+ type: { summary: 'boolean' },
31
+ },
32
+ },
33
+ 'isMobileView': {
34
+ control: 'boolean',
35
+ description: 'Affiche le menu en version mobile',
36
+ table: {
37
+ type: { summary: 'boolean' },
38
+ },
39
+ },
40
+ 'fullName': {
41
+ control: 'text',
42
+ description: 'Nom complet de l\'utilisateur',
43
+ table: {
44
+ type: { summary: 'string' },
45
+ },
46
+ },
47
+ 'additionalInformation': {
48
+ control: 'text',
49
+ description: 'Informations supplémentaires sur l\'utilisateur (ex: rôle, service, etc.)',
50
+ table: {
51
+ type: { summary: 'string' },
52
+ },
53
+ },
54
+ 'menuItems': {
55
+ control: 'object',
56
+ description: 'Liste des éléments du menu utilisateur',
57
+ table: {
58
+ type: {
59
+ summary: '{ text: string, value: string, link?: string }[]',
60
+ },
61
+ },
62
+ },
63
+ 'vuetifyOptions': {
64
+ control: 'object',
65
+ description: 'Options de personnalisation des éléments Vuetify',
66
+ table: {
67
+ category: 'props',
68
+ type: {
69
+ summary: 'object',
70
+ detail: `{
71
+ menu: Record<string, any>,
72
+ btn: Record<string, any>,
73
+ icon: Record<string, any>,
74
+ logoutListItem: Record<string, any>,
75
+ logoutIcon: Record<string, any>,
76
+ }`,
77
+ },
78
+ defaultValue: {
79
+ summary: 'object',
80
+ detail: `{
81
+ menu: {
82
+ offsetY: true,
83
+ zIndex: 4,
84
+ minWidth: '198px',
85
+ maxWidth: 'auto',
86
+ nudgeRight: 0,
87
+ },
88
+ btn: {
89
+ variant: 'text',
90
+ height: 'auto',
91
+ },
92
+ icon: {
93
+ color: 'avatar',
94
+ },
95
+ logoutListItem: {
96
+ class: 'text-primary',
97
+ minWidth: '198px',
98
+ },
99
+ logoutIcon: {
100
+ color: 'primary',
101
+ class: 'mr-4',
102
+ },
103
+ }`,
104
+ },
105
+ },
106
+ },
107
+ 'onLogout': {
108
+ action: 'logout',
109
+ description: 'Événement déclenché lors de la déconnexion de l\'utilisateur',
110
+ table: {
111
+ category: 'events',
112
+ type: { summary: 'void' },
113
+ },
114
+ },
115
+ 'onUpdate:modelValue': {
116
+ action: 'update:modelValue',
117
+ description: 'Événement déclenché lors de la selection d\'un élément du menu',
118
+ table: {
119
+ category: 'events',
120
+ type: { summary: '{ text: string, value: string }' },
121
+ },
122
+ },
17
123
  },
18
124
  } satisfies Meta<typeof UserMenuBtn>
19
125
 
@@ -37,7 +143,7 @@ export const Default: Story = {
37
143
  name: 'Script',
38
144
  code: `<script setup lang="ts">
39
145
  import { ref } from 'vue'
40
- import UserMenuBtn from '@cnamts/synapse'
146
+ import { UserMenuBtn } from '@cnamts/synapse'
41
147
 
42
148
  const selected = ref(null)
43
149
  const menuItems = ref([
@@ -91,7 +197,7 @@ export const HideLogoutButton: Story = {
91
197
  name: 'Script',
92
198
  code: `<script setup lang="ts">
93
199
  import { ref } from 'vue'
94
- import UserMenuBtn from '@cnamts/synapse'
200
+ import { UserMenuBtn } from '@cnamts/synapse'
95
201
 
96
202
  const selected = ref(null)
97
203
  const menuItems = ref([
@@ -140,7 +246,7 @@ export const HideUserIcon: Story = {
140
246
  name: 'Script',
141
247
  code: `<script setup lang="ts">
142
248
  import { ref } from 'vue'
143
- import UserMenuBtn from '@cnamts/synapse'
249
+ import { UserMenuBtn } from '@cnamts/synapse'
144
250
 
145
251
  const selected = ref(null)
146
252
  const menuItems = ref([
@@ -189,7 +295,7 @@ export const MobileVersion: Story = {
189
295
  name: 'Script',
190
296
  code: `<script setup lang="ts">
191
297
  import { ref } from 'vue'
192
- import UserMenuBtn from '@cnamts/synapse'
298
+ import { UserMenuBtn } from '@cnamts/synapse'
193
299
 
194
300
  const selected = ref(null)
195
301
  const menuItems = ref([
@@ -238,7 +344,7 @@ export const CustomFullName: Story = {
238
344
  name: 'Script',
239
345
  code: `<script setup lang="ts">
240
346
  import { ref } from 'vue'
241
- import UserMenuBtn from '@cnamts/synapse'
347
+ import { UserMenuBtn } from '@cnamts/synapse'
242
348
 
243
349
  const selected = ref(null)
244
350
  const menuItems = ref([
@@ -287,7 +393,7 @@ export const CustomAdditionalInformation: Story = {
287
393
  name: 'Script',
288
394
  code: `<script setup lang="ts">
289
395
  import { ref } from 'vue'
290
- import UserMenuBtn from '@cnamts/synapse'
396
+ import { UserMenuBtn } from '@cnamts/synapse'
291
397
 
292
398
  const selected = ref(null)
293
399
  const menuItems = ref([
@@ -336,7 +442,7 @@ export const WithVuetifyOptions: Story = {
336
442
  name: 'Script',
337
443
  code: `<script setup lang="ts">
338
444
  import { ref } from 'vue'
339
- import UserMenuBtn from '@cnamts/synapse'
445
+ import { UserMenuBtn } from '@cnamts/synapse'
340
446
 
341
447
  const selected = ref(null)
342
448
  const menuItems = ref([
@@ -345,10 +451,6 @@ export const WithVuetifyOptions: Story = {
345
451
  { text: 'Paramètres', value: 'Paramètres' },
346
452
  ])
347
453
 
348
- const handleLogout = () => {
349
- alert('User logged out')
350
- }
351
-
352
454
  const vuetifyOptions = ref({
353
455
  menu: { minWidth: '250px' },
354
456
  btn: { variant: 'outlined' },
@@ -401,7 +503,7 @@ export const LogoutEvent: Story = {
401
503
  name: 'Script',
402
504
  code: `<script setup lang="ts">
403
505
  import { ref } from 'vue'
404
- import UserMenuBtn from '@cnamts/synapse'
506
+ import { UserMenuBtn } from '@cnamts/synapse'
405
507
 
406
508
  const selected = ref(null)
407
509
  const menuItems = ref([