@cnamts/synapse 1.0.20 → 1.0.22
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-XURUmpMl.js → DateFilter-B5n-ZkLi.js} +29 -24
- package/dist/{NumberFilter-BZc0O8wV.js → NumberFilter-CtiZ9uj8.js} +1 -1
- package/dist/{PeriodFilter-ZNdXcl3p.js → PeriodFilter-DzqiMb-b.js} +1 -1
- package/dist/{SelectFilter-DshYU5OK.js → SelectFilter-BOYlF7rX.js} +1 -1
- package/dist/{TextFilter-D_c5dRPl.js → TextFilter-BOFRNfcX.js} +1 -1
- package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +7399 -5967
- package/dist/components/Amelipro/AmeliproBtn/AmeliproBtn.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproCallback/AmeliproCallback.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarousel.d.ts +10 -14
- package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/AmeliproCarouselItem.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproFooter/AmeliproFooter.d.ts +8 -8
- package/dist/components/Amelipro/AmeliproHeader/AmeliproHeader.d.ts +3 -3
- package/dist/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBar.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/AmeliproHeaderBrandSection.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproIcon/AmeliproIcon.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +16 -20
- package/dist/components/Amelipro/AmeliproMenu/AmeliproMenu.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproPagination/AmeliproPaginationBtn/AmeliproPaginationBtn.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproPatientBanner/AmeliproPatientBanner.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +1610 -1354
- package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +2411 -2027
- package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +8889 -7327
- package/dist/components/Amelipro/AmeliproStateTile/AmeliproStateTile.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproStepper/AmeliproStepper.d.ts +2 -6
- package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +8888 -7334
- package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +951 -839
- package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +1613 -1357
- package/dist/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.d.ts +223 -203
- package/dist/components/Amelipro/AmeliproTransmission/AmeliproTransmission.d.ts +3 -3
- package/dist/components/Amelipro/StructureMenu/StructureTabs/StructureTabs.d.ts +3 -7
- package/dist/components/CollapsibleList/CollapsibleList.d.ts +4 -1
- package/dist/components/CookieBanner/CookieBanner.d.ts +303 -273
- package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +1297 -1156
- package/dist/components/CookiesSelection/CookiesSelection.d.ts +404 -377
- package/dist/components/Customs/Selects/SelectBtnField/SelectBtnField.d.ts +1 -1
- package/dist/components/Customs/Selects/SyAutocomplete/SyAutocomplete.d.ts +1088 -847
- package/dist/components/Customs/Selects/SyInputSelect/SyInputSelect.d.ts +1 -1
- package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +515 -321
- package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +162 -0
- package/dist/components/Customs/SyCheckBoxGroup/locales.d.ts +3 -0
- package/dist/components/Customs/SyCheckBoxGroup/types.d.ts +10 -0
- package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +1668 -5
- package/dist/components/Customs/SyForm/SyForm.d.ts +356 -348
- package/dist/components/Customs/SyPagination/SyPagination.d.ts +11 -1
- package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +1609 -4
- package/dist/components/Customs/SyTextField/SyTextField.d.ts +1629 -1365
- package/dist/components/DataList/DataList.d.ts +1 -1
- package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +3868 -3123
- package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +1946 -1562
- package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +833 -687
- package/dist/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.d.ts +60 -0
- package/dist/components/DialogBox/DialogBox.d.ts +482 -416
- package/dist/components/DownloadBtn/config.d.ts +1 -1
- package/dist/components/ErrorPage/ErrorPage.d.ts +5 -12
- package/dist/components/ErrorPage/locales.d.ts +18 -3
- package/dist/components/FileList/UploadItem/locales.d.ts +4 -0
- package/dist/components/FileUpload/FileUpload.d.ts +6 -4
- package/dist/components/FileUpload/locales.d.ts +1 -0
- package/dist/components/FilterSideBar/FilterSideBar.d.ts +418 -366
- package/dist/components/FooterBar/FooterBar.d.ts +13 -1
- package/dist/components/FooterBar/locales.d.ts +1 -0
- package/dist/components/FooterBar/types.d.ts +1 -0
- package/dist/components/HeaderBar/HeaderBar.d.ts +1 -0
- package/dist/components/HeaderBar/HeaderLogo/HeaderLogo.d.ts +1 -0
- package/dist/components/HeaderNavigationBar/HeaderNavigationBar.d.ts +3 -6
- package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +1031 -643
- package/dist/components/LangBtn/LangBtn.d.ts +277 -239
- package/dist/components/LogoBrandSection/LogoBrandSection.d.ts +4 -0
- package/dist/components/MaintenancePage/MaintenancePage.d.ts +16 -1
- package/dist/components/MaintenancePage/locales.d.ts +18 -2
- package/dist/components/NirField/NirField.d.ts +1659 -1371
- package/dist/components/NotFoundPage/NotFoundPage.d.ts +9 -3
- package/dist/components/NotFoundPage/locales.d.ts +20 -4
- package/dist/components/PageContainer/PageContainer.d.ts +3 -1
- package/dist/components/PasswordField/PasswordField.d.ts +1 -1
- package/dist/components/PeriodField/PeriodField.d.ts +7712 -6216
- package/dist/components/PhoneField/PhoneField.d.ts +831 -687
- package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +4 -12
- package/dist/components/StatusPage/StatusPage.d.ts +50 -0
- package/dist/components/SubHeader/SubHeader.d.ts +2 -0
- package/dist/components/SyAlert/SyAlert.d.ts +74 -70
- package/dist/components/SyBtnMenu/SyBtnMenu.d.ts +10 -1
- package/dist/components/SyHeading/SyHeading.d.ts +20 -0
- package/dist/components/SyTextArea/SyTextArea.d.ts +476 -420
- package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +759 -468
- package/dist/components/Tables/SyTable/SyTable.d.ts +761 -470
- package/dist/components/Tables/common/SyTableFilter.d.ts +1 -1
- package/dist/components/Tables/common/SyTablePagination.d.ts +269 -170
- package/dist/components/Tables/common/filters/DateFilter.d.ts +10 -1
- package/dist/components/Tables/common/filters/NumberFilter.d.ts +1 -1
- package/dist/components/Tables/common/filters/PeriodFilter.d.ts +1 -1
- package/dist/components/Tables/common/filters/SelectFilter.d.ts +1 -1
- package/dist/components/Tables/common/filters/TextFilter.d.ts +1 -1
- package/dist/components/Tables/common/organizeColumns/OrganizeColumns.d.ts +166 -138
- package/dist/components/Tables/common/types.d.ts +2 -0
- package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +35 -1212
- package/dist/components/UserMenuBtn/UserMenuBtn.d.ts +1 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/types.d.ts +2 -0
- package/dist/design-system-v3.js +131 -127
- package/dist/design-system-v3.umd.cjs +274 -274
- package/dist/designTokens/tokens/amelipro/apLightTheme.d.ts +26 -14
- package/dist/designTokens/tokens/amelipro/apSemantic.d.ts +19 -13
- package/dist/designTokens/tokens/cnam/cnamLightTheme.d.ts +28 -15
- package/dist/designTokens/tokens/cnam/cnamSemantic.d.ts +20 -13
- package/dist/designTokens/tokens/pa/paLightTheme.d.ts +26 -15
- package/dist/designTokens/tokens/pa/paSemantic.d.ts +19 -13
- package/dist/main-CEl4J8_T.js +37241 -0
- package/dist/style.css +1 -1
- package/dist/utils/theme/index.d.ts +6 -0
- package/dist/vuetifyConfig.d.ts +14 -14
- package/package.json +16 -7
- package/src/assets/amelipro/img/logo-amelipro.svg +9 -0
- package/src/assets/apTokens.scss +53 -17
- package/src/assets/overrides/_icons.scss +12 -2
- package/src/assets/overrides/_tooltips.scss +5 -6
- package/src/assets/overrides/_typography.scss +17 -2
- package/src/assets/overrides/_utilities.scss +49 -3
- package/src/assets/tokens.scss +53 -17
- package/src/components/Accordion/accessibilite/Accessibility.mdx +5 -4
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.vue +2 -2
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/__tests__/__snapshots__/AmeliproAccordionTemplate.spec.ts.snap +0 -2
- package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +2 -2
- package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/__snapshots__/AmeliproAccordionFrieze.spec.ts.snap +14 -56
- package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +1 -1
- package/src/components/Amelipro/AmeliproAccordionList/__tests__/__snapshots__/AmeliproAccordionList.spec.ts.snap +15 -23
- package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +1 -1
- package/src/components/Amelipro/AmeliproAccordionResultList/__tests__/__snapshots__/AmeliproAccordionResultList.spec.ts.snap +15 -3
- package/src/components/Amelipro/AmeliproCarousel/__tests__/__snapshots__/AmeliproCarousel.spec.ts.snap +0 -2
- package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +0 -98
- package/src/components/Amelipro/AmeliproContentLayout/AmeliproContentLayout.mdx +1 -1
- package/src/components/Amelipro/AmeliproContentLayout/AmeliproContentLayout.stories.ts +5 -16
- package/src/components/Amelipro/AmeliproCopyBtn/AmeliproCopyBtn.mdx +3 -1
- package/src/components/Amelipro/AmeliproCopyBtn/AmeliproCopyBtn.stories.ts +7 -0
- package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/AmeliproTooth.vue +0 -1
- package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/tests/__snapshots__/AmeliproTooth.spec.ts.snap +0 -1
- package/src/components/Amelipro/AmeliproDentalChart/tests/__snapshots__/AmeliproDentalChart.spec.ts.snap +0 -52
- package/src/components/Amelipro/AmeliproDialog/__tests__/__snapshots__/AmeliproDialog.spec.ts.snap +6 -0
- package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.mdx +3 -1
- package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.stories.ts +19 -0
- package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.vue +2 -2
- package/src/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.vue +3 -4
- package/src/components/Amelipro/AmeliproFirstLogin/__tests__/__snapshots__/AmeliproFirstLogin.spec.ts.snap +2 -13
- package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.mdx +3 -1
- package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.stories.ts +7 -0
- package/src/components/Amelipro/AmeliproMenu/__tests__/__snapshots__/AmeliproMenu.spec.ts.snap +8 -0
- package/src/components/Amelipro/AmeliproPatientLogged/__tests__/__snapshots__/AmeliproPatientLogged.spec.ts.snap +9 -2
- package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/__tests__/__snapshots__/AmeliproPostalAddressCityRow.spec.ts.snap +28 -10
- package/src/components/Amelipro/AmeliproPostalAddressField/__tests__/__snapshots__/AmeliproPostalAddressField.spec.ts.snap +44 -8
- package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.vue +1 -1
- package/src/components/Amelipro/AmeliproResultList/__tests__/__snapshots__/AmeliproResultList.spec.ts.snap +15 -3
- package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +1 -1
- package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +0 -1
- package/src/components/Amelipro/AmeliproTooltips/__tests__/__snapshots__/AmeliproTooltips.spec.ts.snap +6 -0
- package/src/components/Amelipro/AmeliproUpload/__tests__/__snapshots__/AmeliproUpload.spec.ts.snap +2 -4
- package/src/components/Amelipro/StructureMenu/StructureList/__tests__/__snapshots__/StructureList.spec.ts.snap +0 -2
- package/src/components/Amelipro/UserMenu/__tests__/__snapshots__/UserMenu.spec.ts.snap +8 -0
- package/src/components/BackBtn/BackBtn.vue +1 -1
- package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +36 -18
- package/src/components/ChipList/ChipList.vue +4 -2
- package/src/components/CollapsibleList/CollapsibleList.stories.ts +8 -3
- package/src/components/CollapsibleList/CollapsibleList.vue +14 -6
- package/src/components/CollapsibleList/accessibilite/Accessibility.mdx +19 -6
- package/src/components/CollapsibleList/tests/CollapsibleList.a11y.spec.ts +1 -0
- package/src/components/CollapsibleList/tests/CollapsibleList.spec.ts +2 -0
- package/src/components/ContextualMenu/ContextualMenu.stories.ts +0 -3
- package/src/components/ContextualMenu/accessibilite/Accessibility.mdx +67 -11
- package/src/components/CookieBanner/CookieBanner.stories.ts +21 -20
- package/src/components/CookieBanner/CookieBanner.vue +35 -10
- package/src/components/CookieBanner/accessibilite/Accessibility.mdx +76 -11
- package/src/components/CookieBanner/tests/CookieBanner.spec.ts +56 -4
- package/src/components/CookieBanner/tests/__snapshots__/CookieBanner.spec.ts.snap +21 -15
- package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +17 -8
- package/src/components/CookiesSelection/CookiesInformation/tests/CookiesInformation.a11y.spec.ts +1 -0
- package/src/components/CookiesSelection/CookiesInformation/tests/CookiesInformation.spec.ts +5 -0
- package/src/components/CookiesSelection/CookiesSelection.vue +7 -2
- package/src/components/CookiesSelection/tests/CookiesSelection.a11y.spec.ts +1 -0
- package/src/components/CookiesSelection/tests/CookiesSelection.spec.ts +5 -0
- package/src/components/CookiesSelection/tests/__snapshots__/CookiesSelection.spec.ts.snap +21 -15
- package/src/components/CopyBtn/CopyBtn.vue +6 -4
- package/src/components/CopyBtn/accessibilite/Accessibility.mdx +82 -11
- package/src/components/CopyBtn/tests/__snapshots__/CopyBtn.spec.ts.snap +5 -1
- package/src/components/Customs/Selects/SyInputSelect/SyInputSelect.stories.ts +4 -10
- package/src/components/Customs/Selects/SySelect/SySelect.mdx +0 -1
- package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +10 -10
- package/src/components/Customs/Selects/SySelect/SySelect.vue +17 -0
- package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +1 -1
- package/src/components/Customs/Selects/SySelect/tests/SySelect.a11y.spec.ts +1 -3
- package/src/components/Customs/Selects/SySelect/tests/SySelect.spec.ts +72 -0
- package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.mdx +32 -0
- package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.stories.ts +856 -0
- package/src/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.vue +334 -0
- package/src/components/Customs/SyCheckBoxGroup/accessibilite/Accessibility.mdx +243 -0
- package/src/components/Customs/SyCheckBoxGroup/locales.ts +3 -0
- package/src/components/Customs/SyCheckBoxGroup/tests/SyCheckBoxGroup.a11y.spec.ts +30 -0
- package/src/components/Customs/SyCheckBoxGroup/tests/SyCheckBoxGroup.spec.ts +152 -0
- package/src/components/Customs/SyCheckBoxGroup/types.ts +10 -0
- package/src/components/Customs/SyCheckbox/SyCheckbox.vue +17 -28
- package/src/components/Customs/SyCheckbox/accessibilite/Accessibility.mdx +1 -1
- package/src/components/Customs/SyForm/SyForm.a11y.spec.ts +1 -1
- package/src/components/Customs/SyIcon/SyIcon.a11y.spec.ts +31 -2
- package/src/components/Customs/SyIcon/SyIcon.vue +9 -5
- package/src/components/Customs/SyPagination/SyPagination.stories.ts +14 -2
- package/src/components/Customs/SyPagination/SyPagination.vue +20 -5
- package/src/components/Customs/SyPagination/accessibilite/Accessibility.mdx +79 -8
- package/src/components/Customs/SyPagination/tests/SyPagination.a11y.spec.ts +38 -12
- package/src/components/Customs/SyPagination/tests/SyPagination.spec.ts +12 -0
- package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +16 -43
- package/src/components/Customs/SyTextField/SyTextField.stories.ts +4 -0
- package/src/components/Customs/SyTextField/SyTextField.vue +39 -5
- package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +28 -3
- package/src/components/DatePicker/CalendarMode/DatePicker.vue +55 -19
- package/src/components/DatePicker/CalendarMode/tests/DatePicker.spec.ts +9 -3
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +44 -3
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +70 -47
- package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.a11y.spec.ts +9 -1
- package/src/components/DatePicker/DateTextInput/DateTextInput.vue +48 -21
- package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +98 -0
- package/src/components/DatePicker/docExamples/BidirectionalComplexValidation.vue +23 -9
- package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +21 -8
- package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +50 -22
- package/src/components/DatePicker/playground/ComplexDatePickerPlayground.vue +48 -10
- package/src/components/DatePicker/playground/DatePickerHolidayRule.vue +16 -3
- package/src/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.mdx +83 -0
- package/src/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.stories.ts +502 -0
- package/src/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.vue +428 -0
- package/src/components/DeclarationAccessibilityPage/accessibilite/Accessibility.mdx +75 -0
- package/src/components/DeclarationAccessibilityPage/tests/DeclarationAccessibilityPage.a11y.spec.ts +53 -0
- package/src/components/DeclarationAccessibilityPage/tests/DeclarationAccessibilityPage.spec.ts +59 -0
- package/src/components/DiacriticPicker/DiacriticPicker.vue +20 -1
- package/src/components/DialogBox/DialogBox.stories.ts +13 -0
- package/src/components/DialogBox/DialogBox.vue +12 -5
- package/src/components/DialogBox/accessibilite/Accessibility.mdx +27 -7
- package/src/components/DialogBox/tests/DialogBox.a11y.spec.ts +1 -0
- package/src/components/DialogBox/tests/DialogBox.spec.ts +40 -6
- package/src/components/DownloadBtn/accessibilite/Accessibility.mdx +73 -11
- package/src/components/DownloadBtn/config.ts +1 -1
- package/src/components/ErrorPage/ErrorPage.mdx +6 -16
- package/src/components/ErrorPage/ErrorPage.stories.ts +90 -126
- package/src/components/ErrorPage/ErrorPage.vue +44 -125
- package/src/components/ErrorPage/accessibilite/Accessibility.mdx +83 -6
- package/src/components/ErrorPage/assets/error-ap.svg +1774 -0
- package/src/components/ErrorPage/locales.ts +21 -3
- package/src/components/ErrorPage/tests/ErrorPage.a11y.spec.ts +5 -13
- package/src/components/ErrorPage/tests/ErrorPage.spec.ts +2 -41
- package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +10 -266
- package/src/components/ExternalLinks/tests/__snapshots__/ExternalLinks.spec.ts.snap +13 -2
- package/src/components/FileList/FileList.stories.ts +4 -0
- package/src/components/FileList/UploadItem/UploadItem.vue +8 -3
- package/src/components/FileList/UploadItem/locales.ts +10 -0
- package/src/components/FileList/accessibilite/Accessibility.mdx +55 -7
- package/src/components/FileUpload/FileUpload.vue +65 -37
- package/src/components/FileUpload/FileUploadContent.vue +1 -1
- package/src/components/FileUpload/accessibilite/Accessibility.mdx +48 -5
- package/src/components/FileUpload/locales.ts +1 -0
- package/src/components/FileUpload/tests/FileUpload.spec.ts +14 -14
- package/src/components/FilterInline/FilterInline.stories.ts +0 -15
- package/src/components/FilterInline/FilterInline.vue +1 -0
- package/src/components/FilterInline/accessibilite/Accessibility.mdx +70 -7
- package/src/components/FilterInline/tests/__snapshots__/FilterInline.spec.ts.snap +3 -3
- package/src/components/FilterSideBar/FilterSideBar.stories.ts +0 -3
- package/src/components/FilterSideBar/FilterSideBar.vue +2 -1
- package/src/components/FilterSideBar/accessibilite/Accessibility.mdx +70 -9
- package/src/components/FooterBar/FooterBar.stories.ts +316 -48
- package/src/components/FooterBar/FooterBar.vue +67 -9
- package/src/components/FooterBar/config.ts +2 -2
- package/src/components/FooterBar/defaultSocialMediaLinks.ts +6 -4
- package/src/components/FooterBar/locales.ts +1 -0
- package/src/components/FooterBar/tests/FooterBarConfig.spec.ts +1 -1
- package/src/components/FooterBar/tests/__snapshots__/FooterBar.spec.ts.snap +6 -25
- package/src/components/FooterBar/types.d.ts +1 -0
- package/src/components/HeaderBar/HeaderBar.stories.ts +23 -1
- package/src/components/HeaderBar/HeaderBar.vue +4 -0
- package/src/components/HeaderBar/HeaderLogo/HeaderLogo.vue +7 -2
- package/src/components/HeaderBar/HeaderLogo/tests/HeaderLogo.spec.ts +5 -0
- package/src/components/HeaderBar/accessibilite/Accessibility.mdx +24 -5
- package/src/components/HeaderBar/tests/HeaderBar.a11y.spec.ts +1 -0
- package/src/components/HeaderBar/tests/HeaderBar.spec.ts +3 -0
- package/src/components/HeaderNavigationBar/HeaderNavigationBar.stories.ts +4 -0
- package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +2 -0
- package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.spec.ts +3 -0
- package/src/components/LogoBrandSection/LogoBrandSection.stories.ts +22 -0
- package/src/components/LogoBrandSection/LogoBrandSection.vue +13 -5
- package/src/components/LogoBrandSection/tests/LogoBrandSection.a11y.spec.ts +2 -0
- package/src/components/LogoBrandSection/tests/LogoBrandSection.spec.ts +44 -0
- package/src/components/LogoBrandSection/tests/__snapshots__/LogoBrandSection.spec.ts.snap +2 -0
- package/src/components/MaintenancePage/MaintenancePage.mdx +1 -1
- package/src/components/MaintenancePage/MaintenancePage.vue +42 -7
- package/src/components/MaintenancePage/accessibilite/Accessibility.mdx +63 -6
- package/src/components/MaintenancePage/assets/maintenance-ap.svg +1718 -0
- package/src/components/MaintenancePage/locales.ts +24 -3
- package/src/components/MaintenancePage/tests/MaintenancePage.a11y.spec.ts +76 -3
- package/src/components/MaintenancePage/tests/MaintenancePage.spec.ts +60 -2
- package/src/components/MaintenancePage/tests/__snapshots__/MaintenancePage.spec.ts.snap +5 -2
- package/src/components/NotFoundPage/NotFoundPage.mdx +1 -1
- package/src/components/NotFoundPage/NotFoundPage.stories.ts +4 -4
- package/src/components/NotFoundPage/NotFoundPage.vue +30 -14
- package/src/components/NotFoundPage/accessibilite/Accessibility.mdx +80 -6
- package/src/components/NotFoundPage/assets/not-found-ap.svg +2061 -0
- package/src/components/NotFoundPage/locales.ts +24 -4
- package/src/components/NotFoundPage/tests/NotFoundPage.a11y.spec.ts +217 -4
- package/src/components/NotFoundPage/tests/NotFoundPage.spec.ts +123 -12
- package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +4 -2
- package/src/components/NotificationBar/NotificationBar.mdx +2 -2
- package/src/components/NotificationBar/accessibilite/Accessibility.mdx +68 -8
- package/src/components/PageContainer/PageContainer.stories.ts +47 -0
- package/src/components/PageContainer/PageContainer.vue +4 -2
- package/src/components/PageContainer/accessibilite/Accessibility.mdx +67 -0
- package/src/components/PageContainer/tests/PageContainer.a11y.spec.ts +14 -7
- package/src/components/PaginatedTable/PaginatedTable.mdx +3 -3
- package/src/components/PaginatedTable/PaginatedTable.stories.ts +9 -1
- package/src/components/PeriodField/PeriodField.vue +4 -0
- package/src/components/PeriodField/tests/PeriodField.a11y.spec.ts +10 -1
- package/src/components/PhoneField/PhoneField.stories.ts +115 -69
- package/src/components/PhoneField/PhoneField.vue +152 -83
- package/src/components/PhoneField/accessibilite/Accessibility.mdx +306 -9
- package/src/components/PhoneField/indicatifs.ts +2 -2
- package/src/components/PhoneField/tests/PhoneField.a11y.spec.ts +22 -9
- package/src/components/PhoneField/tests/PhoneField.spec.ts +82 -5
- package/src/components/SearchListField/SearchListField.vue +1 -1
- package/src/components/SearchListField/accessibilite/Accessibility.mdx +69 -9
- package/src/components/SearchListField/tests/SearchListField.a11y.spec.ts +37 -0
- package/src/components/SocialMediaLinks/DefaultSocialMediaLinks.ts +6 -4
- package/src/components/SocialMediaLinks/SocialMediaLinks.mdx +7 -5
- package/src/components/SocialMediaLinks/SocialMediaLinks.stories.ts +17 -13
- package/src/components/SocialMediaLinks/SocialMediaLinks.vue +10 -2
- package/src/components/SocialMediaLinks/accessibilite/Accessibility.mdx +63 -11
- package/src/components/SocialMediaLinks/tests/DefaultSocialMediaLinks.spec.ts +5 -5
- package/src/components/SocialMediaLinks/tests/SocialMediaLinks.a11y.spec.ts +59 -0
- package/src/components/SocialMediaLinks/tests/SocialMediaLinks.spec.ts +9 -7
- package/src/components/StatusPage/StatusPage.mdx +31 -0
- package/src/components/StatusPage/StatusPage.stories.ts +236 -0
- package/src/components/StatusPage/StatusPage.vue +167 -0
- package/src/components/StatusPage/accessibilite/Accessibility.mdx +100 -0
- package/src/components/StatusPage/tests/StatusPage.a11y.spec.ts +30 -0
- package/src/components/StatusPage/tests/StatusPage.spec.ts +53 -0
- package/src/components/StatusPage/tests/__snapshots__/StatusPage.spec.ts.snap +272 -0
- package/src/components/SubHeader/SubHeader.stories.ts +16 -0
- package/src/components/SubHeader/SubHeader.vue +6 -3
- package/src/components/SubHeader/accessibilite/Accessibility.mdx +27 -6
- package/src/components/SyAlert/SyAlert.vue +21 -20
- package/src/components/SyBtnMenu/SyBtnMenu.vue +33 -17
- package/src/components/SyBtnMenu/tests/SyBtnMenu.a11y.spec.ts +38 -0
- package/src/components/SyBtnMenu/tests/SyBtnMenu.spec.ts +41 -0
- package/src/components/SyHeading/SyHeading.vue +18 -0
- package/src/components/TableToolbar/TableToolbar.stories.ts +6 -6
- package/src/components/TableToolbar/TableToolbar.vue +1 -1
- package/src/components/TableToolbar/tests/__snapshots__/TableToolbar.spec.ts.snap +96 -35
- package/src/components/Tables/SyServerTable/SyServerTable.vue +2 -0
- package/src/components/Tables/SyTable/SyTable.vue +2 -0
- package/src/components/Tables/common/SyTablePagination.vue +16 -10
- package/src/components/Tables/common/filters/DateFilter.vue +5 -0
- package/src/components/Tables/common/tests/SyTablePagination.spec.ts +40 -24
- package/src/components/Tables/common/types.ts +3 -0
- package/src/components/UploadWorkflow/UploadWorkflow.mdx +11 -1
- package/src/components/UploadWorkflow/UploadWorkflow.stories.ts +118 -14
- package/src/components/UploadWorkflow/UploadWorkflow.vue +59 -31
- package/src/components/UploadWorkflow/accessibilite/Accessibility.mdx +56 -5
- package/src/components/UploadWorkflow/accessibilite/UploadWorkflow.a11y.spec.ts +110 -0
- package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +37 -7
- package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +139 -112
- package/src/components/UploadWorkflow/useFileList.ts +7 -0
- package/src/components/UserMenuBtn/UserMenuBtn.stories.ts +53 -31
- package/src/components/UserMenuBtn/UserMenuBtn.vue +4 -1
- package/src/components/UserMenuBtn/accessibilite/Accessibility.mdx +72 -8
- package/src/components/index.ts +4 -0
- package/src/components/types.ts +4 -0
- package/src/composables/date/tests/useDateInitialization.spec.ts +22 -1
- package/src/composables/date/useDateInitializationDayjs.ts +4 -7
- package/src/composables/date/useDatePickerAccessibility.ts +2 -3
- package/src/composables/rules/tests/useFieldValidation.spec.ts +39 -3
- package/src/composables/rules/useFieldValidation.ts +24 -9
- package/src/composables/useFilterable/useFilterable.spec.ts +52 -2
- package/src/composables/useFilterable/useFilterable.ts +7 -1
- package/src/designTokens/tokens/amelipro/apLightTheme.ts +27 -15
- package/src/designTokens/tokens/amelipro/apSemantic.ts +21 -15
- package/src/designTokens/tokens/cnam/cnamLightTheme.ts +28 -15
- package/src/designTokens/tokens/cnam/cnamSemantic.ts +21 -14
- package/src/designTokens/tokens/pa/paLightTheme.ts +27 -16
- package/src/designTokens/tokens/pa/paSemantic.ts +19 -13
- package/src/directives/rgaaSvgFix.ts +2 -7
- package/src/stories/Accessibilite/{Audit → AuditEtContreAudit}/Exemptions-derogations.mdx +1 -1
- package/src/stories/Accessibilite/AuditEtContreAudit/Introduction.mdx +188 -0
- package/src/stories/Accessibilite/{Audit → AuditEtContreAudit}/RGAA.mdx +1 -1
- package/src/stories/Accessibilite/Introduction.mdx +22 -3
- package/src/stories/Accessibilite/KitDePreAudit/Introduction.mdx +21 -22
- package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +7 -0
- package/src/stories/DeprecationNotice/DeprecationNotice.ts +41 -0
- package/src/stories/DesignTokens/ColorDisplay.vue +12 -5
- package/src/stories/DesignTokens/Colors.mdx +8 -59
- package/src/stories/DesignTokens/colors.stories.ts +1862 -1071
- package/src/stories/EcoConception/EcoGuideComponent.vue +10 -4
- package/src/utils/theme/index.ts +19 -0
- package/src/utils/theme/tests/useThemeLocales.spec.ts +245 -0
- package/dist/components/MaintenancePage/index.d.ts +0 -2
- package/dist/main-CuI6xaPq.js +0 -36396
- package/src/components/Customs/SyTabs/tests/SyTabs.a11y.spec.ts +0 -51
- package/src/components/DataListItem/tests/DataListItem.a11y.spec.ts +0 -31
- package/src/components/DatePicker/CalendarMode/tests/DatePicker.a11y.spec.ts +0 -27
- package/src/components/DownloadBtn/tests/DownloadBtn.a11y.spec.ts +0 -26
- package/src/components/ExternalLinks/tests/ExternalLinks.a11y.spec.ts +0 -39
- package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.a11y.spec.ts +0 -45
- package/src/components/HeaderToolbar/tests/HeaderToolbar.a11y.spec.ts +0 -25
- package/src/components/LunarCalendar/tests/LunarCalendar.a11y.spec.ts +0 -31
- package/src/components/MaintenancePage/index.ts +0 -3
- package/src/components/PageContainer/Accessibilite/Accessibility.mdx +0 -53
- package/src/components/PageContainer/Accessibilite/AccessibilityGuide.mdx +0 -0
- package/src/components/PaginatedTable/tests/PaginatedTable.a11y.spec.ts +0 -43
- /package/src/components/NotFoundPage/assets/{not-found.svg → not-found-cnam.svg} +0 -0
|
@@ -6,6 +6,7 @@ describe('SyPagination', () => {
|
|
|
6
6
|
it('renders correctly with default props', () => {
|
|
7
7
|
const wrapper = mount(SyPagination, {
|
|
8
8
|
props: {
|
|
9
|
+
headingLevel: 2,
|
|
9
10
|
modelValue: 1,
|
|
10
11
|
pages: 10,
|
|
11
12
|
},
|
|
@@ -20,6 +21,7 @@ describe('SyPagination', () => {
|
|
|
20
21
|
it('does not render pagination if pages is 1', () => {
|
|
21
22
|
const wrapper = mount(SyPagination, {
|
|
22
23
|
props: {
|
|
24
|
+
headingLevel: 2,
|
|
23
25
|
modelValue: 1,
|
|
24
26
|
pages: 1,
|
|
25
27
|
},
|
|
@@ -31,6 +33,7 @@ describe('SyPagination', () => {
|
|
|
31
33
|
it('emits update:modelValue when page is changed', async () => {
|
|
32
34
|
const wrapper = mount(SyPagination, {
|
|
33
35
|
props: {
|
|
36
|
+
headingLevel: 2,
|
|
34
37
|
modelValue: 1,
|
|
35
38
|
pages: 10,
|
|
36
39
|
},
|
|
@@ -58,6 +61,7 @@ describe('SyPagination', () => {
|
|
|
58
61
|
it('disables previous button on first page', () => {
|
|
59
62
|
const wrapper = mount(SyPagination, {
|
|
60
63
|
props: {
|
|
64
|
+
headingLevel: 2,
|
|
61
65
|
modelValue: 1,
|
|
62
66
|
pages: 10,
|
|
63
67
|
},
|
|
@@ -70,6 +74,7 @@ describe('SyPagination', () => {
|
|
|
70
74
|
it('disables next button on last page', () => {
|
|
71
75
|
const wrapper = mount(SyPagination, {
|
|
72
76
|
props: {
|
|
77
|
+
headingLevel: 2,
|
|
73
78
|
modelValue: 10,
|
|
74
79
|
pages: 10,
|
|
75
80
|
},
|
|
@@ -82,6 +87,7 @@ describe('SyPagination', () => {
|
|
|
82
87
|
it('shows correct aria-current attribute', () => {
|
|
83
88
|
const wrapper = mount(SyPagination, {
|
|
84
89
|
props: {
|
|
90
|
+
headingLevel: 2,
|
|
85
91
|
modelValue: 3,
|
|
86
92
|
pages: 10,
|
|
87
93
|
},
|
|
@@ -94,6 +100,7 @@ describe('SyPagination', () => {
|
|
|
94
100
|
it('respects visible prop for number of visible pages', () => {
|
|
95
101
|
const wrapper = mount(SyPagination, {
|
|
96
102
|
props: {
|
|
103
|
+
headingLevel: 2,
|
|
97
104
|
modelValue: 5,
|
|
98
105
|
pages: 10,
|
|
99
106
|
visible: 3,
|
|
@@ -113,6 +120,7 @@ describe('SyPagination', () => {
|
|
|
113
120
|
it('uses custom label when provided', () => {
|
|
114
121
|
const wrapper = mount(SyPagination, {
|
|
115
122
|
props: {
|
|
123
|
+
headingLevel: 2,
|
|
116
124
|
modelValue: 1,
|
|
117
125
|
pages: 10,
|
|
118
126
|
label: 'Test Pagination',
|
|
@@ -125,6 +133,7 @@ describe('SyPagination', () => {
|
|
|
125
133
|
it('sets aria-controls when provided', () => {
|
|
126
134
|
const wrapper = mount(SyPagination, {
|
|
127
135
|
props: {
|
|
136
|
+
headingLevel: 2,
|
|
128
137
|
modelValue: 1,
|
|
129
138
|
pages: 10,
|
|
130
139
|
ariaControls: 'test-content',
|
|
@@ -137,6 +146,7 @@ describe('SyPagination', () => {
|
|
|
137
146
|
it('uses d-sr-only class for screen reader text', () => {
|
|
138
147
|
const wrapper = mount(SyPagination, {
|
|
139
148
|
props: {
|
|
149
|
+
headingLevel: 2,
|
|
140
150
|
modelValue: 1,
|
|
141
151
|
pages: 10,
|
|
142
152
|
},
|
|
@@ -149,6 +159,7 @@ describe('SyPagination', () => {
|
|
|
149
159
|
it('shows start ellipsis when current page is far from first page', () => {
|
|
150
160
|
const wrapper = mount(SyPagination, {
|
|
151
161
|
props: {
|
|
162
|
+
headingLevel: 2,
|
|
152
163
|
modelValue: 8, // Current page far from first page
|
|
153
164
|
pages: 10,
|
|
154
165
|
visible: 3, // Small visible count to ensure ellipsis appears
|
|
@@ -163,6 +174,7 @@ describe('SyPagination', () => {
|
|
|
163
174
|
it('shows both ellipses when current page is in the middle of a large range', () => {
|
|
164
175
|
const wrapper = mount(SyPagination, {
|
|
165
176
|
props: {
|
|
177
|
+
headingLevel: 2,
|
|
166
178
|
modelValue: 10, // Middle page
|
|
167
179
|
pages: 20,
|
|
168
180
|
visible: 3, // Small visible count to ensure ellipsis appears
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
2
|
|
|
3
|
-
import { computed, nextTick, onMounted, ref, watch } from 'vue'
|
|
3
|
+
import { computed, nextTick, onMounted, onUpdated, ref, watch } from 'vue'
|
|
4
|
+
import type { VRadioGroup } from 'vuetify/components'
|
|
4
5
|
import { useValidation, type ValidationRule } from '@/composables/validation/useValidation'
|
|
5
6
|
import { useValidatable } from '@/composables/validation/useValidatable'
|
|
6
7
|
import { locales } from './locales'
|
|
@@ -61,6 +62,7 @@
|
|
|
61
62
|
)
|
|
62
63
|
|
|
63
64
|
const emit = defineEmits(['update:modelValue', 'change'])
|
|
65
|
+
const radioGroupRef = ref<VRadioGroup | null>(null)
|
|
64
66
|
const model = computed({
|
|
65
67
|
get() {
|
|
66
68
|
return props.modelValue
|
|
@@ -139,24 +141,10 @@
|
|
|
139
141
|
|
|
140
142
|
watch(model, (newValue) => {
|
|
141
143
|
if (!props.isValidateOnBlur) {
|
|
142
|
-
|
|
143
|
-
if (isSubmitted.value) {
|
|
144
|
-
const isValid = validateField(newValue)
|
|
145
|
-
if (isValid) {
|
|
146
|
-
// La validation a réussi, effacer les erreurs
|
|
147
|
-
validation.clearValidation()
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
else {
|
|
151
|
-
// Comportement normal (hors soumission)
|
|
152
|
-
const isValid = validateField(newValue)
|
|
153
|
-
// Si la validation réussit, s'assurer que les erreurs sont effacées
|
|
154
|
-
if (isValid && validation.hasError.value) {
|
|
155
|
-
validation.clearValidation()
|
|
156
|
-
}
|
|
157
|
-
}
|
|
144
|
+
validateField(newValue)
|
|
158
145
|
}
|
|
159
146
|
})
|
|
147
|
+
|
|
160
148
|
const hasError = computed(() => validation.hasError.value)
|
|
161
149
|
const hasWarning = computed(() => validation.hasWarning.value)
|
|
162
150
|
const hasSuccess = computed(() => validation.hasSuccess.value)
|
|
@@ -184,36 +172,16 @@
|
|
|
184
172
|
|
|
185
173
|
const removeAriaAttributesForRadio = () => {
|
|
186
174
|
nextTick(() => {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
radioInputsDisabled.forEach((input) => {
|
|
192
|
-
input.removeAttribute('aria-disabled')
|
|
193
|
-
})
|
|
194
|
-
|
|
195
|
-
// Observer les futurs changements
|
|
196
|
-
const observer = new MutationObserver((mutations) => {
|
|
197
|
-
mutations.forEach(() => {
|
|
198
|
-
const newRadioInputsDisabled = document.querySelectorAll(
|
|
199
|
-
'input[type="radio"][aria-disabled="false"]',
|
|
200
|
-
)
|
|
201
|
-
newRadioInputsDisabled.forEach((input) => {
|
|
202
|
-
input.removeAttribute('aria-disabled')
|
|
203
|
-
})
|
|
175
|
+
if (radioGroupRef.value) {
|
|
176
|
+
const radioInputs = radioGroupRef.value.$el.querySelectorAll('input[type="radio"][aria-disabled="false"]')
|
|
177
|
+
radioInputs.forEach((input: Element) => {
|
|
178
|
+
input.removeAttribute('aria-disabled')
|
|
204
179
|
})
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
observer.observe(document.body, {
|
|
208
|
-
subtree: true,
|
|
209
|
-
childList: true,
|
|
210
|
-
attributes: true,
|
|
211
|
-
attributeFilter: ['aria-disabled'],
|
|
212
|
-
})
|
|
180
|
+
}
|
|
213
181
|
})
|
|
214
182
|
}
|
|
215
183
|
|
|
216
|
-
// Appliquer la correction lors du montage du composant
|
|
184
|
+
// Appliquer la correction lors du montage et de la mise à jour du composant
|
|
217
185
|
onMounted(() => {
|
|
218
186
|
removeAriaAttributesForRadio()
|
|
219
187
|
if (!props.isValidateOnBlur && !props.required) {
|
|
@@ -221,6 +189,10 @@
|
|
|
221
189
|
}
|
|
222
190
|
})
|
|
223
191
|
|
|
192
|
+
onUpdated(() => {
|
|
193
|
+
removeAriaAttributesForRadio()
|
|
194
|
+
})
|
|
195
|
+
|
|
224
196
|
// Intégration avec le système de validation du formulaire
|
|
225
197
|
useValidatable(validateOnSubmit)
|
|
226
198
|
|
|
@@ -235,6 +207,7 @@
|
|
|
235
207
|
<template>
|
|
236
208
|
<v-radio-group
|
|
237
209
|
:id="props.id"
|
|
210
|
+
ref="radioGroupRef"
|
|
238
211
|
v-model="model"
|
|
239
212
|
:class="{
|
|
240
213
|
'warning-field': hasWarning && !hasError,
|
|
@@ -185,6 +185,10 @@ const meta = {
|
|
|
185
185
|
description: 'Texte d\'aide affiché sous le champ',
|
|
186
186
|
control: 'text',
|
|
187
187
|
},
|
|
188
|
+
'maxlength': {
|
|
189
|
+
description: 'Nombre maximal de caractères autorisés dans le champ',
|
|
190
|
+
control: { type: 'text' },
|
|
191
|
+
},
|
|
188
192
|
'loading': {
|
|
189
193
|
description: 'Affiche un indicateur de chargement',
|
|
190
194
|
control: 'boolean',
|
|
@@ -90,6 +90,8 @@
|
|
|
90
90
|
disableClickButton?: boolean
|
|
91
91
|
autocomplete?: string
|
|
92
92
|
helpText?: string
|
|
93
|
+
maxlength?: string | number
|
|
94
|
+
title?: string | false
|
|
93
95
|
}>(),
|
|
94
96
|
{
|
|
95
97
|
modelValue: undefined,
|
|
@@ -159,6 +161,8 @@
|
|
|
159
161
|
disableClickButton: true,
|
|
160
162
|
autocomplete: 'off',
|
|
161
163
|
helpText: '',
|
|
164
|
+
maxlength: undefined,
|
|
165
|
+
title: undefined,
|
|
162
166
|
},
|
|
163
167
|
)
|
|
164
168
|
|
|
@@ -173,6 +177,8 @@
|
|
|
173
177
|
|
|
174
178
|
const emit = defineEmits([
|
|
175
179
|
'update:modelValue',
|
|
180
|
+
'input',
|
|
181
|
+
'keydown',
|
|
176
182
|
'clear',
|
|
177
183
|
'prepend-icon-click',
|
|
178
184
|
'append-icon-click',
|
|
@@ -197,6 +203,11 @@
|
|
|
197
203
|
Object.entries(attrs).filter(([key]) => key !== 'display-asterisk'),
|
|
198
204
|
) as Record<string, unknown>
|
|
199
205
|
|
|
206
|
+
// aria-controls coming from menu activators is invalid on the input itself; drop it
|
|
207
|
+
if ('aria-controls' in filteredAttrs) {
|
|
208
|
+
delete filteredAttrs['aria-controls']
|
|
209
|
+
}
|
|
210
|
+
|
|
200
211
|
if (!('validate-on' in filteredAttrs) && 'rules' in filteredAttrs && props.isValidateOnBlur) {
|
|
201
212
|
filteredAttrs['validate-on'] = 'blur lazy'
|
|
202
213
|
}
|
|
@@ -300,7 +311,11 @@
|
|
|
300
311
|
}
|
|
301
312
|
})
|
|
302
313
|
|
|
303
|
-
const hasError = computed(() =>
|
|
314
|
+
const hasError = computed(() =>
|
|
315
|
+
validation.hasError.value
|
|
316
|
+
|| (props.errorMessages?.length ?? 0) > 0
|
|
317
|
+
|| props.hasError,
|
|
318
|
+
)
|
|
304
319
|
const hasWarning = computed(() => validation.hasWarning.value || props.hasWarning)
|
|
305
320
|
const hasSuccess = computed(() => ((validation.hasSuccess.value && !hasError.value && !hasWarning.value) || props.hasSuccess) && props.showSuccessMessages)
|
|
306
321
|
|
|
@@ -355,7 +370,13 @@
|
|
|
355
370
|
return props.helpText && hasMessages.value && !props.areDetailsHidden
|
|
356
371
|
})
|
|
357
372
|
|
|
358
|
-
//
|
|
373
|
+
// Use title prop if provided, otherwise fall back to accessible label
|
|
374
|
+
const titleValue = computed(() => {
|
|
375
|
+
// If title is explicitly false, don't show any title
|
|
376
|
+
if (props.title === false) return undefined
|
|
377
|
+
// Otherwise use title if provided, or accessibleLabel as fallback
|
|
378
|
+
return props.title || accessibleLabel.value
|
|
379
|
+
})
|
|
359
380
|
const accessibleLabel = computed(() => {
|
|
360
381
|
let label = labelWithAsterisk.value
|
|
361
382
|
|
|
@@ -449,7 +470,12 @@
|
|
|
449
470
|
const describedbyIds = existingIds.join(' ').trim()
|
|
450
471
|
|
|
451
472
|
// Associate input with messages via aria-describedby (preserve existing IDs)
|
|
452
|
-
|
|
473
|
+
if (describedbyIds) {
|
|
474
|
+
inputElement.setAttribute('aria-describedby', describedbyIds)
|
|
475
|
+
}
|
|
476
|
+
else {
|
|
477
|
+
inputElement.removeAttribute('aria-describedby')
|
|
478
|
+
}
|
|
453
479
|
|
|
454
480
|
// Remove problematic ARIA attributes from details container (parent)
|
|
455
481
|
if (detailsContainer) {
|
|
@@ -517,7 +543,12 @@
|
|
|
517
543
|
const describedbyIds = existingIds.join(' ').trim()
|
|
518
544
|
|
|
519
545
|
// Associate input with messages via aria-describedby (preserve existing IDs)
|
|
520
|
-
|
|
546
|
+
if (describedbyIds) {
|
|
547
|
+
inputElement.setAttribute('aria-describedby', describedbyIds)
|
|
548
|
+
}
|
|
549
|
+
else {
|
|
550
|
+
inputElement.removeAttribute('aria-describedby')
|
|
551
|
+
}
|
|
521
552
|
|
|
522
553
|
// Remove problematic ARIA attributes from details container (parent)
|
|
523
554
|
if (detailsContainer) {
|
|
@@ -579,7 +610,7 @@
|
|
|
579
610
|
v-model="model"
|
|
580
611
|
:autocomplete="props.autocomplete"
|
|
581
612
|
:active="props.isActive"
|
|
582
|
-
:title="
|
|
613
|
+
:title="titleValue"
|
|
583
614
|
:aria-label="accessibleLabel"
|
|
584
615
|
:aria-required="props.required ? 'true' : undefined"
|
|
585
616
|
:base-color="props.baseColor"
|
|
@@ -600,6 +631,7 @@
|
|
|
600
631
|
:hint="showHelpTextAsMessage ? props.helpText : props.hint"
|
|
601
632
|
:label="labelWithAsterisk"
|
|
602
633
|
:loading="props.loading"
|
|
634
|
+
:maxlength="props.maxlength"
|
|
603
635
|
:max-errors="props.maxErrors"
|
|
604
636
|
:max-width="props.maxWidth"
|
|
605
637
|
:messages="hasError ? errors : (hasWarning ? warnings : (hasSuccess && props.showSuccessMessages ? successes : []))"
|
|
@@ -630,6 +662,8 @@
|
|
|
630
662
|
'basic-field': !hasError && !hasWarning && !hasSuccess
|
|
631
663
|
}"
|
|
632
664
|
@blur="checkErrorOnBlur"
|
|
665
|
+
@input="(e: Event) => emit('input', e)"
|
|
666
|
+
@keydown="(e: KeyboardEvent) => emit('keydown', e)"
|
|
633
667
|
>
|
|
634
668
|
<!-- Prepend -->
|
|
635
669
|
<template
|
|
@@ -38,6 +38,10 @@ const meta = {
|
|
|
38
38
|
},
|
|
39
39
|
},
|
|
40
40
|
argTypes: {
|
|
41
|
+
'headingLevel': {
|
|
42
|
+
control: { type: 'select' },
|
|
43
|
+
options: [1, 2, 3, 4, 5, 6],
|
|
44
|
+
},
|
|
41
45
|
'onUpdate:modelValue': {
|
|
42
46
|
description: 'Émis lorsque la valeur du champ est mise à jour',
|
|
43
47
|
table: {
|
|
@@ -345,6 +349,7 @@ export const Default: Story = {
|
|
|
345
349
|
],
|
|
346
350
|
},
|
|
347
351
|
args: {
|
|
352
|
+
'headingLevel': 3,
|
|
348
353
|
'placeholder': 'Sélectionner une date',
|
|
349
354
|
'format': 'DD/MM/YYYY',
|
|
350
355
|
'isBirthDate': false,
|
|
@@ -417,6 +422,7 @@ export const Required: Story = {
|
|
|
417
422
|
],
|
|
418
423
|
},
|
|
419
424
|
args: {
|
|
425
|
+
'headingLevel': 3,
|
|
420
426
|
'placeholder': 'Sélectionner une date',
|
|
421
427
|
'format': 'DD/MM/YYYY',
|
|
422
428
|
'isBirthDate': false,
|
|
@@ -489,6 +495,7 @@ export const DateRange: Story = {
|
|
|
489
495
|
],
|
|
490
496
|
},
|
|
491
497
|
args: {
|
|
498
|
+
'headingLevel': 3,
|
|
492
499
|
'placeholder': 'Sélectionner une période',
|
|
493
500
|
'label': 'Sélectionner une période',
|
|
494
501
|
'format': 'DD/MM/YYYY',
|
|
@@ -575,6 +582,7 @@ export const WithCustomPeriod: Story = {
|
|
|
575
582
|
],
|
|
576
583
|
},
|
|
577
584
|
args: {
|
|
585
|
+
'headingLevel': 3,
|
|
578
586
|
'placeholder': 'Sélectionner une date',
|
|
579
587
|
'format': 'DD/MM/YYYY',
|
|
580
588
|
'isBirthDate': false,
|
|
@@ -671,6 +679,7 @@ export const WithAppendIcon: Story = {
|
|
|
671
679
|
],
|
|
672
680
|
},
|
|
673
681
|
args: {
|
|
682
|
+
'headingLevel': 3,
|
|
674
683
|
'placeholder': 'Sélectionner une date',
|
|
675
684
|
'format': 'DD/MM/YYYY',
|
|
676
685
|
'dateFormatReturn': '',
|
|
@@ -738,6 +747,7 @@ export const WithoutIcon: Story = {
|
|
|
738
747
|
],
|
|
739
748
|
},
|
|
740
749
|
args: {
|
|
750
|
+
'headingLevel': 3,
|
|
741
751
|
'placeholder': 'Sélectionner une date',
|
|
742
752
|
'format': 'DD/MM/YYYY',
|
|
743
753
|
'dateFormatReturn': '',
|
|
@@ -805,6 +815,7 @@ export const BirthDate: Story = {
|
|
|
805
815
|
],
|
|
806
816
|
},
|
|
807
817
|
args: {
|
|
818
|
+
'headingLevel': 3,
|
|
808
819
|
'placeholder': 'Date de naissance',
|
|
809
820
|
'format': 'DD/MM/YYYY',
|
|
810
821
|
'dateFormatReturn': '',
|
|
@@ -873,6 +884,7 @@ export const WithError: Story = {
|
|
|
873
884
|
],
|
|
874
885
|
},
|
|
875
886
|
args: {
|
|
887
|
+
'headingLevel': 3,
|
|
876
888
|
'placeholder': 'Sélectionner une date',
|
|
877
889
|
'format': 'DD/MM/YYYY',
|
|
878
890
|
'dateFormatReturn': '',
|
|
@@ -948,6 +960,7 @@ export const WithWarning: Story = {
|
|
|
948
960
|
],
|
|
949
961
|
},
|
|
950
962
|
args: {
|
|
963
|
+
'headingLevel': 3,
|
|
951
964
|
'placeholder': 'Date avec avertissement',
|
|
952
965
|
'format': 'DD/MM/YYYY',
|
|
953
966
|
'dateFormatReturn': '',
|
|
@@ -1026,6 +1039,7 @@ export const WithSuccess: Story = {
|
|
|
1026
1039
|
],
|
|
1027
1040
|
},
|
|
1028
1041
|
args: {
|
|
1042
|
+
'headingLevel': 3,
|
|
1029
1043
|
'placeholder': 'Date valide',
|
|
1030
1044
|
'format': 'DD/MM/YYYY',
|
|
1031
1045
|
'dateFormatReturn': '',
|
|
@@ -1222,6 +1236,7 @@ export const WithDateFormatReturn: Story = {
|
|
|
1222
1236
|
],
|
|
1223
1237
|
},
|
|
1224
1238
|
args: {
|
|
1239
|
+
'headingLevel': 3,
|
|
1225
1240
|
'placeholder': 'Sélectionner une date',
|
|
1226
1241
|
'format': 'DD/MM/YYYY',
|
|
1227
1242
|
'dateFormatReturn': '',
|
|
@@ -1333,6 +1348,7 @@ export const WithDayjsFormat: Story = {
|
|
|
1333
1348
|
],
|
|
1334
1349
|
},
|
|
1335
1350
|
args: {
|
|
1351
|
+
headingLevel: 3,
|
|
1336
1352
|
placeholder: 'Sélectionner une date',
|
|
1337
1353
|
format: 'DD/MM/YYYY',
|
|
1338
1354
|
isBirthDate: false,
|
|
@@ -1465,6 +1481,7 @@ export const UTC: Story = {
|
|
|
1465
1481
|
],
|
|
1466
1482
|
},
|
|
1467
1483
|
args: {
|
|
1484
|
+
'headingLevel': 3,
|
|
1468
1485
|
'placeholder': 'Sélectionner une date',
|
|
1469
1486
|
'format': 'DD/MM/YYYY',
|
|
1470
1487
|
'dateFormatReturn': '',
|
|
@@ -1496,12 +1513,20 @@ export const UTC: Story = {
|
|
|
1496
1513
|
|
|
1497
1514
|
const dateString = computed({
|
|
1498
1515
|
get() {
|
|
1499
|
-
return dayjs.utc(utcIso.value).
|
|
1516
|
+
return dayjs.utc(utcIso.value).format(DISPLAY_FORMAT.value)
|
|
1500
1517
|
},
|
|
1501
1518
|
set(v: string) {
|
|
1502
|
-
const parsed = dayjs.
|
|
1519
|
+
const parsed = dayjs.utc(v, DISPLAY_FORMAT.value, true)
|
|
1503
1520
|
if (!parsed.isValid() || parsed.format(DISPLAY_FORMAT.value) !== v) return
|
|
1504
|
-
utcIso.value =
|
|
1521
|
+
utcIso.value = dayjs.utc()
|
|
1522
|
+
.year(parsed.year())
|
|
1523
|
+
.month(parsed.month())
|
|
1524
|
+
.date(parsed.date())
|
|
1525
|
+
.hour(0)
|
|
1526
|
+
.minute(0)
|
|
1527
|
+
.second(0)
|
|
1528
|
+
.millisecond(0)
|
|
1529
|
+
.toISOString()
|
|
1505
1530
|
args['onUpdate:modelValue']?.(v)
|
|
1506
1531
|
},
|
|
1507
1532
|
})
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import { mdiCalendarMonthOutline } from '@mdi/js'
|
|
17
17
|
import type { DateObjectValue } from '../types'
|
|
18
18
|
import SyIcon from '@/components/Customs/SyIcon/SyIcon.vue'
|
|
19
|
+
import SyHeading from '@/components/SyHeading/SyHeading.vue'
|
|
19
20
|
|
|
20
21
|
// Initialiser les plugins dayjs
|
|
21
22
|
dayjs.extend(customParseFormat)
|
|
@@ -74,6 +75,8 @@
|
|
|
74
75
|
isValidateOnBlur?: boolean
|
|
75
76
|
hint?: string
|
|
76
77
|
persistentHint?: boolean
|
|
78
|
+
headingLevel?: 1 | 2 | 3 | 4 | 5 | 6
|
|
79
|
+
|
|
77
80
|
}>(), {
|
|
78
81
|
modelValue: undefined,
|
|
79
82
|
placeholder: undefined,
|
|
@@ -112,6 +115,7 @@
|
|
|
112
115
|
isValidateOnBlur: true,
|
|
113
116
|
hint: undefined,
|
|
114
117
|
persistentHint: false,
|
|
118
|
+
headingLevel: 3,
|
|
115
119
|
})
|
|
116
120
|
|
|
117
121
|
// La compatibilité entre isBirthDate et birthDate est gérée directement dans l'appel au composable
|
|
@@ -188,16 +192,39 @@
|
|
|
188
192
|
warningRules: props.customWarningRules,
|
|
189
193
|
disableErrorHandling: props.disableErrorHandling,
|
|
190
194
|
})
|
|
191
|
-
const { errors, warnings, successes, validateField, clearValidation } =
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
195
|
+
const { errors, warnings, successes, validateField: baseValidateField, clearValidation: baseClearValidation } = validation
|
|
196
|
+
|
|
197
|
+
const clearValidation = () => baseClearValidation()
|
|
198
|
+
|
|
199
|
+
watch(() => props.readonly, () => {
|
|
200
|
+
// When toggling readonly, reset validation state to avoid stale success/errors
|
|
201
|
+
errors.value = []
|
|
202
|
+
warnings.value = []
|
|
203
|
+
successes.value = []
|
|
204
|
+
})
|
|
205
|
+
|
|
206
|
+
const validateField = (
|
|
207
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- compat signature with useDateValidation
|
|
208
|
+
value: any,
|
|
209
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- compat signature with useDateValidation
|
|
210
|
+
rules: any[] = [],
|
|
211
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- compat signature with useDateValidation
|
|
212
|
+
warningRules: any[] = [],
|
|
213
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- compat signature with useDateValidation
|
|
214
|
+
successRules: any[] = [],
|
|
215
|
+
): ValidationResult => {
|
|
216
|
+
if (props.readonly) {
|
|
217
|
+
return {
|
|
218
|
+
hasError: false,
|
|
219
|
+
hasWarning: false,
|
|
220
|
+
hasSuccess: false,
|
|
221
|
+
state: { errors: [], warnings: [], successes: [] },
|
|
222
|
+
}
|
|
199
223
|
}
|
|
200
224
|
|
|
225
|
+
return baseValidateField(value, rules, warningRules, successRules) as ValidationResult
|
|
226
|
+
}
|
|
227
|
+
|
|
201
228
|
const validateFieldForDateValidation = (
|
|
202
229
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- compat signature with useDateValidation
|
|
203
230
|
value: any,
|
|
@@ -580,10 +607,11 @@
|
|
|
580
607
|
}
|
|
581
608
|
|
|
582
609
|
// Valider les dates au montage, mais sans afficher d'erreur pour le required
|
|
583
|
-
// Forcer la validation si il y a des
|
|
584
|
-
const
|
|
610
|
+
// Forcer la validation si il y a des règles (erreur ou warning) et que le champ est rempli
|
|
611
|
+
const hasValidationRules = (props.customRules && props.customRules.length > 0)
|
|
612
|
+
|| (props.customWarningRules && props.customWarningRules.length > 0)
|
|
585
613
|
const hasValue = selectedDates.value !== null && selectedDates.value !== undefined
|
|
586
|
-
validateDates(
|
|
614
|
+
validateDates(hasValidationRules && hasValue)
|
|
587
615
|
|
|
588
616
|
// Après la validation initiale, désactiver le flag
|
|
589
617
|
nextTick(() => {
|
|
@@ -756,8 +784,8 @@
|
|
|
756
784
|
textInputValue.value = ''
|
|
757
785
|
}
|
|
758
786
|
else if (Array.isArray(newValue) && props.displayRange) {
|
|
759
|
-
|
|
760
|
-
|
|
787
|
+
// Pour les plages de dates, on ne modifie pas directement textInputValue
|
|
788
|
+
// car le DateTextInput gère son propre formatage
|
|
761
789
|
}
|
|
762
790
|
else if (typeof newValue === 'string') {
|
|
763
791
|
// Pour une date unique
|
|
@@ -856,9 +884,7 @@
|
|
|
856
884
|
</script>
|
|
857
885
|
|
|
858
886
|
<template>
|
|
859
|
-
<div
|
|
860
|
-
class="date-picker-container"
|
|
861
|
-
>
|
|
887
|
+
<div class="date-picker-container">
|
|
862
888
|
<template v-if="props.noCalendar">
|
|
863
889
|
<DateTextInput
|
|
864
890
|
ref="dateTextInputRef"
|
|
@@ -901,6 +927,7 @@
|
|
|
901
927
|
<template v-else-if="props.useCombinedMode">
|
|
902
928
|
<ComplexDatePicker
|
|
903
929
|
ref="complexDatePickerRef"
|
|
930
|
+
:heading-level="headingLevel"
|
|
904
931
|
:model-value="props.modelValue"
|
|
905
932
|
:format="props.format"
|
|
906
933
|
:date-format-return="props.dateFormatReturn"
|
|
@@ -998,6 +1025,7 @@
|
|
|
998
1025
|
ref="datePickerRef"
|
|
999
1026
|
v-model="selectedDates"
|
|
1000
1027
|
color="primary"
|
|
1028
|
+
control-variant="modal"
|
|
1001
1029
|
:first-day-of-week="1"
|
|
1002
1030
|
:multiple="props.displayRange ? 'range' : false"
|
|
1003
1031
|
:show-adjacent-months="true"
|
|
@@ -1019,9 +1047,12 @@
|
|
|
1019
1047
|
Sélectionnez une date
|
|
1020
1048
|
</template>
|
|
1021
1049
|
<template #header>
|
|
1022
|
-
<
|
|
1050
|
+
<SyHeading
|
|
1051
|
+
class="mx-auto my-auto ml-5 mb-4"
|
|
1052
|
+
:level="headingLevel"
|
|
1053
|
+
>
|
|
1023
1054
|
{{ selectedDates ? displayedDateString : headerDate }}
|
|
1024
|
-
</
|
|
1055
|
+
</SyHeading>
|
|
1025
1056
|
</template>
|
|
1026
1057
|
<template
|
|
1027
1058
|
v-if="props.displayTodayButton"
|
|
@@ -1186,7 +1217,7 @@
|
|
|
1186
1217
|
}
|
|
1187
1218
|
|
|
1188
1219
|
:deep(.v-date-picker-month__day--selected .v-btn:hover) {
|
|
1189
|
-
background-color: tokens.$colors-background-accent-contrasted !important;
|
|
1220
|
+
background-color: tokens.$colors-background-accent-primary-contrasted !important;
|
|
1190
1221
|
}
|
|
1191
1222
|
|
|
1192
1223
|
.fade-enter-active,
|
|
@@ -1251,6 +1282,10 @@
|
|
|
1251
1282
|
}
|
|
1252
1283
|
}
|
|
1253
1284
|
|
|
1285
|
+
:deep(.v-date-picker-months) {
|
|
1286
|
+
flex: 1;
|
|
1287
|
+
}
|
|
1288
|
+
|
|
1254
1289
|
:deep(.v-date-picker-months .v-btn__content) {
|
|
1255
1290
|
font-size: 1rem;
|
|
1256
1291
|
}
|
|
@@ -1279,4 +1314,5 @@
|
|
|
1279
1314
|
:deep(.v-picker__body .v-btn--active .v-btn__overlay) {
|
|
1280
1315
|
opacity: 0;
|
|
1281
1316
|
}
|
|
1317
|
+
|
|
1282
1318
|
</style>
|
|
@@ -77,8 +77,12 @@ describe('DatePicker', () => {
|
|
|
77
77
|
expect(result.length).toBe(2)
|
|
78
78
|
expect(result[0]).toBeInstanceOf(Date)
|
|
79
79
|
expect(result[1]).toBeInstanceOf(Date)
|
|
80
|
-
expect(result[0]?.
|
|
81
|
-
expect(result[
|
|
80
|
+
expect(result[0]?.getFullYear()).toBe(2023)
|
|
81
|
+
expect(result[0]?.getMonth()).toBe(0)
|
|
82
|
+
expect(result[0]?.getDate()).toBe(1)
|
|
83
|
+
expect(result[1]?.getFullYear()).toBe(2023)
|
|
84
|
+
expect(result[1]?.getMonth()).toBe(0)
|
|
85
|
+
expect(result[1]?.getDate()).toBe(5)
|
|
82
86
|
})
|
|
83
87
|
|
|
84
88
|
it('initializeSelectedDates returns an empty array for invalid range inputs', () => {
|
|
@@ -106,7 +110,9 @@ describe('DatePicker', () => {
|
|
|
106
110
|
if (!(result instanceof Date)) {
|
|
107
111
|
throw new Error('Expected initializeSelectedDates to return a Date for a single valid date')
|
|
108
112
|
}
|
|
109
|
-
expect(result.
|
|
113
|
+
expect(result.getFullYear()).toBe(2023)
|
|
114
|
+
expect(result.getMonth()).toBe(0)
|
|
115
|
+
expect(result.getDate()).toBe(1)
|
|
110
116
|
})
|
|
111
117
|
|
|
112
118
|
it('initializeSelectedDates returns an empty array when start date is after end date', () => {
|