@cnamts/synapse 1.0.0 → 1.0.1
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/DateFilter-BmRuzQ9Z.js +98 -0
- package/dist/NumberFilter-CnIPDHqx.js +121 -0
- package/dist/PeriodFilter-CZwZ8CnQ.js +112 -0
- package/dist/SelectFilter-Cj-GW2Cc.js +97 -0
- package/dist/TextFilter-DTxZHJwX.js +114 -0
- package/dist/{components/BackBtn → common}/constants/ExpertiseLevelEnum.d.ts +3 -0
- package/dist/components/BackBtn/AccessibiliteItems.d.ts +1 -1
- package/dist/components/BackToTopBtn/AccessibiliteItems.d.ts +1 -1
- package/dist/components/ChipList/AccessibiliteItems.d.ts +1 -1
- package/dist/components/CollapsibleList/AccessibiliteItems.d.ts +1 -1
- package/dist/components/ContextualMenu/AccessibiliteItems.d.ts +1 -1
- package/dist/components/CookieBanner/AccessibiliteItems.d.ts +1 -1
- package/dist/components/CopyBtn/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Customs/SyBtnSelect/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Customs/SyInputSelect/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Customs/SySelect/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Customs/SyTextField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/DataList/AccessibiliteItems.d.ts +1 -1
- package/dist/components/DataListGroup/AccessibiliteItems.d.ts +1 -1
- package/dist/components/DatePicker/AccessibiliteItems.d.ts +1 -1
- package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +4162 -0
- package/dist/components/DatePicker/{DatePicker.d.ts → DatePicker/DatePicker.d.ts} +142 -102
- package/dist/components/DatePicker/{DateTextInput.d.ts → DateTextInput/DateTextInput.d.ts} +32 -26
- package/dist/components/DatePicker/composables/index.d.ts +15 -0
- package/dist/components/DatePicker/composables/useDateFormatValidation.d.ts +25 -0
- package/dist/components/DatePicker/composables/useDateInputEditing.d.ts +33 -0
- package/dist/components/DatePicker/composables/useDatePickerViewMode.d.ts +16 -0
- package/dist/components/DatePicker/composables/useDatePickerVisibility.d.ts +27 -0
- package/dist/components/DatePicker/composables/useDateRangeInput.d.ts +29 -0
- package/dist/components/DatePicker/composables/useDateRangeValidation.d.ts +11 -0
- package/dist/components/DatePicker/composables/useDateSelection.d.ts +10 -0
- package/dist/components/DatePicker/composables/useDateValidation.d.ts +35 -0
- package/dist/components/DatePicker/composables/useDisplayedDateString.d.ts +16 -0
- package/dist/components/DatePicker/composables/useIconState.d.ts +17 -0
- package/dist/components/DatePicker/composables/useInputBlurHandler.d.ts +30 -0
- package/dist/components/DatePicker/composables/useInputHandler.d.ts +32 -0
- package/dist/components/DatePicker/composables/useManualDateValidation.d.ts +33 -0
- package/dist/components/DatePicker/composables/useMonthButtonCustomization.d.ts +9 -0
- package/dist/components/DatePicker/composables/useTodayButton.d.ts +16 -0
- package/dist/components/DatePicker/composables/useWeekendDays.d.ts +11 -0
- package/dist/components/DatePicker/constants/messages.d.ts +29 -0
- package/dist/components/DatePicker/types.d.ts +13 -0
- package/dist/components/DialogBox/AccessibiliteItems.d.ts +1 -1
- package/dist/components/DownloadBtn/AccessibiliteItems.d.ts +1 -1
- package/dist/components/ErrorPage/AccessibiliteItems.d.ts +1 -1
- package/dist/components/ExternalLinks/AccessibiliteItems.d.ts +1 -1
- package/dist/components/FileList/AccessibiliteItems.d.ts +1 -1
- package/dist/components/FilePreview/AccessibiliteItems.d.ts +1 -1
- package/dist/components/FileUpload/AccessibiliteItems.d.ts +1 -1
- package/dist/components/FilterInline/AccessibiliteItems.d.ts +1 -1
- package/dist/components/FilterSideBar/AccessibiliteItems.d.ts +1 -1
- package/dist/components/FilterSideBar/FilterSideBar.d.ts +395 -1
- package/dist/components/FooterBar/AccessibiliteItems.d.ts +1 -1
- package/dist/components/FranceConnectBtn/AccessibiliteItems.d.ts +1 -1
- package/dist/components/HeaderBar/AccessibiliteItems.d.ts +1 -1
- package/dist/components/HeaderBar/HeaderBurgerMenu/AccessibiliteItems.d.ts +1 -1
- package/dist/components/HeaderLoading/AccessibiliteItems.d.ts +1 -1
- package/dist/components/HeaderToolbar/AccessibiliteItems.d.ts +1 -1
- package/dist/components/LangBtn/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Logo/AccessibiliteItems.d.ts +1 -1
- package/dist/components/LogoBrandSection/AccessibiliteItems.d.ts +1 -1
- package/dist/components/MaintenancePage/AccessibiliteItems.d.ts +1 -1
- package/dist/components/NirField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/NotFoundPage/AccessibiliteItems.d.ts +1 -1
- package/dist/components/NotificationBar/AccessibiliteItems.d.ts +1 -1
- package/dist/components/PageContainer/AccessibiliteItems.d.ts +1 -1
- package/dist/components/PaginatedTable/AccessibiliteItems.d.ts +1 -1
- package/dist/components/PasswordField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/PeriodField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/PeriodField/PeriodField.d.ts +171 -37
- package/dist/components/PhoneField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/RangeField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/RatingPicker/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SearchListField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SelectBtnField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SkipLink/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SocialMediaLinks/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SubHeader/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SyAlert/AccessibiliteItems.d.ts +1 -1
- package/dist/components/TableToolbar/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +647 -0
- package/dist/components/Tables/SyTable/SyTable.d.ts +666 -0
- package/dist/components/Tables/common/SyTableFilter.d.ts +126 -0
- package/dist/components/Tables/common/TableHeader.d.ts +33 -0
- package/dist/components/Tables/common/constants/StateEnum.d.ts +6 -0
- package/dist/components/Tables/common/filters/DateFilter.d.ts +121 -0
- package/dist/components/Tables/common/filters/NumberFilter.d.ts +132 -0
- package/dist/components/Tables/common/filters/PeriodFilter.d.ts +135 -0
- package/dist/components/Tables/common/filters/SelectFilter.d.ts +120 -0
- package/dist/components/Tables/common/filters/TextFilter.d.ts +132 -0
- package/dist/components/Tables/common/formatters.d.ts +17 -0
- package/dist/components/Tables/common/locales.d.ts +7 -0
- package/dist/components/Tables/common/tableAccessibilityUtils.d.ts +8 -0
- package/dist/components/Tables/common/tableFilterUtils.d.ts +2 -0
- package/dist/components/Tables/common/tableStorageUtils.d.ts +29 -0
- package/dist/components/Tables/common/tableUtils.d.ts +42 -0
- package/dist/components/Tables/common/types.d.ts +80 -0
- package/dist/components/Tables/common/useTableFilter.d.ts +9 -0
- package/dist/components/Tables/index.d.ts +2 -0
- package/dist/components/UploadWorkflow/AccessibiliteItems.d.ts +1 -1
- package/dist/components/UserMenuBtn/AccessibiliteItems.d.ts +1 -1
- package/dist/components/index.d.ts +3 -1
- package/dist/design-system-v3.js +100 -11944
- package/dist/design-system-v3.umd.cjs +22 -4
- package/dist/designTokens/index.d.ts +3 -1
- package/dist/designTokens/tokens/cnam/cnamFonts.d.ts +140 -0
- package/dist/designTokens/tokens/pa/paFonts.d.ts +140 -0
- package/dist/designTokens/utils/createFontVariables.d.ts +39 -0
- package/dist/designTokens/utils/index.d.ts +2 -1
- package/dist/main-WDqeoGM-.js +14788 -0
- package/dist/style.css +1 -1
- package/dist/utils/rules/isRequired/index.d.ts +1 -1
- package/dist/vite-env.d.ts +12 -0
- package/package.json +3 -3
- package/src/assets/_spacers.scss +37 -1
- package/src/assets/_typography.scss +158 -0
- package/src/assets/settings.scss +7 -0
- package/src/common/constants/ExpertiseLevelEnum.ts +7 -0
- package/src/components/BackBtn/AccessibiliteItems.ts +1 -1
- package/src/components/BackToTopBtn/AccessibiliteItems.ts +1 -1
- package/src/components/ChipList/AccessibiliteItems.ts +1 -1
- package/src/components/CollapsibleList/AccessibiliteItems.ts +1 -1
- package/src/components/ContextualMenu/AccessibiliteItems.ts +1 -1
- package/src/components/CookieBanner/AccessibiliteItems.ts +1 -1
- package/src/components/CopyBtn/AccessibiliteItems.ts +1 -1
- package/src/components/Customs/SyBtnSelect/AccessibiliteItems.ts +1 -1
- package/src/components/Customs/SyInputSelect/AccessibiliteItems.ts +1 -1
- package/src/components/Customs/SySelect/AccessibiliteItems.ts +1 -1
- package/src/components/Customs/SySelect/SySelect.vue +3 -9
- package/src/components/Customs/SySelect/tests/SySelect.spec.ts +4 -2
- package/src/components/Customs/SyTextField/AccessibiliteItems.ts +1 -1
- package/src/components/DataList/AccessibiliteItems.ts +1 -1
- package/src/components/DataListGroup/AccessibiliteItems.ts +1 -1
- package/src/components/DatePicker/AccessibiliteItems.ts +1 -1
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.mdx +212 -0
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +1097 -0
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +497 -180
- package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +941 -0
- package/src/components/DatePicker/DatePicker/DatePicker.mdx +176 -0
- package/src/components/DatePicker/{tests → DatePicker}/DatePicker.spec.ts +1 -1
- package/src/components/DatePicker/{DatePicker.stories.ts → DatePicker/DatePicker.stories.ts} +115 -400
- package/src/components/DatePicker/{DatePicker.vue → DatePicker/DatePicker.vue} +302 -84
- package/src/components/DatePicker/DatePickerOverview.mdx +227 -0
- package/src/components/DatePicker/{DatePickerValidation.mdx → DatePickerValidationExample/DatePickerValidation.mdx} +3 -3
- package/src/components/DatePicker/{DatePickerValidation.stories.ts → DatePickerValidationExample/DatePickerValidation.stories.ts} +2 -2
- package/src/components/DatePicker/DateTextInput/DateRange.stories.ts +310 -0
- package/src/components/DatePicker/DateTextInput/DateTextInput.range.spec.ts +278 -0
- package/src/components/DatePicker/{tests → DateTextInput}/DateTextInput.spec.ts +8 -7
- package/src/components/DatePicker/DateTextInput/DateTextInput.vue +916 -0
- package/src/components/DatePicker/DateTextInput/NoCalendar.mdx +64 -0
- package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +572 -0
- package/src/components/DatePicker/composables/index.ts +22 -0
- package/src/components/DatePicker/composables/tests/useDateFormatValidation.spec.ts +165 -0
- package/src/components/DatePicker/composables/tests/useDateInputEditing.spec.ts +359 -0
- package/src/components/DatePicker/composables/tests/useDatePickerViewMode.spec.ts +160 -0
- package/src/components/DatePicker/composables/tests/useDatePickerVisibility.spec.ts +339 -0
- package/src/components/DatePicker/composables/tests/useDateRangeInput.spec.ts +277 -0
- package/src/components/DatePicker/composables/tests/useDateRangeValidation.spec.ts +107 -0
- package/src/components/DatePicker/composables/tests/useDateSelection.spec.ts +171 -0
- package/src/components/DatePicker/composables/tests/useDateValidation.spec.ts +245 -0
- package/src/components/DatePicker/composables/tests/useDisplayedDateString.spec.ts +98 -0
- package/src/components/DatePicker/composables/tests/useIconState.spec.ts +130 -0
- package/src/components/DatePicker/composables/tests/useInputBlurHandler.spec.ts +278 -0
- package/src/components/DatePicker/composables/tests/useManualDateValidation.spec.ts +233 -0
- package/src/components/DatePicker/composables/tests/useMonthButtonCustomization.spec.ts +100 -0
- package/src/components/DatePicker/composables/tests/useTodayButton.spec.ts +97 -0
- package/src/components/DatePicker/composables/tests/useWeekendDays.spec.ts +28 -0
- package/src/components/DatePicker/composables/useDateFormatValidation.ts +95 -0
- package/src/components/DatePicker/composables/useDateInputEditing.ts +326 -0
- package/src/components/DatePicker/composables/useDatePickerViewMode.ts +61 -0
- package/src/components/DatePicker/composables/useDatePickerVisibility.ts +146 -0
- package/src/components/DatePicker/composables/useDateRangeInput.ts +375 -0
- package/src/components/DatePicker/composables/useDateRangeValidation.ts +48 -0
- package/src/components/DatePicker/composables/useDateSelection.ts +121 -0
- package/src/components/DatePicker/composables/useDateValidation.ts +225 -0
- package/src/components/DatePicker/composables/useDisplayedDateString.ts +58 -0
- package/src/components/DatePicker/composables/useIconState.ts +53 -0
- package/src/components/DatePicker/composables/useInputBlurHandler.ts +101 -0
- package/src/components/DatePicker/composables/useInputHandler.ts +436 -0
- package/src/components/DatePicker/composables/useManualDateValidation.ts +161 -0
- package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +89 -0
- package/src/components/DatePicker/composables/useTodayButton.ts +43 -0
- package/src/components/DatePicker/composables/useWeekendDays.ts +21 -0
- package/src/components/DatePicker/constants/messages.ts +50 -0
- package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +4 -4
- package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +1 -1
- package/src/components/DatePicker/playground/ComplexDatePickerPlayground.vue +172 -0
- package/src/components/DatePicker/types.ts +15 -0
- package/src/components/DialogBox/AccessibiliteItems.ts +1 -1
- package/src/components/DownloadBtn/AccessibiliteItems.ts +1 -1
- package/src/components/ErrorPage/AccessibiliteItems.ts +1 -1
- package/src/components/ExternalLinks/AccessibiliteItems.ts +1 -1
- package/src/components/FileList/AccessibiliteItems.ts +1 -1
- package/src/components/FilePreview/AccessibiliteItems.ts +1 -1
- package/src/components/FileUpload/AccessibiliteItems.ts +1 -1
- package/src/components/FilterInline/AccessibiliteItems.ts +1 -1
- package/src/components/FilterSideBar/AccessibiliteItems.ts +1 -1
- package/src/components/FilterSideBar/FilterSideBar.vue +108 -90
- package/src/components/FilterSideBar/tests/FilterSideBar.spec.ts +27 -0
- package/src/components/FilterSideBar/tests/__snapshots__/FilterSideBar.spec.ts.snap +114 -109
- package/src/components/FooterBar/AccessibiliteItems.ts +1 -1
- package/src/components/FooterBar/FooterBar.vue +2 -1
- package/src/components/FranceConnectBtn/AccessibiliteItems.ts +1 -1
- package/src/components/HeaderBar/AccessibiliteItems.ts +1 -1
- package/src/components/HeaderBar/HeaderBurgerMenu/AccessibiliteItems.ts +1 -1
- package/src/components/HeaderLoading/AccessibiliteItems.ts +1 -1
- package/src/components/HeaderToolbar/AccessibiliteItems.ts +1 -1
- package/src/components/LangBtn/AccessibiliteItems.ts +1 -1
- package/src/components/Logo/Accessibilite.stories.ts +4 -0
- package/src/components/Logo/AccessibiliteItems.ts +1 -1
- package/src/components/LogoBrandSection/AccessibiliteItems.ts +1 -1
- package/src/components/MaintenancePage/AccessibiliteItems.ts +1 -1
- package/src/components/NirField/AccessibiliteItems.ts +1 -1
- package/src/components/NotFoundPage/AccessibiliteItems.ts +1 -1
- package/src/components/NotificationBar/AccessibiliteItems.ts +1 -1
- package/src/components/PageContainer/AccessibiliteItems.ts +1 -1
- package/src/components/PaginatedTable/AccessibiliteItems.ts +1 -1
- package/src/components/PaginatedTable/PaginatedTable.stories.ts +19 -0
- package/src/components/PaginatedTable/PaginatedTable.vue +51 -13
- package/src/components/PaginatedTable/tests/PaginatedTable.spec.ts +0 -2
- package/src/components/PasswordField/AccessibiliteItems.ts +1 -1
- package/src/components/PeriodField/AccessibiliteItems.ts +1 -1
- package/src/components/PeriodField/PeriodField.vue +13 -1
- package/src/components/PhoneField/AccessibiliteItems.ts +1 -1
- package/src/components/RangeField/AccessibiliteItems.ts +1 -1
- package/src/components/RatingPicker/AccessibiliteItems.ts +1 -1
- package/src/components/SearchListField/AccessibiliteItems.ts +1 -1
- package/src/components/SelectBtnField/AccessibiliteItems.ts +1 -1
- package/src/components/SkipLink/AccessibiliteItems.ts +1 -1
- package/src/components/SocialMediaLinks/AccessibiliteItems.ts +1 -1
- package/src/components/SubHeader/AccessibiliteItems.ts +1 -1
- package/src/components/SyAlert/AccessibiliteItems.ts +1 -1
- package/src/components/TableToolbar/AccessibiliteItems.ts +1 -1
- package/src/components/TableToolbar/TableToolbar.stories.ts +110 -56
- package/src/components/Tables/SyServerTable/FilterRules.stories.ts +83 -0
- package/src/components/Tables/SyServerTable/SyServerTable.mdx +160 -0
- package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +2887 -0
- package/src/components/Tables/SyServerTable/SyServerTable.vue +302 -0
- package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +450 -0
- package/src/components/Tables/SyServerTable/tests/__snapshots__/SyServerTable.spec.ts.snap +521 -0
- package/src/components/Tables/SyTable/FilterRules.stories.ts +235 -0
- package/src/components/Tables/SyTable/SyTable.mdx +129 -0
- package/src/components/Tables/SyTable/SyTable.stories.ts +1966 -0
- package/src/components/Tables/SyTable/SyTable.vue +317 -0
- package/src/components/Tables/SyTable/tests/SyTable.spec.ts +345 -0
- package/src/components/Tables/SyTable/tests/__snapshots__/SyTable.spec.ts.snap +521 -0
- package/src/components/Tables/common/SyTableFilter.vue +342 -0
- package/src/components/Tables/common/TableHeader.vue +221 -0
- package/src/components/Tables/common/constants/StateEnum.ts +6 -0
- package/src/components/Tables/common/filters/DateFilter.vue +140 -0
- package/src/components/Tables/common/filters/NumberFilter.vue +234 -0
- package/src/components/Tables/common/filters/PeriodFilter.vue +147 -0
- package/src/components/Tables/common/filters/SelectFilter.vue +126 -0
- package/src/components/Tables/common/filters/TextFilter.vue +191 -0
- package/src/components/Tables/common/filters/tests/DateFilter.spec.ts +187 -0
- package/src/components/Tables/common/filters/tests/NumberFilter.spec.ts +280 -0
- package/src/components/Tables/common/filters/tests/PeriodFilter.spec.ts +192 -0
- package/src/components/Tables/common/filters/tests/SelectFilter.spec.ts +219 -0
- package/src/components/Tables/common/filters/tests/TextFilter.spec.ts +260 -0
- package/src/components/Tables/common/formatters.ts +72 -0
- package/src/components/Tables/common/locales.ts +7 -0
- package/src/components/Tables/common/tableAccessibilityUtils.ts +61 -0
- package/src/components/Tables/common/tableFilterUtils.ts +327 -0
- package/src/components/Tables/common/tableStorageUtils.ts +102 -0
- package/src/components/Tables/common/tableStyles.scss +54 -0
- package/src/components/Tables/common/tableUtils.ts +115 -0
- package/src/components/Tables/common/tests/SyTableFilter.spec.ts +312 -0
- package/src/components/Tables/common/tests/resize.spec.ts +161 -0
- package/src/components/Tables/common/tests/tableFilterUtils.spec.ts +106 -0
- package/src/components/Tables/common/tests/tableUtils.spec.ts +272 -0
- package/src/components/Tables/common/types.ts +81 -0
- package/src/components/Tables/common/useTableFilter.ts +19 -0
- package/src/components/Tables/index.ts +3 -0
- package/src/components/UploadWorkflow/AccessibiliteItems.ts +1 -1
- package/src/components/UserMenuBtn/AccessibiliteItems.ts +1 -1
- package/src/components/index.ts +3 -1
- package/src/composables/date/useDateFormatDayjs.ts +8 -3
- package/src/composables/date/useDateInitializationDayjs.ts +28 -36
- package/src/composables/rules/useFieldValidation.ts +1 -2
- package/src/designTokens/index.ts +4 -0
- package/src/designTokens/tokens/cnam/cnamFonts.ts +140 -0
- package/src/designTokens/tokens/pa/paFonts.ts +140 -0
- package/src/designTokens/utils/createFontVariables.ts +143 -0
- package/src/designTokens/utils/index.ts +2 -1
- package/src/stories/Demarrer/Accueil.stories.ts +12 -3
- package/src/utils/rules/isHolidayDay/IsHolidayDay.stories.ts +1 -1
- package/src/utils/rules/isRequired/index.ts +2 -1
- package/src/vite-env.d.ts +12 -0
- package/src/vuetifyConfig.ts +10 -3
- package/dist/components/BackToTopBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/ChipList/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/CollapsibleList/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/ContextualMenu/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/CookieBanner/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/CopyBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/Customs/SyBtnSelect/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/Customs/SyInputSelect/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/Customs/SySelect/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/Customs/SyTextField/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/DataList/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/DataListGroup/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/DatePicker/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/DialogBox/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/DownloadBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/ErrorPage/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/ExternalLinks/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/FileList/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/FilePreview/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/FileUpload/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/FilterInline/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/FilterSideBar/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/FooterBar/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/FranceConnectBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/HeaderBar/HeaderBurgerMenu/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/HeaderBar/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/HeaderLoading/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/HeaderToolbar/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/LangBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/Logo/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/LogoBrandSection/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/MaintenancePage/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/NirField/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/NotFoundPage/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/NotificationBar/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/PageContainer/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/PaginatedTable/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/PasswordField/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/PeriodField/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/PhoneField/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/RangeField/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/RatingPicker/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/SearchListField/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/SelectBtnField/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/SkipLink/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/SocialMediaLinks/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/SubHeader/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/SyAlert/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/TableToolbar/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/UploadWorkflow/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/dist/components/UserMenuBtn/constants/ExpertiseLevelEnum.d.ts +0 -4
- package/src/components/BackBtn/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/BackToTopBtn/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/ChipList/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/CollapsibleList/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/ContextualMenu/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/CookieBanner/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/CopyBtn/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/Customs/SyBtnSelect/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/Customs/SyInputSelect/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/Customs/SySelect/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/Customs/SyTextField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/DataList/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/DataListGroup/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/DatePicker/DatePicker.mdx +0 -222
- package/src/components/DatePicker/DateTextInput.vue +0 -504
- package/src/components/DatePicker/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/DialogBox/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/DownloadBtn/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/ErrorPage/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/ExternalLinks/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FileList/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FilePreview/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FileUpload/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FilterInline/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FilterSideBar/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FooterBar/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FranceConnectBtn/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/HeaderBar/HeaderBurgerMenu/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/HeaderBar/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/HeaderLoading/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/HeaderToolbar/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/LangBtn/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/Logo/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/LogoBrandSection/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/MaintenancePage/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/NirField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/NotFoundPage/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/NotificationBar/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/PageContainer/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/PaginatedTable/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/PasswordField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/PeriodField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/PhoneField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/RangeField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/RatingPicker/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/SearchListField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/SelectBtnField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/SkipLink/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/SocialMediaLinks/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/SubHeader/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/SyAlert/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/TableToolbar/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/UserMenuBtn/constants/ExpertiseLevelEnum.ts +0 -4
- /package/src/components/DatePicker/{examples → playground}/DatePickerHolidayRule.vue +0 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach } from 'vitest'
|
|
2
|
+
import { ref } from 'vue'
|
|
3
|
+
import { useDateFormatValidation } from '../useDateFormatValidation'
|
|
4
|
+
|
|
5
|
+
describe('useDateFormatValidation', () => {
|
|
6
|
+
const hasInteracted = ref(false)
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
hasInteracted.value = false
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
describe('validateDateFormat', () => {
|
|
13
|
+
it('devrait retourner isValid=true pour une date valide', () => {
|
|
14
|
+
const { validateDateFormat } = useDateFormatValidation({
|
|
15
|
+
format: 'DD/MM/YYYY',
|
|
16
|
+
hasInteracted,
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
const result = validateDateFormat('25/12/2023')
|
|
20
|
+
expect(result.isValid).toBe(true)
|
|
21
|
+
expect(result.message).toBe('')
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
it('devrait retourner isValid=false pour une date invalide', () => {
|
|
25
|
+
const { validateDateFormat } = useDateFormatValidation({
|
|
26
|
+
format: 'DD/MM/YYYY',
|
|
27
|
+
hasInteracted,
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
const result = validateDateFormat('32/12/2023')
|
|
31
|
+
expect(result.isValid).toBe(false)
|
|
32
|
+
expect(result.message).toBe('Format de date invalide (DD/MM/YYYY)')
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
it('devrait retourner isValid=true pour une date vide si non requis', () => {
|
|
36
|
+
const { validateDateFormat } = useDateFormatValidation({
|
|
37
|
+
format: 'DD/MM/YYYY',
|
|
38
|
+
required: false,
|
|
39
|
+
hasInteracted,
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
const result = validateDateFormat('')
|
|
43
|
+
expect(result.isValid).toBe(true)
|
|
44
|
+
expect(result.message).toBe('')
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
it('devrait retourner isValid=false pour une date vide si requis et utilisateur a interagi', () => {
|
|
48
|
+
hasInteracted.value = true
|
|
49
|
+
|
|
50
|
+
const { validateDateFormat } = useDateFormatValidation({
|
|
51
|
+
format: 'DD/MM/YYYY',
|
|
52
|
+
required: true,
|
|
53
|
+
hasInteracted,
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
const result = validateDateFormat('')
|
|
57
|
+
expect(result.isValid).toBe(false)
|
|
58
|
+
expect(result.message).toBe('La date est requise.')
|
|
59
|
+
})
|
|
60
|
+
|
|
61
|
+
it('devrait retourner isValid=true si disableErrorHandling=true même pour une date invalide', () => {
|
|
62
|
+
const { validateDateFormat } = useDateFormatValidation({
|
|
63
|
+
format: 'DD/MM/YYYY',
|
|
64
|
+
disableErrorHandling: true,
|
|
65
|
+
hasInteracted,
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
const result = validateDateFormat('32/12/2023')
|
|
69
|
+
expect(result.isValid).toBe(true)
|
|
70
|
+
expect(result.message).toBe('')
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
it('devrait retourner isValid=false pour une date avec des caractères non autorisés', () => {
|
|
74
|
+
const { validateDateFormat } = useDateFormatValidation({
|
|
75
|
+
format: 'DD/MM/YYYY',
|
|
76
|
+
hasInteracted,
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
const result = validateDateFormat('25/12/2023a')
|
|
80
|
+
expect(result.isValid).toBe(false)
|
|
81
|
+
expect(result.message).toBe('Format de date invalide (DD/MM/YYYY)')
|
|
82
|
+
})
|
|
83
|
+
|
|
84
|
+
it('devrait valider une date au format alternatif si dateFormatReturn est spécifié', () => {
|
|
85
|
+
const { validateDateFormat } = useDateFormatValidation({
|
|
86
|
+
format: 'DD/MM/YYYY',
|
|
87
|
+
dateFormatReturn: 'YYYY-MM-DD',
|
|
88
|
+
hasInteracted,
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
// Format principal
|
|
92
|
+
let result = validateDateFormat('25/12/2023')
|
|
93
|
+
expect(result.isValid).toBe(true)
|
|
94
|
+
|
|
95
|
+
// Format alternatif
|
|
96
|
+
result = validateDateFormat('2023-12-25')
|
|
97
|
+
expect(result.isValid).toBe(true)
|
|
98
|
+
})
|
|
99
|
+
})
|
|
100
|
+
|
|
101
|
+
describe('isDateComplete', () => {
|
|
102
|
+
it('devrait retourner true pour une date complète et valide', () => {
|
|
103
|
+
const { isDateComplete } = useDateFormatValidation({
|
|
104
|
+
format: 'DD/MM/YYYY',
|
|
105
|
+
hasInteracted,
|
|
106
|
+
})
|
|
107
|
+
|
|
108
|
+
expect(isDateComplete.value('25/12/2023')).toBe(true)
|
|
109
|
+
})
|
|
110
|
+
|
|
111
|
+
it('devrait retourner false pour une date incomplète', () => {
|
|
112
|
+
const { isDateComplete } = useDateFormatValidation({
|
|
113
|
+
format: 'DD/MM/YYYY',
|
|
114
|
+
hasInteracted,
|
|
115
|
+
})
|
|
116
|
+
|
|
117
|
+
expect(isDateComplete.value('25/12')).toBe(false)
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
it('devrait retourner false pour une date vide', () => {
|
|
121
|
+
const { isDateComplete } = useDateFormatValidation({
|
|
122
|
+
format: 'DD/MM/YYYY',
|
|
123
|
+
hasInteracted,
|
|
124
|
+
})
|
|
125
|
+
|
|
126
|
+
expect(isDateComplete.value('')).toBe(false)
|
|
127
|
+
})
|
|
128
|
+
|
|
129
|
+
it('devrait retourner true pour une date avec le bon nombre de chiffres, même si elle est invalide', () => {
|
|
130
|
+
const { isDateComplete } = useDateFormatValidation({
|
|
131
|
+
format: 'DD/MM/YYYY',
|
|
132
|
+
hasInteracted,
|
|
133
|
+
})
|
|
134
|
+
|
|
135
|
+
// 32/12/2023 a le bon nombre de chiffres, même si c'est une date invalide
|
|
136
|
+
expect(isDateComplete.value('32/12/2023')).toBe(true)
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
it('devrait vérifier uniquement le nombre de chiffres pour différents formats de date', () => {
|
|
140
|
+
const { isDateComplete: isDateCompleteUS } = useDateFormatValidation({
|
|
141
|
+
format: 'MM/DD/YYYY',
|
|
142
|
+
hasInteracted,
|
|
143
|
+
})
|
|
144
|
+
|
|
145
|
+
// 12/25/2023 a le bon nombre de chiffres pour le format MM/DD/YYYY
|
|
146
|
+
expect(isDateCompleteUS.value('12/25/2023')).toBe(true)
|
|
147
|
+
// 25/12/2023 a aussi le bon nombre de chiffres, même si ce n'est pas dans le bon ordre
|
|
148
|
+
expect(isDateCompleteUS.value('25/12/2023')).toBe(true)
|
|
149
|
+
// 1/2/2023 n'a pas assez de chiffres
|
|
150
|
+
expect(isDateCompleteUS.value('1/2/2023')).toBe(false)
|
|
151
|
+
|
|
152
|
+
const { isDateComplete: isDateCompleteISO } = useDateFormatValidation({
|
|
153
|
+
format: 'YYYY-MM-DD',
|
|
154
|
+
hasInteracted,
|
|
155
|
+
})
|
|
156
|
+
|
|
157
|
+
// 2023-12-25 a le bon nombre de chiffres pour le format YYYY-MM-DD
|
|
158
|
+
expect(isDateCompleteISO.value('2023-12-25')).toBe(true)
|
|
159
|
+
// 25-12-2023 a aussi le bon nombre de chiffres, même si ce n'est pas dans le bon ordre
|
|
160
|
+
expect(isDateCompleteISO.value('25-12-2023')).toBe(true)
|
|
161
|
+
// 23-1-25 n'a pas assez de chiffres
|
|
162
|
+
expect(isDateCompleteISO.value('23-1-25')).toBe(false)
|
|
163
|
+
})
|
|
164
|
+
})
|
|
165
|
+
})
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
|
2
|
+
import { useDateInputEditing } from '../useDateInputEditing'
|
|
3
|
+
|
|
4
|
+
describe('useDateInputEditing', () => {
|
|
5
|
+
// Mock pour la fonction updateDisplayValue
|
|
6
|
+
const updateDisplayValue = vi.fn()
|
|
7
|
+
|
|
8
|
+
// Réinitialiser les mocks avant chaque test
|
|
9
|
+
beforeEach(() => {
|
|
10
|
+
vi.resetAllMocks()
|
|
11
|
+
})
|
|
12
|
+
|
|
13
|
+
describe('formatDateInput', () => {
|
|
14
|
+
it('devrait formater correctement une entrée de date avec le format DD/MM/YYYY', () => {
|
|
15
|
+
const { formatDateInput } = useDateInputEditing({
|
|
16
|
+
format: 'DD/MM/YYYY',
|
|
17
|
+
updateDisplayValue,
|
|
18
|
+
})
|
|
19
|
+
|
|
20
|
+
// Test avec différentes entrées
|
|
21
|
+
let result = formatDateInput('25122023')
|
|
22
|
+
expect(result.formatted).toBe('25/12/2023')
|
|
23
|
+
// La position du curseur dépend de l'implémentation
|
|
24
|
+
expect(result.cursorPos).toBeGreaterThanOrEqual(0)
|
|
25
|
+
|
|
26
|
+
// Test avec une entrée partielle
|
|
27
|
+
result = formatDateInput('2512')
|
|
28
|
+
expect(result.formatted).toBe('25/12/____')
|
|
29
|
+
// La position du curseur dépend de l'implémentation
|
|
30
|
+
expect(result.cursorPos).toBeGreaterThanOrEqual(0)
|
|
31
|
+
|
|
32
|
+
// Test avec une entrée vide
|
|
33
|
+
result = formatDateInput('')
|
|
34
|
+
expect(result.formatted).toBe('__/__/____')
|
|
35
|
+
expect(result.cursorPos).toBe(0)
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
it('devrait formater correctement une entrée de date avec le format MM/DD/YYYY', () => {
|
|
39
|
+
const { formatDateInput } = useDateInputEditing({
|
|
40
|
+
format: 'MM/DD/YYYY',
|
|
41
|
+
updateDisplayValue,
|
|
42
|
+
})
|
|
43
|
+
|
|
44
|
+
const result = formatDateInput('12252023')
|
|
45
|
+
expect(result.formatted).toBe('12/25/2023')
|
|
46
|
+
// La position du curseur dépend de l'implémentation
|
|
47
|
+
expect(result.cursorPos).toBeGreaterThanOrEqual(0)
|
|
48
|
+
})
|
|
49
|
+
|
|
50
|
+
it('devrait formater correctement une entrée de date avec le format YYYY-MM-DD', () => {
|
|
51
|
+
const { formatDateInput } = useDateInputEditing({
|
|
52
|
+
format: 'YYYY-MM-DD',
|
|
53
|
+
updateDisplayValue,
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
const result = formatDateInput('20231225')
|
|
57
|
+
expect(result.formatted).toBe('2023-12-25')
|
|
58
|
+
// La position du curseur dépend de l'implémentation
|
|
59
|
+
expect(result.cursorPos).toBeGreaterThanOrEqual(0)
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
it('devrait limiter le nombre de chiffres au format attendu', () => {
|
|
63
|
+
const { formatDateInput } = useDateInputEditing({
|
|
64
|
+
format: 'DD/MM/YYYY',
|
|
65
|
+
updateDisplayValue,
|
|
66
|
+
})
|
|
67
|
+
|
|
68
|
+
// Entrée avec trop de chiffres
|
|
69
|
+
const result = formatDateInput('251220232024')
|
|
70
|
+
expect(result.formatted).toBe('25/12/2023')
|
|
71
|
+
// La position du curseur dépend de l'implémentation
|
|
72
|
+
expect(result.cursorPos).toBeGreaterThanOrEqual(0)
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
it('devrait calculer correctement la position du curseur après formatage', () => {
|
|
76
|
+
const { formatDateInput } = useDateInputEditing({
|
|
77
|
+
format: 'DD/MM/YYYY',
|
|
78
|
+
updateDisplayValue,
|
|
79
|
+
})
|
|
80
|
+
|
|
81
|
+
// Test avec position du curseur spécifiée
|
|
82
|
+
let result = formatDateInput('25122023', 4)
|
|
83
|
+
expect(result.formatted).toBe('25/12/2023')
|
|
84
|
+
// La position du curseur dépend de l'implémentation
|
|
85
|
+
expect(result.cursorPos).toBeGreaterThanOrEqual(0)
|
|
86
|
+
|
|
87
|
+
// Test avec position du curseur au début
|
|
88
|
+
result = formatDateInput('25122023', 0)
|
|
89
|
+
expect(result.formatted).toBe('25/12/2023')
|
|
90
|
+
expect(result.cursorPos).toBe(0)
|
|
91
|
+
|
|
92
|
+
// Test avec position du curseur à la fin
|
|
93
|
+
result = formatDateInput('25122023', 8)
|
|
94
|
+
expect(result.formatted).toBe('25/12/2023')
|
|
95
|
+
// La position du curseur dépend de l'implémentation
|
|
96
|
+
expect(result.cursorPos).toBeGreaterThanOrEqual(0)
|
|
97
|
+
})
|
|
98
|
+
|
|
99
|
+
it('devrait détecter et utiliser différents séparateurs selon le format', () => {
|
|
100
|
+
// Format avec tirets
|
|
101
|
+
let { formatDateInput } = useDateInputEditing({
|
|
102
|
+
format: 'DD-MM-YYYY',
|
|
103
|
+
updateDisplayValue,
|
|
104
|
+
})
|
|
105
|
+
|
|
106
|
+
let result = formatDateInput('25122023')
|
|
107
|
+
expect(result.formatted).toBe('25-12-2023')
|
|
108
|
+
|
|
109
|
+
// Format avec points
|
|
110
|
+
formatDateInput = useDateInputEditing({
|
|
111
|
+
format: 'DD.MM.YYYY',
|
|
112
|
+
updateDisplayValue,
|
|
113
|
+
}).formatDateInput
|
|
114
|
+
|
|
115
|
+
result = formatDateInput('25122023')
|
|
116
|
+
expect(result.formatted).toBe('25.12.2023')
|
|
117
|
+
})
|
|
118
|
+
})
|
|
119
|
+
|
|
120
|
+
describe('handleKeydown', () => {
|
|
121
|
+
it('devrait gérer correctement la touche Backspace sur un séparateur', () => {
|
|
122
|
+
const { handleKeydown } = useDateInputEditing({
|
|
123
|
+
format: 'DD/MM/YYYY',
|
|
124
|
+
updateDisplayValue,
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
// Créer un mock pour l'événement keydown
|
|
128
|
+
const mockEvent = {
|
|
129
|
+
key: 'Backspace',
|
|
130
|
+
target: {
|
|
131
|
+
value: '25/1_/____',
|
|
132
|
+
selectionStart: 3,
|
|
133
|
+
selectionEnd: 3,
|
|
134
|
+
setSelectionRange: vi.fn(),
|
|
135
|
+
},
|
|
136
|
+
preventDefault: vi.fn(),
|
|
137
|
+
} as unknown as KeyboardEvent & { target: HTMLInputElement }
|
|
138
|
+
|
|
139
|
+
// Appeler la fonction
|
|
140
|
+
handleKeydown(mockEvent)
|
|
141
|
+
|
|
142
|
+
// Vérifier que preventDefault a été appelé
|
|
143
|
+
expect(mockEvent.preventDefault).toHaveBeenCalled()
|
|
144
|
+
|
|
145
|
+
// Vérifier que updateDisplayValue a été appelé
|
|
146
|
+
expect(updateDisplayValue).toHaveBeenCalled()
|
|
147
|
+
|
|
148
|
+
// Nous ne vérifions pas la valeur exacte car elle peut dépendre de l'implémentation
|
|
149
|
+
|
|
150
|
+
// Vérifier que setSelectionRange a été appelé
|
|
151
|
+
setTimeout(() => {
|
|
152
|
+
expect(mockEvent.target.setSelectionRange).toHaveBeenCalledWith(1, 1)
|
|
153
|
+
}, 0)
|
|
154
|
+
})
|
|
155
|
+
|
|
156
|
+
it('ne devrait pas interférer avec Backspace sur un chiffre', () => {
|
|
157
|
+
const { handleKeydown } = useDateInputEditing({
|
|
158
|
+
format: 'DD/MM/YYYY',
|
|
159
|
+
updateDisplayValue,
|
|
160
|
+
})
|
|
161
|
+
|
|
162
|
+
// Créer un mock pour l'événement keydown
|
|
163
|
+
const mockEvent = {
|
|
164
|
+
key: 'Backspace',
|
|
165
|
+
target: {
|
|
166
|
+
value: '25/1_/____',
|
|
167
|
+
selectionStart: 2,
|
|
168
|
+
selectionEnd: 2,
|
|
169
|
+
setSelectionRange: vi.fn(),
|
|
170
|
+
},
|
|
171
|
+
preventDefault: vi.fn(),
|
|
172
|
+
} as unknown as KeyboardEvent & { target: HTMLInputElement }
|
|
173
|
+
|
|
174
|
+
// Appeler la fonction
|
|
175
|
+
handleKeydown(mockEvent)
|
|
176
|
+
|
|
177
|
+
// Vérifier que preventDefault n'a pas été appelé
|
|
178
|
+
expect(mockEvent.preventDefault).not.toHaveBeenCalled()
|
|
179
|
+
|
|
180
|
+
// Vérifier que updateDisplayValue n'a pas été appelé
|
|
181
|
+
expect(updateDisplayValue).not.toHaveBeenCalled()
|
|
182
|
+
})
|
|
183
|
+
|
|
184
|
+
it('devrait gérer correctement la touche ArrowLeft sur un séparateur', () => {
|
|
185
|
+
const { handleKeydown } = useDateInputEditing({
|
|
186
|
+
format: 'DD/MM/YYYY',
|
|
187
|
+
updateDisplayValue,
|
|
188
|
+
})
|
|
189
|
+
|
|
190
|
+
// Créer un mock pour l'événement keydown
|
|
191
|
+
const mockEvent = {
|
|
192
|
+
key: 'ArrowLeft',
|
|
193
|
+
target: {
|
|
194
|
+
value: '25/12/____',
|
|
195
|
+
selectionStart: 3,
|
|
196
|
+
selectionEnd: 3,
|
|
197
|
+
setSelectionRange: vi.fn(),
|
|
198
|
+
},
|
|
199
|
+
preventDefault: vi.fn(),
|
|
200
|
+
} as unknown as KeyboardEvent & { target: HTMLInputElement }
|
|
201
|
+
|
|
202
|
+
// Appeler la fonction
|
|
203
|
+
handleKeydown(mockEvent)
|
|
204
|
+
|
|
205
|
+
// Vérifier que preventDefault a été appelé
|
|
206
|
+
expect(mockEvent.preventDefault).toHaveBeenCalled()
|
|
207
|
+
|
|
208
|
+
// Vérifier que setSelectionRange a été appelé avec la bonne position
|
|
209
|
+
expect(mockEvent.target.setSelectionRange).toHaveBeenCalledWith(1, 1)
|
|
210
|
+
})
|
|
211
|
+
|
|
212
|
+
it('devrait gérer correctement la touche ArrowRight sur un séparateur', () => {
|
|
213
|
+
const { handleKeydown } = useDateInputEditing({
|
|
214
|
+
format: 'DD/MM/YYYY',
|
|
215
|
+
updateDisplayValue,
|
|
216
|
+
})
|
|
217
|
+
|
|
218
|
+
// Créer un mock pour l'événement keydown
|
|
219
|
+
const mockEvent = {
|
|
220
|
+
key: 'ArrowRight',
|
|
221
|
+
target: {
|
|
222
|
+
value: '25/12/____',
|
|
223
|
+
selectionStart: 2,
|
|
224
|
+
selectionEnd: 2,
|
|
225
|
+
setSelectionRange: vi.fn(),
|
|
226
|
+
},
|
|
227
|
+
preventDefault: vi.fn(),
|
|
228
|
+
} as unknown as KeyboardEvent & { target: HTMLInputElement }
|
|
229
|
+
|
|
230
|
+
// Appeler la fonction
|
|
231
|
+
handleKeydown(mockEvent)
|
|
232
|
+
|
|
233
|
+
// Vérifier que preventDefault a été appelé
|
|
234
|
+
expect(mockEvent.preventDefault).toHaveBeenCalled()
|
|
235
|
+
|
|
236
|
+
// Vérifier que setSelectionRange a été appelé avec la bonne position
|
|
237
|
+
expect(mockEvent.target.setSelectionRange).toHaveBeenCalledWith(4, 4)
|
|
238
|
+
})
|
|
239
|
+
})
|
|
240
|
+
|
|
241
|
+
describe('handlePaste', () => {
|
|
242
|
+
it('devrait formater correctement le texte collé', () => {
|
|
243
|
+
const { handlePaste } = useDateInputEditing({
|
|
244
|
+
format: 'DD/MM/YYYY',
|
|
245
|
+
updateDisplayValue,
|
|
246
|
+
})
|
|
247
|
+
|
|
248
|
+
// Créer un mock pour l'événement paste
|
|
249
|
+
const mockEvent = {
|
|
250
|
+
clipboardData: {
|
|
251
|
+
getData: vi.fn().mockReturnValue('25122023'),
|
|
252
|
+
},
|
|
253
|
+
target: {
|
|
254
|
+
value: '__/__/____',
|
|
255
|
+
selectionStart: 0,
|
|
256
|
+
selectionEnd: 0,
|
|
257
|
+
setSelectionRange: vi.fn(),
|
|
258
|
+
},
|
|
259
|
+
preventDefault: vi.fn(),
|
|
260
|
+
} as unknown as ClipboardEvent
|
|
261
|
+
|
|
262
|
+
// Appeler la fonction
|
|
263
|
+
handlePaste(mockEvent)
|
|
264
|
+
|
|
265
|
+
// Vérifier que preventDefault a été appelé
|
|
266
|
+
expect(mockEvent.preventDefault).toHaveBeenCalled()
|
|
267
|
+
|
|
268
|
+
// Vérifier que getData a été appelé avec 'text'
|
|
269
|
+
expect(mockEvent.clipboardData?.getData).toHaveBeenCalledWith('text')
|
|
270
|
+
|
|
271
|
+
// Vérifier que updateDisplayValue a été appelé avec la bonne valeur formatée
|
|
272
|
+
expect(updateDisplayValue).toHaveBeenCalledWith('25/12/2023')
|
|
273
|
+
|
|
274
|
+
// Vérifier que setSelectionRange a été appelé
|
|
275
|
+
setTimeout(() => {
|
|
276
|
+
expect((mockEvent.target as HTMLInputElement).setSelectionRange).toHaveBeenCalledWith(10, 10)
|
|
277
|
+
}, 0)
|
|
278
|
+
})
|
|
279
|
+
|
|
280
|
+
it('ne devrait rien faire si clipboardData est null', () => {
|
|
281
|
+
const { handlePaste } = useDateInputEditing({
|
|
282
|
+
format: 'DD/MM/YYYY',
|
|
283
|
+
updateDisplayValue,
|
|
284
|
+
})
|
|
285
|
+
|
|
286
|
+
// Créer un mock pour l'événement paste sans clipboardData
|
|
287
|
+
const mockEvent = {
|
|
288
|
+
clipboardData: null,
|
|
289
|
+
preventDefault: vi.fn(),
|
|
290
|
+
} as unknown as ClipboardEvent
|
|
291
|
+
|
|
292
|
+
// Appeler la fonction
|
|
293
|
+
handlePaste(mockEvent)
|
|
294
|
+
|
|
295
|
+
// Vérifier que preventDefault n'a pas été appelé
|
|
296
|
+
expect(mockEvent.preventDefault).not.toHaveBeenCalled()
|
|
297
|
+
|
|
298
|
+
// Vérifier que updateDisplayValue n'a pas été appelé
|
|
299
|
+
expect(updateDisplayValue).not.toHaveBeenCalled()
|
|
300
|
+
})
|
|
301
|
+
|
|
302
|
+
it('ne devrait rien faire si le texte collé est vide', () => {
|
|
303
|
+
const { handlePaste } = useDateInputEditing({
|
|
304
|
+
format: 'DD/MM/YYYY',
|
|
305
|
+
updateDisplayValue,
|
|
306
|
+
})
|
|
307
|
+
|
|
308
|
+
// Créer un mock pour l'événement paste avec un texte vide
|
|
309
|
+
const mockEvent = {
|
|
310
|
+
clipboardData: {
|
|
311
|
+
getData: vi.fn().mockReturnValue(''),
|
|
312
|
+
},
|
|
313
|
+
preventDefault: vi.fn(),
|
|
314
|
+
} as unknown as ClipboardEvent
|
|
315
|
+
|
|
316
|
+
// Appeler la fonction
|
|
317
|
+
handlePaste(mockEvent)
|
|
318
|
+
|
|
319
|
+
// Vérifier que getData a été appelé avec 'text'
|
|
320
|
+
expect(mockEvent.clipboardData?.getData).toHaveBeenCalledWith('text')
|
|
321
|
+
|
|
322
|
+
// Vérifier que preventDefault n'a pas été appelé
|
|
323
|
+
expect(mockEvent.preventDefault).not.toHaveBeenCalled()
|
|
324
|
+
|
|
325
|
+
// Vérifier que updateDisplayValue n'a pas été appelé
|
|
326
|
+
expect(updateDisplayValue).not.toHaveBeenCalled()
|
|
327
|
+
})
|
|
328
|
+
|
|
329
|
+
it('devrait gérer le collage au milieu d\'une date existante', () => {
|
|
330
|
+
const { handlePaste } = useDateInputEditing({
|
|
331
|
+
format: 'DD/MM/YYYY',
|
|
332
|
+
updateDisplayValue,
|
|
333
|
+
})
|
|
334
|
+
|
|
335
|
+
// Créer un mock pour l'événement paste
|
|
336
|
+
const mockEvent = {
|
|
337
|
+
clipboardData: {
|
|
338
|
+
getData: vi.fn().mockReturnValue('12'),
|
|
339
|
+
},
|
|
340
|
+
target: {
|
|
341
|
+
value: '25/__/____',
|
|
342
|
+
selectionStart: 3,
|
|
343
|
+
selectionEnd: 3,
|
|
344
|
+
setSelectionRange: vi.fn(),
|
|
345
|
+
},
|
|
346
|
+
preventDefault: vi.fn(),
|
|
347
|
+
} as unknown as ClipboardEvent
|
|
348
|
+
|
|
349
|
+
// Appeler la fonction
|
|
350
|
+
handlePaste(mockEvent)
|
|
351
|
+
|
|
352
|
+
// Vérifier que preventDefault a été appelé
|
|
353
|
+
expect(mockEvent.preventDefault).toHaveBeenCalled()
|
|
354
|
+
|
|
355
|
+
// Vérifier que updateDisplayValue a été appelé
|
|
356
|
+
expect(updateDisplayValue).toHaveBeenCalled()
|
|
357
|
+
})
|
|
358
|
+
})
|
|
359
|
+
})
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest'
|
|
2
|
+
import { useDatePickerViewMode } from '../useDatePickerViewMode'
|
|
3
|
+
|
|
4
|
+
// Mock pour watch
|
|
5
|
+
vi.mock('vue', async () => {
|
|
6
|
+
const actual = await vi.importActual('vue')
|
|
7
|
+
return {
|
|
8
|
+
...actual,
|
|
9
|
+
watch: vi.fn((getter, callback) => {
|
|
10
|
+
// Stocker le callback pour pouvoir le déclencher manuellement dans les tests
|
|
11
|
+
watchCallback = callback
|
|
12
|
+
}),
|
|
13
|
+
}
|
|
14
|
+
})
|
|
15
|
+
|
|
16
|
+
// Variable pour stocker le callback de watch
|
|
17
|
+
let watchCallback: ((newValue: boolean) => void) | null = null
|
|
18
|
+
|
|
19
|
+
describe('useDatePickerViewMode', () => {
|
|
20
|
+
// Mocks et setup
|
|
21
|
+
let isBirthDate = false
|
|
22
|
+
const mockIsBirthDateGetter = vi.fn(() => isBirthDate)
|
|
23
|
+
|
|
24
|
+
beforeEach(() => {
|
|
25
|
+
// Réinitialiser les mocks avant chaque test
|
|
26
|
+
mockIsBirthDateGetter.mockClear()
|
|
27
|
+
isBirthDate = false
|
|
28
|
+
watchCallback = null
|
|
29
|
+
})
|
|
30
|
+
|
|
31
|
+
it('devrait initialiser currentViewMode à "month" si isBirthDate est false', () => {
|
|
32
|
+
const { currentViewMode } = useDatePickerViewMode(mockIsBirthDateGetter)
|
|
33
|
+
|
|
34
|
+
expect(currentViewMode.value).toBe('month')
|
|
35
|
+
expect(mockIsBirthDateGetter).toHaveBeenCalled()
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
it('devrait initialiser currentViewMode à "year" si isBirthDate est true', () => {
|
|
39
|
+
isBirthDate = true
|
|
40
|
+
|
|
41
|
+
const { currentViewMode } = useDatePickerViewMode(mockIsBirthDateGetter)
|
|
42
|
+
|
|
43
|
+
expect(currentViewMode.value).toBe('year')
|
|
44
|
+
expect(mockIsBirthDateGetter).toHaveBeenCalled()
|
|
45
|
+
})
|
|
46
|
+
|
|
47
|
+
it('devrait mettre à jour currentViewMode quand isBirthDate change', () => {
|
|
48
|
+
const { currentViewMode } = useDatePickerViewMode(mockIsBirthDateGetter)
|
|
49
|
+
|
|
50
|
+
// Initialement, currentViewMode devrait être 'month'
|
|
51
|
+
expect(currentViewMode.value).toBe('month')
|
|
52
|
+
|
|
53
|
+
// Simuler un changement de isBirthDate
|
|
54
|
+
if (watchCallback) {
|
|
55
|
+
watchCallback(true)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// Après le changement, currentViewMode devrait être 'year'
|
|
59
|
+
expect(currentViewMode.value).toBe('year')
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
describe('handleViewModeUpdate', () => {
|
|
63
|
+
it('devrait mettre à jour currentViewMode avec la nouvelle valeur', () => {
|
|
64
|
+
const { currentViewMode, handleViewModeUpdate } = useDatePickerViewMode(mockIsBirthDateGetter)
|
|
65
|
+
|
|
66
|
+
// Initialement, currentViewMode devrait être 'month'
|
|
67
|
+
expect(currentViewMode.value).toBe('month')
|
|
68
|
+
|
|
69
|
+
// Mettre à jour le mode d'affichage
|
|
70
|
+
handleViewModeUpdate('year')
|
|
71
|
+
|
|
72
|
+
// Après la mise à jour, currentViewMode devrait être 'year'
|
|
73
|
+
expect(currentViewMode.value).toBe('year')
|
|
74
|
+
})
|
|
75
|
+
})
|
|
76
|
+
|
|
77
|
+
describe('handleYearUpdate', () => {
|
|
78
|
+
it('ne devrait pas modifier currentViewMode si isBirthDate est false', () => {
|
|
79
|
+
const { currentViewMode, handleViewModeUpdate, handleYearUpdate } = useDatePickerViewMode(mockIsBirthDateGetter)
|
|
80
|
+
|
|
81
|
+
// Mettre à jour le mode d'affichage à 'year'
|
|
82
|
+
handleViewModeUpdate('year')
|
|
83
|
+
|
|
84
|
+
// Appeler handleYearUpdate
|
|
85
|
+
handleYearUpdate()
|
|
86
|
+
|
|
87
|
+
// currentViewMode ne devrait pas changer
|
|
88
|
+
expect(currentViewMode.value).toBe('year')
|
|
89
|
+
})
|
|
90
|
+
|
|
91
|
+
it('devrait passer à "months" si isBirthDate est true', () => {
|
|
92
|
+
isBirthDate = true
|
|
93
|
+
|
|
94
|
+
const { currentViewMode, handleYearUpdate } = useDatePickerViewMode(mockIsBirthDateGetter)
|
|
95
|
+
|
|
96
|
+
// Appeler handleYearUpdate
|
|
97
|
+
handleYearUpdate()
|
|
98
|
+
|
|
99
|
+
// currentViewMode devrait passer à 'months'
|
|
100
|
+
expect(currentViewMode.value).toBe('months')
|
|
101
|
+
})
|
|
102
|
+
})
|
|
103
|
+
|
|
104
|
+
describe('handleMonthUpdate', () => {
|
|
105
|
+
it('ne devrait pas modifier currentViewMode si isBirthDate est false', () => {
|
|
106
|
+
const { currentViewMode, handleViewModeUpdate, handleMonthUpdate } = useDatePickerViewMode(mockIsBirthDateGetter)
|
|
107
|
+
|
|
108
|
+
// Mettre à jour le mode d'affichage à 'months'
|
|
109
|
+
handleViewModeUpdate('months')
|
|
110
|
+
|
|
111
|
+
// Appeler handleMonthUpdate
|
|
112
|
+
handleMonthUpdate()
|
|
113
|
+
|
|
114
|
+
// currentViewMode ne devrait pas changer
|
|
115
|
+
expect(currentViewMode.value).toBe('months')
|
|
116
|
+
})
|
|
117
|
+
|
|
118
|
+
it('devrait passer à undefined si isBirthDate est true', () => {
|
|
119
|
+
isBirthDate = true
|
|
120
|
+
|
|
121
|
+
const { currentViewMode, handleMonthUpdate } = useDatePickerViewMode(mockIsBirthDateGetter)
|
|
122
|
+
|
|
123
|
+
// Appeler handleMonthUpdate
|
|
124
|
+
handleMonthUpdate()
|
|
125
|
+
|
|
126
|
+
// currentViewMode devrait passer à undefined
|
|
127
|
+
expect(currentViewMode.value).toBeUndefined()
|
|
128
|
+
})
|
|
129
|
+
})
|
|
130
|
+
|
|
131
|
+
describe('resetViewMode', () => {
|
|
132
|
+
it('devrait réinitialiser currentViewMode à "month" si isBirthDate est false', () => {
|
|
133
|
+
const { currentViewMode, handleViewModeUpdate, resetViewMode } = useDatePickerViewMode(mockIsBirthDateGetter)
|
|
134
|
+
|
|
135
|
+
// Mettre à jour le mode d'affichage à 'year'
|
|
136
|
+
handleViewModeUpdate('year')
|
|
137
|
+
|
|
138
|
+
// Réinitialiser le mode d'affichage
|
|
139
|
+
resetViewMode()
|
|
140
|
+
|
|
141
|
+
// currentViewMode devrait être réinitialisé à 'month'
|
|
142
|
+
expect(currentViewMode.value).toBe('month')
|
|
143
|
+
})
|
|
144
|
+
|
|
145
|
+
it('devrait réinitialiser currentViewMode à "year" si isBirthDate est true', () => {
|
|
146
|
+
isBirthDate = true
|
|
147
|
+
|
|
148
|
+
const { currentViewMode, handleViewModeUpdate, resetViewMode } = useDatePickerViewMode(mockIsBirthDateGetter)
|
|
149
|
+
|
|
150
|
+
// Mettre à jour le mode d'affichage à 'months'
|
|
151
|
+
handleViewModeUpdate('months')
|
|
152
|
+
|
|
153
|
+
// Réinitialiser le mode d'affichage
|
|
154
|
+
resetViewMode()
|
|
155
|
+
|
|
156
|
+
// currentViewMode devrait être réinitialisé à 'year'
|
|
157
|
+
expect(currentViewMode.value).toBe('year')
|
|
158
|
+
})
|
|
159
|
+
})
|
|
160
|
+
})
|