@cnamts/synapse 1.0.19 → 1.0.21
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-CeVuSfJ9.js → DateFilter-uN8OURoP.js} +1 -1
- package/dist/{NumberFilter-C8PAu_sw.js → NumberFilter-sm1dQNQi.js} +1 -1
- package/dist/{PeriodFilter-UMUaxx3d.js → PeriodFilter-Cklsxnh9.js} +1 -1
- package/dist/{SelectFilter-CqZl8CYt.js → SelectFilter-CWefj27Z.js} +1 -1
- package/dist/{TextFilter-D_RhhNOh.js → TextFilter-Ddyj885L.js} +1 -1
- package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +4 -4
- package/dist/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.d.ts +17 -7
- package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +4 -4
- package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +4 -4
- package/dist/components/Customs/Selects/SyAutocomplete/SyAutocomplete.d.ts +2416 -0
- package/dist/components/Customs/Selects/SyAutocomplete/types.d.ts +5 -0
- package/dist/components/Customs/Selects/SyAutocomplete/utils/ariaManager.d.ts +14 -0
- package/dist/components/Customs/Selects/SyAutocomplete/utils/useItemUtils.d.ts +16 -0
- package/dist/components/Customs/Selects/SyAutocomplete/utils/useKeyboardHandler.d.ts +28 -0
- package/dist/components/Customs/Selects/SyAutocomplete/utils/useSelectionLogic.d.ts +12 -0
- package/dist/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.d.ts +2 -0
- package/dist/components/Customs/SyCheckBoxGroup/SyCheckBoxGroup.d.ts +160 -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 +1545 -2
- package/dist/components/Customs/SyIcon/SyIcon.d.ts +2 -1
- package/dist/components/Customs/SyRadioGroup/SyRadioGroup.d.ts +1495 -2
- package/dist/components/DatePicker/composables/useDateSelection.d.ts +1 -0
- package/dist/components/DeclarationAccessibilityPage/DeclarationAccessibilityPage.d.ts +60 -0
- package/dist/components/ErrorPage/ErrorPage.d.ts +1 -12
- package/dist/components/ErrorPage/locales.d.ts +18 -3
- package/dist/components/FileUpload/FileUpload.d.ts +2 -0
- package/dist/components/MaintenancePage/locales.d.ts +18 -2
- package/dist/components/NotFoundPage/locales.d.ts +20 -4
- package/dist/components/PaginatedTable/PaginatedTable.d.ts +1 -1
- package/dist/components/PaginatedTable/Pagination.d.ts +17 -0
- package/dist/components/StatusPage/StatusPage.d.ts +39 -0
- package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -5
- package/dist/components/Tables/SyTable/SyTable.d.ts +5 -5
- package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +13 -3
- package/dist/components/index.d.ts +4 -0
- package/dist/components/types.d.ts +15 -0
- package/dist/composables/useFormFieldErrorHandling.d.ts +31 -0
- package/dist/design-system-v3.js +126 -122
- package/dist/design-system-v3.umd.cjs +325 -314
- package/dist/{main-B39UVv5p.js → main-CWniLr0s.js} +15837 -14587
- package/dist/modules.d.ts +6 -0
- package/dist/style.css +1 -1
- package/dist/utils/theme/index.d.ts +6 -0
- package/package.json +12 -10
- package/src/assets/amelipro/icons.ts +166 -153
- package/src/components/Accordion/Accordion.mdx +4 -1
- package/src/components/Accordion/{Accessibilite/AccessibilityGuide.mdx → accessibilite/Accessibility.mdx} +2 -2
- package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.stories.ts +73 -14
- package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.vue +119 -27
- package/src/components/Amelipro/AmeliproClickableTile/tests/AmeliproClickableTile.a11y.spec.ts +304 -0
- package/src/components/Amelipro/AmeliproClickableTile/tests/AmeliproClickableTile.spec.ts +435 -9
- package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +60 -0
- package/src/components/Amelipro/AmeliproIcon/__tests__/AmeliproIcon.spec.ts +1 -1
- package/src/components/Amelipro/AmeliproIcon/iconList.ts +2 -0
- package/src/components/BackBtn/BackBtn.vue +5 -4
- package/src/components/BackBtn/accessibilite/Accessibility.mdx +15 -0
- package/src/components/BackToTopBtn/BackToTopBtn.vue +6 -3
- package/src/components/BackToTopBtn/accessibilite/Accessibility.mdx +15 -0
- package/src/components/Captcha/Captcha.vue +5 -1
- package/src/components/Captcha/CaptchaAlert.vue +9 -7
- package/src/components/Captcha/accessibilite/Accessibility.mdx +10 -0
- package/src/components/ChipList/accessibilite/Accessibility.mdx +15 -0
- package/src/components/CollapsibleList/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +8 -6
- package/src/components/Common/IconSlot/IconSlot.vue +1 -1
- package/src/components/ContextualMenu/ContextualMenu.stories.ts +0 -3
- package/src/components/ContextualMenu/accessibilite/Accessibility.mdx +71 -0
- package/src/components/CookieBanner/CookieBanner.stories.ts +11 -20
- package/src/components/CookieBanner/CookieBanner.vue +20 -5
- package/src/components/CookieBanner/accessibilite/Accessibility.mdx +71 -0
- package/src/components/CookieBanner/tests/CookieBanner.spec.ts +48 -4
- package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +5 -4
- package/src/components/CopyBtn/CopyBtn.vue +6 -3
- package/src/components/CopyBtn/accessibilite/Accessibility.mdx +15 -0
- package/src/components/Customs/Selects/SelectBtnField/accessibilite/Accessibility.mdx +15 -0
- package/src/components/Customs/Selects/SelectOverview.mdx +112 -1
- package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.mdx +52 -0
- package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.stories.ts +979 -0
- package/src/components/Customs/Selects/SyAutocomplete/SyAutocomplete.vue +653 -0
- package/src/components/Customs/Selects/{SySelect → SyAutocomplete/accessibilite}/Accessibilite.stories.ts +7 -38
- package/src/components/Customs/Selects/{SySelect/Accessibilite.mdx → SyAutocomplete/accessibilite/Accessibility.mdx} +15 -20
- package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.a11y.spec.ts +72 -0
- package/src/components/Customs/Selects/SyAutocomplete/tests/SyAutocomplete.spec.ts +345 -0
- package/src/components/Customs/Selects/SyAutocomplete/types.ts +7 -0
- package/src/components/Customs/Selects/SyAutocomplete/utils/ariaManager.ts +180 -0
- package/src/components/Customs/Selects/SyAutocomplete/utils/useItemUtils.ts +46 -0
- package/src/components/Customs/Selects/SyAutocomplete/utils/useKeyboardHandler.ts +107 -0
- package/src/components/Customs/Selects/SyAutocomplete/utils/useSelectionLogic.ts +74 -0
- package/src/components/Customs/Selects/SyInputSelect/SyInputSelect.vue +13 -9
- package/src/components/Customs/Selects/SyInputSelect/accessibilite/Accessibility.mdx +12 -0
- package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +43 -34
- package/src/components/Customs/Selects/SySelect/SySelect.vue +19 -2
- package/src/components/Customs/Selects/SySelect/accessibilite/Accessibility.mdx +274 -0
- package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +21 -16
- 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 +16 -27
- package/src/components/Customs/SyCheckbox/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +3 -3
- package/src/components/Customs/SyForm/SyForm.a11y.spec.ts +1 -1
- package/src/components/Customs/SyForm/accessibilite/Accessibility.mdx +10 -0
- package/src/components/Customs/SyIcon/SyIcon.mdx +4 -1
- package/src/components/Customs/SyIcon/SyIcon.vue +4 -3
- package/src/components/Customs/SyIcon/{Accessibilite.stories.ts → accessibilite/Accessibilite.stories.ts} +3 -3
- package/src/components/Customs/SyIcon/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +2 -2
- package/src/components/Customs/SyPagination/SyPagination.mdx +4 -2
- package/src/components/Customs/SyPagination/accessibilite/Accessibility.mdx +10 -0
- package/src/components/Customs/SyRadioGroup/SyRadioGroup.vue +16 -43
- package/src/components/Customs/SyRadioGroup/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +2 -2
- package/src/components/Customs/SyTabs/SyTabs.mdx +4 -2
- package/src/components/Customs/SyTabs/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +2 -2
- package/src/components/Customs/SyTextField/SyTextField.mdx +1 -2
- package/src/components/Customs/SyTextField/SyTextField.vue +13 -0
- package/src/components/Customs/SyTextField/accessibilite/Accessibility.mdx +15 -0
- package/src/components/DataList/accessibilite/Accessibility.mdx +15 -0
- package/src/components/DataListGroup/accessibilite/Accessibility.mdx +14 -0
- package/src/components/DatePicker/Accessibilite.mdx +1 -1
- package/src/components/DatePicker/Accessibilite.stories.ts +1 -1
- package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +7 -4
- package/src/components/DatePicker/CalendarMode/DatePicker.vue +49 -13
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +43 -2
- package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts +297 -0
- package/src/components/DatePicker/DateTextInput/DateTextInput.vue +48 -21
- package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +98 -0
- package/src/components/DatePicker/composables/useDateSelection.ts +5 -0
- package/src/components/DatePicker/docExamples/BidirectionalComplexValidation.vue +273 -0
- package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +4 -4
- package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +10 -0
- 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/DiacriticPicker/accessibilite/Accessibility.mdx +10 -0
- package/src/components/DialogBox/accessibilite/Accessibility.mdx +15 -0
- package/src/components/DownloadBtn/DownloadBtn.vue +5 -4
- package/src/components/DownloadBtn/accessibilite/Accessibility.mdx +15 -0
- package/src/components/ErrorPage/ErrorPage.mdx +6 -16
- package/src/components/ErrorPage/ErrorPage.stories.ts +16 -87
- package/src/components/ErrorPage/ErrorPage.vue +38 -125
- package/src/components/ErrorPage/accessibilite/Accessibility.mdx +77 -0
- 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 +8 -266
- package/src/components/ExternalLinks/accessibilite/Accessibility.mdx +15 -0
- package/src/components/FileList/UploadItem/UploadItem.vue +25 -20
- package/src/components/FileList/accessibilite/Accessibility.mdx +12 -0
- package/src/components/FilePreview/accessibilite/Accessibility.mdx +12 -0
- package/src/components/FileUpload/FileUpload.vue +5 -0
- package/src/components/FileUpload/FileUploadContent.vue +5 -4
- package/src/components/FileUpload/accessibilite/Accessibility.mdx +12 -0
- package/src/components/FilterInline/FilterInline.vue +5 -4
- package/src/components/FilterInline/accessibilite/Accessibility.mdx +12 -0
- package/src/components/FilterSideBar/accessibilite/Accessibility.mdx +15 -0
- package/src/components/FooterBar/FooterBar.stories.ts +18 -14
- package/src/components/FooterBar/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +3 -4
- package/src/components/FooterBar/defaultSocialMediaLinks.ts +6 -4
- package/src/components/FranceConnectBtn/FranceConnectBtn.vue +6 -5
- package/src/components/FranceConnectBtn/accessibilite/Accessibility.mdx +15 -0
- package/src/components/FranceConnectBtn/tests/__snapshots__/FranceConnectBtn.spec.ts.snap +3 -0
- package/src/components/HeaderBar/HeaderBurgerMenu/accessibilite/Accessibility.mdx +15 -0
- package/src/components/HeaderBar/accessibilite/Accessibility.mdx +15 -0
- package/src/components/HeaderBar/{Usages.mdx → usages/Usages.mdx} +2 -2
- package/src/components/HeaderLoading/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +9 -5
- package/src/components/HeaderToolbar/accessibilite/Accessibility.mdx +15 -0
- package/src/components/LangBtn/LangBtn.vue +5 -4
- package/src/components/LangBtn/accessibilite/Accessibility.mdx +15 -0
- package/src/components/Logo/accessibilite/Accessibility.mdx +17 -0
- package/src/components/LogoBrandSection/accessibilite/Accessibility.mdx +12 -0
- package/src/components/LunarCalendar/accessibilite/Accessibility.mdx +10 -0
- package/src/components/MaintenancePage/MaintenancePage.mdx +1 -1
- package/src/components/MaintenancePage/MaintenancePage.vue +15 -7
- package/src/components/MaintenancePage/accessibilite/Accessibility.mdx +70 -0
- 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 +75 -3
- package/src/components/MaintenancePage/tests/MaintenancePage.spec.ts +42 -2
- package/src/components/MaintenancePage/tests/__snapshots__/MaintenancePage.spec.ts.snap +3 -2
- package/src/components/NirField/accessibilite/Accessibility.mdx +15 -0
- package/src/components/NotFoundPage/NotFoundPage.mdx +1 -1
- package/src/components/NotFoundPage/NotFoundPage.stories.ts +3 -3
- package/src/components/NotFoundPage/NotFoundPage.vue +16 -11
- package/src/components/NotFoundPage/accessibilite/Accessibility.mdx +87 -0
- 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 +168 -4
- package/src/components/NotFoundPage/tests/NotFoundPage.spec.ts +100 -12
- package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +2 -2
- package/src/components/NotificationBar/Notification/Notification.vue +1 -1
- package/src/components/NotificationBar/NotificationBar.mdx +2 -2
- package/src/components/NotificationBar/accessibilite/Accessibility.mdx +75 -0
- package/src/components/PageContainer/{AccessibilityGuide.mdx → accessibilite/Accessibility.mdx} +7 -4
- package/src/components/PageContainer/tests/PageContainer.a11y.spec.ts +14 -7
- package/src/components/PaginatedTable/PaginatedTable.vue +27 -47
- package/src/components/PaginatedTable/Pagination.vue +93 -0
- package/src/components/PaginatedTable/accessibilite/Accessibility.mdx +12 -0
- package/src/components/PasswordField/PasswordField.vue +2 -1
- package/src/components/PasswordField/accessibilite/Accessibility.mdx +108 -0
- package/src/components/PeriodField/accessibilite/Accessibility.mdx +12 -0
- package/src/components/PhoneField/PhoneField.stories.ts +46 -38
- package/src/components/PhoneField/accessibilite/Accessibility.mdx +15 -0
- package/src/components/RangeField/accessibilite/Accessibility.mdx +15 -0
- package/src/components/RatingPicker/accessibilite/Accessibility.mdx +15 -0
- package/src/components/SearchListField/SearchListField.vue +6 -3
- package/src/components/SearchListField/accessibilite/Accessibility.mdx +15 -0
- package/src/components/SkipLink/{Accessibilite.mdx → accessibilite/Accessibility.mdx} +7 -4
- 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 +9 -1
- package/src/components/SocialMediaLinks/accessibilite/Accessibility.mdx +67 -0
- 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 +22 -0
- package/src/components/StatusPage/StatusPage.stories.ts +193 -0
- package/src/components/StatusPage/StatusPage.vue +145 -0
- package/src/components/StatusPage/accessibilite/Accessibility.mdx +81 -0
- package/src/components/StatusPage/tests/StatusPage.a11y.spec.ts +29 -0
- package/src/components/StatusPage/tests/StatusPage.spec.ts +50 -0
- package/src/components/StatusPage/tests/__snapshots__/StatusPage.spec.ts.snap +270 -0
- package/src/components/SubHeader/accessibilite/Accessibility.mdx +15 -0
- package/src/components/SyAlert/SyAlert.vue +6 -6
- package/src/components/SyAlert/accessibilite/Accessibility.mdx +12 -0
- package/src/components/SyTextArea/accessibilite/Accessibility.mdx +10 -0
- package/src/components/TableToolbar/TableToolbar.stories.ts +6 -6
- package/src/components/TableToolbar/TableToolbar.vue +7 -4
- package/src/components/TableToolbar/accessibilite/Accessibility.mdx +12 -0
- package/src/components/TableToolbar/tests/__snapshots__/TableToolbar.spec.ts.snap +0 -5
- package/src/components/Tables/SyServerTable/SyServerTable.mdx +4 -1
- package/src/components/Tables/SyServerTable/accessibilite/Accessibility.mdx +10 -0
- package/src/components/Tables/SyTable/SyTable.mdx +4 -1
- package/src/components/Tables/SyTable/accessibilite/Accessibility.mdx +10 -0
- package/src/components/Tables/common/TableHeader.vue +3 -1
- package/src/components/Tables/common/organizeColumns/OrganizeColumns.vue +18 -14
- package/src/components/ToolbarContainer/ToolbarContainer.mdx +2 -1
- package/src/components/ToolbarContainer/ToolbarContainer.stories.ts +563 -420
- package/src/components/ToolbarContainer/accessibilite/Accessibility.mdx +69 -0
- package/src/components/UploadWorkflow/UploadWorkflow.mdx +11 -1
- package/src/components/UploadWorkflow/UploadWorkflow.stories.ts +107 -3
- package/src/components/UploadWorkflow/UploadWorkflow.vue +35 -24
- package/src/components/UploadWorkflow/accessibilite/Accessibility.mdx +12 -0
- package/src/components/UploadWorkflow/tests/UploadWorkflow.spec.ts +48 -0
- package/src/components/UploadWorkflow/tests/__snapshots__/UploadWorkflow.spec.ts.snap +9 -5
- package/src/components/UploadWorkflow/useFileList.ts +7 -0
- package/src/components/Usages/Usages.vue +3 -2
- package/src/components/UserMenuBtn/UserMenuBtn.vue +7 -5
- package/src/components/UserMenuBtn/accessibilite/Accessibility.mdx +12 -0
- package/src/components/index.ts +5 -0
- package/src/components/types.ts +10 -0
- package/src/composables/rules/tests/useFieldValidation.spec.ts +39 -3
- package/src/composables/rules/useFieldValidation.ts +31 -9
- package/src/composables/useFormFieldErrorHandling.ts +141 -0
- package/src/modules.d.ts +6 -0
- package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +7 -0
- 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/src/components/BackBtn/Accessibilite.mdx +0 -14
- package/src/components/BackBtn/Accessibilite.stories.ts +0 -30
- package/src/components/BackToTopBtn/Accessibilite.mdx +0 -14
- package/src/components/BackToTopBtn/Accessibilite.stories.ts +0 -31
- package/src/components/ChipList/Accessibilite.mdx +0 -14
- package/src/components/ChipList/Accessibilite.stories.ts +0 -31
- package/src/components/CollapsibleList/Accessibilite.stories.ts +0 -29
- package/src/components/ContextualMenu/Accessibilite.mdx +0 -13
- package/src/components/ContextualMenu/Accessibilite.stories.ts +0 -29
- package/src/components/CookieBanner/Accessibilite.mdx +0 -13
- package/src/components/CookieBanner/Accessibilite.stories.ts +0 -30
- package/src/components/CopyBtn/Accessibilite.mdx +0 -13
- package/src/components/CopyBtn/Accessibilite.stories.ts +0 -29
- package/src/components/Customs/Selects/SelectBtnField/Accessibilite.mdx +0 -14
- package/src/components/Customs/Selects/SelectBtnField/Accessibilite.stories.ts +0 -29
- package/src/components/Customs/Selects/SyInputSelect/Accessibilite.mdx +0 -13
- package/src/components/Customs/Selects/SyInputSelect/Accessibilite.stories.ts +0 -25
- package/src/components/Customs/SyPagination/tests/SyPagination.a11y.spec.ts +0 -27
- package/src/components/Customs/SyTabs/tests/SyTabs.a11y.spec.ts +0 -51
- package/src/components/Customs/SyTextField/Accessibilite.mdx +0 -14
- package/src/components/Customs/SyTextField/Accessibilite.stories.ts +0 -34
- package/src/components/DataList/Accessibilite.mdx +0 -13
- package/src/components/DataList/Accessibilite.stories.ts +0 -29
- package/src/components/DataListGroup/Accessibilite.mdx +0 -13
- package/src/components/DataListGroup/Accessibilite.stories.ts +0 -29
- 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/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.a11y.spec.ts +0 -26
- package/src/components/DatePicker/DateTextInput/tests/DateTextInput.a11y.spec.ts +0 -27
- package/src/components/DialogBox/Accessibilite.mdx +0 -14
- package/src/components/DialogBox/Accessibilite.stories.ts +0 -29
- package/src/components/DownloadBtn/Accessibilite.mdx +0 -14
- package/src/components/DownloadBtn/Accessibilite.stories.ts +0 -29
- package/src/components/DownloadBtn/tests/DownloadBtn.a11y.spec.ts +0 -26
- package/src/components/ErrorPage/Accessibilite.mdx +0 -13
- package/src/components/ErrorPage/Accessibilite.stories.ts +0 -36
- package/src/components/ExternalLinks/Accessibilite.mdx +0 -18
- package/src/components/ExternalLinks/Accessibilite.stories.ts +0 -62
- package/src/components/ExternalLinks/tests/ExternalLinks.a11y.spec.ts +0 -39
- package/src/components/FileList/Accessibilite.mdx +0 -13
- package/src/components/FileList/Accessibilite.stories.ts +0 -26
- package/src/components/FilePreview/Accessibilite.mdx +0 -14
- package/src/components/FilePreview/Accessibilite.stories.ts +0 -26
- package/src/components/FileUpload/Accessibilite.mdx +0 -13
- package/src/components/FileUpload/Accessibilite.stories.ts +0 -26
- package/src/components/FilterInline/Accessibilite.mdx +0 -15
- package/src/components/FilterInline/Accessibilite.stories.ts +0 -26
- package/src/components/FilterSideBar/Accessibilite.mdx +0 -13
- package/src/components/FilterSideBar/Accessibilite.stories.ts +0 -30
- package/src/components/FooterBar/Accessibilite.stories.ts +0 -26
- package/src/components/FranceConnectBtn/Accessibilite.mdx +0 -13
- package/src/components/FranceConnectBtn/Accessibilite.stories.ts +0 -30
- package/src/components/HeaderBar/Accessibilite.mdx +0 -13
- package/src/components/HeaderBar/Accessibilite.stories.ts +0 -31
- package/src/components/HeaderBar/HeaderBurgerMenu/Accessibilite.mdx +0 -13
- package/src/components/HeaderBar/HeaderBurgerMenu/Accessibilite.stories.ts +0 -30
- package/src/components/HeaderLoading/Accessibilite.stories.ts +0 -31
- package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.a11y.spec.ts +0 -45
- package/src/components/HeaderToolbar/Accessibilite.mdx +0 -13
- package/src/components/HeaderToolbar/Accessibilite.stories.ts +0 -36
- package/src/components/HeaderToolbar/tests/HeaderToolbar.a11y.spec.ts +0 -25
- package/src/components/LangBtn/Accessibilite.mdx +0 -13
- package/src/components/LangBtn/Accessibilite.stories.ts +0 -32
- package/src/components/Logo/Accessibilite.mdx +0 -13
- package/src/components/Logo/Accessibilite.stories.ts +0 -30
- package/src/components/LogoBrandSection/Accessibilite.mdx +0 -13
- package/src/components/LogoBrandSection/Accessibilite.stories.ts +0 -26
- package/src/components/LunarCalendar/tests/LunarCalendar.a11y.spec.ts +0 -31
- package/src/components/MaintenancePage/Accessibilite.mdx +0 -13
- package/src/components/MaintenancePage/Accessibilite.stories.ts +0 -36
- package/src/components/MaintenancePage/index.ts +0 -3
- package/src/components/NirField/Accessibilite.mdx +0 -13
- package/src/components/NirField/Accessibilite.stories.ts +0 -31
- package/src/components/NotFoundPage/Accessibilite.mdx +0 -13
- package/src/components/NotFoundPage/Accessibilite.stories.ts +0 -36
- package/src/components/NotificationBar/Accessibilite.mdx +0 -13
- package/src/components/NotificationBar/Accessibilite.stories.ts +0 -30
- package/src/components/PageContainer/Accessibilite.mdx +0 -13
- package/src/components/PageContainer/Accessibilite.stories.ts +0 -30
- package/src/components/PaginatedTable/Accessibilite.mdx +0 -13
- package/src/components/PaginatedTable/Accessibilite.stories.ts +0 -26
- package/src/components/PaginatedTable/tests/PaginatedTable.a11y.spec.ts +0 -43
- package/src/components/PasswordField/Accessibilite.mdx +0 -13
- package/src/components/PasswordField/Accessibilite.stories.ts +0 -121
- package/src/components/PeriodField/Accessibilite.mdx +0 -13
- package/src/components/PeriodField/Accessibilite.stories.ts +0 -27
- package/src/components/PhoneField/Accessibilite.mdx +0 -13
- package/src/components/PhoneField/Accessibilite.stories.ts +0 -32
- package/src/components/PhoneField/tests/PhoneField.a11y.spec.ts +0 -34
- package/src/components/RangeField/Accessibilite.mdx +0 -13
- package/src/components/RangeField/Accessibilite.stories.ts +0 -32
- package/src/components/RatingPicker/Accessibilite.mdx +0 -13
- package/src/components/RatingPicker/Accessibilite.stories.ts +0 -30
- package/src/components/SearchListField/Accessibilite.mdx +0 -13
- package/src/components/SearchListField/Accessibilite.stories.ts +0 -30
- package/src/components/SkipLink/Accessibilite.stories.ts +0 -36
- package/src/components/SocialMediaLinks/Accessibilite.mdx +0 -13
- package/src/components/SocialMediaLinks/Accessibilite.stories.ts +0 -36
- package/src/components/SubHeader/Accessibilite.mdx +0 -13
- package/src/components/SubHeader/Accessibilite.stories.ts +0 -36
- package/src/components/SyAlert/Accessibilite.mdx +0 -13
- package/src/components/SyAlert/Accessibilite.stories.ts +0 -30
- package/src/components/TableToolbar/Accessibilite.mdx +0 -13
- package/src/components/TableToolbar/Accessibilite.stories.ts +0 -26
- package/src/components/UploadWorkflow/Accessibilite.mdx +0 -13
- package/src/components/UploadWorkflow/Accessibilite.stories.ts +0 -26
- package/src/components/UserMenuBtn/Accessibilite.mdx +0 -13
- package/src/components/UserMenuBtn/Accessibilite.stories.ts +0 -25
- /package/src/components/HeaderBar/{Usages.stories.ts → usages/Usages.stories.ts} +0 -0
- /package/src/components/NotFoundPage/assets/{not-found.svg → not-found-cnam.svg} +0 -0
- /package/src/components/SyBtnMenu/accessibilite/{AccessibilityGuide.mdx → Accessibility.mdx} +0 -0
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Meta, Primary } from '@storybook/blocks';
|
|
2
|
+
import * as ToolbarContainerStories from '../ToolbarContainer.stories';
|
|
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';
|
|
12
|
+
|
|
13
|
+
<Meta of={ToolbarContainerStories}/>
|
|
14
|
+
|
|
15
|
+
<AccessibilityGuideLayout
|
|
16
|
+
componentName="ToolbarContainer"
|
|
17
|
+
iconSrc={AccessibilityIcon}
|
|
18
|
+
apgHref="https://www.w3.org/WAI/ARIA/apg/patterns/toolbar/"
|
|
19
|
+
>
|
|
20
|
+
<CriteriaSection>
|
|
21
|
+
<CriteriaCard icon="🔍" title="Structure sémantique">
|
|
22
|
+
<ul>
|
|
23
|
+
<li><strong>Rôle ARIA approprié</strong> : <code>role="toolbar"</code> sur le conteneur principal</li>
|
|
24
|
+
</ul>
|
|
25
|
+
</CriteriaCard>
|
|
26
|
+
|
|
27
|
+
<CriteriaCard icon="⌨️" title="Navigation clavier complète">
|
|
28
|
+
<ul>
|
|
29
|
+
<li><strong>Flèches directionnelles</strong> : Navigation entre les éléments interactifs (←, →, ↑, ↓)</li>
|
|
30
|
+
<li>Le focus boucle en fin de liste et revient au début (et inversement)</li>
|
|
31
|
+
<li><strong>Touches Home/End</strong> : Accès rapide au premier/dernier élément</li>
|
|
32
|
+
<li><strong>Touche Tab</strong> : Accès au toolbar et sortie du toolbar</li>
|
|
33
|
+
</ul>
|
|
34
|
+
</CriteriaCard>
|
|
35
|
+
|
|
36
|
+
<CriteriaCard icon="📱" title="États et retours d'information">
|
|
37
|
+
<ul>
|
|
38
|
+
<li><strong>Focus visible</strong> : L'effet de focus possède un contraste suffisant et est cohérent avec le reste du design système</li>
|
|
39
|
+
<li><strong>État sélectionné</strong> : Utilisation de <code>aria-checked</code> ou <code>aria-pressed</code> selon le type de bouton</li>
|
|
40
|
+
<li><strong>Gestion du focus</strong> : Restauration du focus sur le dernier élément utilisé</li>
|
|
41
|
+
</ul>
|
|
42
|
+
</CriteriaCard>
|
|
43
|
+
|
|
44
|
+
</CriteriaSection>
|
|
45
|
+
|
|
46
|
+
<DemoSection componentName="ToolbarContainer">
|
|
47
|
+
<Primary />
|
|
48
|
+
</DemoSection>
|
|
49
|
+
|
|
50
|
+
<BestPracticesSection>
|
|
51
|
+
<ul>
|
|
52
|
+
<li>Utilisez un label pertinent pour le toolbar via <code>aria-label</code> ou <code>aria-labelledby</code></li>
|
|
53
|
+
<li>Regroupez les boutons apparentés dans des <code>role="group"</code> ou <code>role="radiogroup"</code></li>
|
|
54
|
+
<li>Utilisez des labels explicites pour chaque groupe d'actions</li>
|
|
55
|
+
<li>Assurez-vous que le focus est toujours visible</li>
|
|
56
|
+
</ul>
|
|
57
|
+
</BestPracticesSection>
|
|
58
|
+
|
|
59
|
+
<ResourcesSection>
|
|
60
|
+
<ul>
|
|
61
|
+
<li><a href="https://www.w3.org/WAI/ARIA/apg/patterns/toolbar/" target="_blank" rel="noopener noreferrer">WAI-ARIA Authoring Practices: Toolbar</a></li>
|
|
62
|
+
</ul>
|
|
63
|
+
</ResourcesSection>
|
|
64
|
+
|
|
65
|
+
<div class="mt-8">
|
|
66
|
+
<p>Rapport d’audit manuel : <a href="/audits/ToolbarContainer.xlsx" style={{ color:'#0C41BD' }}>Voir le rapport</a></p>
|
|
67
|
+
<p style={{ color: 'grey', fontSize: '14px', marginTop: '0px' }}>Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/927" target="_blank" style={{color:'#0C41BD'}}>issue #927</a>)</p>
|
|
68
|
+
</div>
|
|
69
|
+
</AccessibilityGuideLayout>
|
|
@@ -17,7 +17,7 @@ import * as UploadWorkflowStories from './UploadWorkflow.stories';
|
|
|
17
17
|
|
|
18
18
|
## Événements
|
|
19
19
|
|
|
20
|
-
Vous pouvez réagir lorsque la liste des fichiers est mise à jour en utilisant l’événement `update:modelValue`,
|
|
20
|
+
Vous pouvez réagir lorsque la liste des fichiers est mise à jour en utilisant l’événement `update:modelValue`, réagir aux erreurs de validation en utilisant l’événement `error`, et intercepter l’ouverture d’une prévisualisation en utilisant l’événement `preview` (avec le `FileItem` associé).
|
|
21
21
|
|
|
22
22
|
<Canvas of={UploadWorkflowStories.Events} />
|
|
23
23
|
|
|
@@ -39,6 +39,16 @@ Vous pouvez permettre à l’utilisateur de prévisualiser le fichier qu’il vi
|
|
|
39
39
|
|
|
40
40
|
<Canvas of={UploadWorkflowStories.WithPreviewStep} />
|
|
41
41
|
|
|
42
|
+
## Texte d'information
|
|
43
|
+
|
|
44
|
+
Vous pouvez personnaliser le texte affiché dans la zone d’information du composant enfant `FileUpload` en utilisant la prop `info-text`.
|
|
45
|
+
|
|
46
|
+
<Canvas of={UploadWorkflowStories.WithInfoText} />
|
|
47
|
+
|
|
48
|
+
## Niveau de titre
|
|
49
|
+
|
|
50
|
+
Vous pouvez configurer le niveau du titre affiché par défaut en utilisant la prop `heading-level` (rendu via `role="heading"` et `aria-level`).
|
|
51
|
+
|
|
42
52
|
## Exemple d'utilisation
|
|
43
53
|
|
|
44
54
|
<Source
|
|
@@ -8,7 +8,7 @@ const meta: Meta<typeof UploadWorkflow> = {
|
|
|
8
8
|
title: 'Composants/Formulaires/UploadWorkflow',
|
|
9
9
|
component: UploadWorkflow,
|
|
10
10
|
parameters: {
|
|
11
|
-
controls: { exclude: ['update:modelValue', 'error'] },
|
|
11
|
+
controls: { exclude: ['update:modelValue', 'error', 'preview'] },
|
|
12
12
|
},
|
|
13
13
|
argTypes: {
|
|
14
14
|
'modelValue': {
|
|
@@ -75,6 +75,36 @@ const meta: Meta<typeof UploadWorkflow> = {
|
|
|
75
75
|
},
|
|
76
76
|
},
|
|
77
77
|
},
|
|
78
|
+
'headingLevel': {
|
|
79
|
+
description: 'Niveau du titre affiché (utilise role="heading" et aria-level).',
|
|
80
|
+
control: {
|
|
81
|
+
type: 'number',
|
|
82
|
+
min: 1,
|
|
83
|
+
max: 6,
|
|
84
|
+
},
|
|
85
|
+
table: {
|
|
86
|
+
category: 'props',
|
|
87
|
+
type: {
|
|
88
|
+
summary: 'number',
|
|
89
|
+
},
|
|
90
|
+
defaultValue: {
|
|
91
|
+
summary: '4',
|
|
92
|
+
},
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
'infoText': {
|
|
96
|
+
description: 'Personnalise le texte affiché dans la zone d’information du composant enfant FileUpload (slot info-text).',
|
|
97
|
+
control: 'text',
|
|
98
|
+
table: {
|
|
99
|
+
category: 'props',
|
|
100
|
+
type: {
|
|
101
|
+
summary: 'string',
|
|
102
|
+
},
|
|
103
|
+
defaultValue: {
|
|
104
|
+
summary: '\'\'',
|
|
105
|
+
},
|
|
106
|
+
},
|
|
107
|
+
},
|
|
78
108
|
'vuetifyOptions': {
|
|
79
109
|
description: 'Les options pour les composants enfants.',
|
|
80
110
|
control: 'object',
|
|
@@ -186,6 +216,15 @@ const meta: Meta<typeof UploadWorkflow> = {
|
|
|
186
216
|
},
|
|
187
217
|
},
|
|
188
218
|
},
|
|
219
|
+
'onPreview': {
|
|
220
|
+
description: 'Événement émis lors de l\'ouverture d\'une prévisualisation.',
|
|
221
|
+
table: {
|
|
222
|
+
category: 'events',
|
|
223
|
+
type: {
|
|
224
|
+
summary: 'FileItem',
|
|
225
|
+
},
|
|
226
|
+
},
|
|
227
|
+
},
|
|
189
228
|
'onUpdate:modelValue': {
|
|
190
229
|
description: 'Événement émis lorsqu\'un fichier est ajouté ou supprimé.',
|
|
191
230
|
table: {
|
|
@@ -267,6 +306,7 @@ export const Default: Story = {
|
|
|
267
306
|
],
|
|
268
307
|
'onUpdate:modelValue': fn(),
|
|
269
308
|
'onError': fn(),
|
|
309
|
+
'onPreview': fn(),
|
|
270
310
|
},
|
|
271
311
|
parameters: {
|
|
272
312
|
sourceCode: [
|
|
@@ -380,6 +420,7 @@ export const WithPreviewStep: Story = {
|
|
|
380
420
|
],
|
|
381
421
|
'onUpdate:modelValue': fn(),
|
|
382
422
|
'onError': fn(),
|
|
423
|
+
'onPreview': fn(),
|
|
383
424
|
'showFilePreview': true,
|
|
384
425
|
},
|
|
385
426
|
parameters: {
|
|
@@ -391,6 +432,7 @@ export const WithPreviewStep: Story = {
|
|
|
391
432
|
v-model="files"
|
|
392
433
|
:upload-list="uploadList"
|
|
393
434
|
:showFilePreview="true"
|
|
435
|
+
@preview="onPreview"
|
|
394
436
|
/>
|
|
395
437
|
</template>`,
|
|
396
438
|
|
|
@@ -412,6 +454,57 @@ export const WithPreviewStep: Story = {
|
|
|
412
454
|
title: 'Facture de soin',
|
|
413
455
|
},
|
|
414
456
|
]
|
|
457
|
+
|
|
458
|
+
function onPreview(fileItem: unknown) {
|
|
459
|
+
console.log('preview', fileItem)
|
|
460
|
+
}
|
|
461
|
+
</script>`,
|
|
462
|
+
},
|
|
463
|
+
],
|
|
464
|
+
},
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
export const WithInfoText: Story = {
|
|
468
|
+
args: {
|
|
469
|
+
'modelValue': [],
|
|
470
|
+
'uploadList': [
|
|
471
|
+
{
|
|
472
|
+
id: '1',
|
|
473
|
+
title: 'Carte d\'identité',
|
|
474
|
+
},
|
|
475
|
+
{
|
|
476
|
+
id: '2',
|
|
477
|
+
title: 'Facture de soin',
|
|
478
|
+
},
|
|
479
|
+
],
|
|
480
|
+
'infoText': 'Vous pouvez déposer vos fichiers ici. Formats acceptés : PDF, JPG, PNG.',
|
|
481
|
+
'onUpdate:modelValue': fn(),
|
|
482
|
+
'onError': fn(),
|
|
483
|
+
'onPreview': fn(),
|
|
484
|
+
},
|
|
485
|
+
parameters: {
|
|
486
|
+
sourceCode: [
|
|
487
|
+
{
|
|
488
|
+
name: 'Template',
|
|
489
|
+
code: `<template>
|
|
490
|
+
<UploadWorkflow
|
|
491
|
+
v-model="files"
|
|
492
|
+
:upload-list="uploadList"
|
|
493
|
+
info-text="Vous pouvez déposer vos fichiers ici. Formats acceptés : PDF, JPG, PNG."
|
|
494
|
+
/>
|
|
495
|
+
</template>`,
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
name: 'Script',
|
|
499
|
+
code: `<script setup lang="ts">
|
|
500
|
+
import { ref } from 'vue'
|
|
501
|
+
import { UploadWorkflow } from '@cnamts/synapse'
|
|
502
|
+
|
|
503
|
+
const files = ref([])
|
|
504
|
+
const uploadList = [
|
|
505
|
+
{ id: '1', title: 'Carte d\\'identité' },
|
|
506
|
+
{ id: '2', title: 'Facture de soin' },
|
|
507
|
+
]
|
|
415
508
|
</script>`,
|
|
416
509
|
},
|
|
417
510
|
],
|
|
@@ -468,14 +561,17 @@ export const Events: Story = {
|
|
|
468
561
|
{
|
|
469
562
|
id: 'ID',
|
|
470
563
|
title: 'Carte d\'identité',
|
|
564
|
+
showPreviewBtn: true,
|
|
471
565
|
},
|
|
472
566
|
{
|
|
473
567
|
id: 'Bill',
|
|
474
568
|
title: 'Facture de soin',
|
|
569
|
+
showPreviewBtn: true,
|
|
475
570
|
},
|
|
476
571
|
],
|
|
477
572
|
'onUpdate:modelValue': fn(),
|
|
478
573
|
'onError': fn(),
|
|
574
|
+
'onPreview': fn(),
|
|
479
575
|
},
|
|
480
576
|
render: (args) => {
|
|
481
577
|
return {
|
|
@@ -517,6 +613,7 @@ export const Events: Story = {
|
|
|
517
613
|
:upload-list="args.uploadList"
|
|
518
614
|
:vuetify-options="options"
|
|
519
615
|
@error="[showError, args.onError]"
|
|
616
|
+
@preview="args.onPreview"
|
|
520
617
|
@update:modelValue="[valueUpdated, args['onUpdate:modelValue']]"
|
|
521
618
|
/>
|
|
522
619
|
<VSnackbar
|
|
@@ -549,6 +646,7 @@ export const Events: Story = {
|
|
|
549
646
|
:upload-list="uploadList"
|
|
550
647
|
vuetify-options="options"
|
|
551
648
|
@onError="showError"
|
|
649
|
+
@onPreview="onPreview"
|
|
552
650
|
@onUpdate:modelValue="valueUpdated"
|
|
553
651
|
/>
|
|
554
652
|
</template>`,
|
|
@@ -564,10 +662,12 @@ export const Events: Story = {
|
|
|
564
662
|
{
|
|
565
663
|
id: 'ID',
|
|
566
664
|
title: 'Carte d'identité',
|
|
665
|
+
showPreviewBtn: true,
|
|
567
666
|
},
|
|
568
667
|
{
|
|
569
668
|
id: 'Bill',
|
|
570
669
|
title: 'Facture de soin',
|
|
670
|
+
showPreviewBtn: true,
|
|
571
671
|
},
|
|
572
672
|
]
|
|
573
673
|
|
|
@@ -581,13 +681,13 @@ export const Events: Story = {
|
|
|
581
681
|
}
|
|
582
682
|
}
|
|
583
683
|
|
|
584
|
-
function showError
|
|
684
|
+
function showError(errors: string[]) {
|
|
585
685
|
snackbarText.value = errors.join(', ')
|
|
586
686
|
snackbarColor.value = 'error';
|
|
587
687
|
snackbar.value = true
|
|
588
688
|
}
|
|
589
689
|
|
|
590
|
-
function valueUpdated
|
|
690
|
+
function valueUpdated(items: { fileName: string, file: File }[]) {
|
|
591
691
|
if(items.length === 0) {
|
|
592
692
|
return
|
|
593
693
|
}
|
|
@@ -595,6 +695,10 @@ export const Events: Story = {
|
|
|
595
695
|
snackbarColor.value = 'success';
|
|
596
696
|
snackbar.value = true
|
|
597
697
|
}
|
|
698
|
+
|
|
699
|
+
function onPreview(fileItem: unknown) {
|
|
700
|
+
console.log('preview', fileItem)
|
|
701
|
+
}
|
|
598
702
|
</script>`,
|
|
599
703
|
},
|
|
600
704
|
],
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
} from '@/composables/useCustomizableOptions'
|
|
5
5
|
import { useWidthable, type Widthable } from '@/composables/widthable'
|
|
6
6
|
import { isRequired } from '@/utils/rules/isRequired'
|
|
7
|
-
import { computed,
|
|
7
|
+
import { computed, ref, toRef } from 'vue'
|
|
8
8
|
import DialogBox from '../DialogBox/DialogBox.vue'
|
|
9
9
|
import FileList from '../FileList/FileList.vue'
|
|
10
10
|
import FilePreview from '../FilePreview/FilePreview.vue'
|
|
@@ -22,37 +22,35 @@
|
|
|
22
22
|
uploadList: UploadItem[]
|
|
23
23
|
sectionTitle?: string
|
|
24
24
|
showFilePreview?: boolean
|
|
25
|
+
infoText?: string
|
|
26
|
+
headingLevel?: number
|
|
25
27
|
locales?: typeof defaultLocales
|
|
26
28
|
}
|
|
27
29
|
>(),
|
|
28
30
|
{
|
|
29
31
|
sectionTitle: undefined,
|
|
30
32
|
showFilePreview: false,
|
|
33
|
+
infoText: '',
|
|
34
|
+
headingLevel: 4,
|
|
31
35
|
locales: () => defaultLocales,
|
|
32
36
|
},
|
|
33
37
|
)
|
|
34
38
|
|
|
35
39
|
const emits = defineEmits<{
|
|
36
40
|
(e: 'error', value: string[]): void
|
|
41
|
+
(e: 'preview', value: FileItem): void
|
|
37
42
|
(e: 'update:modelValue', value: SelectedFile[]): void
|
|
38
43
|
}>()
|
|
39
44
|
|
|
40
45
|
const selectedFiles = defineModel<SelectedFile[]>({
|
|
41
46
|
type: Array,
|
|
42
|
-
default:
|
|
47
|
+
default: () => [],
|
|
43
48
|
})
|
|
44
|
-
watch(
|
|
45
|
-
selectedFiles,
|
|
46
|
-
(value) => {
|
|
47
|
-
emits('update:modelValue', value)
|
|
48
|
-
},
|
|
49
|
-
{ deep: true },
|
|
50
|
-
)
|
|
51
49
|
|
|
52
50
|
const { widthStyles } = useWidthable(props)
|
|
53
51
|
const options = useCustomizableOptions(config, props)
|
|
54
52
|
|
|
55
|
-
const fileUpload = ref<typeof FileUpload
|
|
53
|
+
const fileUpload = ref<InstanceType<typeof FileUpload>>()
|
|
56
54
|
const { selectItems, selectedItem } = useFileUploadJourney(
|
|
57
55
|
toRef(props, 'uploadList'),
|
|
58
56
|
)
|
|
@@ -65,19 +63,21 @@
|
|
|
65
63
|
= useFileList(selectedFiles, toRef(props, 'uploadList'))
|
|
66
64
|
|
|
67
65
|
// handle FileList
|
|
68
|
-
|
|
66
|
+
const inlineSelectedItemId = ref<string | undefined>(undefined)
|
|
69
67
|
function uploadInline(item: FileItem) {
|
|
70
|
-
inlineSelectedItemId = item.id
|
|
68
|
+
inlineSelectedItemId.value = item.id
|
|
71
69
|
|
|
72
|
-
fileUpload.value
|
|
70
|
+
fileUpload.value?.openFileDialog()
|
|
73
71
|
}
|
|
74
72
|
function previewFile(file: FileItem & { file?: File }) {
|
|
73
|
+
emits('preview', file)
|
|
75
74
|
showPreviewDialog.value = true
|
|
76
75
|
fileToPreview.value = file.file
|
|
77
76
|
}
|
|
78
77
|
|
|
79
78
|
// handle FileUpload
|
|
80
79
|
const uploadedFiles = ref<File[]>([])
|
|
80
|
+
const uploadedFile = computed(() => uploadedFiles.value[0])
|
|
81
81
|
|
|
82
82
|
const showFileUpload = computed(
|
|
83
83
|
() => (
|
|
@@ -88,10 +88,10 @@
|
|
|
88
88
|
|
|
89
89
|
function fileSelected(files: File[]) {
|
|
90
90
|
const fileId
|
|
91
|
-
= inlineSelectedItemId ?? (props.uploadList.length === 1
|
|
91
|
+
= inlineSelectedItemId.value ?? (props.uploadList.length === 1
|
|
92
92
|
? props.uploadList[0]!.id
|
|
93
93
|
: undefined)
|
|
94
|
-
inlineSelectedItemId = undefined
|
|
94
|
+
inlineSelectedItemId.value = undefined
|
|
95
95
|
|
|
96
96
|
if (props.showFilePreview || fileId === undefined) {
|
|
97
97
|
showSelectDialog.value = true
|
|
@@ -105,22 +105,22 @@
|
|
|
105
105
|
|
|
106
106
|
function uploadError(errors: string[]) {
|
|
107
107
|
emits('error', errors)
|
|
108
|
-
if (!inlineSelectedItemId) {
|
|
108
|
+
if (!inlineSelectedItemId.value) {
|
|
109
109
|
return
|
|
110
110
|
}
|
|
111
|
-
setItemOnError(inlineSelectedItemId)
|
|
112
|
-
inlineSelectedItemId = undefined
|
|
111
|
+
setItemOnError(inlineSelectedItemId.value)
|
|
112
|
+
inlineSelectedItemId.value = undefined
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
// handle DialogBox
|
|
116
116
|
const showSelectDialog = ref(false)
|
|
117
117
|
|
|
118
118
|
function dialogConfirm() {
|
|
119
|
-
if (!selectedItem.value) {
|
|
119
|
+
if (!selectedItem.value || !uploadedFile.value) {
|
|
120
120
|
return
|
|
121
121
|
}
|
|
122
122
|
|
|
123
|
-
addOrReplaceFile(
|
|
123
|
+
addOrReplaceFile(uploadedFile.value, selectedItem.value)
|
|
124
124
|
|
|
125
125
|
showSelectDialog.value = false
|
|
126
126
|
selectedItem.value = undefined
|
|
@@ -137,9 +137,13 @@
|
|
|
137
137
|
class="sy-upload-workflow white"
|
|
138
138
|
>
|
|
139
139
|
<slot name="title">
|
|
140
|
-
<
|
|
140
|
+
<div
|
|
141
|
+
:aria-level="props.headingLevel"
|
|
142
|
+
role="heading"
|
|
143
|
+
class="text-h6 mb-2"
|
|
144
|
+
>
|
|
141
145
|
{{ title }}
|
|
142
|
-
</
|
|
146
|
+
</div>
|
|
143
147
|
</slot>
|
|
144
148
|
|
|
145
149
|
<FileList
|
|
@@ -159,7 +163,14 @@
|
|
|
159
163
|
v-model="uploadedFiles"
|
|
160
164
|
@error="uploadError"
|
|
161
165
|
@update:model-value="fileSelected"
|
|
162
|
-
|
|
166
|
+
>
|
|
167
|
+
<template
|
|
168
|
+
v-if="props.infoText"
|
|
169
|
+
#info-text
|
|
170
|
+
>
|
|
171
|
+
{{ props.infoText }}
|
|
172
|
+
</template>
|
|
173
|
+
</FileUpload>
|
|
163
174
|
</Transition>
|
|
164
175
|
|
|
165
176
|
<DialogBox
|
|
@@ -195,7 +206,7 @@
|
|
|
195
206
|
<FilePreview
|
|
196
207
|
v-if="showFilePreview"
|
|
197
208
|
:options="options.filePreview"
|
|
198
|
-
:file="
|
|
209
|
+
:file="uploadedFile"
|
|
199
210
|
/>
|
|
200
211
|
</DialogBox>
|
|
201
212
|
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Meta, Story } from '@storybook/addon-docs';
|
|
2
|
+
import * as Stories from '../UploadWorkflow.stories.ts';
|
|
3
|
+
import '@/stories/styles/shared.css';
|
|
4
|
+
|
|
5
|
+
<Meta of={Stories} />
|
|
6
|
+
|
|
7
|
+
<div className="header">
|
|
8
|
+
<h1>Accessibilité</h1>
|
|
9
|
+
<p>Cette page sera bientôt disponible</p>
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<br />
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { describe, it, expect, vi } from 'vitest'
|
|
2
2
|
import { mount } from '@vue/test-utils'
|
|
3
|
+
import { nextTick } from 'vue'
|
|
3
4
|
|
|
4
5
|
import UploadWorkflow from '../UploadWorkflow.vue'
|
|
5
6
|
import { locales as fileListLocales } from '@/components/FileList/UploadItem/locales'
|
|
@@ -34,6 +35,24 @@ describe('UploadWorkflow', () => {
|
|
|
34
35
|
expect(wrapper.find('.sy-file-upload').isVisible()).toBeTruthy()
|
|
35
36
|
})
|
|
36
37
|
|
|
38
|
+
it('renders default title with role heading and configured aria-level', () => {
|
|
39
|
+
const wrapper = mount(UploadWorkflow, {
|
|
40
|
+
props: {
|
|
41
|
+
uploadList: [
|
|
42
|
+
{
|
|
43
|
+
id: 'ID',
|
|
44
|
+
title: 'Carte d\'identité',
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
headingLevel: 2,
|
|
48
|
+
},
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
const title = wrapper.find('[role="heading"]')
|
|
52
|
+
expect(title.exists()).toBe(true)
|
|
53
|
+
expect(title.attributes('aria-level')).toBe('2')
|
|
54
|
+
})
|
|
55
|
+
|
|
37
56
|
it('shows the file in the list when set with the list button', async () => {
|
|
38
57
|
const wrapper = mount(UploadWorkflow, {
|
|
39
58
|
props: {
|
|
@@ -237,6 +256,35 @@ describe('UploadWorkflow', () => {
|
|
|
237
256
|
|
|
238
257
|
await wrapper.find('.file-item__action-preview').trigger('click')
|
|
239
258
|
|
|
259
|
+
expect(wrapper.emitted('preview')).toBeTruthy()
|
|
260
|
+
expect(wrapper.emitted('preview')?.[0]?.[0]).toMatchObject({
|
|
261
|
+
id: 'CERFA1',
|
|
262
|
+
title: 'CERFA 1',
|
|
263
|
+
showPreviewBtn: true,
|
|
264
|
+
})
|
|
265
|
+
|
|
240
266
|
expect(wrapper.find('.sy-file-preview img').exists()).toBeTruthy()
|
|
241
267
|
})
|
|
268
|
+
|
|
269
|
+
it('render custom infoText in FileUpload info-text slot', async () => {
|
|
270
|
+
const wrapper = mount(UploadWorkflow, {
|
|
271
|
+
props: {
|
|
272
|
+
modelValue: [],
|
|
273
|
+
uploadList: [
|
|
274
|
+
{
|
|
275
|
+
id: 'ID',
|
|
276
|
+
title: 'Carte d\'identité',
|
|
277
|
+
},
|
|
278
|
+
],
|
|
279
|
+
infoText: 'Texte personnalisé',
|
|
280
|
+
},
|
|
281
|
+
})
|
|
282
|
+
|
|
283
|
+
await nextTick()
|
|
284
|
+
|
|
285
|
+
const fileUpload = wrapper.find('.sy-file-upload')
|
|
286
|
+
expect(fileUpload.exists()).toBe(true)
|
|
287
|
+
|
|
288
|
+
expect(fileUpload.text()).toContain('Texte personnalisé')
|
|
289
|
+
})
|
|
242
290
|
})
|
|
@@ -8,12 +8,16 @@ exports[`UploadWorkflow > render the upload list 1`] = `
|
|
|
8
8
|
"
|
|
9
9
|
style="width: 100%;"
|
|
10
10
|
>
|
|
11
|
-
<
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
<div
|
|
12
|
+
aria-level="4"
|
|
13
|
+
class="
|
|
14
|
+
mb-2
|
|
15
|
+
text-h6
|
|
16
|
+
"
|
|
17
|
+
role="heading"
|
|
18
|
+
>
|
|
15
19
|
Documents à nous transmettre
|
|
16
|
-
</
|
|
20
|
+
</div>
|
|
17
21
|
<ul
|
|
18
22
|
class="upload-list"
|
|
19
23
|
style="width: 100%;"
|
|
@@ -8,6 +8,10 @@ export default function useFileList(
|
|
|
8
8
|
) {
|
|
9
9
|
const errorSelectedFiles = ref<string[]>([])
|
|
10
10
|
|
|
11
|
+
function notifySelectedFilesChanged() {
|
|
12
|
+
selectedFiles.value = selectedFiles.value.slice()
|
|
13
|
+
}
|
|
14
|
+
|
|
11
15
|
function removeFromErrorList(fileId: string) {
|
|
12
16
|
const errorIndex = errorSelectedFiles.value.findIndex(item => item === fileId)
|
|
13
17
|
if (errorIndex !== -1) {
|
|
@@ -22,12 +26,14 @@ export default function useFileList(
|
|
|
22
26
|
function resetFile(fileItem: FileListItem | SelectedFile) {
|
|
23
27
|
const itemIndex = selectedFiles.value.findIndex(item => item.id === fileItem.id)
|
|
24
28
|
selectedFiles.value.splice(itemIndex, 1)
|
|
29
|
+
notifySelectedFilesChanged()
|
|
25
30
|
}
|
|
26
31
|
|
|
27
32
|
function replaceFile(file: File, item: SelectedFile, state: FileState = 'success') {
|
|
28
33
|
item.file = file
|
|
29
34
|
item.fileName = file.name
|
|
30
35
|
item.state = state
|
|
36
|
+
notifySelectedFilesChanged()
|
|
31
37
|
}
|
|
32
38
|
|
|
33
39
|
function addOrReplaceFile(file: File, fileId: string, state: FileState = 'success') {
|
|
@@ -52,6 +58,7 @@ export default function useFileList(
|
|
|
52
58
|
fileName: file.name,
|
|
53
59
|
file,
|
|
54
60
|
})
|
|
61
|
+
notifySelectedFilesChanged()
|
|
55
62
|
removeFromErrorList(fileId)
|
|
56
63
|
}
|
|
57
64
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
import { type CustomizableOptions } from '@/composables/useCustomizableOptions'
|
|
3
3
|
import { checkIcon, croixIcon } from '@/constants/icons'
|
|
4
4
|
import { ref } from 'vue'
|
|
5
|
+
import SyIcon from '@/components/Customs/SyIcon/SyIcon.vue'
|
|
5
6
|
|
|
6
7
|
withDefaults(defineProps<CustomizableOptions & {
|
|
7
8
|
items1?: string[]
|
|
@@ -31,7 +32,7 @@
|
|
|
31
32
|
style="display: flex;"
|
|
32
33
|
class="d-flex check-text"
|
|
33
34
|
>
|
|
34
|
-
<
|
|
35
|
+
<SyIcon :icon="iconCheck" />
|
|
35
36
|
<p class="font-weight-bold mb-2">
|
|
36
37
|
À faire
|
|
37
38
|
</p>
|
|
@@ -54,7 +55,7 @@
|
|
|
54
55
|
class="m-2 p-2 v-col-auto not-check"
|
|
55
56
|
>
|
|
56
57
|
<div class="d-flex not-check-text">
|
|
57
|
-
<
|
|
58
|
+
<SyIcon :icon="iconCross" />
|
|
58
59
|
<p class="font-weight-bold mb-2">
|
|
59
60
|
À ne pas faire
|
|
60
61
|
</p>
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import { mdiAccount, mdiLoginVariant } from '@mdi/js'
|
|
7
7
|
import useCustomizableOptions, { type CustomizableOptions } from '@/composables/useCustomizableOptions'
|
|
8
8
|
import { defaultOptions } from './config'
|
|
9
|
+
import SyIcon from '@/components/Customs/SyIcon/SyIcon.vue'
|
|
9
10
|
|
|
10
11
|
type MenuItem = { text: string, value: string, link?: string, to?: RouteLocationRaw }
|
|
11
12
|
|
|
@@ -55,14 +56,14 @@
|
|
|
55
56
|
class="user-menu-btn"
|
|
56
57
|
>
|
|
57
58
|
<template #append-icon>
|
|
58
|
-
<
|
|
59
|
+
<SyIcon
|
|
59
60
|
v-if="!hideUserIcon"
|
|
61
|
+
decorative
|
|
62
|
+
:icon="mdiAccount"
|
|
60
63
|
:size="isMobileView ? 'x-large' : 'default'"
|
|
61
64
|
class="vd-user-icon mr-0 pa-2"
|
|
62
65
|
v-bind="options['icon']"
|
|
63
|
-
|
|
64
|
-
{{ mdiAccount }}
|
|
65
|
-
</VIcon>
|
|
66
|
+
/>
|
|
66
67
|
</template>
|
|
67
68
|
<template #footer-list-item>
|
|
68
69
|
<slot>
|
|
@@ -73,10 +74,11 @@
|
|
|
73
74
|
@click="$emit('logout')"
|
|
74
75
|
>
|
|
75
76
|
<div class="d-flex">
|
|
76
|
-
<
|
|
77
|
+
<SyIcon
|
|
77
78
|
:icon="mdiLoginVariant"
|
|
78
79
|
class="mr-4"
|
|
79
80
|
v-bind="options['logoutIcon']"
|
|
81
|
+
decorative
|
|
80
82
|
/>
|
|
81
83
|
<VListItemTitle class="logout">
|
|
82
84
|
{{ props.logoutText }}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Meta, Story } from '@storybook/addon-docs';
|
|
2
|
+
import * as Stories from '../UserMenuBtn.stories.ts';
|
|
3
|
+
import '@/stories/styles/shared.css';
|
|
4
|
+
|
|
5
|
+
<Meta of={Stories} />
|
|
6
|
+
|
|
7
|
+
<div className="header">
|
|
8
|
+
<h1>Accessibilité</h1>
|
|
9
|
+
<p>Cette page sera bientôt disponible</p>
|
|
10
|
+
</div>
|
|
11
|
+
|
|
12
|
+
<br />
|