@cnamts/synapse 1.0.0 → 1.0.2
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/README.md +1 -1
- package/dist/DateFilter-YWOTbfeL.js +98 -0
- package/dist/NumberFilter-DMmMgALM.js +121 -0
- package/dist/PeriodFilter-Bok5BHcn.js +112 -0
- package/dist/SelectFilter-BKud2WhN.js +136 -0
- package/dist/TextFilter-DvMf2thH.js +114 -0
- package/dist/{components/BackBtn → common}/constants/ExpertiseLevelEnum.d.ts +3 -0
- package/dist/components/Accordion/Accordion.d.ts +2 -1
- package/dist/components/Accordion/composables/useAccordionGroupCommunication.d.ts +5 -0
- package/dist/components/Accordion/composables/useAccordionKeyboardNavigation.d.ts +12 -0
- package/dist/components/Accordion/composables/useAccordionState.d.ts +13 -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/SyCheckbox/SyCheckbox.d.ts +85 -0
- package/dist/components/Customs/SyInputSelect/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Customs/SyInputSelect/SyInputSelect.d.ts +2 -0
- package/dist/components/Customs/SySelect/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Customs/SySelect/SySelect.d.ts +33 -13
- package/dist/components/Customs/SyTextField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Customs/SyTextField/SyTextField.d.ts +2 -2
- 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 +4295 -0
- package/dist/components/DatePicker/{DatePicker.d.ts → DatePicker/DatePicker.d.ts} +158 -104
- package/dist/components/DatePicker/{DateTextInput.d.ts → DateTextInput/DateTextInput.d.ts} +35 -27
- package/dist/components/DatePicker/composables/index.d.ts +17 -0
- package/dist/components/DatePicker/composables/useAsteriskDisplay.d.ts +14 -0
- package/dist/components/DatePicker/composables/useDateAutoClamp.d.ts +16 -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 +19 -0
- package/dist/components/DatePicker/composables/useIconState.d.ts +17 -0
- package/dist/components/DatePicker/composables/useInputBlurHandler.d.ts +31 -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 +12 -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/NirField/NirField.d.ts +7 -3
- package/dist/components/NirField/nirValidation.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/PasswordField/PasswordField.d.ts +2 -0
- package/dist/components/PeriodField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/PeriodField/PeriodField.d.ts +219 -41
- package/dist/components/PhoneField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/PhoneField/PhoneField.d.ts +2 -2
- package/dist/components/RangeField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/RangeField/RangeField.d.ts +2 -0
- package/dist/components/RatingPicker/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SearchListField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SearchListField/SearchListField.d.ts +9 -0
- 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/SyTextArea/SyTextArea.d.ts +2 -0
- package/dist/components/TableToolbar/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +652 -0
- package/dist/components/Tables/SyTable/SyTable.d.ts +671 -0
- package/dist/components/Tables/common/SyTableFilter.d.ts +126 -0
- package/dist/components/Tables/common/SyTablePagination.d.ts +1636 -0
- package/dist/components/Tables/common/TableHeader.d.ts +15 -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/filters/getFilterComponent.d.ts +1 -0
- package/dist/components/Tables/common/filters/locales.d.ts +4 -0
- package/dist/components/Tables/common/filters/logics/date.d.ts +1 -0
- package/dist/components/Tables/common/filters/logics/number.d.ts +1 -0
- package/dist/components/Tables/common/filters/logics/period.d.ts +1 -0
- package/dist/components/Tables/common/filters/logics/select.d.ts +1 -0
- package/dist/components/Tables/common/filters/logics/text.d.ts +1 -0
- package/dist/components/Tables/common/formatters.d.ts +17 -0
- package/dist/components/Tables/common/locales.d.ts +28 -0
- package/dist/components/Tables/common/organizeColumns/OrganizeColumns.d.ts +267 -0
- package/dist/components/Tables/common/organizeColumns/sortHeaders.d.ts +2 -0
- package/dist/components/Tables/common/tableAccessibilityUtils.d.ts +8 -0
- package/dist/components/Tables/common/tableFilterUtils.d.ts +3 -0
- package/dist/components/Tables/common/tableStorageUtils.d.ts +69 -0
- package/dist/components/Tables/common/tableUtils.d.ts +79 -0
- package/dist/components/Tables/common/types.d.ts +91 -0
- package/dist/components/Tables/common/usePagination.d.ts +22 -0
- package/dist/components/Tables/common/useTableCheckbox.d.ts +20 -0
- package/dist/components/Tables/common/useTableFilter.d.ts +9 -0
- package/dist/components/Tables/common/useTableHeaders.d.ts +76 -0
- package/dist/components/Tables/common/useTableItems.d.ts +24 -0
- package/dist/components/Tables/common/useTableOptions.d.ts +18 -0
- package/dist/components/Tables/index.d.ts +2 -0
- package/dist/components/ToolbarContainer/ToolbarContainer.d.ts +11 -0
- package/dist/components/UploadWorkflow/AccessibiliteItems.d.ts +1 -1
- package/dist/components/UserMenuBtn/AccessibiliteItems.d.ts +1 -1
- package/dist/components/UserMenuBtn/UserMenuBtn.d.ts +9 -2
- package/dist/components/index.d.ts +9 -5
- package/dist/design-system-v3.js +102 -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-Cx8qG7YR.js +16344 -0
- package/dist/stories/Accessibilite/Vuetify/VuetifyItems.d.ts +14 -2
- package/dist/stories/DesignTokens/StylesTypographiques.stories.new.d.ts +8 -0
- package/dist/stories/DesignTokens/TypographyDisplay.d.ts +28 -0
- package/dist/stories/DesignTokens/vue-shims.d.ts +6 -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/common/imgs/accessibility-svgrepo-com.svg +4 -0
- package/src/components/Accordion/Accessibilite/AccessibilityGuide.mdx +249 -0
- package/src/components/Accordion/Accordion.vue +48 -76
- package/src/components/Accordion/composables/__tests__/useAccordionGroupCommunication.spec.ts +146 -0
- package/src/components/Accordion/composables/__tests__/useAccordionKeyboardNavigation.spec.ts +209 -0
- package/src/components/Accordion/composables/__tests__/useAccordionState.spec.ts +144 -0
- package/src/components/Accordion/composables/useAccordionGroupCommunication.ts +52 -0
- package/src/components/Accordion/composables/useAccordionKeyboardNavigation.ts +111 -0
- package/src/components/Accordion/composables/useAccordionState.ts +59 -0
- package/src/components/Accordion/tests/__snapshots__/accordion.spec.ts.snap +3 -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/SyCheckbox/Accessibilite.mdx +303 -0
- package/src/components/Customs/SyCheckbox/SyCheckbox.mdx +50 -0
- package/src/components/Customs/SyCheckbox/SyCheckbox.stories.ts +630 -0
- package/src/components/Customs/SyCheckbox/SyCheckbox.vue +326 -0
- package/src/components/Customs/SyCheckbox/tests/SyCheckbox.spec.ts +201 -0
- package/src/components/Customs/SyInputSelect/AccessibiliteItems.ts +1 -1
- package/src/components/Customs/SyInputSelect/SyInputSelect.stories.ts +1 -0
- package/src/components/Customs/SyInputSelect/SyInputSelect.vue +8 -1
- package/src/components/Customs/SySelect/AccessibiliteItems.ts +1 -1
- package/src/components/Customs/SySelect/SySelect.stories.ts +160 -0
- package/src/components/Customs/SySelect/SySelect.vue +292 -39
- package/src/components/Customs/SySelect/tests/SySelect.spec.ts +234 -2
- package/src/components/Customs/SyTextField/AccessibiliteItems.ts +1 -1
- package/src/components/Customs/SyTextField/SyTextField.stories.ts +3 -2
- package/src/components/Customs/SyTextField/SyTextField.vue +19 -8
- 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 +1307 -0
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +769 -204
- package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.events.spec.ts +161 -0
- package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +943 -0
- package/src/components/DatePicker/DatePicker/DatePicker.mdx +176 -0
- package/src/components/DatePicker/{DatePicker.stories.ts → DatePicker/DatePicker.stories.ts} +356 -519
- package/src/components/DatePicker/{DatePicker.vue → DatePicker/DatePicker.vue} +435 -89
- package/src/components/DatePicker/DatePicker/tests/DatePicker.events.spec.ts +189 -0
- package/src/components/DatePicker/{tests → DatePicker/tests}/DatePicker.spec.ts +0 -14
- 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 +320 -0
- package/src/components/DatePicker/DateTextInput/DateTextInput.events.spec.ts +148 -0
- package/src/components/DatePicker/DateTextInput/DateTextInput.range.spec.ts +278 -0
- package/src/components/DatePicker/{tests → DateTextInput}/DateTextInput.spec.ts +10 -7
- package/src/components/DatePicker/DateTextInput/DateTextInput.vue +1111 -0
- package/src/components/DatePicker/DateTextInput/NoCalendar.mdx +64 -0
- package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +782 -0
- package/src/components/DatePicker/composables/index.ts +24 -0
- package/src/components/DatePicker/composables/tests/useDateAutoClamp.spec.ts +190 -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 +456 -0
- package/src/components/DatePicker/composables/tests/useManualDateValidation.spec.ts +233 -0
- package/src/components/DatePicker/composables/tests/useMonthButtonCustomization.spec.ts +125 -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/useAsteriskDisplay.ts +31 -0
- package/src/components/DatePicker/composables/useDateAutoClamp.ts +136 -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 +378 -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 +70 -0
- package/src/components/DatePicker/composables/useIconState.ts +53 -0
- package/src/components/DatePicker/composables/useInputBlurHandler.ts +165 -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 +187 -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/DiacriticPicker/DiacriticPicker.stories.ts +10 -0
- package/src/components/DialogBox/AccessibiliteItems.ts +1 -1
- package/src/components/DownloadBtn/AccessibiliteItems.ts +1 -1
- package/src/components/ErrorPage/Accessibilite.stories.ts +8 -0
- package/src/components/ErrorPage/AccessibiliteItems.ts +1 -1
- package/src/components/ErrorPage/ErrorPage.vue +12 -6
- package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +4 -4
- 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/NirField/NirField.mdx +22 -9
- package/src/components/NirField/NirField.stories.ts +26 -2
- package/src/components/NirField/NirField.vue +209 -22
- package/src/components/NirField/nirValidation.ts +17 -3
- package/src/components/NirField/tests/NirField.spec.ts +2 -2
- package/src/components/NotFoundPage/Accessibilite.stories.ts +8 -0
- package/src/components/NotFoundPage/AccessibiliteItems.ts +1 -1
- package/src/components/NotFoundPage/NotFoundPage.vue +2 -1
- package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +8 -6
- 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.mdx +2 -0
- 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/PasswordField/PasswordField.stories.ts +4 -0
- package/src/components/PasswordField/PasswordField.vue +3 -0
- package/src/components/PeriodField/AccessibiliteItems.ts +1 -1
- package/src/components/PeriodField/PeriodField.vue +15 -1
- package/src/components/PhoneField/AccessibiliteItems.ts +1 -1
- package/src/components/PhoneField/PhoneField.stories.ts +15 -15
- package/src/components/PhoneField/PhoneField.vue +1 -1
- package/src/components/RangeField/AccessibiliteItems.ts +1 -1
- package/src/components/RangeField/RangeField.stories.ts +9 -0
- package/src/components/RangeField/RangeField.vue +4 -0
- package/src/components/RangeField/tests/__snapshots__/RangeField.spec.ts.snap +12 -0
- package/src/components/RatingPicker/AccessibiliteItems.ts +1 -1
- package/src/components/SearchListField/AccessibiliteItems.ts +1 -1
- package/src/components/SearchListField/SearchListField.vue +5 -0
- 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/SyTextArea/SyTextArea.vue +3 -0
- package/src/components/SyTextArea/tests/SyTextArea.spec.ts +0 -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 +700 -0
- package/src/components/Tables/SyServerTable/SyServerTable.mdx +170 -0
- package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +4354 -0
- package/src/components/Tables/SyServerTable/SyServerTable.vue +391 -0
- package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +702 -0
- package/src/components/Tables/SyTable/FilterRules.stories.ts +418 -0
- package/src/components/Tables/SyTable/SyTable.mdx +139 -0
- package/src/components/Tables/SyTable/SyTable.stories.ts +2754 -0
- package/src/components/Tables/SyTable/SyTable.vue +397 -0
- package/src/components/Tables/SyTable/tests/SyTable.spec.ts +707 -0
- package/src/components/Tables/common/SyTableFilter.vue +289 -0
- package/src/components/Tables/common/SyTablePagination.vue +375 -0
- package/src/components/Tables/common/TableHeader.vue +205 -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 +235 -0
- package/src/components/Tables/common/filters/TextFilter.vue +191 -0
- package/src/components/Tables/common/filters/getFilterComponent.ts +54 -0
- package/src/components/Tables/common/filters/locales.ts +4 -0
- package/src/components/Tables/common/filters/logics/date.ts +12 -0
- package/src/components/Tables/common/filters/logics/number.ts +48 -0
- package/src/components/Tables/common/filters/logics/period.ts +25 -0
- package/src/components/Tables/common/filters/logics/select.ts +27 -0
- package/src/components/Tables/common/filters/logics/tests/TextFilterLogic.spec.ts +177 -0
- package/src/components/Tables/common/filters/logics/text.ts +62 -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 +31 -0
- package/src/components/Tables/common/organizeColumns/OrganizeColumns.vue +269 -0
- package/src/components/Tables/common/organizeColumns/sortHeaders.ts +9 -0
- package/src/components/Tables/common/tableAccessibilityUtils.ts +61 -0
- package/src/components/Tables/common/tableFilterUtils.ts +75 -0
- package/src/components/Tables/common/tableStorageUtils.ts +127 -0
- package/src/components/Tables/common/tableStyles.scss +80 -0
- package/src/components/Tables/common/tableUtils.ts +102 -0
- package/src/components/Tables/common/tests/SyTableFilter.spec.ts +312 -0
- package/src/components/Tables/common/tests/SyTablePagination.spec.ts +170 -0
- package/src/components/Tables/common/tests/filterByRange.spec.ts +215 -0
- package/src/components/Tables/common/tests/resize.spec.ts +161 -0
- package/src/components/Tables/common/tests/tableFilterUtils.spec.ts +92 -0
- package/src/components/Tables/common/tests/tableUtils.spec.ts +228 -0
- package/src/components/Tables/common/types.ts +92 -0
- package/src/components/Tables/common/usePagination.ts +83 -0
- package/src/components/Tables/common/useTableCheckbox.ts +58 -0
- package/src/components/Tables/common/useTableFilter.ts +19 -0
- package/src/components/Tables/common/useTableHeaders.ts +88 -0
- package/src/components/Tables/common/useTableItems.ts +87 -0
- package/src/components/Tables/common/useTableOptions.ts +93 -0
- package/src/components/Tables/index.ts +3 -0
- package/src/components/ToolbarContainer/ToolbarContainer.mdx +16 -0
- package/src/components/ToolbarContainer/ToolbarContainer.stories.ts +675 -0
- package/src/components/ToolbarContainer/ToolbarContainer.vue +128 -0
- package/src/components/ToolbarContainer/tests/ToolbarContainer.spec.ts +156 -0
- package/src/components/UploadWorkflow/AccessibiliteItems.ts +1 -1
- package/src/components/UserMenuBtn/AccessibiliteItems.ts +1 -1
- package/src/components/UserMenuBtn/UserMenuBtn.stories.ts +74 -0
- package/src/components/UserMenuBtn/UserMenuBtn.vue +19 -17
- package/src/components/index.ts +9 -5
- 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/Accessibilite/Aculturation/AuditDesignSystem.mdx +293 -20
- package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +448 -54
- package/src/stories/Accessibilite/Audit/RGAA.mdx +231 -23
- package/src/stories/Accessibilite/Avancement/Avancement.mdx +591 -7
- package/src/stories/Accessibilite/Avancement/Avancement.stories.ts +139 -38
- package/src/stories/Accessibilite/Introduction.mdx +258 -18
- package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +221 -31
- package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +204 -22
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +537 -24
- package/src/stories/Accessibilite/KitDePreAudit/Outils/LecteursDEcran.mdx +577 -70
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru.mdx +382 -31
- package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +419 -81
- package/src/stories/Accessibilite/Vuetify/Vuetify.mdx +132 -6
- package/src/stories/Accessibilite/Vuetify/Vuetify.stories.ts +370 -146
- package/src/stories/Accessibilite/Vuetify/VuetifyItems.ts +35 -57
- package/src/stories/Demarrer/Accueil.stories.ts +32 -8
- package/src/stories/DesignTokens/StylesTypographiques.mdx +10 -9
- package/src/stories/DesignTokens/StylesTypographiques.stories.new.ts +397 -0
- package/src/stories/DesignTokens/StylesTypographiques.stories.ts +397 -0
- package/src/stories/DesignTokens/TypographyDisplay.vue +155 -0
- package/src/stories/DesignTokens/vue-shims.d.ts +6 -0
- package/src/stories/GuideDuDev/LesBreackingChanges.mdx +0 -2
- package/src/stories/GuideDuDev/MigrationDepuisBridge.mdx +1 -1
- package/src/stories/GuideDuDev/MigrationDepuisVue2.mdx +1 -1
- package/src/stories/GuideDuDev/PortailAgent.mdx +10 -0
- package/src/stories/GuideDuDev/PortailAgent.stories.ts +506 -0
- package/src/stories/GuideDuDev/Theme.mdx +41 -0
- 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/PaginatedTable/tests/__snapshots__/PaginatedTable.spec.ts.snap +0 -886
- 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/stories/DesignTokens/ThemePA.mdx +0 -35
- /package/src/components/DatePicker/{examples → playground}/DatePickerHolidayRule.vue +0 -0
|
@@ -1,14 +1,19 @@
|
|
|
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, useAsteriskDisplay } 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'
|
|
16
|
+
import { useHolidayDay } from '@/composables/date/useHolidayDay'
|
|
12
17
|
|
|
13
18
|
// Initialiser les plugins dayjs
|
|
14
19
|
dayjs.extend(customParseFormat)
|
|
@@ -17,12 +22,20 @@
|
|
|
17
22
|
const { initializeSelectedDates } = useDateInitialization()
|
|
18
23
|
const { updateAccessibility } = useDatePickerAccessibility()
|
|
19
24
|
|
|
25
|
+
// Variables pour suivre le mois et l'année actuellement affichés dans le DatePicker
|
|
26
|
+
const currentMonth = ref<string | null>(null)
|
|
27
|
+
const currentYear = ref<string | null>(null)
|
|
28
|
+
const currentMonthName = ref<string | null>(null)
|
|
29
|
+
const currentYearName = ref<string | null>(null)
|
|
30
|
+
|
|
20
31
|
const props = withDefaults(defineProps<{
|
|
21
32
|
modelValue?: DateInput
|
|
33
|
+
label?: string
|
|
22
34
|
placeholder?: string
|
|
23
35
|
format?: string
|
|
24
36
|
dateFormatReturn?: string
|
|
25
37
|
isBirthDate?: boolean
|
|
38
|
+
birthDate?: boolean // Alias pour isBirthDate pour compatibilité avec l'attribut kebab-case birth-date
|
|
26
39
|
showWeekNumber?: boolean
|
|
27
40
|
required?: boolean
|
|
28
41
|
displayRange?: boolean
|
|
@@ -42,12 +55,27 @@
|
|
|
42
55
|
disableErrorHandling?: boolean
|
|
43
56
|
showSuccessMessages?: boolean
|
|
44
57
|
bgColor?: string
|
|
58
|
+
density?: 'default' | 'comfortable' | 'compact'
|
|
59
|
+
hideDetails?: boolean | 'auto'
|
|
60
|
+
displayWeekendDays?: boolean
|
|
61
|
+
displayTodayButton?: boolean
|
|
62
|
+
displayHolidayDays?: boolean
|
|
63
|
+
useCombinedMode?: boolean
|
|
64
|
+
textFieldActivator?: boolean
|
|
65
|
+
displayAsterisk?: boolean
|
|
66
|
+
period?: {
|
|
67
|
+
min?: string
|
|
68
|
+
max?: string
|
|
69
|
+
}
|
|
70
|
+
autoClamp?: boolean
|
|
45
71
|
}>(), {
|
|
46
72
|
modelValue: undefined,
|
|
47
|
-
|
|
48
|
-
|
|
73
|
+
label: DATE_PICKER_MESSAGES.LABEL_DEFAULT,
|
|
74
|
+
placeholder: DATE_PICKER_MESSAGES.PLACEHOLDER_DEFAULT,
|
|
75
|
+
format: DATE_PICKER_MESSAGES.FORMAT_DEFAULT,
|
|
49
76
|
dateFormatReturn: '',
|
|
50
77
|
isBirthDate: false,
|
|
78
|
+
birthDate: false,
|
|
51
79
|
showWeekNumber: false,
|
|
52
80
|
required: false,
|
|
53
81
|
displayRange: false,
|
|
@@ -64,20 +92,72 @@
|
|
|
64
92
|
width: '100%',
|
|
65
93
|
disableErrorHandling: false,
|
|
66
94
|
showSuccessMessages: true,
|
|
67
|
-
bgColor:
|
|
95
|
+
bgColor: 'white',
|
|
96
|
+
density: 'default',
|
|
97
|
+
hideDetails: false,
|
|
98
|
+
displayWeekendDays: true,
|
|
99
|
+
displayTodayButton: true,
|
|
100
|
+
displayHolidayDays: true,
|
|
101
|
+
useCombinedMode: false,
|
|
102
|
+
textFieldActivator: false,
|
|
103
|
+
displayAsterisk: false,
|
|
104
|
+
period: () => ({
|
|
105
|
+
min: '',
|
|
106
|
+
max: '',
|
|
107
|
+
}),
|
|
108
|
+
autoClamp: false,
|
|
68
109
|
})
|
|
69
110
|
|
|
111
|
+
// La compatibilité entre isBirthDate et birthDate est gérée directement dans l'appel au composable
|
|
112
|
+
|
|
113
|
+
// Utilisation des composables pour les fonctionnalités du DatePicker
|
|
114
|
+
const { displayWeekendDays } = useWeekendDays(props)
|
|
115
|
+
const { todayInString } = useTodayButton(props)
|
|
116
|
+
const { labelWithAsterisk } = useAsteriskDisplay(props)
|
|
117
|
+
|
|
118
|
+
const selectedDates = ref<Date | Date[] | null>(
|
|
119
|
+
initializeSelectedDates(props.modelValue as DateInput | null, props.format, props.dateFormatReturn),
|
|
120
|
+
)
|
|
121
|
+
|
|
122
|
+
// Utilisation du composable pour l'affichage formaté des dates
|
|
123
|
+
const { displayedDateString } = useDisplayedDateString({
|
|
124
|
+
selectedDates,
|
|
125
|
+
todayInString,
|
|
126
|
+
})
|
|
127
|
+
|
|
128
|
+
// Fonction pour sélectionner la date du jour
|
|
129
|
+
const handleSelectToday = () => {
|
|
130
|
+
// Créer une seule instance de la date du jour
|
|
131
|
+
const today = new Date()
|
|
132
|
+
|
|
133
|
+
// Si c'est une plage de dates, on définit le même jour pour début et fin
|
|
134
|
+
if (props.displayRange) {
|
|
135
|
+
selectedDates.value = [today, today]
|
|
136
|
+
// Formater les dates pour le modèle (format de retour)
|
|
137
|
+
const formattedToday = formatDate(today, props.dateFormatReturn || props.format)
|
|
138
|
+
updateModel([formattedToday, formattedToday])
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
// Sinon, on sélectionne simplement aujourd'hui
|
|
142
|
+
selectedDates.value = today
|
|
143
|
+
// Formater la date pour le modèle (format de retour)
|
|
144
|
+
const formattedToday = formatDate(today, props.dateFormatReturn || props.format)
|
|
145
|
+
updateModel(formattedToday)
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Mettre à jour l'affichage formaté
|
|
149
|
+
updateDisplayFormattedDate()
|
|
150
|
+
}
|
|
151
|
+
|
|
70
152
|
const emit = defineEmits<{
|
|
71
153
|
(e: 'update:modelValue', value: DateValue): void
|
|
72
154
|
(e: 'closed'): void
|
|
73
155
|
(e: 'focus'): void
|
|
74
156
|
(e: 'blur'): void
|
|
157
|
+
(e: 'input', value: DateValue): void
|
|
158
|
+
(e: 'date-selected', value: DateValue): void
|
|
75
159
|
}>()
|
|
76
160
|
|
|
77
|
-
const selectedDates = ref<Date | Date[] | null>(
|
|
78
|
-
initializeSelectedDates(props.modelValue as DateInput | null, props.format, props.dateFormatReturn),
|
|
79
|
-
)
|
|
80
|
-
|
|
81
161
|
const isDatePickerVisible = ref(false)
|
|
82
162
|
const validation = useValidation({
|
|
83
163
|
showSuccessMessages: props.showSuccessMessages,
|
|
@@ -105,6 +185,7 @@
|
|
|
105
185
|
|
|
106
186
|
// Variable pour éviter les mises à jour récursives
|
|
107
187
|
const isUpdatingFromInternal = ref(false)
|
|
188
|
+
const isInitialValidation = ref(true)
|
|
108
189
|
|
|
109
190
|
// Fonction pour valider les dates
|
|
110
191
|
const validateDates = (forceValidation = false) => {
|
|
@@ -125,12 +206,12 @@
|
|
|
125
206
|
if (props.readonly) {
|
|
126
207
|
return
|
|
127
208
|
}
|
|
128
|
-
|
|
129
|
-
|
|
209
|
+
// Ne pas afficher d'erreur si on est dans le contexte du mounted initial
|
|
210
|
+
if (shouldDisplayErrors && (!isInitialValidation.value || forceValidation)) {
|
|
211
|
+
errors.value.push(DATE_PICKER_MESSAGES.ERROR_REQUIRED)
|
|
130
212
|
}
|
|
131
213
|
return
|
|
132
214
|
}
|
|
133
|
-
|
|
134
215
|
if (!selectedDates.value) return
|
|
135
216
|
|
|
136
217
|
// Préparer les dates à valider
|
|
@@ -163,6 +244,9 @@
|
|
|
163
244
|
try {
|
|
164
245
|
isUpdatingFromInternal.value = true
|
|
165
246
|
emit('update:modelValue', value)
|
|
247
|
+
isDatePickerVisible.value = false
|
|
248
|
+
emit('closed')
|
|
249
|
+
validateDates()
|
|
166
250
|
}
|
|
167
251
|
finally {
|
|
168
252
|
// S'assurer que le flag est toujours réinitialisé
|
|
@@ -176,6 +260,8 @@
|
|
|
176
260
|
watch(selectedDates, (newValue) => {
|
|
177
261
|
// Valider les dates
|
|
178
262
|
validateDates()
|
|
263
|
+
// Marquer les jours fériés après la mise à jour des dates
|
|
264
|
+
markHolidayDays()
|
|
179
265
|
|
|
180
266
|
// Mettre à jour le modèle si nécessaire
|
|
181
267
|
if (newValue !== null) {
|
|
@@ -215,9 +301,13 @@
|
|
|
215
301
|
'v-messages__message--warning': warningMessages.value.length > 0 && errorMessages.value.length < 1,
|
|
216
302
|
})
|
|
217
303
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
304
|
+
// Utilisation du composable pour gérer la sélection de dates
|
|
305
|
+
const { updateSelectedDates, rangeBoundaryDates } = useDateSelection(
|
|
306
|
+
parseDate,
|
|
307
|
+
selectedDates,
|
|
308
|
+
props.format,
|
|
309
|
+
props.displayRange,
|
|
310
|
+
)
|
|
221
311
|
|
|
222
312
|
// Date(s) formatée(s) en chaîne de caractères pour la valeur de retour
|
|
223
313
|
const formattedDate = computed<DateValue>(() => {
|
|
@@ -225,11 +315,18 @@
|
|
|
225
315
|
|
|
226
316
|
const returnFormat = props.dateFormatReturn || props.format
|
|
227
317
|
|
|
228
|
-
|
|
318
|
+
// Pour les plages de dates, utiliser rangeBoundaryDates s'il est disponible
|
|
319
|
+
if (props.displayRange && rangeBoundaryDates.value) {
|
|
320
|
+
return [
|
|
321
|
+
formatDate(rangeBoundaryDates.value[0], returnFormat),
|
|
322
|
+
formatDate(rangeBoundaryDates.value[1], returnFormat),
|
|
323
|
+
] as [string, string]
|
|
324
|
+
}
|
|
325
|
+
else if (Array.isArray(selectedDates.value)) {
|
|
229
326
|
if (selectedDates.value.length >= 2) {
|
|
230
327
|
return [
|
|
231
328
|
formatDate(selectedDates.value[0], returnFormat),
|
|
232
|
-
formatDate(selectedDates.value[1], returnFormat),
|
|
329
|
+
formatDate(selectedDates.value[selectedDates.value.length - 1], returnFormat),
|
|
233
330
|
] as [string, string]
|
|
234
331
|
}
|
|
235
332
|
return ''
|
|
@@ -256,9 +353,59 @@
|
|
|
256
353
|
}
|
|
257
354
|
}, { immediate: true })
|
|
258
355
|
|
|
356
|
+
// Gestionnaire pour les mises à jour du DateTextInput en mode no-calendar
|
|
357
|
+
const handleDateTextInputUpdate = (value: DateValue) => {
|
|
358
|
+
if (isUpdatingFromInternal.value) return
|
|
359
|
+
|
|
360
|
+
try {
|
|
361
|
+
isUpdatingFromInternal.value = true
|
|
362
|
+
|
|
363
|
+
// Mettre à jour le modèle avec la valeur reçue du DateTextInput
|
|
364
|
+
updateModel(value)
|
|
365
|
+
|
|
366
|
+
// Mettre à jour selectedDates en fonction de la valeur reçue
|
|
367
|
+
if (!value) {
|
|
368
|
+
selectedDates.value = null
|
|
369
|
+
displayFormattedDate.value = ''
|
|
370
|
+
}
|
|
371
|
+
else if (Array.isArray(value) && props.displayRange) {
|
|
372
|
+
// Pour les plages de dates
|
|
373
|
+
const [startDateStr, endDateStr] = value
|
|
374
|
+
const startDate = parseDate(startDateStr, props.dateFormatReturn || props.format)
|
|
375
|
+
const endDate = parseDate(endDateStr, props.dateFormatReturn || props.format)
|
|
376
|
+
|
|
377
|
+
if (startDate && endDate) {
|
|
378
|
+
selectedDates.value = [startDate, endDate]
|
|
379
|
+
displayFormattedDate.value = `${formatDate(startDate, props.format)} - ${formatDate(endDate, props.format)}`
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
else if (typeof value === 'string') {
|
|
383
|
+
// Pour une date unique
|
|
384
|
+
const date = parseDate(value, props.dateFormatReturn || props.format)
|
|
385
|
+
if (date) {
|
|
386
|
+
selectedDates.value = date
|
|
387
|
+
displayFormattedDate.value = formatDate(date, props.format)
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
finally {
|
|
392
|
+
setTimeout(() => {
|
|
393
|
+
isUpdatingFromInternal.value = false
|
|
394
|
+
}, 0)
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
// Gestionnaire pour les événements date-selected du DateTextInput
|
|
399
|
+
const handleDateTextInputSelection = (value: DateValue) => {
|
|
400
|
+
if (isUpdatingFromInternal.value) return
|
|
401
|
+
|
|
402
|
+
// Mettre à jour le modèle avec la valeur sélectionnée
|
|
403
|
+
updateModel(value)
|
|
404
|
+
}
|
|
405
|
+
|
|
259
406
|
watch(textInputValue, (newValue) => {
|
|
260
407
|
// Éviter les mises à jour récursives
|
|
261
|
-
if (isUpdatingFromInternal.value) return
|
|
408
|
+
if (isUpdatingFromInternal.value || props.noCalendar) return
|
|
262
409
|
|
|
263
410
|
// Parse la date avec le format d'affichage
|
|
264
411
|
const date = parseDate(newValue, props.format)
|
|
@@ -343,26 +490,7 @@
|
|
|
343
490
|
}
|
|
344
491
|
}
|
|
345
492
|
|
|
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
|
-
}
|
|
493
|
+
// Le composable useDateSelection est déjà initialisé plus haut dans le code
|
|
366
494
|
|
|
367
495
|
// Gestionnaire de clic en dehors
|
|
368
496
|
const handleClickOutside = (event: MouseEvent) => {
|
|
@@ -378,20 +506,33 @@
|
|
|
378
506
|
validateDates()
|
|
379
507
|
}
|
|
380
508
|
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
509
|
+
// todayInString est maintenant fourni par le composable useTodayButton
|
|
510
|
+
|
|
511
|
+
// Utilisation du composable pour personnaliser les boutons du mois et de l'année
|
|
512
|
+
const { customizeMonthButton, setupMonthButtonObserver } = useMonthButtonCustomization(
|
|
513
|
+
() => isDatePickerVisible.value,
|
|
514
|
+
currentMonthName,
|
|
515
|
+
currentYearName,
|
|
516
|
+
)
|
|
384
517
|
|
|
385
518
|
onMounted(() => {
|
|
386
519
|
document.addEventListener('click', handleClickOutside)
|
|
387
520
|
|
|
521
|
+
// Configurer l'observateur pour le bouton du mois
|
|
522
|
+
setupMonthButtonObserver()
|
|
523
|
+
|
|
388
524
|
// Initialiser l'affichage formaté
|
|
389
525
|
if (displayFormattedDateComputed.value) {
|
|
390
526
|
displayFormattedDate.value = displayFormattedDateComputed.value
|
|
391
527
|
}
|
|
392
528
|
|
|
393
|
-
// Valider les dates au montage
|
|
529
|
+
// Valider les dates au montage, mais sans afficher d'erreur pour le required
|
|
394
530
|
validateDates()
|
|
531
|
+
|
|
532
|
+
// Après la validation initiale, désactiver le flag
|
|
533
|
+
nextTick(() => {
|
|
534
|
+
isInitialValidation.value = false
|
|
535
|
+
})
|
|
395
536
|
})
|
|
396
537
|
|
|
397
538
|
onBeforeUnmount(() => {
|
|
@@ -418,35 +559,95 @@
|
|
|
418
559
|
}
|
|
419
560
|
}
|
|
420
561
|
|
|
421
|
-
|
|
562
|
+
// Fonction pour mettre à jour le mois
|
|
563
|
+
const onUpdateMonth = (month: string) => {
|
|
564
|
+
// Éviter les mises à jour inutiles si le mois n'a pas changé
|
|
565
|
+
if (currentMonth.value === month) return
|
|
566
|
+
currentMonth.value = month
|
|
567
|
+
currentMonthName.value = dayjs().month(parseInt(month, 10)).format('MMMM')
|
|
568
|
+
handleMonthUpdate()
|
|
569
|
+
nextTick(() => {
|
|
570
|
+
if (isDatePickerVisible.value) {
|
|
571
|
+
customizeMonthButton()
|
|
572
|
+
markHolidayDays()
|
|
573
|
+
}
|
|
574
|
+
})
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
// Fonction pour mettre à jour l'année
|
|
578
|
+
const onUpdateYear = (year: string) => {
|
|
579
|
+
currentYear.value = year
|
|
580
|
+
currentYearName.value = year
|
|
581
|
+
markHolidayDays()
|
|
582
|
+
|
|
583
|
+
handleYearUpdate()
|
|
584
|
+
handleMonthUpdate()
|
|
585
|
+
nextTick(() => {
|
|
586
|
+
if (isDatePickerVisible.value) {
|
|
587
|
+
customizeMonthButton()
|
|
588
|
+
markHolidayDays()
|
|
589
|
+
}
|
|
590
|
+
})
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
// Propriété calculée pour récupérer les jours fériés de l'année courante
|
|
594
|
+
const holidays = computed(() => {
|
|
595
|
+
// Utiliser le composable useHolidayDay pour récupérer les jours fériés
|
|
596
|
+
const { getJoursFeries } = useHolidayDay()
|
|
422
597
|
|
|
423
|
-
|
|
424
|
-
|
|
598
|
+
// Convertir l'année en nombre, utiliser l'année courante comme valeur par défaut
|
|
599
|
+
const year = parseInt(currentYear.value || new Date().getFullYear().toString(), 10)
|
|
425
600
|
|
|
426
|
-
|
|
427
|
-
|
|
601
|
+
// Récupérer les jours fériés au format DD/MM/YYYY
|
|
602
|
+
const joursFeries = getJoursFeries(year)
|
|
603
|
+
|
|
604
|
+
// Tableau pour stocker les jours fériés
|
|
605
|
+
const holidayDates: Date[] = []
|
|
606
|
+
|
|
607
|
+
// Convertir les dates du format string en objets Date
|
|
608
|
+
joursFeries.forEach((dateStr) => {
|
|
609
|
+
const [day, month, yearStr] = dateStr.split('/')
|
|
610
|
+
// Mois -1 car les mois dans Date sont indexés à partir de 0
|
|
611
|
+
holidayDates.push(new Date(parseInt(yearStr), parseInt(month) - 1, parseInt(day)))
|
|
612
|
+
})
|
|
613
|
+
|
|
614
|
+
// Retourner le tableau des jours fériés
|
|
615
|
+
return holidayDates
|
|
428
616
|
})
|
|
429
617
|
|
|
430
|
-
// Fonction pour
|
|
431
|
-
const
|
|
432
|
-
|
|
433
|
-
|
|
618
|
+
// Fonction pour marquer les jours fériés dans le calendrier
|
|
619
|
+
const markHolidayDays = () => {
|
|
620
|
+
if (!props.displayHolidayDays) return
|
|
621
|
+
// Attendre que le DOM soit mis à jour
|
|
622
|
+
nextTick(() => {
|
|
623
|
+
// Récupérer l'année et le mois courants
|
|
624
|
+
const year = parseInt(currentYear.value || new Date().getFullYear().toString(), 10)
|
|
625
|
+
// Utiliser currentMonth.value !== null pour vérifier si la valeur est définie, même si c'est 0
|
|
626
|
+
const month = parseInt(currentMonth.value !== null ? currentMonth.value : new Date().getMonth().toString(), 10)
|
|
627
|
+
|
|
628
|
+
// Récupérer les jours fériés pour ce mois
|
|
629
|
+
const monthHolidays = holidays.value.filter((holiday) => {
|
|
630
|
+
// La comparaison doit tenir compte du fait que getMonth() retourne 0-11
|
|
631
|
+
return holiday.getMonth() === month
|
|
632
|
+
})
|
|
434
633
|
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
634
|
+
// Pour chaque jour férié, trouver l'élément DOM correspondant et ajouter la classe
|
|
635
|
+
monthHolidays.forEach((holiday) => {
|
|
636
|
+
const day = holiday.getDate()
|
|
637
|
+
const dateStr = `${year}-${String(month + 1).padStart(2, '0')}-${String(day).padStart(2, '0')}`
|
|
638
|
+
const dayElements = document.querySelectorAll(`[data-v-date="${dateStr}"]`)
|
|
639
|
+
dayElements.forEach((element) => {
|
|
640
|
+
element.classList.add('holiday-day')
|
|
641
|
+
})
|
|
642
|
+
})
|
|
643
|
+
})
|
|
441
644
|
}
|
|
442
645
|
|
|
443
|
-
//
|
|
444
|
-
const handleMonthUpdate = (
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
}
|
|
449
|
-
}
|
|
646
|
+
// Utilisation du composable pour gérer le mode d'affichage du DatePicker
|
|
647
|
+
const { currentViewMode, handleViewModeUpdate, handleYearUpdate, handleMonthUpdate, resetViewMode } = useDatePickerViewMode(
|
|
648
|
+
// Fonction qui retourne la valeur actuelle de isBirthDate (combinaison de isBirthDate et birthDate)
|
|
649
|
+
() => props.isBirthDate || props.birthDate,
|
|
650
|
+
)
|
|
450
651
|
|
|
451
652
|
const handleInputBlur = () => {
|
|
452
653
|
emit('blur')
|
|
@@ -454,9 +655,13 @@
|
|
|
454
655
|
}
|
|
455
656
|
|
|
456
657
|
watch(isDatePickerVisible, async (isVisible) => {
|
|
658
|
+
if (isVisible) {
|
|
659
|
+
// Marquer les jours fériés lorsque le calendrier devient visible
|
|
660
|
+
markHolidayDays()
|
|
661
|
+
}
|
|
457
662
|
if (!isVisible && props.isBirthDate) {
|
|
458
663
|
// Réinitialiser le mode d'affichage au type birthdate
|
|
459
|
-
|
|
664
|
+
resetViewMode()
|
|
460
665
|
}
|
|
461
666
|
|
|
462
667
|
if (isVisible) {
|
|
@@ -525,25 +730,44 @@
|
|
|
525
730
|
if (isUpdatingFromInternal.value) {
|
|
526
731
|
if (props.displayRange) {
|
|
527
732
|
if (Array.isArray(newValue) && newValue.length >= 2) {
|
|
528
|
-
|
|
529
|
-
|
|
733
|
+
// Synchroniser les dates de plage avec le modèle
|
|
734
|
+
syncFromModelValue(newValue)
|
|
530
735
|
}
|
|
531
736
|
}
|
|
532
|
-
else {
|
|
533
|
-
isDatePickerVisible.value = false
|
|
534
|
-
emit('closed')
|
|
535
|
-
}
|
|
536
737
|
return
|
|
537
738
|
}
|
|
538
739
|
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
isUpdatingFromInternal.value =
|
|
546
|
-
|
|
740
|
+
// Synchroniser les dates sélectionnées avec le modèle
|
|
741
|
+
syncFromModelValue(newValue)
|
|
742
|
+
|
|
743
|
+
// Mettre à jour textInputValue pour le DateTextInput en mode no-calendar
|
|
744
|
+
if (props.noCalendar) {
|
|
745
|
+
try {
|
|
746
|
+
isUpdatingFromInternal.value = true
|
|
747
|
+
|
|
748
|
+
if (!newValue) {
|
|
749
|
+
textInputValue.value = ''
|
|
750
|
+
}
|
|
751
|
+
else if (Array.isArray(newValue) && props.displayRange) {
|
|
752
|
+
// Pour les plages de dates, on ne modifie pas directement textInputValue
|
|
753
|
+
// car le DateTextInput gère son propre formatage
|
|
754
|
+
}
|
|
755
|
+
else if (typeof newValue === 'string') {
|
|
756
|
+
// Pour une date unique
|
|
757
|
+
const date = parseDate(newValue, props.dateFormatReturn || props.format)
|
|
758
|
+
if (date) {
|
|
759
|
+
textInputValue.value = formatDate(date, props.format)
|
|
760
|
+
}
|
|
761
|
+
else {
|
|
762
|
+
textInputValue.value = newValue
|
|
763
|
+
}
|
|
764
|
+
}
|
|
765
|
+
}
|
|
766
|
+
finally {
|
|
767
|
+
setTimeout(() => {
|
|
768
|
+
isUpdatingFromInternal.value = false
|
|
769
|
+
}, 0)
|
|
770
|
+
}
|
|
547
771
|
}
|
|
548
772
|
}, { immediate: true })
|
|
549
773
|
|
|
@@ -553,7 +777,6 @@
|
|
|
553
777
|
isDatePickerVisible.value = !isDatePickerVisible.value
|
|
554
778
|
|
|
555
779
|
if (isDatePickerVisible.value) {
|
|
556
|
-
// Mettre à jour l'accessibilité après l'ouverture du DatePicker
|
|
557
780
|
nextTick(() => {
|
|
558
781
|
updateAccessibility()
|
|
559
782
|
})
|
|
@@ -566,6 +789,7 @@
|
|
|
566
789
|
|
|
567
790
|
const openDatePickerOnClick = () => {
|
|
568
791
|
openDatePicker()
|
|
792
|
+
customizeMonthButton()
|
|
569
793
|
}
|
|
570
794
|
|
|
571
795
|
const openDatePickerOnFocus = () => {
|
|
@@ -592,17 +816,47 @@
|
|
|
592
816
|
<template>
|
|
593
817
|
<div
|
|
594
818
|
class="date-picker-container"
|
|
595
|
-
:style="inputStyle"
|
|
596
819
|
>
|
|
597
820
|
<template v-if="props.noCalendar">
|
|
598
821
|
<DateTextInput
|
|
599
822
|
ref="dateTextInputRef"
|
|
600
823
|
v-model="textInputValue"
|
|
601
824
|
:class="[getMessageClasses(), 'label-hidden-on-focus']"
|
|
825
|
+
:label="labelWithAsterisk || ''"
|
|
826
|
+
:placeholder="props.placeholder"
|
|
827
|
+
:format="props.format"
|
|
602
828
|
:date-format-return="props.dateFormatReturn"
|
|
829
|
+
:required="props.required"
|
|
830
|
+
:display-range="props.displayRange"
|
|
831
|
+
:display-icon="props.displayIcon"
|
|
832
|
+
:display-append-icon="props.displayAppendIcon"
|
|
833
|
+
:display-prepend-icon="props.displayPrependIcon"
|
|
834
|
+
:custom-rules="props.customRules"
|
|
835
|
+
:custom-warning-rules="props.customWarningRules"
|
|
836
|
+
:disabled="props.disabled"
|
|
837
|
+
:no-icon="props.noIcon"
|
|
838
|
+
:is-outlined="props.isOutlined"
|
|
839
|
+
:readonly="props.readonly"
|
|
840
|
+
:width="props.width"
|
|
841
|
+
:disable-error-handling="props.disableErrorHandling"
|
|
842
|
+
:show-success-messages="props.showSuccessMessages"
|
|
843
|
+
:bg-color="props.bgColor"
|
|
844
|
+
:density="props.density"
|
|
845
|
+
:hide-details="props.hideDetails"
|
|
846
|
+
:period="props.period"
|
|
847
|
+
:auto-clamp="props.autoClamp"
|
|
848
|
+
:display-asterisk="props.displayAsterisk"
|
|
849
|
+
@update:model-value="handleDateTextInputUpdate"
|
|
850
|
+
@date-selected="handleDateTextInputSelection"
|
|
851
|
+
@blur="handleInputBlur"
|
|
852
|
+
@focus="emit('focus')"
|
|
853
|
+
/>
|
|
854
|
+
</template>
|
|
855
|
+
<template v-else-if="props.useCombinedMode">
|
|
856
|
+
<ComplexDatePicker
|
|
857
|
+
:model-value="props.modelValue"
|
|
603
858
|
:format="props.format"
|
|
604
|
-
:
|
|
605
|
-
:placeholder="props.placeholder"
|
|
859
|
+
:date-format-return="props.dateFormatReturn"
|
|
606
860
|
:required="props.required"
|
|
607
861
|
:custom-rules="props.customRules"
|
|
608
862
|
:custom-warning-rules="props.customWarningRules"
|
|
@@ -616,9 +870,25 @@
|
|
|
616
870
|
:disable-error-handling="props.disableErrorHandling"
|
|
617
871
|
:show-success-messages="props.showSuccessMessages"
|
|
618
872
|
:bg-color="props.bgColor"
|
|
619
|
-
|
|
873
|
+
:density="props.density"
|
|
874
|
+
:hide-details="props.hideDetails"
|
|
875
|
+
:display-range="props.displayRange"
|
|
876
|
+
:display-weekend-days="props.displayWeekendDays"
|
|
877
|
+
:display-today-button="props.displayTodayButton"
|
|
878
|
+
:display-holiday-days="props.displayHolidayDays"
|
|
879
|
+
:display-asterisk="props.displayAsterisk"
|
|
880
|
+
:show-week-number="props.showWeekNumber"
|
|
881
|
+
:is-birth-date="props.isBirthDate || props.birthDate"
|
|
882
|
+
:text-field-activator="props.textFieldActivator"
|
|
883
|
+
:title="'Date text input'"
|
|
884
|
+
:period="period"
|
|
885
|
+
:auto-clamp="props.autoClamp"
|
|
886
|
+
:label="props.label"
|
|
887
|
+
:placeholder="props.placeholder"
|
|
888
|
+
@update:model-value="emit('update:modelValue', $event)"
|
|
620
889
|
@focus="emit('focus')"
|
|
621
890
|
@blur="emit('blur')"
|
|
891
|
+
@date-selected="emit('date-selected', $event)"
|
|
622
892
|
/>
|
|
623
893
|
</template>
|
|
624
894
|
<template v-else>
|
|
@@ -649,14 +919,20 @@
|
|
|
649
919
|
:disabled="props.disabled"
|
|
650
920
|
:disable-click-button="false"
|
|
651
921
|
:readonly="true"
|
|
652
|
-
:label="
|
|
922
|
+
:label="labelWithAsterisk || ''"
|
|
923
|
+
:placeholder="props.placeholder"
|
|
924
|
+
:display-persistent-placeholder="true"
|
|
653
925
|
:no-icon="props.noIcon"
|
|
654
926
|
:prepend-icon="displayIcon && !displayAppendIcon ? 'calendar' : undefined"
|
|
655
927
|
:variant-style="props.isOutlined ? 'outlined' : 'underlined'"
|
|
656
928
|
color="primary"
|
|
657
929
|
:show-success-messages="props.showSuccessMessages"
|
|
658
930
|
:bg-color="props.bgColor"
|
|
931
|
+
:density="props.density"
|
|
932
|
+
:hide-details="props.hideDetails"
|
|
933
|
+
:display-asterisk="props.displayAsterisk"
|
|
659
934
|
is-clearable
|
|
935
|
+
:auto-clamp="props.autoClamp"
|
|
660
936
|
title="Date Picker"
|
|
661
937
|
@click="openDatePickerOnClick"
|
|
662
938
|
@focus="openDatePickerOnFocus"
|
|
@@ -676,19 +952,49 @@
|
|
|
676
952
|
:show-adjacent-months="true"
|
|
677
953
|
:show-week="props.showWeekNumber"
|
|
678
954
|
:view-mode="currentViewMode"
|
|
955
|
+
:class="displayWeekendDays ? 'weekend' : ''"
|
|
956
|
+
:max="props.period?.max"
|
|
957
|
+
:min="props.period?.min"
|
|
958
|
+
:display-holiday-days="props.displayHolidayDays"
|
|
679
959
|
@update:view-mode="handleViewModeUpdate"
|
|
680
|
-
@update:
|
|
681
|
-
@update:
|
|
960
|
+
@update:month="onUpdateMonth"
|
|
961
|
+
@update:year="onUpdateYear"
|
|
962
|
+
@click:date="updateSelectedDates"
|
|
682
963
|
@update:model-value="updateDisplayFormattedDate"
|
|
964
|
+
@focus="markHolidayDays"
|
|
965
|
+
@update:month-year="markHolidayDays"
|
|
683
966
|
>
|
|
684
967
|
<template #title>
|
|
685
968
|
Sélectionnez une date
|
|
686
969
|
</template>
|
|
687
970
|
<template #header>
|
|
688
971
|
<h3 class="mx-auto my-auto ml-5 mb-4">
|
|
689
|
-
{{
|
|
972
|
+
{{ displayedDateString }}
|
|
690
973
|
</h3>
|
|
691
974
|
</template>
|
|
975
|
+
<template
|
|
976
|
+
v-if="props.displayTodayButton"
|
|
977
|
+
#actions
|
|
978
|
+
>
|
|
979
|
+
<div class="d-flex justify-center align-center w-100">
|
|
980
|
+
<v-btn
|
|
981
|
+
v-if="props.displayTodayButton"
|
|
982
|
+
size="x-small"
|
|
983
|
+
color="primary"
|
|
984
|
+
:title="DATE_PICKER_MESSAGES.BUTTON_TODAY"
|
|
985
|
+
class="my-2 pa-2 mt-2"
|
|
986
|
+
:ripple="false"
|
|
987
|
+
@click="handleSelectToday"
|
|
988
|
+
>
|
|
989
|
+
<VIcon
|
|
990
|
+
class="mr-1"
|
|
991
|
+
>
|
|
992
|
+
{{ mdiCalendar }}
|
|
993
|
+
</VIcon>
|
|
994
|
+
{{ DATE_PICKER_MESSAGES.BUTTON_TODAY }}
|
|
995
|
+
</v-btn>
|
|
996
|
+
</div>
|
|
997
|
+
</template>
|
|
692
998
|
</VDatePicker>
|
|
693
999
|
</VMenu>
|
|
694
1000
|
</template>
|
|
@@ -698,6 +1004,29 @@
|
|
|
698
1004
|
<style lang="scss" scoped>
|
|
699
1005
|
@use '@/assets/tokens';
|
|
700
1006
|
|
|
1007
|
+
/* Style pour les jours fériés */
|
|
1008
|
+
:deep(.holiday-day) {
|
|
1009
|
+
background-color: rgb(255 193 7 / 10%);
|
|
1010
|
+
border: 2px dotted tokens.$neutral-black;
|
|
1011
|
+
border-radius: 50%;
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
/* Disable ripple effect on month and year buttons */
|
|
1015
|
+
:deep(.v-date-picker-controls__month-btn),
|
|
1016
|
+
:deep(.v-date-picker-controls__mode-btn) {
|
|
1017
|
+
.v-ripple__container,
|
|
1018
|
+
.v-ripple__animation {
|
|
1019
|
+
display: none !important;
|
|
1020
|
+
opacity: 0 !important;
|
|
1021
|
+
background-color: transparent !important;
|
|
1022
|
+
pointer-events: none !important;
|
|
1023
|
+
}
|
|
1024
|
+
}
|
|
1025
|
+
|
|
1026
|
+
:deep(.v-date-picker-controls .v-btn:last-child) {
|
|
1027
|
+
margin-inline-start: 0;
|
|
1028
|
+
}
|
|
1029
|
+
|
|
701
1030
|
.label-hidden-on-focus:focus + label {
|
|
702
1031
|
display: none;
|
|
703
1032
|
}
|
|
@@ -768,7 +1097,7 @@
|
|
|
768
1097
|
}
|
|
769
1098
|
|
|
770
1099
|
.date-picker-container {
|
|
771
|
-
|
|
1100
|
+
width: 100%;
|
|
772
1101
|
position: relative;
|
|
773
1102
|
|
|
774
1103
|
:deep(.v-date-picker) {
|
|
@@ -797,4 +1126,21 @@
|
|
|
797
1126
|
.fade-leave-to {
|
|
798
1127
|
opacity: 0;
|
|
799
1128
|
}
|
|
1129
|
+
|
|
1130
|
+
:deep(.weekend .v-date-picker-month__day--week-end .v-btn) {
|
|
1131
|
+
background-color: #afb1b1;
|
|
1132
|
+
}
|
|
1133
|
+
|
|
1134
|
+
/* div avant la class .v-date-picker-month__day--week-end */
|
|
1135
|
+
:deep(.weekend .v-date-picker-month__day:has(+ .v-date-picker-month__day--week-end) .v-btn) {
|
|
1136
|
+
background-color: #afb1b1;
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
:deep(.v-date-picker-controls__mode-btn) {
|
|
1140
|
+
transform: none !important;
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
:deep(.v-btn--variant-text .v-btn__overlay) {
|
|
1144
|
+
padding: 13px;
|
|
1145
|
+
}
|
|
800
1146
|
</style>
|