@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,101 @@
1
+ import type { StoryObj } from '@storybook/vue3'
2
+ import { VTextField } from 'vuetify/components'
3
+ import { isRequired, isRequiredFn } from '.'
4
+
5
+ export default {
6
+ title: 'Guide du dev/Règles De Validation/isRequired',
7
+ component: isRequiredFn,
8
+ }
9
+
10
+ export const Default: StoryObj<unknown> = {
11
+ render: () => {
12
+ return {
13
+ components: { VTextField },
14
+ setup() {
15
+ return { isRequired }
16
+ },
17
+ template: `
18
+ <VTextField
19
+ :rules="[isRequired]"
20
+ label="Champ requis"
21
+ variant="outlined"
22
+ />
23
+ `,
24
+ }
25
+ },
26
+ parameters: {
27
+ sourceCode: [
28
+ {
29
+ name: 'Script',
30
+ code: `
31
+ <script setup lang="ts">
32
+ import { VTextField } from 'vuetify/components'
33
+ import { isRequired } from '@cnamts/synapse'
34
+ </script>
35
+ `,
36
+ },
37
+ {
38
+ name: 'Template',
39
+ code: `
40
+ <template>
41
+ <VTextField
42
+ :rules="[isRequired]"
43
+ label="Champ requis"
44
+ variant="outlined"
45
+ />
46
+ </template>
47
+ `,
48
+ },
49
+ ],
50
+ },
51
+ }
52
+
53
+ export const CustomMessage: StoryObj<unknown> = {
54
+ render: () => {
55
+ return {
56
+ components: { VTextField },
57
+ setup() {
58
+ const isRequiredCustom = isRequiredFn({
59
+ default: 'This field is required',
60
+ })
61
+ return { isRequiredCustom }
62
+ },
63
+ template: `
64
+ <VTextField
65
+ :rules="[isRequiredCustom]"
66
+ label="Required"
67
+ variant="outlined"
68
+ />
69
+ `,
70
+ }
71
+ },
72
+ parameters: {
73
+ sourceCode: [
74
+ {
75
+ name: 'Script',
76
+ code: `
77
+ <script setup lang="ts">
78
+ import { VTextField } from 'vuetify/components'
79
+ import { isRequiredFn } from '@cnamts/synapse'
80
+
81
+ const required = isRequiredFn({
82
+ default: 'This field is required',
83
+ })
84
+ </script>
85
+ `,
86
+ },
87
+ {
88
+ name: 'Template',
89
+ code: `
90
+ <template>
91
+ <VTextField
92
+ :rules="[required]"
93
+ label="Required"
94
+ variant="outlined"
95
+ />
96
+ </template>
97
+ `,
98
+ },
99
+ ],
100
+ },
101
+ }
@@ -1,11 +1,11 @@
1
- import { ruleMessage } from './ruleMessageHelper'
1
+ import { ruleMessage } from '../../ruleMessage'
2
2
  import type { ValidationRule, ValidationResult, ErrorMessages } from '../types'
3
3
 
4
4
  import { defaultErrorMessages } from './locales'
5
5
 
6
6
  export type Value = string | string[] | null
7
7
 
8
- export function requiredFn(
8
+ export function isRequiredFn(
9
9
  errorMessages: ErrorMessages = defaultErrorMessages,
10
10
  ): ValidationRule<Value> {
11
11
  return (value: Value): ValidationResult => {
@@ -22,4 +22,4 @@ export function requiredFn(
22
22
  }
23
23
  }
24
24
 
25
- export const required = requiredFn()
25
+ export const isRequired = isRequiredFn()
@@ -1,46 +1,46 @@
1
- import { requiredFn } from '../index'
1
+ import { isRequiredFn } from '../index'
2
2
  import { describe, it, expect } from 'vitest'
3
3
 
4
- describe('requiredFn', () => {
4
+ describe('isRequiredFn', () => {
5
5
  it('returns true for non-empty string', () => {
6
- const rule = requiredFn()
6
+ const rule = isRequiredFn()
7
7
  const result = rule('non-empty')
8
8
  expect(result).toBe(true)
9
9
  })
10
10
 
11
11
  it('returns false for empty string', () => {
12
- const rule = requiredFn()
12
+ const rule = isRequiredFn()
13
13
  const result = rule('')
14
14
  expect(result).toBe('Le champ est requis.')
15
15
  })
16
16
 
17
17
  it('returns true for non-empty array', () => {
18
- const rule = requiredFn()
18
+ const rule = isRequiredFn()
19
19
  const result = rule(['item'])
20
20
  expect(result).toBe(true)
21
21
  })
22
22
 
23
23
  it('returns false for empty array', () => {
24
- const rule = requiredFn()
24
+ const rule = isRequiredFn()
25
25
  const result = rule([])
26
26
  expect(result).toBe('Le champ est requis.')
27
27
  })
28
28
 
29
29
  it('returns true for non-null value', () => {
30
- const rule = requiredFn()
30
+ const rule = isRequiredFn()
31
31
  const result = rule('value')
32
32
  expect(result).toBe(true)
33
33
  })
34
34
 
35
35
  it('returns false for null value', () => {
36
- const rule = requiredFn()
36
+ const rule = isRequiredFn()
37
37
  const result = rule(null)
38
38
  expect(result).toBe('Le champ est requis.')
39
39
  })
40
40
 
41
41
  it('returns custom error message for empty string', () => {
42
42
  const customMessages = { default: 'Custom required message' }
43
- const rule = requiredFn(customMessages)
43
+ const rule = isRequiredFn(customMessages)
44
44
  const result = rule('')
45
45
  expect(result).toBe('Custom required message')
46
46
  })
@@ -0,0 +1,81 @@
1
+ import { Meta, Canvas, Source } from '@storybook/blocks';
2
+ import * as IsValidEmailStories from './IsValidEmail.stories';
3
+
4
+ <Meta of={IsValidEmailStories} />
5
+
6
+ # Règle de validation `isValidEmail`
7
+
8
+ La règle de validation `isValidEmail` permet de vérifier si une chaîne de caractère est une adresse email valide.
9
+
10
+ ## Usage
11
+
12
+ Pour utiliser cette règle de validation, vous devez importer la fonction d'ordre supérieur `isValidEmailFn` depuis le package `@cnamts/synapse`.
13
+
14
+ <Source dark code={`
15
+ import { isValidEmailFn } from '@cnamts/synapse';
16
+ `} />
17
+
18
+ Vous devez ensuite faire appel à cette fonction pour obtenir la règle de validation.
19
+
20
+ <Source dark code={`
21
+ const isValidEmail = isValidEmailFn(/* optionals options */);
22
+ `} />
23
+
24
+ Vous pouvez ensuite utiliser la fonction retournée comme règle d'un champs de formulaire.
25
+
26
+ <Source dark code={`
27
+ <script setup lang="ts">
28
+ import { isValidEmailFn } from '@cnamts/synapse';
29
+ import { VTextField } from 'vuetify/components';
30
+
31
+ const isValidEmail = isValidEmailFn();
32
+ </script>
33
+
34
+ <template>
35
+ <VTextField
36
+ :rules="[isValidEmail]"
37
+ label="Email"
38
+ />
39
+ </template>
40
+
41
+ `} />
42
+
43
+ Si vous n'utilisez cette règle sans options, vous pouvez faire appel à la fonction `isValidEmail`.
44
+
45
+ <Source dark code={`
46
+ <script setup lang="ts">
47
+ import { isValidEmail } from '@cnamts/synapse';
48
+ import { VTextField } from 'vuetify/components';
49
+ </script>
50
+
51
+ <template>
52
+ <VTextField
53
+ :rules="[isValidEmail]"
54
+ label="Email"
55
+ />
56
+ </template>
57
+
58
+ `} />
59
+
60
+ ## API
61
+
62
+ <Source dark code={`
63
+ isValidEmailFn(
64
+ errorMessages?: {
65
+ default: string;
66
+ }
67
+ ): (value: string) => true | string;
68
+ `} />
69
+
70
+ ### Arguments
71
+
72
+ - `errorMessages` : objet optionnel permettant de personnaliser les messages d'erreur. Les clés disponibles sont :
73
+ - `default` : message d'erreur par défaut.
74
+
75
+ ### Valeurs de retour
76
+
77
+ Retourne une fonction pouvant être utilisée comme règle de validation pour un champs de formulaire Vuetify.
78
+
79
+ ## Exemples
80
+
81
+ <Canvas of={IsValidEmailStories.Default} />
@@ -0,0 +1,101 @@
1
+ import type { StoryObj } from '@storybook/vue3'
2
+ import { VTextField } from 'vuetify/components'
3
+ import { isValidEmail, isValidEmailFn } from './index'
4
+
5
+ export default {
6
+ title: 'Guide du dev/Règles De Validation/isValidEmail',
7
+ component: isValidEmailFn,
8
+ }
9
+
10
+ export const Default: StoryObj<unknown> = {
11
+ render: () => {
12
+ return {
13
+ components: { VTextField },
14
+ setup() {
15
+ return { isValidEmail }
16
+ },
17
+ template: `
18
+ <VTextField
19
+ :rules="[isValidEmail]"
20
+ label="Email"
21
+ variant="outlined"
22
+ />
23
+ `,
24
+ }
25
+ },
26
+ parameters: {
27
+ sourceCode: [
28
+ {
29
+ name: 'Script',
30
+ code: `
31
+ <script setup lang="ts">
32
+ import { VTextField } from 'vuetify/components'
33
+ import { isValidEmail } from '@cnamts/synapse'
34
+ </script>
35
+ `,
36
+ },
37
+ {
38
+ name: 'Template',
39
+ code: `
40
+ <template>
41
+ <VTextField
42
+ :rules="[isValidEmail]"
43
+ label="Email"
44
+ variant="outlined"
45
+ />
46
+ </template>
47
+ `,
48
+ },
49
+ ],
50
+ },
51
+ }
52
+
53
+ export const CustomMessage: StoryObj<unknown> = {
54
+ render: () => {
55
+ return {
56
+ components: { VTextField },
57
+ setup() {
58
+ const email = isValidEmailFn({
59
+ default: '请输入有效的电子邮件地址。',
60
+ })
61
+ return { email }
62
+ },
63
+ template: `
64
+ <VTextField
65
+ :rules="[email]"
66
+ label="电子邮件"
67
+ variant="outlined"
68
+ />
69
+ `,
70
+ }
71
+ },
72
+ parameters: {
73
+ sourceCode: [
74
+ {
75
+ name: 'Script',
76
+ code: `
77
+ <script setup lang="ts">
78
+ import { VTextField } from 'vuetify/components'
79
+ import { isValidEmailFn } from '@cnamts/synapse'
80
+
81
+ const email = isValidEmailFn({
82
+ default: '请输入有效的电子邮件地址。',
83
+ })
84
+ </script>
85
+ `,
86
+ },
87
+ {
88
+ name: 'Template',
89
+ code: `
90
+ <template>
91
+ <VTextField
92
+ :rules="[email]"
93
+ label="电子邮件"
94
+ variant="outlined"
95
+ />
96
+ </template>
97
+ `,
98
+ },
99
+ ],
100
+ },
101
+ }
@@ -5,13 +5,11 @@ import type {
5
5
  ErrorMessages,
6
6
  Value,
7
7
  } from '@/utils/rules/types'
8
-
9
- import { isEmailValid } from '../../functions/isEmailValid'
10
-
11
8
  import { defaultErrorMessages } from './locales'
9
+ import { isEmailValid } from '@/utils/functions/validation/isEmailValid'
12
10
 
13
11
  /** Check that the value is a valid email */
14
- export function emailFn(
12
+ export function isValidEmailFn(
15
13
  errorMessages: ErrorMessages = defaultErrorMessages,
16
14
  ): ValidationRule {
17
15
  return (value: Value): ValidationResult => {
@@ -23,4 +21,4 @@ export function emailFn(
23
21
  }
24
22
  }
25
23
 
26
- export const email = emailFn()
24
+ export const isValidEmail = isValidEmailFn()
@@ -1,21 +1,21 @@
1
- import { email, emailFn } from '../'
1
+ import { isValidEmail, isValidEmailFn } from '..'
2
2
  import { describe, it, expect } from 'vitest'
3
3
 
4
4
  describe('email', () => {
5
5
  it('returns an error when the email is invalid', () => {
6
- expect(typeof email('test')).toBe('string')
6
+ expect(typeof isValidEmail('test')).toBe('string')
7
7
  })
8
8
 
9
9
  it('returns true when the email is valid', () => {
10
- expect(email('test@example.com')).toBe(true)
10
+ expect(isValidEmail('test@example.com')).toBe(true)
11
11
  })
12
12
 
13
13
  it('returns true if the value is falsy', () => {
14
- expect(email('')).toBe(true)
14
+ expect(isValidEmail('')).toBe(true)
15
15
  })
16
16
 
17
17
  it('works with custom error messages', () => {
18
- const rule = emailFn({
18
+ const rule = isValidEmailFn({
19
19
  default: 'test',
20
20
  })
21
21
 
@@ -1,6 +0,0 @@
1
- declare module 'languages' {
2
- import type { Language } from './types.d.ts'
3
-
4
- export function getLanguageInfo(langCode: string): Language
5
- export function getAllLanguageCode(): string[]
6
- };
@@ -1,4 +0,0 @@
1
- import { ValidationRule, ErrorMessages } from '../types';
2
- /** Check that the value is a valid email */
3
- export declare function emailFn(errorMessages?: ErrorMessages): ValidationRule;
4
- export declare const email: ValidationRule;
@@ -1,4 +0,0 @@
1
- import { ValidationRule, ErrorMessages } from '../types';
2
- /** Check that the value does not exceeds the specified length */
3
- export declare function exactLengthFn(lengthValue: number, ignoreSpaces?: boolean, errorMessages?: ErrorMessages<number>): ValidationRule;
4
- export declare const exactLength: typeof exactLengthFn;
@@ -1,4 +0,0 @@
1
- import { ValidationRule, ErrorMessages } from '../types';
2
- export type Value = string | string[] | null;
3
- export declare function requiredFn(errorMessages?: ErrorMessages): ValidationRule<Value>;
4
- export declare const required: ValidationRule<Value>;
@@ -1,3 +0,0 @@
1
- import { ErrorMessages } from '../types';
2
- /** Get the value of an error message */
3
- export declare function ruleMessage<T>(errorMessages: ErrorMessages<T>, key: string, args?: T[]): string;
@@ -1,6 +0,0 @@
1
- declare module 'languages' {
2
- import type { Language } from './types.d.ts'
3
-
4
- export function getLanguageInfo(langCode: string): Language
5
- export function getAllLanguageCode(): string[]
6
- };
@@ -1,65 +0,0 @@
1
- export interface Link {
2
- id: number
3
- url: string
4
- name: string
5
- }
6
-
7
- export interface IndexedObject<T = string> {
8
- [key: string]: T
9
- }
10
-
11
- export type Refs<T extends Record<string, unknown>> = Vue['$refs'] & T
12
-
13
- export type Breakpoints = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'smAndDown' | 'smAndUp' | 'mdAndDown' | 'mdAndUp' | 'lgAndDown' | 'lgAndUp' | 'xlAndDown'
14
-
15
- export interface IDataListItem {
16
- id: number
17
- [key: string]: string | number | undefined
18
- accordionTitle?: string
19
- }
20
-
21
- export interface Theme {
22
- primary: string
23
- secondary: string
24
- info: string
25
- warning: string
26
- error: string
27
- success: string
28
- }
29
-
30
- export interface VuetifyTheme extends Theme {
31
- [key: string]: string
32
- }
33
-
34
- export interface Color {
35
- darken1?: string
36
- darken2?: string
37
- darken3?: string
38
- darken4?: string
39
- darken5?: string
40
- darken6?: string
41
- base: string
42
- lighten1?: string
43
- lighten2?: string
44
- lighten3?: string
45
- lighten4?: string
46
- lighten5?: string
47
- lighten6?: string
48
- }
49
-
50
- export interface Palette {
51
- apBlue: Color
52
- apGrey: Color
53
- apWhite: Color
54
- apBlack: Color
55
- apYellow: Color
56
- apGreen: Color
57
- apRed: Color
58
- apTurquoise: Color
59
- apParme: Color
60
- apPink: Color
61
- }
62
-
63
- export type Colors = Theme & Palette
64
-
65
- export type ValidateOn = 'lazy' | ('input' | 'blur' | 'submit') | 'input lazy' | 'blur lazy' | 'submit lazy' | 'lazy input' | 'lazy blur' | 'lazy submit' | undefined
@@ -1,58 +0,0 @@
1
- // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
-
3
- exports[`SyTextField > matches snapshot 1`] = `
4
- "<div data-v-8f0b2baf="" class="v-input v-input--horizontal v-input--center-affix v-input--density-default v-theme--light v-locale--is-ltr v-input--error v-text-field error-field">
5
- <!---->
6
- <div class="v-input__control">
7
- <div class="v-field v-field--appended v-field--center-affix v-field--error v-field--prepended v-field--variant-outlined v-theme--light v-locale--is-ltr">
8
- <div class="v-field__overlay"></div>
9
- <div class="v-field__loader">
10
- <div class="v-progress-linear v-theme--light v-locale--is-ltr" style="top: 0px; height: 0px; --v-progress-linear-height: 2px;" role="progressbar" aria-hidden="true" aria-valuemin="0" aria-valuemax="100">
11
- <!---->
12
- <div class="v-progress-linear__background bg-error" style="opacity: NaN;"></div>
13
- <div class="v-progress-linear__buffer bg-error" style="opacity: NaN; width: 0%;"></div>
14
- <transition-stub name="fade-transition" appear="false" persisted="false" css="true">
15
- <div class="v-progress-linear__indeterminate">
16
- <div class="v-progress-linear__indeterminate long bg-error"></div>
17
- <div class="v-progress-linear__indeterminate short bg-error"></div>
18
- </div>
19
- </transition-stub>
20
- <!---->
21
- </div>
22
- </div>
23
- <div class="v-field__prepend-inner">
24
- <!---->
25
- <!--v-if-->
26
- <!--v-if-->
27
- </div>
28
- <div class="v-field__field" data-no-activator="">
29
- <!----><label class="v-label v-field-label" for="input-0">
30
- <!---->custom label
31
- </label>
32
- <!----><input size="1" type="text" id="input-0" aria-describedby="input-0-messages" aria-label="custom label" display-asterisk="false" no-icon="false" class="v-field__input" value="">
33
- <!---->
34
- </div>
35
- <!---->
36
- <div class="v-field__append-inner"><i data-v-8f0b2baf="" class="M13,9H11V7H13M13,17H11V11H13M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z mdi v-icon notranslate v-theme--light v-icon--size-default" aria-hidden="true"></i>
37
- <!--v-if-->
38
- <!---->
39
- </div>
40
- <div class="v-field__outline">
41
- <div class="v-field__outline__start"></div>
42
- <div class="v-field__outline__notch"><label class="v-label v-field-label v-field-label--floating" aria-hidden="true" for="input-0">
43
- <!---->custom label
44
- </label></div>
45
- <div class="v-field__outline__end"></div>
46
- <!---->
47
- </div>
48
- </div>
49
- </div>
50
- <!---->
51
- <div id="input-0-messages" class="v-input__details" role="alert" aria-live="polite">
52
- <transition-group-stub name="slide-y-transition" tag="div" appear="false" persisted="false" css="true" class="v-messages">
53
- <div class="v-messages__message">Test error message</div>
54
- </transition-group-stub>
55
- <!---->
56
- </div>
57
- </div>"
58
- `;
@@ -1,8 +0,0 @@
1
- /** From https://emailregex.com/ */
2
- // eslint-disable-next-line no-control-regex
3
- export const EMAIL_REGEXP = /^(?:[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/
4
-
5
- /** Check if an email is valid */
6
- export function isEmailValid(email: string): boolean {
7
- return Boolean(EMAIL_REGEXP.exec(email))
8
- }
@@ -1,14 +0,0 @@
1
- import type { ErrorMessages, GenericFnOpt } from '../types'
2
-
3
- /** Get the value of an error message */
4
- export function ruleMessage<T>(
5
- errorMessages: ErrorMessages<T>,
6
- key: string,
7
- args: T[] = [],
8
- ): string {
9
- if (typeof errorMessages[key] === 'function') {
10
- return (errorMessages[key] as GenericFnOpt<T>)(...args)
11
- }
12
-
13
- return errorMessages[key] as string
14
- }
@@ -1,22 +0,0 @@
1
- import { ruleMessage } from '../ruleMessageHelper'
2
- import { describe, it, expect } from 'vitest'
3
-
4
- describe('ruleMessage', () => {
5
- it('returns the correct message for a string error message', () => {
6
- const errorMessages = { required: 'This field is required' }
7
- const result = ruleMessage(errorMessages, 'required')
8
- expect(result).toBe('This field is required')
9
- })
10
-
11
- it('returns the correct message for a function error message', () => {
12
- const errorMessages = { minLength: (min: number) => `Minimum length is ${min}` }
13
- const result = ruleMessage(errorMessages, 'minLength', [5])
14
- expect(result).toBe('Minimum length is 5')
15
- })
16
-
17
- it('handles multiple arguments for a function error message', () => {
18
- const errorMessages = { range: (min: number, max: number) => `Value must be between ${min} and ${max}` }
19
- const result = ruleMessage(errorMessages, 'range', [1, 10])
20
- expect(result).toBe('Value must be between 1 and 10')
21
- })
22
- })