@cnamts/synapse 1.0.5 → 1.0.7
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-BQpRKTju.js → DateFilter-CHDLz2EO.js} +1 -1
- package/dist/{NumberFilter-BykSKt2D.js → NumberFilter-DXNQ4Uls.js} +1 -1
- package/dist/{PeriodFilter-Cks6NygV.js → PeriodFilter-C8Qf3Jcn.js} +1 -1
- package/dist/{SelectFilter-DEL5dHd_.js → SelectFilter-B2Ejs4Cb.js} +1 -1
- package/dist/{TextFilter-0RAFj7Oe.js → TextFilter-CfR5_A1S.js} +1 -1
- package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordion.d.ts +103 -0
- package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.d.ts +105 -0
- package/dist/components/Amelipro/AmeliproAccordionGroup/AmeliproAccordionGroup.d.ts +116 -0
- package/dist/components/Amelipro/AmeliproAccordionGroup/types.d.ts +4 -0
- package/dist/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.d.ts +220 -0
- package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.d.ts +68 -0
- package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.d.ts +70 -0
- package/dist/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.d.ts +204 -0
- package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +26 -26
- package/dist/components/Amelipro/AmeliproBadge/AmeliproBadge.d.ts +59 -0
- package/dist/components/Amelipro/AmeliproBtn/AmeliproBtn.d.ts +3 -3
- package/dist/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.d.ts +132 -0
- package/dist/components/Amelipro/AmeliproCaptcha/types.d.ts +5 -0
- package/dist/components/Amelipro/AmeliproCard/AmeliproCard.d.ts +3 -3
- package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarousel.d.ts +214 -0
- package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/AmeliproCarouselItem.d.ts +70 -0
- package/dist/components/Amelipro/AmeliproCarousel/types.d.ts +7 -0
- package/dist/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.d.ts +125 -0
- package/dist/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.d.ts +126 -0
- package/dist/components/Amelipro/AmeliproCustomSelector/types.d.ts +6 -0
- package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproIllustratedDataTile/AmeliproIllustratedDataTile.d.ts +3 -3
- package/dist/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproResultList/AmeliproResultList.d.ts +164 -0
- package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +27 -27
- package/dist/components/Amelipro/AmeliproStateTile/AmeliproStateTile.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproTable/AmeliproTable.d.ts +190 -0
- package/dist/components/Amelipro/AmeliproTable/types.d.ts +34 -0
- package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +32 -32
- package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +6 -6
- package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +7 -7
- package/dist/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.d.ts +2 -2
- package/dist/components/Amelipro/AmeliproTooltips/AmeliproTooltips.d.ts +2 -2
- package/dist/components/Amelipro/types.d.ts +6 -0
- package/dist/components/ChipList/ChipList.d.ts +4 -0
- package/dist/components/ChipList/locales.d.ts +4 -2
- package/dist/components/CookieBanner/CookieBanner.d.ts +1 -1
- package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +8 -8
- package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +454 -8
- package/dist/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.d.ts +6 -1
- package/dist/components/Customs/SyCheckbox/SyCheckbox.d.ts +2 -0
- package/dist/components/Customs/SyTabs/SyTabs.d.ts +71 -0
- package/dist/components/Customs/SyTabs/config.d.ts +17 -0
- package/dist/components/Customs/SyTabs/types.d.ts +11 -0
- package/dist/components/Customs/SyTextField/SyTextField.d.ts +12 -10
- package/dist/components/DataList/DataList.d.ts +10 -1
- package/dist/components/DataListGroup/DataListGroup.d.ts +10 -1
- package/dist/components/DataListItem/DataListItem.d.ts +1 -1
- package/dist/components/DataListItem/config.d.ts +1 -1
- package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +4825 -244
- package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +58 -29
- package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +28 -10
- package/dist/components/DatePicker/composables/useDateInputEditing.d.ts +18 -8
- package/dist/components/DatePicker/composables/useKeyboardEvents.d.ts +41 -0
- package/dist/components/DatePicker/composables/useManualDateValidation.d.ts +4 -9
- package/dist/components/DatePicker/composables/useTodayButton.d.ts +1 -0
- package/dist/components/DatePicker/utils/dateFormattingUtils.d.ts +72 -0
- package/dist/components/DatePicker/utils/validationUtils.d.ts +38 -0
- package/dist/components/DialogBox/DialogBox.d.ts +219 -0
- package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.d.ts +9 -3
- package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.d.ts +6 -1
- package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.d.ts +11 -1
- package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.d.ts +11 -1
- package/dist/components/HeaderBar/HeaderBurgerMenu/locals.d.ts +2 -0
- package/dist/components/HeaderBar/HeaderBurgerMenu/useMenuPosition.d.ts +4 -0
- package/dist/components/HeaderLoading/HeaderLoading.d.ts +27 -0
- package/dist/components/HeaderNavigationBar/HeaderNavigationBar.d.ts +110 -3
- package/dist/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.d.ts +19 -1
- package/dist/components/LangBtn/LangBtn.d.ts +2 -2
- package/dist/components/NirField/NirField.d.ts +30 -20
- package/dist/components/PeriodField/PeriodField.d.ts +10949 -1783
- package/dist/components/PhoneField/PhoneField.d.ts +1866 -2
- package/dist/components/PhoneField/indicatifs.d.ts +1 -0
- package/dist/components/PhoneField/locales.d.ts +1 -0
- package/dist/components/RangeField/RangeField.d.ts +1 -1
- package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +1 -1
- package/dist/components/SubHeader/SubHeader.d.ts +8 -0
- package/dist/components/SubHeader/locales.d.ts +1 -0
- package/dist/components/SyTextArea/SyTextArea.d.ts +6 -6
- package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -4
- package/dist/components/Tables/SyTable/SyTable.d.ts +5 -4
- package/dist/components/Tables/common/SyTablePagination.d.ts +458 -7
- package/dist/components/Tables/common/organizeColumns/OrganizeColumns.d.ts +2 -2
- package/dist/components/Tables/common/types.d.ts +2 -0
- package/dist/components/index.d.ts +13 -0
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/usePagination.d.ts +16 -0
- package/dist/design-system-v3.js +174 -160
- package/dist/design-system-v3.umd.cjs +290 -281
- package/dist/directives/lockFocus.d.ts +17 -0
- package/dist/{main-Co2P_lBt.js → main-C66C1BkG.js} +14406 -11554
- package/dist/style.css +1 -1
- package/package.json +4 -1
- package/src/assets/amelipro/apTheme.scss +149 -0
- package/src/assets/amelipro/apTokens.scss +0 -148
- package/src/assets/amelipro/icons.ts +38 -11
- package/src/assets/overrides/_btns.scss +15 -0
- package/src/assets/overrides/_container.scss +36 -0
- package/src/assets/overrides/_forms.scss +7 -0
- package/src/assets/{_spacers.scss → overrides/_spacers.scss} +0 -7
- package/src/assets/overrides/_tables.scss +18 -0
- package/src/assets/overrides/_tooltips.scss +10 -0
- package/src/assets/overrides/_typography.scss +196 -0
- package/src/assets/settings.scss +11 -51
- package/src/assets/themes.scss +10 -0
- package/src/assets/tokens.scss +9 -156
- package/src/components/Accordion/composables/__tests__/useAccordionGroupCommunication.spec.ts +80 -40
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.mdx +15 -0
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.stories.ts +83 -0
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.vue +86 -0
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.vue +242 -0
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/__tests__/AmeliproAccordionTemplate.spec.ts +20 -0
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/__tests__/__snapshots__/AmeliproAccordionTemplate.spec.ts.snap +124 -0
- package/src/components/Amelipro/AmeliproAccordion/__tests__/AmeliproAccordion.spec.ts +20 -0
- package/src/components/Amelipro/AmeliproAccordion/__tests__/__snapshots__/AmeliproAccordion.spec.ts.snap +124 -0
- package/src/components/Amelipro/AmeliproAccordionGroup/AmeliproAccordionGroup.mdx +20 -0
- package/src/components/Amelipro/AmeliproAccordionGroup/AmeliproAccordionGroup.stories.ts +135 -0
- package/src/components/Amelipro/AmeliproAccordionGroup/AmeliproAccordionGroup.vue +107 -0
- package/src/components/Amelipro/AmeliproAccordionGroup/__tests__/AmeliproAccordionGroup.spec.ts +37 -0
- package/src/components/Amelipro/AmeliproAccordionGroup/__tests__/__snapshots__/AmeliproAccordionGroup.spec.ts.snap +513 -0
- package/src/components/Amelipro/AmeliproAccordionGroup/types.d.ts +4 -0
- package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.mdx +16 -0
- package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.stories.ts +300 -0
- package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +288 -0
- package/src/components/Amelipro/AmeliproAccordionList/__tests__/AmeliproAccordionList.spec.ts +38 -0
- package/src/components/Amelipro/AmeliproAccordionList/__tests__/__snapshots__/AmeliproAccordionList.spec.ts.snap +1712 -0
- package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.mdx +19 -0
- package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.stories.ts +68 -0
- package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.vue +66 -0
- package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.vue +145 -0
- package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/__tests__/AmeliproAccordionResultTemplate.spec.ts +24 -0
- package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/__tests__/__snapshots__/AmeliproAccordionResultTemplate.spec.ts.snap +127 -0
- package/src/components/Amelipro/AmeliproAccordionResult/__tests__/AmeliproAccordionResult.spec.ts +24 -0
- package/src/components/Amelipro/AmeliproAccordionResult/__tests__/__snapshots__/AmeliproAccordionResult.spec.ts.snap +123 -0
- package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.mdx +20 -0
- package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.stories.ts +273 -0
- package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +275 -0
- package/src/components/Amelipro/AmeliproAccordionResultList/__tests__/AmeliproAccordionResultList.spec.ts +38 -0
- package/src/components/Amelipro/AmeliproAccordionResultList/__tests__/__snapshots__/AmeliproAccordionResultList.spec.ts.snap +1593 -0
- package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.mdx +15 -0
- package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.stories.ts +54 -0
- package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.vue +76 -0
- package/src/components/Amelipro/AmeliproBadge/__tests__/AmeliproBadge.spec.ts +20 -0
- package/src/components/Amelipro/AmeliproBadge/__tests__/__snapshots__/AmeliproBadge.spec.ts.snap +19 -0
- package/src/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.mdx +15 -0
- package/src/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.stories.ts +87 -0
- package/src/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.vue +233 -0
- package/src/components/Amelipro/AmeliproCaptcha/__tests__/AmeliproCaptcha.spec.ts +24 -0
- package/src/components/Amelipro/AmeliproCaptcha/__tests__/__snapshots__/AmeliproCaptcha.spec.ts.snap +384 -0
- package/src/components/Amelipro/AmeliproCaptcha/types.d.ts +5 -0
- package/src/components/Amelipro/AmeliproCarousel/AmeliproCarousel.mdx +15 -0
- package/src/components/Amelipro/AmeliproCarousel/AmeliproCarousel.stories.ts +191 -0
- package/src/components/Amelipro/AmeliproCarousel/AmeliproCarousel.vue +263 -0
- package/src/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/AmeliproCarouselItem.vue +93 -0
- package/src/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/__tests__/AmeliproCarouselItem.spec.ts +24 -0
- package/src/components/Amelipro/AmeliproCarousel/AmeliproCarouselItem/__tests__/__snapshots__/AmeliproCarouselItem.spec.ts.snap +43 -0
- package/src/components/Amelipro/AmeliproCarousel/__tests__/AmeliproCarousel.spec.ts +40 -0
- package/src/components/Amelipro/AmeliproCarousel/__tests__/__snapshots__/AmeliproCarousel.spec.ts.snap +342 -0
- package/src/components/Amelipro/AmeliproCarousel/types.d.ts +8 -0
- package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.mdx +18 -0
- package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.stories.ts +67 -0
- package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.vue +233 -0
- package/src/components/Amelipro/AmeliproClickableTile/tests/AmeliproClickableTile.spec.ts +21 -0
- package/src/components/Amelipro/AmeliproClickableTile/tests/__snapshots__/AmeliproClickableTile.spec.ts.snap +140 -0
- package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.mdx +15 -0
- package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.stories.ts +143 -0
- package/src/components/Amelipro/AmeliproCustomSelector/AmeliproCustomSelector.vue +351 -0
- package/src/components/Amelipro/AmeliproCustomSelector/__tests__/AmeliproCustomSelector.spec.ts +50 -0
- package/src/components/Amelipro/AmeliproCustomSelector/__tests__/__snapshots__/AmeliproCustomSelector.spec.ts.snap +186 -0
- package/src/components/Amelipro/AmeliproCustomSelector/types.d.ts +6 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeader.vue +7 -1
- package/src/components/Amelipro/AmeliproHeader/tests/__snapshots__/AmeliproHeader.spec.ts.snap +5 -711
- package/src/components/Amelipro/AmeliproIcon/iconList.ts +6 -0
- package/src/components/Amelipro/AmeliproPageLayout/tests/__snapshots__/AmeliproPageLayout.spec.ts.snap +5 -711
- package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.mdx +15 -0
- package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.stories.ts +264 -0
- package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.vue +231 -0
- package/src/components/Amelipro/AmeliproResultList/__tests__/AmeliproResultList.spec.ts +37 -0
- package/src/components/Amelipro/AmeliproResultList/__tests__/__snapshots__/AmeliproResultList.spec.ts.snap +434 -0
- package/src/components/Amelipro/AmeliproTable/AmeliproTable.mdx +22 -0
- package/src/components/Amelipro/AmeliproTable/AmeliproTable.stories.ts +550 -0
- package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +422 -0
- package/src/components/Amelipro/AmeliproTable/__tests__/AmeliproTable.spec.ts +72 -0
- package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +424 -0
- package/src/components/Amelipro/AmeliproTable/types.d.ts +34 -0
- package/src/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.stories.ts +2 -2
- package/src/components/Amelipro/ServiceMenu/ServiceMenu.vue +12 -1
- package/src/components/Amelipro/ServiceMenu/tests/__snapshots__/ServiceMenu.spec.ts.snap +0 -820
- package/src/components/Amelipro/types.ts +8 -0
- package/src/components/ChipList/Accessibilite.stories.ts +4 -0
- package/src/components/ChipList/ChipList.vue +185 -42
- package/src/components/ChipList/locales.ts +4 -2
- package/src/components/ChipList/tests/chipList.spec.ts +7 -4
- package/src/components/CollapsibleList/CollapsibleList.vue +0 -2
- package/src/components/CookieBanner/CookieBanner.vue +1 -3
- package/src/components/CopyBtn/CopyBtn.vue +9 -2
- package/src/components/CopyBtn/tests/CopyBtn.spec.ts +3 -1
- package/src/components/Customs/Selects/SelectOverview.mdx +18 -15
- package/src/components/Customs/Selects/SyBtnSelect/SyBtnSelect.stories.ts +10 -10
- package/src/components/Customs/Selects/SySelect/Accessibilite.mdx +7 -0
- package/src/components/Customs/Selects/SySelect/Accessibilite.stories.ts +4 -1
- package/src/components/Customs/Selects/SySelect/SySelect.stories.ts +92 -4
- package/src/components/Customs/Selects/SySelect/SySelect.vue +373 -56
- package/src/components/Customs/Selects/SySelect/composables/tests/useSySelectKeyboard.spec.ts +14 -5
- package/src/components/Customs/Selects/SySelect/composables/useSySelectKeyboard.ts +129 -12
- package/src/components/Customs/SyCheckbox/SyCheckbox.mdx +3 -1
- package/src/components/Customs/SyCheckbox/SyCheckbox.stories.ts +165 -0
- package/src/components/Customs/SyCheckbox/SyCheckbox.vue +28 -9
- package/src/components/Customs/SyIcon/SyIcon.spec.ts +3 -0
- package/src/components/Customs/SyTabs/Accessibilite.mdx +309 -0
- package/src/components/Customs/SyTabs/SyTabs.mdx +117 -0
- package/src/components/Customs/SyTabs/SyTabs.stories.ts +354 -0
- package/src/components/Customs/SyTabs/SyTabs.vue +350 -0
- package/src/components/Customs/SyTabs/config.ts +17 -0
- package/src/components/Customs/SyTabs/tests/SyTabs.spec.ts +425 -0
- package/src/components/Customs/SyTabs/types.ts +12 -0
- package/src/components/Customs/SyTextField/Accessibilite.stories.ts +3 -1
- package/src/components/Customs/SyTextField/SyTextField.mdx +3 -0
- package/src/components/Customs/SyTextField/SyTextField.stories.ts +221 -7
- package/src/components/Customs/SyTextField/SyTextField.vue +226 -29
- package/src/components/DataList/Accessibilite.stories.ts +4 -0
- package/src/components/DataList/DataList.vue +52 -47
- package/src/components/DataListGroup/Accessibilite.stories.ts +4 -0
- package/src/components/DataListGroup/DataListGroup.vue +32 -15
- package/src/components/DataListItem/DataListItem.vue +72 -65
- package/src/components/DataListItem/config.ts +1 -1
- package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +3 -3
- package/src/components/DatePicker/CalendarMode/DatePicker.vue +59 -18
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +174 -0
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +421 -636
- package/src/components/DatePicker/DatePickerValidationExample/CalendarMode.stories.ts +215 -0
- package/src/components/DatePicker/DatePickerValidationExample/ComplexDatePicker.stories.ts +218 -0
- package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.mdx +2 -0
- package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts +287 -1
- package/src/components/DatePicker/DatePickerValidationExample/DateTextInput.stories.ts +218 -0
- package/src/components/DatePicker/DatePickerValidationExample/MultiMode.stories.ts +281 -0
- package/src/components/DatePicker/DateTextInput/DateRange.stories.ts +1 -1
- package/src/components/DatePicker/DateTextInput/DateTextInput.events.spec.ts +17 -4
- package/src/components/DatePicker/DateTextInput/DateTextInput.range.spec.ts +111 -18
- package/src/components/DatePicker/DateTextInput/DateTextInput.spec.ts +238 -6
- package/src/components/DatePicker/DateTextInput/DateTextInput.vue +716 -759
- package/src/components/DatePicker/composables/tests/useDateInputEditing.spec.ts +4 -4
- package/src/components/DatePicker/composables/tests/useDisplayedDateString.spec.ts +17 -10
- package/src/components/DatePicker/composables/tests/useManualDateValidation.spec.ts +11 -3
- package/src/components/DatePicker/composables/useDateInputEditing.ts +119 -225
- package/src/components/DatePicker/composables/useDisplayedDateString.ts +18 -4
- package/src/components/DatePicker/composables/useKeyboardEvents.ts +149 -0
- package/src/components/DatePicker/composables/useManualDateValidation.ts +27 -68
- package/src/components/DatePicker/composables/useTodayButton.ts +13 -1
- package/src/components/DatePicker/utils/dateFormattingUtils.ts +293 -0
- package/src/components/DatePicker/utils/validationUtils.ts +90 -0
- package/src/components/DialogBox/Accessibilite.stories.ts +4 -0
- package/src/components/DialogBox/DialogBox.stories.ts +22 -10
- package/src/components/DialogBox/DialogBox.vue +89 -22
- package/src/components/DialogBox/tests/DialogBox.spec.ts +22 -0
- package/src/components/DialogBox/tests/__snapshots__/DialogBox.spec.ts.snap +12 -6
- package/src/components/FileUpload/tests/FileUpload.spec.ts +3 -0
- package/src/components/FooterBar/FooterBar.vue +1 -0
- package/src/components/HeaderBar/Accessibilite.stories.ts +4 -0
- package/src/components/HeaderBar/HeaderBar.mdx +47 -22
- package/src/components/HeaderBar/HeaderBar.stories.ts +54 -13
- package/src/components/HeaderBar/HeaderBar.vue +2 -1
- package/src/components/HeaderBar/HeaderBurgerMenu/Accessibilite.stories.ts +4 -0
- package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.stories.ts +160 -82
- package/src/components/HeaderBar/HeaderBurgerMenu/HeaderBurgerMenu.vue +41 -56
- package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.vue +10 -3
- package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/HeaderMenuSection.vue +41 -18
- package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuSection/tests/HeaderMenuSection.spec.ts +7 -2
- package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.stories.ts +36 -9
- package/src/components/HeaderBar/HeaderBurgerMenu/HeaderSubMenu/HeaderSubMenu.vue +41 -9
- package/src/components/HeaderBar/HeaderBurgerMenu/locals.ts +2 -0
- package/src/components/HeaderBar/HeaderBurgerMenu/tests/HeaderBurgerMenu.spec.ts +1 -1
- package/src/components/HeaderBar/HeaderBurgerMenu/tests/__snapshots__/HeaderBurgerMenu.spec.ts.snap +8 -3
- package/src/components/HeaderBar/HeaderBurgerMenu/useMenuPosition.ts +50 -0
- package/src/components/HeaderBar/HeaderLogo/HeaderLogo.vue +5 -5
- package/src/components/HeaderBar/HeaderMenuBtn/HeaderMenuBtn.vue +7 -4
- package/src/components/HeaderBar/locales.ts +1 -1
- package/src/components/HeaderBar/tests/__snapshots__/HeaderBar.spec.ts.snap +2 -1
- package/src/components/HeaderLoading/Accessibilite.mdx +429 -8
- package/src/components/HeaderLoading/Accessibilite.stories.ts +4 -0
- package/src/components/HeaderLoading/HeaderLoading.vue +59 -1
- package/src/components/HeaderNavigationBar/HeaderNavigationBar.mdx +17 -2
- package/src/components/HeaderNavigationBar/HeaderNavigationBar.stories.ts +91 -2
- package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +37 -1
- package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +276 -21
- package/src/components/HeaderNavigationBar/tests/HeaderNavigationBar.spec.ts +4 -2
- package/src/components/LangBtn/LangBtn.vue +0 -3
- package/src/components/LogoBrandSection/Accessibilite.stories.ts +4 -1
- package/src/components/LogoBrandSection/LogoBrandSection.stories.ts +2 -2
- package/src/components/LogoBrandSection/LogoBrandSection.vue +13 -8
- package/src/components/LogoBrandSection/locales.ts +1 -1
- package/src/components/LogoBrandSection/tests/LogoBrandSection.spec.ts +1 -1
- package/src/components/LogoBrandSection/tests/__snapshots__/LogoBrandSection.spec.ts.snap +6 -4
- package/src/components/NirField/NirField.mdx +3 -0
- package/src/components/NirField/NirField.vue +15 -6
- package/src/components/NirField/tests/NirField.spec.ts +159 -12
- package/src/components/PasswordField/PasswordField.mdx +3 -0
- package/src/components/PeriodField/PeriodField.mdx +2 -0
- package/src/components/PeriodField/PeriodField.stories.ts +195 -0
- package/src/components/PhoneField/Accessibilite.stories.ts +4 -0
- package/src/components/PhoneField/PhoneField.mdx +3 -1
- package/src/components/PhoneField/PhoneField.stories.ts +285 -1
- package/src/components/PhoneField/PhoneField.vue +228 -95
- package/src/components/PhoneField/indicatifs.ts +102 -102
- package/src/components/PhoneField/locales.ts +1 -0
- package/src/components/PhoneField/tests/PhoneField.spec.ts +429 -2
- package/src/components/SkipLink/SkipLink.vue +3 -31
- package/src/components/SkipLink/tests/skipLink.spec.ts +0 -21
- package/src/components/SubHeader/Accessibilite.stories.ts +8 -0
- package/src/components/SubHeader/SubHeader.mdx +1 -0
- package/src/components/SubHeader/SubHeader.stories.ts +179 -60
- package/src/components/SubHeader/SubHeader.vue +45 -15
- package/src/components/SubHeader/locales.ts +1 -0
- package/src/components/SyAlert/SyAlert.vue +6 -0
- package/src/components/Tables/SyServerTable/SyServerTable.mdx +3 -10
- package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +242 -0
- package/src/components/Tables/SyServerTable/SyServerTable.vue +29 -10
- package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +104 -6
- package/src/components/Tables/SyTable/SyTable.mdx +3 -10
- package/src/components/Tables/SyTable/SyTable.stories.ts +242 -0
- package/src/components/Tables/SyTable/SyTable.vue +2 -0
- package/src/components/Tables/common/SyTablePagination.vue +13 -6
- package/src/components/Tables/common/TableHeader.vue +10 -7
- package/src/components/Tables/common/tableAccessibilityUtils.ts +13 -2
- package/src/components/Tables/common/tests/SyTablePagination.spec.ts +157 -0
- package/src/components/Tables/common/types.ts +2 -0
- package/src/components/Tables/common/useTableAria.ts +17 -1
- package/src/components/UserMenuBtn/tests/UserMenuBtn.spec.ts +2 -1
- package/src/components/index.ts +13 -0
- package/src/composables/date/tests/useDatePickerAccessibility.spec.ts +34 -5
- package/src/composables/index.ts +3 -0
- package/src/composables/useFilterable/useFilterable.ts +23 -1
- package/src/composables/usePagination.ts +103 -0
- package/src/designTokens/tokens/amelipro/apColors.ts +1 -1
- package/src/designTokens/tokens/cnam/cnamSemantic.ts +3 -3
- package/src/directives/lockFocus.ts +48 -0
- package/src/main.ts +1 -2
- package/src/stories/Accessibilite/Aculturation/SensibilisationAccessibilite.mdx +1 -8
- package/src/stories/Accessibilite/{Aculturation/AuditDesignSystem.mdx → AuditDesignSystem.mdx} +1 -1
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/FauxPositifs.mdx +102 -0
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Tanaguru/FauxPositifs.stories.ts +219 -0
- package/src/stories/Accessibilite/KitDePreAudit/Outils/{Tanaguru.mdx → Tanaguru/Utilisation.mdx} +1 -1
- package/src/stories/Components/Components.stories.ts +1 -1
- package/src/stories/DesignTokens/ColorIntegrationExample.vue +43 -0
- package/src/stories/DesignTokens/Colors.mdx +2 -0
- package/src/stories/DesignTokens/colors.stories.ts +9 -0
- package/src/stories/GuideDuDev/FormValidationGuide.mdx +342 -0
- package/src/stories/Templates/Templates.stories.ts +1 -1
- package/src/utils/functions/ameliproColors/ameliproColors.ts +1 -1
- package/src/vuetifyConfig.ts +3 -3
- package/dist/components/DataList/locales.d.ts +0 -3
- package/dist/directives/letterSpacing.d.ts +0 -27
- package/src/assets/_fonts.scss +0 -6
- package/src/assets/_typography.scss +0 -157
- package/src/components/DataList/locales.ts +0 -3
- package/src/components/PhoneField/tests/PhoneField.additional.spec.ts +0 -266
- package/src/directives/letterSpacing.ts +0 -233
- /package/src/assets/{_elevations.scss → overrides/_elevations.scss} +0 -0
- /package/src/assets/{_radius.scss → overrides/_radius.scss} +0 -0
|
@@ -3,3 +3,11 @@ export interface IndexedObject<T = string> {
|
|
|
3
3
|
}
|
|
4
4
|
|
|
5
5
|
export type ValidateOnType = 'lazy' | ('input' | 'blur' | 'submit') | 'input lazy' | 'blur lazy' | 'submit lazy' | 'lazy input' | 'lazy blur' | 'lazy submit' | undefined
|
|
6
|
+
|
|
7
|
+
export interface IDataListItem {
|
|
8
|
+
id: number
|
|
9
|
+
[key: string]: string | number | undefined
|
|
10
|
+
accordionTitle?: string
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export type Breakpoints = 'xs' | 'sm' | 'md' | 'lg' | 'xl' | 'smAndDown' | 'smAndUp' | 'mdAndDown' | 'mdAndUp' | 'lgAndDown' | 'lgAndUp' | 'xlAndDown'
|
|
@@ -208,6 +208,10 @@ export const Legende: StoryObj = {
|
|
|
208
208
|
Problèmes relevés par Tanaguru
|
|
209
209
|
</div>
|
|
210
210
|
</div>
|
|
211
|
+
<div class="mt-4">
|
|
212
|
+
<p>Rapport d’audit manuel : <a href="/audits/ChipList.xlsx" style="color:#0C41BD;">Voir le rapport</a></p>
|
|
213
|
+
<p style="color: grey; font-size: 14px">Correctifs associés (<a href="https://github.com/assurance-maladie-digital/design-system-v3/issues/814" target="_blank" style="color:#0C41BD;">issue #814</a>)</p>
|
|
214
|
+
</div>
|
|
211
215
|
</div>
|
|
212
216
|
`,
|
|
213
217
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
import { computed, ref } from 'vue'
|
|
6
6
|
import { locales } from './locales'
|
|
7
7
|
import type { ChipItem, ChipState } from './types'
|
|
8
|
+
import SyIcon from '@/components/Customs/SyIcon/SyIcon.vue'
|
|
8
9
|
|
|
9
10
|
type NonEmptyChipState = Exclude<ChipState, undefined>
|
|
10
11
|
type VuetifyVariant = 'flat' | 'text' | 'elevated' | 'tonal' | 'outlined' | 'plain'
|
|
@@ -17,6 +18,8 @@
|
|
|
17
18
|
displayPrependStateIcon?: boolean
|
|
18
19
|
displayAppendStateIcon?: boolean
|
|
19
20
|
customIcon?: string
|
|
21
|
+
listAriaLabel?: string
|
|
22
|
+
listAriaLabelledby?: string
|
|
20
23
|
vuetifyOptions?: {
|
|
21
24
|
chip?: {
|
|
22
25
|
color?: string
|
|
@@ -41,6 +44,8 @@
|
|
|
41
44
|
displayPrependStateIcon: false,
|
|
42
45
|
displayAppendStateIcon: false,
|
|
43
46
|
customIcon: undefined,
|
|
47
|
+
listAriaLabel: undefined,
|
|
48
|
+
listAriaLabelledby: undefined,
|
|
44
49
|
vuetifyOptions: () => ({}),
|
|
45
50
|
})
|
|
46
51
|
|
|
@@ -53,21 +58,57 @@
|
|
|
53
58
|
|
|
54
59
|
const locale = ref(locales)
|
|
55
60
|
const deleteIcon = ref(mdiWindowClose)
|
|
61
|
+
const showAllItems = ref(false)
|
|
56
62
|
|
|
57
63
|
const filteredItems = computed(() => {
|
|
64
|
+
if (showAllItems.value) {
|
|
65
|
+
return props.items
|
|
66
|
+
}
|
|
58
67
|
return props.items.slice(0, props.overflowLimit - 1)
|
|
59
68
|
})
|
|
60
69
|
|
|
61
70
|
const showOverflowChip = computed(() => {
|
|
62
|
-
return props.items.length >= props.overflowLimit
|
|
71
|
+
return props.items.length >= props.overflowLimit && !showAllItems.value
|
|
72
|
+
})
|
|
73
|
+
|
|
74
|
+
const overflowCount = computed(() => {
|
|
75
|
+
return props.items.length - props.overflowLimit + 1
|
|
63
76
|
})
|
|
64
77
|
|
|
65
78
|
const overflowText = computed(() => {
|
|
66
|
-
return `+${
|
|
79
|
+
return `+${overflowCount.value}`
|
|
80
|
+
})
|
|
81
|
+
|
|
82
|
+
const hiddenItems = computed(() => {
|
|
83
|
+
return props.items.slice(props.overflowLimit - 1)
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
const overflowAriaLabel = computed(() => {
|
|
87
|
+
const count = overflowCount.value
|
|
88
|
+
const itemsText = hiddenItems.value.map(item => item.text).join(', ')
|
|
89
|
+
return locale.value.overflowAriaLabel
|
|
90
|
+
.replace('{count}', count.toString())
|
|
91
|
+
.replace('{items}', itemsText)
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
const toggleButtonText = computed(() => {
|
|
95
|
+
if (showAllItems.value) {
|
|
96
|
+
return locale.value.hideExtraFilters
|
|
97
|
+
}
|
|
98
|
+
const count = overflowCount.value
|
|
99
|
+
return locale.value.showMoreFilters.replace('{count}', count.toString())
|
|
100
|
+
})
|
|
101
|
+
|
|
102
|
+
const listAccessibleName = computed(() => {
|
|
103
|
+
return props.listAriaLabel ?? locale.value.chipGroupLabel
|
|
67
104
|
})
|
|
68
105
|
|
|
69
106
|
const resetButtonText = computed(() => {
|
|
70
|
-
|
|
107
|
+
if (props.resetText) {
|
|
108
|
+
return props.resetText
|
|
109
|
+
}
|
|
110
|
+
// Utiliser le pluriel si plus d'un filtre
|
|
111
|
+
return props.items.length > 1 ? locale.value.resetMultiple : locale.value.reset
|
|
71
112
|
})
|
|
72
113
|
|
|
73
114
|
/**
|
|
@@ -108,12 +149,27 @@
|
|
|
108
149
|
}
|
|
109
150
|
}
|
|
110
151
|
|
|
152
|
+
/**
|
|
153
|
+
* Bascule l'affichage de tous les éléments ou seulement les premiers
|
|
154
|
+
*/
|
|
155
|
+
function toggleShowAllItems(): void {
|
|
156
|
+
showAllItems.value = !showAllItems.value
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Émet l'événement de suppression d'un élément
|
|
161
|
+
*
|
|
162
|
+
* @param item - L'élément à supprimer
|
|
163
|
+
*/
|
|
111
164
|
function emitRemoveEvent(item: ChipItem): void {
|
|
112
165
|
if (!props.readonly) {
|
|
113
166
|
emits('remove', item)
|
|
114
167
|
}
|
|
115
168
|
}
|
|
116
169
|
|
|
170
|
+
/**
|
|
171
|
+
* Émet l'événement de réinitialisation
|
|
172
|
+
*/
|
|
117
173
|
function emitResetEvent(): void {
|
|
118
174
|
if (!props.readonly) {
|
|
119
175
|
emits('reset')
|
|
@@ -124,79 +180,102 @@
|
|
|
124
180
|
<template>
|
|
125
181
|
<div
|
|
126
182
|
v-if="items.length"
|
|
127
|
-
|
|
128
|
-
'flex-column': showOverflowChip,
|
|
129
|
-
}"
|
|
130
|
-
class="chip-list d-flex flex-wrap max-width-none mx-n1 mt-n1"
|
|
131
|
-
role="list"
|
|
183
|
+
class="sy-chip-list d-flex flex-wrap align-center ga-1"
|
|
132
184
|
>
|
|
133
|
-
<
|
|
134
|
-
class="
|
|
135
|
-
|
|
136
|
-
|
|
185
|
+
<ul
|
|
186
|
+
:class="{
|
|
187
|
+
'flex-row': showOverflowChip,
|
|
188
|
+
'd-flex flex-wrap align-center ga-1': true
|
|
189
|
+
}"
|
|
190
|
+
:aria-label="props.listAriaLabelledby ? undefined : listAccessibleName"
|
|
191
|
+
:aria-labelledby="props.listAriaLabelledby"
|
|
137
192
|
>
|
|
138
|
-
<
|
|
193
|
+
<li
|
|
139
194
|
v-for="item in filteredItems"
|
|
140
|
-
v-bind="options.chip"
|
|
141
195
|
:key="item.text"
|
|
142
|
-
|
|
143
|
-
:class="{
|
|
144
|
-
'sy-chip-success': item.state === 'success',
|
|
145
|
-
'sy-chip-info': item.state === 'info',
|
|
146
|
-
'sy-chip-warning': item.state === 'warning',
|
|
147
|
-
'sy-chip-error': item.state === 'error',
|
|
148
|
-
}"
|
|
149
|
-
role="listitem"
|
|
196
|
+
class="d-inline-flex"
|
|
150
197
|
>
|
|
151
|
-
<
|
|
198
|
+
<VChip
|
|
199
|
+
v-bind="options.chip"
|
|
200
|
+
:color="getBackgroundColor(item.state)"
|
|
201
|
+
:class="{
|
|
202
|
+
'sy-chip-success': item.state === 'success',
|
|
203
|
+
'sy-chip-info': item.state === 'info',
|
|
204
|
+
'sy-chip-warning': item.state === 'warning',
|
|
205
|
+
'sy-chip-error': item.state === 'error',
|
|
206
|
+
}"
|
|
207
|
+
>
|
|
152
208
|
<template v-if="displayPrependStateIcon">
|
|
153
|
-
<
|
|
209
|
+
<SyIcon
|
|
154
210
|
v-bind="options.icon"
|
|
155
211
|
:icon="customIcon || getIcon(item.state)"
|
|
156
212
|
:color="item.state"
|
|
213
|
+
decorative
|
|
157
214
|
/>
|
|
158
215
|
</template>
|
|
159
216
|
|
|
160
217
|
<span>{{ item.text }}</span>
|
|
161
218
|
|
|
162
219
|
<template v-if="displayAppendStateIcon">
|
|
163
|
-
<
|
|
220
|
+
<SyIcon
|
|
164
221
|
v-bind="options.icon"
|
|
165
222
|
:icon="customIcon || getIcon(item.state)"
|
|
223
|
+
decorative
|
|
166
224
|
/>
|
|
167
225
|
</template>
|
|
168
226
|
|
|
169
227
|
<VBtn
|
|
170
228
|
v-if="!readonly"
|
|
171
229
|
v-bind="options.btn"
|
|
172
|
-
:aria-label="
|
|
230
|
+
:aria-label="`Supprimer le filtre '${item.text}'`"
|
|
173
231
|
icon
|
|
174
232
|
class="remove-chip"
|
|
175
233
|
@click="emitRemoveEvent(item)"
|
|
176
234
|
>
|
|
177
|
-
<
|
|
235
|
+
<SyIcon
|
|
178
236
|
v-bind="options.icon"
|
|
179
237
|
:icon="deleteIcon"
|
|
180
238
|
:color="item.state"
|
|
239
|
+
decorative
|
|
181
240
|
/>
|
|
182
241
|
</VBtn>
|
|
183
|
-
</
|
|
184
|
-
</
|
|
185
|
-
</div>
|
|
242
|
+
</VChip>
|
|
243
|
+
</li>
|
|
186
244
|
|
|
245
|
+
<!-- Élément +N intégré dans la liste HTML -->
|
|
246
|
+
<li
|
|
247
|
+
v-if="showOverflowChip"
|
|
248
|
+
class="d-inline-flex"
|
|
249
|
+
>
|
|
250
|
+
<VChip
|
|
251
|
+
v-bind="options.chip"
|
|
252
|
+
class="overflow-chip text-cyan-darken-40 ma-1"
|
|
253
|
+
tabindex="0"
|
|
254
|
+
:aria-label="overflowAriaLabel"
|
|
255
|
+
@click="toggleShowAllItems"
|
|
256
|
+
@keydown.enter="toggleShowAllItems"
|
|
257
|
+
@keydown.space.prevent="toggleShowAllItems"
|
|
258
|
+
>
|
|
259
|
+
{{ overflowText }}
|
|
260
|
+
</VChip>
|
|
261
|
+
</li>
|
|
262
|
+
</ul>
|
|
263
|
+
|
|
264
|
+
<!-- Boutons d'action (hors de la liste) -->
|
|
187
265
|
<div
|
|
188
|
-
v-if="
|
|
266
|
+
v-if="showAllItems || !readonly"
|
|
189
267
|
class="d-flex align-center"
|
|
190
268
|
>
|
|
191
|
-
<
|
|
192
|
-
v-if="
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
269
|
+
<VBtn
|
|
270
|
+
v-if="showAllItems"
|
|
271
|
+
variant="text"
|
|
272
|
+
color="primary"
|
|
273
|
+
size="small"
|
|
274
|
+
class="hide-extra-btn px-1 mr-2"
|
|
275
|
+
@click="toggleShowAllItems"
|
|
197
276
|
>
|
|
198
|
-
{{
|
|
199
|
-
</
|
|
277
|
+
{{ toggleButtonText }}
|
|
278
|
+
</VBtn>
|
|
200
279
|
|
|
201
280
|
<VBtn
|
|
202
281
|
v-if="!readonly"
|
|
@@ -204,7 +283,7 @@
|
|
|
204
283
|
color="primary"
|
|
205
284
|
size="small"
|
|
206
285
|
data-test-id="reset-btn"
|
|
207
|
-
class="overflow-btn px-1
|
|
286
|
+
class="overflow-btn px-1"
|
|
208
287
|
@click="emitResetEvent"
|
|
209
288
|
>
|
|
210
289
|
{{ resetButtonText }}
|
|
@@ -216,6 +295,41 @@
|
|
|
216
295
|
<style lang="scss" scoped>
|
|
217
296
|
@use '@/assets/tokens';
|
|
218
297
|
|
|
298
|
+
// Styles pour la liste HTML native
|
|
299
|
+
.sy-chip-list ul {
|
|
300
|
+
list-style: none;
|
|
301
|
+
padding: 0;
|
|
302
|
+
margin: 0;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
.sy-chip-list li {
|
|
306
|
+
margin: 0;
|
|
307
|
+
padding: 0;
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// Styles pour le bouton de suppression
|
|
311
|
+
.remove-chip {
|
|
312
|
+
padding: 0 !important;
|
|
313
|
+
min-width: auto !important;
|
|
314
|
+
width: auto !important;
|
|
315
|
+
height: auto !important;
|
|
316
|
+
flex-shrink: 0 !important;
|
|
317
|
+
|
|
318
|
+
// Assurer que l'icône reste visible en zoom texte 200%
|
|
319
|
+
:deep(.v-icon) {
|
|
320
|
+
font-size: 1rem !important;
|
|
321
|
+
width: 1rem !important;
|
|
322
|
+
height: 1rem !important;
|
|
323
|
+
flex-shrink: 0 !important;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
// Améliorer le contraste des bordures de focus pour les boutons de suppression
|
|
327
|
+
&:focus-visible {
|
|
328
|
+
outline: 2px solid tokens.$primary-base !important;
|
|
329
|
+
outline-offset: -2px !important;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
|
|
219
333
|
.sy-chip-success {
|
|
220
334
|
color: tokens.$colors-text-success !important;
|
|
221
335
|
border: 1px solid tokens.$colors-border-success !important;
|
|
@@ -238,6 +352,12 @@
|
|
|
238
352
|
|
|
239
353
|
.overflow-chip {
|
|
240
354
|
border: 1px solid tokens.$cyan-lighten-90 !important;
|
|
355
|
+
cursor: pointer;
|
|
356
|
+
|
|
357
|
+
&:focus-visible {
|
|
358
|
+
outline: 2px solid tokens.$primary-base !important;
|
|
359
|
+
outline-offset: -2px !important;
|
|
360
|
+
}
|
|
241
361
|
}
|
|
242
362
|
|
|
243
363
|
// Disable overflow button hover state
|
|
@@ -245,7 +365,30 @@
|
|
|
245
365
|
display: none;
|
|
246
366
|
}
|
|
247
367
|
|
|
248
|
-
|
|
249
|
-
|
|
368
|
+
// Bouton "Réinitialiser le filtre" - améliorer le contraste de la bordure de focus
|
|
369
|
+
.overflow-btn:focus-visible {
|
|
370
|
+
outline: 2px solid tokens.$primary-base !important;
|
|
371
|
+
outline-offset: -2px !important;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
// Styles spécifiques pour améliorer le contraste de focus selon le thème du chip
|
|
375
|
+
.sy-chip-success .remove-chip:focus-visible {
|
|
376
|
+
outline: 2px solid tokens.$colors-border-success !important;
|
|
377
|
+
outline-offset: -2px !important;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
.sy-chip-info .remove-chip:focus-visible {
|
|
381
|
+
outline: 2px solid tokens.$colors-border-info !important;
|
|
382
|
+
outline-offset: -2px !important;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.sy-chip-warning .remove-chip:focus-visible {
|
|
386
|
+
outline: 2px solid tokens.$colors-border-warning !important;
|
|
387
|
+
outline-offset: -2px !important;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
.sy-chip-error .remove-chip:focus-visible {
|
|
391
|
+
outline: 2px solid tokens.$colors-border-error !important;
|
|
392
|
+
outline-offset: -2px !important;
|
|
250
393
|
}
|
|
251
394
|
</style>
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export const locales = {
|
|
2
|
-
closeBtnLabel: 'Supprimer le filtre pour cette valeur',
|
|
3
2
|
reset: 'Réinitialiser le filtre',
|
|
3
|
+
resetMultiple: 'Réinitialiser les filtres',
|
|
4
4
|
chipGroupLabel: 'Liste des filtres sélectionnés',
|
|
5
|
-
|
|
5
|
+
showMoreFilters: 'Afficher {count} filtres supplémentaires',
|
|
6
|
+
hideExtraFilters: 'Réduire',
|
|
7
|
+
overflowAriaLabel: 'Afficher {count} filtres supplémentaires : {items}',
|
|
6
8
|
} as const
|
|
@@ -226,10 +226,13 @@ describe('ChipList', () => {
|
|
|
226
226
|
},
|
|
227
227
|
})
|
|
228
228
|
|
|
229
|
-
// Vérifie la présence
|
|
230
|
-
expect(wrapper.find('
|
|
231
|
-
expect(wrapper.
|
|
232
|
-
|
|
229
|
+
// Vérifie la présence de la structure HTML native
|
|
230
|
+
expect(wrapper.find('ul').exists()).toBe(true)
|
|
231
|
+
expect(wrapper.findAll('li')).toHaveLength(defaultItems.length)
|
|
232
|
+
|
|
233
|
+
// Vérifie l'aria-label sur la liste
|
|
234
|
+
const list = wrapper.find('ul')
|
|
235
|
+
expect(list.attributes('aria-label')).toBeTruthy()
|
|
233
236
|
|
|
234
237
|
// Vérifie les labels ARIA des boutons
|
|
235
238
|
const removeButton = wrapper.find('.remove-chip')
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
import { computed } from 'vue'
|
|
3
3
|
import { useDisplay } from 'vuetify'
|
|
4
4
|
import type { ListItem } from './types'
|
|
5
|
-
import { vLetterSpacing } from '@/directives/letterSpacing'
|
|
6
5
|
|
|
7
6
|
const props = defineProps<{
|
|
8
7
|
listTitle: string | null
|
|
@@ -57,7 +56,6 @@
|
|
|
57
56
|
class="vd-collapse-list"
|
|
58
57
|
>
|
|
59
58
|
<h4
|
|
60
|
-
v-letter-spacing
|
|
61
59
|
class="text-subtitle-1 font-weight-bold mb-3"
|
|
62
60
|
>
|
|
63
61
|
{{ listTitle }}
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
import { config } from './config'
|
|
10
10
|
import { locales } from './locales'
|
|
11
11
|
import CookiesSelection from '../CookiesSelection/CookiesSelection.vue'
|
|
12
|
-
import { vLetterSpacing } from '@/directives/letterSpacing'
|
|
13
12
|
|
|
14
13
|
const props = defineProps<CustomizableOptions & {
|
|
15
14
|
items?: CookiesItems
|
|
@@ -167,7 +166,6 @@
|
|
|
167
166
|
>
|
|
168
167
|
<VSheet
|
|
169
168
|
ref="vsheetRef"
|
|
170
|
-
v-letter-spacing
|
|
171
169
|
v-bind="options.banner"
|
|
172
170
|
:aria-label="locales.label"
|
|
173
171
|
class="vd-cookie-banner"
|
|
@@ -179,7 +177,7 @@
|
|
|
179
177
|
>
|
|
180
178
|
<div class="d-flex align-start flex-nowrap pa-0 mb-6">
|
|
181
179
|
<h2
|
|
182
|
-
|
|
180
|
+
|
|
183
181
|
class="text-h5 font-weight-bold"
|
|
184
182
|
>
|
|
185
183
|
{{ locales.title }}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { ref } from 'vue'
|
|
2
|
+
import { ref, onUnmounted } from 'vue'
|
|
3
3
|
import { mdiContentCopy } from '@mdi/js'
|
|
4
4
|
|
|
5
5
|
import useCustomizableOptions, { type CustomizableOptions } from '@/composables/useCustomizableOptions'
|
|
@@ -28,6 +28,13 @@
|
|
|
28
28
|
|
|
29
29
|
const tooltip = ref(false)
|
|
30
30
|
const copyIcon = mdiContentCopy
|
|
31
|
+
let tooltipTimeoutId: ReturnType<typeof setTimeout> | undefined
|
|
32
|
+
|
|
33
|
+
onUnmounted(() => {
|
|
34
|
+
if (tooltipTimeoutId !== undefined) {
|
|
35
|
+
clearTimeout(tooltipTimeoutId)
|
|
36
|
+
}
|
|
37
|
+
})
|
|
31
38
|
|
|
32
39
|
function copy(): void {
|
|
33
40
|
let contentToCopy
|
|
@@ -66,7 +73,7 @@
|
|
|
66
73
|
return
|
|
67
74
|
}
|
|
68
75
|
|
|
69
|
-
setTimeout(() => {
|
|
76
|
+
tooltipTimeoutId = setTimeout(() => {
|
|
70
77
|
tooltip.value = false
|
|
71
78
|
}, props.tooltipDuration)
|
|
72
79
|
}
|
|
@@ -66,6 +66,7 @@ describe('CopyBtn', () => {
|
|
|
66
66
|
propsData: {
|
|
67
67
|
label: 'test',
|
|
68
68
|
textToCopy: 'test',
|
|
69
|
+
tooltipDuration: 100,
|
|
69
70
|
},
|
|
70
71
|
global: {
|
|
71
72
|
plugins: [vuetify],
|
|
@@ -76,7 +77,8 @@ describe('CopyBtn', () => {
|
|
|
76
77
|
|
|
77
78
|
expect(wrapper.vm.tooltip).toBeTruthy()
|
|
78
79
|
|
|
79
|
-
vi.
|
|
80
|
+
vi.advanceTimersByTime(101) // tooltipDuration + 1ms pour être sûr
|
|
81
|
+
|
|
80
82
|
expect(wrapper.vm.tooltip).toBeFalsy()
|
|
81
83
|
})
|
|
82
84
|
|
|
@@ -19,13 +19,13 @@ Notre système propose quatre modes de sélection, chacun adapté à des besoins
|
|
|
19
19
|
border: '1px solid #e0e0e0',
|
|
20
20
|
borderRadius: '8px',
|
|
21
21
|
padding: '20px',
|
|
22
|
-
cursor: 'pointer',
|
|
23
22
|
boxShadow: '0 2px 5px rgba(0,0,0,0.05)',
|
|
24
23
|
transition: 'all 0.2s ease',
|
|
25
24
|
backgroundColor: '#fff'
|
|
26
25
|
}}
|
|
27
26
|
onClick={() => linkTo('Composants/Formulaires/Selects/SySelect')()}
|
|
28
27
|
>
|
|
28
|
+
<img style={{ width: '40%', height: 'auto', marginLeft: '35%' }} src="/components/sy-select.svg" alt="SySelect" />
|
|
29
29
|
<h3 style={{ marginTop: 0, marginBottom: '10px', color: '#1976d2' }}>SySelect</h3>
|
|
30
30
|
<div>Composant de sélection complet et flexible, supportant la sélection simple ou multiple.</div>
|
|
31
31
|
<div style={{ marginTop: '10px', color: '#666' }}>
|
|
@@ -43,8 +43,9 @@ Notre système propose quatre modes de sélection, chacun adapté à des besoins
|
|
|
43
43
|
padding: '5px 10px',
|
|
44
44
|
color: '#1976d2',
|
|
45
45
|
borderRadius: '4px',
|
|
46
|
-
fontSize: '14px'
|
|
47
|
-
|
|
46
|
+
fontSize: '14px',
|
|
47
|
+
cursor: 'pointer',
|
|
48
|
+
}} onClick={() => linkTo('Composants/Formulaires/Selects/SySelect')()}>
|
|
48
49
|
Voir la documentation →
|
|
49
50
|
</span>
|
|
50
51
|
</div>
|
|
@@ -56,13 +57,12 @@ Notre système propose quatre modes de sélection, chacun adapté à des besoins
|
|
|
56
57
|
border: '1px solid #e0e0e0',
|
|
57
58
|
borderRadius: '8px',
|
|
58
59
|
padding: '20px',
|
|
59
|
-
cursor: 'pointer',
|
|
60
60
|
boxShadow: '0 2px 5px rgba(0,0,0,0.05)',
|
|
61
61
|
transition: 'all 0.2s ease',
|
|
62
62
|
backgroundColor: '#fff'
|
|
63
63
|
}}
|
|
64
|
-
onClick={() => linkTo('Composants/Formulaires/Selects/SyInputSelect')()}
|
|
65
64
|
>
|
|
65
|
+
<img style={{ width: '40%', height: 'auto', marginLeft: '35%' }} src="/components/sy-input-select.svg" alt="SySelect" />
|
|
66
66
|
<h3 style={{ marginTop: 0, marginBottom: '10px', color: '#7b1fa2' }}>SyInputSelect</h3>
|
|
67
67
|
<div>Un composant de sélection qui ressemble à un champ de texte standard avec validation intégrée.</div>
|
|
68
68
|
<div style={{ marginTop: '10px', color: '#666' }}>
|
|
@@ -79,8 +79,9 @@ Notre système propose quatre modes de sélection, chacun adapté à des besoins
|
|
|
79
79
|
padding: '5px 10px',
|
|
80
80
|
color: '#7b1fa2',
|
|
81
81
|
borderRadius: '4px',
|
|
82
|
-
fontSize: '14px'
|
|
83
|
-
|
|
82
|
+
fontSize: '14px',
|
|
83
|
+
cursor: 'pointer',
|
|
84
|
+
}} onClick={() => linkTo('Composants/Formulaires/Selects/SyInputSelect')()}>
|
|
84
85
|
Voir la documentation →
|
|
85
86
|
</span>
|
|
86
87
|
</div>
|
|
@@ -94,13 +95,12 @@ Notre système propose quatre modes de sélection, chacun adapté à des besoins
|
|
|
94
95
|
border: '1px solid #e0e0e0',
|
|
95
96
|
borderRadius: '8px',
|
|
96
97
|
padding: '20px',
|
|
97
|
-
cursor: 'pointer',
|
|
98
98
|
boxShadow: '0 2px 5px rgba(0,0,0,0.05)',
|
|
99
99
|
transition: 'all 0.2s ease',
|
|
100
100
|
backgroundColor: '#fff'
|
|
101
101
|
}}
|
|
102
|
-
onClick={() => linkTo('Composants/Formulaires/Selects/SyBtnSelect')()}
|
|
103
102
|
>
|
|
103
|
+
<img style={{ width: '40%', height: 'auto', marginLeft: '35%' }} src="/components/sy-btn-select.svg" alt="SySelect" />
|
|
104
104
|
<h3 style={{ marginTop: 0, marginBottom: '10px', color: '#00796b' }}>SyBtnSelect</h3>
|
|
105
105
|
<div>Un composant de sélection sous forme de bouton, idéal pour les menus utilisateur ou les sélecteurs compacts.</div>
|
|
106
106
|
<div style={{ marginTop: '10px', color: '#666' }}>
|
|
@@ -116,8 +116,9 @@ Notre système propose quatre modes de sélection, chacun adapté à des besoins
|
|
|
116
116
|
padding: '5px 10px',
|
|
117
117
|
color: '#00796b',
|
|
118
118
|
borderRadius: '4px',
|
|
119
|
-
fontSize: '14px'
|
|
120
|
-
|
|
119
|
+
fontSize: '14px',
|
|
120
|
+
cursor: 'pointer',
|
|
121
|
+
}} onClick={() => linkTo('Composants/Formulaires/Selects/SyBtnSelect')()}>
|
|
121
122
|
Voir la documentation →
|
|
122
123
|
</span>
|
|
123
124
|
</div>
|
|
@@ -129,13 +130,12 @@ Notre système propose quatre modes de sélection, chacun adapté à des besoins
|
|
|
129
130
|
border: '1px solid #e0e0e0',
|
|
130
131
|
borderRadius: '8px',
|
|
131
132
|
padding: '20px',
|
|
132
|
-
cursor: 'pointer',
|
|
133
133
|
boxShadow: '0 2px 5px rgba(0,0,0,0.05)',
|
|
134
134
|
transition: 'all 0.2s ease',
|
|
135
135
|
backgroundColor: '#fff'
|
|
136
136
|
}}
|
|
137
|
-
onClick={() => linkTo('Composants/Formulaires/Selects/SelectBtnField')()}
|
|
138
137
|
>
|
|
138
|
+
<img style={{ width: '40%', height: 'auto', marginLeft: '35%' }} src="/components/select-btn-field.svg" alt="SySelect" />
|
|
139
139
|
<h3 style={{ marginTop: 0, marginBottom: '10px', color: '#e65100' }}>SelectBtnField</h3>
|
|
140
140
|
<div>Un composant de sélection sous forme de boutons toggle, idéal pour les choix visuels et les options mutuellement exclusives.</div>
|
|
141
141
|
<div style={{ marginTop: '10px', color: '#666' }}>
|
|
@@ -151,8 +151,9 @@ Notre système propose quatre modes de sélection, chacun adapté à des besoins
|
|
|
151
151
|
padding: '5px 10px',
|
|
152
152
|
color: '#e65100',
|
|
153
153
|
borderRadius: '4px',
|
|
154
|
-
fontSize: '14px'
|
|
155
|
-
|
|
154
|
+
fontSize: '14px',
|
|
155
|
+
cursor: 'pointer',
|
|
156
|
+
}} onClick={() => linkTo('Composants/Formulaires/Selects/SelectBtnField')()}>
|
|
156
157
|
Voir la documentation →
|
|
157
158
|
</span>
|
|
158
159
|
</div>
|
|
@@ -348,3 +349,5 @@ Notre système propose quatre modes de sélection, chacun adapté à des besoins
|
|
|
348
349
|
- Adapter le type de sélecteur au contexte d'utilisation (formulaire standard, menu utilisateur, etc.)
|
|
349
350
|
- Pour SelectBtnField, utiliser la propriété `inline` pour une disposition horizontale des options
|
|
350
351
|
- Pour SelectBtnField, utiliser la propriété `unique` sur certaines options pour qu'elles désélectionnent automatiquement les autres options lorsqu'elles sont sélectionnées
|
|
352
|
+
|
|
353
|
+
<a href="/?path=/docs/guide-du-dev-guide-de-validation-des-formulaires--docs" className="action-link">Pour plus d'informations sur la validation, consultez le guide de validation des formulaires.</a>
|