@cnamts/synapse 0.0.16-alpha → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DateFilter-BmRuzQ9Z.js +98 -0
- package/dist/NumberFilter-CnIPDHqx.js +121 -0
- package/dist/PeriodFilter-CZwZ8CnQ.js +112 -0
- package/dist/SelectFilter-Cj-GW2Cc.js +97 -0
- package/dist/TextFilter-DTxZHJwX.js +114 -0
- package/dist/{components/BackBtn → common}/constants/ExpertiseLevelEnum.d.ts +3 -0
- package/dist/components/Accordion/Accordion.d.ts +39 -0
- package/dist/components/Accordion/config.d.ts +9 -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/ChipList/ChipList.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/CopyBtn/CopyBtn.d.ts +2 -0
- package/dist/components/Customs/SyBtnSelect/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Customs/SyInputSelect/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Customs/SyInputSelect/SyInputSelect.d.ts +12 -0
- package/dist/components/Customs/SySelect/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Customs/SySelect/SySelect.d.ts +43 -16
- package/dist/components/Customs/SyTextField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/Customs/SyTextField/SyTextField.d.ts +17 -17
- package/dist/components/DataList/AccessibiliteItems.d.ts +1 -1
- package/dist/components/DataListGroup/AccessibiliteItems.d.ts +1 -1
- package/dist/components/DatePicker/AccessibiliteItems.d.ts +1 -1
- package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +4162 -0
- package/dist/components/DatePicker/{DatePicker.d.ts → DatePicker/DatePicker.d.ts} +176 -136
- package/dist/components/DatePicker/{DateTextInput.d.ts → DateTextInput/DateTextInput.d.ts} +48 -42
- package/dist/components/DatePicker/composables/index.d.ts +15 -0
- package/dist/components/DatePicker/composables/useDateFormatValidation.d.ts +25 -0
- package/dist/components/DatePicker/composables/useDateInputEditing.d.ts +33 -0
- package/dist/components/DatePicker/composables/useDatePickerViewMode.d.ts +16 -0
- package/dist/components/DatePicker/composables/useDatePickerVisibility.d.ts +27 -0
- package/dist/components/DatePicker/composables/useDateRangeInput.d.ts +29 -0
- package/dist/components/DatePicker/composables/useDateRangeValidation.d.ts +11 -0
- package/dist/components/DatePicker/composables/useDateSelection.d.ts +10 -0
- package/dist/components/DatePicker/composables/useDateValidation.d.ts +35 -0
- package/dist/components/DatePicker/composables/useDisplayedDateString.d.ts +16 -0
- package/dist/components/DatePicker/composables/useIconState.d.ts +17 -0
- package/dist/components/DatePicker/composables/useInputBlurHandler.d.ts +30 -0
- package/dist/components/DatePicker/composables/useInputHandler.d.ts +32 -0
- package/dist/components/DatePicker/composables/useManualDateValidation.d.ts +33 -0
- package/dist/components/DatePicker/composables/useMonthButtonCustomization.d.ts +9 -0
- package/dist/components/DatePicker/composables/useTodayButton.d.ts +16 -0
- package/dist/components/DatePicker/composables/useWeekendDays.d.ts +11 -0
- package/dist/components/DatePicker/constants/messages.d.ts +29 -0
- package/dist/components/DatePicker/types.d.ts +13 -0
- package/dist/components/DiacriticPicker/DiacriticPicker.d.ts +27 -0
- package/dist/components/DiacriticPicker/config.d.ts +14 -0
- package/dist/components/DiacriticPicker/locales.d.ts +6 -0
- package/dist/components/DialogBox/AccessibiliteItems.d.ts +1 -1
- package/dist/components/DownloadBtn/AccessibiliteItems.d.ts +1 -1
- package/dist/components/DownloadBtn/DownloadBtn.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/FooterBar/FooterBar.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 +34 -32
- package/dist/components/NotFoundPage/AccessibiliteItems.d.ts +1 -1
- package/dist/components/NotificationBar/AccessibiliteItems.d.ts +1 -1
- package/dist/components/NotificationBar/NotificationBar.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 +1 -1
- package/dist/components/PeriodField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/PeriodField/PeriodField.d.ts +235 -101
- package/dist/components/PhoneField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/PhoneField/PhoneField.d.ts +1 -0
- package/dist/components/PhoneField/tests/types.d.ts +18 -0
- package/dist/components/RangeField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/RatingPicker/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SearchListField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SelectBtnField/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SkipLink/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SocialMediaLinks/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SubHeader/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SyAlert/AccessibiliteItems.d.ts +1 -1
- package/dist/components/SyTextArea/SyTextArea.d.ts +900 -0
- package/dist/components/SyTextArea/locales.d.ts +3 -0
- package/dist/components/SyTextArea/trimStartOnUpdate.d.ts +1 -0
- package/dist/components/SyTextArea/useTextActions.d.ts +13 -0
- package/dist/components/SyTextArea/wrapText.d.ts +1 -0
- package/dist/components/TableToolbar/AccessibiliteItems.d.ts +1 -1
- package/dist/components/TableToolbar/TableToolbar.d.ts +10 -4
- package/dist/components/TableToolbar/config.d.ts +3 -2
- package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +647 -0
- package/dist/components/Tables/SyTable/SyTable.d.ts +666 -0
- package/dist/components/Tables/common/SyTableFilter.d.ts +126 -0
- package/dist/components/Tables/common/TableHeader.d.ts +33 -0
- package/dist/components/Tables/common/constants/StateEnum.d.ts +6 -0
- package/dist/components/Tables/common/filters/DateFilter.d.ts +121 -0
- package/dist/components/Tables/common/filters/NumberFilter.d.ts +132 -0
- package/dist/components/Tables/common/filters/PeriodFilter.d.ts +135 -0
- package/dist/components/Tables/common/filters/SelectFilter.d.ts +120 -0
- package/dist/components/Tables/common/filters/TextFilter.d.ts +132 -0
- package/dist/components/Tables/common/formatters.d.ts +17 -0
- package/dist/components/Tables/common/locales.d.ts +7 -0
- package/dist/components/Tables/common/tableAccessibilityUtils.d.ts +8 -0
- package/dist/components/Tables/common/tableFilterUtils.d.ts +2 -0
- package/dist/components/Tables/common/tableStorageUtils.d.ts +29 -0
- package/dist/components/Tables/common/tableUtils.d.ts +42 -0
- package/dist/components/Tables/common/types.d.ts +80 -0
- package/dist/components/Tables/common/useTableFilter.d.ts +9 -0
- package/dist/components/Tables/index.d.ts +2 -0
- package/dist/components/UploadWorkflow/AccessibiliteItems.d.ts +1 -1
- package/dist/components/UserMenuBtn/AccessibiliteItems.d.ts +1 -1
- package/dist/components/index.d.ts +6 -1
- package/dist/composables/date/useHolidayDay.d.ts +36 -0
- package/dist/design-system-v3.js +100 -11271
- package/dist/design-system-v3.umd.cjs +22 -1
- 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/tokens/pa/paLightTheme.d.ts +1 -32
- package/dist/designTokens/utils/createFontVariables.d.ts +39 -0
- package/dist/designTokens/utils/index.d.ts +2 -1
- package/dist/main-WDqeoGM-.js +14788 -0
- package/dist/style.css +1 -1
- package/dist/utils/rules/index.d.ts +1 -0
- package/dist/utils/rules/isHolidayDay/index.d.ts +11 -0
- package/dist/utils/rules/isHolidayDay/locales.d.ts +2 -0
- package/dist/utils/rules/isRequired/index.d.ts +1 -1
- package/dist/vite-env.d.ts +12 -0
- package/package.json +2 -1
- package/src/assets/_spacers.scss +37 -1
- package/src/assets/_typography.scss +158 -0
- package/src/assets/settings.scss +19 -0
- package/src/common/constants/ExpertiseLevelEnum.ts +7 -0
- package/src/components/Accordion/Accordion.mdx +69 -0
- package/src/components/Accordion/Accordion.stories.ts +262 -0
- package/src/components/Accordion/Accordion.vue +319 -0
- package/src/components/Accordion/config.ts +9 -0
- package/src/components/Accordion/tests/__snapshots__/accordion.spec.ts.snap +155 -0
- package/src/components/Accordion/tests/accordion.spec.ts +492 -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/CopyBtn/CopyBtn.stories.ts +189 -0
- package/src/components/CopyBtn/CopyBtn.vue +29 -1
- package/src/components/CopyBtn/tests/CopyBtn.spec.ts +102 -0
- package/src/components/Customs/SyBtnSelect/AccessibiliteItems.ts +1 -1
- package/src/components/Customs/SyInputSelect/AccessibiliteItems.ts +1 -1
- package/src/components/Customs/SyInputSelect/SyInputSelect.stories.ts +155 -1
- package/src/components/Customs/SyInputSelect/SyInputSelect.vue +97 -14
- package/src/components/Customs/SyInputSelect/tests/SyInputSelect.spec.ts +386 -106
- package/src/components/Customs/SySelect/AccessibiliteItems.ts +1 -1
- package/src/components/Customs/SySelect/SySelect.stories.ts +121 -2
- package/src/components/Customs/SySelect/SySelect.vue +25 -6
- package/src/components/Customs/SySelect/tests/SySelect.spec.ts +294 -3
- package/src/components/Customs/SyTextField/AccessibiliteItems.ts +1 -1
- package/src/components/Customs/SyTextField/SyTextField.vue +5 -3
- package/src/components/DataList/AccessibiliteItems.ts +1 -1
- package/src/components/DataListGroup/AccessibiliteItems.ts +1 -1
- package/src/components/DatePicker/AccessibiliteItems.ts +1 -1
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.mdx +212 -0
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +1097 -0
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +497 -180
- package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +941 -0
- package/src/components/DatePicker/DatePicker/DatePicker.mdx +176 -0
- package/src/components/DatePicker/{tests → DatePicker}/DatePicker.spec.ts +1 -1
- package/src/components/DatePicker/{DatePicker.stories.ts → DatePicker/DatePicker.stories.ts} +115 -400
- package/src/components/DatePicker/{DatePicker.vue → DatePicker/DatePicker.vue} +314 -83
- package/src/components/DatePicker/DatePickerOverview.mdx +227 -0
- package/src/components/DatePicker/{DatePickerValidation.mdx → DatePickerValidationExample/DatePickerValidation.mdx} +3 -3
- package/src/components/DatePicker/{DatePickerValidation.stories.ts → DatePickerValidationExample/DatePickerValidation.stories.ts} +2 -2
- package/src/components/DatePicker/DateTextInput/DateRange.stories.ts +310 -0
- package/src/components/DatePicker/DateTextInput/DateTextInput.range.spec.ts +278 -0
- package/src/components/DatePicker/{tests → DateTextInput}/DateTextInput.spec.ts +8 -7
- package/src/components/DatePicker/DateTextInput/DateTextInput.vue +916 -0
- package/src/components/DatePicker/DateTextInput/NoCalendar.mdx +64 -0
- package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +572 -0
- package/src/components/DatePicker/composables/index.ts +22 -0
- package/src/components/DatePicker/composables/tests/useDateFormatValidation.spec.ts +165 -0
- package/src/components/DatePicker/composables/tests/useDateInputEditing.spec.ts +359 -0
- package/src/components/DatePicker/composables/tests/useDatePickerViewMode.spec.ts +160 -0
- package/src/components/DatePicker/composables/tests/useDatePickerVisibility.spec.ts +339 -0
- package/src/components/DatePicker/composables/tests/useDateRangeInput.spec.ts +277 -0
- package/src/components/DatePicker/composables/tests/useDateRangeValidation.spec.ts +107 -0
- package/src/components/DatePicker/composables/tests/useDateSelection.spec.ts +171 -0
- package/src/components/DatePicker/composables/tests/useDateValidation.spec.ts +245 -0
- package/src/components/DatePicker/composables/tests/useDisplayedDateString.spec.ts +98 -0
- package/src/components/DatePicker/composables/tests/useIconState.spec.ts +130 -0
- package/src/components/DatePicker/composables/tests/useInputBlurHandler.spec.ts +278 -0
- package/src/components/DatePicker/composables/tests/useManualDateValidation.spec.ts +233 -0
- package/src/components/DatePicker/composables/tests/useMonthButtonCustomization.spec.ts +100 -0
- package/src/components/DatePicker/composables/tests/useTodayButton.spec.ts +97 -0
- package/src/components/DatePicker/composables/tests/useWeekendDays.spec.ts +28 -0
- package/src/components/DatePicker/composables/useDateFormatValidation.ts +95 -0
- package/src/components/DatePicker/composables/useDateInputEditing.ts +326 -0
- package/src/components/DatePicker/composables/useDatePickerViewMode.ts +61 -0
- package/src/components/DatePicker/composables/useDatePickerVisibility.ts +146 -0
- package/src/components/DatePicker/composables/useDateRangeInput.ts +375 -0
- package/src/components/DatePicker/composables/useDateRangeValidation.ts +48 -0
- package/src/components/DatePicker/composables/useDateSelection.ts +121 -0
- package/src/components/DatePicker/composables/useDateValidation.ts +225 -0
- package/src/components/DatePicker/composables/useDisplayedDateString.ts +58 -0
- package/src/components/DatePicker/composables/useIconState.ts +53 -0
- package/src/components/DatePicker/composables/useInputBlurHandler.ts +101 -0
- package/src/components/DatePicker/composables/useInputHandler.ts +436 -0
- package/src/components/DatePicker/composables/useManualDateValidation.ts +161 -0
- package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +89 -0
- package/src/components/DatePicker/composables/useTodayButton.ts +43 -0
- package/src/components/DatePicker/composables/useWeekendDays.ts +21 -0
- package/src/components/DatePicker/constants/messages.ts +50 -0
- package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +4 -4
- package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +1 -1
- package/src/components/DatePicker/playground/ComplexDatePickerPlayground.vue +172 -0
- package/src/components/DatePicker/playground/DatePickerHolidayRule.vue +130 -0
- package/src/components/DatePicker/types.ts +15 -0
- package/src/components/DiacriticPicker/DiacriticPicker.mdx +104 -0
- package/src/components/DiacriticPicker/DiacriticPicker.stories.ts +447 -0
- package/src/components/DiacriticPicker/DiacriticPicker.vue +262 -0
- package/src/components/DiacriticPicker/config.ts +15 -0
- package/src/components/DiacriticPicker/locales.ts +6 -0
- package/src/components/DiacriticPicker/tests/DiatriticPicker.spec.ts +132 -0
- package/src/components/DialogBox/AccessibiliteItems.ts +1 -1
- package/src/components/DialogBox/DialogBox.vue +1 -3
- package/src/components/DownloadBtn/AccessibiliteItems.ts +1 -1
- package/src/components/ErrorPage/AccessibiliteItems.ts +1 -1
- package/src/components/ExternalLinks/AccessibiliteItems.ts +1 -1
- package/src/components/FileList/AccessibiliteItems.ts +1 -1
- package/src/components/FilePreview/AccessibiliteItems.ts +1 -1
- package/src/components/FileUpload/AccessibiliteItems.ts +1 -1
- package/src/components/FilterInline/AccessibiliteItems.ts +1 -1
- package/src/components/FilterSideBar/AccessibiliteItems.ts +1 -1
- package/src/components/FilterSideBar/FilterSideBar.vue +108 -90
- package/src/components/FilterSideBar/tests/FilterSideBar.spec.ts +27 -0
- package/src/components/FilterSideBar/tests/__snapshots__/FilterSideBar.spec.ts.snap +114 -109
- package/src/components/FooterBar/AccessibiliteItems.ts +1 -1
- package/src/components/FooterBar/FooterBar.vue +2 -1
- package/src/components/FranceConnectBtn/AccessibiliteItems.ts +1 -1
- package/src/components/HeaderBar/AccessibiliteItems.ts +1 -1
- package/src/components/HeaderBar/HeaderBurgerMenu/AccessibiliteItems.ts +1 -1
- package/src/components/HeaderLoading/AccessibiliteItems.ts +1 -1
- package/src/components/HeaderToolbar/AccessibiliteItems.ts +1 -1
- package/src/components/LangBtn/AccessibiliteItems.ts +1 -1
- package/src/components/Logo/Accessibilite.stories.ts +4 -0
- package/src/components/Logo/AccessibiliteItems.ts +1 -1
- package/src/components/LogoBrandSection/AccessibiliteItems.ts +1 -1
- package/src/components/MaintenancePage/AccessibiliteItems.ts +1 -1
- package/src/components/NirField/AccessibiliteItems.ts +1 -1
- package/src/components/NirField/NirField.stories.ts +172 -0
- package/src/components/NirField/NirField.vue +15 -7
- package/src/components/NotFoundPage/AccessibiliteItems.ts +1 -1
- package/src/components/NotificationBar/Accessibilite.stories.ts +1 -1
- package/src/components/NotificationBar/AccessibiliteItems.ts +1 -1
- package/src/components/NotificationBar/NotificationBar.stories.ts +14 -0
- package/src/components/NotificationBar/NotificationBar.vue +26 -3
- package/src/components/NotificationBar/{options.ts → config.ts} +0 -1
- package/src/components/PageContainer/AccessibiliteItems.ts +1 -1
- package/src/components/PaginatedTable/AccessibiliteItems.ts +1 -1
- package/src/components/PaginatedTable/PaginatedTable.stories.ts +19 -0
- package/src/components/PaginatedTable/PaginatedTable.vue +51 -24
- 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 -3
- package/src/components/PasswordField/PasswordField.vue +26 -18
- package/src/components/PasswordField/tests/PasswordField.spec.ts +1 -10
- package/src/components/PeriodField/AccessibiliteItems.ts +1 -1
- package/src/components/PeriodField/PeriodField.vue +13 -1
- package/src/components/PhoneField/AccessibiliteItems.ts +1 -1
- package/src/components/PhoneField/PhoneField.stories.ts +143 -0
- package/src/components/PhoneField/PhoneField.vue +88 -30
- package/src/components/PhoneField/tests/PhoneField.additional.spec.ts +266 -0
- package/src/components/PhoneField/tests/PhoneField.spec.ts +248 -28
- package/src/components/PhoneField/tests/types.d.ts +19 -0
- package/src/components/RangeField/AccessibiliteItems.ts +1 -1
- package/src/components/RatingPicker/AccessibiliteItems.ts +1 -1
- package/src/components/SearchListField/AccessibiliteItems.ts +1 -1
- package/src/components/SelectBtnField/AccessibiliteItems.ts +1 -1
- package/src/components/SkipLink/AccessibiliteItems.ts +1 -1
- package/src/components/SocialMediaLinks/AccessibiliteItems.ts +1 -1
- package/src/components/SubHeader/AccessibiliteItems.ts +1 -1
- package/src/components/SyAlert/AccessibiliteItems.ts +1 -1
- package/src/components/SyTextArea/SyTextArea.mdx +17 -0
- package/src/components/SyTextArea/SyTextArea.stories.ts +322 -0
- package/src/components/SyTextArea/SyTextArea.vue +113 -0
- package/src/components/SyTextArea/locales.ts +3 -0
- package/src/components/SyTextArea/tests/SyTextArea.spec.ts +194 -0
- package/src/components/SyTextArea/trimStartOnUpdate.ts +12 -0
- package/src/components/SyTextArea/useTextActions.ts +52 -0
- package/src/components/SyTextArea/wrapText.ts +42 -0
- package/src/components/TableToolbar/AccessibiliteItems.ts +1 -1
- package/src/components/TableToolbar/TableToolbar.mdx +86 -1
- package/src/components/TableToolbar/TableToolbar.stories.ts +509 -107
- package/src/components/TableToolbar/TableToolbar.vue +25 -8
- package/src/components/TableToolbar/config.ts +3 -2
- package/src/components/TableToolbar/tests/__snapshots__/TableToolbar.spec.ts.snap +35 -12
- package/src/components/Tables/SyServerTable/FilterRules.stories.ts +83 -0
- package/src/components/Tables/SyServerTable/SyServerTable.mdx +160 -0
- package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +2887 -0
- package/src/components/Tables/SyServerTable/SyServerTable.vue +302 -0
- package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +450 -0
- package/src/components/Tables/SyServerTable/tests/__snapshots__/SyServerTable.spec.ts.snap +521 -0
- package/src/components/Tables/SyTable/FilterRules.stories.ts +235 -0
- package/src/components/Tables/SyTable/SyTable.mdx +129 -0
- package/src/components/Tables/SyTable/SyTable.stories.ts +1966 -0
- package/src/components/Tables/SyTable/SyTable.vue +317 -0
- package/src/components/Tables/SyTable/tests/SyTable.spec.ts +345 -0
- package/src/components/Tables/SyTable/tests/__snapshots__/SyTable.spec.ts.snap +521 -0
- package/src/components/Tables/common/SyTableFilter.vue +342 -0
- package/src/components/Tables/common/TableHeader.vue +221 -0
- package/src/components/Tables/common/constants/StateEnum.ts +6 -0
- package/src/components/Tables/common/filters/DateFilter.vue +140 -0
- package/src/components/Tables/common/filters/NumberFilter.vue +234 -0
- package/src/components/Tables/common/filters/PeriodFilter.vue +147 -0
- package/src/components/Tables/common/filters/SelectFilter.vue +126 -0
- package/src/components/Tables/common/filters/TextFilter.vue +191 -0
- package/src/components/Tables/common/filters/tests/DateFilter.spec.ts +187 -0
- package/src/components/Tables/common/filters/tests/NumberFilter.spec.ts +280 -0
- package/src/components/Tables/common/filters/tests/PeriodFilter.spec.ts +192 -0
- package/src/components/Tables/common/filters/tests/SelectFilter.spec.ts +219 -0
- package/src/components/Tables/common/filters/tests/TextFilter.spec.ts +260 -0
- package/src/components/Tables/common/formatters.ts +72 -0
- package/src/components/Tables/common/locales.ts +7 -0
- package/src/components/Tables/common/tableAccessibilityUtils.ts +61 -0
- package/src/components/Tables/common/tableFilterUtils.ts +327 -0
- package/src/components/Tables/common/tableStorageUtils.ts +102 -0
- package/src/components/Tables/common/tableStyles.scss +54 -0
- package/src/components/Tables/common/tableUtils.ts +115 -0
- package/src/components/Tables/common/tests/SyTableFilter.spec.ts +312 -0
- package/src/components/Tables/common/tests/resize.spec.ts +161 -0
- package/src/components/Tables/common/tests/tableFilterUtils.spec.ts +106 -0
- package/src/components/Tables/common/tests/tableUtils.spec.ts +272 -0
- package/src/components/Tables/common/types.ts +81 -0
- package/src/components/Tables/common/useTableFilter.ts +19 -0
- package/src/components/Tables/index.ts +3 -0
- package/src/components/UploadWorkflow/AccessibiliteItems.ts +1 -1
- package/src/components/UserMenuBtn/AccessibiliteItems.ts +1 -1
- package/src/components/index.ts +6 -1
- package/src/composables/date/useDateFormatDayjs.ts +8 -3
- package/src/composables/date/useDateInitializationDayjs.ts +28 -36
- package/src/composables/date/useHolidayDay.ts +98 -0
- package/src/composables/rules/useFieldValidation.ts +16 -4
- package/src/composables/validation/useValidation.ts +2 -1
- 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/tokens/pa/paLightTheme.ts +10 -41
- package/src/designTokens/utils/createFontVariables.ts +143 -0
- package/src/designTokens/utils/index.ts +2 -1
- package/src/stories/Accessibilite/Introduction.mdx +5 -2
- package/src/stories/Demarrer/Accueil.stories.ts +12 -3
- package/src/stories/DesignTokens/colors.stories.ts +100 -41
- package/src/utils/rules/index.ts +1 -0
- package/src/utils/rules/isHolidayDay/IsHolidayDay.mdx +52 -0
- package/src/utils/rules/isHolidayDay/IsHolidayDay.stories.ts +129 -0
- package/src/utils/rules/isHolidayDay/index.ts +36 -0
- package/src/utils/rules/isHolidayDay/locales.ts +5 -0
- package/src/utils/rules/isHolidayDay/tests/isHolidayDay.spec.ts +35 -0
- 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 -493
- package/src/components/DatePicker/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/DialogBox/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/DownloadBtn/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/ErrorPage/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/ExternalLinks/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FileList/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FilePreview/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FileUpload/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FilterInline/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FilterSideBar/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FooterBar/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/FranceConnectBtn/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/HeaderBar/HeaderBurgerMenu/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/HeaderBar/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/HeaderLoading/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/HeaderToolbar/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/LangBtn/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/Logo/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/LogoBrandSection/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/MaintenancePage/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/NirField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/NotFoundPage/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/NotificationBar/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/PageContainer/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/PaginatedTable/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/PasswordField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/PeriodField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/PhoneField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/RangeField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/RatingPicker/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/SearchListField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/SelectBtnField/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/SkipLink/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/SocialMediaLinks/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/SubHeader/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/SyAlert/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/TableToolbar/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/UploadWorkflow/constants/ExpertiseLevelEnum.ts +0 -4
- package/src/components/UserMenuBtn/constants/ExpertiseLevelEnum.ts +0 -4
- /package/dist/components/NotificationBar/{options.d.ts → config.d.ts} +0 -0
|
@@ -61,6 +61,10 @@
|
|
|
61
61
|
type: Boolean,
|
|
62
62
|
default: false,
|
|
63
63
|
},
|
|
64
|
+
density: {
|
|
65
|
+
type: String as PropType<'default' | 'comfortable' | 'compact' | undefined>,
|
|
66
|
+
default: 'default',
|
|
67
|
+
},
|
|
64
68
|
bgColor: {
|
|
65
69
|
type: String,
|
|
66
70
|
default: undefined,
|
|
@@ -73,6 +77,14 @@
|
|
|
73
77
|
type: Boolean,
|
|
74
78
|
default: false,
|
|
75
79
|
},
|
|
80
|
+
hideMessages: {
|
|
81
|
+
type: Boolean,
|
|
82
|
+
default: false,
|
|
83
|
+
},
|
|
84
|
+
width: {
|
|
85
|
+
type: String,
|
|
86
|
+
default: 'undefined',
|
|
87
|
+
},
|
|
76
88
|
})
|
|
77
89
|
|
|
78
90
|
const emit = defineEmits(['update:modelValue'])
|
|
@@ -100,9 +112,8 @@
|
|
|
100
112
|
const rect = input.value.$el.getBoundingClientRect()
|
|
101
113
|
listStyles.value = {
|
|
102
114
|
position: 'fixed',
|
|
103
|
-
top: `${rect.bottom}px`,
|
|
115
|
+
top: props.density === 'compact' ? `${rect.bottom + 22}px` : `${rect.bottom}px`,
|
|
104
116
|
left: `${rect.left}px`,
|
|
105
|
-
width: `${rect.width}px`,
|
|
106
117
|
zIndex: '999',
|
|
107
118
|
}
|
|
108
119
|
}
|
|
@@ -159,21 +170,27 @@
|
|
|
159
170
|
})
|
|
160
171
|
|
|
161
172
|
const isRequired = computed(() => {
|
|
162
|
-
// Si la gestion des erreurs est désactivée, on ne considère jamais le champ comme requis
|
|
163
173
|
if (props.disableErrorHandling) return false
|
|
174
|
+
if (props.readonly) return
|
|
164
175
|
return (props.required || props.errorMessages.length > 0) && !selectedItem.value
|
|
165
176
|
})
|
|
166
177
|
|
|
167
178
|
const input = ref<InstanceType<typeof VTextField> | null>(null)
|
|
168
179
|
|
|
180
|
+
const calculatedWidth = computed(() => {
|
|
181
|
+
const baseWidth = props.width ? Number(props.width) : 0
|
|
182
|
+
const selectedText = typeof selectedItemText.value === 'string' ? selectedItemText.value : ''
|
|
183
|
+
const clearableAdjustment = props.clearable ? 4 : 0
|
|
184
|
+
return `${baseWidth + selectedText.length * (4 + clearableAdjustment)}px`
|
|
185
|
+
})
|
|
186
|
+
|
|
169
187
|
watch(() => props.modelValue, (newValue) => {
|
|
170
188
|
selectedItem.value = newValue
|
|
171
189
|
})
|
|
172
190
|
|
|
173
191
|
watch([isOpen, hasError], ([newIsOpen, newHasError]) => {
|
|
174
192
|
if (!newIsOpen) {
|
|
175
|
-
|
|
176
|
-
if (props.disableErrorHandling) {
|
|
193
|
+
if (props.disableErrorHandling || props.readonly) {
|
|
177
194
|
hasError.value = false
|
|
178
195
|
}
|
|
179
196
|
else {
|
|
@@ -186,7 +203,6 @@
|
|
|
186
203
|
})
|
|
187
204
|
|
|
188
205
|
watch(() => props.errorMessages, (newValue) => {
|
|
189
|
-
// Si la gestion des erreurs est désactivée, on ne met jamais hasError à true
|
|
190
206
|
if (!props.disableErrorHandling) {
|
|
191
207
|
hasError.value = newValue.length > 0
|
|
192
208
|
}
|
|
@@ -233,8 +249,11 @@
|
|
|
233
249
|
:rules="isRequired && !props.disableErrorHandling ? ['Le champ est requis.'] : []"
|
|
234
250
|
:display-asterisk="displayAsterisk"
|
|
235
251
|
:bg-color="props.bgColor"
|
|
252
|
+
:density="props.density"
|
|
236
253
|
readonly
|
|
254
|
+
:hide-details="props.hideMessages"
|
|
237
255
|
class="sy-select"
|
|
256
|
+
:width="calculatedWidth"
|
|
238
257
|
:style="hasError ? { minWidth: `${labelWidth + 18}px`} : {minWidth: `${labelWidth}px`}"
|
|
239
258
|
@click="toggleMenu"
|
|
240
259
|
@keydown.enter.prevent="toggleMenu"
|
|
@@ -50,12 +50,14 @@ describe('SySelect.vue', () => {
|
|
|
50
50
|
it('renders error messages when provided', () => {
|
|
51
51
|
const errorMessages = ['Error 1']
|
|
52
52
|
const wrapper = mount(SySelect, {
|
|
53
|
-
props: { errorMessages },
|
|
53
|
+
props: { errorMessages, hideMessages: false },
|
|
54
54
|
global: {
|
|
55
55
|
plugins: [vuetify],
|
|
56
56
|
},
|
|
57
57
|
})
|
|
58
|
-
|
|
58
|
+
const message = wrapper.find('.v-messages__message')
|
|
59
|
+
expect(message.exists()).toBe(true)
|
|
60
|
+
expect(message.text()).toContain('Error 1')
|
|
59
61
|
})
|
|
60
62
|
|
|
61
63
|
it('does not render error messages when not provided', () => {
|
|
@@ -192,14 +194,303 @@ describe('SySelect.vue', () => {
|
|
|
192
194
|
expect(wrapper.emitted()['update:modelValue'][0]).toEqual(['1'])
|
|
193
195
|
})
|
|
194
196
|
|
|
195
|
-
it('
|
|
197
|
+
it('ferme le menu avec la méthode closeList', async () => {
|
|
196
198
|
const wrapper = mount(SySelect, {
|
|
199
|
+
props: {
|
|
200
|
+
items: [{ text: 'Option 1', value: '1' }],
|
|
201
|
+
},
|
|
202
|
+
global: {
|
|
203
|
+
plugins: [vuetify],
|
|
204
|
+
},
|
|
205
|
+
})
|
|
206
|
+
|
|
207
|
+
await wrapper.find('.sy-select').trigger('click')
|
|
208
|
+
await wrapper.vm.$nextTick()
|
|
209
|
+
|
|
210
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- This is a generic type
|
|
211
|
+
const instance = wrapper.vm as any
|
|
212
|
+
expect(instance.isOpen).toBe(true)
|
|
213
|
+
|
|
214
|
+
instance.closeList()
|
|
215
|
+
await wrapper.vm.$nextTick()
|
|
216
|
+
|
|
217
|
+
expect(instance.isOpen).toBe(false)
|
|
218
|
+
})
|
|
219
|
+
|
|
220
|
+
describe('Affichage de l\'astérisque', () => {
|
|
221
|
+
it('affiche l\'astérisque quand displayAsterisk et required sont true', () => {
|
|
222
|
+
const wrapper = mount(SySelect, {
|
|
223
|
+
props: {
|
|
224
|
+
displayAsterisk: true,
|
|
225
|
+
required: true,
|
|
226
|
+
label: 'Test Label',
|
|
227
|
+
},
|
|
228
|
+
global: {
|
|
229
|
+
plugins: [vuetify],
|
|
230
|
+
},
|
|
231
|
+
})
|
|
232
|
+
|
|
233
|
+
const html = wrapper.html()
|
|
234
|
+
expect(html).toContain('Test Label *')
|
|
235
|
+
})
|
|
236
|
+
|
|
237
|
+
it('n\'affiche pas l\'astérisque quand displayAsterisk est false', () => {
|
|
238
|
+
const wrapper = mount(SySelect, {
|
|
239
|
+
props: {
|
|
240
|
+
displayAsterisk: false,
|
|
241
|
+
required: true,
|
|
242
|
+
label: 'Test Label',
|
|
243
|
+
},
|
|
244
|
+
global: {
|
|
245
|
+
plugins: [vuetify],
|
|
246
|
+
},
|
|
247
|
+
})
|
|
248
|
+
|
|
249
|
+
const html = wrapper.html()
|
|
250
|
+
expect(html).not.toContain('Test Label *')
|
|
251
|
+
expect(html).toContain('Test Label')
|
|
252
|
+
})
|
|
253
|
+
|
|
254
|
+
it('n\'affiche pas l\'astérisque quand required est false', () => {
|
|
255
|
+
const wrapper = mount(SySelect, {
|
|
256
|
+
props: {
|
|
257
|
+
displayAsterisk: true,
|
|
258
|
+
required: false,
|
|
259
|
+
label: 'Test Label',
|
|
260
|
+
},
|
|
261
|
+
global: {
|
|
262
|
+
plugins: [vuetify],
|
|
263
|
+
},
|
|
264
|
+
})
|
|
265
|
+
|
|
266
|
+
const html = wrapper.html()
|
|
267
|
+
expect(html).not.toContain('Test Label *')
|
|
268
|
+
expect(html).toContain('Test Label')
|
|
269
|
+
})
|
|
270
|
+
})
|
|
271
|
+
|
|
272
|
+
describe('Mode readonly', () => {
|
|
273
|
+
it('empêche l\'ouverture du menu en mode readonly', async () => {
|
|
274
|
+
const wrapper = mount(SySelect, {
|
|
275
|
+
props: {
|
|
276
|
+
readonly: true,
|
|
277
|
+
items: [{ text: 'Option 1', value: '1' }],
|
|
278
|
+
},
|
|
279
|
+
global: {
|
|
280
|
+
plugins: [vuetify],
|
|
281
|
+
},
|
|
282
|
+
})
|
|
283
|
+
|
|
284
|
+
await wrapper.find('.sy-select').trigger('click')
|
|
285
|
+
await wrapper.vm.$nextTick()
|
|
286
|
+
|
|
287
|
+
expect(wrapper.find('.v-list').exists()).toBe(false)
|
|
288
|
+
|
|
289
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- This is a generic type
|
|
290
|
+
const instance = wrapper.vm as any
|
|
291
|
+
expect(instance.isOpen).toBe(false)
|
|
292
|
+
})
|
|
293
|
+
|
|
294
|
+
it('affiche correctement le champ en mode readonly', () => {
|
|
295
|
+
const wrapper = mount(SySelect, {
|
|
296
|
+
props: {
|
|
297
|
+
readonly: true,
|
|
298
|
+
modelValue: { text: 'Option 1', value: '1' },
|
|
299
|
+
textKey: 'text',
|
|
300
|
+
returnObject: true,
|
|
301
|
+
},
|
|
302
|
+
global: {
|
|
303
|
+
plugins: [vuetify],
|
|
304
|
+
},
|
|
305
|
+
})
|
|
306
|
+
|
|
307
|
+
expect(wrapper.find('.v-input--readonly').exists()).toBe(true)
|
|
308
|
+
|
|
309
|
+
expect(wrapper.html()).toContain('Option 1')
|
|
310
|
+
})
|
|
311
|
+
})
|
|
312
|
+
|
|
313
|
+
describe('Option clearable', () => {
|
|
314
|
+
it('affiche l\'icône de suppression quand clearable est true et qu\'une valeur est sélectionnée', async () => {
|
|
315
|
+
const wrapper = mount(SySelect, {
|
|
316
|
+
props: {
|
|
317
|
+
clearable: true,
|
|
318
|
+
modelValue: { text: 'Option 1', value: '1' },
|
|
319
|
+
returnObject: true,
|
|
320
|
+
},
|
|
321
|
+
global: {
|
|
322
|
+
plugins: [vuetify],
|
|
323
|
+
},
|
|
324
|
+
})
|
|
325
|
+
|
|
326
|
+
expect(wrapper.find('.sy-select__clear-icon').exists()).toBe(true)
|
|
327
|
+
})
|
|
328
|
+
|
|
329
|
+
it('n\'affiche pas l\'icône de suppression quand clearable est false', () => {
|
|
330
|
+
const wrapper = mount(SySelect, {
|
|
331
|
+
props: {
|
|
332
|
+
clearable: false,
|
|
333
|
+
modelValue: { text: 'Option 1', value: '1' },
|
|
334
|
+
returnObject: true,
|
|
335
|
+
},
|
|
336
|
+
global: {
|
|
337
|
+
plugins: [vuetify],
|
|
338
|
+
},
|
|
339
|
+
})
|
|
340
|
+
|
|
341
|
+
expect(wrapper.find('.v-icon.mdi-close-circle').exists()).toBe(false)
|
|
342
|
+
})
|
|
343
|
+
|
|
344
|
+
it('efface la valeur sélectionnée avec la méthode selectItem', async () => {
|
|
345
|
+
const wrapper = mount(SySelect, {
|
|
346
|
+
props: {
|
|
347
|
+
clearable: true,
|
|
348
|
+
modelValue: { text: 'Option 1', value: '1' },
|
|
349
|
+
returnObject: true,
|
|
350
|
+
},
|
|
351
|
+
global: {
|
|
352
|
+
plugins: [vuetify],
|
|
353
|
+
},
|
|
354
|
+
})
|
|
355
|
+
|
|
356
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- This is a generic type
|
|
357
|
+
const instance = wrapper.vm as any
|
|
358
|
+
instance.selectItem(null)
|
|
359
|
+
await wrapper.vm.$nextTick()
|
|
360
|
+
|
|
361
|
+
expect(wrapper.emitted()['update:modelValue'][0]).toEqual([null])
|
|
362
|
+
})
|
|
363
|
+
})
|
|
364
|
+
|
|
365
|
+
describe('Validation', () => {
|
|
366
|
+
it('affiche une erreur pour un champ requis sans valeur', async () => {
|
|
367
|
+
const wrapper = mount(SySelect, {
|
|
368
|
+
props: {
|
|
369
|
+
required: true,
|
|
370
|
+
label: 'Test Label',
|
|
371
|
+
modelValue: undefined,
|
|
372
|
+
},
|
|
373
|
+
global: {
|
|
374
|
+
plugins: [vuetify],
|
|
375
|
+
},
|
|
376
|
+
})
|
|
377
|
+
|
|
378
|
+
await wrapper.find('.sy-select').trigger('click')
|
|
379
|
+
await wrapper.vm.$nextTick()
|
|
380
|
+
await wrapper.find('.sy-select').trigger('click')
|
|
381
|
+
await wrapper.vm.$nextTick()
|
|
382
|
+
|
|
383
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- This is a generic type
|
|
384
|
+
const instance = wrapper.vm as any
|
|
385
|
+
expect(instance.hasError).toBe(true)
|
|
386
|
+
})
|
|
387
|
+
|
|
388
|
+
it('n\'affiche pas d\'erreur pour un champ requis avec une valeur', async () => {
|
|
389
|
+
const wrapper = mount(SySelect, {
|
|
390
|
+
props: {
|
|
391
|
+
required: true,
|
|
392
|
+
label: 'Test Label',
|
|
393
|
+
modelValue: { text: 'Option 1', value: '1' },
|
|
394
|
+
returnObject: true,
|
|
395
|
+
},
|
|
396
|
+
global: {
|
|
397
|
+
plugins: [vuetify],
|
|
398
|
+
},
|
|
399
|
+
})
|
|
400
|
+
|
|
401
|
+
await wrapper.find('.sy-select').trigger('click')
|
|
402
|
+
await wrapper.vm.$nextTick()
|
|
403
|
+
await wrapper.find('.sy-select').trigger('click')
|
|
404
|
+
await wrapper.vm.$nextTick()
|
|
405
|
+
|
|
406
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- This is a generic type
|
|
407
|
+
const instance = wrapper.vm as any
|
|
408
|
+
expect(instance.hasError).toBe(false)
|
|
409
|
+
})
|
|
410
|
+
|
|
411
|
+
it('n\'affiche pas d\'erreur quand disableErrorHandling est true', async () => {
|
|
412
|
+
const wrapper = mount(SySelect, {
|
|
413
|
+
props: {
|
|
414
|
+
required: true,
|
|
415
|
+
label: 'Test Label',
|
|
416
|
+
modelValue: undefined,
|
|
417
|
+
disableErrorHandling: true,
|
|
418
|
+
},
|
|
419
|
+
global: {
|
|
420
|
+
plugins: [vuetify],
|
|
421
|
+
},
|
|
422
|
+
})
|
|
423
|
+
|
|
424
|
+
await wrapper.find('.sy-select').trigger('click')
|
|
425
|
+
await wrapper.vm.$nextTick()
|
|
426
|
+
await wrapper.find('.sy-select').trigger('click')
|
|
427
|
+
await wrapper.vm.$nextTick()
|
|
428
|
+
|
|
429
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- This is a generic type
|
|
430
|
+
const instance = wrapper.vm as any
|
|
431
|
+
expect(instance.hasError).toBe(false)
|
|
432
|
+
})
|
|
433
|
+
})
|
|
434
|
+
|
|
435
|
+
describe('Comportement du menu', () => {
|
|
436
|
+
it('ouvre et ferme le menu au clic', async () => {
|
|
437
|
+
const wrapper = mount(SySelect, {
|
|
438
|
+
props: {
|
|
439
|
+
items: [{ text: 'Option 1', value: '1' }],
|
|
440
|
+
},
|
|
441
|
+
global: {
|
|
442
|
+
plugins: [vuetify],
|
|
443
|
+
},
|
|
444
|
+
})
|
|
445
|
+
|
|
446
|
+
expect(wrapper.find('.v-list').exists()).toBe(false)
|
|
447
|
+
|
|
448
|
+
await wrapper.find('.sy-select').trigger('click')
|
|
449
|
+
await wrapper.vm.$nextTick()
|
|
450
|
+
|
|
451
|
+
expect(wrapper.find('.v-list').exists()).toBe(true)
|
|
452
|
+
|
|
453
|
+
await wrapper.find('.sy-select').trigger('click')
|
|
454
|
+
await wrapper.vm.$nextTick()
|
|
455
|
+
|
|
456
|
+
expect(wrapper.find('.v-list').exists()).toBe(false)
|
|
457
|
+
})
|
|
458
|
+
|
|
459
|
+
it('met à jour isOpen quand on ouvre le menu', async () => {
|
|
460
|
+
const wrapper = mount(SySelect, {
|
|
461
|
+
props: {
|
|
462
|
+
items: [{ text: 'Option 1', value: '1' }],
|
|
463
|
+
},
|
|
464
|
+
global: {
|
|
465
|
+
plugins: [vuetify],
|
|
466
|
+
},
|
|
467
|
+
})
|
|
468
|
+
|
|
469
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- This is a generic type
|
|
470
|
+
const instance = wrapper.vm as any
|
|
471
|
+
expect(instance.isOpen).toBe(false)
|
|
472
|
+
|
|
473
|
+
await wrapper.find('.sy-select').trigger('click')
|
|
474
|
+
await wrapper.vm.$nextTick()
|
|
475
|
+
|
|
476
|
+
expect(instance.isOpen).toBe(true)
|
|
477
|
+
})
|
|
478
|
+
})
|
|
479
|
+
|
|
480
|
+
it('ferme le menu après un clic sur le sélecteur', async () => {
|
|
481
|
+
const wrapper = mount(SySelect, {
|
|
482
|
+
props: {
|
|
483
|
+
items: [{ text: 'Option 1', value: '1' }],
|
|
484
|
+
},
|
|
197
485
|
global: {
|
|
198
486
|
plugins: [vuetify],
|
|
199
487
|
},
|
|
200
488
|
})
|
|
489
|
+
|
|
201
490
|
await wrapper.find('.sy-select').trigger('click')
|
|
491
|
+
await wrapper.vm.$nextTick()
|
|
202
492
|
expect(wrapper.find('.v-list').exists()).toBe(true)
|
|
493
|
+
|
|
203
494
|
await wrapper.find('.sy-select').trigger('mouseleave')
|
|
204
495
|
await wrapper.find('.sy-select').trigger('click')
|
|
205
496
|
await wrapper.vm.$nextTick()
|
|
@@ -212,7 +212,11 @@
|
|
|
212
212
|
)
|
|
213
213
|
|
|
214
214
|
const validateField = (value: string | number | null) => {
|
|
215
|
-
|
|
215
|
+
if (props.readonly) {
|
|
216
|
+
validation.clearValidation()
|
|
217
|
+
return true
|
|
218
|
+
}
|
|
219
|
+
|
|
216
220
|
if (!value && !props.required) {
|
|
217
221
|
validation.clearValidation()
|
|
218
222
|
return true
|
|
@@ -247,7 +251,6 @@
|
|
|
247
251
|
}
|
|
248
252
|
})
|
|
249
253
|
|
|
250
|
-
// Computed pour l'affichage des états
|
|
251
254
|
const hasError = computed(() => validation.hasError.value)
|
|
252
255
|
const hasWarning = computed(() => validation.hasWarning.value)
|
|
253
256
|
const hasSuccess = computed(() => validation.hasSuccess.value)
|
|
@@ -256,7 +259,6 @@
|
|
|
256
259
|
const warnings = computed(() => validation.warnings.value)
|
|
257
260
|
const successes = computed(() => validation.successes.value)
|
|
258
261
|
|
|
259
|
-
// Computed pour les icônes
|
|
260
262
|
const appendInnerIconColor = computed(() => {
|
|
261
263
|
if (props.appendInnerIcon === 'error') return 'error'
|
|
262
264
|
if (props.appendInnerIcon === 'success') return 'success'
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import {Meta, Canvas, Controls, Source} from '@storybook/blocks';
|
|
2
|
+
import * as DatePickerStories from "./ComplexDatePicker.stories.ts";
|
|
3
|
+
|
|
4
|
+
<Meta of={DatePickerStories}/>
|
|
5
|
+
|
|
6
|
+
# DatePicker - Mode combiné
|
|
7
|
+
|
|
8
|
+
Le DatePicker en mode combiné (`useCombinedMode: true`) permet d'utiliser à la fois le calendrier interactif et la saisie manuelle avec formatage automatique.
|
|
9
|
+
|
|
10
|
+
## Description
|
|
11
|
+
|
|
12
|
+
Cette variante du DatePicker est particulièrement utile lorsque :
|
|
13
|
+
- Vous souhaitez offrir plusieurs méthodes de saisie de date aux utilisateurs
|
|
14
|
+
- Vous avez besoin du formatage automatique intelligent des dates pendant la saisie
|
|
15
|
+
- Vous voulez conserver l'interaction avec le calendrier pour une meilleure expérience utilisateur
|
|
16
|
+
|
|
17
|
+
Le formatage automatique intelligent ajoute les séparateurs (/, -, etc.) pendant la saisie en fonction du format spécifié.
|
|
18
|
+
|
|
19
|
+
<Canvas story={{height: '550px'}} of={DatePickerStories.Default}/>
|
|
20
|
+
|
|
21
|
+
## Propriétés spécifiques
|
|
22
|
+
|
|
23
|
+
Propriétés applicables pour le mode combiné :
|
|
24
|
+
|
|
25
|
+
<Controls of={DatePickerStories.Default}/>
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
# Fonctionnalités spécifiques
|
|
29
|
+
|
|
30
|
+
## Formatage automatique des dates
|
|
31
|
+
|
|
32
|
+
Le composant ComplexDatePicker offre un formatage automatique intelligent des dates pendant la saisie. Les séparateurs sont automatiquement ajoutés lors de la saisie des chiffres, en s'adaptant au format spécifié (DD/MM/YYYY, MM/DD/YYYY, YYYY-MM-DD, etc.).
|
|
33
|
+
|
|
34
|
+
<Canvas of={DatePickerStories.AutoFormattingInput}/>
|
|
35
|
+
|
|
36
|
+
## Désactivation de l'interaction avec le calendrier
|
|
37
|
+
|
|
38
|
+
La propriété `disablePickerInteraction` permet d'utiliser le champ de saisie avec formatage automatique sans que le calendrier n'apparaisse au clic sur l'input ou sur l'icône. Cette option est utile pour les cas où on souhaite uniquement la saisie manuelle.
|
|
39
|
+
|
|
40
|
+
<Canvas of={DatePickerStories.DisablePickerInteraction}/>
|
|
41
|
+
|
|
42
|
+
## Formats de date personnalisés
|
|
43
|
+
|
|
44
|
+
Le composant supporte différents formats de date et détecte automatiquement le séparateur utilisé dans le format (/, -, ., etc.) pour l'appliquer lors de la saisie.
|
|
45
|
+
|
|
46
|
+
<Canvas of={DatePickerStories.CustomDateFormat}/>
|
|
47
|
+
|
|
48
|
+
## Mode lecture seule
|
|
49
|
+
|
|
50
|
+
Le composant peut être configuré en mode lecture seule, ce qui empêche toute modification de la valeur.
|
|
51
|
+
|
|
52
|
+
<Canvas of={DatePickerStories.ReadonlyMode}/>
|
|
53
|
+
|
|
54
|
+
## Plages de dates
|
|
55
|
+
|
|
56
|
+
Le composant permet la sélection de plages de dates avec validation automatique.
|
|
57
|
+
|
|
58
|
+
<Canvas of={DatePickerStories.DateRange}/>
|
|
59
|
+
|
|
60
|
+
### DatePicker avec période personnalisée
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
<div
|
|
64
|
+
style={{
|
|
65
|
+
border: '2px solid #FF0000',
|
|
66
|
+
padding: '1rem',
|
|
67
|
+
borderRadius: '4px',
|
|
68
|
+
marginBottom: '1rem',
|
|
69
|
+
}}
|
|
70
|
+
>
|
|
71
|
+
<strong>Note importante</strong>
|
|
72
|
+
<ul>
|
|
73
|
+
<li>La prop <code>period</code> permet de définir une période de dates valides. Les dates en dehors de cette période ne seront pas visibles dans le calendrier.</li>
|
|
74
|
+
<li>Le format de la prop <code>period</code> est <code>MM/DD/YYYY</code>.</li>
|
|
75
|
+
</ul>
|
|
76
|
+
</div>
|
|
77
|
+
|
|
78
|
+
<Canvas of={DatePickerStories.WithCustomPeriod}/>
|
|
79
|
+
|
|
80
|
+
## Personnalisation des icônes
|
|
81
|
+
|
|
82
|
+
Vous pouvez personnaliser la position de l'icône du calendrier (au début ou à la fin du champ).
|
|
83
|
+
|
|
84
|
+
<Canvas of={DatePickerStories.WithCustomIcons}/>
|
|
85
|
+
|
|
86
|
+
## Activation par le champ de texte
|
|
87
|
+
|
|
88
|
+
La propriété `textFieldActivator` permet d'ouvrir le calendrier en cliquant n'importe où sur le champ de texte.
|
|
89
|
+
|
|
90
|
+
<Canvas of={DatePickerStories.WithTextFieldActivator}/>
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
# Validation et règles personnalisées
|
|
94
|
+
|
|
95
|
+
Le composant prend en charge des règles de validation personnalisées pour vérifier les dates saisies.
|
|
96
|
+
|
|
97
|
+
<Canvas of={DatePickerStories.WithValidation}/>
|
|
98
|
+
|
|
99
|
+
## Formats de retour différents
|
|
100
|
+
|
|
101
|
+
Vous pouvez spécifier un format différent pour la valeur de retour avec la propriété `dateFormatReturn`.
|
|
102
|
+
|
|
103
|
+
<Canvas of={DatePickerStories.WithDateFormatReturn}/>
|
|
104
|
+
|
|
105
|
+
## Intégration dans un formulaire
|
|
106
|
+
|
|
107
|
+
Le composant s'intègre facilement dans un formulaire avec validation à la soumission.
|
|
108
|
+
|
|
109
|
+
<Canvas of={DatePickerStories.WithFormSubmission}/>
|
|
110
|
+
|
|
111
|
+
# Méthodes exposées
|
|
112
|
+
|
|
113
|
+
Le composant expose plusieurs méthodes qui peuvent être utilisées via une référence :
|
|
114
|
+
|
|
115
|
+
### validateOnSubmit
|
|
116
|
+
- **Description** : Valide le champ lors de la soumission d'un formulaire
|
|
117
|
+
- **Retour** : `boolean` - Indique si la validation a réussi
|
|
118
|
+
|
|
119
|
+
### clearValidation
|
|
120
|
+
- **Description** : Efface les messages de validation
|
|
121
|
+
|
|
122
|
+
### validateDates
|
|
123
|
+
- **Description** : Valide les dates sélectionnées
|
|
124
|
+
|
|
125
|
+
### openDatePicker
|
|
126
|
+
- **Description** : Ouvre le calendrier programmatiquement
|
|
127
|
+
|
|
128
|
+
### toggleDatePicker
|
|
129
|
+
- **Description** : Bascule l'état d'ouverture du calendrier
|
|
130
|
+
|
|
131
|
+
### Exemple d'utilisation
|
|
132
|
+
|
|
133
|
+
<Source
|
|
134
|
+
dark code={`
|
|
135
|
+
<script setup lang="ts">
|
|
136
|
+
import { ref } from 'vue'
|
|
137
|
+
import { DatePicker } from '@cnamts/synapse'
|
|
138
|
+
|
|
139
|
+
const date = ref('')
|
|
140
|
+
const datePicker = ref(null)
|
|
141
|
+
|
|
142
|
+
const submitForm = () => {
|
|
143
|
+
const isValid = datePicker.value.validateOnSubmit()
|
|
144
|
+
if (isValid) {
|
|
145
|
+
// Traitement du formulaire
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
</script>
|
|
149
|
+
|
|
150
|
+
<template>
|
|
151
|
+
<form @submit.prevent="submitForm">
|
|
152
|
+
<DatePicker
|
|
153
|
+
ref="datePicker"
|
|
154
|
+
v-model="date"
|
|
155
|
+
placeholder="Date requise"
|
|
156
|
+
format="DD/MM/YYYY"
|
|
157
|
+
useCombinedMode
|
|
158
|
+
required
|
|
159
|
+
/>
|
|
160
|
+
<button type="submit">Soumettre</button>
|
|
161
|
+
</form>
|
|
162
|
+
</template>
|
|
163
|
+
`}
|
|
164
|
+
/>
|
|
165
|
+
|
|
166
|
+
### Exemple avec période personnalisée
|
|
167
|
+
|
|
168
|
+
<Source
|
|
169
|
+
dark code={`
|
|
170
|
+
<script setup lang="ts">
|
|
171
|
+
import { ref } from 'vue'
|
|
172
|
+
import { DatePicker } from '@cnamts/synapse'
|
|
173
|
+
|
|
174
|
+
const date = ref('')
|
|
175
|
+
</script>
|
|
176
|
+
|
|
177
|
+
<template>
|
|
178
|
+
<DatePicker
|
|
179
|
+
v-model="date"
|
|
180
|
+
placeholder="Sélectionner une date (1995-2005)"
|
|
181
|
+
format="DD/MM/YYYY"
|
|
182
|
+
useCombinedMode
|
|
183
|
+
:period="{
|
|
184
|
+
min: '01/01/1995',
|
|
185
|
+
max: '31/12/2005'
|
|
186
|
+
}"
|
|
187
|
+
/>
|
|
188
|
+
</template>
|
|
189
|
+
`}
|
|
190
|
+
/>
|
|
191
|
+
|
|
192
|
+
# Événements
|
|
193
|
+
|
|
194
|
+
Le composant émet plusieurs événements :
|
|
195
|
+
|
|
196
|
+
### update:modelValue
|
|
197
|
+
- **Payload** : `string | string[]` - La nouvelle valeur du champ
|
|
198
|
+
|
|
199
|
+
### closed
|
|
200
|
+
- **Description** : Émis lorsque le calendrier est fermé
|
|
201
|
+
|
|
202
|
+
### focus
|
|
203
|
+
- **Description** : Émis lorsque le champ reçoit le focus
|
|
204
|
+
|
|
205
|
+
### blur
|
|
206
|
+
- **Description** : Émis lorsque le champ perd le focus
|
|
207
|
+
|
|
208
|
+
### input
|
|
209
|
+
- **Payload** : `string` - La valeur saisie dans le champ
|
|
210
|
+
|
|
211
|
+
### date-selected
|
|
212
|
+
- **Payload** : `Date | Date[] | null` - La date ou les dates sélectionnées
|