@cnamts/synapse 1.0.25 → 1.0.27
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/{AutocompleteFilter-D7qBuCAP.js → AutocompleteFilter-C9eLKyW8.js} +3 -3
- package/dist/{DateFilter-BitMWrMU.js → DateFilter-y-GLkAkn.js} +9 -9
- package/dist/{NumberFilter-BTLUxw0a.js → NumberFilter-DN6hIBS7.js} +1 -1
- package/dist/{PeriodFilter-B5rUIPAC.js → PeriodFilter-MoUUp9qS.js} +1 -1
- package/dist/{SelectFilter-l4QnRcuk.js → SelectFilter-bCbrdLmu.js} +1 -1
- package/dist/{TextFilter-C9hj6Qrp.js → TextFilter-CvjgEaoM.js} +4 -4
- package/dist/apLightTheme2026-ug4Y23ns.js +611 -0
- package/dist/components/Customs/Selects/SyAutocomplete/SyAutocomplete.d.ts +2369 -351
- package/dist/components/Customs/Selects/SyAutocomplete/composables/useSyAutocompleteValidation.d.ts +18 -0
- package/dist/components/Customs/Selects/SyAutocomplete/utils/ariaManager.d.ts +1 -1
- package/dist/components/Customs/Selects/SyAutocomplete/utils/useKeyboardHandler.d.ts +3 -1
- package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +58 -288
- package/dist/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.d.ts +1 -0
- package/dist/components/Customs/Selects/SySelect/composables/useSySelectValidation.d.ts +15 -0
- package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +4 -3
- package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +4 -3
- package/dist/components/Customs/SyIconButton/SyIconButton.d.ts +18 -0
- package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +20 -37
- package/dist/components/Customs/SyRadioGroup/composables/useSyRadioGroupValidation.d.ts +50 -0
- package/dist/components/Customs/SyTextField/SyTextField.d.ts +8 -10
- package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +197 -185
- package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +91 -82
- package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +35 -32
- package/dist/components/DatePicker/composables/index.d.ts +1 -0
- package/dist/components/DatePicker/composables/useDatePickerState.d.ts +3 -3
- package/dist/components/DatePicker/composables/useDatePickerValidationBridge.d.ts +51 -0
- package/dist/components/DatePicker/composables/useDateTextField.d.ts +2 -2
- package/dist/components/DatePicker/composables/useInputBlurHandler.d.ts +2 -2
- package/dist/components/DatePicker/types.d.ts +1 -2
- package/dist/components/LunarCalendar/useLunarCalendarValidation.d.ts +1 -0
- package/dist/components/MonthPicker/MonthPicker.d.ts +24 -24
- package/dist/components/MonthPicker/MonthPickerText/MonthPickerInput.d.ts +24 -24
- package/dist/components/NirField/NirField.d.ts +64 -60
- package/dist/components/NirField/useNirValidation.d.ts +6 -2
- package/dist/components/PasswordField/PasswordField.d.ts +3 -3
- package/dist/components/PeriodField/PeriodField.d.ts +338 -314
- package/dist/components/PhoneField/PhoneField.d.ts +34 -24
- package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +0 -3
- package/dist/components/RatingPicker/EmotionPicker/EmotionPicker.d.ts +3 -1
- package/dist/components/RatingPicker/NumberPicker/NumberPicker.d.ts +4 -3
- package/dist/components/RatingPicker/RatingPicker.d.ts +18 -5
- package/dist/components/RatingPicker/StarsPicker/StarsPicker.d.ts +3 -1
- package/dist/components/RatingPicker/useRatingFocus.d.ts +18 -0
- package/dist/components/SyTextArea/SyTextArea.d.ts +25 -15
- package/dist/components/SyTextArea/composables/useSyTextAreaValidation.d.ts +20 -0
- package/dist/components/SyTextArea/locales.d.ts +1 -0
- package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -4
- package/dist/components/Tables/SyTable/SyTable.d.ts +5 -4
- package/dist/components/Tables/common/SyTablePagination.d.ts +152 -364
- package/dist/components/Tables/common/TableHeader.d.ts +1 -1
- package/dist/components/Tables/common/filters/DateFilter.d.ts +4 -4
- package/dist/components/Tables/common/types.d.ts +2 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/composables/date/useDateInitializationDayjs.d.ts +3 -1
- package/dist/composables/unifyValidation/documentationValidationProps.d.ts +160 -160
- package/dist/composables/unifyValidation/useCustomValidation.d.ts +3 -1
- package/dist/composables/unifyValidation/useValidation.d.ts +27 -19
- package/dist/composables/unifyValidation/useVuetifyValidation.d.ts +1 -1
- package/dist/composables/validation/useValidation.d.ts +1 -0
- package/dist/design-system-v3.js +81 -80
- package/dist/designTokens/tokens/amelipro/apContextual.d.ts +6 -6
- package/dist/designTokens/tokens/amelipro/apDarkTheme.d.ts +3 -1
- package/dist/designTokens/tokens/amelipro/apLightTheme.d.ts +53 -98
- package/dist/designTokens/tokens/baseContextualTokens.d.ts +0 -6
- package/dist/designTokens/tokens/baseTokens.d.ts +232 -0
- package/dist/designTokens/tokens/cnam/cnamContextual.d.ts +6 -6
- package/dist/designTokens/tokens/cnam/cnamDarkTheme.d.ts +1 -1
- package/dist/designTokens/tokens/cnam/cnamLightTheme.d.ts +57 -99
- package/dist/designTokens/tokens/pa/paContextual.d.ts +0 -6
- package/dist/designTokens/tokens/pa/paDarkTheme.d.ts +1 -1
- package/dist/designTokens/tokens/pa/paLightTheme.d.ts +53 -97
- package/dist/designTokens/tokens/pa/paSemantic.d.ts +1 -0
- package/dist/designTokens/tokens/semanticTokens.d.ts +112 -0
- package/dist/{main-Cpx8Co6H.js → main-CI6Q9nmO.js} +13843 -13478
- package/dist/synapse.css +1 -1
- package/dist/vuetifyConfig.js +208 -72
- package/package.json +10 -7
- package/src/assets/overrides/_icons.scss +5 -17
- package/src/assets/overrides/_otp.scss +4 -5
- package/src/assets/overrides/_typography.scss +2 -1
- package/src/assets/overrides/_utilities.scss +1 -42
- package/src/components/Accordion/Accordion.vue +2 -0
- package/src/components/ChipList/ChipList.vue +30 -18
- package/src/components/ChipList/tests/chipList.spec.ts +4 -4
- package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +2 -1
- package/src/components/CookiesSelection/CookiesSelection.vue +2 -1
- package/src/components/CopyBtn/CopyBtn.vue +9 -0
- package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.stories.ts +4 -0
- package/src/components/Customs/Selects/SelectBtnField/SelectBtnField.vue +7 -6
- package/src/components/Customs/Selects/SelectBtnField/tests/SelectBtnField.spec.ts +223 -0
- package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.stories.ts +283 -351
- package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.vue +183 -219
- package/src/components/Customs/Selects/SyAutocomplete/composables/useSyAutocompleteValidation.ts +101 -0
- package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.spec.ts +761 -1
- package/src/components/Customs/Selects/SyAutocomplete/utils/ariaManager.ts +3 -1
- package/src/components/Customs/Selects/SyAutocomplete/utils/useKeyboardHandler.ts +79 -5
- package/src/components/Customs/Selects/SyAutocomplete/validation/Validation.stories.ts +1029 -0
- package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +52 -217
- package/src/components/Customs/Selects/SySelect/SySelect.vue +248 -236
- package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +3 -0
- package/src/components/Customs/Selects/SySelect/composables/useSySelectValidation.ts +64 -0
- package/src/components/Customs/Selects/SySelect/tests/SySelect.spec.ts +440 -5
- package/src/components/Customs/Selects/SySelect/validation/Validation.stories.ts +1026 -0
- package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.stories.ts +18 -7
- package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.vue +5 -5
- package/src/components/Customs/SyCheckbox/SyCheckbox.stories.ts +8 -8
- package/src/components/Customs/SyCheckbox/SyCheckbox.vue +27 -6
- package/src/components/Customs/SyCheckbox/tests/SyCheckbox.spec.ts +1 -1
- package/src/components/Customs/SyIcon/accessibilite/Accessibility.mdx +0 -6
- package/src/components/Customs/SyIcon/utils/tests/iconUtils.spec.ts +107 -0
- package/src/components/Customs/SyRadioGroup/SyRadioGroup.mdx +2 -2
- package/src/components/Customs/SyRadioGroup/SyRadioGroup.stories.ts +395 -200
- package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +100 -127
- package/src/components/Customs/SyRadioGroup/composables/useSyRadioGroupValidation.ts +127 -0
- package/src/components/Customs/SyRadioGroup/tests/SyRadioGroup.a11y.spec.ts +93 -1
- package/src/components/Customs/SyRadioGroup/tests/SyRadioGroup.spec.ts +146 -9
- package/src/components/Customs/SyRadioGroup/tests/SyRadioGroup.visual.cy.ts +165 -0
- package/src/components/Customs/SyRadioGroup/validation/Validation.stories.ts +773 -0
- package/src/components/Customs/SyTabs/SyTabs.stories.ts +5 -5
- package/src/components/Customs/SyTabs/config.ts +3 -3
- package/src/components/Customs/SyTabs/tests/SyTabs.spec.ts +265 -0
- package/src/components/Customs/SyTabs/tests/useTabTransition.spec.ts +188 -0
- package/src/components/Customs/SyTextField/SyTextField.stories.ts +10 -29
- package/src/components/Customs/SyTextField/SyTextField.vue +52 -17
- package/src/components/DataList/DataList.stories.ts +1 -1
- package/src/components/DataListItem/tests/DataListItem.spec.ts +3 -1
- package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +1 -1
- package/src/components/DatePicker/CalendarMode/DatePicker.vue +52 -154
- package/src/components/DatePicker/CalendarMode/tests/DatePicker.coverage.spec.ts +156 -0
- package/src/components/DatePicker/CalendarMode/tests/DatePicker.spec.ts +495 -4
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +1 -1
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +55 -73
- package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +207 -1
- package/src/components/DatePicker/ComplexDatePicker/tests/bridge-integration.regression.spec.ts +210 -0
- package/src/components/DatePicker/ComplexDatePicker/tests/calendar-navigation.regression.spec.ts +214 -0
- package/src/components/DatePicker/ComplexDatePicker/tests/validation-cross.regression.spec.ts +194 -0
- package/src/components/DatePicker/ComplexDatePicker/tests/validation-success-messages.regression.spec.ts +83 -0
- package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts +1 -1
- package/src/components/DatePicker/DateTextInput/DateTextInput.vue +169 -60
- package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +1 -1
- package/src/components/DatePicker/DateTextInput/tests/DateTextInput.spec.ts +320 -0
- package/src/components/DatePicker/composables/index.ts +1 -0
- package/src/components/DatePicker/composables/tests/useCalendarKeyboardNavigation.spec.ts +360 -0
- package/src/components/DatePicker/composables/tests/useDatePickerValidationBridge.spec.ts +129 -0
- package/src/components/DatePicker/composables/useDatePickerState.ts +33 -14
- package/src/components/DatePicker/composables/useDatePickerValidationBridge.ts +205 -0
- package/src/components/DatePicker/composables/useDateRangeInput.ts +2 -1
- package/src/components/DatePicker/composables/useDateSelection.ts +2 -1
- package/src/components/DatePicker/composables/useDateTextField.ts +2 -2
- package/src/components/DatePicker/composables/useInputBlurHandler.ts +2 -2
- package/src/components/DatePicker/docExamples/BidirectionalComplexValidation.vue +1 -1
- package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +1 -1
- package/src/components/DatePicker/tests/exposed-methods.coverage.spec.ts +75 -0
- package/src/components/DatePicker/types.ts +1 -2
- package/src/components/DialogBox/DialogBox.stories.ts +8 -8
- package/src/components/DialogBox/DialogBox.vue +1 -1
- package/src/components/DialogBox/accessibilite/Accessibility.mdx +86 -22
- package/src/components/FileList/UploadItem/UploadItem.vue +4 -4
- package/src/components/FileUpload/FileUpload.vue +2 -2
- package/src/components/FileUpload/FileUploadContent.vue +1 -1
- package/src/components/FilterInline/FilterInline.mdx +2 -2
- package/src/components/FilterSideBar/FilterSideBar.stories.ts +1 -1
- package/src/components/FilterSideBar/FilterSideBar.vue +4 -3
- package/src/components/FooterBar/FooterBar.vue +7 -7
- package/src/components/FranceConnectBtn/FranceConnectBtn.vue +1 -1
- package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.vue +2 -2
- package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.vue +7 -7
- package/src/components/HeaderBar/HeaderMenuBtn/HeaderMenuBtn.vue +2 -2
- package/src/components/HeaderLoading/tests/HeaderLoading.spec.ts +87 -8
- package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +3 -3
- package/src/components/HeaderNavigationBar/HorizontalNavbar/tests/HorizontalNavbar.spec.ts +589 -0
- package/src/components/HeaderToolbar/tests/HeaderToolBar.spec.ts +153 -1
- package/src/components/HeaderToolbar/tests/useMobileRightMenu.spec.ts +258 -0
- package/src/components/LangBtn/LangBtn.vue +2 -1
- package/src/components/LogoBrandSection/tests/LogoBrandSection.spec.ts +2 -2
- package/src/components/LogoBrandSection/tests/__snapshots__/LogoBrandSection.spec.ts.snap +1 -1
- package/src/components/LunarCalendar/tests/useLunarCalendarRules.spec.ts +184 -0
- package/src/components/MonthPicker/MonthPickerVisual/MonthSelector.vue +3 -3
- package/src/components/MonthPicker/MonthPickerVisual/VisualPickerFooter.vue +1 -1
- package/src/components/MonthPicker/MonthPickerVisual/VisualPickerHeader.vue +2 -2
- package/src/components/MonthPicker/MonthPickerVisual/YearSelector.vue +1 -1
- package/src/components/NirField/NirField.vue +3 -3
- package/src/components/NotificationBar/Notification/Notification.vue +12 -12
- package/src/components/NotificationBar/NotificationBar.stories.ts +8 -8
- package/src/components/PaginatedTable/PaginatedTable.vue +1 -1
- package/src/components/PaginatedTable/Pagination.vue +3 -3
- package/src/components/PasswordField/PasswordField.vue +15 -11
- package/src/components/PasswordField/tests/PasswordField.spec.ts +3 -3
- package/src/components/PhoneField/PhoneField.vue +4 -2
- package/src/components/RangeField/RangeSlider/RangeSlider.vue +11 -18
- package/src/components/RangeField/RangeSlider/Tooltip/Tooltip.vue +1 -1
- package/src/components/RatingPicker/EmotionPicker/EmotionPicker.vue +32 -48
- package/src/components/RatingPicker/EmotionPicker/tests/__snapshots__/EmotionPicker.spec.ts.snap +5 -0
- package/src/components/RatingPicker/NumberPicker/NumberPicker.vue +48 -53
- package/src/components/RatingPicker/NumberPicker/tests/NumberPicker.spec.ts +2 -1
- package/src/components/RatingPicker/NumberPicker/tests/__snapshots__/NumberPicker.spec.ts.snap +40 -13
- package/src/components/RatingPicker/RatingPicker.stories.ts +65 -88
- package/src/components/RatingPicker/RatingPicker.vue +71 -15
- package/src/components/RatingPicker/StarsPicker/StarsPicker.vue +28 -37
- package/src/components/RatingPicker/StarsPicker/tests/StarsPicker.spec.ts +1 -1
- package/src/components/RatingPicker/StarsPicker/tests/__snapshots__/StarsPicker.spec.ts.snap +5 -0
- package/src/components/RatingPicker/accessibilite/Accessibility.mdx +137 -9
- package/src/components/RatingPicker/tests/RatingPicker.a11y.spec.ts +123 -0
- package/src/components/RatingPicker/tests/RatingPicker.spec.ts +3 -2
- package/src/components/RatingPicker/tests/__snapshots__/RatingPicker.spec.ts.snap +40 -11
- package/src/components/RatingPicker/useRatingFocus.ts +97 -0
- package/src/components/StatusPage/tests/StatusPage.spec.ts +149 -0
- package/src/components/SubHeader/SubHeader.vue +1 -1
- package/src/components/SyAlert/SyAlert.vue +23 -23
- package/src/components/SyTextArea/SyTextArea.stories.ts +177 -131
- package/src/components/SyTextArea/SyTextArea.vue +257 -74
- package/src/components/SyTextArea/composables/useSyTextAreaValidation.ts +81 -0
- package/src/components/SyTextArea/locales.ts +1 -0
- package/src/components/SyTextArea/tests/SyTextArea.spec.ts +449 -1
- package/src/components/SyTextArea/useDefaultValidationRules.ts +2 -7
- package/src/components/SyTextArea/validation/Validation.stories.ts +856 -0
- package/src/components/TableToolbar/TableToolbar.vue +6 -6
- package/src/components/TableToolbar/accessibilite/Accessibility.mdx +81 -7
- package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +163 -0
- package/src/components/Tables/SyServerTable/SyServerTable.vue +3 -2
- package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +67 -0
- package/src/components/Tables/SyTable/SyTable.stories.ts +94 -0
- package/src/components/Tables/SyTable/SyTable.vue +3 -2
- package/src/components/Tables/SyTable/tests/SyTable.spec.ts +64 -0
- package/src/components/Tables/common/SyTableFilter.vue +4 -4
- package/src/components/Tables/common/SyTablePagination.vue +1 -0
- package/src/components/Tables/common/TableHeader.vue +3 -3
- package/src/components/Tables/common/filters/DateFilter.vue +2 -2
- package/src/components/Tables/common/filters/logics/tests/NumberFilterLogic.spec.ts +176 -0
- package/src/components/Tables/common/filters/logics/tests/SelectFilterLogic.spec.ts +111 -0
- package/src/components/Tables/common/tableStyles.scss +6 -6
- package/src/components/Tables/common/types.ts +2 -0
- package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +2 -0
- package/src/components/index.ts +1 -0
- package/src/composables/date/tests/useDateFormatDayjs.spec.ts +112 -0
- package/src/composables/date/tests/{useDateInitialization.spec.ts → useDateInitializationDayjs.spec.ts} +39 -3
- package/src/composables/date/tests/useHolidayDay.spec.ts +109 -0
- package/src/composables/date/useDateInitializationDayjs.ts +4 -1
- package/src/composables/rules/tests/useFieldValidation.spec.ts +374 -0
- package/src/composables/tests/useError.spec.ts +30 -0
- package/src/composables/tests/useFormFieldErrorHandling.spec.ts +234 -0
- package/src/composables/unifyValidation/documentationValidationProps.ts +12 -12
- package/src/composables/unifyValidation/tests/documentationValidationProps.spec.ts +177 -0
- package/src/composables/unifyValidation/tests/useCustomValidation.spec.ts +32 -1
- package/src/composables/unifyValidation/tests/useValidation.spec.ts +28 -2
- package/src/composables/unifyValidation/useCustomValidation.ts +34 -12
- package/src/composables/unifyValidation/useValidation.ts +55 -27
- package/src/composables/unifyValidation/useVuetifyValidation.ts +2 -2
- package/src/composables/useFilterable/useFilterable.spec.ts +42 -0
- package/src/composables/useFilterable/useFilterable.ts +11 -7
- package/src/composables/useFormFieldErrorHandling.ts +6 -3
- package/src/composables/validation/tests/useValidation.spec.ts +2 -2
- package/src/composables/validation/useValidation.ts +15 -3
- package/src/composantsVuetify/VBtn/VBtn.mdx +9 -39
- package/src/composantsVuetify/VBtn/v-btn.stories.ts +26 -86
- package/src/composantsVuetify/VCard/VCard.mdx +59 -0
- package/src/composantsVuetify/VCard/v-card.stories.ts +279 -0
- package/src/designTokens/tokens/amelipro/apColors2026.ts +1 -1
- package/src/designTokens/tokens/amelipro/apContextual.ts +6 -0
- package/src/designTokens/tokens/amelipro/apDarkTheme.ts +2 -2
- package/src/designTokens/tokens/amelipro/apLightTheme.ts +72 -100
- package/src/designTokens/tokens/amelipro/apSemantic.ts +1 -1
- package/src/designTokens/tokens/baseContextualTokens.ts +1 -6
- package/src/designTokens/tokens/baseTokens.ts +232 -0
- package/src/designTokens/tokens/cnam/cnamContextual.ts +6 -0
- package/src/designTokens/tokens/cnam/cnamDarkTheme.ts +2 -2
- package/src/designTokens/tokens/cnam/cnamLightTheme.ts +76 -101
- package/src/designTokens/tokens/pa/paDarkTheme.ts +2 -2
- package/src/designTokens/tokens/pa/paLightTheme.ts +73 -99
- package/src/designTokens/tokens/pa/paSemantic.ts +2 -0
- package/src/designTokens/tokens/semanticTokens.ts +114 -0
- package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +61 -91
- package/src/stories/Accessibilite/AuditDesignSystem.mdx +5 -8
- package/src/stories/Accessibilite/AuditEtContreAudit/Exemptions-derogations.mdx +1 -1
- package/src/stories/Accessibilite/AuditEtContreAudit/Introduction.mdx +11 -8
- package/src/stories/Accessibilite/AuditEtContreAudit/RGAA.mdx +6 -7
- package/src/stories/Accessibilite/Introduction.mdx +30 -30
- package/src/stories/Accessibilite/KitDePreAudit/Echantillonnage.mdx +168 -78
- package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +13 -6
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +66 -45
- package/src/stories/Accessibilite/KitDePreAudit/Outils/LecteursDEcran.mdx +23 -49
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/FauxPositifs.stories.ts +6 -0
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/Utilisation.mdx +7 -19
- package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +18 -20
- package/src/stories/Components/Components.stories.ts +59 -6
- package/src/stories/DesignTokens/ColorIntegrationExample.vue +2 -3
- package/src/stories/DesignTokens/Colors.mdx +6 -8
- package/src/stories/DesignTokens/colors.stories.ts +244 -1081
- package/src/utils/amelipro/toKebabCase/tests/toKebabCase.spec.ts +52 -0
- package/src/utils/formatNir/tests/formatNir.spec.ts +34 -0
- package/src/utils/tests/insertAt.spec.ts +44 -0
- package/dist/AutocompleteFilter-Df9i5mAl.cjs +0 -1
- package/dist/DateFilter-BJD6FMev.cjs +0 -1
- package/dist/NumberFilter-DGCzCXzI.cjs +0 -1
- package/dist/PeriodFilter-DO_ecTZW.cjs +0 -1
- package/dist/SelectFilter-CGwcKWLm.cjs +0 -1
- package/dist/TextFilter-B8nf7xoK.cjs +0 -1
- package/dist/apLightTheme-CEK4iY3f.cjs +0 -1
- package/dist/apLightTheme-DnIM24Lv.js +0 -950
- package/dist/composables/date/useDateFormat.d.ts +0 -26
- package/dist/composables/date/useDateInitialization.d.ts +0 -18
- package/dist/design-system-v3.umd.cjs +0 -1
- package/dist/main-ByDPHpae.cjs +0 -1067
- package/dist/tooth-11-D3sLWv2n.cjs +0 -1
- package/dist/tooth-12-CXrLuH03.cjs +0 -1
- package/dist/tooth-13-BSfo5fpT.cjs +0 -1
- package/dist/tooth-14-DMzulx0h.cjs +0 -1
- package/dist/tooth-15-BKRFVi-9.cjs +0 -1
- package/dist/tooth-16-CpuxAbuM.cjs +0 -1
- package/dist/tooth-17-BPoahUdg.cjs +0 -1
- package/dist/tooth-18-DhHJz8sy.cjs +0 -1
- package/dist/tooth-21-Dgd5hn_X.cjs +0 -1
- package/dist/tooth-22-C2Tn19sB.cjs +0 -1
- package/dist/tooth-23-C9uaaSGb.cjs +0 -1
- package/dist/tooth-24-BrK9UGpf.cjs +0 -1
- package/dist/tooth-25-CE_EfGNp.cjs +0 -1
- package/dist/tooth-26-Ctv4i9Fy.cjs +0 -1
- package/dist/tooth-27-C5J7JkWM.cjs +0 -1
- package/dist/tooth-28-Z9oWqjo0.cjs +0 -1
- package/dist/tooth-31-BrYqmkTi.cjs +0 -1
- package/dist/tooth-32-BNNR0oCZ.cjs +0 -1
- package/dist/tooth-33-DuxvqO2J.cjs +0 -1
- package/dist/tooth-34-BCSCXMB6.cjs +0 -1
- package/dist/tooth-35-BLUXkX88.cjs +0 -1
- package/dist/tooth-36-IrKHYqlA.cjs +0 -1
- package/dist/tooth-37-BYqpdMwo.cjs +0 -1
- package/dist/tooth-38-B_eNXXdu.cjs +0 -1
- package/dist/tooth-41-Ddva4Ot8.cjs +0 -1
- package/dist/tooth-42-szcDqlM0.cjs +0 -1
- package/dist/tooth-43-B3ka6rQm.cjs +0 -1
- package/dist/tooth-44-CazyQucj.cjs +0 -1
- package/dist/tooth-45-B4HQtc8n.cjs +0 -1
- package/dist/tooth-46-BPM40gbG.cjs +0 -1
- package/dist/tooth-47-Dvr20dlh.cjs +0 -1
- package/dist/tooth-48-Bd8ljGsF.cjs +0 -1
- package/dist/tooth-51-OBpwCOF3.cjs +0 -1
- package/dist/tooth-52-aKxyHcmq.cjs +0 -1
- package/dist/tooth-53-vCwJjTOc.cjs +0 -1
- package/dist/tooth-54-DsWu2iFy.cjs +0 -1
- package/dist/tooth-55-BxC1X2Dn.cjs +0 -1
- package/dist/tooth-61-BbLvxMQi.cjs +0 -1
- package/dist/tooth-62-CmTkWczP.cjs +0 -1
- package/dist/tooth-63-DI7l_2qI.cjs +0 -1
- package/dist/tooth-64-B21sOsJh.cjs +0 -1
- package/dist/tooth-65-D2ZC2VEr.cjs +0 -1
- package/dist/tooth-71-D473PPO5.cjs +0 -1
- package/dist/tooth-72-Drh1wnNu.cjs +0 -1
- package/dist/tooth-73-DzlwYI23.cjs +0 -1
- package/dist/tooth-74-8aGvcZPg.cjs +0 -1
- package/dist/tooth-75-BFK7At_r.cjs +0 -1
- package/dist/tooth-81-BZmR-I0M.cjs +0 -1
- package/dist/tooth-82-euVfUUZV.cjs +0 -1
- package/dist/tooth-83-KV010j64.cjs +0 -1
- package/dist/tooth-84-BBg1RjhZ.cjs +0 -1
- package/dist/tooth-85-Cr-kc1wM.cjs +0 -1
- package/dist/vuetifyConfig.umd.cjs +0 -1
- package/src/components/BackBtn/tests/__snapshots__/back-btn-custom-bg.snap.png +0 -0
- package/src/components/BackBtn/tests/__snapshots__/back-btn-dark-mode.snap.png +0 -0
- package/src/components/BackBtn/tests/__snapshots__/back-btn-default.snap.png +0 -0
- package/src/components/BackBtn/tests/__snapshots__/back-btn-no-icon.snap.png +0 -0
- package/src/components/DatePicker/CalendarMode/tests/DatePicker.events.spec.ts +0 -178
- package/src/components/DialogBox/tests/__snapshots__/dialog-box-custom-texts.snap.png +0 -0
- package/src/components/DialogBox/tests/__snapshots__/dialog-box-default.snap.png +0 -0
- package/src/components/DialogBox/tests/__snapshots__/dialog-box-no-actions.snap.png +0 -0
- package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated-submenu-open.snap.png +0 -0
- package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/header-burger-menu-generated.snap.png +0 -0
- package/src/components/HeaderBar/tests/__snapshots__/header-bar-custom-width.snap.png +0 -0
- package/src/components/HeaderBar/tests/__snapshots__/header-bar-default.snap.png +0 -0
- package/src/components/HeaderBar/tests/__snapshots__/header-bar-no-sticky.snap.png +0 -0
- package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-prepend.snap.png +0 -0
- package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-side.snap.png +0 -0
- package/src/components/HeaderBar/tests/__snapshots__/header-bar-with-subtitle.snap.png +0 -0
- package/src/components/Logo/tests/__snapshots__/logo-avatar.snap.png +0 -0
- package/src/components/Logo/tests/__snapshots__/logo-dark.snap.png +0 -0
- package/src/components/Logo/tests/__snapshots__/logo-default.snap.png +0 -0
- package/src/components/Logo/tests/__snapshots__/logo-no-organism.snap.png +0 -0
- package/src/components/Logo/tests/__snapshots__/logo-no-signature.snap.png +0 -0
- package/src/components/Logo/tests/__snapshots__/logo-risque-pro.snap.png +0 -0
- package/src/components/RangeField/tests/__snapshots__/range-field-custom-bg.snap.png +0 -0
- package/src/components/RangeField/tests/__snapshots__/range-field-custom-range.snap.png +0 -0
- package/src/components/RangeField/tests/__snapshots__/range-field-default.snap.png +0 -0
- package/src/components/RangeField/tests/__snapshots__/range-field-step.snap.png +0 -0
- package/src/components/RangeField/tests/__snapshots__/range-field-with-label.snap.png +0 -0
- package/src/components/SyAlert/tests/__snapshots__/sy-alert-closable.snap.png +0 -0
- package/src/components/SyAlert/tests/__snapshots__/sy-alert-error.snap.png +0 -0
- package/src/components/SyAlert/tests/__snapshots__/sy-alert-info.snap.png +0 -0
- package/src/components/SyAlert/tests/__snapshots__/sy-alert-success.snap.png +0 -0
- package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-outlined.snap.png +0 -0
- package/src/components/SyAlert/tests/__snapshots__/sy-alert-variant-tonal.snap.png +0 -0
- package/src/components/SyAlert/tests/__snapshots__/sy-alert-warning.snap.png +0 -0
- package/src/composables/date/tests/useDateFormat.spec.ts +0 -67
- package/src/composables/date/useDateFormat.ts +0 -110
- package/src/composables/date/useDateInitialization.ts +0 -92
|
@@ -275,6 +275,13 @@
|
|
|
275
275
|
return 'rgba(0, 0, 0, 1)'
|
|
276
276
|
})
|
|
277
277
|
|
|
278
|
+
const clearButtonColorClass = computed(() => {
|
|
279
|
+
if (hasError.value) return 'error-field'
|
|
280
|
+
if (hasWarning.value) return 'warning-field'
|
|
281
|
+
if (hasSuccess.value) return 'success-field'
|
|
282
|
+
return 'text-iconBase'
|
|
283
|
+
})
|
|
284
|
+
|
|
278
285
|
const handlePrependIconClick = () => {
|
|
279
286
|
emit('prepend-icon-click')
|
|
280
287
|
}
|
|
@@ -346,7 +353,7 @@
|
|
|
346
353
|
const validationIcon = computed(() => {
|
|
347
354
|
if (hasError.value) return ICONS['error']
|
|
348
355
|
if (hasWarning.value) return ICONS['warning']
|
|
349
|
-
if (hasSuccess.value
|
|
356
|
+
if (hasSuccess.value) return ICONS['success']
|
|
350
357
|
return null
|
|
351
358
|
})
|
|
352
359
|
|
|
@@ -361,7 +368,7 @@
|
|
|
361
368
|
// Détermine s'il y a des messages d'erreur ou d'état
|
|
362
369
|
const hasMessages = computed(() => {
|
|
363
370
|
if (props.disableErrorHandling) return false
|
|
364
|
-
return (props.errorMessages?.length ?? 0) > 0 || hasError.value || hasWarning.value || hasSuccess.value
|
|
371
|
+
return (props.errorMessages?.length ?? 0) > 0 || hasError.value || hasWarning.value || (hasSuccess.value && props.showSuccessMessages)
|
|
365
372
|
})
|
|
366
373
|
|
|
367
374
|
// Détermine si le helpText doit être affiché à la position du message ou en dessous
|
|
@@ -634,7 +641,7 @@
|
|
|
634
641
|
:maxlength="props.maxlength"
|
|
635
642
|
:max-errors="props.maxErrors"
|
|
636
643
|
:max-width="props.maxWidth"
|
|
637
|
-
:messages="hasError ? errors : (hasWarning ? warnings : (hasSuccess
|
|
644
|
+
:messages="hasError ? errors : (hasWarning ? warnings : (hasSuccess ? (props.showSuccessMessages ? successes : []) : messages))"
|
|
638
645
|
:min-width="props.minWidth"
|
|
639
646
|
:name="props.name"
|
|
640
647
|
:persistent-clear="props.displayPersistentClear"
|
|
@@ -778,7 +785,8 @@
|
|
|
778
785
|
<!-- Keyboard-focusable clear button -->
|
|
779
786
|
<VBtn
|
|
780
787
|
v-if="showClear"
|
|
781
|
-
class="v-btn v-btn--density-compact mr-1
|
|
788
|
+
class="v-btn v-btn--density-compact mr-1"
|
|
789
|
+
:class="clearButtonColorClass"
|
|
782
790
|
:aria-label="props.label ? `Vider ${props.label}` : 'Vider'"
|
|
783
791
|
:title="props.label ? `Vider ${props.label}` : 'Vider'"
|
|
784
792
|
:icon="mdiClose"
|
|
@@ -843,14 +851,22 @@
|
|
|
843
851
|
}
|
|
844
852
|
|
|
845
853
|
:deep(.v-icon__svg) {
|
|
846
|
-
fill: rgb(var(--v-theme-
|
|
854
|
+
fill: rgb(var(--v-theme-onWarningVariant)) !important;
|
|
847
855
|
}
|
|
848
856
|
|
|
849
|
-
:deep(.v-field) {
|
|
857
|
+
:deep(.v-label.v-field-label) {
|
|
850
858
|
color: rgb(var(--v-theme-borderWarning)) !important;
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
:deep(.v-field) {
|
|
862
|
+
color: rgb(var(--v-theme-onWarningVariant)) !important;
|
|
863
|
+
|
|
864
|
+
--v-medium-emphasis-opacity: 1;
|
|
851
865
|
|
|
852
866
|
.v-field__outline {
|
|
853
|
-
|
|
867
|
+
--v-field-border-opacity: 1;
|
|
868
|
+
|
|
869
|
+
color: rgb(var(--v-theme-onWarningVariant)) !important;
|
|
854
870
|
}
|
|
855
871
|
}
|
|
856
872
|
|
|
@@ -858,11 +874,18 @@
|
|
|
858
874
|
opacity: 1 !important;
|
|
859
875
|
|
|
860
876
|
.v-messages__message {
|
|
861
|
-
color: rgb(var(--v-theme-
|
|
877
|
+
color: rgb(var(--v-theme-onWarningVariant)) !important;
|
|
862
878
|
}
|
|
863
879
|
}
|
|
864
880
|
}
|
|
865
881
|
|
|
882
|
+
/* stylelint-disable-next-line selector-class-pattern */
|
|
883
|
+
.text-iconBase {
|
|
884
|
+
:deep(.v-icon__svg) {
|
|
885
|
+
fill: rgb(var(--v-theme-primary)) !important;
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
|
|
866
889
|
.error-field {
|
|
867
890
|
:deep(.v-input__details > .v-icon),
|
|
868
891
|
:deep(.v-input__prepend > .v-icon),
|
|
@@ -870,11 +893,17 @@
|
|
|
870
893
|
opacity: 1 !important;
|
|
871
894
|
}
|
|
872
895
|
|
|
896
|
+
:deep(.v-icon__svg) {
|
|
897
|
+
fill: rgb(var(--v-theme-error)) !important;
|
|
898
|
+
}
|
|
899
|
+
|
|
873
900
|
:deep(.v-field) {
|
|
874
|
-
color: rgb(var(--v-theme-
|
|
901
|
+
color: rgb(var(--v-theme-error)) !important;
|
|
875
902
|
|
|
876
903
|
.v-field__outline {
|
|
877
|
-
|
|
904
|
+
--v-field-border-opacity: 1;
|
|
905
|
+
|
|
906
|
+
color: rgb(var(--v-theme-error)) !important;
|
|
878
907
|
}
|
|
879
908
|
}
|
|
880
909
|
|
|
@@ -882,7 +911,7 @@
|
|
|
882
911
|
opacity: 1 !important;
|
|
883
912
|
|
|
884
913
|
.v-messages__message {
|
|
885
|
-
color: rgb(var(--v-theme-
|
|
914
|
+
color: rgb(var(--v-theme-error)) !important;
|
|
886
915
|
}
|
|
887
916
|
}
|
|
888
917
|
}
|
|
@@ -895,16 +924,22 @@
|
|
|
895
924
|
}
|
|
896
925
|
|
|
897
926
|
:deep(.v-icon__svg) {
|
|
898
|
-
fill: rgb(var(--v-theme-
|
|
927
|
+
fill: rgb(var(--v-theme-onSuccessVariant)) !important;
|
|
899
928
|
}
|
|
900
929
|
|
|
901
|
-
:deep(.v-field) {
|
|
930
|
+
:deep(.v-label.v-field-label) {
|
|
902
931
|
color: rgb(var(--v-theme-borderSuccess)) !important;
|
|
932
|
+
}
|
|
933
|
+
|
|
934
|
+
:deep(.v-field) {
|
|
935
|
+
color: rgb(var(--v-theme-onSuccessVariant)) !important;
|
|
903
936
|
|
|
904
937
|
--v-medium-emphasis-opacity: 1;
|
|
905
938
|
|
|
906
939
|
.v-field__outline {
|
|
907
|
-
|
|
940
|
+
--v-field-border-opacity: 1;
|
|
941
|
+
|
|
942
|
+
color: rgb(var(--v-theme-onSuccessVariant)) !important;
|
|
908
943
|
}
|
|
909
944
|
}
|
|
910
945
|
|
|
@@ -912,7 +947,7 @@
|
|
|
912
947
|
opacity: 1 !important;
|
|
913
948
|
|
|
914
949
|
.v-messages__message {
|
|
915
|
-
color: rgb(var(--v-theme-
|
|
950
|
+
color: rgb(var(--v-theme-onSuccessVariant)) !important;
|
|
916
951
|
}
|
|
917
952
|
}
|
|
918
953
|
}
|
|
@@ -923,13 +958,13 @@
|
|
|
923
958
|
}
|
|
924
959
|
|
|
925
960
|
:deep(.v-field--focused .v-field__outline) {
|
|
926
|
-
color: rgb(var(--v-theme-
|
|
961
|
+
color: rgb(var(--v-theme-primary)) !important;
|
|
927
962
|
opacity: 1 !important;
|
|
928
963
|
}
|
|
929
964
|
|
|
930
965
|
:deep(.v-input__prepend .v-icon:focus-visible),
|
|
931
966
|
:deep(.v-input__append .v-icon:focus-visible) {
|
|
932
|
-
outline: 2px solid rgb(var(--v-theme-
|
|
967
|
+
outline: 2px solid rgb(var(--v-theme-primary));
|
|
933
968
|
outline-offset: 2px;
|
|
934
969
|
opacity: 1;
|
|
935
970
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { mount } from '@vue/test-utils'
|
|
2
|
-
import { describe, it, expect } from 'vitest'
|
|
2
|
+
import { describe, it, expect, vi } from 'vitest'
|
|
3
3
|
|
|
4
4
|
import DataListItem from '../DataListItem.vue'
|
|
5
5
|
|
|
@@ -59,6 +59,7 @@ describe('DataListItem', () => {
|
|
|
59
59
|
})
|
|
60
60
|
|
|
61
61
|
it('renders correctly a value as plain HTML', () => {
|
|
62
|
+
const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {})
|
|
62
63
|
const wrapper = mount(DataListItem, {
|
|
63
64
|
props: {
|
|
64
65
|
label: 'Test',
|
|
@@ -66,6 +67,7 @@ describe('DataListItem', () => {
|
|
|
66
67
|
renderHtmlValue: true,
|
|
67
68
|
},
|
|
68
69
|
})
|
|
70
|
+
warnSpy.mockRestore()
|
|
69
71
|
|
|
70
72
|
const elValue = wrapper.find('.sy-data-list-item-value span')
|
|
71
73
|
|
|
@@ -172,7 +172,7 @@ const meta = {
|
|
|
172
172
|
},
|
|
173
173
|
'birthDate': {
|
|
174
174
|
control: 'boolean',
|
|
175
|
-
description: '
|
|
175
|
+
description: '⚠️ **DEPRECATED** — Utilisez `isBirthDate` à la place.',
|
|
176
176
|
defaultValue: false,
|
|
177
177
|
},
|
|
178
178
|
'isOutlined': {
|
|
@@ -4,12 +4,11 @@
|
|
|
4
4
|
import DateTextInput from '../DateTextInput/DateTextInput.vue'
|
|
5
5
|
import ComplexDatePicker from '../ComplexDatePicker/ComplexDatePicker.vue'
|
|
6
6
|
import { VDatePicker } from 'vuetify/components'
|
|
7
|
-
import { useValidation, type ValidationResult, type ValidationRule } from '@/composables/validation/useValidation'
|
|
8
7
|
import { useValidatable } from '@/composables/validation/useValidatable'
|
|
9
8
|
import { useDateFormat } from '@/composables/date/useDateFormatDayjs'
|
|
10
|
-
import { useDateInitialization, type
|
|
9
|
+
import { useDateInitialization, type DateModelValue, type DateInput } from '@/composables/date/useDateInitializationDayjs'
|
|
11
10
|
import { useDatePickerAccessibility } from '@/composables/date/useDatePickerAccessibility'
|
|
12
|
-
import { useWeekendDays, useTodayButton, useDatePickerViewMode, useDateSelection, useMonthButtonCustomization, useDisplayedDateString, useAsteriskDisplay,
|
|
11
|
+
import { useWeekendDays, useTodayButton, useDatePickerViewMode, useDateSelection, useMonthButtonCustomization, useDisplayedDateString, useAsteriskDisplay, useDatePickerState, useHolidayHighlighting, useCalendarKeyboardNavigation, useDatePickerFocusTrap, useDatePickerValidationBridge } from '../composables'
|
|
13
12
|
import { DATE_PICKER_MESSAGES } from '../constants/messages'
|
|
14
13
|
import dayjs from 'dayjs'
|
|
15
14
|
import customParseFormat from 'dayjs/plugin/customParseFormat'
|
|
@@ -40,7 +39,8 @@
|
|
|
40
39
|
const props = withDefaults(defineProps<{
|
|
41
40
|
autoClamp?: boolean
|
|
42
41
|
bgColor?: string
|
|
43
|
-
|
|
42
|
+
/** @deprecated Utilisez isBirthDate à la place */
|
|
43
|
+
birthDate?: boolean
|
|
44
44
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
45
|
customRules?: { type: string, options: any }[]
|
|
46
46
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -241,76 +241,14 @@
|
|
|
241
241
|
}
|
|
242
242
|
|
|
243
243
|
const emit = defineEmits<{
|
|
244
|
-
(e: 'update:modelValue', value:
|
|
244
|
+
(e: 'update:modelValue', value: DateModelValue): void
|
|
245
245
|
(e: 'closed'): void
|
|
246
246
|
(e: 'focus'): void
|
|
247
247
|
(e: 'blur'): void
|
|
248
|
-
(e: 'input', value:
|
|
249
|
-
(e: 'date-selected', value:
|
|
248
|
+
(e: 'input', value: DateModelValue): void
|
|
249
|
+
(e: 'date-selected', value: DateModelValue): void
|
|
250
250
|
}>()
|
|
251
251
|
|
|
252
|
-
const validation = useValidation({
|
|
253
|
-
showSuccessMessages: props.showSuccessMessages,
|
|
254
|
-
fieldIdentifier: 'Date',
|
|
255
|
-
disableErrorHandling: props.disableErrorHandling,
|
|
256
|
-
})
|
|
257
|
-
const { errors, warnings, successes, validateField: baseValidateField, clearValidation: baseClearValidation } = validation
|
|
258
|
-
|
|
259
|
-
const clearValidation = () => baseClearValidation()
|
|
260
|
-
|
|
261
|
-
watch(() => props.readonly, () => {
|
|
262
|
-
// When toggling readonly, reset validation state to avoid stale success/errors
|
|
263
|
-
errors.value = []
|
|
264
|
-
warnings.value = []
|
|
265
|
-
successes.value = []
|
|
266
|
-
})
|
|
267
|
-
|
|
268
|
-
const validateField = (
|
|
269
|
-
value: unknown,
|
|
270
|
-
rules: ValidationRule[] = [],
|
|
271
|
-
warningRules: ValidationRule[] = [],
|
|
272
|
-
successRules: ValidationRule[] = [],
|
|
273
|
-
): Promise<ValidationResult> | ValidationResult => {
|
|
274
|
-
if (props.readonly) {
|
|
275
|
-
return {
|
|
276
|
-
hasError: false,
|
|
277
|
-
hasWarning: false,
|
|
278
|
-
hasSuccess: false,
|
|
279
|
-
state: { errors: [], warnings: [], successes: [] },
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
return baseValidateField(value, rules, warningRules, successRules)
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
const validateFieldForDateValidation = (
|
|
287
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- compat signature with useDateValidation
|
|
288
|
-
value: any,
|
|
289
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- compat signature with useDateValidation
|
|
290
|
-
rules: any[] = [],
|
|
291
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- compat signature with useDateValidation
|
|
292
|
-
warningRules: any[] = [],
|
|
293
|
-
): ValidationResult => {
|
|
294
|
-
if (props.readonly) {
|
|
295
|
-
return {
|
|
296
|
-
hasError: false,
|
|
297
|
-
hasWarning: false,
|
|
298
|
-
hasSuccess: false,
|
|
299
|
-
state: {
|
|
300
|
-
errors: [],
|
|
301
|
-
warnings: [],
|
|
302
|
-
successes: [],
|
|
303
|
-
},
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
return validateField(value, rules, warningRules, []) as ValidationResult
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
const errorMessages = errors
|
|
311
|
-
const warningMessages = warnings
|
|
312
|
-
const successMessages = successes
|
|
313
|
-
|
|
314
252
|
// Variable pour éviter les mises à jour récursives
|
|
315
253
|
const isUpdatingFromInternal = ref(false)
|
|
316
254
|
const preventCloseOnKeyboardNavigation = ref(false)
|
|
@@ -318,81 +256,40 @@
|
|
|
318
256
|
const currentRangeIsValid = ref(true)
|
|
319
257
|
const getRangeValidationError = ref('')
|
|
320
258
|
|
|
321
|
-
const {
|
|
259
|
+
const {
|
|
260
|
+
validation,
|
|
261
|
+
errors,
|
|
262
|
+
warnings,
|
|
263
|
+
successes,
|
|
264
|
+
clearValidation,
|
|
265
|
+
validateDates,
|
|
266
|
+
} = useDatePickerValidationBridge({
|
|
267
|
+
showSuccessMessages: props.showSuccessMessages,
|
|
268
|
+
disableErrorHandling: props.disableErrorHandling,
|
|
322
269
|
noCalendar: props.noCalendar,
|
|
323
|
-
|
|
324
|
-
required: false,
|
|
270
|
+
required: props.required,
|
|
325
271
|
displayRange: props.displayRange,
|
|
326
|
-
disableErrorHandling: props.disableErrorHandling,
|
|
327
272
|
customRules: computed(() => props.customRules),
|
|
328
273
|
customWarningRules: computed(() => props.customWarningRules),
|
|
329
274
|
selectedDates: selectedDates as Ref<DateObjectValue>,
|
|
330
275
|
isUpdatingFromInternal,
|
|
331
276
|
currentRangeIsValid,
|
|
332
277
|
getRangeValidationError,
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
278
|
+
readonly: computed(() => props.readonly),
|
|
279
|
+
skipValidationWhenReadonly: true,
|
|
280
|
+
useCalendarModeRequiredFlow: true,
|
|
281
|
+
isInitialValidation,
|
|
282
|
+
isValidateOnBlur: computed(() => props.isValidateOnBlur),
|
|
283
|
+
onblur,
|
|
338
284
|
})
|
|
339
285
|
|
|
340
|
-
|
|
341
|
-
const
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
return
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
// Réinitialiser la validation
|
|
348
|
-
clearValidation()
|
|
349
|
-
|
|
350
|
-
// Si la gestion des erreurs est désactivée, on effectue la validation interne
|
|
351
|
-
// mais on n'ajoute pas les messages d'erreur
|
|
352
|
-
const shouldDisplayErrors = !props.disableErrorHandling
|
|
353
|
-
|
|
354
|
-
// Vérifier si le champ est requis et vide
|
|
355
|
-
if ((forceValidation || !isUpdatingFromInternal.value) && props.required && (!selectedDates.value || (Array.isArray(selectedDates.value) && selectedDates.value.length === 0))) {
|
|
356
|
-
if (props.readonly) {
|
|
357
|
-
return
|
|
358
|
-
}
|
|
359
|
-
// Ne pas afficher d'erreur si on est sur une perte de focus et si isValidateOnBlur est false
|
|
360
|
-
if (onblur.value && !props.isValidateOnBlur) {
|
|
361
|
-
return
|
|
362
|
-
}
|
|
363
|
-
// Ne pas afficher d'erreur si on est dans le contexte du mounted initial
|
|
364
|
-
if (shouldDisplayErrors && (!isInitialValidation.value || forceValidation)) {
|
|
365
|
-
errors.value.push(DATE_PICKER_MESSAGES.ERROR_REQUIRED)
|
|
366
|
-
}
|
|
367
|
-
return
|
|
368
|
-
}
|
|
369
|
-
// Permettre aux custom rules de s'exécuter même sur des champs vides
|
|
370
|
-
if (!selectedDates.value) {
|
|
371
|
-
if (!props.customRules || props.customRules.length === 0) return
|
|
372
|
-
|
|
373
|
-
if (shouldDisplayErrors && (!isInitialValidation.value || forceValidation)) {
|
|
374
|
-
// Comportement historique : exécuter directement les règles personnalisées même si la valeur est vide
|
|
375
|
-
await validateField(
|
|
376
|
-
selectedDates.value,
|
|
377
|
-
props.customRules,
|
|
378
|
-
props.customWarningRules,
|
|
379
|
-
)
|
|
380
|
-
// Dédoublonner les messages comme auparavant
|
|
381
|
-
errors.value = [...new Set(errors.value)]
|
|
382
|
-
warnings.value = [...new Set(warnings.value)]
|
|
383
|
-
successes.value = [...new Set(successes.value)]
|
|
384
|
-
}
|
|
385
|
-
return
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
// Ne pas afficher d'erreurs de custom rules si on est dans le contexte du mounted initial
|
|
389
|
-
if (shouldDisplayErrors && (!isInitialValidation.value || forceValidation)) {
|
|
390
|
-
await coreValidateDates(forceValidation)
|
|
391
|
-
}
|
|
392
|
-
}
|
|
286
|
+
const errorMessages = errors
|
|
287
|
+
const warningMessages = warnings
|
|
288
|
+
const successMessages = validation.displaySuccesses
|
|
289
|
+
const isOnSuccess = computed(() => successes.value.length > 0 && errors.value.length === 0 && warnings.value.length === 0)
|
|
393
290
|
|
|
394
291
|
// Fonction centralisée pour mettre à jour le modèle
|
|
395
|
-
const updateModel = async (value:
|
|
292
|
+
const updateModel = async (value: DateModelValue) => {
|
|
396
293
|
// Éviter les mises à jour inutiles
|
|
397
294
|
if (JSON.stringify(value) === JSON.stringify(props.modelValue)) return
|
|
398
295
|
|
|
@@ -407,9 +304,9 @@
|
|
|
407
304
|
}
|
|
408
305
|
finally {
|
|
409
306
|
// S'assurer que le flag est toujours réinitialisé
|
|
410
|
-
|
|
307
|
+
queueMicrotask(() => {
|
|
411
308
|
isUpdatingFromInternal.value = false
|
|
412
|
-
}
|
|
309
|
+
})
|
|
413
310
|
}
|
|
414
311
|
}
|
|
415
312
|
|
|
@@ -434,7 +331,7 @@
|
|
|
434
331
|
if (Array.isArray(newValue) && props.displayRange && newValue.length >= 2 && props.noCalendar) {
|
|
435
332
|
// Cas spécifique noCalendar + displayRange : conserver la chaîne de plage complète
|
|
436
333
|
const start = newValue[0]
|
|
437
|
-
const end = newValue[1]
|
|
334
|
+
const end = newValue[newValue.length - 1]
|
|
438
335
|
if (start && end) {
|
|
439
336
|
textInputValue.value = `${formatDate(start, props.format)} - ${formatDate(end, props.format)}`
|
|
440
337
|
}
|
|
@@ -445,9 +342,9 @@
|
|
|
445
342
|
}
|
|
446
343
|
}
|
|
447
344
|
finally {
|
|
448
|
-
|
|
345
|
+
queueMicrotask(() => {
|
|
449
346
|
isUpdatingFromInternal.value = false
|
|
450
|
-
}
|
|
347
|
+
})
|
|
451
348
|
}
|
|
452
349
|
}
|
|
453
350
|
else {
|
|
@@ -465,7 +362,7 @@
|
|
|
465
362
|
})
|
|
466
363
|
|
|
467
364
|
// Utilisation du composable pour gérer la sélection de dates
|
|
468
|
-
const { updateSelectedDates, rangeBoundaryDates, resetRange } = useDateSelection(
|
|
365
|
+
const { updateSelectedDates, rangeBoundaryDates, generateDateRange, resetRange } = useDateSelection(
|
|
469
366
|
parseDate,
|
|
470
367
|
selectedDates,
|
|
471
368
|
props.format,
|
|
@@ -490,11 +387,12 @@
|
|
|
490
387
|
initializeSelectedDates,
|
|
491
388
|
validateDates,
|
|
492
389
|
updateModel,
|
|
390
|
+
generateDateRange,
|
|
493
391
|
})
|
|
494
392
|
|
|
495
393
|
// Gestionnaire pour les mises à jour du DateTextInput en mode no-calendar
|
|
496
|
-
const handleDateTextInputUpdate = async (value:
|
|
497
|
-
if (isUpdatingFromInternal.value) return
|
|
394
|
+
const handleDateTextInputUpdate = async (value: DateModelValue) => {
|
|
395
|
+
if (isUpdatingFromInternal.value && !props.noCalendar) return
|
|
498
396
|
|
|
499
397
|
try {
|
|
500
398
|
isUpdatingFromInternal.value = true
|
|
@@ -514,7 +412,7 @@
|
|
|
514
412
|
const endDate = parseDate(endDateStr, props.dateFormatReturn || props.format)
|
|
515
413
|
|
|
516
414
|
if (startDate && endDate) {
|
|
517
|
-
selectedDates.value =
|
|
415
|
+
selectedDates.value = generateDateRange(startDate, endDate)
|
|
518
416
|
displayFormattedDate.value = `${formatDate(startDate, props.format)} - ${formatDate(endDate, props.format)}`
|
|
519
417
|
}
|
|
520
418
|
}
|
|
@@ -535,7 +433,7 @@
|
|
|
535
433
|
}
|
|
536
434
|
|
|
537
435
|
// Gestionnaire pour les événements date-selected du DateTextInput
|
|
538
|
-
const handleDateTextInputSelection = async (value:
|
|
436
|
+
const handleDateTextInputSelection = async (value: DateModelValue) => {
|
|
539
437
|
if (isUpdatingFromInternal.value) return
|
|
540
438
|
|
|
541
439
|
// Mettre à jour le modèle avec la valeur sélectionnée
|
|
@@ -774,7 +672,6 @@
|
|
|
774
672
|
|
|
775
673
|
// Utilisation du composable pour gérer le mode d'affichage du CalendarMode
|
|
776
674
|
const { currentViewMode, handleViewModeUpdate, handleYearUpdate, handleMonthUpdate, resetViewMode } = useDatePickerViewMode(
|
|
777
|
-
// Fonction qui retourne la valeur actuelle de isBirthDate (combinaison de isBirthDate et birthDate)
|
|
778
675
|
() => props.isBirthDate || props.birthDate,
|
|
779
676
|
// Fonction qui retourne l'état de la date sélectionnée
|
|
780
677
|
() => selectedDates.value,
|
|
@@ -1061,7 +958,8 @@
|
|
|
1061
958
|
:class="[getMessageClasses(), 'label-hidden-on-focus']"
|
|
1062
959
|
:error-messages="errorMessages"
|
|
1063
960
|
:warning-messages="warningMessages"
|
|
1064
|
-
:success-messages="
|
|
961
|
+
:success-messages="successMessages"
|
|
962
|
+
:has-success="isOnSuccess"
|
|
1065
963
|
:disabled="props.disabled"
|
|
1066
964
|
:disable-click-button="false"
|
|
1067
965
|
:readonly="true"
|
|
@@ -1214,13 +1112,13 @@
|
|
|
1214
1112
|
.v-messages__message--success {
|
|
1215
1113
|
:deep(.v-input__control),
|
|
1216
1114
|
:deep(.v-messages__message) {
|
|
1217
|
-
color: rgb(var(--v-theme-
|
|
1115
|
+
color: rgb(var(--v-theme-onSuccessVariant)) !important;
|
|
1218
1116
|
|
|
1219
1117
|
--v-medium-emphasis-opacity: 1;
|
|
1220
1118
|
}
|
|
1221
1119
|
|
|
1222
1120
|
.v-field--active & {
|
|
1223
|
-
color: rgb(var(--v-theme-
|
|
1121
|
+
color: rgb(var(--v-theme-onSuccessVariant)) !important;
|
|
1224
1122
|
}
|
|
1225
1123
|
}
|
|
1226
1124
|
|
|
@@ -1238,33 +1136,33 @@
|
|
|
1238
1136
|
|
|
1239
1137
|
.v-messages__message--error {
|
|
1240
1138
|
:deep(.v-input__control) {
|
|
1241
|
-
color: rgb(var(--v-theme-
|
|
1139
|
+
color: rgb(var(--v-theme-error)) !important;
|
|
1242
1140
|
|
|
1243
1141
|
--v-medium-emphasis-opacity: 1;
|
|
1244
1142
|
}
|
|
1245
1143
|
|
|
1246
1144
|
:deep(.v-messages__message) {
|
|
1247
|
-
color: rgb(var(--v-theme-
|
|
1145
|
+
color: rgb(var(--v-theme-error)) !important;
|
|
1248
1146
|
}
|
|
1249
1147
|
|
|
1250
1148
|
.v-field--active & {
|
|
1251
|
-
color: rgb(var(--v-theme-
|
|
1149
|
+
color: rgb(var(--v-theme-error)) !important;
|
|
1252
1150
|
}
|
|
1253
1151
|
}
|
|
1254
1152
|
|
|
1255
1153
|
.v-messages__message--warning {
|
|
1256
1154
|
:deep(.v-input__control) {
|
|
1257
|
-
color: rgb(var(--v-theme-
|
|
1155
|
+
color: rgb(var(--v-theme-onWarningVariant)) !important;
|
|
1258
1156
|
|
|
1259
1157
|
--v-medium-emphasis-opacity: 1;
|
|
1260
1158
|
}
|
|
1261
1159
|
|
|
1262
1160
|
:deep(.v-messages__message) {
|
|
1263
|
-
color: rgb(var(--v-theme-
|
|
1161
|
+
color: rgb(var(--v-theme-onWarningVariant)) !important;
|
|
1264
1162
|
}
|
|
1265
1163
|
|
|
1266
1164
|
.v-field--active & {
|
|
1267
|
-
color: rgb(var(--v-theme-
|
|
1165
|
+
color: rgb(var(--v-theme-onWarningVariant)) !important;
|
|
1268
1166
|
}
|
|
1269
1167
|
}
|
|
1270
1168
|
|
|
@@ -1305,7 +1203,7 @@
|
|
|
1305
1203
|
}
|
|
1306
1204
|
|
|
1307
1205
|
:deep(.v-date-picker-month__day .v-btn:hover) {
|
|
1308
|
-
background-color: rgb(var(--v-theme-
|
|
1206
|
+
background-color: rgb(var(--v-theme-background));
|
|
1309
1207
|
}
|
|
1310
1208
|
|
|
1311
1209
|
:deep(.v-date-picker-month__day--selected, .v-date-picker-month__day--adjacent) {
|
|
@@ -1313,7 +1211,7 @@
|
|
|
1313
1211
|
}
|
|
1314
1212
|
|
|
1315
1213
|
:deep(.v-date-picker-month__day--selected .v-btn:hover) {
|
|
1316
|
-
background-color: rgb(var(--v-theme-
|
|
1214
|
+
background-color: rgb(var(--v-theme-primaryVariant)) !important;
|
|
1317
1215
|
}
|
|
1318
1216
|
|
|
1319
1217
|
.fade-enter-active,
|