@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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { useWidthable, type Widthable } from '@/composables/widthable'
|
|
3
|
-
import { ref, useId, watch } from 'vue'
|
|
3
|
+
import { ref, useAttrs, useId, watch } from 'vue'
|
|
4
4
|
import { useTheme } from 'vuetify'
|
|
5
5
|
import FileUploadContent, { type FileUploadContentSlots } from './FileUploadContent.vue'
|
|
6
6
|
import { locales as defaultLocales } from './locales'
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
default(): void
|
|
34
34
|
} & FileUploadContentSlots>()
|
|
35
35
|
|
|
36
|
+
const attrs = useAttrs()
|
|
37
|
+
|
|
36
38
|
const dragover = ref(false)
|
|
37
39
|
const id = 'file-upload-' + useId()
|
|
38
40
|
const dropZone = ref<HTMLElement | null>(null)
|
|
@@ -40,8 +42,16 @@
|
|
|
40
42
|
const fileList = ref<File[]>([])
|
|
41
43
|
const isDarkMode = useTheme().current.value.dark
|
|
42
44
|
|
|
45
|
+
function openFileDialog() {
|
|
46
|
+
if (props.disabled) {
|
|
47
|
+
return
|
|
48
|
+
}
|
|
49
|
+
fileInput.value?.click()
|
|
50
|
+
}
|
|
51
|
+
|
|
43
52
|
defineExpose({
|
|
44
53
|
fileInput,
|
|
54
|
+
openFileDialog,
|
|
45
55
|
})
|
|
46
56
|
|
|
47
57
|
watch(() => props.modelValue, (value) => {
|
|
@@ -93,61 +103,79 @@
|
|
|
93
103
|
;(e.target as HTMLInputElement).value = ''
|
|
94
104
|
}
|
|
95
105
|
</script>
|
|
96
|
-
|
|
106
|
+
|
|
97
107
|
<template>
|
|
98
|
-
<
|
|
99
|
-
|
|
100
|
-
:for="id"
|
|
101
|
-
:class="[
|
|
102
|
-
{
|
|
103
|
-
dragover: dragover,
|
|
104
|
-
'sy-file-upload--disabled': disabled,
|
|
105
|
-
'dark-mode': isDarkMode,
|
|
106
|
-
},
|
|
107
|
-
]"
|
|
108
|
-
:style="widthStyles"
|
|
109
|
-
class="sy-file-upload d-block pa-4"
|
|
110
|
-
@dragover.prevent="dragover = true"
|
|
111
|
-
@dragleave="dragover = false"
|
|
108
|
+
<div
|
|
109
|
+
class="sy-file-upload-wrapper"
|
|
112
110
|
>
|
|
113
111
|
<input
|
|
114
112
|
:id="id"
|
|
115
113
|
ref="fileInput"
|
|
116
114
|
type="file"
|
|
117
|
-
|
|
118
|
-
|
|
115
|
+
tabindex="-1"
|
|
116
|
+
aria-hidden="true"
|
|
117
|
+
:disabled="disabled ? true : undefined"
|
|
118
|
+
:multiple="multiple ? true : undefined"
|
|
119
119
|
:accept="allowedExtensions.map(el=>`.${el}`).join(', ')"
|
|
120
120
|
class="sy-file-upload-input"
|
|
121
121
|
@change="onFileChange"
|
|
122
122
|
>
|
|
123
|
-
<
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
123
|
+
<div
|
|
124
|
+
ref="dropZone"
|
|
125
|
+
:aria-disabled="disabled ? true : undefined"
|
|
126
|
+
:title="locales.fileUploadTitle"
|
|
127
|
+
role="button"
|
|
128
|
+
:tabindex="disabled ? -1 : 0"
|
|
129
|
+
:class="[
|
|
130
|
+
{
|
|
131
|
+
dragover: dragover,
|
|
132
|
+
'sy-file-upload--disabled': disabled,
|
|
133
|
+
'dark-mode': isDarkMode,
|
|
134
|
+
},
|
|
135
|
+
]"
|
|
136
|
+
:style="widthStyles"
|
|
137
|
+
class="sy-file-upload d-block pa-4"
|
|
138
|
+
v-bind="attrs"
|
|
139
|
+
@click="openFileDialog"
|
|
140
|
+
@keydown.enter.prevent="openFileDialog"
|
|
141
|
+
@keydown.space.prevent="openFileDialog"
|
|
142
|
+
@dragover.prevent="dragover = true"
|
|
143
|
+
@dragleave="dragover = false"
|
|
144
|
+
@drop="dragover = false"
|
|
145
|
+
>
|
|
146
|
+
<slot>
|
|
147
|
+
<FileUploadContent
|
|
148
|
+
:allowed-extensions="allowedExtensions"
|
|
149
|
+
:multiple="multiple"
|
|
150
|
+
:file-size-max="fileSizeMax"
|
|
151
|
+
:file-size-units="fileSizeUnits"
|
|
133
152
|
>
|
|
134
|
-
<
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
153
|
+
<template
|
|
154
|
+
v-for="(_, slotName) in $slots"
|
|
155
|
+
#[slotName]="slotProps"
|
|
156
|
+
>
|
|
157
|
+
<slot
|
|
158
|
+
:name="slotName"
|
|
159
|
+
v-bind="slotProps || {}"
|
|
160
|
+
/>
|
|
161
|
+
</template>
|
|
162
|
+
</FileUploadContent>
|
|
163
|
+
</slot>
|
|
164
|
+
</div>
|
|
165
|
+
</div>
|
|
142
166
|
</template>
|
|
143
167
|
|
|
144
168
|
<style lang="scss" scoped>
|
|
145
169
|
@use '@/assets/tokens';
|
|
146
170
|
|
|
171
|
+
.sy-file-upload-wrapper {
|
|
172
|
+
display: contents;
|
|
173
|
+
}
|
|
174
|
+
|
|
147
175
|
.sy-file-upload {
|
|
148
176
|
cursor: pointer;
|
|
149
177
|
position: relative;
|
|
150
|
-
border: 1px dashed tokens.$colors-border-accent;
|
|
178
|
+
border: 1px dashed tokens.$colors-border-accent-primary;
|
|
151
179
|
border-radius: tokens.$radius-rounded-lg;
|
|
152
180
|
transition: background 0.25s;
|
|
153
181
|
|
|
@@ -1,12 +1,55 @@
|
|
|
1
1
|
import { Meta, Story } from '@storybook/addon-docs';
|
|
2
2
|
import * as Stories from '../FileUpload.stories.ts';
|
|
3
|
-
import '@/
|
|
3
|
+
import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
|
|
4
|
+
|
|
5
|
+
import {
|
|
6
|
+
AccessibilityGuideLayout,
|
|
7
|
+
CriteriaSection,
|
|
8
|
+
CriteriaCard,
|
|
9
|
+
DemoSection,
|
|
10
|
+
BestPracticesSection,
|
|
11
|
+
ResourcesSection,
|
|
12
|
+
} from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
|
|
13
|
+
|
|
4
14
|
|
|
5
15
|
<Meta of={Stories} />
|
|
6
16
|
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
17
|
+
<AccessibilityGuideLayout
|
|
18
|
+
componentName="FileUpload"
|
|
19
|
+
iconSrc={AccessibilityIcon}
|
|
20
|
+
>
|
|
21
|
+
<CriteriaSection>
|
|
22
|
+
<CriteriaCard icon="🔍" title="Structure sémantique">
|
|
23
|
+
<ul>
|
|
24
|
+
<li><strong>Utilisation d'un boutton</strong> : Le composant utilise un élément avec le role <code>button</code> pour déclencher l'ouverture du sélecteur de fichiers. Ceci permet de gérer l'interaction avec le clavier, le clic souris ainsi que le glisser-déposer simultanément tout en gardant une bonne sémantique.</li>
|
|
25
|
+
<li><strong>Disabled</strong> : Utilisation de l'attribut <code>disabled</code> sur le bouton si le champ est désactivé.</li>
|
|
26
|
+
</ul>
|
|
27
|
+
</CriteriaCard>
|
|
28
|
+
|
|
29
|
+
<CriteriaCard icon="⌨️" title="Navigation clavier">
|
|
30
|
+
<ul>
|
|
31
|
+
<li><strong>Navigation au clavier</strong> : La zone d'upload de fichier est focusable, l'utilisateur peut utiliser le clic souris, le clavier ainsi que le glisser-déposer.</li>
|
|
32
|
+
</ul>
|
|
33
|
+
</CriteriaCard>
|
|
34
|
+
</CriteriaSection>
|
|
35
|
+
|
|
36
|
+
<DemoSection componentName="FileUpload">
|
|
37
|
+
<Story name="Default" />
|
|
38
|
+
</DemoSection>
|
|
11
39
|
|
|
40
|
+
<BestPracticesSection>
|
|
41
|
+
<ul>
|
|
42
|
+
<li><strong>Utiliser dans une balise de formulaire</strong> : Intégrer le composant dans une balise <code>form</code> ou le composant <code>SyForm</code> pour la sémantique et l'accessibilité.</li>
|
|
43
|
+
<li><strong>Fournir des messages d'erreur clairs</strong> : Utiliser des messages d'erreur explicites et accessibles pour informer les utilisateurs des problèmes de téléchargement.</li>
|
|
44
|
+
<li><strong>Gérer les états de téléchargement</strong> : Fournir des indications visuelles et textuelles pour les différents états de téléchargement, y compris les erreurs et les succès.</li>
|
|
45
|
+
</ul>
|
|
46
|
+
</BestPracticesSection>
|
|
12
47
|
|
|
48
|
+
<ResourcesSection>
|
|
49
|
+
<ul>
|
|
50
|
+
<li><a href="https://react.carbondesignsystem.com/?path=/docs/components-fileuploader--overview" target="_blank" rel="noopener noreferrer">Design system d'IBM</a></li>
|
|
51
|
+
<li><a href="https://developer.mozilla.org/fr/docs/Web/HTML/Reference/Elements/input/file" target="_blank" rel="noopener noreferrer">MDN: input type="file"</a></li>
|
|
52
|
+
<li><a href="https://www.w3.org/WAI/WCAG21/quickref/" target="_blank" rel="noopener noreferrer">Référence rapide WCAG 2.1</a></li>
|
|
53
|
+
</ul>
|
|
54
|
+
</ResourcesSection>
|
|
55
|
+
</AccessibilityGuideLayout>
|
|
@@ -48,13 +48,13 @@ describe('FileUpload', () => {
|
|
|
48
48
|
},
|
|
49
49
|
})
|
|
50
50
|
|
|
51
|
-
const label = wrapper.find('
|
|
51
|
+
const label = wrapper.find('.sy-file-upload')
|
|
52
52
|
const labelClasses = label.classes()
|
|
53
53
|
|
|
54
|
-
await wrapper.find('
|
|
54
|
+
await wrapper.find('.sy-file-upload').trigger('dragover')
|
|
55
55
|
expect(label.classes()).not.toEqual(labelClasses)
|
|
56
56
|
|
|
57
|
-
await wrapper.find('
|
|
57
|
+
await wrapper.find('.sy-file-upload').trigger('dragleave')
|
|
58
58
|
expect(label.classes()).toEqual(labelClasses)
|
|
59
59
|
})
|
|
60
60
|
|
|
@@ -68,7 +68,7 @@ describe('FileUpload', () => {
|
|
|
68
68
|
|
|
69
69
|
const file: File = new File([''], 'filename.pdf', { type: 'application/pdf' })
|
|
70
70
|
|
|
71
|
-
await wrapper.find('
|
|
71
|
+
await wrapper.find('.sy-file-upload').trigger('drop', {
|
|
72
72
|
dataTransfer: {
|
|
73
73
|
files: [file],
|
|
74
74
|
},
|
|
@@ -89,13 +89,13 @@ describe('FileUpload', () => {
|
|
|
89
89
|
|
|
90
90
|
const file: File = new File([''], 'filename.pdf', { type: 'application/pdf' })
|
|
91
91
|
|
|
92
|
-
await wrapper.find('
|
|
92
|
+
await wrapper.find('.sy-file-upload').trigger('drop', {
|
|
93
93
|
dataTransfer: {
|
|
94
94
|
files: [file],
|
|
95
95
|
},
|
|
96
96
|
})
|
|
97
97
|
|
|
98
|
-
await wrapper.find('
|
|
98
|
+
await wrapper.find('.sy-file-upload').trigger('drop', {
|
|
99
99
|
dataTransfer: {
|
|
100
100
|
files: [file, file],
|
|
101
101
|
},
|
|
@@ -115,7 +115,7 @@ describe('FileUpload', () => {
|
|
|
115
115
|
|
|
116
116
|
const file: File = new File([''], 'filename.jpg', { type: 'image/jpeg' })
|
|
117
117
|
|
|
118
|
-
await wrapper.find('
|
|
118
|
+
await wrapper.find('.sy-file-upload').trigger('drop', {
|
|
119
119
|
dataTransfer: {
|
|
120
120
|
files: [file],
|
|
121
121
|
},
|
|
@@ -137,7 +137,7 @@ describe('FileUpload', () => {
|
|
|
137
137
|
},
|
|
138
138
|
})
|
|
139
139
|
|
|
140
|
-
await wrapper.find('
|
|
140
|
+
await wrapper.find('.sy-file-upload').trigger('drop', {
|
|
141
141
|
dataTransfer: {
|
|
142
142
|
files: [jpgFile],
|
|
143
143
|
},
|
|
@@ -146,7 +146,7 @@ describe('FileUpload', () => {
|
|
|
146
146
|
expect(wrapper.emitted('update:modelValue')?.[0]).toEqual(undefined)
|
|
147
147
|
expect(wrapper.emitted('error')?.[0]).toEqual([['Le fichier filename.jpg a une extension invalide. Extensions acceptées : pdf']])
|
|
148
148
|
|
|
149
|
-
await wrapper.find('
|
|
149
|
+
await wrapper.find('.sy-file-upload').trigger('drop', {
|
|
150
150
|
dataTransfer: {
|
|
151
151
|
files: [pdfFile],
|
|
152
152
|
},
|
|
@@ -166,7 +166,7 @@ describe('FileUpload', () => {
|
|
|
166
166
|
|
|
167
167
|
const file: File = new File(['42'], 'filename.jpg', { type: 'image/jpeg' })
|
|
168
168
|
|
|
169
|
-
await wrapper.find('
|
|
169
|
+
await wrapper.find('.sy-file-upload').trigger('drop', {
|
|
170
170
|
dataTransfer: {
|
|
171
171
|
files: [file],
|
|
172
172
|
},
|
|
@@ -183,7 +183,7 @@ describe('FileUpload', () => {
|
|
|
183
183
|
},
|
|
184
184
|
})
|
|
185
185
|
|
|
186
|
-
await wrapper.find('
|
|
186
|
+
await wrapper.find('.sy-file-upload').trigger('drop', {
|
|
187
187
|
dataTransfer: {
|
|
188
188
|
files: [],
|
|
189
189
|
},
|
|
@@ -203,7 +203,7 @@ describe('FileUpload', () => {
|
|
|
203
203
|
|
|
204
204
|
const file: File = new File([''], 'filename.xyz', { type: 'unknown' })
|
|
205
205
|
|
|
206
|
-
await wrapper.find('
|
|
206
|
+
await wrapper.find('.sy-file-upload').trigger('drop', {
|
|
207
207
|
dataTransfer: {
|
|
208
208
|
files: [file],
|
|
209
209
|
},
|
|
@@ -221,7 +221,7 @@ describe('FileUpload', () => {
|
|
|
221
221
|
},
|
|
222
222
|
})
|
|
223
223
|
|
|
224
|
-
await wrapper.find('
|
|
224
|
+
await wrapper.find('.sy-file-upload').trigger('drop', {
|
|
225
225
|
dataTransfer: {
|
|
226
226
|
files: [file],
|
|
227
227
|
},
|
|
@@ -241,7 +241,7 @@ describe('FileUpload', () => {
|
|
|
241
241
|
const file1: File = new File([''], 'filename1.jpg', { type: 'image/jpeg' })
|
|
242
242
|
const file2: File = new File([''], 'filename2.jpg', { type: 'image/jpeg' })
|
|
243
243
|
|
|
244
|
-
await wrapper.find('
|
|
244
|
+
await wrapper.find('.sy-file-upload').trigger('drop', {
|
|
245
245
|
dataTransfer: {
|
|
246
246
|
files: [file1, file2],
|
|
247
247
|
},
|
|
@@ -207,9 +207,6 @@ export const Default: Story = {
|
|
|
207
207
|
`,
|
|
208
208
|
}),
|
|
209
209
|
parameters: {
|
|
210
|
-
a11y: {
|
|
211
|
-
disable: true,
|
|
212
|
-
},
|
|
213
210
|
sourceCode: [
|
|
214
211
|
{
|
|
215
212
|
name: 'Template',
|
|
@@ -370,9 +367,6 @@ export const ChipFormat: Story = {
|
|
|
370
367
|
`,
|
|
371
368
|
}),
|
|
372
369
|
parameters: {
|
|
373
|
-
a11y: {
|
|
374
|
-
disable: true,
|
|
375
|
-
},
|
|
376
370
|
sourceCode: [
|
|
377
371
|
{
|
|
378
372
|
name: 'Template',
|
|
@@ -599,9 +593,6 @@ export const FilterCombination: Story = {
|
|
|
599
593
|
`,
|
|
600
594
|
}),
|
|
601
595
|
parameters: {
|
|
602
|
-
a11y: {
|
|
603
|
-
disable: true,
|
|
604
|
-
},
|
|
605
596
|
layout: 'fullscreen',
|
|
606
597
|
sourceCode: [
|
|
607
598
|
{
|
|
@@ -835,9 +826,6 @@ export const Boolean: Story = {
|
|
|
835
826
|
`,
|
|
836
827
|
}),
|
|
837
828
|
parameters: {
|
|
838
|
-
a11y: {
|
|
839
|
-
disable: true,
|
|
840
|
-
},
|
|
841
829
|
sourceCode: [
|
|
842
830
|
{
|
|
843
831
|
name: 'Template',
|
|
@@ -988,9 +976,6 @@ export const ManyFields: Story = {
|
|
|
988
976
|
`,
|
|
989
977
|
}),
|
|
990
978
|
parameters: {
|
|
991
|
-
a11y: {
|
|
992
|
-
disable: true,
|
|
993
|
-
},
|
|
994
979
|
sourceCode: [
|
|
995
980
|
{
|
|
996
981
|
name: 'Template',
|
|
@@ -45,6 +45,7 @@
|
|
|
45
45
|
<template #activator="{ props: menuProps, isActive }">
|
|
46
46
|
<VBtn
|
|
47
47
|
v-bind="menuProps"
|
|
48
|
+
:aria-controls="isActive ? menuProps['aria-controls'] : undefined"
|
|
48
49
|
:class="`sy-filter-${filter.name}`"
|
|
49
50
|
:variant="getFilterCount(filter) ? undefined : 'outlined'"
|
|
50
51
|
color="secondary"
|
|
@@ -1,12 +1,75 @@
|
|
|
1
|
-
import { Meta, Story } from '@storybook/
|
|
2
|
-
import * as Stories from '../FilterInline.stories
|
|
1
|
+
import { Meta, Story } from '@storybook/blocks';
|
|
2
|
+
import * as Stories from '../FilterInline.stories';
|
|
3
|
+
import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
|
|
3
4
|
import '@/stories/styles/shared.css';
|
|
5
|
+
import {
|
|
6
|
+
AccessibilityGuideLayout,
|
|
7
|
+
CriteriaSection,
|
|
8
|
+
CriteriaCard,
|
|
9
|
+
DemoSection,
|
|
10
|
+
BestPracticesSection,
|
|
11
|
+
ResourcesSection,
|
|
12
|
+
AuditSection,
|
|
13
|
+
} from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
|
|
4
14
|
|
|
5
15
|
<Meta of={Stories} />
|
|
6
16
|
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
17
|
+
<AccessibilityGuideLayout
|
|
18
|
+
componentName="FilterInline"
|
|
19
|
+
iconSrc={AccessibilityIcon}
|
|
20
|
+
>
|
|
21
|
+
<AuditSection>
|
|
22
|
+
<div>Aucun audit externe spécifique à ce composant pour le moment.</div>
|
|
23
|
+
<div style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>
|
|
24
|
+
Testez via l’addon a11y et les tests axe dédiés.
|
|
25
|
+
</div>
|
|
26
|
+
</AuditSection>
|
|
11
27
|
|
|
12
|
-
<
|
|
28
|
+
<CriteriaSection>
|
|
29
|
+
<CriteriaCard icon="🏷️" title="Structure et rôles">
|
|
30
|
+
<ul>
|
|
31
|
+
<li>Chaque filtre est un <code>button</code> ouvrant un menu (<code>VMenu</code>) avec <code>aria-haspopup="menu"</code> et <code>aria-expanded</code> géré par Vuetify.</li>
|
|
32
|
+
<li><code>aria-controls</code> est présent uniquement quand le menu est ouvert pour éviter des références manquantes.</li>
|
|
33
|
+
<li>Les listes de valeurs utilisent des composants champs (Select, SearchListField, PeriodField…) conservant leurs rôles natifs.</li>
|
|
34
|
+
<li>Les puces récapitulatives (<code>ChipList</code>) exposent un libellé (<code>aria-label</code>) et des actions de suppression.</li>
|
|
35
|
+
</ul>
|
|
36
|
+
</CriteriaCard>
|
|
37
|
+
|
|
38
|
+
<CriteriaCard icon="⌨️" title="Navigation clavier">
|
|
39
|
+
<ul>
|
|
40
|
+
<li>Activation des menus au clavier (Entrée/Espace) via <code>VMenu</code>.</li>
|
|
41
|
+
<li>Focus visible sur les boutons de filtres et sur les items des listes.</li>
|
|
42
|
+
<li>Échappe (Esc) pour fermer les menus.</li>
|
|
43
|
+
</ul>
|
|
44
|
+
</CriteriaCard>
|
|
45
|
+
|
|
46
|
+
<CriteriaCard icon="🎨" title="Contraste et lisibilité">
|
|
47
|
+
<ul>
|
|
48
|
+
<li>Boutons par défaut en thème secondaire avec contrastes conformes aux tokens.</li>
|
|
49
|
+
<li>Badges de comptage lisibles et annoncés via <code>aria-label</code> localisé.</li>
|
|
50
|
+
<li>Textes des puces issus des valeurs choisies ; évitez les libellés trop longs.</li>
|
|
51
|
+
</ul>
|
|
52
|
+
</CriteriaCard>
|
|
53
|
+
</CriteriaSection>
|
|
54
|
+
|
|
55
|
+
<DemoSection componentName="FilterInline">
|
|
56
|
+
<Story of={Stories.Default} />
|
|
57
|
+
</DemoSection>
|
|
58
|
+
|
|
59
|
+
<BestPracticesSection>
|
|
60
|
+
<ul>
|
|
61
|
+
<li>Préférez des titres de filtres courts et explicites ; complétez avec une aide textuelle dans le menu si nécessaire.</li>
|
|
62
|
+
<li>Évitez de masquer les focus visibles : laisser les styles par défaut ou renforcer le contour si nécessaire.</li>
|
|
63
|
+
<li>Pour les listes multiples, assurez-vous que chaque option a un libellé unique et compréhensible.</li>
|
|
64
|
+
<li>Ne forcez pas la fermeture automatique du menu lors de la sélection multiple afin de laisser l’utilisateur compléter sa saisie.</li>
|
|
65
|
+
<li>Vérifiez l’ordre logique de tabulation quand vous combinez FilterInline et FilterSideBar sur une même page.</li>
|
|
66
|
+
</ul>
|
|
67
|
+
</BestPracticesSection>
|
|
68
|
+
|
|
69
|
+
<ResourcesSection>
|
|
70
|
+
<ul>
|
|
71
|
+
<li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/" target="_blank" rel="noopener noreferrer">WAI-ARIA Authoring Practices – Menu Button</a></li>
|
|
72
|
+
<li><a href="https://www.numerique.gouv.fr/publications/rgaa-accessibilite/" target="_blank" rel="noopener noreferrer">RGAA – critères 7.1 (attributs ARIA) et 10.8 (éléments masqués)</a></li>
|
|
73
|
+
</ul>
|
|
74
|
+
</ResourcesSection>
|
|
75
|
+
</AccessibilityGuideLayout>
|
|
@@ -9,9 +9,9 @@ exports[`FilterInline > renders correctly with an active filter 1`] = `
|
|
|
9
9
|
sy-filters-inline
|
|
10
10
|
">
|
|
11
11
|
<button
|
|
12
|
-
aria-controls="v-menu-v-0"
|
|
13
12
|
aria-expanded="false"
|
|
14
13
|
aria-haspopup="menu"
|
|
14
|
+
aria-owns="v-menu-v-0"
|
|
15
15
|
class="
|
|
16
16
|
bg-secondary
|
|
17
17
|
ma-2
|
|
@@ -90,9 +90,9 @@ exports[`FilterInline > renders correctly with multiple active filters 1`] = `
|
|
|
90
90
|
sy-filters-inline
|
|
91
91
|
">
|
|
92
92
|
<button
|
|
93
|
-
aria-controls="v-menu-v-0"
|
|
94
93
|
aria-expanded="false"
|
|
95
94
|
aria-haspopup="menu"
|
|
95
|
+
aria-owns="v-menu-v-0"
|
|
96
96
|
class="
|
|
97
97
|
bg-secondary
|
|
98
98
|
ma-2
|
|
@@ -160,9 +160,9 @@ exports[`FilterInline > renders correctly with multiple active filters 1`] = `
|
|
|
160
160
|
</button>
|
|
161
161
|
<!---->
|
|
162
162
|
<button
|
|
163
|
-
aria-controls="v-menu-v-2"
|
|
164
163
|
aria-expanded="false"
|
|
165
164
|
aria-haspopup="menu"
|
|
165
|
+
aria-owns="v-menu-v-2"
|
|
166
166
|
class="
|
|
167
167
|
bg-secondary
|
|
168
168
|
ma-2
|
|
@@ -115,10 +115,11 @@
|
|
|
115
115
|
rail
|
|
116
116
|
rail-width="395"
|
|
117
117
|
disable-resize-watcher
|
|
118
|
-
tabindex="0"
|
|
118
|
+
:tabindex="drawer ? 0 : -1"
|
|
119
119
|
class="sy-filters-side-bar__content elevation-6 bg-white"
|
|
120
120
|
role="dialog"
|
|
121
121
|
:aria-hidden="drawer ? undefined : 'true'"
|
|
122
|
+
:inert="drawer ? undefined : 'true'"
|
|
122
123
|
:aria-modal="props.modale"
|
|
123
124
|
:aria-label="locales.modaleLabel"
|
|
124
125
|
@keydown.escape.prevent="drawer = false"
|
|
@@ -1,15 +1,76 @@
|
|
|
1
|
-
import { Meta, Story } from '@storybook/
|
|
2
|
-
import * as Stories from '../FilterSideBar.stories
|
|
1
|
+
import { Meta, Story } from '@storybook/blocks';
|
|
2
|
+
import * as Stories from '../FilterSideBar.stories';
|
|
3
|
+
import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
|
|
3
4
|
import '@/stories/styles/shared.css';
|
|
5
|
+
import {
|
|
6
|
+
AccessibilityGuideLayout,
|
|
7
|
+
CriteriaSection,
|
|
8
|
+
CriteriaCard,
|
|
9
|
+
DemoSection,
|
|
10
|
+
BestPracticesSection,
|
|
11
|
+
ResourcesSection,
|
|
12
|
+
AuditSection,
|
|
13
|
+
} from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
|
|
4
14
|
|
|
5
15
|
<Meta of={Stories} />
|
|
6
16
|
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
17
|
+
<AccessibilityGuideLayout
|
|
18
|
+
componentName="FilterSideBar"
|
|
19
|
+
iconSrc={AccessibilityIcon}
|
|
20
|
+
>
|
|
21
|
+
<AuditSection>
|
|
22
|
+
<div>Rapport d’audit manuel : <a href="/audits/FilterSideBar.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></div>
|
|
23
|
+
<div style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>
|
|
24
|
+
Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/913" target="_blank" style={{color:'#0C41BD'}}>issue #913</a>)
|
|
25
|
+
</div>
|
|
26
|
+
</AuditSection>
|
|
10
27
|
|
|
28
|
+
<CriteriaSection>
|
|
29
|
+
<CriteriaCard icon="🏷️" title="Structure et rôles">
|
|
30
|
+
<ul>
|
|
31
|
+
<li>Le bouton d’ouverture est un <code>button</code> avec badge de comptage et libellé localisé.</li>
|
|
32
|
+
<li>Le panneau est un <code>VNavigationDrawer</code> exposé en <code>role="dialog"</code> et <code>aria-modal</code> lorsque <code>modale</code> est activé.</li>
|
|
33
|
+
<li><code>aria-hidden</code>, <code>inert</code> et <code>tabindex=-1</code> appliqués lorsqu’il est fermé pour éviter le focus sur du contenu masqué.</li>
|
|
34
|
+
<li>Chaque groupe de filtres conserve le rôle natif des champs (Select, SearchListField, PeriodField…) et les puces (<code>ChipList</code>) exposent un libellé <code>aria-label</code> pour la liste.</li>
|
|
35
|
+
</ul>
|
|
36
|
+
</CriteriaCard>
|
|
11
37
|
|
|
12
|
-
<
|
|
13
|
-
<
|
|
14
|
-
|
|
15
|
-
|
|
38
|
+
<CriteriaCard icon="⌨️" title="Navigation clavier">
|
|
39
|
+
<ul>
|
|
40
|
+
<li>Ouverture/fermeture du panneau via Entrée/Espace sur le bouton ; focus renvoyé au bouton à la fermeture.</li>
|
|
41
|
+
<li>Échappe (Esc) pour fermer le panneau.</li>
|
|
42
|
+
<li>Si <code>modale</code> est vrai, le focus est verrouillé dans le panneau via <code>v-lock-focus</code>.</li>
|
|
43
|
+
<li>Focus visible maintenu sur les boutons d’action (Appliquer, Réinitialiser, Fermer).</li>
|
|
44
|
+
</ul>
|
|
45
|
+
</CriteriaCard>
|
|
46
|
+
|
|
47
|
+
<CriteriaCard icon="🎨" title="Contraste et lisibilité">
|
|
48
|
+
<ul>
|
|
49
|
+
<li>Bouton d’ouverture et actions en thème primaire/secondaire avec halo focus contrasté.</li>
|
|
50
|
+
<li>Badges de comptage colorés et annoncés via <code>locales.badgeLabel</code>.</li>
|
|
51
|
+
<li>Texte et champs héritent du thème (fond blanc, ombre) pour une lecture claire.</li>
|
|
52
|
+
</ul>
|
|
53
|
+
</CriteriaCard>
|
|
54
|
+
</CriteriaSection>
|
|
55
|
+
|
|
56
|
+
<DemoSection componentName="FilterSideBar">
|
|
57
|
+
<Story of={Stories.Default} />
|
|
58
|
+
</DemoSection>
|
|
59
|
+
|
|
60
|
+
<BestPracticesSection>
|
|
61
|
+
<ul>
|
|
62
|
+
<li>Fournissez des titres courts pour chaque filtre et un texte d’aide si nécessaire.</li>
|
|
63
|
+
<li>Activez <code>modale</code> quand le focus doit rester dans le panneau (dialogue bloquant).</li>
|
|
64
|
+
<li>Évitez de cacher le focus visible ; renforcez-le si votre thème réduit les contours.</li>
|
|
65
|
+
<li>Utilisez des libellés uniques pour les options (Select, listes) afin d’éviter les ambiguïtés.</li>
|
|
66
|
+
<li>Vérifiez l’ordre de tabulation si vous combinez FilterSideBar et FilterInline dans la même vue.</li>
|
|
67
|
+
</ul>
|
|
68
|
+
</BestPracticesSection>
|
|
69
|
+
|
|
70
|
+
<ResourcesSection>
|
|
71
|
+
<ul>
|
|
72
|
+
<li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/dialog-modal/" target="_blank" rel="noopener noreferrer">WAI-ARIA Authoring Practices – Dialog (Modal)</a></li>
|
|
73
|
+
<li><a href="https://www.numerique.gouv.fr/publications/rgaa-accessibilite/" target="_blank" rel="noopener noreferrer">RGAA – critères 7.1 (attributs ARIA) et 10.8 (éléments masqués)</a></li>
|
|
74
|
+
</ul>
|
|
75
|
+
</ResourcesSection>
|
|
76
|
+
</AccessibilityGuideLayout>
|