@cnamts/synapse 0.0.12-alpha → 0.0.14-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/{src/components → components}/BackBtn/BackBtn.d.ts +4 -1
- package/dist/components/CookiesSelection/CookiesSelection.d.ts +611 -0
- package/dist/{src/components → components}/CopyBtn/config.d.ts +1 -0
- package/dist/{src/components → components}/Customs/SyInputSelect/SyInputSelect.d.ts +2 -0
- package/dist/components/Customs/SySelect/SySelect.d.ts +1534 -0
- package/dist/{src/components → components}/Customs/SyTextField/SyTextField.d.ts +6 -4
- package/dist/{src/components → components}/DatePicker/DatePicker.d.ts +60 -66
- package/dist/{src/components → components}/DatePicker/DateTextInput.d.ts +47 -50
- package/dist/components/DialogBox/DialogBox.d.ts +274 -0
- package/dist/{src/components → components}/DownloadBtn/DownloadBtn.d.ts +7 -0
- package/dist/components/DownloadBtn/locales.d.ts +3 -0
- package/dist/components/FilterInline/AccessibiliteItems.d.ts +30 -0
- package/dist/{src/components → components}/FilterInline/FilterInline.d.ts +2 -3
- package/dist/{src/components → components}/FilterSideBar/FilterSideBar.d.ts +1 -1
- package/dist/{src/components → components}/FranceConnectBtn/locales.d.ts +1 -0
- package/dist/{src/components → components}/HeaderToolbar/HeaderToolbar.d.ts +5 -1
- package/dist/{src/components → components}/NirField/NirField.d.ts +39 -28
- package/dist/{src/components → components}/NotificationBar/NotificationBar.d.ts +5 -5
- package/dist/{src/components → components}/PasswordField/PasswordField.d.ts +6 -4
- package/dist/{src/components → components}/PeriodField/PeriodField.d.ts +223 -211
- package/dist/{src/components → components}/PhoneField/PhoneField.d.ts +49 -1
- package/dist/components/SyAlert/AccessibiliteItems.d.ts +29 -0
- package/dist/components/TableToolbar/constants/ExpertiseLevelEnum.d.ts +4 -0
- package/dist/components/UploadWorkflow/AccessibiliteItems.d.ts +29 -0
- package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +783 -0
- package/dist/components/UploadWorkflow/constants/ExpertiseLevelEnum.d.ts +4 -0
- package/dist/components/UserMenuBtn/constants/ExpertiseLevelEnum.d.ts +4 -0
- package/dist/{src/components → components}/index.d.ts +4 -0
- package/dist/composables/date/useDateFormat.d.ts +26 -0
- package/dist/composables/date/useDateInitialization.d.ts +18 -0
- package/dist/composables/date/useDatePickerAccessibility.d.ts +9 -0
- package/dist/{src/composables → composables}/useFilterable/useFilterable.d.ts +1 -1
- package/dist/{src/composables → composables}/validation/useValidation.d.ts +1 -0
- package/dist/design-system-v3.js +4959 -3902
- package/dist/design-system-v3.umd.cjs +1 -1
- package/dist/{src/designTokens → designTokens}/tokens/cnam/cnamColors.d.ts +5 -10
- package/dist/{src/designTokens → designTokens}/tokens/cnam/cnamLightTheme.d.ts +0 -2
- package/dist/{src/designTokens → designTokens}/tokens/pa/paColors.d.ts +5 -10
- package/dist/{src/designTokens → designTokens}/tokens/pa/paLightTheme.d.ts +4 -5
- package/dist/{src/main.d.ts → main.d.ts} +1 -0
- package/dist/style.css +1 -1
- package/dist/utils/formatDate/index.d.ts +3 -0
- package/dist/utils/functions/validation/isDateAfter/index.d.ts +2 -0
- package/dist/utils/functions/validation/isDateBefore/index.d.ts +2 -0
- package/dist/utils/functions/validation/isDateInRange/index.d.ts +3 -0
- package/dist/utils/functions/validation/isDateValid/index.d.ts +9 -0
- package/dist/utils/functions/validation/isWeekend/index.d.ts +3 -0
- package/dist/utils/parseDate/index.d.ts +3 -0
- package/dist/utils/rules/doMatchPattern/index.d.ts +3 -0
- package/dist/utils/rules/index.d.ts +11 -0
- package/dist/utils/rules/isDateValid/index.d.ts +4 -0
- package/dist/utils/rules/isExactLength/index.d.ts +3 -0
- package/dist/utils/rules/isExactLength/locales.d.ts +2 -0
- package/dist/utils/rules/isMaxLength/index.d.ts +3 -0
- package/dist/utils/rules/isMaxLength/locales.d.ts +2 -0
- package/dist/utils/rules/isMinLength/index.d.ts +3 -0
- package/dist/utils/rules/isMinLength/locales.d.ts +2 -0
- package/dist/utils/rules/isNotAfterDate/index.d.ts +3 -0
- package/dist/utils/rules/isNotAfterToday/index.d.ts +4 -0
- package/dist/utils/rules/isNotAfterToday/locales.d.ts +2 -0
- package/dist/utils/rules/isNotBeforeDate/index.d.ts +3 -0
- package/dist/utils/rules/isNotBeforeDate/locales.d.ts +2 -0
- package/dist/utils/rules/isNotBeforeToday/index.d.ts +4 -0
- package/dist/utils/rules/isNotBeforeToday/locales.d.ts +2 -0
- package/dist/utils/rules/isRequired/index.d.ts +4 -0
- package/dist/utils/rules/isRequired/locales.d.ts +2 -0
- package/dist/utils/rules/isValidEmail/index.d.ts +4 -0
- package/dist/utils/rules/isValidEmail/locales.d.ts +2 -0
- package/dist/{src/vuetifyConfig.d.ts → vuetifyConfig.d.ts} +1 -0
- package/package.json +10 -7
- package/src/assets/_radius.scss +12 -6
- package/src/assets/settings.scss +8 -0
- package/src/components/BackBtn/BackBtn.stories.ts +34 -6
- package/src/components/BackBtn/BackBtn.vue +17 -8
- package/src/components/BackBtn/tests/BackBtn.spec.ts +2 -2
- package/src/components/BackBtn/tests/__snapshots__/BackBtn.spec.ts.snap +39 -3
- package/src/components/BackToTopBtn/tests/__snapshots__/BackToTopBtn.spec.ts.snap +98 -6
- package/src/components/ChipList/ChipList.stories.ts +26 -27
- package/src/components/ChipList/ChipList.vue +6 -1
- package/src/components/ChipList/config.ts +1 -0
- package/src/components/ContextualMenu/tests/__snapshots__/ContextualMenu.spec.ts.snap +31 -5
- package/src/components/CookieBanner/tests/__snapshots__/CookieBanner.spec.ts.snap +570 -101
- package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +2 -2
- package/src/components/CookiesSelection/CookiesInformation/tests/CookiesInformation.spec.ts +28 -2
- package/src/components/CookiesSelection/CookiesTable/tests/__snapshots__/CookiesTable.spec.ts.snap +13 -1
- package/src/components/CookiesSelection/tests/__snapshots__/CookiesSelection.spec.ts.snap +568 -99
- package/src/components/CopyBtn/CopyBtn.stories.ts +2 -2
- package/src/components/CopyBtn/CopyBtn.vue +28 -22
- package/src/components/CopyBtn/config.ts +2 -1
- package/src/components/CopyBtn/tests/__snapshots__/CopyBtn.spec.ts.snap +28 -3
- package/src/components/Customs/SyBtnSelect/SyBtnSelect.mdx +1 -1
- package/src/components/Customs/SyBtnSelect/SyBtnSelect.vue +6 -5
- package/src/components/Customs/SyBtnSelect/tests/SyBtnSelect.spec.ts +2 -2
- package/src/components/Customs/SyInputSelect/SyInputSelect.mdx +1 -1
- package/src/components/Customs/SyInputSelect/SyInputSelect.stories.ts +3 -0
- package/src/components/Customs/SyInputSelect/SyInputSelect.vue +4 -0
- package/src/components/Customs/SySelect/SySelect.mdx +1 -1
- package/src/components/Customs/SySelect/SySelect.vue +31 -6
- package/src/components/Customs/SyTextField/SyTextField.mdx +2 -2
- package/src/components/Customs/SyTextField/SyTextField.stories.ts +241 -2
- package/src/components/Customs/SyTextField/SyTextField.vue +9 -6
- package/src/components/DataList/DataList.vue +2 -2
- package/src/components/DataList/DataListLoading/DataListLoading.vue +2 -2
- package/src/components/DataList/DataListLoading/tests/DataListLoading.spec.ts +1 -1
- package/src/components/DataList/tests/DataList.spec.ts +10 -10
- package/src/components/DataListGroup/tests/DataListGroup.spec.ts +1 -1
- package/src/components/DataListItem/DataListItem.vue +9 -9
- package/src/components/DataListItem/tests/DataListItem.spec.ts +5 -5
- package/src/components/DatePicker/DatePicker.mdx +1 -1
- package/src/components/DatePicker/DatePicker.stories.ts +187 -15
- package/src/components/DatePicker/DatePicker.vue +161 -355
- package/src/components/DatePicker/DateTextInput.vue +97 -257
- package/src/components/DatePicker/tests/DatePicker.spec.ts +118 -48
- package/src/components/DatePicker/tests/DateTextInput.spec.ts +206 -10
- package/src/components/DialogBox/DialogBox.vue +4 -4
- package/src/components/DialogBox/tests/DialogBox.spec.ts +1 -1
- package/src/components/DialogBox/tests/__snapshots__/DialogBox.spec.ts.snap +158 -19
- package/src/components/DownloadBtn/DownloadBtn.stories.ts +18 -4
- package/src/components/DownloadBtn/DownloadBtn.vue +37 -3
- package/src/components/DownloadBtn/locales.ts +3 -0
- package/src/components/DownloadBtn/tests/__snapshots__/DownloadBtn.spec.ts.snap +77 -6
- package/src/components/ErrorPage/ErrorPage.vue +2 -2
- package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +212 -38
- package/src/components/ExternalLinks/tests/__snapshots__/ExternalLinks.spec.ts.snap +796 -86
- package/src/components/FileList/Accessibilite.stories.ts +1 -1
- package/src/components/FileList/AccessibiliteItems.ts +22 -0
- package/src/components/FilePreview/tests/FilePreview.spec.ts +1 -1
- package/src/components/FilePreview/tests/__snapshots__/FilePreview.spec.ts.snap +27 -5
- package/src/components/FileUpload/FileUpload.stories.ts +9 -7
- 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.stories.ts +308 -2
- package/src/components/FilterInline/FilterInline.vue +3 -3
- package/src/components/FilterInline/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/FilterInline/tests/__snapshots__/FilterInline.spec.ts.snap +235 -21
- 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.vue +1 -1
- package/src/components/FilterSideBar/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/FilterSideBar/tests/__snapshots__/FilterSideBar.spec.ts.snap +144 -15
- package/src/components/FooterBar/tests/__snapshots__/FooterBar.spec.ts.snap +92 -18
- package/src/components/FranceConnectBtn/FranceConnectBtn.vue +18 -21
- package/src/components/FranceConnectBtn/locales.ts +2 -0
- package/src/components/FranceConnectBtn/tests/FranceConnectBtn.spec.ts +1 -1
- package/src/components/FranceConnectBtn/tests/__snapshots__/FranceConnectBtn.spec.ts.snap +235 -26
- package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/tests/__snapshots__/HeaderMenuItem.spec.ts.snap +5 -1
- package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/HeaderBurgerMenu.spec.ts.snap +20 -6
- package/src/components/HeaderBar/tests/__snapshots__/HeaderBar.spec.ts.snap +68 -37
- package/src/components/HeaderToolbar/HeaderToolbar.mdx +1 -1
- package/src/components/HeaderToolbar/HeaderToolbar.vue +346 -117
- package/src/components/HeaderToolbar/tests/{HeaderToolbar.spec.ts → HeaderToolBar.spec.ts} +2 -2
- package/src/components/LangBtn/LangBtn.vue +1 -0
- package/src/components/LangBtn/tests/__snapshots__/LangBtn.spec.ts.snap +41 -3
- package/src/components/LogoBrandSection/tests/__snapshots__/LogoBrandSection.spec.ts.snap +55 -8
- package/src/components/MaintenancePage/tests/__snapshots__/MaintenancePage.spec.ts.snap +10 -1
- package/src/components/NirField/NirField.stories.ts +172 -7
- package/src/components/NirField/NirField.vue +16 -14
- package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +229 -37
- package/src/components/NotificationBar/NotificationBar.mdx +2 -2
- package/src/components/NotificationBar/NotificationBar.stories.ts +59 -11
- 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 +30 -3
- package/src/components/PageContainer/tests/__snapshots__/PageContainer.spec.ts.snap +16 -3
- package/src/components/PaginatedTable/PaginatedTable.vue +6 -10
- package/src/components/PaginatedTable/tests/__snapshots__/PaginatedTable.spec.ts.snap +731 -94
- package/src/components/PasswordField/PasswordField.stories.ts +204 -17
- package/src/components/PasswordField/PasswordField.vue +9 -6
- package/src/components/PeriodField/PeriodField.stories.ts +227 -131
- package/src/components/PeriodField/PeriodField.vue +203 -152
- package/src/components/PeriodField/tests/PeriodField.spec.ts +146 -0
- package/src/components/PhoneField/PhoneField.stories.ts +174 -0
- package/src/components/PhoneField/PhoneField.vue +81 -17
- package/src/components/PhoneField/tests/PhoneField.spec.ts +40 -0
- package/src/components/RangeField/RangeSlider/tests/__snapshots__/rangeSlider.spec.ts.snap +80 -17
- package/src/components/RangeField/tests/__snapshots__/RangeField.spec.ts.snap +981 -162
- package/src/components/RatingPicker/EmotionPicker/tests/__snapshots__/EmotionPicker.spec.ts.snap +634 -25
- package/src/components/RatingPicker/NumberPicker/tests/__snapshots__/NumberPicker.spec.ts.snap +477 -38
- package/src/components/RatingPicker/RatingPicker.stories.ts +7 -7
- package/src/components/RatingPicker/StarsPicker/tests/__snapshots__/StarsPicker.spec.ts.snap +218 -10
- package/src/components/RatingPicker/tests/__snapshots__/RatingPicker.spec.ts.snap +476 -41
- package/src/components/SearchListField/SearchListField.stories.ts +2 -2
- package/src/components/SelectBtnField/SelectBtnField.stories.ts +1 -1
- package/src/components/SelectBtnField/SelectBtnField.vue +11 -15
- package/src/components/SelectBtnField/config.ts +1 -1
- package/src/components/SelectBtnField/tests/__snapshots__/SelectBtnField.spec.ts.snap +881 -65
- package/src/components/SkipLink/tests/__snapshots__/skipLink.spec.ts.snap +15 -1
- package/src/components/SocialMediaLinks/tests/__snapshots__/SocialMediaLinks.spec.ts.snap +110 -16
- package/src/components/SubHeader/SubHeader.stories.ts +1 -1
- package/src/components/SubHeader/tests/SubHeader.spec.ts +1 -1
- package/src/components/SyAlert/tests/__snapshots__/SyAlert.spec.ts.snap +78 -6
- package/src/components/TableToolbar/tests/__snapshots__/TableToolbar.spec.ts.snap +1034 -124
- 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.stories.ts +11 -11
- package/src/components/UploadWorkflow/UploadWorkflow.vue +2 -2
- package/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +328 -29
- package/src/components/Usages/tests/Usages.spec.ts +183 -0
- package/src/components/UserMenuBtn/UserMenuBtn.stories.ts +8 -8
- package/src/components/index.ts +4 -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 +180 -0
- package/src/composables/date/useDateFormat.ts +94 -0
- package/src/composables/date/useDateInitialization.ts +92 -0
- package/src/composables/date/useDatePickerAccessibility.ts +123 -0
- package/src/composables/rules/tests/useFieldValidation.spec.ts +385 -4
- package/src/composables/useFilterable/useFilterable.ts +5 -4
- package/src/composables/validation/useValidation.ts +15 -0
- package/src/designTokens/tokens/cnam/cnamColors.ts +5 -10
- package/src/designTokens/tokens/cnam/cnamLightTheme.ts +0 -2
- package/src/designTokens/tokens/cnam/cnamSemantic.ts +3 -3
- package/src/designTokens/tokens/pa/paColors.ts +5 -10
- package/src/designTokens/tokens/pa/paLightTheme.ts +4 -5
- package/src/designTokens/tokens/pa/paSemantic.ts +3 -3
- 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/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/ColorDisplay.vue +58 -0
- package/src/stories/DesignTokens/Colors.mdx +81 -212
- package/src/stories/DesignTokens/Conteneurs.stories.ts +3 -3
- package/src/stories/DesignTokens/colors.stories.ts +1078 -0
- package/src/stories/GuideDuDev/LesBreackingChanges.mdx +36 -0
- package/src/stories/GuideDuDev/UtiliserLesRules.mdx +32 -10
- 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/dist/src/components/Amelipro/types/languages.d.ts +0 -6
- package/dist/src/components/Amelipro/types/types.d.ts +0 -65
- package/dist/src/components/BackBtn/tests/BackBtn.spec.d.ts +0 -1
- package/dist/src/components/BackToTopBtn/tests/BackToTopBtn.spec.d.ts +0 -1
- package/dist/src/components/ChipList/tests/chipList.spec.d.ts +0 -1
- package/dist/src/components/CollapsibleList/tests/CollapsibleList.spec.d.ts +0 -1
- package/dist/src/components/ContextualMenu/tests/ContextualMenu.spec.d.ts +0 -1
- package/dist/src/components/CookieBanner/tests/CookieBanner.spec.d.ts +0 -1
- package/dist/src/components/CookiesSelection/CookiesInformation/tests/CookiesInformation.spec.d.ts +0 -1
- package/dist/src/components/CookiesSelection/CookiesTable/tests/CookiesTable.spec.d.ts +0 -1
- package/dist/src/components/CookiesSelection/tests/CookiesSelection.spec.d.ts +0 -1
- package/dist/src/components/CopyBtn/tests/CopyBtn.spec.d.ts +0 -1
- package/dist/src/components/Customs/SyBtnSelect/tests/SyBtnSelect.spec.d.ts +0 -1
- package/dist/src/components/Customs/SyInputSelect/tests/SyInputSelect.spec.d.ts +0 -1
- package/dist/src/components/Customs/SySelect/tests/SySelect.spec.d.ts +0 -1
- package/dist/src/components/Customs/SyTextField/tests/SyTextField.spec.d.ts +0 -1
- package/dist/src/components/DataList/DataListLoading/tests/DataListLoading.spec.d.ts +0 -1
- package/dist/src/components/DataList/tests/DataList.spec.d.ts +0 -1
- package/dist/src/components/DataListGroup/tests/DataListGroup.spec.d.ts +0 -1
- package/dist/src/components/DataListItem/tests/DataListItem.spec.d.ts +0 -1
- package/dist/src/components/DatePicker/tests/DatePicker.spec.d.ts +0 -1
- package/dist/src/components/DatePicker/tests/DateTextInput.spec.d.ts +0 -1
- package/dist/src/components/DialogBox/tests/DialogBox.spec.d.ts +0 -1
- package/dist/src/components/DownloadBtn/tests/DownloadBtn.spec.d.ts +0 -1
- package/dist/src/components/ErrorPage/tests/ErrorPage.spec.d.ts +0 -1
- package/dist/src/components/ExternalLinks/tests/ExternalLinks.spec.d.ts +0 -1
- package/dist/src/components/FileList/tests/FileList.spec.d.ts +0 -1
- package/dist/src/components/FilePreview/tests/FilePreview.spec.d.ts +0 -1
- package/dist/src/components/FileUpload/tests/FileUpload.spec.d.ts +0 -1
- package/dist/src/components/FilterInline/tests/FilterInline.spec.d.ts +0 -1
- package/dist/src/components/FilterSideBar/tests/FilterSideBar.spec.d.ts +0 -1
- package/dist/src/components/FooterBar/tests/FooterBar.spec.d.ts +0 -1
- package/dist/src/components/FooterBar/tests/FooterBarConfig.spec.d.ts +0 -1
- package/dist/src/components/FranceConnectBtn/tests/FranceConnectBtn.spec.d.ts +0 -1
- package/dist/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/tests/HeaderMenuItem.spec.d.ts +0 -1
- package/dist/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/tests/HeaderMenuSection.spec.d.ts +0 -1
- package/dist/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/tests/HeaderSubMenu.spec.d.ts +0 -1
- package/dist/src/components/HeaderBar/HeaderBurgerMenu/tests/HeaderBurgerMenu.spec.d.ts +0 -1
- package/dist/src/components/HeaderBar/HeaderBurgerMenu/tests/useHandleSubMenus.spec.d.ts +0 -1
- package/dist/src/components/HeaderBar/HeaderLogo/tests/HeaderLogo.spec.d.ts +0 -1
- package/dist/src/components/HeaderBar/HeaderMenuBtn/tests/HeaderMenuBtn.spec.d.ts +0 -1
- package/dist/src/components/HeaderBar/tests/HeaderBar.spec.d.ts +0 -1
- package/dist/src/components/HeaderBar/tests/useHeaderResponsiveMode.spec.d.ts +0 -1
- package/dist/src/components/HeaderBar/tests/useScrollDirection.spec.d.ts +0 -1
- package/dist/src/components/HeaderLoading/tests/HeaderLoading.spec.d.ts +0 -1
- package/dist/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.spec.d.ts +0 -1
- package/dist/src/components/HeaderToolbar/tests/HeaderToolbar.spec.d.ts +0 -1
- package/dist/src/components/LangBtn/tests/Config.spec.d.ts +0 -1
- package/dist/src/components/LangBtn/tests/LangBtn.spec.d.ts +0 -1
- package/dist/src/components/Logo/tests/Logo.spec.d.ts +0 -1
- package/dist/src/components/LogoBrandSection/tests/LogoBrandSection.spec.d.ts +0 -1
- package/dist/src/components/MaintenancePage/tests/MaintenancePage.spec.d.ts +0 -1
- package/dist/src/components/NirField/config.d.ts +0 -15
- package/dist/src/components/NirField/tests/NirField.spec.d.ts +0 -1
- package/dist/src/components/NotFoundPage/tests/NotFoundPage.spec.d.ts +0 -1
- package/dist/src/components/NotificationBar/tests/NotificationBar.spec.d.ts +0 -1
- package/dist/src/components/PageContainer/tests/PageContainer.spec.d.ts +0 -1
- package/dist/src/components/PaginatedTable/tests/PaginatedTable.spec.d.ts +0 -1
- package/dist/src/components/PasswordField/tests/PasswordField.spec.d.ts +0 -1
- package/dist/src/components/PeriodField/tests/PeriodField.spec.d.ts +0 -1
- package/dist/src/components/PhoneField/tests/PhoneField.spec.d.ts +0 -1
- package/dist/src/components/RangeField/RangeSlider/tests/rangeSlider.spec.d.ts +0 -1
- package/dist/src/components/RangeField/RangeSlider/tests/useDoubleSlider.spec.d.ts +0 -1
- package/dist/src/components/RangeField/RangeSlider/tests/useMouseSlide.spec.d.ts +0 -1
- package/dist/src/components/RangeField/RangeSlider/tests/useThumb.spec.d.ts +0 -1
- package/dist/src/components/RangeField/RangeSlider/tests/useThumbKeyboard.spec.d.ts +0 -1
- package/dist/src/components/RangeField/RangeSlider/tests/useTooltipsNudge.spec.d.ts +0 -1
- package/dist/src/components/RangeField/RangeSlider/tests/useTrack.spec.d.ts +0 -1
- package/dist/src/components/RangeField/RangeSlider/tests/vAnimateClick.spec.d.ts +0 -1
- package/dist/src/components/RangeField/tests/RangeField.spec.d.ts +0 -1
- package/dist/src/components/RatingPicker/EmotionPicker/tests/EmotionPicker.spec.d.ts +0 -1
- package/dist/src/components/RatingPicker/NumberPicker/tests/NumberPicker.spec.d.ts +0 -1
- package/dist/src/components/RatingPicker/StarsPicker/tests/StarsPicker.spec.d.ts +0 -1
- package/dist/src/components/RatingPicker/tests/Rating.spec.d.ts +0 -1
- package/dist/src/components/RatingPicker/tests/RatingPicker.spec.d.ts +0 -1
- package/dist/src/components/SearchListField/tests/SearchListField.spec.d.ts +0 -1
- package/dist/src/components/SelectBtnField/tests/SelectBtnField.spec.d.ts +0 -1
- package/dist/src/components/SkipLink/tests/skipLink.spec.d.ts +0 -1
- package/dist/src/components/SocialMediaLinks/tests/DefaultSocialMediaLinks.spec.d.ts +0 -1
- package/dist/src/components/SocialMediaLinks/tests/SocialMediaLinks.spec.d.ts +0 -1
- package/dist/src/components/SubHeader/tests/SubHeader.spec.d.ts +0 -1
- package/dist/src/components/SyAlert/tests/SyAlert.spec.d.ts +0 -1
- package/dist/src/components/TableToolbar/tests/TableToolbar.spec.d.ts +0 -1
- package/dist/src/components/UploadWorkflow/tests/UploadWorkflow.spec.d.ts +0 -1
- package/dist/src/components/UserMenuBtn/tests/UserMenuBtn.spec.d.ts +0 -1
- package/dist/src/composables/rules/tests/useFieldValidation.spec.d.ts +0 -1
- package/dist/src/composables/useFilterable/useFilterable.spec.d.ts +0 -1
- package/dist/src/composables/validation/tests/useValidation.spec.d.ts +0 -1
- package/dist/src/composables/widthable/tests/widthable.spec.d.ts +0 -1
- package/dist/src/utils/calcHumanFileSize/tests/calcHumanFileSize.spec.d.ts +0 -1
- package/dist/src/utils/convertToUnit/test/convertToUnit.spec.d.ts +0 -1
- package/dist/src/utils/functions/copyToClipboard/tests/copyToClipboard.spec.d.ts +0 -1
- package/dist/src/utils/functions/deepCopy/tests/deepCopy.spec.d.ts +0 -1
- package/dist/src/utils/functions/downloadFile/tests/downloadFile.spec.d.ts +0 -1
- package/dist/src/utils/functions/isEmailValid/tests/isEmailValid.spec.d.ts +0 -1
- package/dist/src/utils/functions/throttleDisplayFn/tests/throttleDisplayFn.spec.d.ts +0 -1
- package/dist/src/utils/localStorageUtility/tests/localStorageUtility.spec.d.ts +0 -1
- package/dist/src/utils/propValidator/tests/propValidator.spec.d.ts +0 -1
- package/dist/src/utils/ruleMessage/tests/ruleMessages.spec.d.ts +0 -1
- package/dist/src/utils/rules/email/index.d.ts +0 -4
- package/dist/src/utils/rules/email/tests/email.spec.d.ts +0 -1
- 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/dist/src/utils/rules/required/tests/index.spec.d.ts +0 -1
- package/dist/src/utils/rules/required/tests/rulesMessageHelper.spec.d.ts +0 -1
- package/src/components/Amelipro/types/languages.d.ts +0 -6
- package/src/components/Amelipro/types/types.d.ts +0 -65
- package/src/components/Customs/SyTextField/tests/__snapshots__/SyTextField.spec.ts.snap +0 -58
- package/src/components/NirField/config.ts +0 -16
- 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/components → components}/BackBtn/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/BackBtn/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/BackBtn/locales.d.ts +0 -0
- /package/dist/{src/components → components}/BackToTopBtn/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/BackToTopBtn/BackToTopBtn.d.ts +0 -0
- /package/dist/{src/components → components}/BackToTopBtn/config.d.ts +0 -0
- /package/dist/{src/components → components}/BackToTopBtn/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/BackToTopBtn/locales.d.ts +0 -0
- /package/dist/{src/components → components}/ChipList/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/ChipList/ChipList.d.ts +0 -0
- /package/dist/{src/components → components}/ChipList/config.d.ts +0 -0
- /package/dist/{src/components → components}/ChipList/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/ChipList/locales.d.ts +0 -0
- /package/dist/{src/components → components}/ChipList/types.d.ts +0 -0
- /package/dist/{src/components → components}/CollapsibleList/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/CollapsibleList/CollapsibleList.d.ts +0 -0
- /package/dist/{src/components → components}/CollapsibleList/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/CollapsibleList/types.d.ts +0 -0
- /package/dist/{src/components → components}/ContextualMenu/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/ContextualMenu/ContextualMenu.d.ts +0 -0
- /package/dist/{src/components → components}/ContextualMenu/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/ContextualMenu/types.d.ts +0 -0
- /package/dist/{src/components → components}/CookieBanner/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/CookieBanner/CookieBanner.d.ts +0 -0
- /package/dist/{src/components → components}/CookieBanner/config.d.ts +0 -0
- /package/dist/{src/components → components}/CookieBanner/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/CookieBanner/locales.d.ts +0 -0
- /package/dist/{src/components → components}/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +0 -0
- /package/dist/{src/components → components}/CookiesSelection/CookiesInformation/locales.d.ts +0 -0
- /package/dist/{src/components → components}/CookiesSelection/CookiesTable/CookiesTable.d.ts +0 -0
- /package/dist/{src/components → components}/CookiesSelection/CookiesTable/headers.d.ts +0 -0
- /package/dist/{src/components → components}/CookiesSelection/locales.d.ts +0 -0
- /package/dist/{src/components → components}/CookiesSelection/types.d.ts +0 -0
- /package/dist/{src/components → components}/CopyBtn/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/CopyBtn/CopyBtn.d.ts +0 -0
- /package/dist/{src/components → components}/CopyBtn/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/CopyBtn/locales.d.ts +0 -0
- /package/dist/{src/components → components}/Customs/SyBtnSelect/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/Customs/SyBtnSelect/SyBtnSelect.d.ts +0 -0
- /package/dist/{src/components → components}/Customs/SyBtnSelect/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/Customs/SyInputSelect/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/Customs/SyInputSelect/config.d.ts +0 -0
- /package/dist/{src/components → components}/Customs/SyInputSelect/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/Customs/SySelect/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/Customs/SySelect/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/Customs/SyTextField/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/Customs/SyTextField/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/Customs/SyTextField/types.d.ts +0 -0
- /package/dist/{src/components → components}/DataList/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/DataList/DataList.d.ts +0 -0
- /package/dist/{src/components → components}/DataList/DataListLoading/DataListLoading.d.ts +0 -0
- /package/dist/{src/components → components}/DataList/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/DataList/locales.d.ts +0 -0
- /package/dist/{src/components → components}/DataList/types.d.ts +0 -0
- /package/dist/{src/components → components}/DataListGroup/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/DataListGroup/DataListGroup.d.ts +0 -0
- /package/dist/{src/components → components}/DataListGroup/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/DataListGroup/tests/data/dataListGroupItems.d.ts +0 -0
- /package/dist/{src/components → components}/DataListGroup/types.d.ts +0 -0
- /package/dist/{src/components → components}/DataListItem/DataListItem.d.ts +0 -0
- /package/dist/{src/components → components}/DataListItem/config.d.ts +0 -0
- /package/dist/{src/components → components}/DataListItem/locales.d.ts +0 -0
- /package/dist/{src/components → components}/DataListItem/types.d.ts +0 -0
- /package/dist/{src/components → components}/DatePicker/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/DatePicker/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/DialogBox/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/DialogBox/config.d.ts +0 -0
- /package/dist/{src/components → components}/DialogBox/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/DialogBox/locales.d.ts +0 -0
- /package/dist/{src/components → components}/DownloadBtn/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/DownloadBtn/config.d.ts +0 -0
- /package/dist/{src/components → components}/DownloadBtn/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/DownloadBtn/tests/data/filePromise.d.ts +0 -0
- /package/dist/{src/components → components}/ErrorPage/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/ErrorPage/ErrorPage.d.ts +0 -0
- /package/dist/{src/components → components}/ErrorPage/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/ErrorPage/locales.d.ts +0 -0
- /package/dist/{src/components → components}/ExternalLinks/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/ExternalLinks/ExternalLinks.d.ts +0 -0
- /package/dist/{src/components → components}/ExternalLinks/config.d.ts +0 -0
- /package/dist/{src/components → components}/ExternalLinks/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/ExternalLinks/locales.d.ts +0 -0
- /package/dist/{src/components → components}/FileList/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/FileList/FileList.d.ts +0 -0
- /package/dist/{src/components → components}/FileList/UploadItem/UploadItem.d.ts +0 -0
- /package/dist/{src/components → components}/FileList/UploadItem/locales.d.ts +0 -0
- /package/dist/{src/components → components}/FileList/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/FilePreview/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/FilePreview/FilePreview.d.ts +0 -0
- /package/dist/{src/components → components}/FilePreview/config.d.ts +0 -0
- /package/dist/{src/components → components}/FilePreview/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/FilePreview/locales.d.ts +0 -0
- /package/dist/{src/components → components}/FileUpload/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/FileUpload/FileUpload.d.ts +0 -0
- /package/dist/{src/components → components}/FileUpload/FileUploadContent.d.ts +0 -0
- /package/dist/{src/components → components}/FileUpload/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/FileUpload/locales.d.ts +0 -0
- /package/dist/{src/components → components}/FileUpload/useFileDrop.d.ts +0 -0
- /package/dist/{src/components → components}/FileUpload/validateFiles.d.ts +0 -0
- /package/dist/{src/components/FooterBar → components/FilterInline}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/FilterInline/locales.d.ts +0 -0
- /package/dist/{src/components/NotificationBar → components/FilterSideBar}/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components/FranceConnectBtn → components/FilterSideBar}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/FilterSideBar/locales.d.ts +0 -0
- /package/dist/{src/components → components}/FooterBar/A11yCompliance.d.ts +0 -0
- /package/dist/{src/components → components}/FooterBar/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/FooterBar/FooterBar.d.ts +0 -0
- /package/dist/{src/components → components}/FooterBar/config.d.ts +0 -0
- /package/dist/{src/components/HeaderBar/HeaderBurgerMenu → components/FooterBar}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/FooterBar/defaultSocialMediaLinks.d.ts +0 -0
- /package/dist/{src/components → components}/FooterBar/locales.d.ts +0 -0
- /package/dist/{src/components → components}/FooterBar/types.d.ts +0 -0
- /package/dist/{src/components → components}/FranceConnectBtn/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/FranceConnectBtn/FranceConnectBtn.d.ts +0 -0
- /package/dist/{src/components/HeaderBar → components/FranceConnectBtn}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderBar.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderBurgerMenu/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.d.ts +0 -0
- /package/dist/{src/components/HeaderLoading → components/HeaderBar/HeaderBurgerMenu}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderBurgerMenu/conts.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderBurgerMenu/locals.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderBurgerMenu/useHandleSubMenus.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderLogo/HeaderLogo.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderLogo/locales.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderLogo/logos/Logo-mobile.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderLogo/logos/Logo.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderMenuBtn/HeaderMenuBtn.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/HeaderMenuBtn/locals.d.ts +0 -0
- /package/dist/{src/components/HeaderToolbar → components/HeaderBar}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/consts.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/locales.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/useHeaderResponsiveMode.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderBar/useScrollDirection.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderLoading/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderLoading/HeaderLoading.d.ts +0 -0
- /package/dist/{src/components/LangBtn → components/HeaderLoading}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderNavigationBar/HeaderNavigationBar.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderNavigationBar/HorizontalNavbar/config.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderNavigationBar/types.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderToolbar/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components/Logo → components/HeaderToolbar}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/HeaderToolbar/types.d.ts +0 -0
- /package/dist/{src/components → components}/LangBtn/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/LangBtn/LangBtn.d.ts +0 -0
- /package/dist/{src/components → components}/LangBtn/config.d.ts +0 -0
- /package/dist/{src/components/LogoBrandSection → components/LangBtn}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/LangBtn/locales.d.ts +0 -0
- /package/dist/{src/components → components}/LangBtn/types.d.ts +0 -0
- /package/dist/{src/components → components}/Logo/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/Logo/Logo.d.ts +0 -0
- /package/dist/{src/components → components}/Logo/LogoSize.d.ts +0 -0
- /package/dist/{src/components/MaintenancePage → components/Logo}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/Logo/locales.d.ts +0 -0
- /package/dist/{src/components → components}/Logo/logoDimensionsMapping.d.ts +0 -0
- /package/dist/{src/components → components}/Logo/types.d.ts +0 -0
- /package/dist/{src/components → components}/LogoBrandSection/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/LogoBrandSection/LogoBrandSection.d.ts +0 -0
- /package/dist/{src/components/NirField → components/LogoBrandSection}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/LogoBrandSection/dividerDimensionsMapping.d.ts +0 -0
- /package/dist/{src/components → components}/LogoBrandSection/locales.d.ts +0 -0
- /package/dist/{src/components → components}/LogoBrandSection/secondaryLogoMapping.d.ts +0 -0
- /package/dist/{src/components → components}/LogoBrandSection/types.d.ts +0 -0
- /package/dist/{src/components → components}/MaintenancePage/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/MaintenancePage/MaintenancePage.d.ts +0 -0
- /package/dist/{src/components/NotFoundPage → components/MaintenancePage}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/MaintenancePage/index.d.ts +0 -0
- /package/dist/{src/components → components}/MaintenancePage/locales.d.ts +0 -0
- /package/dist/{src/components → components}/NirField/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components/NotificationBar → components/NirField}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/NirField/locales.d.ts +0 -0
- /package/dist/{src/components → components}/NirField/nirValidation.d.ts +0 -0
- /package/dist/{src/components → components}/NotFoundPage/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/NotFoundPage/NotFoundPage.d.ts +0 -0
- /package/dist/{src/components/PageContainer → components/NotFoundPage}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/NotFoundPage/locales.d.ts +0 -0
- /package/dist/{src/components/PageContainer → components/NotificationBar}/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components/PaginatedTable → components/NotificationBar}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/NotificationBar/options.d.ts +0 -0
- /package/dist/{src/components → components}/NotificationBar/types.d.ts +0 -0
- /package/dist/{src/components/SubHeader → components/PageContainer}/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/PageContainer/PageContainer.d.ts +0 -0
- /package/dist/{src/components/PasswordField → components/PageContainer}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/PaginatedTable/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/PaginatedTable/PaginatedTable.d.ts +0 -0
- /package/dist/{src/components/PeriodField → components/PaginatedTable}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/PaginatedTable/constants/StateEnum.d.ts +0 -0
- /package/dist/{src/components → components}/PaginatedTable/types.d.ts +0 -0
- /package/dist/{src/components → components}/PasswordField/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/PasswordField/config.d.ts +0 -0
- /package/dist/{src/components/PhoneField → components/PasswordField}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/PasswordField/locales.d.ts +0 -0
- /package/dist/{src/components → components}/PeriodField/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components/RangeField → components/PeriodField}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/PhoneField/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components/RatingPicker → components/PhoneField}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/PhoneField/indicatifs.d.ts +0 -0
- /package/dist/{src/components → components}/PhoneField/locales.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/RangeField.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/RangeSlider/RangeSlider.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/RangeSlider/Tooltip/Tooltip.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/RangeSlider/types.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/RangeSlider/useMouseSlide.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/RangeSlider/useRangeSlider.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/RangeSlider/useThumb.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/RangeSlider/useThumbKeyboard.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/RangeSlider/useTooltipsNudge.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/RangeSlider/useTrack.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/RangeSlider/vAnimateClick.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/config.d.ts +0 -0
- /package/dist/{src/components/SearchListField → components/RangeField}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/RangeField/locales.d.ts +0 -0
- /package/dist/{src/components → components}/RatingPicker/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/RatingPicker/EmotionPicker/EmotionPicker.d.ts +0 -0
- /package/dist/{src/components → components}/RatingPicker/EmotionPicker/locales.d.ts +0 -0
- /package/dist/{src/components → components}/RatingPicker/NumberPicker/NumberPicker.d.ts +0 -0
- /package/dist/{src/components → components}/RatingPicker/NumberPicker/locales.d.ts +0 -0
- /package/dist/{src/components → components}/RatingPicker/Rating.d.ts +0 -0
- /package/dist/{src/components → components}/RatingPicker/RatingPicker.d.ts +0 -0
- /package/dist/{src/components → components}/RatingPicker/StarsPicker/StarsPicker.d.ts +0 -0
- /package/dist/{src/components/SelectBtnField → components/RatingPicker}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/RatingPicker/locales.d.ts +0 -0
- /package/dist/{src/components → components}/SearchListField/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/SearchListField/SearchListField.d.ts +0 -0
- /package/dist/{src/components/SkipLink → components/SearchListField}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/SearchListField/locales.d.ts +0 -0
- /package/dist/{src/components → components}/SearchListField/types.d.ts +0 -0
- /package/dist/{src/components → components}/SelectBtnField/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/SelectBtnField/SelectBtnField.d.ts +0 -0
- /package/dist/{src/components → components}/SelectBtnField/config.d.ts +0 -0
- /package/dist/{src/components/SocialMediaLinks → components/SelectBtnField}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/SelectBtnField/types.d.ts +0 -0
- /package/dist/{src/components → components}/SkipLink/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/SkipLink/SkipLink.d.ts +0 -0
- /package/dist/{src/components/SubHeader → components/SkipLink}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/SkipLink/locales.d.ts +0 -0
- /package/dist/{src/components → components}/SocialMediaLinks/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/SocialMediaLinks/DefaultSocialMediaLinks.d.ts +0 -0
- /package/dist/{src/components → components}/SocialMediaLinks/SocialMediaLinks.d.ts +0 -0
- /package/dist/{src/components/SyAlert → components/SocialMediaLinks}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/SocialMediaLinks/locales.d.ts +0 -0
- /package/dist/{src/components → components}/SocialMediaLinks/types.d.ts +0 -0
- /package/dist/{src/components/SyAlert → components/SubHeader}/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/SubHeader/SubHeader.d.ts +0 -0
- /package/dist/{src/components → components}/SubHeader/config.d.ts +0 -0
- /package/dist/{src/components/TableToolbar → components/SubHeader}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/SubHeader/locales.d.ts +0 -0
- /package/dist/{src/components → components}/SyAlert/SyAlert.d.ts +0 -0
- /package/dist/{src/components/UserMenuBtn → components/SyAlert}/constants/ExpertiseLevelEnum.d.ts +0 -0
- /package/dist/{src/components → components}/SyAlert/locales.d.ts +0 -0
- /package/dist/{src/components → components}/TableToolbar/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/TableToolbar/TableToolbar.d.ts +0 -0
- /package/dist/{src/components → components}/TableToolbar/config.d.ts +0 -0
- /package/dist/{src/components → components}/TableToolbar/locales.d.ts +0 -0
- /package/dist/{src/components → components}/UploadWorkflow/config.d.ts +0 -0
- /package/dist/{src/components → components}/UploadWorkflow/locales.d.ts +0 -0
- /package/dist/{src/components → components}/UploadWorkflow/types.d.ts +0 -0
- /package/dist/{src/components → components}/UploadWorkflow/useFileList.d.ts +0 -0
- /package/dist/{src/components → components}/UploadWorkflow/useFileUploadJourney.d.ts +0 -0
- /package/dist/{src/components → components}/UserMenuBtn/AccessibiliteItems.d.ts +0 -0
- /package/dist/{src/components → components}/UserMenuBtn/UserMenuBtn.d.ts +0 -0
- /package/dist/{src/components → components}/UserMenuBtn/config.d.ts +0 -0
- /package/dist/{src/composables → composables}/index.d.ts +0 -0
- /package/dist/{src/composables → composables}/rules/useFieldValidation.d.ts +0 -0
- /package/dist/{src/composables → composables}/useCustomizableOptions.d.ts +0 -0
- /package/dist/{src/composables → composables}/widthable/index.d.ts +0 -0
- /package/dist/{src/constants → constants}/icons.d.ts +0 -0
- /package/dist/{src/designTokens → designTokens}/index.d.ts +0 -0
- /package/dist/{src/designTokens → designTokens}/tokens/cnam/cnamContextual.d.ts +0 -0
- /package/dist/{src/designTokens → designTokens}/tokens/cnam/cnamDarkTheme.d.ts +0 -0
- /package/dist/{src/designTokens → designTokens}/tokens/cnam/cnamSemantic.d.ts +0 -0
- /package/dist/{src/designTokens → designTokens}/tokens/pa/paContextual.d.ts +0 -0
- /package/dist/{src/designTokens → designTokens}/tokens/pa/paDarkTheme.d.ts +0 -0
- /package/dist/{src/designTokens → designTokens}/tokens/pa/paSemantic.d.ts +0 -0
- /package/dist/{src/designTokens → designTokens}/utils/convertGaps.d.ts +0 -0
- /package/dist/{src/designTokens → designTokens}/utils/convertSemanticsToken.d.ts +0 -0
- /package/dist/{src/designTokens → designTokens}/utils/createFlattenTheme.d.ts +0 -0
- /package/dist/{src/designTokens → designTokens}/utils/index.d.ts +0 -0
- /package/dist/{src/directives → directives}/clickOutside.d.ts +0 -0
- /package/dist/{src/modules.d.ts → modules.d.ts} +0 -0
- /package/dist/{src/services → services}/NotificationService.d.ts +0 -0
- /package/dist/{src/services → services}/index.d.ts +0 -0
- /package/dist/{src/stories → stories}/Accessibilite/Vuetify/VuetifyItems.d.ts +0 -0
- /package/dist/{src/stories → stories}/EcoConception/ecoDesignItems.d.ts +0 -0
- /package/dist/{src/types → types}/vuetifyTypes.d.ts +0 -0
- /package/dist/{src/utils → utils}/calcHumanFileSize/index.d.ts +0 -0
- /package/dist/{src/utils → utils}/convertToUnit/index.d.ts +0 -0
- /package/dist/{src/utils → utils}/functions/copyToClipboard/index.d.ts +0 -0
- /package/dist/{src/utils → utils}/functions/deepCopy/index.d.ts +0 -0
- /package/dist/{src/utils → utils}/functions/downloadFile/index.d.ts +0 -0
- /package/dist/{src/utils → utils}/functions/downloadFile/types.d.ts +0 -0
- /package/dist/{src/utils → utils}/functions/throttleDisplayFn/throttleDisplayFn.d.ts +0 -0
- /package/dist/{src/utils/functions → utils/functions/validation}/isEmailValid/index.d.ts +0 -0
- /package/dist/{src/utils → utils}/localStorageUtility/index.d.ts +0 -0
- /package/dist/{src/utils → utils}/propValidator/index.d.ts +0 -0
- /package/dist/{src/utils → utils}/ruleMessage/index.d.ts +0 -0
- /package/dist/{src/utils/rules/exactLength → utils/rules/doMatchPattern}/locales.d.ts +0 -0
- /package/dist/{src/utils/rules/email → utils/rules/isDateValid}/locales.d.ts +0 -0
- /package/dist/{src/utils/rules/required → utils/rules/isNotAfterDate}/locales.d.ts +0 -0
- /package/dist/{src/utils → utils}/rules/types.d.ts +0 -0
- /package/src/components/NirField/{tests → examples}//342/200/257dataset/342/200/257.md" +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,67 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { formatDate, parseDate } from '../useDateFormat'
|
|
3
|
+
|
|
4
|
+
describe('useDateFormat', () => {
|
|
5
|
+
describe('formatDate', () => {
|
|
6
|
+
it('formats a Date object to string according to the specified format', () => {
|
|
7
|
+
const date = new Date(2023, 0, 15) // 15 janvier 2023
|
|
8
|
+
expect(formatDate(date, 'DD/MM/YYYY')).toBe('15/01/2023')
|
|
9
|
+
expect(formatDate(date, 'YYYY-MM-DD')).toBe('2023-01-15')
|
|
10
|
+
expect(formatDate(date, 'MM.DD.YYYY')).toBe('01.15.2023')
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
it('returns empty string when date is null or undefined', () => {
|
|
14
|
+
expect(formatDate(null as unknown as Date, 'DD/MM/YYYY')).toBe('')
|
|
15
|
+
expect(formatDate(undefined as unknown as Date, 'DD/MM/YYYY')).toBe('')
|
|
16
|
+
})
|
|
17
|
+
|
|
18
|
+
it('handles different date formats correctly', () => {
|
|
19
|
+
const date = new Date(2023, 11, 31) // 31 décembre 2023
|
|
20
|
+
expect(formatDate(date, 'DD/MM/YYYY')).toBe('31/12/2023')
|
|
21
|
+
expect(formatDate(date, 'D/M/YYYY')).toBe('31/12/2023')
|
|
22
|
+
expect(formatDate(date, 'YYYY-MM-DD')).toBe('2023-12-31')
|
|
23
|
+
expect(formatDate(date, 'MM/DD/YYYY')).toBe('12/31/2023')
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
it('handles custom separators correctly', () => {
|
|
27
|
+
const date = new Date(2023, 0, 15) // 15 janvier 2023
|
|
28
|
+
expect(formatDate(date, 'DD.MM.YYYY')).toBe('15.01.2023')
|
|
29
|
+
expect(formatDate(date, 'DD-MM-YYYY')).toBe('15-01-2023')
|
|
30
|
+
expect(formatDate(date, 'YYYY/MM/DD')).toBe('2023/01/15')
|
|
31
|
+
})
|
|
32
|
+
})
|
|
33
|
+
|
|
34
|
+
describe('parseDate', () => {
|
|
35
|
+
it('parses a date string to a Date object according to the specified format', () => {
|
|
36
|
+
const dateStr = '15/01/2023'
|
|
37
|
+
const date = parseDate(dateStr, 'DD/MM/YYYY')
|
|
38
|
+
expect(date).toBeInstanceOf(Date)
|
|
39
|
+
expect(date?.getFullYear()).toBe(2023)
|
|
40
|
+
expect(date?.getMonth()).toBe(0) // Janvier = 0
|
|
41
|
+
expect(date?.getDate()).toBe(15)
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
it('returns null for invalid date strings', () => {
|
|
45
|
+
expect(parseDate('invalid', 'DD/MM/YYYY')).toBeNull()
|
|
46
|
+
expect(parseDate('31/02/2023', 'DD/MM/YYYY')).toBeNull() // 31 février n'existe pas
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
it('handles different date formats correctly', () => {
|
|
50
|
+
expect(parseDate('2023-01-15', 'YYYY-MM-DD')?.getDate()).toBe(15)
|
|
51
|
+
expect(parseDate('01/15/2023', 'MM/DD/YYYY')?.getDate()).toBe(15)
|
|
52
|
+
expect(parseDate('15.01.2023', 'DD.MM.YYYY')?.getDate()).toBe(15)
|
|
53
|
+
})
|
|
54
|
+
|
|
55
|
+
it('returns null when input is null or empty', () => {
|
|
56
|
+
expect(parseDate(null as unknown as string, 'DD/MM/YYYY')).toBeNull()
|
|
57
|
+
expect(parseDate('', 'DD/MM/YYYY')).toBeNull()
|
|
58
|
+
})
|
|
59
|
+
|
|
60
|
+
it('handles leap years correctly', () => {
|
|
61
|
+
// 2020 était une année bissextile
|
|
62
|
+
expect(parseDate('29/02/2020', 'DD/MM/YYYY')).not.toBeNull()
|
|
63
|
+
// 2023 n'est pas une année bissextile
|
|
64
|
+
expect(parseDate('29/02/2023', 'DD/MM/YYYY')).toBeNull()
|
|
65
|
+
})
|
|
66
|
+
})
|
|
67
|
+
})
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { initializeSelectedDates, type DateInput } from '../useDateInitialization'
|
|
3
|
+
|
|
4
|
+
describe('useDateInitialization', () => {
|
|
5
|
+
describe('initializeSelectedDates', () => {
|
|
6
|
+
it('returns null when modelValue is null or undefined', () => {
|
|
7
|
+
expect(initializeSelectedDates(null, 'DD/MM/YYYY')).toBeNull()
|
|
8
|
+
expect(initializeSelectedDates(null as unknown as DateInput, 'DD/MM/YYYY')).toBeNull()
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
it('parses a single date string correctly', () => {
|
|
12
|
+
const result = initializeSelectedDates('15/01/2023', 'DD/MM/YYYY')
|
|
13
|
+
expect(result).toBeInstanceOf(Date)
|
|
14
|
+
|
|
15
|
+
const date = result as Date
|
|
16
|
+
expect(date.getFullYear()).toBe(2023)
|
|
17
|
+
expect(date.getMonth()).toBe(0) // Janvier = 0
|
|
18
|
+
expect(date.getDate()).toBe(15)
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
it('parses an array of date strings correctly', () => {
|
|
22
|
+
const result = initializeSelectedDates(['15/01/2023', '20/01/2023'], 'DD/MM/YYYY')
|
|
23
|
+
expect(Array.isArray(result)).toBe(true)
|
|
24
|
+
|
|
25
|
+
const dates = result as Date[]
|
|
26
|
+
expect(dates.length).toBe(2)
|
|
27
|
+
|
|
28
|
+
expect(dates[0].getFullYear()).toBe(2023)
|
|
29
|
+
expect(dates[0].getMonth()).toBe(0)
|
|
30
|
+
expect(dates[0].getDate()).toBe(15)
|
|
31
|
+
|
|
32
|
+
expect(dates[1].getFullYear()).toBe(2023)
|
|
33
|
+
expect(dates[1].getMonth()).toBe(0)
|
|
34
|
+
expect(dates[1].getDate()).toBe(20)
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
it('returns empty array when dates are invalid', () => {
|
|
38
|
+
const result = initializeSelectedDates(['invalid', '20/01/2023'], 'DD/MM/YYYY')
|
|
39
|
+
expect(Array.isArray(result)).toBe(true)
|
|
40
|
+
expect(result).toHaveLength(0)
|
|
41
|
+
})
|
|
42
|
+
|
|
43
|
+
it('returns empty array when first date is after second date', () => {
|
|
44
|
+
const result = initializeSelectedDates(['25/01/2023', '20/01/2023'], 'DD/MM/YYYY')
|
|
45
|
+
expect(Array.isArray(result)).toBe(true)
|
|
46
|
+
expect(result).toHaveLength(0)
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
it('handles single element array correctly', () => {
|
|
50
|
+
const result = initializeSelectedDates(['15/01/2023'], 'DD/MM/YYYY')
|
|
51
|
+
expect(Array.isArray(result)).toBe(true)
|
|
52
|
+
|
|
53
|
+
const dates = result as Date[]
|
|
54
|
+
expect(dates.length).toBe(1)
|
|
55
|
+
|
|
56
|
+
expect(dates[0].getFullYear()).toBe(2023)
|
|
57
|
+
expect(dates[0].getMonth()).toBe(0)
|
|
58
|
+
expect(dates[0].getDate()).toBe(15)
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
it('returns empty array for empty array input', () => {
|
|
62
|
+
const result = initializeSelectedDates([], 'DD/MM/YYYY')
|
|
63
|
+
expect(Array.isArray(result)).toBe(true)
|
|
64
|
+
expect(result).toHaveLength(0)
|
|
65
|
+
})
|
|
66
|
+
|
|
67
|
+
it('handles different display and return formats correctly', () => {
|
|
68
|
+
// Date au format de retour
|
|
69
|
+
const result1 = initializeSelectedDates('2023-01-15', 'DD/MM/YYYY', 'YYYY-MM-DD')
|
|
70
|
+
expect(result1).toBeInstanceOf(Date)
|
|
71
|
+
expect((result1 as Date).getDate()).toBe(15)
|
|
72
|
+
|
|
73
|
+
// Date au format d'affichage quand le format de retour est différen
|
|
74
|
+
const result2 = initializeSelectedDates('15/01/2023', 'DD/MM/YYYY', 'YYYY-MM-DD')
|
|
75
|
+
expect(result2).toBeInstanceOf(Date)
|
|
76
|
+
expect((result2 as Date).getDate()).toBe(15)
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
it('returns null for object input', () => {
|
|
80
|
+
const result = initializeSelectedDates({}, 'DD/MM/YYYY')
|
|
81
|
+
expect(result).toBeNull()
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
it('handles invalid date strings correctly', () => {
|
|
85
|
+
const result = initializeSelectedDates('invalid', 'DD/MM/YYYY')
|
|
86
|
+
expect(result).toBeNull()
|
|
87
|
+
})
|
|
88
|
+
})
|
|
89
|
+
})
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, vi } from 'vitest'
|
|
2
|
+
import { useDatePickerAccessibility } from '../useDatePickerAccessibility'
|
|
3
|
+
|
|
4
|
+
describe('useDatePickerAccessibility', () => {
|
|
5
|
+
let { updateAccessibility, handleKeyDown } = useDatePickerAccessibility()
|
|
6
|
+
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
// Réinitialiser la fonction pour chaque test
|
|
9
|
+
const { updateAccessibility: newUpdateAccessibility, handleKeyDown: newHandleKeyDown } = useDatePickerAccessibility()
|
|
10
|
+
updateAccessibility = newUpdateAccessibility
|
|
11
|
+
handleKeyDown = newHandleKeyDown
|
|
12
|
+
|
|
13
|
+
// Créer une structure DOM simulée pour les tests
|
|
14
|
+
document.body.innerHTML = `
|
|
15
|
+
<div class="v-date-picker">
|
|
16
|
+
<div class="v-date-picker-header">
|
|
17
|
+
<button class="v-btn v-btn--icon">
|
|
18
|
+
<span class="v-btn__content">
|
|
19
|
+
<i class="v-icon mdi mdi-chevron-left"></i>
|
|
20
|
+
</span>
|
|
21
|
+
</button>
|
|
22
|
+
<button class="v-btn v-btn--icon">
|
|
23
|
+
<span class="v-btn__content">
|
|
24
|
+
<div>Janvier 2023</div>
|
|
25
|
+
</span>
|
|
26
|
+
</button>
|
|
27
|
+
<button class="v-btn v-btn--icon">
|
|
28
|
+
<span class="v-btn__content">
|
|
29
|
+
<i class="v-icon mdi mdi-chevron-right"></i>
|
|
30
|
+
</span>
|
|
31
|
+
</button>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
`
|
|
35
|
+
})
|
|
36
|
+
|
|
37
|
+
it('sets correct aria-label attributes on navigation buttons', async () => {
|
|
38
|
+
// Appeler la fonction updateAccessibility
|
|
39
|
+
await updateAccessibility()
|
|
40
|
+
|
|
41
|
+
// Récupérer les boutons
|
|
42
|
+
const buttons = document.querySelectorAll('.v-date-picker-header button')
|
|
43
|
+
|
|
44
|
+
// Vérifier que les attributs aria-label sont correctement définis
|
|
45
|
+
expect(buttons[0].getAttribute('aria-label')).toBe('Mois précédent')
|
|
46
|
+
expect(buttons[1].getAttribute('aria-label')).toBe(null) // Pas d'icône, donc pas d'attribu
|
|
47
|
+
expect(buttons[2].getAttribute('aria-label')).toBe('Mois suivant')
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
it('handles missing elements gracefully', async () => {
|
|
51
|
+
// Supprimer les éléments du DOM
|
|
52
|
+
document.body.innerHTML = ''
|
|
53
|
+
|
|
54
|
+
// La fonction ne devrait pas générer d'erreur même si les éléments n'existent pas
|
|
55
|
+
await expect(updateAccessibility()).resolves.not.toThrow()
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
it('handles different icons correctly', async () => {
|
|
59
|
+
// Modifier les icônes
|
|
60
|
+
document.body.innerHTML = `
|
|
61
|
+
<div class="v-date-picker">
|
|
62
|
+
<div class="v-date-picker-header">
|
|
63
|
+
<button class="v-btn v-btn--icon">
|
|
64
|
+
<span class="v-btn__content">
|
|
65
|
+
<i class="v-icon mdi mdi-arrow-left"></i>
|
|
66
|
+
</span>
|
|
67
|
+
</button>
|
|
68
|
+
<button class="v-btn v-btn--icon">
|
|
69
|
+
<span class="v-btn__content">
|
|
70
|
+
<div>Janvier 2023</div>
|
|
71
|
+
</span>
|
|
72
|
+
</button>
|
|
73
|
+
<button class="v-btn v-btn--icon">
|
|
74
|
+
<span class="v-btn__content">
|
|
75
|
+
<i class="v-icon mdi mdi-arrow-right"></i>
|
|
76
|
+
</span>
|
|
77
|
+
</button>
|
|
78
|
+
</div>
|
|
79
|
+
</div>
|
|
80
|
+
`
|
|
81
|
+
|
|
82
|
+
// Appeler la fonction updateAccessibility
|
|
83
|
+
await updateAccessibility()
|
|
84
|
+
|
|
85
|
+
// Récupérer les boutons
|
|
86
|
+
const buttons = document.querySelectorAll('.v-date-picker-header button')
|
|
87
|
+
|
|
88
|
+
// Vérifier que les attributs aria-label sont correctement définis
|
|
89
|
+
expect(buttons[0].getAttribute('aria-label')).toBe(null) // Pas de chevron-lef
|
|
90
|
+
expect(buttons[1].getAttribute('aria-label')).toBe(null) // Pas d'icône
|
|
91
|
+
expect(buttons[2].getAttribute('aria-label')).toBe(null) // Pas de chevron-righ
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
it('adds sr-only instructions to the DatePicker', async () => {
|
|
95
|
+
// Appeler updateAccessibility
|
|
96
|
+
await updateAccessibility()
|
|
97
|
+
|
|
98
|
+
// Vérifier que les instructions pour les lecteurs d'écran ont été ajoutées
|
|
99
|
+
const srOnlyEl = document.querySelector('.sr-only-instructions')
|
|
100
|
+
expect(srOnlyEl).not.toBeNull()
|
|
101
|
+
expect(srOnlyEl?.textContent).toBe('Utilisez tab pour naviguer entre les dates et Entrée ou Espace pour sélectionner une date')
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
describe('handleKeyDown', () => {
|
|
105
|
+
it('simulates a click event when Enter key is pressed', () => {
|
|
106
|
+
// Créer une fonction d'espionnage autonome plutôt que d'espionner une méthode existante
|
|
107
|
+
const clickHandlerSpy = vi.fn()
|
|
108
|
+
|
|
109
|
+
// Créer un élément bouton avec un gestionnaire de clic espion
|
|
110
|
+
const button = document.createElement('button')
|
|
111
|
+
button.addEventListener('click', clickHandlerSpy)
|
|
112
|
+
document.body.appendChild(button)
|
|
113
|
+
button.focus()
|
|
114
|
+
|
|
115
|
+
// Créer un événement clavier pour la touche Entrée
|
|
116
|
+
const enterEvent = new KeyboardEvent('keydown', {
|
|
117
|
+
key: 'Enter',
|
|
118
|
+
bubbles: true,
|
|
119
|
+
cancelable: true,
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
// Espionner la méthode preventDefault de l'événement
|
|
123
|
+
const preventDefaultSpy = vi.spyOn(enterEvent, 'preventDefault')
|
|
124
|
+
|
|
125
|
+
// Appeler la fonction handleKeyDown avec l'événement
|
|
126
|
+
handleKeyDown(enterEvent)
|
|
127
|
+
|
|
128
|
+
// Vérifier que preventDefault a été appelé
|
|
129
|
+
expect(preventDefaultSpy).toHaveBeenCalled()
|
|
130
|
+
|
|
131
|
+
// Vérifier que le gestionnaire de clic a été déclenché suite à l'événement simulé
|
|
132
|
+
expect(clickHandlerSpy).toHaveBeenCalled()
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
it('does nothing when a key other than Enter is pressed', () => {
|
|
136
|
+
// Créer une fonction d'espionnage autonome
|
|
137
|
+
const clickHandlerSpy = vi.fn()
|
|
138
|
+
|
|
139
|
+
// Créer un élément bouton avec un gestionnaire de clic espion
|
|
140
|
+
const button = document.createElement('button')
|
|
141
|
+
button.addEventListener('click', clickHandlerSpy)
|
|
142
|
+
document.body.appendChild(button)
|
|
143
|
+
button.focus()
|
|
144
|
+
|
|
145
|
+
// Créer un événement clavier pour une touche autre qu'Entrée (par ex: Espace)
|
|
146
|
+
const spaceEvent = new KeyboardEvent('keydown', {
|
|
147
|
+
key: 'Space',
|
|
148
|
+
bubbles: true,
|
|
149
|
+
cancelable: true,
|
|
150
|
+
})
|
|
151
|
+
|
|
152
|
+
// Espionner la méthode preventDefault de l'événement
|
|
153
|
+
const preventDefaultSpy = vi.spyOn(spaceEvent, 'preventDefault')
|
|
154
|
+
|
|
155
|
+
// Appeler la fonction handleKeyDown avec l'événement
|
|
156
|
+
handleKeyDown(spaceEvent)
|
|
157
|
+
|
|
158
|
+
// Vérifier que preventDefault n'a pas été appelé
|
|
159
|
+
expect(preventDefaultSpy).not.toHaveBeenCalled()
|
|
160
|
+
|
|
161
|
+
// Vérifier qu'aucun événement de clic n'a été déclenché
|
|
162
|
+
expect(clickHandlerSpy).not.toHaveBeenCalled()
|
|
163
|
+
})
|
|
164
|
+
|
|
165
|
+
it('handles the case when no element is focused', () => {
|
|
166
|
+
// S'assurer qu'aucun élément n'est focalisé
|
|
167
|
+
document.body.focus()
|
|
168
|
+
|
|
169
|
+
// Créer un événement clavier pour la touche Entrée
|
|
170
|
+
const enterEvent = new KeyboardEvent('keydown', {
|
|
171
|
+
key: 'Enter',
|
|
172
|
+
bubbles: true,
|
|
173
|
+
cancelable: true,
|
|
174
|
+
})
|
|
175
|
+
|
|
176
|
+
// Vérifier que la fonction ne génère pas d'erreur
|
|
177
|
+
expect(() => handleKeyDown(enterEvent)).not.toThrow()
|
|
178
|
+
})
|
|
179
|
+
})
|
|
180
|
+
})
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composable pour le formatage et le parsing des dates
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Parse une chaîne de caractères en objet Date selon un format spécifié
|
|
7
|
+
* @param dateString - La chaîne de caractères à parser
|
|
8
|
+
* @param format - Le format de la date (ex: 'DD/MM/YYYY')
|
|
9
|
+
* @returns Un objet Date ou null si la chaîne n'est pas valide
|
|
10
|
+
*/
|
|
11
|
+
export const parseDate = (dateString: string, format: string): Date | null => {
|
|
12
|
+
if (!dateString) return null
|
|
13
|
+
|
|
14
|
+
// Créer un mapping des positions des éléments de date selon le format
|
|
15
|
+
const separator = format.includes('/') ? '/' : format.includes('-') ? '-' : '.'
|
|
16
|
+
const parts = format.split(separator)
|
|
17
|
+
const dateParts = dateString.split(separator)
|
|
18
|
+
|
|
19
|
+
if (parts.length !== dateParts.length) return null
|
|
20
|
+
|
|
21
|
+
let day = 0, month = 0, year = 0
|
|
22
|
+
|
|
23
|
+
// Extraire les valeurs selon leur position dans le format
|
|
24
|
+
parts.forEach((part, index) => {
|
|
25
|
+
const value = parseInt(dateParts[index], 10)
|
|
26
|
+
if (isNaN(value)) return
|
|
27
|
+
|
|
28
|
+
if (part.includes('DD') || part.includes('D')) day = value
|
|
29
|
+
else if (part.includes('MM') || part.includes('M')) month = value - 1 // Les mois en JS sont 0-indexés
|
|
30
|
+
else if (part.includes('YYYY')) year = value
|
|
31
|
+
else if (part.includes('YY')) {
|
|
32
|
+
// Gestion intelligente des années à 2 chiffres
|
|
33
|
+
// Si l'année est < 50, on considère qu'elle est dans le 21ème siècle
|
|
34
|
+
// Sinon, elle est dans le 20ème siècle
|
|
35
|
+
year = value < 50 ? 2000 + value : 1900 + value
|
|
36
|
+
}
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
// Vérifier que nous avons toutes les parties nécessaires et qu'elles sont dans des plages valides
|
|
40
|
+
if (day < 1 || day > 31 || month < 0 || month > 11 || year < 1000 || year > 9999) return null
|
|
41
|
+
|
|
42
|
+
// Créer la date à midi (12:00) pour éviter les problèmes de décalage de fuseau horaire
|
|
43
|
+
// Cela garantit que la date reste la même lors de la conversion en UTC
|
|
44
|
+
const date = new Date(year, month, day, 12, 0, 0)
|
|
45
|
+
|
|
46
|
+
// Vérifier que la date est valide (par exemple, 31 février n'existe pas)
|
|
47
|
+
if (date.getFullYear() !== year || date.getMonth() !== month || date.getDate() !== day) return null
|
|
48
|
+
|
|
49
|
+
return date
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Formate une date selon un format spécifié
|
|
54
|
+
* @param date - La date à formater
|
|
55
|
+
* @param format - Le format de sortie (ex: 'DD/MM/YYYY')
|
|
56
|
+
* @returns La date formatée en chaîne de caractères
|
|
57
|
+
*/
|
|
58
|
+
export const formatDate = (date: Date, format: string): string => {
|
|
59
|
+
if (!date) return ''
|
|
60
|
+
|
|
61
|
+
// Formats de base
|
|
62
|
+
const day = date.getDate().toString().padStart(2, '0')
|
|
63
|
+
const month = (date.getMonth() + 1).toString().padStart(2, '0')
|
|
64
|
+
const year = date.getFullYear().toString()
|
|
65
|
+
const shortYear = year.slice(-2)
|
|
66
|
+
|
|
67
|
+
// Formats sans padding
|
|
68
|
+
const dayNoPad = date.getDate().toString()
|
|
69
|
+
const monthNoPad = (date.getMonth() + 1).toString()
|
|
70
|
+
|
|
71
|
+
// Remplacer les tokens dans l'ordre correct (du plus spécifique au moins spécifique)
|
|
72
|
+
const result = format
|
|
73
|
+
.replace(/YYYY/g, year)
|
|
74
|
+
.replace(/YY/g, shortYear)
|
|
75
|
+
.replace(/MM/g, month)
|
|
76
|
+
.replace(/M/g, monthNoPad)
|
|
77
|
+
.replace(/DD/g, day)
|
|
78
|
+
.replace(/D/g, dayNoPad)
|
|
79
|
+
|
|
80
|
+
return result
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Hook composable pour le formatage et le parsing des dates
|
|
85
|
+
* @returns Fonctions de formatage et parsing de dates
|
|
86
|
+
*/
|
|
87
|
+
export function useDateFormat() {
|
|
88
|
+
return {
|
|
89
|
+
parseDate,
|
|
90
|
+
formatDate,
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export default useDateFormat
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composable pour l'initialisation des dates dans le DatePicker
|
|
3
|
+
*/
|
|
4
|
+
import { parseDate } from './useDateFormat'
|
|
5
|
+
|
|
6
|
+
// Types
|
|
7
|
+
export type DateValue = string | [string, string] | null
|
|
8
|
+
export type DateInput = string | string[] | null | object
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Initialise les dates sélectionnées à partir d'une valeur d'entrée
|
|
12
|
+
* @param modelValue - La valeur d'entrée (peut être une chaîne, un tableau, null ou un objet)
|
|
13
|
+
* @param displayFormat - Le format d'affichage des dates
|
|
14
|
+
* @param returnFormat - Le format de retour des dates (optionnel)
|
|
15
|
+
* @returns Une date, un tableau de dates ou null
|
|
16
|
+
*/
|
|
17
|
+
export const initializeSelectedDates = (
|
|
18
|
+
modelValue: DateInput | null,
|
|
19
|
+
displayFormat: string,
|
|
20
|
+
returnFormat: string = '',
|
|
21
|
+
): Date | Date[] | null => {
|
|
22
|
+
if (!modelValue) return null
|
|
23
|
+
|
|
24
|
+
// Déterminer le format à utiliser pour l'analyse
|
|
25
|
+
const parseFormat = returnFormat || displayFormat
|
|
26
|
+
|
|
27
|
+
if (Array.isArray(modelValue)) {
|
|
28
|
+
if (modelValue.length >= 2) {
|
|
29
|
+
// Essayer d'abord avec le format de retour, puis avec le format d'affichage
|
|
30
|
+
let dates = [parseDate(modelValue[0], parseFormat), parseDate(modelValue[1], parseFormat)]
|
|
31
|
+
|
|
32
|
+
// Si l'une des dates est invalide avec le format de retour, essayer avec le format d'affichage
|
|
33
|
+
if (dates.some(date => date === null) && returnFormat) {
|
|
34
|
+
dates = [parseDate(modelValue[0], displayFormat), parseDate(modelValue[1], displayFormat)]
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Vérifie si l'une des dates est toujours invalide
|
|
38
|
+
if (dates.some(date => date === null)) {
|
|
39
|
+
return []
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Vérifie si la première date est après la seconde
|
|
43
|
+
if (dates[0] && dates[1] && dates[0] > dates[1]) {
|
|
44
|
+
return []
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
// Filtrer les dates nulles et convertir en tableau de Date
|
|
48
|
+
return dates.filter((date): date is Date => date !== null)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
if (modelValue.length === 1) {
|
|
52
|
+
// Essayer d'abord avec le format de retour, puis avec le format d'affichage
|
|
53
|
+
let date = parseDate(modelValue[0], parseFormat)
|
|
54
|
+
|
|
55
|
+
// Si la date est invalide avec le format de retour, essayer avec le format d'affichage
|
|
56
|
+
if (date === null && returnFormat) {
|
|
57
|
+
date = parseDate(modelValue[0], displayFormat)
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return date === null ? [] : [date]
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return []
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// Si modelValue est un objet, on le convertit en chaîne
|
|
67
|
+
if (typeof modelValue === 'object') {
|
|
68
|
+
return null
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// Essayer d'abord avec le format de retour, puis avec le format d'affichage
|
|
72
|
+
let date = parseDate(modelValue, parseFormat)
|
|
73
|
+
|
|
74
|
+
// Si la date est invalide avec le format de retour, essayer avec le format d'affichage
|
|
75
|
+
if (date === null && returnFormat) {
|
|
76
|
+
date = parseDate(modelValue, displayFormat)
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return date === null ? null : date
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Hook composable pour l'initialisation des dates
|
|
84
|
+
* @returns Fonction d'initialisation des dates
|
|
85
|
+
*/
|
|
86
|
+
export function useDateInitialization() {
|
|
87
|
+
return {
|
|
88
|
+
initializeSelectedDates,
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export default useDateInitialization
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composable pour améliorer l'accessibilité du DatePicker
|
|
3
|
+
*/
|
|
4
|
+
import { nextTick } from 'vue'
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Améliore l'accessibilité du DatePicker en ajoutant des attributs ARIA et des instructions pour les lecteurs d'écran
|
|
8
|
+
* @returns Des fonctions pour mettre à jour l'accessibilité du DatePicker et gérer les événements clavier
|
|
9
|
+
*/
|
|
10
|
+
export function useDatePickerAccessibility() {
|
|
11
|
+
// Référence pour suivre si l'événement a déjà été traité
|
|
12
|
+
let isProcessingEnterKey = false
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Gestionnaire d'événements clavier pour simuler le comportement de la touche espace avec la touche entrée
|
|
16
|
+
* @param event L'événement clavier
|
|
17
|
+
*/
|
|
18
|
+
const handleKeyDown = (event: Event): void => {
|
|
19
|
+
const keyboardEvent = event as KeyboardEvent
|
|
20
|
+
// Si la touche entrée est pressée et que nous ne sommes pas déjà en train de traiter un événement
|
|
21
|
+
if (keyboardEvent.key === 'Enter' && !isProcessingEnterKey) {
|
|
22
|
+
// Marquer que nous sommes en train de traiter l'événement pour éviter les doublons
|
|
23
|
+
isProcessingEnterKey = true
|
|
24
|
+
|
|
25
|
+
// Empêcher le comportement par défaut de la touche entrée
|
|
26
|
+
keyboardEvent.preventDefault()
|
|
27
|
+
|
|
28
|
+
// Récupérer l'élément actuellement focalisé
|
|
29
|
+
const focusedElement = document.activeElement
|
|
30
|
+
|
|
31
|
+
// Simuler un événement de touche espace
|
|
32
|
+
if (focusedElement && focusedElement instanceof HTMLElement) {
|
|
33
|
+
// Créer et déclencher un événement de clic qui simule le comportement de l'espace
|
|
34
|
+
const clickEvent = new MouseEvent('click', {
|
|
35
|
+
bubbles: true,
|
|
36
|
+
cancelable: true,
|
|
37
|
+
view: window,
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
// Déclencher un seul événement de clic
|
|
41
|
+
focusedElement.dispatchEvent(clickEvent)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Réinitialiser l'état après un délai pour permettre le traitement des autres événements
|
|
45
|
+
setTimeout(() => {
|
|
46
|
+
isProcessingEnterKey = false
|
|
47
|
+
}, 100)
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Met à jour les attributs d'accessibilité du DatePicker
|
|
53
|
+
* Ajoute des attributs ARIA et des instructions pour les lecteurs d'écran
|
|
54
|
+
*/
|
|
55
|
+
const updateAccessibility = async (): Promise<void> => {
|
|
56
|
+
await nextTick()
|
|
57
|
+
|
|
58
|
+
// Utiliser des attributs data pour sélectionner les éléments, ce qui est plus stable que les classes CSS
|
|
59
|
+
const datePickerEl = document.querySelector('.v-date-picker')
|
|
60
|
+
if (!datePickerEl) return
|
|
61
|
+
|
|
62
|
+
// Ajouter un attribut role="application" au conteneur principal
|
|
63
|
+
datePickerEl.setAttribute('role', 'application')
|
|
64
|
+
datePickerEl.setAttribute('aria-label', 'Sélecteur de date')
|
|
65
|
+
|
|
66
|
+
// Sélectionner tous les boutons de navigation
|
|
67
|
+
const navigationButtons = datePickerEl.querySelectorAll('button')
|
|
68
|
+
|
|
69
|
+
// Attribuer des labels significatifs basés sur la position ou l'icône
|
|
70
|
+
navigationButtons.forEach((button) => {
|
|
71
|
+
const iconEl = button.querySelector('.v-icon')
|
|
72
|
+
if (!iconEl) return
|
|
73
|
+
|
|
74
|
+
// Utiliser le contenu de l'icône pour déterminer sa fonction
|
|
75
|
+
const iconContent = iconEl.textContent || ''
|
|
76
|
+
const iconClasses = iconEl.className || ''
|
|
77
|
+
|
|
78
|
+
if (iconClasses.includes('mdi-chevron-left') || iconContent.includes('chevron-left')) {
|
|
79
|
+
button.setAttribute('aria-label', 'Mois précédent')
|
|
80
|
+
}
|
|
81
|
+
else if (iconClasses.includes('mdi-chevron-right') || iconContent.includes('chevron-right')) {
|
|
82
|
+
button.setAttribute('aria-label', 'Mois suivant')
|
|
83
|
+
}
|
|
84
|
+
else if (iconClasses.includes('mdi-chevron-down') || iconContent.includes('chevron-down')
|
|
85
|
+
|| iconClasses.includes('mdi-menu-down') || iconContent.includes('menu-down')) {
|
|
86
|
+
button.setAttribute('aria-label', 'Changer de vue')
|
|
87
|
+
}
|
|
88
|
+
})
|
|
89
|
+
|
|
90
|
+
// Ajouter des instructions pour les lecteurs d'écran
|
|
91
|
+
let srOnlyEl = datePickerEl.querySelector('.sr-only-instructions')
|
|
92
|
+
if (!srOnlyEl) {
|
|
93
|
+
srOnlyEl = document.createElement('span')
|
|
94
|
+
srOnlyEl.className = 'sr-only-instructions'
|
|
95
|
+
srOnlyEl.setAttribute('aria-live', 'polite')
|
|
96
|
+
// Utiliser HTMLElement pour accéder aux propriétés de style
|
|
97
|
+
const srOnlyHtmlEl = srOnlyEl as HTMLElement
|
|
98
|
+
srOnlyHtmlEl.style.position = 'absolute'
|
|
99
|
+
srOnlyHtmlEl.style.width = '1px'
|
|
100
|
+
srOnlyHtmlEl.style.height = '1px'
|
|
101
|
+
srOnlyHtmlEl.style.padding = '0'
|
|
102
|
+
srOnlyHtmlEl.style.margin = '-1px'
|
|
103
|
+
srOnlyHtmlEl.style.overflow = 'hidden'
|
|
104
|
+
srOnlyHtmlEl.style.clip = 'rect(0, 0, 0, 0)'
|
|
105
|
+
srOnlyHtmlEl.style.whiteSpace = 'nowrap'
|
|
106
|
+
srOnlyHtmlEl.style.border = '0'
|
|
107
|
+
srOnlyEl.textContent = 'Utilisez tab pour naviguer entre les dates et Entrée ou Espace pour sélectionner une date'
|
|
108
|
+
datePickerEl.prepend(srOnlyEl)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Ajouter un gestionnaire d'événements clavier pour la touche entrée
|
|
112
|
+
// Utiliser des casts explicites pour rassurer TypeScript sur les types
|
|
113
|
+
datePickerEl.removeEventListener('keydown', handleKeyDown as EventListener) // Supprimer d'abord pour éviter les doublons
|
|
114
|
+
datePickerEl.addEventListener('keydown', handleKeyDown as EventListener)
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
return {
|
|
118
|
+
updateAccessibility,
|
|
119
|
+
handleKeyDown,
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export default useDatePickerAccessibility
|