@cnamts/synapse 0.0.12-alpha → 0.0.13-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 (250) hide show
  1. package/dist/design-system-v3.js +4913 -4021
  2. package/dist/design-system-v3.umd.cjs +1 -1
  3. package/dist/src/components/Amelipro/types/types.d.ts +30 -57
  4. package/dist/src/components/Customs/SyTextField/SyTextField.d.ts +2 -0
  5. package/dist/src/components/DatePicker/DatePicker.d.ts +36 -44
  6. package/dist/src/components/DatePicker/DateTextInput.d.ts +33 -36
  7. package/dist/src/components/FilterInline/AccessibiliteItems.d.ts +30 -0
  8. package/dist/src/components/FilterInline/constants/ExpertiseLevelEnum.d.ts +4 -0
  9. package/dist/src/components/FilterSideBar/AccessibiliteItems.d.ts +29 -0
  10. package/dist/src/components/FilterSideBar/constants/ExpertiseLevelEnum.d.ts +4 -0
  11. package/dist/src/components/NirField/NirField.d.ts +14 -2
  12. package/dist/src/components/NotificationBar/NotificationBar.d.ts +5 -5
  13. package/dist/src/components/PasswordField/PasswordField.d.ts +2 -0
  14. package/dist/src/components/PeriodField/PeriodField.d.ts +159 -157
  15. package/dist/src/components/PhoneField/PhoneField.d.ts +22 -1
  16. package/dist/src/components/UploadWorkflow/AccessibiliteItems.d.ts +29 -0
  17. package/dist/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.d.ts +4 -0
  18. package/dist/src/components/Usages/Usages.d.ts +10 -0
  19. package/dist/src/components/index.d.ts +3 -0
  20. package/dist/src/composables/date/tests/useDatePickerAccessibility.spec.d.ts +1 -0
  21. package/dist/src/composables/date/useDateFormat.d.ts +26 -0
  22. package/dist/src/composables/date/useDateInitialization.d.ts +18 -0
  23. package/dist/src/composables/date/useDatePickerAccessibility.d.ts +8 -0
  24. package/dist/src/composables/useFilterable/useFilterable.d.ts +1 -1
  25. package/dist/src/composables/validation/useValidation.d.ts +1 -0
  26. package/dist/src/main.d.ts +1 -0
  27. package/dist/src/utils/formatDate/index.d.ts +3 -0
  28. package/dist/src/utils/formatDate/tests/formatDate.spec.d.ts +1 -0
  29. package/dist/src/utils/functions/validation/isDateAfter/index.d.ts +2 -0
  30. package/dist/src/utils/functions/validation/isDateAfter/tests/isDateAfter.spec.d.ts +1 -0
  31. package/dist/src/utils/functions/validation/isDateBefore/index.d.ts +2 -0
  32. package/dist/src/utils/functions/validation/isDateBefore/tests/isDateBefore.spec.d.ts +1 -0
  33. package/dist/src/utils/functions/validation/isDateInRange/index.d.ts +3 -0
  34. package/dist/src/utils/functions/validation/isDateInRange/tests/isDateInRange.spec.d.ts +1 -0
  35. package/dist/src/utils/functions/validation/isDateValid/index.d.ts +9 -0
  36. package/dist/src/utils/functions/validation/isDateValid/tests/isDateValid.spec.d.ts +1 -0
  37. package/dist/src/utils/functions/validation/isEmailValid/tests/isEmailValid.spec.d.ts +1 -0
  38. package/dist/src/utils/functions/validation/isWeekend/index.d.ts +3 -0
  39. package/dist/src/utils/functions/validation/isWeekend/tests/isWeekend.spec.d.ts +1 -0
  40. package/dist/src/utils/parseDate/index.d.ts +3 -0
  41. package/dist/src/utils/parseDate/tests/parseDate.spec.d.ts +1 -0
  42. package/dist/src/utils/rules/doMatchPattern/index.d.ts +3 -0
  43. package/dist/src/utils/rules/doMatchPattern/tests/matchPattern.spec.d.ts +1 -0
  44. package/dist/src/utils/rules/index.d.ts +11 -0
  45. package/dist/src/utils/rules/isDateValid/index.d.ts +4 -0
  46. package/dist/src/utils/rules/isDateValid/tests/isDateValid.spec.d.ts +1 -0
  47. package/dist/src/utils/rules/isExactLength/index.d.ts +3 -0
  48. package/dist/src/utils/rules/isExactLength/locales.d.ts +2 -0
  49. package/dist/src/utils/rules/isExactLength/tests/exactLength.spec.d.ts +1 -0
  50. package/dist/src/utils/rules/isMaxLength/index.d.ts +3 -0
  51. package/dist/src/utils/rules/isMaxLength/locales.d.ts +2 -0
  52. package/dist/src/utils/rules/isMaxLength/tests/isMaxLength.spec.d.ts +1 -0
  53. package/dist/src/utils/rules/isMinLength/index.d.ts +3 -0
  54. package/dist/src/utils/rules/isMinLength/locales.d.ts +2 -0
  55. package/dist/src/utils/rules/isMinLength/tests/isMinLength.spec.d.ts +1 -0
  56. package/dist/src/utils/rules/isNotAfterDate/index.d.ts +3 -0
  57. package/dist/src/utils/rules/isNotAfterDate/tests/isNotAfterDate.spec.d.ts +1 -0
  58. package/dist/src/utils/rules/isNotAfterToday/index.d.ts +4 -0
  59. package/dist/src/utils/rules/isNotAfterToday/locales.d.ts +2 -0
  60. package/dist/src/utils/rules/isNotAfterToday/tests/isNotAfterToday.spec.d.ts +1 -0
  61. package/dist/src/utils/rules/isNotBeforeDate/index.d.ts +3 -0
  62. package/dist/src/utils/rules/isNotBeforeDate/locales.d.ts +2 -0
  63. package/dist/src/utils/rules/isNotBeforeDate/tests/IsNotBeforeDate.spec.d.ts +1 -0
  64. package/dist/src/utils/rules/isNotBeforeToday/index.d.ts +4 -0
  65. package/dist/src/utils/rules/isNotBeforeToday/locales.d.ts +2 -0
  66. package/dist/src/utils/rules/isNotBeforeToday/tests/notBeforeToday.spec.d.ts +1 -0
  67. package/dist/src/utils/rules/isRequired/index.d.ts +4 -0
  68. package/dist/src/utils/rules/isRequired/locales.d.ts +2 -0
  69. package/dist/src/utils/rules/isRequired/tests/isRequred.spec.d.ts +1 -0
  70. package/dist/src/utils/rules/isValidEmail/index.d.ts +4 -0
  71. package/dist/src/utils/rules/isValidEmail/locales.d.ts +2 -0
  72. package/dist/src/utils/rules/isValidEmail/tests/isValidEmail.spec.d.ts +1 -0
  73. package/dist/style.css +1 -1
  74. package/package.json +3 -1
  75. package/src/assets/_radius.scss +12 -6
  76. package/src/assets/settings.scss +8 -0
  77. package/src/components/Amelipro/types/types.ts +40 -0
  78. package/src/components/ChipList/ChipList.stories.ts +26 -27
  79. package/src/components/ChipList/ChipList.vue +5 -1
  80. package/src/components/ChipList/config.ts +1 -0
  81. package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +2 -2
  82. package/src/components/Customs/SyBtnSelect/SyBtnSelect.mdx +1 -1
  83. package/src/components/Customs/SyInputSelect/SyInputSelect.mdx +1 -1
  84. package/src/components/Customs/SySelect/SySelect.mdx +1 -1
  85. package/src/components/Customs/SySelect/SySelect.vue +19 -4
  86. package/src/components/Customs/SyTextField/SyTextField.mdx +2 -2
  87. package/src/components/Customs/SyTextField/SyTextField.stories.ts +239 -0
  88. package/src/components/Customs/SyTextField/SyTextField.vue +3 -0
  89. package/src/components/DatePicker/DatePicker.stories.ts +177 -5
  90. package/src/components/DatePicker/DatePicker.vue +148 -347
  91. package/src/components/DatePicker/DateTextInput.vue +91 -251
  92. package/src/components/DatePicker/tests/DatePicker.spec.ts +118 -48
  93. package/src/components/DatePicker/tests/DateTextInput.spec.ts +202 -6
  94. package/src/components/FileList/Accessibilite.stories.ts +1 -1
  95. package/src/components/FileList/AccessibiliteItems.ts +22 -0
  96. package/src/components/FileUpload/FileUpload.stories.ts +9 -7
  97. package/src/components/FilterInline/Accessibilite.mdx +14 -0
  98. package/src/components/FilterInline/Accessibilite.stories.ts +216 -0
  99. package/src/components/FilterInline/AccessibiliteItems.ts +132 -0
  100. package/src/components/FilterInline/constants/ExpertiseLevelEnum.ts +4 -0
  101. package/src/components/FilterSideBar/Accessibilite.mdx +14 -0
  102. package/src/components/FilterSideBar/Accessibilite.stories.ts +216 -0
  103. package/src/components/FilterSideBar/AccessibiliteItems.ts +153 -0
  104. package/src/components/FilterSideBar/constants/ExpertiseLevelEnum.ts +4 -0
  105. package/src/components/NirField/NirField.stories.ts +165 -0
  106. package/src/components/NirField/NirField.vue +6 -2
  107. package/src/components/NirField/tests/config.spec.ts +65 -0
  108. package/src/components/NotificationBar/NotificationBar.mdx +2 -2
  109. package/src/components/NotificationBar/NotificationBar.stories.ts +59 -11
  110. package/src/components/NotificationBar/NotificationBar.vue +42 -114
  111. package/src/components/NotificationBar/tests/NotificationBar.spec.ts +28 -33
  112. package/src/components/NotificationBar/tests/__snapshots__/NotificationBar.spec.ts.snap +1 -1
  113. package/src/components/PaginatedTable/PaginatedTable.vue +6 -10
  114. package/src/components/PaginatedTable/tests/__snapshots__/PaginatedTable.spec.ts.snap +4 -4
  115. package/src/components/PasswordField/PasswordField.stories.ts +191 -4
  116. package/src/components/PasswordField/PasswordField.vue +3 -0
  117. package/src/components/PeriodField/PeriodField.stories.ts +214 -118
  118. package/src/components/PeriodField/PeriodField.vue +195 -148
  119. package/src/components/PeriodField/tests/PeriodField.spec.ts +146 -0
  120. package/src/components/PhoneField/PhoneField.stories.ts +101 -0
  121. package/src/components/PhoneField/PhoneField.vue +73 -17
  122. package/src/components/PhoneField/tests/PhoneField.spec.ts +40 -0
  123. package/src/components/RatingPicker/RatingPicker.stories.ts +7 -7
  124. package/src/components/SearchListField/SearchListField.stories.ts +1 -1
  125. package/src/components/UploadWorkflow/Accessibilite.mdx +14 -0
  126. package/src/components/UploadWorkflow/Accessibilite.stories.ts +216 -0
  127. package/src/components/UploadWorkflow/AccessibiliteItems.ts +192 -0
  128. package/src/components/UploadWorkflow/UploadWorkflow.vue +2 -2
  129. package/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.ts +4 -0
  130. package/src/components/Usages/tests/Usages.spec.ts +183 -0
  131. package/src/components/index.ts +3 -0
  132. package/src/composables/date/tests/useDateFormat.spec.ts +67 -0
  133. package/src/composables/date/tests/useDateInitialization.spec.ts +89 -0
  134. package/src/composables/date/tests/useDatePickerAccessibility.spec.ts +102 -0
  135. package/src/composables/date/useDateFormat.ts +94 -0
  136. package/src/composables/date/useDateInitialization.ts +92 -0
  137. package/src/composables/date/useDatePickerAccessibility.ts +78 -0
  138. package/src/composables/rules/tests/useFieldValidation.spec.ts +385 -4
  139. package/src/composables/useFilterable/useFilterable.ts +5 -4
  140. package/src/composables/validation/useValidation.ts +15 -0
  141. package/src/main.ts +1 -0
  142. package/src/stories/Accessibilite/Aculturation/AuditDesignSystem.mdx +28 -0
  143. package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +2 -2
  144. package/src/stories/Accessibilite/Audit/RGAA.mdx +6 -6
  145. package/src/stories/Accessibilite/Introduction.mdx +2 -1
  146. package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +1 -1
  147. package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +1 -1
  148. package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +8 -11
  149. package/src/stories/Accessibilite/KitDePreAudit/Outils/LecteursDEcran.mdx +77 -0
  150. package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru.mdx +9 -3
  151. package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +2 -2
  152. package/src/stories/Demarrer/Introduction.stories.ts +3 -3
  153. package/src/stories/Demarrer/Releases.mdx +8 -0
  154. package/src/stories/Demarrer/Releases.stories.ts +66 -0
  155. package/src/stories/DesignTokens/Conteneurs.stories.ts +3 -3
  156. package/src/stories/GuideDuDev/LesBreackingChanges.mdx +36 -0
  157. package/src/stories/GuideDuDev/UtiliserLesRules.mdx +2 -2
  158. package/src/utils/formatDate/index.ts +6 -0
  159. package/src/utils/formatDate/tests/formatDate.spec.ts +18 -0
  160. package/src/utils/functions/validation/isDateAfter/index.ts +9 -0
  161. package/src/utils/functions/validation/isDateAfter/tests/isDateAfter.spec.ts +18 -0
  162. package/src/utils/functions/validation/isDateBefore/index.ts +9 -0
  163. package/src/utils/functions/validation/isDateBefore/tests/isDateBefore.spec.ts +23 -0
  164. package/src/utils/functions/validation/isDateInRange/index.ts +22 -0
  165. package/src/utils/functions/validation/isDateInRange/tests/isDateInRange.spec.ts +28 -0
  166. package/src/utils/functions/validation/isDateValid/index.ts +67 -0
  167. package/src/utils/functions/validation/isDateValid/tests/isDateValid.spec.ts +46 -0
  168. package/src/utils/functions/validation/isEmailValid/index.ts +9 -0
  169. package/src/utils/functions/validation/isWeekend/index.ts +10 -0
  170. package/src/utils/functions/validation/isWeekend/tests/isWeekend.spec.ts +16 -0
  171. package/src/utils/parseDate/index.ts +29 -0
  172. package/src/utils/parseDate/tests/parseDate.spec.ts +52 -0
  173. package/src/utils/rules/Rules.mdx +16 -0
  174. package/src/utils/rules/doMatchPattern/DoMachPattern.mdx +66 -0
  175. package/src/utils/rules/doMatchPattern/DoMatchPattern.stories.ts +106 -0
  176. package/src/utils/rules/doMatchPattern/index.ts +28 -0
  177. package/src/utils/rules/doMatchPattern/locales.ts +5 -0
  178. package/src/utils/rules/doMatchPattern/tests/matchPattern.spec.ts +38 -0
  179. package/src/utils/rules/index.ts +11 -0
  180. package/src/utils/rules/isDateValid/IsDateValid.mdx +87 -0
  181. package/src/utils/rules/isDateValid/IsDateValid.stories.ts +113 -0
  182. package/src/utils/rules/isDateValid/index.ts +32 -0
  183. package/src/utils/rules/isDateValid/locales.ts +10 -0
  184. package/src/utils/rules/isDateValid/tests/isDateValid.spec.ts +27 -0
  185. package/src/utils/rules/isExactLength/IsExactLenght.mdx +68 -0
  186. package/src/utils/rules/isExactLength/IsExactLength.stories.ts +151 -0
  187. package/src/utils/rules/{exactLength → isExactLength}/index.ts +2 -4
  188. package/src/utils/rules/isExactLength/tests/exactLength.spec.ts +48 -0
  189. package/src/utils/rules/isMaxLength/IsMaxLength.mdx +68 -0
  190. package/src/utils/rules/isMaxLength/IsMaxLength.stories.ts +152 -0
  191. package/src/utils/rules/isMaxLength/index.ts +30 -0
  192. package/src/utils/rules/isMaxLength/locales.ts +6 -0
  193. package/src/utils/rules/isMaxLength/tests/isMaxLength.spec.ts +42 -0
  194. package/src/utils/rules/isMinLength/IsMinLength.mdx +68 -0
  195. package/src/utils/rules/isMinLength/IsMinLength.stories.ts +152 -0
  196. package/src/utils/rules/isMinLength/index.ts +30 -0
  197. package/src/utils/rules/isMinLength/locales.ts +6 -0
  198. package/src/utils/rules/isMinLength/tests/isMinLength.spec.ts +42 -0
  199. package/src/utils/rules/isNotAfterDate/IsNotAfterDate.mdx +68 -0
  200. package/src/utils/rules/isNotAfterDate/IsNotAfterDate.stories.ts +109 -0
  201. package/src/utils/rules/isNotAfterDate/index.ts +25 -0
  202. package/src/utils/rules/isNotAfterDate/locales.ts +6 -0
  203. package/src/utils/rules/isNotAfterDate/tests/isNotAfterDate.spec.ts +25 -0
  204. package/src/utils/rules/isNotAfterToday/IsNotAfterToday.mdx +83 -0
  205. package/src/utils/rules/isNotAfterToday/IsNotAfterToday.stories.ts +110 -0
  206. package/src/utils/rules/isNotAfterToday/index.ts +28 -0
  207. package/src/utils/rules/isNotAfterToday/locales.ts +5 -0
  208. package/src/utils/rules/isNotAfterToday/tests/isNotAfterToday.spec.ts +30 -0
  209. package/src/utils/rules/isNotBeforeDate/IsNotBeforeDate.mdx +68 -0
  210. package/src/utils/rules/isNotBeforeDate/IsNotBeforeDate.stories.ts +114 -0
  211. package/src/utils/rules/isNotBeforeDate/index.ts +25 -0
  212. package/src/utils/rules/isNotBeforeDate/locales.ts +6 -0
  213. package/src/utils/rules/isNotBeforeDate/tests/IsNotBeforeDate.spec.ts +25 -0
  214. package/src/utils/rules/isNotBeforeToday/IsNotBeforeToday.mdx +83 -0
  215. package/src/utils/rules/isNotBeforeToday/IsNotBeforeToday.stories.ts +110 -0
  216. package/src/utils/rules/isNotBeforeToday/index.ts +28 -0
  217. package/src/utils/rules/isNotBeforeToday/locales.ts +5 -0
  218. package/src/utils/rules/isNotBeforeToday/tests/notBeforeToday.spec.ts +36 -0
  219. package/src/utils/rules/isRequired/IsRequired.mdx +81 -0
  220. package/src/utils/rules/isRequired/IsRequired.stories.ts +101 -0
  221. package/src/utils/rules/{required → isRequired}/index.ts +3 -3
  222. package/src/utils/rules/{required/tests/index.spec.ts → isRequired/tests/isRequred.spec.ts} +9 -9
  223. package/src/utils/rules/isValidEmail/IsValidEmail.mdx +81 -0
  224. package/src/utils/rules/isValidEmail/IsValidEmail.stories.ts +101 -0
  225. package/src/utils/rules/{email → isValidEmail}/index.ts +3 -5
  226. package/src/utils/rules/{email/tests/email.spec.ts → isValidEmail/tests/isValidEmail.spec.ts} +5 -5
  227. package/dist/src/components/Amelipro/types/languages.d.ts +0 -6
  228. package/dist/src/utils/rules/email/index.d.ts +0 -4
  229. package/dist/src/utils/rules/exactLength/index.d.ts +0 -4
  230. package/dist/src/utils/rules/required/index.d.ts +0 -4
  231. package/dist/src/utils/rules/required/ruleMessageHelper.d.ts +0 -3
  232. package/src/components/Amelipro/types/languages.d.ts +0 -6
  233. package/src/components/Amelipro/types/types.d.ts +0 -65
  234. package/src/components/Customs/SyTextField/tests/__snapshots__/SyTextField.spec.ts.snap +0 -58
  235. package/src/utils/functions/isEmailValid/index.ts +0 -8
  236. package/src/utils/rules/required/ruleMessageHelper.ts +0 -14
  237. package/src/utils/rules/required/tests/rulesMessageHelper.spec.ts +0 -22
  238. /package/dist/src/{utils/functions/isEmailValid/tests/isEmailValid.spec.d.ts → components/NirField/tests/config.spec.d.ts} +0 -0
  239. /package/dist/src/{utils/rules/email/tests/email.spec.d.ts → components/Usages/tests/Usages.spec.d.ts} +0 -0
  240. /package/dist/src/{utils/rules/required/tests/index.spec.d.ts → composables/date/tests/useDateFormat.spec.d.ts} +0 -0
  241. /package/dist/src/{utils/rules/required/tests/rulesMessageHelper.spec.d.ts → composables/date/tests/useDateInitialization.spec.d.ts} +0 -0
  242. /package/dist/src/utils/functions/{isEmailValid → validation/isEmailValid}/index.d.ts +0 -0
  243. /package/dist/src/utils/rules/{exactLength → doMatchPattern}/locales.d.ts +0 -0
  244. /package/dist/src/utils/rules/{email → isDateValid}/locales.d.ts +0 -0
  245. /package/dist/src/utils/rules/{required → isNotAfterDate}/locales.d.ts +0 -0
  246. /package/src/components/NirField/{tests → examples}//342/200/257dataset/342/200/257.md" +0 -0
  247. /package/src/utils/functions/{isEmailValid → validation/isEmailValid}/tests/isEmailValid.spec.ts +0 -0
  248. /package/src/utils/rules/{exactLength → isExactLength}/locales.ts +0 -0
  249. /package/src/utils/rules/{required → isRequired}/locales.ts +0 -0
  250. /package/src/utils/rules/{email → isValidEmail}/locales.ts +0 -0
@@ -0,0 +1,153 @@
1
+ import { ExpertiseLevelEnum } from './constants/ExpertiseLevelEnum'
2
+
3
+ export const AccessibiliteItemsIndeterminate = [
4
+ {
5
+ title: 'Catégorie 3 : Couleurs',
6
+ 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é?',
7
+ items: [
8
+ {
9
+ 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.',
10
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#3.2.1',
11
+ solution: [{
12
+ 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 ;',
13
+ 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.',
14
+ info3: '3. Si c’est le cas pour chaque texte, le test est validé',
15
+ }],
16
+ expertise: ExpertiseLevelEnum.DEV,
17
+
18
+ },
19
+ {
20
+ precision: ' 3.2.4 Dans chaque page web, le texte et le texte en image en gras d’une taille restituée supérieure ou égale à 18,5px vérifient-ils une de ces conditions (hors cas particuliers) ? '
21
+ + 'Le rapport de contraste entre le texte et son arrière-plan est de 3:1, au moins ; '
22
+ + 'Un mécanisme permet à l’utilisateur d’afficher le texte avec un rapport de contraste de 3:1, au moins. ',
23
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#3.2.4',
24
+ solution: [{
25
+ info1: '1. Retrouver dans le document les textes et les textes en image en gras d’une taille restituée supérieure ou égale à 18,5px qui pourraient poser des problèmes de contraste ; ',
26
+ 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 3:1, au moins ; Soit un mécanisme permet à l’utilisateur d’afficher le texte avec un rapport de contraste de 3:1, au moins. ',
27
+ info3: '3. Si c’est le cas pour chaque texte, le test est validé',
28
+ }],
29
+ expertise: ExpertiseLevelEnum.DEV,
30
+
31
+ },
32
+
33
+ ],
34
+ },
35
+
36
+ {
37
+ title: 'Catégorie 10 : Présentation de l’information',
38
+ subtitle: '10.1 Dans le site web, des feuilles de styles sont-elles utilisées pour contrôler la présentation de l’information ? ?',
39
+ items: [
40
+
41
+ {
42
+ 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 ? ',
43
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#10.1.1',
44
+ solution: [{
45
+ info1: '1. Vérifier l’absence des éléments de présentation <basefont>, <big>, <blink>, <center>, <font>, <marquee>, <s>, <strike>, <tt> ; ',
46
+ info2: '2. Vérifier l’absence de l’élément <u> uniquement si le DOCTYPE du document ne correspond pas à HTML 5 ; ',
47
+ info3: '3. Si c’est le cas, le test est validé',
48
+ }],
49
+ expertise: ExpertiseLevelEnum.DEV,
50
+
51
+ },
52
+
53
+ ],
54
+ },
55
+
56
+ ]
57
+
58
+ export const AccessibiliteItemsValidated = [
59
+ {
60
+ title: 'Catégorie 1 : Images',
61
+ subtitle: '1.2 Chaque image de décoration est-elle correctement ignorée par les technologies d’assistance ?',
62
+
63
+ items: [
64
+ {
65
+ precision: '1.2.4 Chaque image vectorielle (balise <svg>) de décoration, sans légende, vérifie-t-elle ces conditions ? '
66
+ + ' La balise <svg> possède un attribut WAI-ARIA aria-hidden="true" ;'
67
+ + ' La balise <svg> et ses enfants sont dépourvus d’alternative textuelle ;'
68
+ + ' Les balises <title> et <desc> sont absentes ou vides ;'
69
+ + ' La balise <svg> et ses enfants sont dépourvus d’attribut title.',
70
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#1.2.4',
71
+ solution: [{
72
+ info1: '1. Pour chaque image, vérifier que l’élément <svg> ne possède pas d’attributs aria-labelledby ou aria-label et qu’il :'
73
+ + ' Possède un attribut WAI-ARIA aria-hidden="true" ;'
74
+ + ' Et est dépourvu d’alternative textuelle (ainsi que ses éléments enfants) ;'
75
+ + ' Et ne contient pas d’éléments <title> et <desc> à moins que vides de contenu ;'
76
+ + ' Et est dépourvu d’attribut title (ainsi que ses éléments enfants).'
77
+ + ' Le nom du composant est cohérent avec l’état de la fonctionnalité ou des contenus contrôlés (par exemple pour une fonctionnalité permettant d’afficher ou de masquer une zone de contenu).',
78
+ info2: '2. Sinon, vérifier la présence d’un composant d’interface accessible permettant d’accéder aux mêmes fonctionnalités',
79
+ info3: '3. Si c’est le cas pour chaque image, le test est validé.',
80
+ }],
81
+ expertise: ExpertiseLevelEnum.DESIGN,
82
+
83
+ },
84
+ ],
85
+
86
+ },
87
+ {
88
+ title: 'Catégorie 3 : Couleurs',
89
+ 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é?',
90
+ items: [
91
+ {
92
+ precision: ' 3.2.4 Dans chaque page web, le texte et le texte en image en gras d’une taille restituée supérieure ou égale à 18,5px vérifient-ils une de ces conditions (hors cas particuliers) ? '
93
+ + 'Le rapport de contraste entre le texte et son arrière-plan est de 3:1, au moins ; '
94
+ + 'Un mécanisme permet à l’utilisateur d’afficher le texte avec un rapport de contraste de 3:1, au moins. ',
95
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#3.2.4',
96
+ solution: [{
97
+ info1: '1. Retrouver dans le document les textes et les textes en image en gras d’une taille restituée supérieure ou égale à 18,5px qui pourraient poser des problèmes de contraste ; ',
98
+ 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 3:1, au moins ; Soit un mécanisme permet à l’utilisateur d’afficher le texte avec un rapport de contraste de 3:1, au moins. ',
99
+ info3: '3. Si c’est le cas pour chaque texte, le test est validé',
100
+ }],
101
+ expertise: ExpertiseLevelEnum.DESIGN,
102
+
103
+ },
104
+
105
+ ],
106
+ },
107
+ {
108
+ title: 'Catégorie 5 : Tableaux',
109
+ subtitle: '5.1 Chaque tableau de données complexe a-t-il un résumé ? ',
110
+ items: [
111
+
112
+ {
113
+ precision: '5.1.1 Pour chaque tableau de données complexe, un résumé est-il disponible ? ',
114
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#5.1.1',
115
+ solution: [{
116
+ info1: '1. Retrouver dans le document les tableaux de données complexes (tableau de données - élément <table> ou élément pourvu d’un attribut WAI-ARIA role="table" - contenant des en-têtes qui ne sont pas répartis uniquement sur la première ligne et/ou la première colonne de la grille ou dont la portée n’est pas valable pour l’ensemble de la colonne ou de la ligne) ; ',
117
+ info2: '2. Pour chaque tableau de données complexe, vérifier qu’un passage de texte permettant de comprendre la nature et la structure du tableau, est présent : '
118
+ + 'Soit dans l’élément <caption> ; '
119
+ + 'Soit dans l’attribut summary de l’élément <table> (dans les versions de HTML et de XHTML antérieures à HTML 5) ; '
120
+ + 'Soit dans un passage de texte lié au tableau avec l’attribut aria-describedby. ',
121
+ info3: '3. Si c’est le cas pour chaque tableau de données complexe, le test est validé.',
122
+ }],
123
+ expertise: ExpertiseLevelEnum.DESIGN,
124
+
125
+ },
126
+
127
+ ],
128
+ },
129
+ {
130
+ title: 'Catégorie 7 : Scripts',
131
+ subtitle: '7.1 Chaque script est-il, si nécessaire, compatible avec les technologies d’assistance ?',
132
+ items: [
133
+
134
+ {
135
+ precision: ' 7.1.3 Chaque script qui génère ou contrôle un composant d’interface vérifie-t-il ces conditions : '
136
+ + 'Le composant possède un nom pertinent ;'
137
+ + 'Le nom accessible du composant contient au moins l’intitulé visible ;'
138
+ + 'Le composant possède un rôle pertinent.',
139
+
140
+ link: 'https://accessibilite.numerique.gouv.fr/methode/criteres-et-tests/#7.1.3',
141
+ solution: [{
142
+ info1: '1. Pour chacun des composants d’interface ayant validé le test 7.1.1, vérifier que le composant d’interface possède : ',
143
+ info2: '2. Un nom pertinent (intitulé visible) et un rôle pertinent',
144
+ 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.',
145
+ }],
146
+ expertise: ExpertiseLevelEnum.DESIGN,
147
+
148
+ },
149
+
150
+ ],
151
+ },
152
+
153
+ ]
@@ -0,0 +1,4 @@
1
+ export enum ExpertiseLevelEnum {
2
+ DEV = 'dev',
3
+ DESIGN = 'design',
4
+ }
@@ -21,6 +21,7 @@ const meta: Meta<typeof NirField> = {
21
21
  table: {
22
22
  type: {
23
23
  summary: 'string',
24
+ detail: 'ex: 1840275123456 74',
24
25
  },
25
26
  },
26
27
  },
@@ -524,6 +525,89 @@ export const WithSuccessMessages: Story = {
524
525
  },
525
526
  }
526
527
 
528
+ export const WithoutSuccessMessages: Story = {
529
+ parameters: {
530
+ docs: {
531
+ description: {
532
+ story: `
533
+ ### Messages de succès
534
+
535
+ Cette story illustre l'utilisation de la propriété \`showSuccessMessages\` qui permet de contrôler
536
+ l'affichage des messages de succès lors de la validation. Par défaut, cette propriété est à \`true\`.
537
+
538
+ Cela peut être utile pour réduire la verbosité de l'interface lorsque les messages de succès
539
+ ne sont pas nécessaires dans certains contextes.
540
+ `,
541
+ },
542
+ },
543
+ sourceCode: [
544
+ {
545
+ name: 'Template',
546
+ code: `<template>
547
+ <!-- Champ avec messages de succès (par défaut) -->
548
+ <NirField
549
+ v-model="value"
550
+ label="NIR avec messages de succès"
551
+ required
552
+ />
553
+
554
+ <!-- Champ sans messages de succès -->
555
+ <NirField
556
+ v-model="value"
557
+ label="NIR sans messages de succès"
558
+ required
559
+ :showSuccessMessages="false"
560
+ />
561
+ </template>`,
562
+ },
563
+ ],
564
+ },
565
+ render: () => ({
566
+ components: { NirField },
567
+ setup() {
568
+ const value1 = ref('184027512345674')
569
+ const value2 = ref('184027512345674')
570
+
571
+ return { value1, value2 }
572
+ },
573
+ template: `
574
+ <div>
575
+ <div>
576
+ <div>
577
+ <p class="text-subtitle-2 mb-2">Avec messages de succès</p>
578
+ <NirField
579
+ v-model="value1"
580
+ label="NIR avec messages de succès"
581
+ required
582
+ showSuccessMessages
583
+ />
584
+ </div>
585
+
586
+ <div>
587
+ <p class="text-subtitle-2 mb-2">Sans messages de succès</p>
588
+ <NirField
589
+ v-model="value2"
590
+ label="NIR sans messages de succès"
591
+ required
592
+ :showSuccessMessages="false"
593
+ />
594
+ </div>
595
+ </div>
596
+
597
+ <div class="mt-4 text-body-2">
598
+ <p>Observations :</p>
599
+ <ul>
600
+ <li>Les deux champs ont la même valeur valide</li>
601
+ <li>Le premier champ affiche un message de succès et un indicateur visuel vert au blur</li>
602
+ <li>Le second champ n'affiche pas de message de succès, au blur</li>
603
+ <li>Essayez de modifier les valeurs pour voir le comportement avec des données invalides puis valides</li>
604
+ </ul>
605
+ </div>
606
+ </div>
607
+ `,
608
+ }),
609
+ }
610
+
527
611
  export const CustomRules: Story = {
528
612
  args: {
529
613
  ...Default.args,
@@ -954,3 +1038,84 @@ const onSubmit = async () => {
954
1038
  `,
955
1039
  }),
956
1040
  }
1041
+
1042
+ export const DisableErrorHandling: Story = {
1043
+ parameters: {
1044
+ docs: {
1045
+ description: {
1046
+ story: `
1047
+ ### Désactivation de la gestion des erreurs
1048
+
1049
+ Cette story illustre l'utilisation de la propriété \`disableErrorHandling\` qui permet de désactiver complètement
1050
+ la gestion et l'affichage des erreurs dans un champ, même si des règles de validation sont définies.
1051
+
1052
+ Cela peut être utile dans des cas particuliers où vous souhaitez définir des règles de validation
1053
+ mais gérer leur affichage différemment, ou utiliser la validation uniquement au niveau du formulaire parent.
1054
+ `,
1055
+ },
1056
+ },
1057
+ sourceCode: [
1058
+ {
1059
+ name: 'Template',
1060
+ code: `<template>
1061
+ <!-- Champ avec validation normale -->
1062
+ <NirField
1063
+ v-model="value"
1064
+ label="NIR avec validation"
1065
+ required
1066
+ />
1067
+
1068
+ <!-- Champ avec gestion d'erreurs désactivée -->
1069
+ <NirField
1070
+ v-model="value"
1071
+ label="NIR sans gestion d'erreurs"
1072
+ required
1073
+ disableErrorHandling
1074
+ />
1075
+ </template>`,
1076
+ },
1077
+ ],
1078
+ },
1079
+ render: () => ({
1080
+ components: { NirField },
1081
+ setup() {
1082
+ const value1 = ref('')
1083
+ const value2 = ref('')
1084
+
1085
+ return { value1, value2 }
1086
+ },
1087
+ template: `
1088
+ <div>
1089
+ <div>
1090
+ <div>
1091
+ <p class="text-subtitle-2 mb-2">Validation normale</p>
1092
+ <NirField
1093
+ v-model="value1"
1094
+ label="NIR avec validation"
1095
+ required
1096
+ />
1097
+ </div>
1098
+
1099
+ <div>
1100
+ <p class="text-subtitle-2 mb-2">Sans gestion d'erreurs</p>
1101
+ <NirField
1102
+ v-model="value2"
1103
+ label="NIR sans gestion d'erreurs"
1104
+ required
1105
+ disableErrorHandling
1106
+ />
1107
+ </div>
1108
+ </div>
1109
+
1110
+ <div class="mt-4 text-body-2">
1111
+ <p>Instructions :</p>
1112
+ <ol>
1113
+ <li class="ml-4">Cliquez dans un champ puis en dehors pour déclencher la validation</li>
1114
+ <li class="ml-4">Essayez de saisir des valeurs invalides (moins de 13 chiffres)</li>
1115
+ <li class="ml-4">Notez que le premier champ affiche des erreurs, mais pas le second</li>
1116
+ </ol>
1117
+ </div>
1118
+ </div>
1119
+ `,
1120
+ }),
1121
+ }
@@ -40,6 +40,7 @@
40
40
  hint?: string
41
41
  persistentHint?: boolean
42
42
  persistentPlaceholder?: boolean
43
+ disableErrorHandling?: boolean
43
44
  }>(), {
44
45
  modelValue: undefined,
45
46
  label: undefined,
@@ -72,6 +73,7 @@
72
73
  hint: undefined,
73
74
  persistentHint: false,
74
75
  persistentPlaceholder: false,
76
+ disableErrorHandling: false,
75
77
  })
76
78
 
77
79
  const emit = defineEmits(['update:modelValue'])
@@ -153,11 +155,13 @@
153
155
  const numberValidation = useValidation({
154
156
  showSuccessMessages: props.showSuccessMessages,
155
157
  fieldIdentifier: props.numberLabel,
158
+ disableErrorHandling: props.disableErrorHandling,
156
159
  })
157
160
 
158
161
  const keyValidation = useValidation({
159
162
  showSuccessMessages: props.showSuccessMessages,
160
163
  fieldIdentifier: props.keyLabel,
164
+ disableErrorHandling: props.disableErrorHandling,
161
165
  })
162
166
 
163
167
  // Règles de validation
@@ -406,7 +410,7 @@
406
410
  :has-warning="hasNumberWarning"
407
411
  :has-success="hasNumberSuccess"
408
412
  :error="hasNumberErrors"
409
- :messages="hasNumberErrors ? numberValidation.errors.value : (hasNumberWarning ? numberValidation.warnings.value : (hasNumberSuccess ? numberValidation.successes.value : []))"
413
+ :messages="hasNumberErrors ? numberValidation.errors.value : (hasNumberWarning ? numberValidation.warnings.value : (hasNumberSuccess && props.showSuccessMessages ? numberValidation.successes.value : []))"
410
414
  :has-error="hasNumberErrors"
411
415
  :required="required"
412
416
  :is-disabled="isDisabled"
@@ -449,7 +453,7 @@
449
453
  :has-warning="hasKeyWarning"
450
454
  :has-success="hasKeySuccess"
451
455
  :hint="props.hint || locales.keyHint"
452
- :messages="hasKeyErrors ? keyValidation.errors.value : (hasKeyWarning ? keyValidation.warnings.value : (hasKeySuccess ? keyValidation.successes.value : []))"
456
+ :messages="hasKeyErrors ? keyValidation.errors.value : (hasKeyWarning ? keyValidation.warnings.value : (hasKeySuccess && props.showSuccessMessages ? keyValidation.successes.value : []))"
453
457
  :has-error="hasKeyErrors"
454
458
  :is-disabled="isDisabled"
455
459
  :bg-color="bgColor"
@@ -0,0 +1,65 @@
1
+ import { describe, it, expect } from 'vitest'
2
+ import defaultOptions from '../config'
3
+
4
+ describe('NirField config', () => {
5
+ it('should have the correct default options structure', () => {
6
+ expect(defaultOptions).toHaveProperty('persistentHint')
7
+ expect(defaultOptions).toHaveProperty('validateOn')
8
+ expect(defaultOptions).toHaveProperty('icon')
9
+ expect(defaultOptions).toHaveProperty('tooltip')
10
+ })
11
+
12
+ it('should have the correct persistentHint configuration', () => {
13
+ expect(defaultOptions.persistentHint).toEqual({
14
+ persistentHint: true,
15
+ })
16
+ })
17
+
18
+ it('should have the correct validateOn configuration', () => {
19
+ expect(defaultOptions.validateOn).toEqual({
20
+ validateOn: 'blur',
21
+ })
22
+ })
23
+
24
+ it('should have the correct icon configuration', () => {
25
+ expect(defaultOptions.icon).toEqual({
26
+ color: '',
27
+ })
28
+ })
29
+
30
+ it('should have the correct tooltip configuration', () => {
31
+ expect(defaultOptions.tooltip).toEqual({
32
+ location: 'top',
33
+ })
34
+ })
35
+
36
+ it('should be immutable when imported', () => {
37
+ // Vérifier que l'objet ne peut pas être modifié après import
38
+ const originalTooltipLocation = defaultOptions.tooltip.location
39
+
40
+ // Tentative de modification
41
+ const testFunc = () => {
42
+ defaultOptions.tooltip.location = 'bottom'
43
+ }
44
+
45
+ // En mode strict, la modification d'une propriété en lecture seule devrait lever une erreur
46
+ // En mode non-strict, la modification ne devrait pas être effective
47
+ try {
48
+ testFunc()
49
+ // Si pas d'erreur, vérifions que la valeur n'a pas changé
50
+ expect(defaultOptions.tooltip.location).toBe(originalTooltipLocation)
51
+ }
52
+ catch (e) {
53
+ // Si une erreur est levée, c'est que l'objet est correctement protégé
54
+ expect(e).toBeTruthy()
55
+ }
56
+ })
57
+
58
+ it('should be used correctly in the component', () => {
59
+ // Ce test est un placeholder pour vérifier l'intégration avec le composant
60
+ // Dans un cas réel, on pourrait monter le composant et vérifier que les options
61
+ // par défaut sont correctement appliquées
62
+ expect(defaultOptions.validateOn.validateOn).toBe('blur')
63
+ expect(defaultOptions.persistentHint.persistentHint).toBe(true)
64
+ })
65
+ })
@@ -31,8 +31,8 @@ import * as NotificationBarStories from './NotificationBar.stories';
31
31
  <script setup lang="ts">
32
32
  import { VBtn } from 'vuetify/components'
33
33
  import { NotificationBar } from '@cnamts/synapse'
34
- import { useNotificationService } from '@cnamts/synapse/src/services/NotificationService'
35
- import type { Notification } from '@cnamts/synapse/src/components/NotificationBar/types'
34
+ import { useNotificationService } from '@cnamts/synapse'
35
+ import type { Notification } from '@cnamts/synapse'
36
36
 
37
37
  const { addNotification } = useNotificationService()
38
38
 
@@ -115,7 +115,6 @@ Default.args = {
115
115
  closeBtnText: 'Fermer',
116
116
  type: 'info',
117
117
  bottom: false,
118
- rounded: '4',
119
118
  }
120
119
 
121
120
  Default.parameters = {
@@ -173,7 +172,6 @@ Default.parameters = {
173
172
  export const Success: Story = Default.bind({})
174
173
  Success.args = {
175
174
  ...Default.args,
176
- rounded: 'pill',
177
175
  type: 'success',
178
176
  }
179
177
  Success.parameters = {
@@ -186,7 +184,6 @@ Success.parameters = {
186
184
  v-model="showNotification"
187
185
  :close-btn-text="closeBtnText"
188
186
  :bottom="bottom"
189
- :rounded="pill"
190
187
  type="success"
191
188
  >
192
189
  <template #default>This is a success notification</template>
@@ -232,7 +229,6 @@ Success.parameters = {
232
229
  export const Warning: Story = Default.bind({})
233
230
  Warning.args = {
234
231
  ...Default.args,
235
- rounded: 'pill',
236
232
  type: 'warning',
237
233
  }
238
234
  Warning.parameters = {
@@ -245,7 +241,6 @@ Warning.parameters = {
245
241
  v-model="showNotification"
246
242
  :close-btn-text="closeBtnText"
247
243
  :bottom="bottom"
248
- :rounded="pill"
249
244
  type="warning"
250
245
  >
251
246
  <template #default>This is a warning notification</template>
@@ -291,7 +286,6 @@ Warning.parameters = {
291
286
  export const Error: Story = Default.bind({})
292
287
  Error.args = {
293
288
  ...Default.args,
294
- rounded: 'pill',
295
289
  type: 'error',
296
290
  }
297
291
  Error.parameters = {
@@ -304,7 +298,6 @@ Error.parameters = {
304
298
  v-model="showNotification"
305
299
  :close-btn-text="closeBtnText"
306
300
  :bottom="bottom"
307
- :rounded="pill"
308
301
  type="error"
309
302
  >
310
303
  <template #default>This is an error notification</template>
@@ -350,7 +343,6 @@ Error.parameters = {
350
343
  export const Bottom: Story = Default.bind({})
351
344
  Bottom.args = {
352
345
  ...Default.args,
353
- rounded: 'pill',
354
346
  bottom: true,
355
347
  }
356
348
  Bottom.parameters = {
@@ -363,7 +355,6 @@ Bottom.parameters = {
363
355
  v-model="showNotification"
364
356
  :close-btn-text="closeBtnText"
365
357
  :bottom="true"
366
- :rounded="pill"
367
358
  :type="type"
368
359
  >
369
360
  <template #default>This is a bottom-positioned notification</template>
@@ -409,7 +400,6 @@ Bottom.parameters = {
409
400
  export const CustomCloseBtnText: Story = Default.bind({})
410
401
  CustomCloseBtnText.args = {
411
402
  ...Default.args,
412
- rounded: 'pill',
413
403
  closeBtnText: 'Masquer',
414
404
  }
415
405
  CustomCloseBtnText.parameters = {
@@ -448,7 +438,6 @@ CustomCloseBtnText.parameters = {
448
438
 
449
439
  const { addNotification } = useNotificationService()
450
440
  const showNotification = ref(false)
451
- const rounded = 'pill'
452
441
 
453
442
  const envoyerNotification = (message: string) => {
454
443
  const notification = {
@@ -465,3 +454,62 @@ CustomCloseBtnText.parameters = {
465
454
  },
466
455
  ],
467
456
  }
457
+
458
+ export const Customization: Story = Default.bind({})
459
+ Customization.args = {
460
+ ...Default.args,
461
+ rounded: 'pill',
462
+ type: 'success',
463
+ }
464
+ Customization.parameters = {
465
+ sourceCode: [
466
+ {
467
+ name: 'Template',
468
+ code: `
469
+ <div class="d-flex flex-wrap align-center justify-center">
470
+ <NotificationBar
471
+ v-model="showNotification"
472
+ :close-btn-text="closeBtnText"
473
+ :bottom="bottom"
474
+ :rounded="pill"
475
+ type="success"
476
+ >
477
+ <template #default>This is a success notification</template>
478
+ </NotificationBar>
479
+ <VBtn
480
+ color="success"
481
+ @click="envoyerNotification('This is a success notification')"
482
+ class="ma-6"
483
+ >
484
+ Afficher la notification
485
+ </VBtn>
486
+ </div>
487
+ `,
488
+ },
489
+ {
490
+ name: 'Script',
491
+ code: `
492
+ <script setup lang="ts">
493
+ import { VBtn } from 'vuetify/components'
494
+ import { NotificationBar } from '@cnamts/synapse'
495
+ import { ref } from 'vue'
496
+ import { useNotificationService } from '@cnamts/synpase'
497
+
498
+ const { addNotification } = useNotificationService()
499
+ const showNotification = ref(false)
500
+
501
+ const envoyerNotification = (message: string) => {
502
+ const notification = {
503
+ id: Date.now().toString(),
504
+ message,
505
+ type: 'success',
506
+ timeout: -1,
507
+ }
508
+ addNotification(notification)
509
+ showNotification.value = true
510
+ }
511
+ </script>
512
+ `,
513
+ },
514
+ ],
515
+ }