@cnamts/synapse 0.0.11-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.
- package/dist/design-system-v3.js +5394 -3813
- package/dist/design-system-v3.umd.cjs +1 -1
- package/dist/src/components/Amelipro/types/types.d.ts +38 -0
- package/dist/src/components/CookieBanner/CookieBanner.d.ts +1 -1
- package/dist/src/components/Customs/SyInputSelect/SyInputSelect.d.ts +2 -0
- package/dist/src/components/Customs/SyTextField/SyTextField.d.ts +31 -23
- package/dist/src/components/Customs/SyTextField/types.d.ts +1 -0
- package/dist/src/components/DatePicker/DatePicker.d.ts +105 -102
- package/dist/src/components/DatePicker/DateTextInput.d.ts +82 -74
- package/dist/src/components/ErrorPage/ErrorPage.d.ts +1 -1
- package/dist/src/components/FileList/FileList.d.ts +1 -0
- package/dist/src/components/FileList/UploadItem/UploadItem.d.ts +1 -1
- package/dist/src/components/FilterInline/AccessibiliteItems.d.ts +30 -0
- package/dist/src/components/FilterInline/constants/ExpertiseLevelEnum.d.ts +4 -0
- package/dist/src/components/FilterSideBar/AccessibiliteItems.d.ts +29 -0
- package/dist/src/components/FilterSideBar/FilterSideBar.d.ts +31 -0
- package/dist/src/components/FilterSideBar/constants/ExpertiseLevelEnum.d.ts +4 -0
- package/dist/src/components/FilterSideBar/locales.d.ts +7 -0
- package/dist/src/components/LangBtn/LangBtn.d.ts +2 -2
- package/dist/src/components/NirField/NirField.d.ts +952 -0
- package/dist/src/components/NotificationBar/NotificationBar.d.ts +6 -6
- package/dist/src/components/PasswordField/PasswordField.d.ts +42 -8
- package/dist/src/components/PeriodField/PeriodField.d.ts +259 -235
- package/dist/src/components/PhoneField/PhoneField.d.ts +33 -3
- package/dist/src/components/RatingPicker/EmotionPicker/EmotionPicker.d.ts +1 -1
- package/dist/src/components/RatingPicker/NumberPicker/NumberPicker.d.ts +1 -1
- package/dist/src/components/RatingPicker/StarsPicker/StarsPicker.d.ts +1 -1
- package/dist/src/components/UploadWorkflow/AccessibiliteItems.d.ts +29 -0
- package/dist/src/components/UploadWorkflow/config.d.ts +29 -0
- package/dist/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.d.ts +4 -0
- package/dist/src/components/UploadWorkflow/locales.d.ts +7 -0
- package/dist/src/components/UploadWorkflow/types.d.ts +19 -0
- package/dist/src/components/UploadWorkflow/useFileList.d.ts +10 -0
- package/dist/src/components/UploadWorkflow/useFileUploadJourney.d.ts +9 -0
- package/dist/src/components/Usages/Usages.d.ts +10 -0
- package/dist/src/components/index.d.ts +5 -0
- package/dist/src/composables/date/tests/useDateFormat.spec.d.ts +1 -0
- package/dist/src/composables/date/tests/useDateInitialization.spec.d.ts +1 -0
- package/dist/src/composables/date/tests/useDatePickerAccessibility.spec.d.ts +1 -0
- package/dist/src/composables/date/useDateFormat.d.ts +26 -0
- package/dist/src/composables/date/useDateInitialization.d.ts +18 -0
- package/dist/src/composables/date/useDatePickerAccessibility.d.ts +8 -0
- package/dist/src/composables/rules/useFieldValidation.d.ts +1 -0
- package/dist/src/composables/useFilterable/useFilterable.d.ts +1 -1
- package/dist/src/composables/validation/tests/useValidation.spec.d.ts +1 -0
- package/dist/src/composables/validation/useValidation.d.ts +40 -0
- package/dist/src/designTokens/index.d.ts +3 -1
- package/dist/src/main.d.ts +1 -0
- package/dist/src/utils/formatDate/index.d.ts +3 -0
- package/dist/src/utils/formatDate/tests/formatDate.spec.d.ts +1 -0
- package/dist/src/utils/functions/validation/isDateAfter/index.d.ts +2 -0
- package/dist/src/utils/functions/validation/isDateAfter/tests/isDateAfter.spec.d.ts +1 -0
- package/dist/src/utils/functions/validation/isDateBefore/index.d.ts +2 -0
- package/dist/src/utils/functions/validation/isDateBefore/tests/isDateBefore.spec.d.ts +1 -0
- package/dist/src/utils/functions/validation/isDateInRange/index.d.ts +3 -0
- package/dist/src/utils/functions/validation/isDateInRange/tests/isDateInRange.spec.d.ts +1 -0
- package/dist/src/utils/functions/validation/isDateValid/index.d.ts +9 -0
- package/dist/src/utils/functions/validation/isDateValid/tests/isDateValid.spec.d.ts +1 -0
- package/dist/src/utils/functions/validation/isEmailValid/tests/isEmailValid.spec.d.ts +1 -0
- package/dist/src/utils/functions/validation/isWeekend/index.d.ts +3 -0
- package/dist/src/utils/functions/validation/isWeekend/tests/isWeekend.spec.d.ts +1 -0
- package/dist/src/utils/parseDate/index.d.ts +3 -0
- package/dist/src/utils/parseDate/tests/parseDate.spec.d.ts +1 -0
- package/dist/src/utils/rules/doMatchPattern/index.d.ts +3 -0
- package/dist/src/utils/rules/doMatchPattern/tests/matchPattern.spec.d.ts +1 -0
- package/dist/src/utils/rules/index.d.ts +11 -0
- package/dist/src/utils/rules/isDateValid/index.d.ts +4 -0
- package/dist/src/utils/rules/isDateValid/tests/isDateValid.spec.d.ts +1 -0
- package/dist/src/utils/rules/isExactLength/index.d.ts +3 -0
- package/dist/src/utils/rules/isExactLength/locales.d.ts +2 -0
- package/dist/src/utils/rules/isExactLength/tests/exactLength.spec.d.ts +1 -0
- package/dist/src/utils/rules/isMaxLength/index.d.ts +3 -0
- package/dist/src/utils/rules/isMaxLength/locales.d.ts +2 -0
- package/dist/src/utils/rules/isMaxLength/tests/isMaxLength.spec.d.ts +1 -0
- package/dist/src/utils/rules/isMinLength/index.d.ts +3 -0
- package/dist/src/utils/rules/isMinLength/locales.d.ts +2 -0
- package/dist/src/utils/rules/isMinLength/tests/isMinLength.spec.d.ts +1 -0
- package/dist/src/utils/rules/isNotAfterDate/index.d.ts +3 -0
- package/dist/src/utils/rules/isNotAfterDate/tests/isNotAfterDate.spec.d.ts +1 -0
- package/dist/src/utils/rules/isNotAfterToday/index.d.ts +4 -0
- package/dist/src/utils/rules/isNotAfterToday/locales.d.ts +2 -0
- package/dist/src/utils/rules/isNotAfterToday/tests/isNotAfterToday.spec.d.ts +1 -0
- package/dist/src/utils/rules/isNotBeforeDate/index.d.ts +3 -0
- package/dist/src/utils/rules/isNotBeforeDate/locales.d.ts +2 -0
- package/dist/src/utils/rules/isNotBeforeDate/tests/IsNotBeforeDate.spec.d.ts +1 -0
- package/dist/src/utils/rules/isNotBeforeToday/index.d.ts +4 -0
- package/dist/src/utils/rules/isNotBeforeToday/locales.d.ts +2 -0
- package/dist/src/utils/rules/isNotBeforeToday/tests/notBeforeToday.spec.d.ts +1 -0
- package/dist/src/utils/rules/isRequired/index.d.ts +4 -0
- package/dist/src/utils/rules/isRequired/locales.d.ts +2 -0
- package/dist/src/utils/rules/isRequired/tests/isRequred.spec.d.ts +1 -0
- package/dist/src/utils/rules/isValidEmail/index.d.ts +4 -0
- package/dist/src/utils/rules/isValidEmail/locales.d.ts +2 -0
- package/dist/src/utils/rules/isValidEmail/tests/isValidEmail.spec.d.ts +1 -0
- package/dist/src/vuetifyConfig.d.ts +81 -0
- package/dist/style.css +1 -1
- package/package.json +3 -1
- package/src/assets/_elevations.scss +89 -0
- package/src/assets/_fonts.scss +6 -0
- package/src/assets/_radius.scss +92 -0
- package/src/assets/_spacers.scss +149 -0
- package/src/assets/settings.scss +15 -3
- package/src/assets/tokens.scss +32 -29
- package/src/components/Amelipro/types/types.ts +40 -0
- package/src/components/ChipList/ChipList.stories.ts +26 -27
- package/src/components/ChipList/ChipList.vue +5 -1
- package/src/components/ChipList/config.ts +1 -0
- package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +2 -2
- package/src/components/Customs/SyBtnSelect/SyBtnSelect.mdx +1 -1
- package/src/components/Customs/SyInputSelect/SyInputSelect.mdx +1 -1
- package/src/components/Customs/SyInputSelect/SyInputSelect.stories.ts +65 -0
- package/src/components/Customs/SyInputSelect/SyInputSelect.vue +13 -3
- package/src/components/Customs/SySelect/SySelect.mdx +1 -1
- package/src/components/Customs/SySelect/SySelect.stories.ts +88 -5
- package/src/components/Customs/SySelect/SySelect.vue +55 -14
- package/src/components/Customs/SySelect/tests/SySelect.spec.ts +135 -2
- package/src/components/Customs/SyTextField/SyTextField.mdx +2 -2
- package/src/components/Customs/SyTextField/SyTextField.stories.ts +809 -79
- package/src/components/Customs/SyTextField/SyTextField.vue +135 -104
- package/src/components/Customs/SyTextField/tests/SyTextField.spec.ts +190 -38
- package/src/components/Customs/SyTextField/types.d.ts +1 -0
- package/src/components/DatePicker/DatePicker.stories.ts +177 -5
- package/src/components/DatePicker/DatePicker.vue +302 -233
- package/src/components/DatePicker/DateTextInput.vue +101 -246
- package/src/components/DatePicker/tests/DatePicker.spec.ts +123 -60
- package/src/components/DatePicker/tests/DateTextInput.spec.ts +202 -6
- package/src/components/FileList/Accessibilite.stories.ts +1 -1
- package/src/components/FileList/AccessibiliteItems.ts +22 -0
- package/src/components/FileList/FileList.vue +2 -1
- package/src/components/FileList/UploadItem/UploadItem.vue +10 -0
- package/src/components/FileUpload/FileUpload.stories.ts +93 -7
- package/src/components/FileUpload/FileUpload.vue +1 -0
- package/src/components/FileUpload/tests/FileUpload.spec.ts +4 -4
- package/src/components/FilterInline/Accessibilite.mdx +14 -0
- package/src/components/FilterInline/Accessibilite.stories.ts +216 -0
- package/src/components/FilterInline/AccessibiliteItems.ts +132 -0
- package/src/components/FilterInline/FilterInline.mdx +180 -34
- package/src/components/FilterInline/FilterInline.stories.ts +363 -6
- package/src/components/FilterInline/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/FilterSideBar/Accessibilite.mdx +14 -0
- package/src/components/FilterSideBar/Accessibilite.stories.ts +216 -0
- package/src/components/FilterSideBar/AccessibiliteItems.ts +153 -0
- package/src/components/FilterSideBar/FilterSideBar.mdx +237 -0
- package/src/components/FilterSideBar/FilterSideBar.stories.ts +798 -0
- package/src/components/FilterSideBar/FilterSideBar.vue +193 -0
- package/src/components/FilterSideBar/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/FilterSideBar/locales.ts +8 -0
- package/src/components/FilterSideBar/tests/FilterSideBar.spec.ts +305 -0
- package/src/components/FilterSideBar/tests/__snapshots__/FilterSideBar.spec.ts.snap +39 -0
- package/src/components/HeaderBar/Usages.mdx +1 -1
- package/src/components/NirField/NirField.stories.ts +738 -29
- package/src/components/NirField/NirField.vue +401 -359
- package/src/components/NirField/examples//342/200/257dataset/342/200/257.md +12 -0
- package/src/components/NirField/tests/NirField.spec.ts +88 -52
- package/src/components/NirField/tests/config.spec.ts +65 -0
- package/src/components/NotificationBar/Accessibilite.stories.ts +4 -0
- package/src/components/NotificationBar/NotificationBar.mdx +2 -2
- package/src/components/NotificationBar/NotificationBar.stories.ts +66 -13
- package/src/components/NotificationBar/NotificationBar.vue +42 -114
- package/src/components/NotificationBar/tests/NotificationBar.spec.ts +28 -33
- package/src/components/NotificationBar/tests/__snapshots__/NotificationBar.spec.ts.snap +1 -1
- package/src/components/PaginatedTable/PaginatedTable.vue +6 -10
- package/src/components/PaginatedTable/tests/__snapshots__/PaginatedTable.spec.ts.snap +4 -4
- package/src/components/PasswordField/PasswordField.mdx +129 -47
- package/src/components/PasswordField/PasswordField.stories.ts +1111 -120
- package/src/components/PasswordField/PasswordField.vue +212 -99
- package/src/components/PasswordField/tests/PasswordField.spec.ts +138 -9
- package/src/components/PeriodField/PeriodField.stories.ts +214 -118
- package/src/components/PeriodField/PeriodField.vue +238 -190
- package/src/components/PeriodField/tests/PeriodField.spec.ts +146 -0
- package/src/components/PhoneField/PhoneField.stories.ts +170 -0
- package/src/components/PhoneField/PhoneField.vue +76 -17
- package/src/components/PhoneField/indicatifs.ts +1 -1
- package/src/components/PhoneField/tests/PhoneField.spec.ts +40 -0
- package/src/components/RatingPicker/RatingPicker.stories.ts +7 -7
- package/src/components/SearchListField/SearchListField.stories.ts +1 -1
- package/src/components/UploadWorkflow/Accessibilite.mdx +14 -0
- package/src/components/UploadWorkflow/Accessibilite.stories.ts +216 -0
- package/src/components/UploadWorkflow/AccessibiliteItems.ts +192 -0
- package/src/components/UploadWorkflow/UploadWorkflow.mdx +75 -0
- package/src/components/UploadWorkflow/UploadWorkflow.stories.ts +943 -0
- package/src/components/UploadWorkflow/UploadWorkflow.vue +230 -0
- package/src/components/UploadWorkflow/config.ts +29 -0
- package/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/UploadWorkflow/locales.ts +8 -0
- package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +257 -0
- package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +54 -0
- package/src/components/UploadWorkflow/types.ts +21 -0
- package/src/components/UploadWorkflow/useFileList.ts +84 -0
- package/src/components/UploadWorkflow/useFileUploadJourney.ts +18 -0
- package/src/components/Usages/tests/Usages.spec.ts +183 -0
- package/src/components/index.ts +5 -0
- package/src/composables/date/tests/useDateFormat.spec.ts +67 -0
- package/src/composables/date/tests/useDateInitialization.spec.ts +89 -0
- package/src/composables/date/tests/useDatePickerAccessibility.spec.ts +102 -0
- package/src/composables/date/useDateFormat.ts +94 -0
- package/src/composables/date/useDateInitialization.ts +92 -0
- package/src/composables/date/useDatePickerAccessibility.ts +78 -0
- package/src/composables/rules/tests/useFieldValidation.spec.ts +385 -4
- package/src/composables/rules/useFieldValidation.ts +5 -2
- package/src/composables/useFilterable/useFilterable.ts +5 -4
- package/src/composables/validation/tests/useValidation.spec.ts +154 -0
- package/src/composables/validation/useValidation.ts +180 -0
- package/src/designTokens/index.ts +4 -0
- package/src/main.ts +1 -0
- package/src/stories/Accessibilite/Aculturation/AuditDesignSystem.mdx +28 -0
- package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +2 -2
- package/src/stories/Accessibilite/Audit/RGAA.mdx +6 -6
- package/src/stories/Accessibilite/Introduction.mdx +2 -1
- package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +1 -1
- package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +1 -1
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +8 -11
- package/src/stories/Accessibilite/KitDePreAudit/Outils/LecteursDEcran.mdx +77 -0
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru.mdx +9 -3
- package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +2 -2
- package/src/stories/Demarrer/Accueil.mdx +1 -1
- package/src/stories/Demarrer/Introduction.stories.ts +3 -3
- package/src/stories/Demarrer/Releases.mdx +8 -0
- package/src/stories/Demarrer/Releases.stories.ts +66 -0
- package/src/stories/DesignTokens/Conteneurs.stories.ts +3 -3
- package/src/stories/DesignTokens/ThemePA.mdx +4 -30
- package/src/stories/GuideDuDev/LesBreackingChanges.mdx +36 -0
- package/src/stories/GuideDuDev/UtiliserLesRules.mdx +321 -78
- package/src/stories/GuideDuDev/moduleDeNotification.mdx +1 -1
- package/src/utils/formatDate/index.ts +6 -0
- package/src/utils/formatDate/tests/formatDate.spec.ts +18 -0
- package/src/utils/functions/validation/isDateAfter/index.ts +9 -0
- package/src/utils/functions/validation/isDateAfter/tests/isDateAfter.spec.ts +18 -0
- package/src/utils/functions/validation/isDateBefore/index.ts +9 -0
- package/src/utils/functions/validation/isDateBefore/tests/isDateBefore.spec.ts +23 -0
- package/src/utils/functions/validation/isDateInRange/index.ts +22 -0
- package/src/utils/functions/validation/isDateInRange/tests/isDateInRange.spec.ts +28 -0
- package/src/utils/functions/validation/isDateValid/index.ts +67 -0
- package/src/utils/functions/validation/isDateValid/tests/isDateValid.spec.ts +46 -0
- package/src/utils/functions/validation/isEmailValid/index.ts +9 -0
- package/src/utils/functions/validation/isWeekend/index.ts +10 -0
- package/src/utils/functions/validation/isWeekend/tests/isWeekend.spec.ts +16 -0
- package/src/utils/parseDate/index.ts +29 -0
- package/src/utils/parseDate/tests/parseDate.spec.ts +52 -0
- package/src/utils/rules/Rules.mdx +16 -0
- package/src/utils/rules/doMatchPattern/DoMachPattern.mdx +66 -0
- package/src/utils/rules/doMatchPattern/DoMatchPattern.stories.ts +106 -0
- package/src/utils/rules/doMatchPattern/index.ts +28 -0
- package/src/utils/rules/doMatchPattern/locales.ts +5 -0
- package/src/utils/rules/doMatchPattern/tests/matchPattern.spec.ts +38 -0
- package/src/utils/rules/index.ts +11 -0
- package/src/utils/rules/isDateValid/IsDateValid.mdx +87 -0
- package/src/utils/rules/isDateValid/IsDateValid.stories.ts +113 -0
- package/src/utils/rules/isDateValid/index.ts +32 -0
- package/src/utils/rules/isDateValid/locales.ts +10 -0
- package/src/utils/rules/isDateValid/tests/isDateValid.spec.ts +27 -0
- package/src/utils/rules/isExactLength/IsExactLenght.mdx +68 -0
- package/src/utils/rules/isExactLength/IsExactLength.stories.ts +151 -0
- package/src/utils/rules/{exactLength → isExactLength}/index.ts +2 -4
- package/src/utils/rules/isExactLength/tests/exactLength.spec.ts +48 -0
- package/src/utils/rules/isMaxLength/IsMaxLength.mdx +68 -0
- package/src/utils/rules/isMaxLength/IsMaxLength.stories.ts +152 -0
- package/src/utils/rules/isMaxLength/index.ts +30 -0
- package/src/utils/rules/isMaxLength/locales.ts +6 -0
- package/src/utils/rules/isMaxLength/tests/isMaxLength.spec.ts +42 -0
- package/src/utils/rules/isMinLength/IsMinLength.mdx +68 -0
- package/src/utils/rules/isMinLength/IsMinLength.stories.ts +152 -0
- package/src/utils/rules/isMinLength/index.ts +30 -0
- package/src/utils/rules/isMinLength/locales.ts +6 -0
- package/src/utils/rules/isMinLength/tests/isMinLength.spec.ts +42 -0
- package/src/utils/rules/isNotAfterDate/IsNotAfterDate.mdx +68 -0
- package/src/utils/rules/isNotAfterDate/IsNotAfterDate.stories.ts +109 -0
- package/src/utils/rules/isNotAfterDate/index.ts +25 -0
- package/src/utils/rules/isNotAfterDate/locales.ts +6 -0
- package/src/utils/rules/isNotAfterDate/tests/isNotAfterDate.spec.ts +25 -0
- package/src/utils/rules/isNotAfterToday/IsNotAfterToday.mdx +83 -0
- package/src/utils/rules/isNotAfterToday/IsNotAfterToday.stories.ts +110 -0
- package/src/utils/rules/isNotAfterToday/index.ts +28 -0
- package/src/utils/rules/isNotAfterToday/locales.ts +5 -0
- package/src/utils/rules/isNotAfterToday/tests/isNotAfterToday.spec.ts +30 -0
- package/src/utils/rules/isNotBeforeDate/IsNotBeforeDate.mdx +68 -0
- package/src/utils/rules/isNotBeforeDate/IsNotBeforeDate.stories.ts +114 -0
- package/src/utils/rules/isNotBeforeDate/index.ts +25 -0
- package/src/utils/rules/isNotBeforeDate/locales.ts +6 -0
- package/src/utils/rules/isNotBeforeDate/tests/IsNotBeforeDate.spec.ts +25 -0
- package/src/utils/rules/isNotBeforeToday/IsNotBeforeToday.mdx +83 -0
- package/src/utils/rules/isNotBeforeToday/IsNotBeforeToday.stories.ts +110 -0
- package/src/utils/rules/isNotBeforeToday/index.ts +28 -0
- package/src/utils/rules/isNotBeforeToday/locales.ts +5 -0
- package/src/utils/rules/isNotBeforeToday/tests/notBeforeToday.spec.ts +36 -0
- package/src/utils/rules/isRequired/IsRequired.mdx +81 -0
- package/src/utils/rules/isRequired/IsRequired.stories.ts +101 -0
- package/src/utils/rules/{required → isRequired}/index.ts +3 -3
- package/src/utils/rules/{required/tests/index.spec.ts → isRequired/tests/isRequred.spec.ts} +9 -9
- package/src/utils/rules/isValidEmail/IsValidEmail.mdx +81 -0
- package/src/utils/rules/isValidEmail/IsValidEmail.stories.ts +101 -0
- package/src/utils/rules/{email → isValidEmail}/index.ts +3 -5
- package/src/utils/rules/{email/tests/email.spec.ts → isValidEmail/tests/isValidEmail.spec.ts} +5 -5
- package/src/vuetifyConfig.ts +61 -0
- package/dist/src/utils/rules/email/index.d.ts +0 -4
- package/dist/src/utils/rules/exactLength/index.d.ts +0 -4
- package/dist/src/utils/rules/required/index.d.ts +0 -4
- package/dist/src/utils/rules/required/ruleMessageHelper.d.ts +0 -3
- package/src/components/Customs/SyTextField/tests/__snapshots__/SyTextField.spec.ts.snap +0 -58
- package/src/composables/useFilterable/__snapshots__/useFilterable.spec.ts.snap +0 -3
- package/src/utils/functions/isEmailValid/index.ts +0 -8
- package/src/utils/rules/required/ruleMessageHelper.ts +0 -14
- package/src/utils/rules/required/tests/rulesMessageHelper.spec.ts +0 -22
- /package/dist/src/{utils/functions/isEmailValid/tests/isEmailValid.spec.d.ts → components/FilterSideBar/tests/FilterSideBar.spec.d.ts} +0 -0
- /package/dist/src/{utils/rules/email/tests/email.spec.d.ts → components/NirField/tests/config.spec.d.ts} +0 -0
- /package/dist/src/{utils/rules/required/tests/index.spec.d.ts → components/UploadWorkflow/tests/UploadWorkflow.spec.d.ts} +0 -0
- /package/dist/src/{utils/rules/required/tests/rulesMessageHelper.spec.d.ts → components/Usages/tests/Usages.spec.d.ts} +0 -0
- /package/dist/src/utils/functions/{isEmailValid → validation/isEmailValid}/index.d.ts +0 -0
- /package/dist/src/utils/rules/{exactLength → doMatchPattern}/locales.d.ts +0 -0
- /package/dist/src/utils/rules/{email → isDateValid}/locales.d.ts +0 -0
- /package/dist/src/utils/rules/{required → isNotAfterDate}/locales.d.ts +0 -0
- /package/src/utils/functions/{isEmailValid → validation/isEmailValid}/tests/isEmailValid.spec.ts +0 -0
- /package/src/utils/rules/{exactLength → isExactLength}/locales.ts +0 -0
- /package/src/utils/rules/{required → isRequired}/locales.ts +0 -0
- /package/src/utils/rules/{email → isValidEmail}/locales.ts +0 -0
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/vue3'
|
|
2
|
+
import { VTextField } from 'vuetify/components'
|
|
3
|
+
import { isMinLengthFn } from './index'
|
|
4
|
+
|
|
5
|
+
export default {
|
|
6
|
+
title: 'Guide du dev/Règles De Validation/isMinLength',
|
|
7
|
+
component: isMinLengthFn,
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const Default: StoryObj<unknown> = {
|
|
11
|
+
render: () => {
|
|
12
|
+
return {
|
|
13
|
+
components: { VTextField },
|
|
14
|
+
setup() {
|
|
15
|
+
const min5 = isMinLengthFn(5)
|
|
16
|
+
return { min5 }
|
|
17
|
+
},
|
|
18
|
+
template: `
|
|
19
|
+
<VTextField
|
|
20
|
+
:rules="[min5]"
|
|
21
|
+
label="Min 5 caractères"
|
|
22
|
+
variant="outlined"
|
|
23
|
+
/>
|
|
24
|
+
`,
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
parameters: {
|
|
28
|
+
sourceCode: [
|
|
29
|
+
{
|
|
30
|
+
name: 'Script',
|
|
31
|
+
code: `
|
|
32
|
+
<script setup lang="ts">
|
|
33
|
+
import { VTextField } from 'vuetify/components'
|
|
34
|
+
import { isMinLengthFn } from '@cnamts/synapse'
|
|
35
|
+
|
|
36
|
+
const min5 = isMinLengthFn(5)
|
|
37
|
+
</script>
|
|
38
|
+
`,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: 'Template',
|
|
42
|
+
code: `
|
|
43
|
+
<template>
|
|
44
|
+
<VTextField
|
|
45
|
+
:rules="[min5]"
|
|
46
|
+
label="Min 5 caractères"
|
|
47
|
+
variant="outlined"
|
|
48
|
+
/>
|
|
49
|
+
</template>
|
|
50
|
+
`,
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export const ignoreSpaces: StoryObj<unknown> = {
|
|
57
|
+
render: () => {
|
|
58
|
+
return {
|
|
59
|
+
components: { VTextField },
|
|
60
|
+
setup() {
|
|
61
|
+
const min5 = isMinLengthFn(5, true)
|
|
62
|
+
return { min5 }
|
|
63
|
+
},
|
|
64
|
+
template: `
|
|
65
|
+
<VTextField
|
|
66
|
+
:rules="[min5]"
|
|
67
|
+
label="Min 5 caractères, ignore les espaces"
|
|
68
|
+
variant="outlined"
|
|
69
|
+
/>
|
|
70
|
+
`,
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
parameters: {
|
|
74
|
+
sourceCode: [
|
|
75
|
+
{
|
|
76
|
+
name: 'Script',
|
|
77
|
+
code: `
|
|
78
|
+
<script setup lang="ts">
|
|
79
|
+
import { VTextField } from 'vuetify/components'
|
|
80
|
+
import { isMinLengthFn } from '@cnamts/synapse'
|
|
81
|
+
|
|
82
|
+
const min5 = isMinLengthFn(5, true)
|
|
83
|
+
</script>
|
|
84
|
+
`,
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: 'Template',
|
|
88
|
+
code: `
|
|
89
|
+
<template>
|
|
90
|
+
<VTextField
|
|
91
|
+
:rules="[min5]"
|
|
92
|
+
label="Min 5 caractères, ignore les espaces"
|
|
93
|
+
variant="outlined"
|
|
94
|
+
/>
|
|
95
|
+
</template>
|
|
96
|
+
`,
|
|
97
|
+
},
|
|
98
|
+
],
|
|
99
|
+
},
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
export const CustomMessage: StoryObj<unknown> = {
|
|
103
|
+
render: () => {
|
|
104
|
+
return {
|
|
105
|
+
components: { VTextField },
|
|
106
|
+
setup() {
|
|
107
|
+
const messages = {
|
|
108
|
+
default: min => `The text entered is too short, it must be ${min} characters or more`,
|
|
109
|
+
}
|
|
110
|
+
const min5 = isMinLengthFn(5, false, messages)
|
|
111
|
+
return { min5 }
|
|
112
|
+
},
|
|
113
|
+
template: `
|
|
114
|
+
<VTextField
|
|
115
|
+
:rules="[min5]"
|
|
116
|
+
label="Min 5 characters"
|
|
117
|
+
variant="outlined"
|
|
118
|
+
/>
|
|
119
|
+
`,
|
|
120
|
+
}
|
|
121
|
+
},
|
|
122
|
+
parameters: {
|
|
123
|
+
sourceCode: [
|
|
124
|
+
{
|
|
125
|
+
name: 'Script',
|
|
126
|
+
code: `
|
|
127
|
+
<script setup lang="ts">
|
|
128
|
+
import { VTextField } from 'vuetify/components'
|
|
129
|
+
import { isMinLengthFn } from '@cnamts/synapse'
|
|
130
|
+
|
|
131
|
+
const messages = {
|
|
132
|
+
default: min => \`The text entered is too long, it must be \${min} characters or less\`,
|
|
133
|
+
}
|
|
134
|
+
const min5 = isMinLengthFn(5, false, messages)
|
|
135
|
+
</script>
|
|
136
|
+
`,
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
name: 'Template',
|
|
140
|
+
code: `
|
|
141
|
+
<template>
|
|
142
|
+
<VTextField
|
|
143
|
+
:rules="[min5]"
|
|
144
|
+
label="Min 5 characters"
|
|
145
|
+
variant="outlined"
|
|
146
|
+
/>
|
|
147
|
+
</template>
|
|
148
|
+
`,
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
},
|
|
152
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { ruleMessage } from '@/utils/ruleMessage'
|
|
2
|
+
import type {
|
|
3
|
+
ValidationRule,
|
|
4
|
+
ValidationResult,
|
|
5
|
+
ErrorMessages,
|
|
6
|
+
Value,
|
|
7
|
+
} from '../types'
|
|
8
|
+
|
|
9
|
+
import { defaultErrorMessages } from './locales'
|
|
10
|
+
|
|
11
|
+
/** Check that the value is not shorter than the specified length */
|
|
12
|
+
export function isMinLengthFn(
|
|
13
|
+
min: number,
|
|
14
|
+
ignoreSpaces = false,
|
|
15
|
+
errorMessages: ErrorMessages<number> = defaultErrorMessages,
|
|
16
|
+
): ValidationRule {
|
|
17
|
+
return (value: Value): ValidationResult => {
|
|
18
|
+
if (!value) {
|
|
19
|
+
return true
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (ignoreSpaces) {
|
|
23
|
+
value = value.replace(/\s/g, '')
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
return (
|
|
27
|
+
value.length >= min || ruleMessage(errorMessages, 'default', [min])
|
|
28
|
+
)
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { isMinLengthFn } from '..'
|
|
2
|
+
import { describe, it, expect } from 'vitest'
|
|
3
|
+
|
|
4
|
+
describe('isMinLengthFn', () => {
|
|
5
|
+
it('returns an error when the value is shorter than minimum', () => {
|
|
6
|
+
const rule = isMinLengthFn(10)
|
|
7
|
+
|
|
8
|
+
expect(typeof rule('0')).toBe('string')
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
it('returns true when the value is longer than the minimum', () => {
|
|
12
|
+
const rule = isMinLengthFn(10)
|
|
13
|
+
|
|
14
|
+
expect(rule('012345678910')).toBe(true)
|
|
15
|
+
})
|
|
16
|
+
|
|
17
|
+
it('returns true when the value equals the maximum', () => {
|
|
18
|
+
const rule = isMinLengthFn(10)
|
|
19
|
+
|
|
20
|
+
expect(rule('0123456789')).toBe(true)
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
it('returns true when the value is longer than the maximum without counting spaces', () => {
|
|
24
|
+
const rule = isMinLengthFn(10, true)
|
|
25
|
+
|
|
26
|
+
expect(rule('0 1 2 3 4 5 6 7 8 9 10')).toBe(true)
|
|
27
|
+
})
|
|
28
|
+
|
|
29
|
+
it('returns true if the value is falsy', () => {
|
|
30
|
+
const rule = isMinLengthFn(10)
|
|
31
|
+
|
|
32
|
+
expect(rule('')).toBe(true)
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
it('works with custom error messages', () => {
|
|
36
|
+
const rule = isMinLengthFn(10, false, {
|
|
37
|
+
default: 'test',
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
expect(rule('0')).toBe('test')
|
|
41
|
+
})
|
|
42
|
+
})
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Meta, Canvas, Source } from '@storybook/blocks';
|
|
2
|
+
import * as IsNotAfterDateStories from './IsNotAfterDate.stories';
|
|
3
|
+
|
|
4
|
+
<Meta of={IsNotAfterDateStories} />
|
|
5
|
+
|
|
6
|
+
# Règle de validation `isNotAfterDate`
|
|
7
|
+
|
|
8
|
+
La règle de validation `isNotAfterDate` permet de vérifier qu'une date n'est pas postérieure à une date de référence.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
Pour utiliser cette règle de validation, vous devez importer la fonction d'ordre supérieur `isNotAfterDateFn` depuis le package `@cnamts/synapse`.
|
|
13
|
+
|
|
14
|
+
<Source dark code={`
|
|
15
|
+
import { isNotAfterDateFn } from '@cnamts/synapse';
|
|
16
|
+
`} />
|
|
17
|
+
|
|
18
|
+
Vous devez ensuite faire appel à cette fonction en lui passant en paramètre la date de référence.
|
|
19
|
+
|
|
20
|
+
<Source dark code={`
|
|
21
|
+
const notAfterToday = isNotAfterDateFn('01/01/2022');
|
|
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 { isNotAfterDateFn } from '@cnamts/synapse';
|
|
29
|
+
import { VTextField } from 'vuetify/components';
|
|
30
|
+
|
|
31
|
+
const notAfter = isNotAfterDateFn('01/01/2022');
|
|
32
|
+
|
|
33
|
+
</script>
|
|
34
|
+
|
|
35
|
+
<template>
|
|
36
|
+
<VTextField
|
|
37
|
+
:rules="[notAfter]"
|
|
38
|
+
label="Date"
|
|
39
|
+
/>
|
|
40
|
+
</template>
|
|
41
|
+
`} />
|
|
42
|
+
|
|
43
|
+
## API
|
|
44
|
+
|
|
45
|
+
<Source dark code={`
|
|
46
|
+
|
|
47
|
+
isNotAfterDateFn(
|
|
48
|
+
date: string,
|
|
49
|
+
errorMessages?: {
|
|
50
|
+
default: (date: string) => string;
|
|
51
|
+
}
|
|
52
|
+
): (value: string) => true | string;
|
|
53
|
+
|
|
54
|
+
`} />
|
|
55
|
+
|
|
56
|
+
### Arguments
|
|
57
|
+
|
|
58
|
+
- `date` : chaîne de caractères représentant la date de référence. La date doit être au format `JJ/MM/AAAA`.
|
|
59
|
+
- `errorMessages` : objet optionnel permettant de personnaliser les messages d'erreur. Les clés disponibles sont :
|
|
60
|
+
- `default` : message d'erreur par défaut. Vous pouvez utiliser la variable `{{ date }}` pour afficher la date de référence.
|
|
61
|
+
|
|
62
|
+
### Valeurs de retour
|
|
63
|
+
|
|
64
|
+
Retourne une fonction de validation qui vérifie si la date passée en paramètre n'est pas postérieure à la date de référence.
|
|
65
|
+
|
|
66
|
+
## Exemples
|
|
67
|
+
|
|
68
|
+
<Canvas of={IsNotAfterDateStories.Default} />
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/vue3'
|
|
2
|
+
import { VTextField } from 'vuetify/components'
|
|
3
|
+
import { isNotAfterDateFn } from './index'
|
|
4
|
+
import { ref } from 'vue'
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
title: 'Guide du dev/Règles De Validation/isNotAfterDate',
|
|
8
|
+
component: isNotAfterDateFn,
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const Default: StoryObj<unknown> = {
|
|
12
|
+
render: () => {
|
|
13
|
+
return {
|
|
14
|
+
components: { VTextField },
|
|
15
|
+
setup() {
|
|
16
|
+
const date = isNotAfterDateFn('01/01/2022')
|
|
17
|
+
const model = ref('12/12/2023')
|
|
18
|
+
|
|
19
|
+
return { date, model }
|
|
20
|
+
},
|
|
21
|
+
template: `
|
|
22
|
+
<VTextField
|
|
23
|
+
v-model="model"
|
|
24
|
+
:rules="[date]"
|
|
25
|
+
label="Date"
|
|
26
|
+
variant="outlined"
|
|
27
|
+
validate-on="eager blur"
|
|
28
|
+
/>
|
|
29
|
+
`,
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
parameters: {
|
|
33
|
+
sourceCode: [
|
|
34
|
+
{
|
|
35
|
+
name: 'Script',
|
|
36
|
+
code: `
|
|
37
|
+
<script setup lang="ts">
|
|
38
|
+
import { VTextField } from 'vuetify/components'
|
|
39
|
+
import { isNotAfterDateFn } from '@cnamts/synapse'
|
|
40
|
+
|
|
41
|
+
const date = isNotAfterDateFn('01/01/2022')
|
|
42
|
+
</script>
|
|
43
|
+
`,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'Template',
|
|
47
|
+
code: `
|
|
48
|
+
<template>
|
|
49
|
+
<VTextField
|
|
50
|
+
:rules="[date]"
|
|
51
|
+
label="Date"
|
|
52
|
+
variant="outlined"
|
|
53
|
+
/>
|
|
54
|
+
</template>
|
|
55
|
+
`,
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
export const CustomMessage: StoryObj<unknown> = {
|
|
62
|
+
render: () => {
|
|
63
|
+
return {
|
|
64
|
+
components: { VTextField },
|
|
65
|
+
setup() {
|
|
66
|
+
const date = isNotAfterDateFn('01/01/2022', {
|
|
67
|
+
default: (date: string) => `The date must not be after ${date}`,
|
|
68
|
+
})
|
|
69
|
+
return { date }
|
|
70
|
+
},
|
|
71
|
+
template: `
|
|
72
|
+
<VTextField
|
|
73
|
+
:rules="[date]"
|
|
74
|
+
label="Date"
|
|
75
|
+
variant="outlined"
|
|
76
|
+
/>
|
|
77
|
+
`,
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
parameters: {
|
|
81
|
+
sourceCode: [
|
|
82
|
+
{
|
|
83
|
+
name: 'Script',
|
|
84
|
+
code: `
|
|
85
|
+
<script setup lang="ts">
|
|
86
|
+
import { VTextField } from 'vuetify/components'
|
|
87
|
+
import { isNotAfterDateFn } from '@cnamts/synapse'
|
|
88
|
+
|
|
89
|
+
const date = isNotAfterDateFn('01/01/2022', {
|
|
90
|
+
default: (date: string) => \`The date must not be after \${date}\`,
|
|
91
|
+
})
|
|
92
|
+
</script>
|
|
93
|
+
`,
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: 'Template',
|
|
97
|
+
code: `
|
|
98
|
+
<template>
|
|
99
|
+
<VTextField
|
|
100
|
+
:rules="[date]"
|
|
101
|
+
label="Date"
|
|
102
|
+
variant="outlined"
|
|
103
|
+
/>
|
|
104
|
+
</template>
|
|
105
|
+
`,
|
|
106
|
+
},
|
|
107
|
+
],
|
|
108
|
+
},
|
|
109
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { formatDate } from '@/utils/formatDate'
|
|
2
|
+
import { parseDate } from '@/utils/parseDate'
|
|
3
|
+
import { ruleMessage } from '@/utils/ruleMessage'
|
|
4
|
+
import { isDateAfter } from '../../functions/validation/isDateAfter'
|
|
5
|
+
import type { ValidationResult, ValidationRule, Value } from '../types'
|
|
6
|
+
import { defaultErrorMessages } from './locales'
|
|
7
|
+
|
|
8
|
+
/** Check that the value is not after the specified date (DD/MM/YYYY format) */
|
|
9
|
+
export function isNotAfterDateFn(
|
|
10
|
+
date: string,
|
|
11
|
+
errorMessages = defaultErrorMessages,
|
|
12
|
+
): ValidationRule {
|
|
13
|
+
return (value: Value): ValidationResult => {
|
|
14
|
+
if (!value) {
|
|
15
|
+
return true
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const formattedValue = formatDate(parseDate(date))
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
!isDateAfter(date, value)
|
|
22
|
+
|| ruleMessage(errorMessages, 'default', [formattedValue])
|
|
23
|
+
)
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { isNotAfterDateFn } from '..'
|
|
2
|
+
import { describe, it, expect } from 'vitest'
|
|
3
|
+
|
|
4
|
+
import dayjs from 'dayjs'
|
|
5
|
+
import { formatDate } from '@/utils/formatDate'
|
|
6
|
+
|
|
7
|
+
describe('notAfterDate', () => {
|
|
8
|
+
const currentDate = formatDate(dayjs())
|
|
9
|
+
const pastDate = formatDate(dayjs().subtract(1, 'year'))
|
|
10
|
+
const futureDate = formatDate(dayjs().add(1, 'year'))
|
|
11
|
+
|
|
12
|
+
const rule = isNotAfterDateFn(currentDate)
|
|
13
|
+
|
|
14
|
+
it('returns true with a past date', () => {
|
|
15
|
+
expect(rule(pastDate)).toBe(true)
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
it('returns an error with a future date', () => {
|
|
19
|
+
expect(typeof rule(futureDate)).toBe('string')
|
|
20
|
+
})
|
|
21
|
+
|
|
22
|
+
it('returns true if the value is falsy', () => {
|
|
23
|
+
expect(rule('')).toBe(true)
|
|
24
|
+
})
|
|
25
|
+
})
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Meta, Canvas, Source } from '@storybook/blocks';
|
|
2
|
+
import * as IsNotAfterTodayStories from './IsNotAfterToday.stories';
|
|
3
|
+
|
|
4
|
+
<Meta of={IsNotAfterTodayStories} />
|
|
5
|
+
|
|
6
|
+
# Règle de validation `isNotAfterToday`
|
|
7
|
+
|
|
8
|
+
La règle de validation `isNotAfterToday` permet de vérifier qu'une date n'est pas postérieure à la date du jour.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
Pour utiliser cette règle de validation, vous devez importer la règle `isNotAfterToday` depuis le package `@cnamts/synapse`.
|
|
13
|
+
|
|
14
|
+
<Source dark code={`
|
|
15
|
+
import { isNotAfterToday } from '@cnamts/synapse';
|
|
16
|
+
`} />
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
Vous pouvez ensuite utiliser la fonction comme règle d'un champs de formulaire.
|
|
20
|
+
|
|
21
|
+
<Source dark code={`
|
|
22
|
+
<script setup lang="ts">
|
|
23
|
+
import { isNotAfterToday } from '@cnamts/synapse';
|
|
24
|
+
import { VTextField } from 'vuetify/components';
|
|
25
|
+
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<template>
|
|
29
|
+
<VTextField
|
|
30
|
+
:rules="[isNotAfterToday]"
|
|
31
|
+
label="Date"
|
|
32
|
+
/>
|
|
33
|
+
</template>
|
|
34
|
+
`} />
|
|
35
|
+
|
|
36
|
+
## Customisation des messages d'erreur
|
|
37
|
+
|
|
38
|
+
Vous pouvez personnaliser les messages d'erreur en passant un objet `errorMessages` en paramètre de la fonction `isNotAfterTodayFn`.
|
|
39
|
+
Puis en utilisant la fonction retournée comme règle d'un champs de formulaire.
|
|
40
|
+
|
|
41
|
+
<Source dark code={`
|
|
42
|
+
<script setup lang="ts">
|
|
43
|
+
import { isNotAfterTodayFn } from '@cnamts/synapse';
|
|
44
|
+
import { VTextField } from 'vuetify/components';
|
|
45
|
+
|
|
46
|
+
const notAfterToday = isNotAfterTodayFn({
|
|
47
|
+
default: \`The date must not be after today\`,
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
</script>
|
|
51
|
+
|
|
52
|
+
<template>
|
|
53
|
+
<VTextField
|
|
54
|
+
:rules="[notAfterToday]"
|
|
55
|
+
label="Date"
|
|
56
|
+
/>
|
|
57
|
+
</template>
|
|
58
|
+
`} />
|
|
59
|
+
|
|
60
|
+
## API
|
|
61
|
+
|
|
62
|
+
<Source dark code={`
|
|
63
|
+
|
|
64
|
+
isNotAfterTodayFn(
|
|
65
|
+
errorMessages?: {
|
|
66
|
+
default: string;
|
|
67
|
+
}
|
|
68
|
+
): (value: string) => true | string;
|
|
69
|
+
|
|
70
|
+
`} />
|
|
71
|
+
|
|
72
|
+
### Arguments
|
|
73
|
+
|
|
74
|
+
- `errorMessages` : objet optionnel permettant de personnaliser les messages d'erreur. Les clés disponibles sont :
|
|
75
|
+
- `default` : message d'erreur par défaut.
|
|
76
|
+
|
|
77
|
+
### Valeurs de retour
|
|
78
|
+
|
|
79
|
+
Retourne une fonction qui prend en paramètre une chaîne de caractères représentant une date et retourne `true` si la date n'est pas postérieure à la date du jour, sinon retourne un message d'erreur.
|
|
80
|
+
|
|
81
|
+
## Exemples
|
|
82
|
+
|
|
83
|
+
<Canvas of={IsNotAfterTodayStories.Default} />
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/vue3'
|
|
2
|
+
import { VTextField } from 'vuetify/components'
|
|
3
|
+
import { isNotAfterToday, isNotAfterTodayFn } from './index'
|
|
4
|
+
import { ref } from 'vue'
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
title: 'Guide du dev/Règles De Validation/isNotAfterToday',
|
|
8
|
+
component: isNotAfterTodayFn,
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const Default: StoryObj<unknown> = {
|
|
12
|
+
render: () => {
|
|
13
|
+
return {
|
|
14
|
+
components: { VTextField },
|
|
15
|
+
setup() {
|
|
16
|
+
const model = ref('12/12/2050')
|
|
17
|
+
|
|
18
|
+
return { model, isNotAfterToday }
|
|
19
|
+
},
|
|
20
|
+
template: `
|
|
21
|
+
<VTextField
|
|
22
|
+
v-model="model"
|
|
23
|
+
:rules="[isNotAfterToday]"
|
|
24
|
+
label="Date"
|
|
25
|
+
variant="outlined"
|
|
26
|
+
validate-on="eager blur"
|
|
27
|
+
/>
|
|
28
|
+
`,
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
parameters: {
|
|
32
|
+
sourceCode: [
|
|
33
|
+
{
|
|
34
|
+
name: 'Script',
|
|
35
|
+
code: `
|
|
36
|
+
<script setup lang="ts">
|
|
37
|
+
import { VTextField } from 'vuetify/components'
|
|
38
|
+
import { isNotAfterToday } from '@cnamts/synapse'
|
|
39
|
+
</script>
|
|
40
|
+
`,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Template',
|
|
44
|
+
code: `
|
|
45
|
+
<template>
|
|
46
|
+
<VTextField
|
|
47
|
+
:rules="[isNotAfterToday]"
|
|
48
|
+
label="Date"
|
|
49
|
+
variant="outlined"
|
|
50
|
+
/>
|
|
51
|
+
</template>
|
|
52
|
+
`,
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export const CustomMessage: StoryObj<unknown> = {
|
|
59
|
+
render: () => {
|
|
60
|
+
return {
|
|
61
|
+
components: { VTextField },
|
|
62
|
+
setup() {
|
|
63
|
+
const messages = {
|
|
64
|
+
default: 'The date must not be after today.',
|
|
65
|
+
}
|
|
66
|
+
const dateRule = isNotAfterTodayFn(messages)
|
|
67
|
+
|
|
68
|
+
return { dateRule }
|
|
69
|
+
},
|
|
70
|
+
template: `
|
|
71
|
+
<VTextField
|
|
72
|
+
:rules="[dateRule]"
|
|
73
|
+
label="Date"
|
|
74
|
+
variant="outlined"
|
|
75
|
+
validate-on="eager blur"
|
|
76
|
+
/>
|
|
77
|
+
`,
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
parameters: {
|
|
81
|
+
sourceCode: [
|
|
82
|
+
{
|
|
83
|
+
name: 'Script',
|
|
84
|
+
code: `
|
|
85
|
+
<script setup lang="ts">
|
|
86
|
+
import { VTextField } from 'vuetify/components'
|
|
87
|
+
import { isNotAfterTodayFn } from '@cnamts/synapse'
|
|
88
|
+
|
|
89
|
+
const messages = {
|
|
90
|
+
default: 'The date must not be after today.',
|
|
91
|
+
}
|
|
92
|
+
const dateRule = isNotAfterTodayFn(messages)
|
|
93
|
+
</script>
|
|
94
|
+
`,
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: 'Template',
|
|
98
|
+
code: `
|
|
99
|
+
<template>
|
|
100
|
+
<VTextField
|
|
101
|
+
:rules="[dateRule]"
|
|
102
|
+
label="Date"
|
|
103
|
+
variant="outlined"
|
|
104
|
+
/>
|
|
105
|
+
</template>
|
|
106
|
+
`,
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
},
|
|
110
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { formatDate } from '@/utils/formatDate'
|
|
2
|
+
import { ruleMessage } from '@/utils/ruleMessage'
|
|
3
|
+
import dayjs from 'dayjs'
|
|
4
|
+
import { isDateAfter } from '../../functions/validation/isDateAfter'
|
|
5
|
+
import type {
|
|
6
|
+
ErrorMessages,
|
|
7
|
+
ValidationResult,
|
|
8
|
+
ValidationRule,
|
|
9
|
+
Value,
|
|
10
|
+
} from '../types'
|
|
11
|
+
import { defaultErrorMessages } from './locales'
|
|
12
|
+
|
|
13
|
+
/** Check that the value is not after today (DD/MM/YYYY format) */
|
|
14
|
+
export function isNotAfterTodayFn(
|
|
15
|
+
errorMessages: ErrorMessages = defaultErrorMessages,
|
|
16
|
+
): ValidationRule {
|
|
17
|
+
return (value: Value): ValidationResult => {
|
|
18
|
+
if (!value) {
|
|
19
|
+
return true
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
!isDateAfter(formatDate(dayjs()), value) || ruleMessage(errorMessages, 'default')
|
|
24
|
+
)
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export const isNotAfterToday = isNotAfterTodayFn()
|