@cnamts/synapse 0.0.4-alpha → 0.0.6-alpha
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/design-system-v3.d.ts +1277 -499
- package/dist/design-system-v3.js +4193 -1573
- package/dist/design-system-v3.umd.cjs +8 -8
- package/dist/style.css +1 -1
- package/package.json +18 -17
- package/src/assets/settings.scss +3 -0
- package/src/assets/tokens.scss +16 -17
- package/src/components/BackBtn/Accessibilite.mdx +14 -0
- package/src/components/BackBtn/Accessibilite.stories.ts +166 -0
- package/src/components/BackBtn/AccessibiliteItems.ts +102 -0
- package/src/components/BackBtn/BackBtn.mdx +1 -1
- package/src/components/BackBtn/BackBtn.stories.ts +8 -8
- package/src/components/BackBtn/BackBtn.vue +0 -1
- package/src/components/BackBtn/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/BackToTopBtn/Accessibilite.mdx +14 -0
- package/src/components/BackToTopBtn/Accessibilite.stories.ts +166 -0
- package/src/components/BackToTopBtn/AccessibiliteItems.ts +52 -0
- package/src/components/BackToTopBtn/BackToTopBtn.mdx +1 -1
- package/src/components/BackToTopBtn/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/CollapsibleList/Accessibilite.mdx +14 -0
- package/src/components/CollapsibleList/Accessibilite.stories.ts +170 -0
- package/src/components/CollapsibleList/AccessibiliteItems.ts +122 -0
- package/src/components/CollapsibleList/CollapsibleList.stories.ts +1 -1
- package/src/components/CollapsibleList/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/CookieBanner/Accessibilite.mdx +14 -0
- package/src/components/CookieBanner/Accessibilite.stories.ts +219 -0
- package/src/components/CookieBanner/AccessibiliteItems.ts +356 -0
- package/src/components/CookieBanner/CookieBanner.mdx +219 -0
- package/src/components/CookieBanner/CookieBanner.stories.ts +678 -0
- package/src/components/CookieBanner/CookieBanner.vue +225 -0
- package/src/components/CookieBanner/config.ts +38 -0
- package/src/components/CookieBanner/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/CookieBanner/locales.ts +12 -0
- package/src/components/CookieBanner/tests/CookieBanner.spec.ts +129 -0
- package/src/components/CookieBanner/tests/__snapshots__/CookieBanner.spec.ts.snap +197 -0
- package/src/components/CookiesSelection/CookiesInformation/CookiesInformation.vue +123 -0
- package/src/components/CookiesSelection/CookiesInformation/locales.ts +21 -0
- package/src/components/CookiesSelection/CookiesInformation/tests/CookiesInformation.spec.ts +121 -0
- package/src/components/CookiesSelection/CookiesSelection.vue +127 -0
- package/src/components/CookiesSelection/CookiesTable/CookiesTable.vue +47 -0
- package/src/components/CookiesSelection/CookiesTable/headers.ts +14 -0
- package/src/components/CookiesSelection/CookiesTable/tests/CookiesTable.spec.ts +30 -0
- package/src/components/CookiesSelection/CookiesTable/tests/__snapshots__/CookiesTable.spec.ts.snap +3 -0
- package/src/components/CookiesSelection/locales.ts +10 -0
- package/src/components/CookiesSelection/tests/CookiesSelection.spec.ts +184 -0
- package/src/components/CookiesSelection/tests/__snapshots__/CookiesSelection.spec.ts.snap +192 -0
- package/src/components/CookiesSelection/types.ts +15 -0
- package/src/components/CopyBtn/Accessibilite.mdx +14 -0
- package/src/components/CopyBtn/Accessibilite.stories.ts +166 -0
- package/src/components/CopyBtn/AccessibiliteItems.ts +105 -0
- package/src/components/CopyBtn/CopyBtn.mdx +1 -1
- package/src/components/CopyBtn/CopyBtn.stories.ts +4 -4
- package/src/components/CopyBtn/CopyBtn.vue +0 -1
- package/src/components/CopyBtn/config.ts +2 -0
- package/src/components/CopyBtn/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/Customs/SyBtnSelect/Accessibilite.mdx +14 -0
- package/src/components/Customs/SyBtnSelect/Accessibilite.stories.ts +193 -0
- package/src/components/Customs/SyBtnSelect/AccessibiliteItems.ts +139 -0
- package/src/components/Customs/SyBtnSelect/SyBtnSelect.mdx +45 -0
- package/src/components/Customs/SyBtnSelect/SyBtnSelect.stories.ts +662 -0
- package/src/components/Customs/SyBtnSelect/SyBtnSelect.vue +254 -0
- package/src/components/Customs/SyBtnSelect/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/Customs/SyBtnSelect/tests/SyBtnSelect.spec.ts +168 -0
- package/src/components/Customs/SyInputSelect/Accessibilite.mdx +14 -0
- package/src/components/Customs/SyInputSelect/Accessibilite.stories.ts +166 -0
- package/src/components/Customs/SyInputSelect/AccessibiliteItems.ts +96 -0
- package/src/components/Customs/SyInputSelect/SyInputSelect.mdx +41 -0
- package/src/components/Customs/{CustomInputSelect/CustomInputSelect.stories.ts → SyInputSelect/SyInputSelect.stories.ts} +30 -83
- package/src/components/Customs/{CustomInputSelect/CustomInputSelect.vue → SyInputSelect/SyInputSelect.vue} +46 -6
- package/src/components/Customs/SyInputSelect/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/Customs/SyInputSelect/tests/SyInputSelect.spec.ts +140 -0
- package/src/components/Customs/SySelect/Accessibilite.mdx +14 -0
- package/src/components/Customs/SySelect/Accessibilite.stories.ts +217 -0
- package/src/components/Customs/SySelect/AccessibiliteItems.ts +173 -0
- package/src/components/Customs/{CustomSelect/CustomSelect.mdx → SySelect/SySelect.mdx} +9 -8
- package/src/components/Customs/{CustomSelect/CustomSelect.stories.ts → SySelect/SySelect.stories.ts} +25 -79
- package/src/components/Customs/{CustomSelect/CustomSelect.vue → SySelect/SySelect.vue} +44 -13
- package/src/components/Customs/SySelect/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/Customs/{CustomInputSelect/tests/CustomInputSelect.spec.ts → SySelect/tests/SySelect.spec.ts} +48 -71
- package/src/components/Customs/SyTextField/Accessibilite.mdx +14 -0
- package/src/components/Customs/SyTextField/Accessibilite.stories.ts +224 -0
- package/src/components/Customs/SyTextField/AccessibiliteItems.ts +198 -0
- package/src/components/Customs/SyTextField/SyTextField.mdx +44 -0
- package/src/components/Customs/{CustomTextField/CustomTextField.stories.ts → SyTextField/SyTextField.stories.ts} +145 -34
- package/src/components/Customs/{CustomTextField/CustomTextField.vue → SyTextField/SyTextField.vue} +27 -7
- package/src/components/Customs/SyTextField/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/Customs/{CustomTextField/tests/CustomTextField.spec.ts → SyTextField/tests/SyTextField.spec.ts} +3 -3
- package/src/components/Customs/{CustomTextField/tests/__snapshots__/CustomTextField.spec.ts.snap → SyTextField/tests/__snapshots__/SyTextField.spec.ts.snap} +5 -6
- package/src/components/DataList/Accessibilite.mdx +14 -0
- package/src/components/DataList/Accessibilite.stories.ts +166 -0
- package/src/components/DataList/AccessibiliteItems.ts +47 -0
- package/src/components/DataList/DataList.mdx +1 -1
- package/src/components/DataList/DataList.stories.ts +10 -10
- package/src/components/DataList/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/DataListGroup/Accessibilite.mdx +14 -0
- package/src/components/DataListGroup/Accessibilite.stories.ts +225 -0
- package/src/components/DataListGroup/AccessibiliteItems.ts +79 -0
- package/src/components/DataListGroup/DataListGroup.mdx +1 -1
- package/src/components/DataListGroup/DataListGroup.stories.ts +7 -7
- package/src/components/DataListGroup/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/DialogBox/Accessibilite.mdx +14 -0
- package/src/components/DialogBox/Accessibilite.stories.ts +189 -0
- package/src/components/DialogBox/AccessibiliteItems.ts +167 -0
- package/src/components/DialogBox/DialogBox.mdx +14 -0
- package/src/components/DialogBox/DialogBox.stories.ts +798 -0
- package/src/components/DialogBox/DialogBox.vue +181 -0
- package/src/components/DialogBox/config.ts +25 -0
- package/src/components/DialogBox/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/DialogBox/locales.ts +5 -0
- package/src/components/DialogBox/tests/DialogBox.spec.ts +329 -0
- package/src/components/DialogBox/tests/__snapshots__/DialogBox.spec.ts.snap +46 -0
- package/src/components/DownloadBtn/AccessibiliteItems.ts +1 -31
- package/src/components/DownloadBtn/DownloadBtn.mdx +3 -3
- package/src/components/DownloadBtn/DownloadBtn.stories.ts +6 -6
- package/src/components/ErrorPage/Accessibilite.mdx +14 -0
- package/src/components/ErrorPage/Accessibilite.stories.ts +189 -0
- package/src/components/ErrorPage/AccessibiliteItems.ts +205 -0
- package/src/components/ErrorPage/ErrorPage.mdx +21 -0
- package/src/components/ErrorPage/ErrorPage.stories.ts +133 -0
- package/src/components/ErrorPage/ErrorPage.vue +93 -0
- package/src/components/ErrorPage/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/ErrorPage/locales.ts +5 -0
- package/src/components/ErrorPage/tests/ErrorPage.spec.ts +40 -0
- package/src/components/ErrorPage/tests/__snapshots__/ErrorPage.spec.ts.snap +78 -0
- package/src/components/FooterBar/Accessibilite.mdx +14 -0
- package/src/components/FooterBar/Accessibilite.stories.ts +223 -0
- package/src/components/FooterBar/AccessibiliteItems.ts +257 -0
- package/src/components/FooterBar/FooterBar.mdx +2 -2
- package/src/components/FooterBar/FooterBar.stories.ts +556 -8
- package/src/components/FooterBar/FooterBar.vue +80 -73
- package/src/components/FooterBar/config.ts +2 -3
- package/src/components/FooterBar/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/FooterBar/tests/FooterBar.spec.ts +1 -1
- package/src/components/FooterBar/tests/FooterBarConfig.spec.ts +1 -1
- package/src/components/FooterBar/tests/__snapshots__/FooterBar.spec.ts.snap +24 -22
- package/src/components/FranceConnectBtn/Accessibilite.mdx +14 -0
- package/src/components/FranceConnectBtn/Accessibilite.stories.ts +194 -0
- package/src/components/FranceConnectBtn/AccessibiliteItems.ts +169 -0
- package/src/components/FranceConnectBtn/FranceConnectBtn.mdx +1 -1
- package/src/components/FranceConnectBtn/FranceConnectBtn.stories.ts +3 -3
- package/src/components/FranceConnectBtn/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/HeaderBar/Accessibilite.mdx +14 -0
- package/src/components/HeaderBar/Accessibilite.stories.ts +223 -0
- package/src/components/HeaderBar/AccessibiliteItems.ts +194 -0
- package/src/components/HeaderBar/HeaderBar.stories.ts +60 -2
- package/src/components/HeaderBar/HeaderBar.vue +1 -9
- package/src/components/HeaderBar/HeaderBurgerMenu/Accessibilite.mdx +14 -0
- package/src/components/HeaderBar/HeaderBurgerMenu/Accessibilite.stories.ts +223 -0
- package/src/components/HeaderBar/HeaderBurgerMenu/AccessibiliteItems.ts +174 -0
- package/src/components/HeaderBar/HeaderBurgerMenu/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/HeaderBar/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/HeaderBar/tests/__snapshots__/HeaderBar.spec.ts.snap +1 -1
- package/src/components/HeaderLoading/Accessibilite.mdx +14 -0
- package/src/components/HeaderLoading/Accessibilite.stories.ts +167 -0
- package/src/components/HeaderLoading/AccessibiliteItems.ts +29 -0
- package/src/components/HeaderLoading/HeaderLoading.mdx +1 -1
- package/src/components/HeaderLoading/HeaderLoading.stories.ts +1 -1
- package/src/components/HeaderLoading/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/HeaderNavigationBar/HeaderNavigationBar.mdx +6 -6
- package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +35 -33
- package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.spec.ts +1 -1
- package/src/components/HeaderToolbar/Accessibilite.mdx +14 -0
- package/src/components/HeaderToolbar/Accessibilite.stories.ts +203 -0
- package/src/components/HeaderToolbar/AccessibiliteItems.ts +200 -0
- package/src/components/HeaderToolbar/HeaderToolbar.mdx +1 -1
- package/src/components/HeaderToolbar/HeaderToolbar.stories.ts +2 -2
- package/src/components/HeaderToolbar/HeaderToolbar.vue +3 -2
- package/src/components/HeaderToolbar/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/HeaderToolbar/tests/HeaderToolbar.spec.ts +36 -2
- package/src/components/LangBtn/Accessibilite.mdx +14 -0
- package/src/components/LangBtn/Accessibilite.stories.ts +168 -0
- package/src/components/LangBtn/AccessibiliteItems.ts +101 -0
- package/src/components/LangBtn/LangBtn.mdx +1 -1
- package/src/components/LangBtn/LangBtn.stories.ts +4 -4
- package/src/components/LangBtn/LangBtn.vue +3 -2
- package/src/components/LangBtn/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/LangBtn/tests/LangBtn.spec.ts +1 -1
- package/src/components/LangBtn/tests/__snapshots__/LangBtn.spec.ts.snap +1 -1
- package/src/components/Logo/Accessibilite.mdx +14 -0
- package/src/components/Logo/Accessibilite.stories.ts +223 -0
- package/src/components/Logo/AccessibiliteItems.ts +155 -0
- package/src/components/Logo/Logo.mdx +1 -1
- package/src/components/Logo/Logo.stories.ts +8 -8
- package/src/components/Logo/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/LogoBrandSection/Accessibilite.mdx +14 -0
- package/src/components/LogoBrandSection/Accessibilite.stories.ts +223 -0
- package/src/components/LogoBrandSection/AccessibiliteItems.ts +194 -0
- package/src/components/LogoBrandSection/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/MaintenancePage/Accessibilite.mdx +14 -0
- package/src/components/MaintenancePage/Accessibilite.stories.ts +189 -0
- package/src/components/MaintenancePage/AccessibiliteItems.ts +173 -0
- package/src/components/MaintenancePage/MaintenancePage.mdx +11 -0
- package/src/components/MaintenancePage/MaintenancePage.stories.ts +41 -0
- package/src/components/MaintenancePage/MaintenancePage.vue +25 -0
- package/src/components/MaintenancePage/assets/maintenance.svg +1 -0
- package/src/components/MaintenancePage/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/MaintenancePage/index.ts +3 -0
- package/src/components/MaintenancePage/locales.ts +5 -0
- package/src/components/MaintenancePage/tests/MaintenancePage.spec.ts +12 -0
- package/src/components/MaintenancePage/tests/__snapshots__/MaintenancePage.spec.ts.snap +3 -0
- package/src/components/NirField/Accessibilite.mdx +14 -0
- package/src/components/NirField/Accessibilite.stories.ts +214 -0
- package/src/components/NirField/AccessibiliteItems.ts +243 -0
- package/src/components/NirField/NirField.mdx +216 -0
- package/src/components/NirField/NirField.stories.ts +359 -0
- package/src/components/NirField/NirField.vue +450 -0
- package/src/components/NirField/config.ts +16 -0
- package/src/components/NirField/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/NirField/locales.ts +12 -0
- package/src/components/NirField/nirValidation.ts +42 -0
- package/src/components/NirField/tests/NirField.spec.ts +119 -0
- package/src/components/NotFoundPage/Accessibilite.mdx +14 -0
- package/src/components/NotFoundPage/Accessibilite.stories.ts +190 -0
- package/src/components/NotFoundPage/AccessibiliteItems.ts +205 -0
- package/src/components/NotFoundPage/NotFoundPage.mdx +19 -0
- package/src/components/NotFoundPage/NotFoundPage.stories.ts +76 -0
- package/src/components/NotFoundPage/NotFoundPage.vue +52 -0
- package/src/components/NotFoundPage/assets/not-found.svg +1 -0
- package/src/components/NotFoundPage/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/NotFoundPage/locales.ts +6 -0
- package/src/components/NotFoundPage/tests/NotFoundPage.spec.ts +38 -0
- package/src/components/NotFoundPage/tests/__snapshots__/NotFoundPage.spec.ts.snap +76 -0
- package/src/components/NotificationBar/Accessibilite.mdx +14 -0
- package/src/components/NotificationBar/Accessibilite.stories.ts +166 -0
- package/src/components/NotificationBar/AccessibiliteItems.ts +144 -0
- package/src/components/NotificationBar/NotificationBar.mdx +1 -1
- package/src/components/NotificationBar/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/NotificationBar/options.ts +1 -0
- package/src/components/PageContainer/Accessibilite.mdx +14 -0
- package/src/components/PageContainer/Accessibilite.stories.ts +166 -0
- package/src/components/PageContainer/AccessibiliteItems.ts +52 -0
- package/src/components/PageContainer/PageContainer.mdx +1 -1
- package/src/components/PageContainer/PageContainer.stories.ts +4 -4
- package/src/components/PageContainer/PageContainer.vue +16 -15
- package/src/components/PageContainer/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/PageContainer/tests/PageContainer.spec.ts +1 -1
- package/src/components/PageContainer/tests/__snapshots__/PageContainer.spec.ts.snap +2 -2
- package/src/components/PhoneField/Accessibilite.mdx +14 -0
- package/src/components/PhoneField/Accessibilite.stories.ts +216 -0
- package/src/components/PhoneField/AccessibiliteItems.ts +238 -0
- package/src/components/PhoneField/PhoneField.mdx +1 -1
- package/src/components/PhoneField/PhoneField.stories.ts +2 -2
- package/src/components/PhoneField/PhoneField.vue +5 -6
- package/src/components/PhoneField/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/PhoneField/tests/PhoneField.spec.ts +3 -3
- package/src/components/SkipLink/Accessibilite.mdx +14 -0
- package/src/components/SkipLink/Accessibilite.stories.ts +167 -0
- package/src/components/SkipLink/AccessibiliteItems.ts +77 -0
- package/src/components/SkipLink/SkipLink.stories.ts +2 -2
- package/src/components/SkipLink/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/SocialMediaLinks/Accessibilite.mdx +14 -0
- package/src/components/SocialMediaLinks/Accessibilite.stories.ts +170 -0
- package/src/components/SocialMediaLinks/AccessibiliteItems.ts +160 -0
- package/src/components/SocialMediaLinks/SocialMediaLinks.mdx +18 -14
- package/src/components/SocialMediaLinks/SocialMediaLinks.stories.ts +3 -2
- package/src/components/SocialMediaLinks/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/SocialMediaLinks/tests/SocialMediaLinks.spec.ts +1 -1
- package/src/components/SocialMediaLinks/tests/__snapshots__/SocialMediaLinks.spec.ts.snap +2 -2
- package/src/components/SubHeader/Accessibilite.mdx +14 -0
- package/src/components/SubHeader/Accessibilite.stories.ts +166 -0
- package/src/components/SubHeader/AccessibiliteItems.ts +146 -0
- package/src/components/SubHeader/SubHeader.mdx +1 -1
- package/src/components/SubHeader/SubHeader.stories.ts +11 -11
- package/src/components/SubHeader/SubHeader.vue +1 -1
- package/src/components/SubHeader/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/SyAlert/Accessibilite.mdx +14 -0
- package/src/components/SyAlert/Accessibilite.stories.ts +166 -0
- package/src/components/SyAlert/AccessibiliteItems.ts +122 -0
- package/src/components/{Alert/Alert.mdx → SyAlert/SyAlert.mdx} +9 -9
- package/src/components/{Alert/Alert.stories.ts → SyAlert/SyAlert.stories.ts} +22 -22
- package/src/components/SyAlert/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/{Alert/tests/Alert.spec.ts → SyAlert/tests/SyAlert.spec.ts} +5 -5
- package/src/components/{Alert/tests/__snapshots__/Alert.spec.ts.snap → SyAlert/tests/__snapshots__/SyAlert.spec.ts.snap} +2 -2
- package/src/components/UserMenuBtn/Accessibilite.mdx +14 -0
- package/src/components/UserMenuBtn/Accessibilite.stories.ts +189 -0
- package/src/components/UserMenuBtn/AccessibiliteItems.ts +155 -0
- package/src/components/UserMenuBtn/UserMenuBtn.mdx +35 -0
- package/src/components/UserMenuBtn/UserMenuBtn.stories.ts +540 -0
- package/src/components/UserMenuBtn/UserMenuBtn.vue +101 -0
- package/src/components/UserMenuBtn/config.ts +24 -0
- package/src/components/UserMenuBtn/constants/ExpertiseLevelEnum.ts +4 -0
- package/src/components/UserMenuBtn/tests/UserMenuBtn.spec.ts +125 -0
- package/src/components/index.ts +19 -4
- package/src/composables/index.ts +8 -0
- package/src/composables/rules/tests/useFieldValidation.spec.ts +84 -0
- package/src/composables/rules/useFieldValidation.ts +90 -0
- package/src/designTokens/index.ts +2 -0
- package/src/designTokens/tokens/cnam/cnamDarkTheme.ts +5 -0
- package/src/designTokens/tokens/cnam/cnamLightTheme.ts +1 -0
- package/src/main.ts +3 -0
- package/src/stories/Fondamentaux/Arrondis.mdx +24 -0
- package/src/stories/{Guidelines → Fondamentaux}/Colors.mdx +1 -1
- package/src/stories/Fondamentaux/Conteneurs.mdx +7 -0
- package/src/stories/Fondamentaux/CustomisationEtThemes.mdx +7 -0
- package/src/stories/Fondamentaux/Elevations.mdx +14 -0
- package/src/stories/Fondamentaux/Espacements.mdx +29 -0
- package/src/stories/{Guidelines → Fondamentaux}/Introduction.mdx +1 -1
- package/src/stories/Fondamentaux/StylesTypographiques.mdx +33 -0
- package/src/stories/Fondamentaux/Typographie.mdx +58 -0
- package/src/stories/GuideDuDev/CommentUtiliserLesRules.mdx +120 -0
- package/src/stories/GuideDuDev/components.stories.ts +5 -5
- package/src/stories/GuideDuDev/moduleDeNotification.mdx +1 -1
- package/src/stories/{Fondamentaux → Guidelines}/Accessibilite/Accessibilite.stories.ts +1 -1
- package/src/stories/{Fondamentaux → Guidelines}/EcoConception/Econception.stories.ts +2 -2
- package/src/stories/Guidelines/Vuetify/Vuetify.mdx +11 -0
- package/src/stories/Guidelines/Vuetify/Vuetify.stories.ts +138 -0
- package/src/stories/Guidelines/Vuetify/VuetifyItems.ts +350 -0
- package/src/components/Customs/CustomInputSelect/CustomInputSelect.mdx +0 -40
- package/src/components/Customs/CustomSelect/tests/CustomSelect.spec.ts +0 -236
- package/src/components/Customs/CustomTextField/CustomTextField.mdx +0 -44
- package/src/stories/Guidelines/CustomisationEtThemes.mdx +0 -3
- package/src/stories/Guidelines/Typo.mdx +0 -53
- /package/src/components/Customs/{CustomInputSelect → SyInputSelect}/config.ts +0 -0
- /package/src/components/Customs/{CustomTextField → SyTextField}/types.d.ts +0 -0
- /package/src/components/{Alert/Alert.vue → SyAlert/SyAlert.vue} +0 -0
- /package/src/components/{Alert → SyAlert}/locales.ts +0 -0
- /package/src/stories/{Fondamentaux → Guidelines}/Accessibilite/Accessibilite.mdx +0 -0
- /package/src/stories/{Fondamentaux → Guidelines}/Accessibilite/AccessibiliteItems.ts +0 -0
- /package/src/stories/{Fondamentaux → Guidelines}/Accessibilite/constants/ExpertiseLevelEnum.ts +0 -0
- /package/src/stories/{Fondamentaux → Guidelines}/Accessibilite/constants/RGAALevelEnum.ts +0 -0
- /package/src/stories/{Fondamentaux → Guidelines}/EcoConception/EcoConception.mdx +0 -0
- /package/src/stories/{Fondamentaux → Guidelines}/EcoConception/ecoDesignItems.ts +0 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import {Meta, Source} from '@storybook/addon-docs/blocks';
|
|
2
|
+
|
|
3
|
+
<Meta title="Guide Du Dev/Comment utiliser les rules"/>
|
|
4
|
+
|
|
5
|
+
# Comment utiliser les règles de validation
|
|
6
|
+
|
|
7
|
+
Ce guide décrit comment utiliser le composable `useFieldValidation` pour créer des règles de validation flexibles et personnalisées dans votre projet Vue.js.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Introduction
|
|
12
|
+
|
|
13
|
+
Le composable `useFieldValidation` vous permet de définir des règles de validation dynamiques pour différents champs dans vos formulaires. Ce composable est conçu pour être flexible, réutilisable et facilement intégrable avec des bibliothèques comme Vuetify.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Structure du composable
|
|
18
|
+
|
|
19
|
+
### Type `RuleOptions`
|
|
20
|
+
|
|
21
|
+
<Source dark code={`
|
|
22
|
+
type RuleOptions = {
|
|
23
|
+
fieldName?: string; // Nom du champ utilisé dans les messages d'erreur
|
|
24
|
+
message?: string; // Message personnalisé pour la règle
|
|
25
|
+
successMessage?: string; // Message personnalisé de validation réussie
|
|
26
|
+
length?: number; // Longueur minimale ou maximale
|
|
27
|
+
value?: number; // Valeur minimale ou maximale
|
|
28
|
+
pattern?: RegExp; // Motif à valider
|
|
29
|
+
ignoreSpace?: boolean; // Ignorer les espaces lors de la validation de longueur
|
|
30
|
+
validate?: (value: any) => boolean | string; // Validation personnalisée
|
|
31
|
+
};
|
|
32
|
+
`}
|
|
33
|
+
/>
|
|
34
|
+
|
|
35
|
+
### Type `ValidationResult`
|
|
36
|
+
|
|
37
|
+
<Source dark code={`
|
|
38
|
+
type ValidationResult = {
|
|
39
|
+
success?: string; // Message de validation réussie
|
|
40
|
+
error?: string; // Message d'erreur
|
|
41
|
+
};
|
|
42
|
+
`}
|
|
43
|
+
/>
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Exemple d'intégration
|
|
48
|
+
|
|
49
|
+
### Script Vue.js
|
|
50
|
+
|
|
51
|
+
<Source dark code={`
|
|
52
|
+
<script lang="ts" setup>
|
|
53
|
+
import { ref } from 'vue';
|
|
54
|
+
import { useFieldValidation } from '@cnamts/synapse';
|
|
55
|
+
|
|
56
|
+
const { generateRules } = useFieldValidation();
|
|
57
|
+
|
|
58
|
+
const firstName = ref('');
|
|
59
|
+
const email = ref('');
|
|
60
|
+
const age = ref('');
|
|
61
|
+
|
|
62
|
+
const rules = {
|
|
63
|
+
firstName: generateRules([
|
|
64
|
+
{ type: 'required', options: { message: 'Ce champ est requis.' } },
|
|
65
|
+
{ type: 'minLength', options: { length: 3, ignoreSpace: true } },
|
|
66
|
+
{ type: 'maxLength', options: { length: 20 } },
|
|
67
|
+
]),
|
|
68
|
+
email: generateRules([
|
|
69
|
+
{ type: 'required', options: { fieldName: 'Email' } },
|
|
70
|
+
{ type: 'email' },
|
|
71
|
+
]),
|
|
72
|
+
age: generateRules([
|
|
73
|
+
{ type: 'min', options: { value: 18 } },
|
|
74
|
+
{ type: 'max', options: { value: 99 } },
|
|
75
|
+
]),
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const validateField = (field: string) => {
|
|
79
|
+
return rules[field].every((rule) => rule(field));
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const handleSubmit = () => {
|
|
83
|
+
if (validateField('firstName') && validateField('email') && validateField('age')) {
|
|
84
|
+
alert('Formulaire valide.');
|
|
85
|
+
} else {
|
|
86
|
+
alert('Merci de vérifier les champs.');
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
</script>
|
|
90
|
+
`}
|
|
91
|
+
/>
|
|
92
|
+
|
|
93
|
+
Vous pouvez retrouver un exemple complet sur le [NirField](/docs/composants-formulaires-nirfield--docs).
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Fonctionnalités supportées
|
|
98
|
+
|
|
99
|
+
- **Validation requise** (`required`) : Assurez-vous qu'un champ est rempli.
|
|
100
|
+
- **Longueur minimale** (`minLength`) : Validez un champ avec un nombre minimal de caractères.
|
|
101
|
+
- **Longueur maximale** (`maxLength`) : Limitez un champ à un nombre maximal de caractères.
|
|
102
|
+
- **Valeur minimale** (`min`) : Assurez-vous que la valeur est au moins égale à une valeur définie.
|
|
103
|
+
- **Valeur maximale** (`max`) : Assurez-vous que la valeur ne dépasse pas une valeur définie.
|
|
104
|
+
- **Validation par motif** (`matchPattern`) : Validez un champ à l'aide d'une expression régulière.
|
|
105
|
+
- **Validation d'email** (`email`) : Assurez-vous que la valeur est une adresse email valide.
|
|
106
|
+
- **Validation personnalisée** (`custom`) : Implémentez des règles spécifiques via une fonction.
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Bonnes pratiques
|
|
111
|
+
|
|
112
|
+
- **Centralisation** : Centralisez la logique de validation pour garantir une maintenance facile.
|
|
113
|
+
- **Accessibilité** : Vérifiez que les messages d'erreur sont clairs et concis pour tous les utilisateurs.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## Conclusion
|
|
118
|
+
|
|
119
|
+
Avec `useFieldValidation`, vous disposez d'un outil pour gérer les validations de vos formulaires dans Vue.js. Ce composable est idéal pour créer des validations personnalisées et intégrer des champs avec des bibliothèques comme Vuetify.
|
|
120
|
+
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import
|
|
1
|
+
import SyAlert from '@/components/SyAlert/SyAlert.vue'
|
|
2
2
|
|
|
3
3
|
export default {
|
|
4
4
|
title: 'Guide Du Dev/Rapport de bug',
|
|
5
|
-
component:
|
|
5
|
+
component: SyAlert,
|
|
6
6
|
}
|
|
7
7
|
export const Info = {
|
|
8
8
|
render: () => {
|
|
9
9
|
return {
|
|
10
|
-
components: {
|
|
10
|
+
components: { SyAlert },
|
|
11
11
|
setup() {
|
|
12
12
|
return { }
|
|
13
13
|
},
|
|
14
14
|
template: `
|
|
15
|
-
<
|
|
15
|
+
<SyAlert type="info" variant="tonal" :closable="false">
|
|
16
16
|
<template #default>Lorsque vous créez une reproduction minimale, supprimez tous les éléments, propriétés, variables, données et autres qui ne sont pas nécessaires pour reproduire le bug. Cela facilitera le traitement du rapport et le temps qu’il faudra pour identifier puis résoudre le bug.
|
|
17
17
|
</template>
|
|
18
|
-
</
|
|
18
|
+
</SyAlert>
|
|
19
19
|
`,
|
|
20
20
|
}
|
|
21
21
|
},
|
|
@@ -122,7 +122,7 @@ Utilisation dans un composant Vue
|
|
|
122
122
|
<Source dark code={`
|
|
123
123
|
<script setup lang="ts">
|
|
124
124
|
import { VBtn } from 'vuetify/components'
|
|
125
|
-
import NotificationBar from '@cnamts/synapse'
|
|
125
|
+
import { NotificationBar } from '@cnamts/synapse'
|
|
126
126
|
import { useNotificationService } from '@cnamts/synapse/src/services/NotificationService'
|
|
127
127
|
import type { Notification } from '@cnamts/synapse/src/components/NotificationBar/types'
|
|
128
128
|
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { VExpansionPanels, VExpansionPanel } from 'vuetify/components'
|
|
2
2
|
import type { StoryObj } from '@storybook/vue3'
|
|
3
|
-
import { ecoDesignItems } from '@/stories/
|
|
3
|
+
import { ecoDesignItems } from '@/stories/Guidelines/EcoConception/ecoDesignItems'
|
|
4
4
|
|
|
5
5
|
export default {
|
|
6
|
-
title: '
|
|
6
|
+
title: 'Guidelines/Éco-conception',
|
|
7
7
|
}
|
|
8
8
|
|
|
9
9
|
export const EcoPanel: StoryObj = {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Meta, Story } from '@storybook/addon-docs';
|
|
2
|
+
import * as AccessStories from './Vuetify.stories.ts';
|
|
3
|
+
|
|
4
|
+
<Meta of={AccessStories} />
|
|
5
|
+
|
|
6
|
+
Vuetify & Accessibilité
|
|
7
|
+
=============
|
|
8
|
+
|
|
9
|
+
<Story of={AccessStories.Legende} />
|
|
10
|
+
|
|
11
|
+
<Story of={AccessStories.VuetifyPanel} />
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { VExpansionPanels, VExpansionPanel, VExpansionPanelTitle, VExpansionPanelText, VDataTable, VIcon, VRow, VCol } from 'vuetify/components'
|
|
2
|
+
import type { StoryObj } from '@storybook/vue3'
|
|
3
|
+
import { VuetifyItems } from './VuetifyItems'
|
|
4
|
+
import { mdiCheckboxMarkedCircleOutline, mdiLinkVariant, mdiAlertCircleOutline } from '@mdi/js'
|
|
5
|
+
|
|
6
|
+
const checkIcon = mdiCheckboxMarkedCircleOutline
|
|
7
|
+
const linkICon = mdiLinkVariant
|
|
8
|
+
const iconAlert = mdiAlertCircleOutline
|
|
9
|
+
export default {
|
|
10
|
+
title: 'Guidelines/Vuetify',
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export const VuetifyPanel: StoryObj = {
|
|
14
|
+
render: () => {
|
|
15
|
+
return {
|
|
16
|
+
components: { VExpansionPanels, VExpansionPanel, VExpansionPanelTitle, VExpansionPanelText, VDataTable, VIcon },
|
|
17
|
+
setup() {
|
|
18
|
+
return { VuetifyItems, checkIcon, iconAlert, linkICon }
|
|
19
|
+
},
|
|
20
|
+
template: `
|
|
21
|
+
<div v-for="(item, index) in VuetifyItems" :key="index">
|
|
22
|
+
<v-data-table
|
|
23
|
+
:items="item.items"
|
|
24
|
+
:items-per-page="23"
|
|
25
|
+
hide-default-footer>
|
|
26
|
+
<template v-slot:header.name="{ header }">
|
|
27
|
+
Composant Vuetify
|
|
28
|
+
</template>
|
|
29
|
+
|
|
30
|
+
<template v-slot:header.errorImportants="{ header }">
|
|
31
|
+
Erreurs bloquantes (Tanaguru)
|
|
32
|
+
</template>
|
|
33
|
+
<template v-slot:item.name="{ item }">
|
|
34
|
+
<v-chip v-if="item.errorImportants == 0 && item.errorIndeterminated == 0"
|
|
35
|
+
style="font-size: 12px; line-height: 15px;">
|
|
36
|
+
<VIcon style="margin-right: 2px;" :icon="checkIcon"/>
|
|
37
|
+
{{ item.name }}
|
|
38
|
+
</v-chip>
|
|
39
|
+
<v-chip v-else style="font-size: 12px; line-height: 15px;">
|
|
40
|
+
<VIcon style="margin-right: 2px;" :icon="iconAlert"/>
|
|
41
|
+
{{ item.name }}
|
|
42
|
+
</v-chip>
|
|
43
|
+
</template>
|
|
44
|
+
|
|
45
|
+
<template v-slot:item.solution="{ item }">
|
|
46
|
+
<div v-if="item.solution.length > 0">
|
|
47
|
+
<span v-for="(item, index) in item.solution"
|
|
48
|
+
style="display:flex; align-items: center; font-size: 12px; line-height: 15px; font-weight: bold">
|
|
49
|
+
{{ item.name }} <a :href="item.href" v-if="item.href">
|
|
50
|
+
<VBtn color="primary" style="margin-left: 5px;" :icon="linkICon" size="small"
|
|
51
|
+
variant="text"/></a>
|
|
52
|
+
</span>
|
|
53
|
+
</div>
|
|
54
|
+
</template>
|
|
55
|
+
|
|
56
|
+
<template v-slot:item.errorImportants="{ item }">
|
|
57
|
+
<div v-if="item.errorImportants.length === 0">
|
|
58
|
+
<p style="margin-top: 5px; margin-bottom: 5px; font-size: 12px;">Pas d'erreur
|
|
59
|
+
d'accessibilité relevée à ce jour</p>
|
|
60
|
+
</div>
|
|
61
|
+
<div v-else v-for="item in item.errorImportants" :key="index"
|
|
62
|
+
style="width: 100% !important; font-size: 12px; line-height: 15px;">
|
|
63
|
+
<p style="margin-top: 5px; margin-bottom: 5px;">
|
|
64
|
+
<span style="font-weight: bold;">{{ item.match('[0-9.]+')?.join('') || '' }} </span>
|
|
65
|
+
{{ item.replace(/[0-9.]/g, '') }}
|
|
66
|
+
</p>
|
|
67
|
+
</div>
|
|
68
|
+
</template>
|
|
69
|
+
|
|
70
|
+
<template v-slot:item.errorIndeterminated="{ item }">
|
|
71
|
+
<div v-if="item.errorIndeterminated.length === 0">
|
|
72
|
+
<p style="margin-top: 5px; margin-bottom: 5px; font-size: 12px;">Pas d'erreur
|
|
73
|
+
d'accessibilité relevée à ce jour</p>
|
|
74
|
+
</div>
|
|
75
|
+
<div v-else v-for="item in item.errorIndeterminated" :key="index"
|
|
76
|
+
style="width: 100% !important; font-size: 12px; line-height: 15px;">
|
|
77
|
+
<p style="margin-top: 5px; margin-bottom: 5px;">
|
|
78
|
+
<span style="font-weight: bold;">{{ item.match('[0-9.]+')?.join('') || '' }} </span>
|
|
79
|
+
{{ item.replace(/[0-9.]/g, '') }}
|
|
80
|
+
</p>
|
|
81
|
+
</div>
|
|
82
|
+
</template>
|
|
83
|
+
|
|
84
|
+
<template v-slot:header.errorIndeterminated="{ header }">
|
|
85
|
+
Erreurs indéterminées (Tanaguru)
|
|
86
|
+
</template>
|
|
87
|
+
<template v-slot:header.solution="{ header }">
|
|
88
|
+
Solution
|
|
89
|
+
</template>
|
|
90
|
+
|
|
91
|
+
<template v-slot:header.href="{ header }" style="display:none">
|
|
92
|
+
<th v-if="false" style="display:none"></th>
|
|
93
|
+
</template>
|
|
94
|
+
|
|
95
|
+
<template v-slot:item.href="{ item }" style="display:none">
|
|
96
|
+
<td v-if="false">{{ item.someColumn }}</td>
|
|
97
|
+
</template>
|
|
98
|
+
</v-data-table>
|
|
99
|
+
</div>
|
|
100
|
+
`,
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
tags: ['!dev'],
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export const Legende: StoryObj = {
|
|
107
|
+
args: {
|
|
108
|
+
},
|
|
109
|
+
render: (args) => {
|
|
110
|
+
return {
|
|
111
|
+
components: { VIcon, VRow, VCol },
|
|
112
|
+
setup() {
|
|
113
|
+
return { args, checkIcon, iconAlert }
|
|
114
|
+
},
|
|
115
|
+
template: `
|
|
116
|
+
<p style="color: grey;font-size: 11px; margin-bottom: 12px;">Date de conception: 13/12/2024</p>
|
|
117
|
+
|
|
118
|
+
<VRow class="mt-2 mb-5">
|
|
119
|
+
<VCol cols="12" sm="12" class="m-2 p-2 v-col-auto">
|
|
120
|
+
<div style="font-size: 13px;">
|
|
121
|
+
<p>L'étude relève que la majorité des composants garantissent l'accessibilité numérique par défaut tel que défini par le RGAA. <br />Nous identifions néanmoins pour certains composants qu'un travail d'ajustement est nécessaire. Ce travail peut être réalisé directement par les produits.<br />Dans une démarche d'accélération de la fabrication, nous proposons pour chaque composant relevant d'un manque sur le sujet des solutions afin d'en faciliter la mise en conformité. Ces solutions peuvent être de nature : composant ou recommandation.</p>
|
|
122
|
+
<br />
|
|
123
|
+
<p>Pour chaque composant, nous indiquons les erreurs remontées par l'outil Tanaguru : Erreurs bloquantes et indéterminées.<br />Ces erreurs doivent être analysées contextuellement. Pour rappel, l'accessibilité numérique ne se mesure par sur des composants seuls dénués de contexte.<br />Une appréciation de la part du développeur est nécessaire pour en évaluer la pertinence.</p>
|
|
124
|
+
</div>
|
|
125
|
+
</VCol>
|
|
126
|
+
|
|
127
|
+
<VCol cols="12" sm="4" class="m-2 p-2 v-col-auto">
|
|
128
|
+
<p style="font-size: 13px;"><VIcon style="margin-right: 2px;" :icon="iconAlert" /> Composant non conforme par défaut.</p>
|
|
129
|
+
<p style="font-size: 13px;"><VIcon style="margin-right: 2px;" :icon="checkIcon" /> Composant conforme.</p>
|
|
130
|
+
</VCol>
|
|
131
|
+
|
|
132
|
+
</VRow>
|
|
133
|
+
|
|
134
|
+
`,
|
|
135
|
+
}
|
|
136
|
+
},
|
|
137
|
+
tags: ['!dev'],
|
|
138
|
+
}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
export const VuetifyItems = [
|
|
2
|
+
{
|
|
3
|
+
items: [
|
|
4
|
+
{
|
|
5
|
+
name: 'VTextField',
|
|
6
|
+
errorImportants: ['11.1.1 Un bouton adjacent au champ de formulaire lui fournit une étiquette visible et un élément <label> visuellement caché ou un attribut WAI-ARIA aria-label, aria-labelledby ou title lui fournit un nom accessible.'],
|
|
7
|
+
errorIndeterminated: [
|
|
8
|
+
'3.2.1 Dans chaque page web, le texte et le texte en image sans effet de graisse d’une taille restituée inférieure à 24px vérifient-ils une de ces conditions',
|
|
9
|
+
'11.13.1 La finalité d\'un champs de saisie peut-elle être déduite pour faciliter le remplissage automatique des champs avec les données de l\'utilisateur',
|
|
10
|
+
'12.9 Dans chaque page web, la navigation ne doit pas contenir de piège au clavier.',
|
|
11
|
+
|
|
12
|
+
],
|
|
13
|
+
solution: [
|
|
14
|
+
{
|
|
15
|
+
name: 'SyTextField',
|
|
16
|
+
href: '/?path=/docs/composants-formulaires-sytextfield--docs',
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Select',
|
|
23
|
+
errorImportants: [
|
|
24
|
+
|
|
25
|
+
'8.2 Pour chaque page web, le code source généré est-il valide selon le type de document spécifié',
|
|
26
|
+
'11.1.1 Un bouton adjacent au champ de formulaire lui fournit une étiquette visible et un élément <label> visuellement caché ou un attribut WAI-ARIA aria-label, aria-labelledby ou title lui fournit un nom accessible.',
|
|
27
|
+
'12.11 Dans chaque page web, les contenus additionnels apparaissant au survol, à la prise de focus ou à l’activation d’un composant d’interface sont-ils si nécessaire atteignables au clavier',
|
|
28
|
+
|
|
29
|
+
],
|
|
30
|
+
errorIndeterminated: [
|
|
31
|
+
'3.2.1 Dans chaque page web, le texte et le texte en image sans effet de graisse d’une taille restituée inférieure à 24px vérifient-ils une de ces conditions',
|
|
32
|
+
'10.8 Pour chaque page web, les contenus cachés ont-ils vocation à être ignorés par les technologies d’assistance',
|
|
33
|
+
'11.13 La finalité d’un champ de saisie peut-elle être déduite pour faciliter le remplissage automatique des champs avec les données de l’utilisateur',
|
|
34
|
+
'11.2.2 Chaque attribut title permet-il de connaître la fonction exacte du champ de formulaire auquel il est associé',
|
|
35
|
+
'11.2.3 Chaque étiquette implémentée via l’attribut WAI-ARIA aria-label permet-elle de connaître la fonction exacte du champ de formulaire auquel elle est associée',
|
|
36
|
+
'12.9 Dans chaque page web, la navigation ne doit pas contenir de piège au clavier.',
|
|
37
|
+
|
|
38
|
+
],
|
|
39
|
+
solution: [
|
|
40
|
+
{
|
|
41
|
+
name: 'SySelect',
|
|
42
|
+
href: '/?path=/docs/composants-formulaires-syselect--docs',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'SyInputSelect',
|
|
46
|
+
href: '/?path=/docs/composants-formulaires-syinputselect--docs',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'SyBtnSelect',
|
|
50
|
+
href: '/?path=/docs/composants-formulaires-sybtnselect--docs',
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
name: 'Divider',
|
|
56
|
+
errorImportants: [
|
|
57
|
+
|
|
58
|
+
],
|
|
59
|
+
errorIndeterminated: [
|
|
60
|
+
|
|
61
|
+
],
|
|
62
|
+
solution: [],
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'Buttons',
|
|
66
|
+
errorImportants: [
|
|
67
|
+
|
|
68
|
+
],
|
|
69
|
+
errorIndeterminated: [
|
|
70
|
+
|
|
71
|
+
],
|
|
72
|
+
solution: [],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: 'Chips',
|
|
76
|
+
errorImportants: [
|
|
77
|
+
|
|
78
|
+
],
|
|
79
|
+
errorIndeterminated: [
|
|
80
|
+
|
|
81
|
+
],
|
|
82
|
+
solution: [],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
name: 'Tooltip',
|
|
86
|
+
errorImportants: [
|
|
87
|
+
|
|
88
|
+
],
|
|
89
|
+
errorIndeterminated: [
|
|
90
|
+
|
|
91
|
+
],
|
|
92
|
+
solution: [],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
name: 'Cards',
|
|
96
|
+
errorImportants: [
|
|
97
|
+
'3.2.1 Dans chaque page web, le texte et le texte en image sans effet de graisse d’une taille restituée inférieure à 24px vérifient-ils une de ces conditions',
|
|
98
|
+
'8.2 Pour chaque page web, le code source généré est-il valide selon le type de document spécifié',
|
|
99
|
+
'11.1.1 Un bouton adjacent au champ de formulaire lui fournit une étiquette visible et un élément <label> visuellement caché ou un attribut WAI-ARIA aria-label, aria-labelledby ou title lui fournit un nom accessible.',
|
|
100
|
+
],
|
|
101
|
+
errorIndeterminated: [
|
|
102
|
+
|
|
103
|
+
],
|
|
104
|
+
solution: [{
|
|
105
|
+
name: 'En étude',
|
|
106
|
+
}],
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
name: 'Tabs',
|
|
110
|
+
errorImportants: [
|
|
111
|
+
'12.11 Dans chaque page web, les contenus additionnels apparaissant au survol, à la prise de focus ou à l’activation d’un composant d’interface sont-ils si nécessaire atteignables au clavier',
|
|
112
|
+
],
|
|
113
|
+
errorIndeterminated: [
|
|
114
|
+
|
|
115
|
+
],
|
|
116
|
+
solution: [{
|
|
117
|
+
name: 'En étude',
|
|
118
|
+
}],
|
|
119
|
+
},
|
|
120
|
+
|
|
121
|
+
{
|
|
122
|
+
name: 'Textarea',
|
|
123
|
+
errorImportants: [
|
|
124
|
+
'11.1.1 Un bouton adjacent au champ de formulaire lui fournit une étiquette visible et un élément <label> visuellement caché ou un attribut WAI-ARIA aria-label, aria-labelledby ou title lui fournit un nom accessible.',
|
|
125
|
+
],
|
|
126
|
+
errorIndeterminated: [
|
|
127
|
+
|
|
128
|
+
'3.2.1 Dans chaque page web, le texte et le texte en image sans effet de graisse d’une taille restituée inférieure à 24px vérifient-ils une de ces conditions',
|
|
129
|
+
'10.8 Pour chaque page web, les contenus cachés ont-ils vocation à être ignorés par les technologies d’assistance',
|
|
130
|
+
'11.13 La finalité d’un champ de saisie peut-elle être déduite pour faciliter le remplissage automatique des champs avec les données de l’utilisateur',
|
|
131
|
+
'12.9 Dans chaque page web, la navigation ne doit pas contenir de piège au clavier.',
|
|
132
|
+
|
|
133
|
+
],
|
|
134
|
+
solution: [{
|
|
135
|
+
name: 'En étude',
|
|
136
|
+
}],
|
|
137
|
+
},
|
|
138
|
+
|
|
139
|
+
{
|
|
140
|
+
name: 'Sliders',
|
|
141
|
+
errorImportants: [
|
|
142
|
+
'11.1.1 Un bouton adjacent au champ de formulaire lui fournit une étiquette visible et un élément <label> visuellement caché ou un attribut WAI-ARIA aria-label, aria-labelledby ou title lui fournit un nom accessible.',
|
|
143
|
+
],
|
|
144
|
+
errorIndeterminated: [
|
|
145
|
+
|
|
146
|
+
],
|
|
147
|
+
solution: [{
|
|
148
|
+
name: 'En étude',
|
|
149
|
+
}],
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
name: 'Table',
|
|
153
|
+
errorImportants: [
|
|
154
|
+
'5.4 Pour chaque tableau de données ayant un titre, le titre est-il correctement associé au tableau de données',
|
|
155
|
+
],
|
|
156
|
+
errorIndeterminated: [
|
|
157
|
+
|
|
158
|
+
],
|
|
159
|
+
solution: [{
|
|
160
|
+
name: 'En étude',
|
|
161
|
+
}],
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
name: 'Expansion panels',
|
|
165
|
+
errorImportants: [
|
|
166
|
+
|
|
167
|
+
],
|
|
168
|
+
errorIndeterminated: [
|
|
169
|
+
|
|
170
|
+
'10.8 Pour chaque page web, les contenus cachés ont-ils vocation à être ignorés par les technologies d’assistance',
|
|
171
|
+
|
|
172
|
+
],
|
|
173
|
+
solution: [{
|
|
174
|
+
name: 'En étude',
|
|
175
|
+
}],
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
name: 'Breadcrumbs',
|
|
179
|
+
errorImportants: [
|
|
180
|
+
'3.2.1 Dans chaque page web, le texte et le texte en image sans effet de graisse d’une taille restituée inférieure à 24px vérifient-ils une de ces conditions',
|
|
181
|
+
],
|
|
182
|
+
errorIndeterminated: [
|
|
183
|
+
|
|
184
|
+
],
|
|
185
|
+
solution: [{
|
|
186
|
+
name: 'En étude',
|
|
187
|
+
}],
|
|
188
|
+
},
|
|
189
|
+
|
|
190
|
+
{
|
|
191
|
+
name: 'Progress Linear',
|
|
192
|
+
errorImportants: [
|
|
193
|
+
'8.2 Pour chaque page web, le code source généré est-il valide selon le type de document spécifié',
|
|
194
|
+
'11.1.1 Un bouton adjacent au champ de formulaire lui fournit une étiquette visible et un élément <label> visuellement caché ou un attribut WAI-ARIA aria-label, aria-labelledby ou title lui fournit un nom accessible.',
|
|
195
|
+
],
|
|
196
|
+
errorIndeterminated: [
|
|
197
|
+
|
|
198
|
+
],
|
|
199
|
+
solution: [{
|
|
200
|
+
name: 'En étude',
|
|
201
|
+
}],
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
name: 'Progress circular',
|
|
205
|
+
errorImportants: [
|
|
206
|
+
'1.1.5 Chaque image vectorielle (balise <svg>) porteuse d’information, vérifie-t-elle ces conditions -La balise <svg> possède un attribut WAI-ARIA role="img" ;',
|
|
207
|
+
'1.2 Chaque image de décoration est-elle correctement ignorée par les technologies d’assistance',
|
|
208
|
+
'8.2 Pour chaque page web, le code source généré est-il valide selon le type de document spécifié',
|
|
209
|
+
'11.1.1 Un bouton adjacent au champ de formulaire lui fournit une étiquette visible et un élément <label> visuellement caché ou un attribut WAI-ARIA aria-label, aria-labelledby ou title lui fournit un nom accessible.',
|
|
210
|
+
],
|
|
211
|
+
errorIndeterminated: [
|
|
212
|
+
|
|
213
|
+
],
|
|
214
|
+
solution: [{
|
|
215
|
+
name: 'En étude',
|
|
216
|
+
}],
|
|
217
|
+
},
|
|
218
|
+
|
|
219
|
+
{
|
|
220
|
+
name: 'Lists',
|
|
221
|
+
errorImportants: [
|
|
222
|
+
'3.2.1 Dans chaque page web, le texte et le texte en image sans effet de graisse d’une taille restituée inférieure à 24px vérifient-ils une de ces conditions',
|
|
223
|
+
'7.4 Pour chaque script qui initie un changement de contexte, l’utilisateur est-il averti ou en a-t-il le contrôle',
|
|
224
|
+
'8.2 Pour chaque page web, le code source généré est-il valide selon le type de document spécifié',
|
|
225
|
+
'11.1.1 Un bouton adjacent au champ de formulaire lui fournit une étiquette visible et un élément <label> visuellement caché ou un attribut WAI-ARIA aria-label, aria-labelledby ou title lui fournit un nom accessible.',
|
|
226
|
+
],
|
|
227
|
+
errorIndeterminated: [
|
|
228
|
+
|
|
229
|
+
],
|
|
230
|
+
solution: [{
|
|
231
|
+
name: 'En étude',
|
|
232
|
+
}],
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
name: 'Steppers',
|
|
236
|
+
errorImportants: [
|
|
237
|
+
'3.2.1 Dans chaque page web, le texte et le texte en image sans effet de graisse d’une taille restituée inférieure à 24px vérifient-ils une de ces conditions',
|
|
238
|
+
|
|
239
|
+
],
|
|
240
|
+
errorIndeterminated: [
|
|
241
|
+
'3.1.2 Pour chaque indication de couleur donnée par un texte, l’information ne doit pas être donnée uniquement par la couleur. Cette règle est-elle respectée ?',
|
|
242
|
+
],
|
|
243
|
+
solution: [{
|
|
244
|
+
name: 'En étude',
|
|
245
|
+
}],
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
name: 'Combobox',
|
|
249
|
+
errorImportants: [
|
|
250
|
+
'8.2 Pour chaque page web, le code source généré est-il valide selon le type de document spécifié',
|
|
251
|
+
'11.1.1 Un bouton adjacent au champ de formulaire lui fournit une étiquette visible et un élément <label> visuellement caché ou un attribut WAI-ARIA aria-label, aria-labelledby ou title lui fournit un nom accessible.',
|
|
252
|
+
'12.11 Dans chaque page web, les contenus additionnels apparaissant au survol, à la prise de focus ou à l’activation d’un composant d’interface sont-ils si nécessaire atteignables au clavier',
|
|
253
|
+
],
|
|
254
|
+
errorIndeterminated: [
|
|
255
|
+
'3.2.1 Dans chaque page web, le texte et le texte en image sans effet de graisse d’une taille restituée inférieure à 24px vérifient-ils une de ces conditions',
|
|
256
|
+
'10.8 Pour chaque page web, les contenus cachés ont-ils vocation à être ignorés par les technologies d’assistance',
|
|
257
|
+
'11.13.1 La finalité d\'un champs de saisie peut-elle être déduite pour faciliter le remplissage automatique des champs avec les données de l\'utilisateur',
|
|
258
|
+
|
|
259
|
+
],
|
|
260
|
+
solution: [{
|
|
261
|
+
name: 'En étude',
|
|
262
|
+
}],
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
name: 'Autocomplete',
|
|
266
|
+
errorImportants: [
|
|
267
|
+
'3.2.1 Dans chaque page web, le texte et le texte en image sans effet de graisse d’une taille restituée inférieure à 24px vérifient-ils une de ces conditions',
|
|
268
|
+
'8.2 Pour chaque page web, le code source généré est-il valide selon le type de document spécifié',
|
|
269
|
+
'11.1.1 Un bouton adjacent au champ de formulaire lui fournit une étiquette visible et un élément <label> visuellement caché ou un attribut WAI-ARIA aria-label, aria-labelledby ou title lui fournit un nom accessible.',
|
|
270
|
+
'12.11 Dans chaque page web, les contenus additionnels apparaissant au survol, à la prise de focus ou à l’activation d’un composant d’interface sont-ils si nécessaire atteignables au clavier',
|
|
271
|
+
],
|
|
272
|
+
errorIndeterminated: [
|
|
273
|
+
'3.2.1 Dans chaque page web, le texte et le texte en image sans effet de graisse d’une taille restituée inférieure à 24px vérifient-ils une de ces conditions',
|
|
274
|
+
'10.8 Pour chaque page web, les contenus cachés ont-ils vocation à être ignorés par les technologies d’assistance',
|
|
275
|
+
'11.13.1 La finalité d\'un champs de saisie peut-elle être déduite pour faciliter le remplissage automatique des champs avec les données de l\'utilisateur',
|
|
276
|
+
|
|
277
|
+
],
|
|
278
|
+
solution: [{
|
|
279
|
+
name: 'En étude',
|
|
280
|
+
}],
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
name: 'Switches',
|
|
284
|
+
errorImportants: [
|
|
285
|
+
'8.2 Pour chaque page web, le code source généré est-il valide selon le type de document spécifié',
|
|
286
|
+
|
|
287
|
+
],
|
|
288
|
+
errorIndeterminated: [
|
|
289
|
+
'10.8 Pour chaque page web, les contenus cachés ont-ils vocation à être ignorés par les technologies d’assistance',
|
|
290
|
+
'11.2.3 Chaque étiquette implémentée via l’attribut WAI-ARIA aria-label permet-elle de connaître la fonction exacte du champ de formulaire auquel elle est associée',
|
|
291
|
+
'12.9 Dans chaque page web, la navigation ne doit pas contenir de piège au clavier.',
|
|
292
|
+
|
|
293
|
+
],
|
|
294
|
+
solution: [{
|
|
295
|
+
name: 'En étude',
|
|
296
|
+
}],
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
name: 'Checkboxes',
|
|
300
|
+
errorImportants: [
|
|
301
|
+
'8.2 Pour chaque page web, le code source généré est-il valide selon le type de document spécifié',
|
|
302
|
+
|
|
303
|
+
],
|
|
304
|
+
errorIndeterminated: [
|
|
305
|
+
'10.8 Pour chaque page web, les contenus cachés ont-ils vocation à être ignorés par les technologies d’assistance',
|
|
306
|
+
'11.2.3 Chaque étiquette implémentée via l’attribut WAI-ARIA aria-label permet-elle de connaître la fonction exacte du champ de formulaire auquel elle est associée',
|
|
307
|
+
'12.9 Dans chaque page web, la navigation ne doit pas contenir de piège au clavier.',
|
|
308
|
+
|
|
309
|
+
],
|
|
310
|
+
solution: [{
|
|
311
|
+
name: 'En étude',
|
|
312
|
+
}],
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
name: 'RadioButtons',
|
|
316
|
+
errorImportants: [
|
|
317
|
+
'8.2 Pour chaque page web, le code source généré est-il valide selon le type de document spécifié',
|
|
318
|
+
|
|
319
|
+
],
|
|
320
|
+
errorIndeterminated: [
|
|
321
|
+
'10.8 Pour chaque page web, les contenus cachés ont-ils vocation à être ignorés par les technologies d’assistance',
|
|
322
|
+
'11.2.3 Chaque étiquette implémentée via l’attribut WAI-ARIA aria-label permet-elle de connaître la fonction exacte du champ de formulaire auquel elle est associée',
|
|
323
|
+
'12.9 Dans chaque page web, la navigation ne doit pas contenir de piège au clavier.',
|
|
324
|
+
|
|
325
|
+
],
|
|
326
|
+
solution: [{
|
|
327
|
+
name: 'En étude',
|
|
328
|
+
}],
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
name: 'OTP Input',
|
|
332
|
+
errorImportants: [
|
|
333
|
+
'11.1 Chaque champ de formulaire a-t-il une étiquette',
|
|
334
|
+
'11.4 Dans chaque formulaire, chaque étiquette de champ et son champ associé sont-ils accolés',
|
|
335
|
+
|
|
336
|
+
],
|
|
337
|
+
errorIndeterminated: [
|
|
338
|
+
'10.8 Pour chaque page web, les contenus cachés ont-ils vocation à être ignorés par les technologies d’assistance',
|
|
339
|
+
'11.2.3 Chaque étiquette implémentée via l’attribut WAI-ARIA aria-label permet-elle de connaître la fonction exacte du champ de formulaire auquel elle est associée',
|
|
340
|
+
'11.13.1 La finalité d\'un champs de saisie peut-elle être déduite pour faciliter le remplissage automatique des champs avec les données de l\'utilisateur',
|
|
341
|
+
|
|
342
|
+
],
|
|
343
|
+
solution: [{
|
|
344
|
+
name: 'En étude',
|
|
345
|
+
}],
|
|
346
|
+
},
|
|
347
|
+
],
|
|
348
|
+
},
|
|
349
|
+
|
|
350
|
+
]
|