@cnamts/synapse 1.0.21 → 1.0.23
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-uN8OURoP.js → DateFilter-Dc-gSGwk.js} +29 -24
- package/dist/{NumberFilter-sm1dQNQi.js → NumberFilter-vP38Wp6j.js} +1 -1
- package/dist/{PeriodFilter-Cklsxnh9.js → PeriodFilter-Ba1uYUnT.js} +1 -1
- package/dist/{SelectFilter-CWefj27Z.js → SelectFilter-BioGT6Nn.js} +1 -1
- package/dist/{TextFilter-Ddyj885L.js → TextFilter-B84dpnoq.js} +1 -1
- package/dist/components/Accordion/Accordion.d.ts +13 -2
- package/dist/components/Accordion/composables/useAccordionState.d.ts +2 -1
- package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +7405 -5973
- 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/AmeliproClickableTile/AmeliproClickableTile.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 +2413 -2029
- package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +8885 -7323
- 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 +8884 -7330
- package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +950 -838
- package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +1614 -1358
- 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 +1108 -846
- package/dist/components/Customs/Selects/SyAutocomplete/locales.d.ts +5 -0
- package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +514 -320
- package/dist/components/Customs/Selects/SySelect/locales.d.ts +1 -0
- package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +40 -38
- package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +920 -800
- 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 +906 -794
- package/dist/components/Customs/SyTextField/SyTextField.d.ts +1634 -1367
- package/dist/components/DataList/DataList.d.ts +1 -1
- package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +3869 -3120
- package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +1947 -1561
- package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +831 -684
- 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 +6 -0
- package/dist/components/FileList/UploadItem/UploadItem.d.ts +6 -0
- package/dist/components/FileList/UploadItem/locales.d.ts +1 -0
- package/dist/components/FileUpload/FileUpload.d.ts +4 -4
- package/dist/components/FileUpload/FileUploadContent.d.ts +2 -0
- package/dist/components/FileUpload/locales.d.ts +1 -0
- package/dist/components/FileUpload/validateFiles.d.ts +2 -1
- 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 +2 -0
- package/dist/components/HeaderBar/HeaderLogo/HeaderLogo.d.ts +2 -0
- package/dist/components/HeaderNavigationBar/HeaderNavigationBar.d.ts +4 -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/MonthPicker/MonthPicker.d.ts +1939 -0
- package/dist/components/MonthPicker/MonthPickerText/MonthPickerInput.d.ts +1899 -0
- package/dist/components/MonthPicker/MonthPickerText/useTextField.d.ts +21 -0
- package/dist/components/MonthPicker/MonthPickerVisual/MonthPickerVisual.d.ts +21 -0
- package/dist/components/MonthPicker/MonthPickerVisual/MonthPickerVisualProps.d.ts +12 -0
- package/dist/components/MonthPicker/MonthPickerVisual/MonthSelector.d.ts +11 -0
- package/dist/components/MonthPicker/MonthPickerVisual/VisualPickerFooter.d.ts +6 -0
- package/dist/components/MonthPicker/MonthPickerVisual/VisualPickerHeader.d.ts +14 -0
- package/dist/components/MonthPicker/MonthPickerVisual/YearSelector.d.ts +14 -0
- package/dist/components/MonthPicker/MonthPickerVisual/useMonthGrid.d.ts +9 -0
- package/dist/components/MonthPicker/MonthPickerVisual/useYearGrid.d.ts +8 -0
- package/dist/components/MonthPicker/MonthPickerVisual/utils.d.ts +8 -0
- package/dist/components/MonthPicker/locales.d.ts +12 -0
- package/dist/components/MonthPicker/useMonthPickerValidation.d.ts +25 -0
- package/dist/components/NirField/NirField.d.ts +1669 -1379
- package/dist/components/NotFoundPage/NotFoundPage.d.ts +9 -3
- package/dist/components/NotificationBar/Notification/Notification.d.ts +3 -0
- package/dist/components/PageContainer/PageContainer.d.ts +3 -1
- package/dist/components/PeriodField/PeriodField.d.ts +7696 -6192
- package/dist/components/PhoneField/PhoneField.d.ts +829 -684
- package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +4 -12
- package/dist/components/StatusPage/StatusPage.d.ts +12 -1
- 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 +9 -0
- package/dist/components/SyHeading/SyHeading.a11y.test.d.ts +1 -0
- package/dist/components/SyHeading/SyHeading.d.ts +22 -0
- package/dist/components/SyHeading/SyHeading.test.d.ts +1 -0
- package/dist/components/SyTextArea/SyTextArea.d.ts +475 -419
- 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 +263 -164
- 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 +24 -1211
- package/dist/components/UserMenuBtn/UserMenuBtn.d.ts +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/types.d.ts +2 -0
- package/dist/design-system-v3.js +111 -107
- package/dist/design-system-v3.umd.cjs +158 -158
- 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/cnamContextual.d.ts +5 -0
- 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-aLKwdMi1.js +37886 -0
- package/dist/main.d.ts +1 -0
- package/dist/style.css +1 -1
- package/dist/vuetifyConfig.d.ts +14 -14
- package/package.json +21 -9
- package/src/assets/amelipro/img/logo-amelipro.svg +9 -0
- package/src/assets/apTokens.scss +53 -17
- package/src/assets/overrides/_btns.scss +8 -0
- package/src/assets/overrides/_forms.scss +9 -0
- package/src/assets/overrides/_icons.scss +43 -4
- package/src/assets/overrides/_tables.scss +19 -0
- 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/Accordion.mdx +23 -9
- package/src/components/Accordion/Accordion.stories.ts +153 -3
- package/src/components/Accordion/Accordion.vue +7 -6
- package/src/components/Accordion/accessibilite/Accessibility.mdx +5 -4
- package/src/components/Accordion/composables/__tests__/useAccordionState.spec.ts +40 -12
- package/src/components/Accordion/composables/useAccordionState.ts +3 -4
- package/src/components/Accordion/tests/accordion.spec.ts +131 -19
- 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/AmeliproPagination/AmeliproPagination.mdx +3 -1
- package/src/components/Amelipro/AmeliproPagination/AmeliproPagination.stories.ts +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/BackBtn/accessibilite/Accessibility.mdx +62 -10
- package/src/components/BackToTopBtn/BackToTopBtn.stories.ts +9 -3
- package/src/components/BackToTopBtn/accessibilite/Accessibility.mdx +86 -6
- package/src/components/Captcha/tests/Captcha.spec.ts +0 -29
- package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +18 -108
- 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/CookieBanner/CookieBanner.stories.ts +10 -0
- package/src/components/CookieBanner/CookieBanner.vue +15 -5
- package/src/components/CookieBanner/accessibilite/Accessibility.mdx +9 -0
- package/src/components/CookieBanner/tests/CookieBanner.spec.ts +10 -2
- 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/SelectBtnField/accessibilite/Accessibility.mdx +133 -10
- package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.stories.ts +379 -93
- package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.vue +144 -83
- package/src/components/Customs/Selects/SyAutocomplete/accessibilite/Accessibilite.stories.ts +40 -1
- package/src/components/Customs/Selects/SyAutocomplete/accessibilite/Accessibility.mdx +7 -1
- package/src/components/Customs/Selects/SyAutocomplete/locales.ts +5 -0
- package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.a11y.spec.ts +96 -0
- package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.spec.ts +234 -9
- package/src/components/Customs/Selects/SyAutocomplete/utils/ariaManager.ts +13 -3
- package/src/components/Customs/Selects/SyAutocomplete/utils/useSelectionLogic.ts +9 -10
- 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 +63 -3
- package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +1 -1
- package/src/components/Customs/Selects/SySelect/locales.ts +1 -0
- 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/SyCheckbox/SyCheckbox.vue +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/SyIcon/tests/SyIcon.a11y.spec.ts +20 -0
- package/src/components/Customs/SyIconButton/SyIconButton.mdx +46 -0
- package/src/components/Customs/SyIconButton/SyIconButton.stories.ts +184 -0
- package/src/components/Customs/SyIconButton/SyIconButton.vue +38 -0
- package/src/components/Customs/SyIconButton/accessibilite/Accessibility.mdx +64 -0
- package/src/components/Customs/SyIconButton/tests/SyIconButton.a11y.spec.ts +87 -0
- package/src/components/Customs/SyIconButton/tests/SyIconButton.spec.ts +152 -0
- package/src/components/Customs/SyIconButton/tests/__snapshots__/SyIconButton.spec.ts.snap +61 -0
- package/src/components/Customs/SyPagination/SyPagination.stories.ts +14 -2
- package/src/components/Customs/SyPagination/SyPagination.vue +25 -10
- package/src/components/Customs/SyPagination/accessibilite/Accessibility.mdx +79 -8
- package/src/components/Customs/SyPagination/tests/SyPagination.a11y.spec.ts +53 -0
- package/src/components/Customs/SyPagination/tests/SyPagination.spec.ts +12 -0
- package/src/components/Customs/SyTextField/SyTextField.stories.ts +4 -0
- package/src/components/Customs/SyTextField/SyTextField.vue +59 -7
- package/src/components/Customs/SyTextField/accessibilite/Accessibility.mdx +67 -9
- package/src/components/Customs/SyTextField/tests/SyTextField.a11y.spec.ts +15 -0
- package/src/components/Customs/SyTextField/tests/SyTextField.spec.ts +36 -0
- package/src/components/DataList/accessibilite/Accessibility.mdx +79 -11
- package/src/components/DataListGroup/accessibilite/Accessibility.mdx +80 -11
- package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +28 -3
- package/src/components/DatePicker/CalendarMode/DatePicker.vue +20 -8
- package/src/components/DatePicker/CalendarMode/tests/DatePicker.spec.ts +9 -3
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +1 -1
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +70 -47
- package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.a11y.spec.ts +34 -0
- package/src/components/DatePicker/DateTextInput/tests/DateTextInput.a11y.spec.ts +27 -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/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/DownloadBtn/tests/DownloadBtn.a11y.spec.ts +25 -0
- package/src/components/ErrorPage/ErrorPage.stories.ts +176 -47
- package/src/components/ErrorPage/ErrorPage.vue +21 -0
- package/src/components/ErrorPage/accessibilite/Accessibility.mdx +15 -0
- package/src/components/ErrorPage/tests/ErrorPage.a11y.spec.ts +17 -0
- package/src/components/ErrorPage/tests/ErrorPage.spec.ts +21 -1
- package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +1 -0
- package/src/components/ExternalLinks/tests/ExternalLinks.a11y.spec.ts +23 -0
- package/src/components/ExternalLinks/tests/__snapshots__/ExternalLinks.spec.ts.snap +13 -2
- package/src/components/FileList/FileList.stories.ts +55 -1
- package/src/components/FileList/UploadItem/UploadItem.vue +17 -5
- package/src/components/FileList/UploadItem/locales.ts +3 -2
- package/src/components/FileList/accessibilite/Accessibility.mdx +58 -7
- package/src/components/FileUpload/FileUpload.vue +62 -38
- package/src/components/FileUpload/FileUploadContent.vue +3 -2
- 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 +61 -14
- package/src/components/FileUpload/validateFiles.ts +5 -2
- 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 +298 -34
- package/src/components/FooterBar/FooterBar.vue +67 -9
- package/src/components/FooterBar/config.ts +2 -2
- 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/FranceConnectBtn/accessibilite/Accessibility.mdx +62 -9
- package/src/components/HeaderBar/HeaderBar.stories.ts +23 -1
- package/src/components/HeaderBar/HeaderBar.vue +5 -0
- package/src/components/HeaderBar/HeaderLogo/HeaderLogo.vue +8 -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 +3 -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/LunarCalendar/accessibilite/Accessibility.mdx +74 -8
- package/src/components/LunarCalendar/tests/LunarCalendar.a11y.spec.ts +163 -0
- package/src/components/MaintenancePage/MaintenancePage.vue +33 -6
- package/src/components/MaintenancePage/accessibilite/Accessibility.mdx +3 -1
- package/src/components/MaintenancePage/tests/MaintenancePage.a11y.spec.ts +3 -2
- package/src/components/MaintenancePage/tests/MaintenancePage.spec.ts +18 -1
- package/src/components/MaintenancePage/tests/__snapshots__/MaintenancePage.spec.ts.snap +1 -0
- package/src/components/MonthPicker/MonthPicker.mdx +35 -0
- package/src/components/MonthPicker/MonthPicker.stories.ts +527 -0
- package/src/components/MonthPicker/MonthPicker.vue +79 -0
- package/src/components/MonthPicker/MonthPickerText/MonthPickerInput.vue +89 -0
- package/src/components/MonthPicker/MonthPickerText/useTextField.ts +27 -0
- package/src/components/MonthPicker/MonthPickerVisual/MonthPickerVisual.vue +154 -0
- package/src/components/MonthPicker/MonthPickerVisual/MonthPickerVisualProps.ts +13 -0
- package/src/components/MonthPicker/MonthPickerVisual/MonthSelector.vue +137 -0
- package/src/components/MonthPicker/MonthPickerVisual/VisualPickerFooter.vue +60 -0
- package/src/components/MonthPicker/MonthPickerVisual/VisualPickerHeader.vue +149 -0
- package/src/components/MonthPicker/MonthPickerVisual/YearSelector.vue +143 -0
- package/src/components/MonthPicker/MonthPickerVisual/useMonthGrid.ts +45 -0
- package/src/components/MonthPicker/MonthPickerVisual/useYearGrid.ts +45 -0
- package/src/components/MonthPicker/MonthPickerVisual/utils.ts +17 -0
- package/src/components/MonthPicker/accessibilite/Accessibility.mdx +59 -0
- package/src/components/MonthPicker/locales.ts +12 -0
- package/src/components/MonthPicker/tests/MonthPicker.a11y.spec.ts +71 -0
- package/src/components/MonthPicker/tests/MonthPicker.spec.ts +1248 -0
- package/src/components/MonthPicker/tests/__snapshots__/MonthPicker.spec.ts.snap +2545 -0
- package/src/components/MonthPicker/useMonthPickerValidation.ts +30 -0
- package/src/components/NirField/NirField.mdx +1 -2
- package/src/components/NirField/NirField.stories.ts +66 -6
- package/src/components/NotFoundPage/NotFoundPage.stories.ts +1 -1
- package/src/components/NotFoundPage/NotFoundPage.vue +16 -5
- package/src/components/NotFoundPage/accessibilite/Accessibility.mdx +2 -0
- package/src/components/NotFoundPage/tests/NotFoundPage.a11y.spec.ts +49 -0
- package/src/components/NotFoundPage/tests/NotFoundPage.spec.ts +24 -2
- package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +24 -14
- package/src/components/NotificationBar/Notification/Notification.vue +3 -1
- package/src/components/NotificationBar/NotificationBar.stories.ts +154 -0
- package/src/components/NotificationBar/tests/NotificationBar.a11y.spec.ts +26 -0
- package/src/components/NotificationBar/tests/NotificationBar.spec.ts +60 -0
- package/src/components/PageContainer/PageContainer.stories.ts +47 -0
- package/src/components/PageContainer/PageContainer.vue +4 -2
- package/src/components/PageContainer/accessibilite/Accessibility.mdx +31 -17
- 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 +73 -35
- 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 +47 -0
- package/src/components/PhoneField/tests/PhoneField.spec.ts +82 -5
- package/src/components/RangeField/accessibilite/Accessibility.mdx +79 -11
- 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/SkipLink/tests/SkipLink.a11y.spec.ts +23 -0
- package/src/components/SocialMediaLinks/SocialMediaLinks.vue +1 -1
- package/src/components/StatusPage/StatusPage.mdx +10 -1
- package/src/components/StatusPage/StatusPage.stories.ts +161 -0
- package/src/components/StatusPage/StatusPage.vue +29 -5
- package/src/components/StatusPage/accessibilite/Accessibility.mdx +24 -5
- package/src/components/StatusPage/tests/StatusPage.a11y.spec.ts +23 -0
- package/src/components/StatusPage/tests/StatusPage.spec.ts +25 -0
- package/src/components/StatusPage/tests/__snapshots__/StatusPage.spec.ts.snap +24 -14
- 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/SubHeader/tests/SubHeader.a11y.spec.ts +20 -0
- package/src/components/SyAlert/SyAlert.vue +22 -20
- package/src/components/SyAlert/accessibilite/Accessibility.mdx +79 -9
- package/src/components/SyAlert/tests/SyAlert.a11y.spec.ts +23 -0
- 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.a11y.test.ts +149 -0
- package/src/components/SyHeading/SyHeading.test.ts +115 -0
- package/src/components/SyHeading/SyHeading.vue +20 -0
- package/src/components/SyTextArea/accessibilite/Accessibility.mdx +80 -8
- package/src/components/SyTextArea/tests/SyTextArea.a11y.spec.ts +151 -0
- package/src/components/TableToolbar/tests/__snapshots__/TableToolbar.spec.ts.snap +96 -30
- 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/ToolbarContainer/tests/ToolbarContainer.a11y.spec.ts +126 -0
- package/src/components/UploadWorkflow/UploadWorkflow.stories.ts +11 -11
- package/src/components/UploadWorkflow/UploadWorkflow.vue +30 -13
- 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 +7 -25
- package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +146 -123
- 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 +2 -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/useFilterable/useFilterable.spec.ts +52 -2
- package/src/composables/useFilterable/useFilterable.ts +7 -1
- package/src/composables/useFormFieldErrorHandling.ts +11 -2
- package/src/designTokens/tokens/amelipro/apLightTheme.ts +27 -15
- package/src/designTokens/tokens/amelipro/apSemantic.ts +21 -15
- package/src/designTokens/tokens/cnam/cnamContextual.ts +6 -1
- 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/main.ts +2 -0
- 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/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/dist/main-CWniLr0s.js +0 -36919
|
@@ -42,8 +42,12 @@ const meta = {
|
|
|
42
42
|
detail: `{
|
|
43
43
|
optionalDocument: 'Document facultatif',
|
|
44
44
|
see: 'Voir',
|
|
45
|
+
import: 'Importer',
|
|
45
46
|
delete: 'Supprimer',
|
|
46
47
|
uploading: 'En cours',
|
|
48
|
+
importLabel: (title: string) => string,
|
|
49
|
+
seeLabel: (title: string) => string,
|
|
50
|
+
deleteLabel: (title: string) => string,
|
|
47
51
|
success: 'Téléchargé',
|
|
48
52
|
error: 'Erreur',
|
|
49
53
|
errorOccurred: 'Une erreur est survenue pendant le téléchargement.',
|
|
@@ -157,6 +161,44 @@ const meta = {
|
|
|
157
161
|
},
|
|
158
162
|
},
|
|
159
163
|
},
|
|
164
|
+
'seeLabel': {
|
|
165
|
+
description: 'Label du bouton de prévisualisation',
|
|
166
|
+
control: 'text',
|
|
167
|
+
table: {
|
|
168
|
+
category: 'props',
|
|
169
|
+
type: {
|
|
170
|
+
summary: 'string',
|
|
171
|
+
},
|
|
172
|
+
defaultValue: {
|
|
173
|
+
summary: 'Voir le fichier',
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
'deleteLabel': {
|
|
178
|
+
description: 'Label du bouton de suppression',
|
|
179
|
+
control: 'text',
|
|
180
|
+
table: {
|
|
181
|
+
category: 'props',
|
|
182
|
+
type: { summary: 'string',
|
|
183
|
+
},
|
|
184
|
+
defaultValue: {
|
|
185
|
+
summary: 'Supprimer le fichier',
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
},
|
|
189
|
+
'importLabel': {
|
|
190
|
+
description: 'Label du bouton d\'upload',
|
|
191
|
+
control: 'text',
|
|
192
|
+
table: {
|
|
193
|
+
category: 'props',
|
|
194
|
+
type: {
|
|
195
|
+
summary: 'string',
|
|
196
|
+
},
|
|
197
|
+
defaultValue: {
|
|
198
|
+
summary: 'Importer le fichier',
|
|
199
|
+
},
|
|
200
|
+
},
|
|
201
|
+
},
|
|
160
202
|
},
|
|
161
203
|
parameters: {
|
|
162
204
|
controls: {
|
|
@@ -193,6 +235,9 @@ export const Default: Story = {
|
|
|
193
235
|
onPreview: fn(),
|
|
194
236
|
},
|
|
195
237
|
parameters: {
|
|
238
|
+
a11y: {
|
|
239
|
+
disable: false,
|
|
240
|
+
},
|
|
196
241
|
sourceCode: [
|
|
197
242
|
{
|
|
198
243
|
name: 'Template',
|
|
@@ -263,7 +308,7 @@ export const States: Story = {
|
|
|
263
308
|
},
|
|
264
309
|
parameters: {
|
|
265
310
|
a11y: {
|
|
266
|
-
disable:
|
|
311
|
+
disable: false,
|
|
267
312
|
},
|
|
268
313
|
sourceCode: [
|
|
269
314
|
{
|
|
@@ -335,6 +380,9 @@ export const OptionalDocument: Story = {
|
|
|
335
380
|
onPreview: fn(),
|
|
336
381
|
},
|
|
337
382
|
parameters: {
|
|
383
|
+
a11y: {
|
|
384
|
+
disable: false,
|
|
385
|
+
},
|
|
338
386
|
sourceCode: [
|
|
339
387
|
{
|
|
340
388
|
name: 'Template',
|
|
@@ -411,6 +459,9 @@ export const Actions: Story = {
|
|
|
411
459
|
onPreview: fn(),
|
|
412
460
|
},
|
|
413
461
|
parameters: {
|
|
462
|
+
a11y: {
|
|
463
|
+
disable: false,
|
|
464
|
+
},
|
|
414
465
|
sourceCode: [
|
|
415
466
|
{
|
|
416
467
|
name: 'Template',
|
|
@@ -508,6 +559,9 @@ export const Customization: Story = {
|
|
|
508
559
|
`,
|
|
509
560
|
}),
|
|
510
561
|
parameters: {
|
|
562
|
+
a11y: {
|
|
563
|
+
disable: false,
|
|
564
|
+
},
|
|
511
565
|
sourceCode: [
|
|
512
566
|
{
|
|
513
567
|
name: 'Template',
|
|
@@ -32,6 +32,9 @@
|
|
|
32
32
|
showPreviewBtn?: boolean
|
|
33
33
|
tag?: string
|
|
34
34
|
locales?: typeof defaultLocales
|
|
35
|
+
seeLabel?: string
|
|
36
|
+
deleteLabel?: string
|
|
37
|
+
importLabel?: string
|
|
35
38
|
}>(), {
|
|
36
39
|
fileName: undefined,
|
|
37
40
|
message: undefined,
|
|
@@ -43,6 +46,9 @@
|
|
|
43
46
|
showPreviewBtn: false,
|
|
44
47
|
tag: 'div',
|
|
45
48
|
locales: () => defaultLocales,
|
|
49
|
+
seeLabel: defaultLocales.see,
|
|
50
|
+
deleteLabel: defaultLocales.delete,
|
|
51
|
+
importLabel: defaultLocales.import,
|
|
46
52
|
})
|
|
47
53
|
|
|
48
54
|
defineSlots<{
|
|
@@ -118,10 +124,12 @@
|
|
|
118
124
|
{{ message ?? locales.optionalDocument }}
|
|
119
125
|
</div>
|
|
120
126
|
<div
|
|
121
|
-
v-if="state === 'error'"
|
|
122
127
|
class="file-item__error-message text-error"
|
|
128
|
+
role="status"
|
|
123
129
|
>
|
|
124
|
-
|
|
130
|
+
<div v-if="state === 'error'">
|
|
131
|
+
{{ locales.error }}
|
|
132
|
+
</div>
|
|
125
133
|
</div>
|
|
126
134
|
</div>
|
|
127
135
|
</div>
|
|
@@ -130,9 +138,10 @@
|
|
|
130
138
|
v-if="(state === 'initial' || state == 'error') && showUploadBtn"
|
|
131
139
|
class="file-item__action file-item__action-upload text-primary"
|
|
132
140
|
variant="text"
|
|
141
|
+
:aria-label="`${locales.import} ${title}`"
|
|
133
142
|
@click="$emit('upload', itemId)"
|
|
134
143
|
>
|
|
135
|
-
<span>
|
|
144
|
+
<span>{{ importLabel }}</span>
|
|
136
145
|
<template #prepend>
|
|
137
146
|
<SyIcon
|
|
138
147
|
color="primary"
|
|
@@ -145,9 +154,10 @@
|
|
|
145
154
|
v-if="state === 'success' && showPreviewBtn"
|
|
146
155
|
class="file-item__action file-item__action-preview text-primary"
|
|
147
156
|
variant="text"
|
|
157
|
+
:aria-label="`${locales.see} ${fileName}`"
|
|
148
158
|
@click="$emit('preview', itemId)"
|
|
149
159
|
>
|
|
150
|
-
<span>{{
|
|
160
|
+
<span>{{ seeLabel }}</span>
|
|
151
161
|
<template #prepend>
|
|
152
162
|
<SyIcon
|
|
153
163
|
color="primary"
|
|
@@ -160,9 +170,10 @@
|
|
|
160
170
|
v-if="state === 'success' && showDeleteBtn"
|
|
161
171
|
class="file-item__action file-item__action-delete text-error"
|
|
162
172
|
variant="text"
|
|
173
|
+
:aria-label="`${locales.delete} ${fileName}`"
|
|
163
174
|
@click="$emit('delete', itemId)"
|
|
164
175
|
>
|
|
165
|
-
<span>{{
|
|
176
|
+
<span>{{ deleteLabel }}</span>
|
|
166
177
|
<template #prepend>
|
|
167
178
|
<SyIcon
|
|
168
179
|
color="error"
|
|
@@ -188,6 +199,7 @@
|
|
|
188
199
|
height="7"
|
|
189
200
|
color="primary"
|
|
190
201
|
rounded="true"
|
|
202
|
+
:aria-label="title ? `Chargement de ${title}` : 'Chargement en cours'"
|
|
191
203
|
/>
|
|
192
204
|
</div>
|
|
193
205
|
</component>
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export const locales = {
|
|
2
2
|
optionalDocument: 'Document facultatif',
|
|
3
|
-
see: 'Voir',
|
|
4
|
-
delete: 'Supprimer',
|
|
3
|
+
see: 'Voir le fichier',
|
|
4
|
+
delete: 'Supprimer le fichier',
|
|
5
|
+
import: 'Importer le fichier',
|
|
5
6
|
uploading: 'En cours',
|
|
6
7
|
success: 'Téléchargé',
|
|
7
8
|
error: 'Erreur',
|
|
@@ -1,12 +1,63 @@
|
|
|
1
|
-
import { Meta,
|
|
1
|
+
import { Meta, Primary } from '@storybook/addon-docs';
|
|
2
2
|
import * as Stories from '../FileList.stories.ts';
|
|
3
|
-
import '@/
|
|
3
|
+
import AccessibilityIcon from '@/common/imgs/accessibility-svgrepo-com.svg';
|
|
4
|
+
import {
|
|
5
|
+
AccessibilityGuideLayout,
|
|
6
|
+
CriteriaSection,
|
|
7
|
+
CriteriaCard,
|
|
8
|
+
DemoSection,
|
|
9
|
+
BestPracticesSection,
|
|
10
|
+
ResourcesSection,
|
|
11
|
+
} from '@/stories/accessibility/AccessibilityGuideLayout.mdx';
|
|
4
12
|
|
|
5
13
|
<Meta of={Stories} />
|
|
6
14
|
|
|
7
|
-
<
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
15
|
+
<AccessibilityGuideLayout
|
|
16
|
+
componentName="FileList"
|
|
17
|
+
iconSrc={AccessibilityIcon}
|
|
18
|
+
>
|
|
19
|
+
<CriteriaSection>
|
|
20
|
+
<CriteriaCard icon="🔍" title="Structure sémantique">
|
|
21
|
+
<ul>
|
|
22
|
+
<li><strong>Formattage sous forme de liste </strong> : Utilisation de balises HTML sémantiques pour structurer les éléments de la liste de fichiers.</li>
|
|
23
|
+
<li><strong>Boutons</strong> : Utilisation de <code><button></code> pour les actions associées à chaque fichier, avec des étiquettes claires qui reprennent l'action et le nom du fichier.</li>
|
|
24
|
+
<li><strong>Aria-label</strong>: On utilise les méthodes <code>importAriaLabel()</code> pour générer les etiquettes ARIA des champs avec le titre et <code>seeAriaLabel()</code> et <code>deleteAriaLabel()</code> pour les étiquettes ARIA avec le nom du fichier.</li>
|
|
25
|
+
<li><strong>SeeLabel, ImportLabel, DeleteLabel </strong> : Utilisation de ces propriétés pour fournir des étiquettes claires et descriptives pour les actions associées à chaque fichier.</li>
|
|
11
26
|
|
|
12
|
-
|
|
27
|
+
</ul>
|
|
28
|
+
</CriteriaCard>
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
<CriteriaCard icon="⌨️" title="Navigation clavier complète">
|
|
32
|
+
<ul>
|
|
33
|
+
<li><strong>Navigation entre les éléments</strong> : Utilisation des touches Tab et Shift+Tab pour naviguer entre les fichiers et les actions associées.</li>
|
|
34
|
+
<li><strong>Activation des actions</strong> : Utilisation de la touche Entrée ou Espace pour activer les boutons d'action (télécharger, supprimer, etc.).</li>
|
|
35
|
+
</ul>
|
|
36
|
+
</CriteriaCard>
|
|
37
|
+
|
|
38
|
+
<CriteriaCard icon="📱" title="États et retours d'information">
|
|
39
|
+
<ul>
|
|
40
|
+
<li><strong>Indication de l'état de téléchargement</strong> : Utilisation d'icônes ou de messages pour indiquer si un fichier est en cours de téléchargement, téléchargé avec succès ou en échec.</li>
|
|
41
|
+
<li><strong>Indication de l'état d'erreur</strong> : Affichage d'un message d'erreur dans un élément avec le rôle <code>status</code> pour informer les utilisateurs de l'erreur.</li>
|
|
42
|
+
</ul>
|
|
43
|
+
</CriteriaCard>
|
|
44
|
+
|
|
45
|
+
<DemoSection componentName="FileList">
|
|
46
|
+
<Primary />
|
|
47
|
+
</DemoSection>
|
|
48
|
+
|
|
49
|
+
<BestPracticesSection>
|
|
50
|
+
<ul>
|
|
51
|
+
<li><strong>Labels clairs et descriptifs</strong> : Assurez-vous que les titres des fichiers requis sont assez descriptifs pour que les utilisateurs comprennent facilement ce qui est attendu d'eux.</li>
|
|
52
|
+
<li><strong>Progression</strong> : Fournissez une indication de la progression du téléchargement pour les fichiers volumineux.</li>
|
|
53
|
+
</ul>
|
|
54
|
+
</BestPracticesSection>
|
|
55
|
+
</CriteriaSection>
|
|
56
|
+
<ResourcesSection>
|
|
57
|
+
<ul>
|
|
58
|
+
<li><a href="https://developer.mozilla.org/fr/docs/Web/HTML/Reference/Elements/button">Documentation MDN sur les boutons</a></li>
|
|
59
|
+
<li><a href="https://developer.mozilla.org/fr/docs/Web/Accessibility/ARIA/Reference/Roles/status_role">Documentation MDN sur le rôle ARIA "status"</a></li>
|
|
60
|
+
<li><a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Reference/Roles/status_role">MDN documentation on ARIA "status" role</a></li>
|
|
61
|
+
</ul>
|
|
62
|
+
</ResourcesSection>
|
|
63
|
+
</AccessibilityGuideLayout>
|
|
@@ -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)
|
|
@@ -41,6 +43,9 @@
|
|
|
41
43
|
const isDarkMode = useTheme().current.value.dark
|
|
42
44
|
|
|
43
45
|
function openFileDialog() {
|
|
46
|
+
if (props.disabled) {
|
|
47
|
+
return
|
|
48
|
+
}
|
|
44
49
|
fileInput.value?.click()
|
|
45
50
|
}
|
|
46
51
|
|
|
@@ -69,7 +74,7 @@
|
|
|
69
74
|
files = files.slice(0, 1)
|
|
70
75
|
}
|
|
71
76
|
const { errors, validFiles } = validateFiles(
|
|
72
|
-
files, props.fileSizeMax, props.allowedExtensions, props.fileSizeUnits,
|
|
77
|
+
files, props.fileSizeMax, props.allowedExtensions, props.fileSizeUnits, props.locales,
|
|
73
78
|
)
|
|
74
79
|
|
|
75
80
|
if (errors.length) {
|
|
@@ -98,61 +103,80 @@
|
|
|
98
103
|
;(e.target as HTMLInputElement).value = ''
|
|
99
104
|
}
|
|
100
105
|
</script>
|
|
101
|
-
|
|
106
|
+
|
|
102
107
|
<template>
|
|
103
|
-
<
|
|
104
|
-
|
|
105
|
-
:for="id"
|
|
106
|
-
:class="[
|
|
107
|
-
{
|
|
108
|
-
dragover: dragover,
|
|
109
|
-
'sy-file-upload--disabled': disabled,
|
|
110
|
-
'dark-mode': isDarkMode,
|
|
111
|
-
},
|
|
112
|
-
]"
|
|
113
|
-
:style="widthStyles"
|
|
114
|
-
class="sy-file-upload d-block pa-4"
|
|
115
|
-
@dragover.prevent="dragover = true"
|
|
116
|
-
@dragleave="dragover = false"
|
|
108
|
+
<div
|
|
109
|
+
class="sy-file-upload-wrapper"
|
|
117
110
|
>
|
|
118
111
|
<input
|
|
119
112
|
:id="id"
|
|
120
113
|
ref="fileInput"
|
|
121
114
|
type="file"
|
|
122
|
-
|
|
123
|
-
|
|
115
|
+
tabindex="-1"
|
|
116
|
+
aria-hidden="true"
|
|
117
|
+
:disabled="disabled ? true : undefined"
|
|
118
|
+
:multiple="multiple ? true : undefined"
|
|
124
119
|
:accept="allowedExtensions.map(el=>`.${el}`).join(', ')"
|
|
125
120
|
class="sy-file-upload-input"
|
|
126
121
|
@change="onFileChange"
|
|
127
122
|
>
|
|
128
|
-
<
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
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"
|
|
152
|
+
:locales="locales"
|
|
138
153
|
>
|
|
139
|
-
<
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
154
|
+
<template
|
|
155
|
+
v-for="(_, slotName) in $slots"
|
|
156
|
+
#[slotName]="slotProps"
|
|
157
|
+
>
|
|
158
|
+
<slot
|
|
159
|
+
:name="slotName"
|
|
160
|
+
v-bind="slotProps || {}"
|
|
161
|
+
/>
|
|
162
|
+
</template>
|
|
163
|
+
</FileUploadContent>
|
|
164
|
+
</slot>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
147
167
|
</template>
|
|
148
168
|
|
|
149
169
|
<style lang="scss" scoped>
|
|
150
170
|
@use '@/assets/tokens';
|
|
151
171
|
|
|
172
|
+
.sy-file-upload-wrapper {
|
|
173
|
+
display: contents;
|
|
174
|
+
}
|
|
175
|
+
|
|
152
176
|
.sy-file-upload {
|
|
153
177
|
cursor: pointer;
|
|
154
178
|
position: relative;
|
|
155
|
-
border: 1px dashed tokens.$colors-border-accent;
|
|
179
|
+
border: 1px dashed tokens.$colors-border-accent-primary;
|
|
156
180
|
border-radius: tokens.$radius-rounded-lg;
|
|
157
181
|
transition: background 0.25s;
|
|
158
182
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { calcHumanFileSize } from '@/utils/calcHumanFileSize'
|
|
3
|
-
import { locales } from './locales'
|
|
3
|
+
import { locales as defaultLocales } from './locales'
|
|
4
4
|
import { mdiCloudUpload } from '@mdi/js'
|
|
5
5
|
import { computed } from 'vue'
|
|
6
6
|
import SyIcon from '@/components/Customs/SyIcon/SyIcon.vue'
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
fileSizeUnits: Array<string>
|
|
11
11
|
fileSizeMax: number
|
|
12
12
|
multiple: boolean
|
|
13
|
+
locales: typeof defaultLocales
|
|
13
14
|
}>()
|
|
14
15
|
|
|
15
16
|
export interface FileUploadContentSlots {
|
|
@@ -60,7 +61,7 @@
|
|
|
60
61
|
</span>
|
|
61
62
|
|
|
62
63
|
<span
|
|
63
|
-
class="sy-file-upload-btn bg-primary text-white
|
|
64
|
+
class="sy-file-upload-btn bg-primary text-white"
|
|
64
65
|
>
|
|
65
66
|
<slot name="button-text">
|
|
66
67
|
{{ locales.chooseFile(multiple) }}
|
|
@@ -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
|
},
|
|
@@ -268,6 +268,53 @@ describe('FileUpload', () => {
|
|
|
268
268
|
expect(wrapper.emitted('error')).toBeFalsy()
|
|
269
269
|
})
|
|
270
270
|
|
|
271
|
+
it('accepts a file whose extension is uppercase (case-insensitive check)', async () => {
|
|
272
|
+
const wrapper = mount(FileUpload, {
|
|
273
|
+
props: {
|
|
274
|
+
modelValue: [],
|
|
275
|
+
allowedExtensions: ['png'],
|
|
276
|
+
},
|
|
277
|
+
})
|
|
278
|
+
|
|
279
|
+
const file: File = new File([''], 'image.PNG', { type: 'image/png' })
|
|
280
|
+
|
|
281
|
+
await wrapper.find('.sy-file-upload').trigger('drop', {
|
|
282
|
+
dataTransfer: { files: [file] },
|
|
283
|
+
})
|
|
284
|
+
|
|
285
|
+
expect(wrapper.emitted('error')).toBeFalsy()
|
|
286
|
+
expect(wrapper.emitted('update:modelValue')?.[0]).toEqual([[file]])
|
|
287
|
+
})
|
|
288
|
+
|
|
289
|
+
it('uses custom locales error message when provided', async () => {
|
|
290
|
+
const customLocales = {
|
|
291
|
+
or: 'Ou',
|
|
292
|
+
chooseFile: (multiple: boolean) => multiple ? 'Choisir des fichiers' : 'Choisir un fichier',
|
|
293
|
+
infoText: (max: string, ext: string[]) => `Taille max. : ${max}. Formats : ${ext.join(', ')}`,
|
|
294
|
+
fileSizeUnits: ['o', 'Ko', 'Mo', 'Go', 'To'],
|
|
295
|
+
dropFilesHere: (multiple: boolean) => multiple ? 'Déposer vos fichiers ici' : 'Déposer votre fichier ici',
|
|
296
|
+
errorSize: (fileName: string, max: string) => `Fichier ${fileName} trop lourd. Max : ${max}`,
|
|
297
|
+
errorExtension: () => `Message erreur custom !`,
|
|
298
|
+
fileUploadTitle: '',
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
const wrapper = mount(FileUpload, {
|
|
302
|
+
props: {
|
|
303
|
+
modelValue: [],
|
|
304
|
+
allowedExtensions: ['pdf'],
|
|
305
|
+
locales: customLocales,
|
|
306
|
+
},
|
|
307
|
+
})
|
|
308
|
+
|
|
309
|
+
const file: File = new File([''], 'image.PNG', { type: 'image/png' })
|
|
310
|
+
|
|
311
|
+
await wrapper.find('.sy-file-upload').trigger('drop', {
|
|
312
|
+
dataTransfer: { files: [file] },
|
|
313
|
+
})
|
|
314
|
+
|
|
315
|
+
expect(wrapper.emitted('error')?.[0]).toEqual([['Message erreur custom !']])
|
|
316
|
+
})
|
|
317
|
+
|
|
271
318
|
it('add the new files to the existing ones when the input changes in multiple mode', async () => {
|
|
272
319
|
const file1 = new File([''], 'filename1.jpg', { type: 'image/jpeg' })
|
|
273
320
|
const file2 = new File([''], 'filename2.jpg', { type: 'image/jpeg' })
|