@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
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
import { ref, computed, watch, onMounted, onBeforeUnmount, nextTick, type ComponentPublicInstance } from 'vue'
|
|
3
|
-
import SyTextField from '
|
|
4
|
-
import DateTextInput from '
|
|
3
|
+
import SyTextField from '../../Customs/SyTextField/SyTextField.vue'
|
|
4
|
+
import DateTextInput from '../DateTextInput/DateTextInput.vue'
|
|
5
|
+
import ComplexDatePicker from '../ComplexDatePicker/ComplexDatePicker.vue'
|
|
5
6
|
import { VDatePicker } from 'vuetify/components'
|
|
6
7
|
import { useValidation } from '@/composables/validation/useValidation'
|
|
7
8
|
import { useDateFormat } from '@/composables/date/useDateFormatDayjs'
|
|
8
9
|
import { useDateInitialization, type DateValue, type DateInput } from '@/composables/date/useDateInitializationDayjs'
|
|
9
10
|
import { useDatePickerAccessibility } from '@/composables/date/useDatePickerAccessibility'
|
|
11
|
+
import { useWeekendDays, useTodayButton, useDatePickerViewMode, useDateSelection, useMonthButtonCustomization, useDisplayedDateString } from '../composables'
|
|
12
|
+
import { DATE_PICKER_MESSAGES } from '../constants/messages'
|
|
10
13
|
import dayjs from 'dayjs'
|
|
11
14
|
import customParseFormat from 'dayjs/plugin/customParseFormat'
|
|
15
|
+
import { mdiCalendar } from '@mdi/js'
|
|
12
16
|
|
|
13
17
|
// Initialiser les plugins dayjs
|
|
14
18
|
dayjs.extend(customParseFormat)
|
|
@@ -19,10 +23,12 @@
|
|
|
19
23
|
|
|
20
24
|
const props = withDefaults(defineProps<{
|
|
21
25
|
modelValue?: DateInput
|
|
26
|
+
label?: string
|
|
22
27
|
placeholder?: string
|
|
23
28
|
format?: string
|
|
24
29
|
dateFormatReturn?: string
|
|
25
30
|
isBirthDate?: boolean
|
|
31
|
+
birthDate?: boolean // Alias pour isBirthDate pour compatibilité avec l'attribut kebab-case birth-date
|
|
26
32
|
showWeekNumber?: boolean
|
|
27
33
|
required?: boolean
|
|
28
34
|
displayRange?: boolean
|
|
@@ -42,12 +48,24 @@
|
|
|
42
48
|
disableErrorHandling?: boolean
|
|
43
49
|
showSuccessMessages?: boolean
|
|
44
50
|
bgColor?: string
|
|
51
|
+
density?: 'default' | 'comfortable' | 'compact'
|
|
52
|
+
hideDetails?: boolean | 'auto'
|
|
53
|
+
displayWeekendDays?: boolean
|
|
54
|
+
displayTodayButton?: boolean
|
|
55
|
+
useCombinedMode?: boolean
|
|
56
|
+
textFieldActivator?: boolean
|
|
57
|
+
period?: {
|
|
58
|
+
min?: string
|
|
59
|
+
max?: string
|
|
60
|
+
}
|
|
45
61
|
}>(), {
|
|
46
62
|
modelValue: undefined,
|
|
47
|
-
|
|
48
|
-
|
|
63
|
+
label: DATE_PICKER_MESSAGES.LABEL_DEFAULT,
|
|
64
|
+
placeholder: DATE_PICKER_MESSAGES.PLACEHOLDER_DEFAULT,
|
|
65
|
+
format: DATE_PICKER_MESSAGES.FORMAT_DEFAULT,
|
|
49
66
|
dateFormatReturn: '',
|
|
50
67
|
isBirthDate: false,
|
|
68
|
+
birthDate: false,
|
|
51
69
|
showWeekNumber: false,
|
|
52
70
|
required: false,
|
|
53
71
|
displayRange: false,
|
|
@@ -65,8 +83,58 @@
|
|
|
65
83
|
disableErrorHandling: false,
|
|
66
84
|
showSuccessMessages: true,
|
|
67
85
|
bgColor: undefined,
|
|
86
|
+
density: 'default',
|
|
87
|
+
hideDetails: false,
|
|
88
|
+
displayWeekendDays: true,
|
|
89
|
+
displayTodayButton: true,
|
|
90
|
+
useCombinedMode: false,
|
|
91
|
+
textFieldActivator: false,
|
|
92
|
+
period: () => ({
|
|
93
|
+
min: '',
|
|
94
|
+
max: '',
|
|
95
|
+
}),
|
|
96
|
+
})
|
|
97
|
+
|
|
98
|
+
// La compatibilité entre isBirthDate et birthDate est gérée directement dans l'appel au composable
|
|
99
|
+
|
|
100
|
+
// Utilisation des composables pour les fonctionnalités du DatePicker
|
|
101
|
+
const { displayWeekendDays } = useWeekendDays(props)
|
|
102
|
+
const { todayInString } = useTodayButton(props)
|
|
103
|
+
|
|
104
|
+
const selectedDates = ref<Date | Date[] | null>(
|
|
105
|
+
initializeSelectedDates(props.modelValue as DateInput | null, props.format, props.dateFormatReturn),
|
|
106
|
+
)
|
|
107
|
+
|
|
108
|
+
// Utilisation du composable pour l'affichage formaté des dates
|
|
109
|
+
const { displayedDateString } = useDisplayedDateString({
|
|
110
|
+
selectedDates,
|
|
111
|
+
todayInString,
|
|
68
112
|
})
|
|
69
113
|
|
|
114
|
+
// Fonction pour sélectionner la date du jour
|
|
115
|
+
const handleSelectToday = () => {
|
|
116
|
+
// Créer une seule instance de la date du jour
|
|
117
|
+
const today = new Date()
|
|
118
|
+
|
|
119
|
+
// Si c'est une plage de dates, on définit le même jour pour début et fin
|
|
120
|
+
if (props.displayRange) {
|
|
121
|
+
selectedDates.value = [today, today]
|
|
122
|
+
// Formater les dates pour le modèle (format de retour)
|
|
123
|
+
const formattedToday = formatDate(today, props.dateFormatReturn || props.format)
|
|
124
|
+
updateModel([formattedToday, formattedToday])
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
// Sinon, on sélectionne simplement aujourd'hui
|
|
128
|
+
selectedDates.value = today
|
|
129
|
+
// Formater la date pour le modèle (format de retour)
|
|
130
|
+
const formattedToday = formatDate(today, props.dateFormatReturn || props.format)
|
|
131
|
+
updateModel(formattedToday)
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// Mettre à jour l'affichage formaté
|
|
135
|
+
updateDisplayFormattedDate()
|
|
136
|
+
}
|
|
137
|
+
|
|
70
138
|
const emit = defineEmits<{
|
|
71
139
|
(e: 'update:modelValue', value: DateValue): void
|
|
72
140
|
(e: 'closed'): void
|
|
@@ -74,10 +142,6 @@
|
|
|
74
142
|
(e: 'blur'): void
|
|
75
143
|
}>()
|
|
76
144
|
|
|
77
|
-
const selectedDates = ref<Date | Date[] | null>(
|
|
78
|
-
initializeSelectedDates(props.modelValue as DateInput | null, props.format, props.dateFormatReturn),
|
|
79
|
-
)
|
|
80
|
-
|
|
81
145
|
const isDatePickerVisible = ref(false)
|
|
82
146
|
const validation = useValidation({
|
|
83
147
|
showSuccessMessages: props.showSuccessMessages,
|
|
@@ -105,6 +169,7 @@
|
|
|
105
169
|
|
|
106
170
|
// Variable pour éviter les mises à jour récursives
|
|
107
171
|
const isUpdatingFromInternal = ref(false)
|
|
172
|
+
const isInitialValidation = ref(true)
|
|
108
173
|
|
|
109
174
|
// Fonction pour valider les dates
|
|
110
175
|
const validateDates = (forceValidation = false) => {
|
|
@@ -125,12 +190,12 @@
|
|
|
125
190
|
if (props.readonly) {
|
|
126
191
|
return
|
|
127
192
|
}
|
|
128
|
-
|
|
129
|
-
|
|
193
|
+
// Ne pas afficher d'erreur si on est dans le contexte du mounted initial
|
|
194
|
+
if (shouldDisplayErrors && (!isInitialValidation.value || forceValidation)) {
|
|
195
|
+
errors.value.push(DATE_PICKER_MESSAGES.ERROR_REQUIRED)
|
|
130
196
|
}
|
|
131
197
|
return
|
|
132
198
|
}
|
|
133
|
-
|
|
134
199
|
if (!selectedDates.value) return
|
|
135
200
|
|
|
136
201
|
// Préparer les dates à valider
|
|
@@ -163,6 +228,9 @@
|
|
|
163
228
|
try {
|
|
164
229
|
isUpdatingFromInternal.value = true
|
|
165
230
|
emit('update:modelValue', value)
|
|
231
|
+
isDatePickerVisible.value = false
|
|
232
|
+
emit('closed')
|
|
233
|
+
validateDates()
|
|
166
234
|
}
|
|
167
235
|
finally {
|
|
168
236
|
// S'assurer que le flag est toujours réinitialisé
|
|
@@ -219,17 +287,32 @@
|
|
|
219
287
|
'min-width': '100%',
|
|
220
288
|
}))
|
|
221
289
|
|
|
290
|
+
// Utilisation du composable pour gérer la sélection de dates
|
|
291
|
+
const { updateSelectedDates, rangeBoundaryDates } = useDateSelection(
|
|
292
|
+
parseDate,
|
|
293
|
+
selectedDates,
|
|
294
|
+
props.format,
|
|
295
|
+
props.displayRange,
|
|
296
|
+
)
|
|
297
|
+
|
|
222
298
|
// Date(s) formatée(s) en chaîne de caractères pour la valeur de retour
|
|
223
299
|
const formattedDate = computed<DateValue>(() => {
|
|
224
300
|
if (!selectedDates.value) return ''
|
|
225
301
|
|
|
226
302
|
const returnFormat = props.dateFormatReturn || props.format
|
|
227
303
|
|
|
228
|
-
|
|
304
|
+
// Pour les plages de dates, utiliser rangeBoundaryDates s'il est disponible
|
|
305
|
+
if (props.displayRange && rangeBoundaryDates.value) {
|
|
306
|
+
return [
|
|
307
|
+
formatDate(rangeBoundaryDates.value[0], returnFormat),
|
|
308
|
+
formatDate(rangeBoundaryDates.value[1], returnFormat),
|
|
309
|
+
] as [string, string]
|
|
310
|
+
}
|
|
311
|
+
else if (Array.isArray(selectedDates.value)) {
|
|
229
312
|
if (selectedDates.value.length >= 2) {
|
|
230
313
|
return [
|
|
231
314
|
formatDate(selectedDates.value[0], returnFormat),
|
|
232
|
-
formatDate(selectedDates.value[1], returnFormat),
|
|
315
|
+
formatDate(selectedDates.value[selectedDates.value.length - 1], returnFormat),
|
|
233
316
|
] as [string, string]
|
|
234
317
|
}
|
|
235
318
|
return ''
|
|
@@ -256,9 +339,59 @@
|
|
|
256
339
|
}
|
|
257
340
|
}, { immediate: true })
|
|
258
341
|
|
|
342
|
+
// Gestionnaire pour les mises à jour du DateTextInput en mode no-calendar
|
|
343
|
+
const handleDateTextInputUpdate = (value: DateValue) => {
|
|
344
|
+
if (isUpdatingFromInternal.value) return
|
|
345
|
+
|
|
346
|
+
try {
|
|
347
|
+
isUpdatingFromInternal.value = true
|
|
348
|
+
|
|
349
|
+
// Mettre à jour le modèle avec la valeur reçue du DateTextInput
|
|
350
|
+
updateModel(value)
|
|
351
|
+
|
|
352
|
+
// Mettre à jour selectedDates en fonction de la valeur reçue
|
|
353
|
+
if (!value) {
|
|
354
|
+
selectedDates.value = null
|
|
355
|
+
displayFormattedDate.value = ''
|
|
356
|
+
}
|
|
357
|
+
else if (Array.isArray(value) && props.displayRange) {
|
|
358
|
+
// Pour les plages de dates
|
|
359
|
+
const [startDateStr, endDateStr] = value
|
|
360
|
+
const startDate = parseDate(startDateStr, props.dateFormatReturn || props.format)
|
|
361
|
+
const endDate = parseDate(endDateStr, props.dateFormatReturn || props.format)
|
|
362
|
+
|
|
363
|
+
if (startDate && endDate) {
|
|
364
|
+
selectedDates.value = [startDate, endDate]
|
|
365
|
+
displayFormattedDate.value = `${formatDate(startDate, props.format)} - ${formatDate(endDate, props.format)}`
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
else if (typeof value === 'string') {
|
|
369
|
+
// Pour une date unique
|
|
370
|
+
const date = parseDate(value, props.dateFormatReturn || props.format)
|
|
371
|
+
if (date) {
|
|
372
|
+
selectedDates.value = date
|
|
373
|
+
displayFormattedDate.value = formatDate(date, props.format)
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
finally {
|
|
378
|
+
setTimeout(() => {
|
|
379
|
+
isUpdatingFromInternal.value = false
|
|
380
|
+
}, 0)
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
// Gestionnaire pour les événements date-selected du DateTextInput
|
|
385
|
+
const handleDateTextInputSelection = (value: DateValue) => {
|
|
386
|
+
if (isUpdatingFromInternal.value) return
|
|
387
|
+
|
|
388
|
+
// Mettre à jour le modèle avec la valeur sélectionnée
|
|
389
|
+
updateModel(value)
|
|
390
|
+
}
|
|
391
|
+
|
|
259
392
|
watch(textInputValue, (newValue) => {
|
|
260
393
|
// Éviter les mises à jour récursives
|
|
261
|
-
if (isUpdatingFromInternal.value) return
|
|
394
|
+
if (isUpdatingFromInternal.value || props.noCalendar) return
|
|
262
395
|
|
|
263
396
|
// Parse la date avec le format d'affichage
|
|
264
397
|
const date = parseDate(newValue, props.format)
|
|
@@ -343,26 +476,7 @@
|
|
|
343
476
|
}
|
|
344
477
|
}
|
|
345
478
|
|
|
346
|
-
|
|
347
|
-
if (Array.isArray(input)) {
|
|
348
|
-
const dates = input
|
|
349
|
-
.map(date => (date ? parseDate(date, props.format) : null))
|
|
350
|
-
.filter((date): date is Date => date !== null)
|
|
351
|
-
|
|
352
|
-
if (dates.length === 0) {
|
|
353
|
-
selectedDates.value = null
|
|
354
|
-
return
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
selectedDates.value = dates
|
|
358
|
-
return
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
if (!props.displayRange) {
|
|
362
|
-
const date = input ? parseDate(input, props.format) : null
|
|
363
|
-
selectedDates.value = date === null ? null : date
|
|
364
|
-
}
|
|
365
|
-
}
|
|
479
|
+
// Le composable useDateSelection est déjà initialisé plus haut dans le code
|
|
366
480
|
|
|
367
481
|
// Gestionnaire de clic en dehors
|
|
368
482
|
const handleClickOutside = (event: MouseEvent) => {
|
|
@@ -378,20 +492,31 @@
|
|
|
378
492
|
validateDates()
|
|
379
493
|
}
|
|
380
494
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
495
|
+
// todayInString est maintenant fourni par le composable useTodayButton
|
|
496
|
+
|
|
497
|
+
// Utilisation du composable pour personnaliser le bouton du mois
|
|
498
|
+
const { customizeMonthButton, setupMonthButtonObserver } = useMonthButtonCustomization(
|
|
499
|
+
() => isDatePickerVisible.value,
|
|
500
|
+
)
|
|
384
501
|
|
|
385
502
|
onMounted(() => {
|
|
386
503
|
document.addEventListener('click', handleClickOutside)
|
|
387
504
|
|
|
505
|
+
// Configurer l'observateur pour le bouton du mois
|
|
506
|
+
setupMonthButtonObserver()
|
|
507
|
+
|
|
388
508
|
// Initialiser l'affichage formaté
|
|
389
509
|
if (displayFormattedDateComputed.value) {
|
|
390
510
|
displayFormattedDate.value = displayFormattedDateComputed.value
|
|
391
511
|
}
|
|
392
512
|
|
|
393
|
-
// Valider les dates au montage
|
|
513
|
+
// Valider les dates au montage, mais sans afficher d'erreur pour le required
|
|
394
514
|
validateDates()
|
|
515
|
+
|
|
516
|
+
// Après la validation initiale, désactiver le flag
|
|
517
|
+
nextTick(() => {
|
|
518
|
+
isInitialValidation.value = false
|
|
519
|
+
})
|
|
395
520
|
})
|
|
396
521
|
|
|
397
522
|
onBeforeUnmount(() => {
|
|
@@ -418,35 +543,11 @@
|
|
|
418
543
|
}
|
|
419
544
|
}
|
|
420
545
|
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
watch(() => props.isBirthDate, (newValue) => {
|
|
427
|
-
currentViewMode.value = newValue ? 'year' : 'month'
|
|
428
|
-
})
|
|
429
|
-
|
|
430
|
-
// Fonction pour gérer le changement de mode d'affichage
|
|
431
|
-
const handleViewModeUpdate = (newMode: ViewMode) => {
|
|
432
|
-
currentViewMode.value = newMode
|
|
433
|
-
}
|
|
434
|
-
|
|
435
|
-
// Fonction pour gérer la sélection de l'année quand isBirthDate est true
|
|
436
|
-
const handleYearUpdate = () => {
|
|
437
|
-
if (props.isBirthDate) {
|
|
438
|
-
// Après la sélection de l'année, passer automatiquement à la sélection du mois
|
|
439
|
-
currentViewMode.value = 'months'
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
// Fonction pour gérer la sélection du mois quand isBirthDate est true
|
|
444
|
-
const handleMonthUpdate = () => {
|
|
445
|
-
if (props.isBirthDate) {
|
|
446
|
-
// Après la sélection du mois, passer automatiquement à la sélection du jour
|
|
447
|
-
currentViewMode.value = undefined
|
|
448
|
-
}
|
|
449
|
-
}
|
|
546
|
+
// Utilisation du composable pour gérer le mode d'affichage du DatePicker
|
|
547
|
+
const { currentViewMode, handleViewModeUpdate, handleYearUpdate, handleMonthUpdate, resetViewMode } = useDatePickerViewMode(
|
|
548
|
+
// Fonction qui retourne la valeur actuelle de isBirthDate (combinaison de isBirthDate et birthDate)
|
|
549
|
+
() => props.isBirthDate || props.birthDate,
|
|
550
|
+
)
|
|
450
551
|
|
|
451
552
|
const handleInputBlur = () => {
|
|
452
553
|
emit('blur')
|
|
@@ -456,7 +557,7 @@
|
|
|
456
557
|
watch(isDatePickerVisible, async (isVisible) => {
|
|
457
558
|
if (!isVisible && props.isBirthDate) {
|
|
458
559
|
// Réinitialiser le mode d'affichage au type birthdate
|
|
459
|
-
|
|
560
|
+
resetViewMode()
|
|
460
561
|
}
|
|
461
562
|
|
|
462
563
|
if (isVisible) {
|
|
@@ -525,25 +626,44 @@
|
|
|
525
626
|
if (isUpdatingFromInternal.value) {
|
|
526
627
|
if (props.displayRange) {
|
|
527
628
|
if (Array.isArray(newValue) && newValue.length >= 2) {
|
|
528
|
-
|
|
529
|
-
|
|
629
|
+
// Synchroniser les dates de plage avec le modèle
|
|
630
|
+
syncFromModelValue(newValue)
|
|
530
631
|
}
|
|
531
632
|
}
|
|
532
|
-
else {
|
|
533
|
-
isDatePickerVisible.value = false
|
|
534
|
-
emit('closed')
|
|
535
|
-
}
|
|
536
633
|
return
|
|
537
634
|
}
|
|
538
635
|
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
isUpdatingFromInternal.value =
|
|
546
|
-
|
|
636
|
+
// Synchroniser les dates sélectionnées avec le modèle
|
|
637
|
+
syncFromModelValue(newValue)
|
|
638
|
+
|
|
639
|
+
// Mettre à jour textInputValue pour le DateTextInput en mode no-calendar
|
|
640
|
+
if (props.noCalendar) {
|
|
641
|
+
try {
|
|
642
|
+
isUpdatingFromInternal.value = true
|
|
643
|
+
|
|
644
|
+
if (!newValue) {
|
|
645
|
+
textInputValue.value = ''
|
|
646
|
+
}
|
|
647
|
+
else if (Array.isArray(newValue) && props.displayRange) {
|
|
648
|
+
// Pour les plages de dates, on ne modifie pas directement textInputValue
|
|
649
|
+
// car le DateTextInput gère son propre formatage
|
|
650
|
+
}
|
|
651
|
+
else if (typeof newValue === 'string') {
|
|
652
|
+
// Pour une date unique
|
|
653
|
+
const date = parseDate(newValue, props.dateFormatReturn || props.format)
|
|
654
|
+
if (date) {
|
|
655
|
+
textInputValue.value = formatDate(date, props.format)
|
|
656
|
+
}
|
|
657
|
+
else {
|
|
658
|
+
textInputValue.value = newValue
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
finally {
|
|
663
|
+
setTimeout(() => {
|
|
664
|
+
isUpdatingFromInternal.value = false
|
|
665
|
+
}, 0)
|
|
666
|
+
}
|
|
547
667
|
}
|
|
548
668
|
}, { immediate: true })
|
|
549
669
|
|
|
@@ -553,7 +673,6 @@
|
|
|
553
673
|
isDatePickerVisible.value = !isDatePickerVisible.value
|
|
554
674
|
|
|
555
675
|
if (isDatePickerVisible.value) {
|
|
556
|
-
// Mettre à jour l'accessibilité après l'ouverture du DatePicker
|
|
557
676
|
nextTick(() => {
|
|
558
677
|
updateAccessibility()
|
|
559
678
|
})
|
|
@@ -566,6 +685,7 @@
|
|
|
566
685
|
|
|
567
686
|
const openDatePickerOnClick = () => {
|
|
568
687
|
openDatePicker()
|
|
688
|
+
customizeMonthButton()
|
|
569
689
|
}
|
|
570
690
|
|
|
571
691
|
const openDatePickerOnFocus = () => {
|
|
@@ -616,9 +736,46 @@
|
|
|
616
736
|
:disable-error-handling="props.disableErrorHandling"
|
|
617
737
|
:show-success-messages="props.showSuccessMessages"
|
|
618
738
|
:bg-color="props.bgColor"
|
|
739
|
+
:hide-details="props.hideDetails"
|
|
740
|
+
:display-range="props.displayRange"
|
|
619
741
|
title="Date text input"
|
|
620
742
|
@focus="emit('focus')"
|
|
621
743
|
@blur="emit('blur')"
|
|
744
|
+
@date-selected="handleDateTextInputSelection"
|
|
745
|
+
@update:model-value="handleDateTextInputUpdate"
|
|
746
|
+
/>
|
|
747
|
+
</template>
|
|
748
|
+
<template v-else-if="props.useCombinedMode">
|
|
749
|
+
<ComplexDatePicker
|
|
750
|
+
:model-value="props.modelValue"
|
|
751
|
+
:format="props.format"
|
|
752
|
+
:date-format-return="props.dateFormatReturn"
|
|
753
|
+
:required="props.required"
|
|
754
|
+
:custom-rules="props.customRules"
|
|
755
|
+
:custom-warning-rules="props.customWarningRules"
|
|
756
|
+
:disabled="props.disabled"
|
|
757
|
+
:readonly="props.readonly"
|
|
758
|
+
:is-outlined="props.isOutlined"
|
|
759
|
+
:display-icon="props.displayIcon"
|
|
760
|
+
:display-append-icon="props.displayAppendIcon"
|
|
761
|
+
:display-prepend-icon="props.displayPrependIcon"
|
|
762
|
+
:no-icon="props.noIcon"
|
|
763
|
+
:disable-error-handling="props.disableErrorHandling"
|
|
764
|
+
:show-success-messages="props.showSuccessMessages"
|
|
765
|
+
:bg-color="props.bgColor"
|
|
766
|
+
:density="props.density"
|
|
767
|
+
:hide-details="props.hideDetails"
|
|
768
|
+
:display-range="props.displayRange"
|
|
769
|
+
:display-weekend-days="props.displayWeekendDays"
|
|
770
|
+
:display-today-button="props.displayTodayButton"
|
|
771
|
+
:show-week-number="props.showWeekNumber"
|
|
772
|
+
:is-birth-date="props.isBirthDate || props.birthDate"
|
|
773
|
+
:text-field-activator="props.textFieldActivator"
|
|
774
|
+
:title="'Date text input'"
|
|
775
|
+
:period="period"
|
|
776
|
+
@update:model-value="emit('update:modelValue', $event)"
|
|
777
|
+
@focus="emit('focus')"
|
|
778
|
+
@blur="emit('blur')"
|
|
622
779
|
/>
|
|
623
780
|
</template>
|
|
624
781
|
<template v-else>
|
|
@@ -656,6 +813,8 @@
|
|
|
656
813
|
color="primary"
|
|
657
814
|
:show-success-messages="props.showSuccessMessages"
|
|
658
815
|
:bg-color="props.bgColor"
|
|
816
|
+
:density="props.density"
|
|
817
|
+
:hide-details="props.hideDetails"
|
|
659
818
|
is-clearable
|
|
660
819
|
title="Date Picker"
|
|
661
820
|
@click="openDatePickerOnClick"
|
|
@@ -676,6 +835,9 @@
|
|
|
676
835
|
:show-adjacent-months="true"
|
|
677
836
|
:show-week="props.showWeekNumber"
|
|
678
837
|
:view-mode="currentViewMode"
|
|
838
|
+
:class="displayWeekendDays ? 'weekend' : ''"
|
|
839
|
+
:max="props.period?.max"
|
|
840
|
+
:min="props.period?.min"
|
|
679
841
|
@update:view-mode="handleViewModeUpdate"
|
|
680
842
|
@update:year="handleYearUpdate"
|
|
681
843
|
@update:month="handleMonthUpdate"
|
|
@@ -686,9 +848,32 @@
|
|
|
686
848
|
</template>
|
|
687
849
|
<template #header>
|
|
688
850
|
<h3 class="mx-auto my-auto ml-5 mb-4">
|
|
689
|
-
{{
|
|
851
|
+
{{ displayedDateString }}
|
|
690
852
|
</h3>
|
|
691
853
|
</template>
|
|
854
|
+
<template
|
|
855
|
+
v-if="props.displayTodayButton"
|
|
856
|
+
#actions
|
|
857
|
+
>
|
|
858
|
+
<div class="d-flex justify-center align-center w-100">
|
|
859
|
+
<v-btn
|
|
860
|
+
v-if="props.displayTodayButton"
|
|
861
|
+
size="x-small"
|
|
862
|
+
color="primary"
|
|
863
|
+
:title="DATE_PICKER_MESSAGES.BUTTON_TODAY"
|
|
864
|
+
class="my-2 pa-2 mt-2"
|
|
865
|
+
:ripple="false"
|
|
866
|
+
@click="handleSelectToday"
|
|
867
|
+
>
|
|
868
|
+
<VIcon
|
|
869
|
+
class="mr-1"
|
|
870
|
+
>
|
|
871
|
+
{{ mdiCalendar }}
|
|
872
|
+
</VIcon>
|
|
873
|
+
{{ DATE_PICKER_MESSAGES.BUTTON_TODAY }}
|
|
874
|
+
</v-btn>
|
|
875
|
+
</div>
|
|
876
|
+
</template>
|
|
692
877
|
</VDatePicker>
|
|
693
878
|
</VMenu>
|
|
694
879
|
</template>
|
|
@@ -698,6 +883,22 @@
|
|
|
698
883
|
<style lang="scss" scoped>
|
|
699
884
|
@use '@/assets/tokens';
|
|
700
885
|
|
|
886
|
+
/* Disable ripple effect on month and year buttons */
|
|
887
|
+
:deep(.v-date-picker-controls__month-btn),
|
|
888
|
+
:deep(.v-date-picker-controls__mode-btn) {
|
|
889
|
+
.v-ripple__container,
|
|
890
|
+
.v-ripple__animation {
|
|
891
|
+
display: none !important;
|
|
892
|
+
opacity: 0 !important;
|
|
893
|
+
background-color: transparent !important;
|
|
894
|
+
pointer-events: none !important;
|
|
895
|
+
}
|
|
896
|
+
}
|
|
897
|
+
|
|
898
|
+
:deep(.v-date-picker-controls .v-btn:last-child) {
|
|
899
|
+
margin-inline-start: 0;
|
|
900
|
+
}
|
|
901
|
+
|
|
701
902
|
.label-hidden-on-focus:focus + label {
|
|
702
903
|
display: none;
|
|
703
904
|
}
|
|
@@ -797,4 +998,21 @@
|
|
|
797
998
|
.fade-leave-to {
|
|
798
999
|
opacity: 0;
|
|
799
1000
|
}
|
|
1001
|
+
|
|
1002
|
+
:deep(.weekend .v-date-picker-month__day--week-end .v-btn) {
|
|
1003
|
+
background-color: #afb1b1;
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
/* div avant la class .v-date-picker-month__day--week-end */
|
|
1007
|
+
:deep(.weekend .v-date-picker-month__day:has(+ .v-date-picker-month__day--week-end) .v-btn) {
|
|
1008
|
+
background-color: #afb1b1;
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
:deep(.v-date-picker-controls__mode-btn) {
|
|
1012
|
+
transform: none !important;
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
:deep(.v-btn--variant-text .v-btn__overlay) {
|
|
1016
|
+
padding: 13px;
|
|
1017
|
+
}
|
|
800
1018
|
</style>
|