@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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, it, expect, vi, afterEach, beforeAll } from 'vitest'
|
|
1
|
+
import { describe, it, expect, vi, afterEach, beforeAll, beforeEach } from 'vitest'
|
|
2
2
|
import { mount } from '@vue/test-utils'
|
|
3
3
|
|
|
4
4
|
import { vuetify } from '@tests/unit/setup'
|
|
@@ -70,11 +70,42 @@ describe('SyServerTable', () => {
|
|
|
70
70
|
}
|
|
71
71
|
})
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
// Store wrapper references to unmount them after each test
|
|
74
|
+
let activeWrappers: ReturnType<typeof mount>[] = []
|
|
75
|
+
// Helper pour attendre que les opérations asynchrones soient terminées
|
|
76
|
+
async function flushPromises() {
|
|
77
|
+
return new Promise(resolve => setTimeout(resolve, 0))
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
beforeEach(() => {
|
|
81
|
+
// Reset LocalStorageUtility mock implementation before each test
|
|
82
|
+
vi.mocked(LocalStorageUtility.prototype.getItem).mockReturnValue(null)
|
|
83
|
+
vi.mocked(LocalStorageUtility.prototype.setItem).mockImplementation(() => {})
|
|
84
|
+
vi.mocked(LocalStorageUtility.prototype.removeItem).mockImplementation(() => {})
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
afterEach(async () => {
|
|
88
|
+
// Attendre que toutes les promesses soient résolues avant de démonter
|
|
89
|
+
await flushPromises()
|
|
90
|
+
|
|
91
|
+
// Properly unmount all components to prevent memory leaks -> attachTo: document.body
|
|
92
|
+
for (const wrapper of activeWrappers) {
|
|
93
|
+
if (wrapper && typeof wrapper.unmount === 'function') {
|
|
94
|
+
wrapper.unmount()
|
|
95
|
+
// Attendre après chaque démontage pour permettre le nettoyage
|
|
96
|
+
await flushPromises()
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
activeWrappers = []
|
|
100
|
+
|
|
101
|
+
// Reset all mocks
|
|
74
102
|
vi.resetAllMocks()
|
|
103
|
+
|
|
104
|
+
// Attendre une dernière fois pour s'assurer que tout est nettoyé
|
|
105
|
+
await flushPromises()
|
|
75
106
|
})
|
|
76
107
|
|
|
77
|
-
it('renders correctly with default props', () => {
|
|
108
|
+
it('renders correctly with default props', async () => {
|
|
78
109
|
const wrapper = mount(SyServerTable, {
|
|
79
110
|
props: {
|
|
80
111
|
options: {} as DataOptions,
|
|
@@ -90,12 +121,19 @@ describe('SyServerTable', () => {
|
|
|
90
121
|
},
|
|
91
122
|
})
|
|
92
123
|
|
|
124
|
+
// Attendre que tous les effets asynchrones soient terminés
|
|
125
|
+
await wrapper.vm.$nextTick()
|
|
126
|
+
await flushPromises()
|
|
127
|
+
|
|
93
128
|
expect(wrapper.find('.sy-server-table').exists()).toBe(true)
|
|
94
129
|
expect(wrapper.find('table').exists()).toBe(true)
|
|
95
130
|
expect(wrapper.text()).toContain('John Doe')
|
|
131
|
+
|
|
132
|
+
// Ajouter le wrapper à la liste pour le démontage
|
|
133
|
+
activeWrappers.push(wrapper)
|
|
96
134
|
})
|
|
97
135
|
|
|
98
|
-
it('accepts both old and new headers format', () => {
|
|
136
|
+
it('accepts both old and new headers format', async () => {
|
|
99
137
|
const wrapper = mount(SyServerTable, {
|
|
100
138
|
props: {
|
|
101
139
|
options: {} as DataOptions,
|
|
@@ -146,12 +184,21 @@ describe('SyServerTable', () => {
|
|
|
146
184
|
},
|
|
147
185
|
})
|
|
148
186
|
|
|
187
|
+
// Attendre que le composant soit monté et les effets initiaux terminés
|
|
188
|
+
await wrapper.vm.$nextTick()
|
|
189
|
+
await flushPromises()
|
|
190
|
+
|
|
191
|
+
// Modifier les props et attendre la mise à jour
|
|
149
192
|
await wrapper.setProps({
|
|
150
193
|
options: {
|
|
151
194
|
sortBy: [{ key: 'name', order: 'desc' }],
|
|
152
195
|
},
|
|
153
196
|
})
|
|
154
197
|
|
|
198
|
+
// Attendre que tous les effets asynchrones soient terminés
|
|
199
|
+
await wrapper.vm.$nextTick()
|
|
200
|
+
await flushPromises()
|
|
201
|
+
|
|
155
202
|
expect(setItemMock).toHaveBeenCalledWith(
|
|
156
203
|
'server-table-test-server-storage',
|
|
157
204
|
expect.objectContaining({
|
|
@@ -164,6 +211,9 @@ describe('SyServerTable', () => {
|
|
|
164
211
|
itemsLength: 10,
|
|
165
212
|
}),
|
|
166
213
|
)
|
|
214
|
+
|
|
215
|
+
// Ajouter le wrapper à la liste pour le démontage
|
|
216
|
+
activeWrappers.push(wrapper)
|
|
167
217
|
})
|
|
168
218
|
|
|
169
219
|
it('emits update:options event when sorting changes', async () => {
|
|
@@ -182,16 +232,27 @@ describe('SyServerTable', () => {
|
|
|
182
232
|
},
|
|
183
233
|
})
|
|
184
234
|
|
|
235
|
+
// Attendre que le composant soit monté et les effets initiaux terminés
|
|
236
|
+
await wrapper.vm.$nextTick()
|
|
237
|
+
await flushPromises()
|
|
238
|
+
|
|
185
239
|
// Simulate a sort event from VDataTableServer
|
|
186
240
|
await wrapper.findComponent({ name: 'VDataTableServer' }).vm.$emit('update:options', {
|
|
187
241
|
sortBy: [{ key: 'name', order: 'asc' }],
|
|
188
242
|
})
|
|
189
243
|
|
|
244
|
+
// Attendre que tous les effets asynchrones soient terminés
|
|
245
|
+
await wrapper.vm.$nextTick()
|
|
246
|
+
await flushPromises()
|
|
247
|
+
|
|
190
248
|
const emittedOptions = wrapper.emitted('update:options')
|
|
191
249
|
expect(emittedOptions).toBeTruthy()
|
|
250
|
+
|
|
251
|
+
// Ajouter le wrapper à la liste pour le démontage
|
|
252
|
+
activeWrappers.push(wrapper)
|
|
192
253
|
})
|
|
193
254
|
|
|
194
|
-
it('passes itemsPerPage prop correctly', () => {
|
|
255
|
+
it('passes itemsPerPage prop correctly', async () => {
|
|
195
256
|
const wrapper = mount(SyServerTable, {
|
|
196
257
|
props: {
|
|
197
258
|
options: { itemsPerPage: 5 } as DataOptions,
|
|
@@ -207,11 +268,18 @@ describe('SyServerTable', () => {
|
|
|
207
268
|
},
|
|
208
269
|
})
|
|
209
270
|
|
|
271
|
+
// Attendre que tous les effets asynchrones soient terminés
|
|
272
|
+
await wrapper.vm.$nextTick()
|
|
273
|
+
await flushPromises()
|
|
274
|
+
|
|
210
275
|
const dataTableServer = wrapper.findComponent({ name: 'VDataTableServer' })
|
|
211
276
|
expect(dataTableServer.props('itemsPerPage')).toBe(5)
|
|
277
|
+
|
|
278
|
+
// Ajouter le wrapper à la liste pour le démontage
|
|
279
|
+
activeWrappers.push(wrapper)
|
|
212
280
|
})
|
|
213
281
|
|
|
214
|
-
it('passes serverItemsLength correctly', () => {
|
|
282
|
+
it('passes serverItemsLength correctly', async () => {
|
|
215
283
|
const wrapper = mount(SyServerTable, {
|
|
216
284
|
props: {
|
|
217
285
|
options: {} as DataOptions,
|
|
@@ -227,8 +295,15 @@ describe('SyServerTable', () => {
|
|
|
227
295
|
},
|
|
228
296
|
})
|
|
229
297
|
|
|
298
|
+
// Attendre que tous les effets asynchrones soient terminés
|
|
299
|
+
await wrapper.vm.$nextTick()
|
|
300
|
+
await flushPromises()
|
|
301
|
+
|
|
230
302
|
const dataTableServer = wrapper.findComponent({ name: 'VDataTableServer' })
|
|
231
303
|
expect(dataTableServer.props('itemsLength')).toBe(25)
|
|
304
|
+
|
|
305
|
+
// Ajouter le wrapper à la liste pour le démontage
|
|
306
|
+
activeWrappers.push(wrapper)
|
|
232
307
|
})
|
|
233
308
|
|
|
234
309
|
it('should show filters when showFilters prop is true', async () => {
|
|
@@ -263,8 +338,14 @@ describe('SyServerTable', () => {
|
|
|
263
338
|
})
|
|
264
339
|
|
|
265
340
|
await wrapper.vm.$nextTick()
|
|
341
|
+
// Attendre que tous les effets asynchrones soient terminés
|
|
342
|
+
await flushPromises()
|
|
343
|
+
|
|
266
344
|
const filterComponents = wrapper.findAllComponents({ name: 'SyTableFilter' })
|
|
267
345
|
expect(filterComponents.length).toBeGreaterThan(0)
|
|
346
|
+
|
|
347
|
+
// Ajouter le wrapper à la liste pour le démontage
|
|
348
|
+
activeWrappers.push(wrapper)
|
|
268
349
|
})
|
|
269
350
|
|
|
270
351
|
it('updates filters when SyTableFilter emits update:filters', async () => {
|
|
@@ -289,17 +370,29 @@ describe('SyServerTable', () => {
|
|
|
289
370
|
},
|
|
290
371
|
})
|
|
291
372
|
|
|
373
|
+
// Attendre que le composant soit monté et les effets initiaux terminés
|
|
374
|
+
await wrapper.vm.$nextTick()
|
|
375
|
+
await flushPromises()
|
|
376
|
+
|
|
292
377
|
const filterComponent = wrapper.findComponent(SyTableFilter)
|
|
293
378
|
await filterComponent.vm.$emit('update:filters', [{ key: 'name', value: 'Jane', type: 'text' }])
|
|
294
379
|
|
|
380
|
+
// Attendre que tous les effets d'émission soient terminés
|
|
381
|
+
await wrapper.vm.$nextTick()
|
|
382
|
+
await flushPromises()
|
|
383
|
+
|
|
295
384
|
// Check that the component emitted an update:options event with the correct filters
|
|
296
385
|
const emitted = wrapper.emitted('update:options')
|
|
297
386
|
expect(emitted).toBeTruthy()
|
|
387
|
+
|
|
298
388
|
if (emitted) {
|
|
299
389
|
const lastEmitted = emitted[emitted.length - 1][0] as { filters?: FilterOption[] }
|
|
300
390
|
expect(lastEmitted).toHaveProperty('filters')
|
|
301
391
|
expect(lastEmitted.filters).toEqual([{ key: 'name', value: 'Jane', type: 'text' }])
|
|
302
392
|
}
|
|
393
|
+
|
|
394
|
+
// Ajouter le wrapper à la liste pour le démontage
|
|
395
|
+
activeWrappers.push(wrapper)
|
|
303
396
|
})
|
|
304
397
|
|
|
305
398
|
it('should show reset filters button when filters are applied', async () => {
|
|
@@ -407,6 +500,11 @@ describe('SyServerTable', () => {
|
|
|
407
500
|
},
|
|
408
501
|
})
|
|
409
502
|
|
|
503
|
+
// Attendre que le composant soit monté et les effets initiaux terminés
|
|
504
|
+
await wrapper.vm.$nextTick()
|
|
505
|
+
await flushPromises()
|
|
506
|
+
|
|
507
|
+
// Modifier les props et attendre la mise à jour
|
|
410
508
|
await wrapper.setProps({
|
|
411
509
|
serverItemsLength: 20,
|
|
412
510
|
})
|
|
@@ -24,38 +24,33 @@ Pour gérer individuellement le stockage des options pour différents tableaux,
|
|
|
24
24
|
### Tri des colonnes
|
|
25
25
|
|
|
26
26
|
Le composant permet de trier les données par colonne en cliquant sur l'en-tête de la colonne.
|
|
27
|
-
<Canvas story={{height: '550px'}} of={SyTable.SortBy} />
|
|
28
27
|
|
|
29
28
|
Le multi-tri est également supporté. Vous pouvez activer cette fonctionnalité en utilisant la prop `multi-sort`.
|
|
30
|
-
<Canvas story={{height: '550px'}} of={SyTable.MultiSort} />
|
|
31
29
|
|
|
32
30
|
### Filtres des colonnes
|
|
33
31
|
|
|
34
32
|
Le composant permet d'appliquer des filtres sur les colonnes. Vous pouvez définir des filtres personnalisés pour chaque colonne en utilisant la prop `show-filters`. Voir d'autres exemples de filtres dans les stories.
|
|
35
|
-
<Canvas story={{height: '550px'}} of={SyTable.FilterByText} />
|
|
36
33
|
|
|
37
34
|
### Resize des colonnes
|
|
38
35
|
|
|
39
36
|
Le composant peut permettre de redimensionner les colonnes en utilisant la prop `resizable-columns`. Vous pouvez activer ou désactiver cette fonctionnalité selon vos besoins.
|
|
40
|
-
<Canvas story={{height: '550px'}} of={SyTable.ResizableColumns} />
|
|
41
37
|
|
|
42
38
|
### Réorganisation des colonnes
|
|
43
39
|
|
|
44
40
|
Le composant permet de cacher ou réorganiser l'ordre des colonnes en utilisant la prop `enable-column-controls`. Vous pouvez activer ou désactiver cette fonctionnalité selon vos besoins.
|
|
45
|
-
<Canvas story={{height: '550px'}} of={SyTable.ColumnControls} />
|
|
46
41
|
|
|
47
42
|
### Selection des lignes
|
|
48
43
|
|
|
49
44
|
Le composant permet de sélectionner des lignes individuellement ou en masse. Vous pouvez activer la sélection en utilisant la prop `show-select`.
|
|
50
|
-
<Canvas story={{height: '550px'}} of={SyTable.RowSelection} />
|
|
51
45
|
|
|
52
46
|
### Slot item
|
|
53
47
|
Le composant permet de personnaliser l'affichage des contenus en utilisant le slot `item`. Vous pouvez définir la structure de chaque contenu en fonction de vos besoins.
|
|
54
|
-
<Canvas story={{height: '550px'}} of={SyTable.SlotItem} />
|
|
55
48
|
|
|
56
49
|
### Slot headers
|
|
57
50
|
Le composant permet de personnaliser l'affichage des en-têtes de colonnes en utilisant le slot `headers`. Vous pouvez définir la structure de chaque en-tête en fonction de vos besoins.
|
|
58
|
-
|
|
51
|
+
|
|
52
|
+
### Items par page options
|
|
53
|
+
Le composant permet de personnaliser le nombre possible d'éléments par page en utilisant la prop `items-per-page-options`. Vous pouvez spécifier un tableau d'options pour permettre de choisir le nombre d'éléments affichés par page.
|
|
59
54
|
|
|
60
55
|
### Accessibilité
|
|
61
56
|
|
|
@@ -139,8 +134,6 @@ Le composant améliore l'accessibilité en ajoutant automatiquement :
|
|
|
139
134
|
|
|
140
135
|
Pour utiliser plusieurs tableaux sur une même page avec des options indépendantes, utilisez la prop `suffix` pour chaque tableau.
|
|
141
136
|
|
|
142
|
-
<Canvas of={SyTable.ManyTables} />
|
|
143
|
-
|
|
144
137
|
## Bonnes pratiques
|
|
145
138
|
|
|
146
139
|
- Utilisez des en-têtes clairs et descriptifs pour chaque colonne
|
|
@@ -61,6 +61,15 @@ const meta = {
|
|
|
61
61
|
type: { summary: 'DataOptions', detail: '{ page: number, itemsPerPage: number, sortBy: SortOptions[], groupBy?: SortOptions[], multiSort?: boolean, mustSort?: boolean, filters?: FilterOption[] }' },
|
|
62
62
|
},
|
|
63
63
|
},
|
|
64
|
+
itemsPerPageOptions: {
|
|
65
|
+
description: 'Limite les options disponibles dans le sélecteur "itemsPerPage"',
|
|
66
|
+
control: { type: 'object' },
|
|
67
|
+
table: {
|
|
68
|
+
category: 'props',
|
|
69
|
+
type: { summary: 'number[]' },
|
|
70
|
+
defaultValue: { summary: 'undefined' },
|
|
71
|
+
},
|
|
72
|
+
},
|
|
64
73
|
suffix: {
|
|
65
74
|
description: 'Suffixe permettant de gérer individuellement le stockage des options d\'un tableau d\'une page à l\'autre. Ce prop est obligatoire pour garantir un stockage unique pour chaque tableau.',
|
|
66
75
|
control: { type: 'text' },
|
|
@@ -3359,3 +3368,236 @@ export const SlotHeaders: Story = {
|
|
|
3359
3368
|
}
|
|
3360
3369
|
},
|
|
3361
3370
|
}
|
|
3371
|
+
|
|
3372
|
+
export const ItemsPerPageOptions: Story = {
|
|
3373
|
+
parameters: {
|
|
3374
|
+
sourceCode: [
|
|
3375
|
+
{
|
|
3376
|
+
name: 'Template',
|
|
3377
|
+
code: `
|
|
3378
|
+
<template>
|
|
3379
|
+
<SyTable
|
|
3380
|
+
v-model:options="options"
|
|
3381
|
+
:headers="headers"
|
|
3382
|
+
:items="items"
|
|
3383
|
+
:items-per-page-options="[5, 10, 15]"
|
|
3384
|
+
suffix="items-per-page-options-table"
|
|
3385
|
+
/>
|
|
3386
|
+
</template>
|
|
3387
|
+
`,
|
|
3388
|
+
},
|
|
3389
|
+
{
|
|
3390
|
+
name: 'Script',
|
|
3391
|
+
code: `
|
|
3392
|
+
<script setup lang="ts">
|
|
3393
|
+
import { ref } from 'vue'
|
|
3394
|
+
import { SyTable } from '@cnamts/synapse'
|
|
3395
|
+
|
|
3396
|
+
const options = ref({
|
|
3397
|
+
itemsPerPage: 5,
|
|
3398
|
+
})
|
|
3399
|
+
|
|
3400
|
+
const headers = ref([
|
|
3401
|
+
{
|
|
3402
|
+
title: 'Nom',
|
|
3403
|
+
key: 'lastname',
|
|
3404
|
+
},
|
|
3405
|
+
{
|
|
3406
|
+
title: 'Prénom',
|
|
3407
|
+
key: 'firstname',
|
|
3408
|
+
},
|
|
3409
|
+
{
|
|
3410
|
+
title: 'Email',
|
|
3411
|
+
value: 'email',
|
|
3412
|
+
},
|
|
3413
|
+
])
|
|
3414
|
+
|
|
3415
|
+
const items = ref([
|
|
3416
|
+
{
|
|
3417
|
+
firstname: 'Virginie',
|
|
3418
|
+
lastname: 'Beauchesne',
|
|
3419
|
+
email: 'virginie.beauchesne@example.com',
|
|
3420
|
+
},
|
|
3421
|
+
{
|
|
3422
|
+
firstname: 'Simone',
|
|
3423
|
+
lastname: 'Bellefeuille',
|
|
3424
|
+
email: 'simone.bellefeuille@example.com',
|
|
3425
|
+
},
|
|
3426
|
+
{
|
|
3427
|
+
firstname: 'Étienne',
|
|
3428
|
+
lastname: 'Salois',
|
|
3429
|
+
email: 'etienne.salois@example.com',
|
|
3430
|
+
},
|
|
3431
|
+
{
|
|
3432
|
+
firstname: 'Thierry',
|
|
3433
|
+
lastname: 'Bobu',
|
|
3434
|
+
email: 'thierry.bobu@example.com',
|
|
3435
|
+
},
|
|
3436
|
+
{
|
|
3437
|
+
firstname: 'Bernadette',
|
|
3438
|
+
lastname: 'Langelier',
|
|
3439
|
+
email: 'bernadette.langelier@exemple.com',
|
|
3440
|
+
},
|
|
3441
|
+
{
|
|
3442
|
+
firstname: 'Agate',
|
|
3443
|
+
lastname: 'Roy',
|
|
3444
|
+
email: 'agate.roy@exemple.com',
|
|
3445
|
+
},
|
|
3446
|
+
{
|
|
3447
|
+
firstname: 'Théo',
|
|
3448
|
+
lastname: 'Garnier',
|
|
3449
|
+
email: 'theo.garnier@exemple.com',
|
|
3450
|
+
},
|
|
3451
|
+
{
|
|
3452
|
+
firstname: 'Clara',
|
|
3453
|
+
lastname: 'Moreau',
|
|
3454
|
+
email: 'clara.moreau@exemple.com',
|
|
3455
|
+
},
|
|
3456
|
+
{
|
|
3457
|
+
firstname: 'Lucas',
|
|
3458
|
+
lastname: 'Lefebvre',
|
|
3459
|
+
email: 'lucas.lefebre@exemple.com',
|
|
3460
|
+
},
|
|
3461
|
+
{
|
|
3462
|
+
firstname: 'Emma',
|
|
3463
|
+
lastname: 'Dubois',
|
|
3464
|
+
email: 'emma.dubois@exemple.com',
|
|
3465
|
+
},
|
|
3466
|
+
{
|
|
3467
|
+
firstname: 'Julien',
|
|
3468
|
+
lastname: 'Martin',
|
|
3469
|
+
email: 'julien.martin@exemple.com',
|
|
3470
|
+
},
|
|
3471
|
+
{
|
|
3472
|
+
firstname: 'Sophie',
|
|
3473
|
+
lastname: 'Bernard',
|
|
3474
|
+
email: 'sophie.bernard@exemple.com',
|
|
3475
|
+
},
|
|
3476
|
+
{
|
|
3477
|
+
firstname: 'Antoine',
|
|
3478
|
+
lastname: 'Lemoine',
|
|
3479
|
+
email: 'antoine.lemoine@exemple.com',
|
|
3480
|
+
},
|
|
3481
|
+
{
|
|
3482
|
+
firstname: 'Camille',
|
|
3483
|
+
lastname: 'Rousseau',
|
|
3484
|
+
email: 'camille.rousseau@exemple.com',
|
|
3485
|
+
},
|
|
3486
|
+
])
|
|
3487
|
+
</script>
|
|
3488
|
+
`,
|
|
3489
|
+
},
|
|
3490
|
+
],
|
|
3491
|
+
},
|
|
3492
|
+
args: {
|
|
3493
|
+
'headers': [
|
|
3494
|
+
{
|
|
3495
|
+
title: 'Nom',
|
|
3496
|
+
key: 'lastname',
|
|
3497
|
+
},
|
|
3498
|
+
{
|
|
3499
|
+
title: 'Prénom',
|
|
3500
|
+
key: 'firstname',
|
|
3501
|
+
},
|
|
3502
|
+
{
|
|
3503
|
+
title: 'Email',
|
|
3504
|
+
value: 'email',
|
|
3505
|
+
},
|
|
3506
|
+
],
|
|
3507
|
+
'items': [
|
|
3508
|
+
{
|
|
3509
|
+
firstname: 'Virginie',
|
|
3510
|
+
lastname: 'Beauchesne',
|
|
3511
|
+
email: 'virginie.beauchesne@example.com',
|
|
3512
|
+
},
|
|
3513
|
+
{
|
|
3514
|
+
firstname: 'Simone',
|
|
3515
|
+
lastname: 'Bellefeuille',
|
|
3516
|
+
email: 'simone.bellefeuille@example.com',
|
|
3517
|
+
},
|
|
3518
|
+
{
|
|
3519
|
+
firstname: 'Étienne',
|
|
3520
|
+
lastname: 'Salois',
|
|
3521
|
+
email: 'etienne.salois@example.com',
|
|
3522
|
+
},
|
|
3523
|
+
{
|
|
3524
|
+
firstname: 'Thierry',
|
|
3525
|
+
lastname: 'Bobu',
|
|
3526
|
+
email: 'thierry.bobu@example.com',
|
|
3527
|
+
},
|
|
3528
|
+
{
|
|
3529
|
+
firstname: 'Bernadette',
|
|
3530
|
+
lastname: 'Langelier',
|
|
3531
|
+
email: 'bernadette.langelier@exemple.com',
|
|
3532
|
+
},
|
|
3533
|
+
{
|
|
3534
|
+
firstname: 'Agate',
|
|
3535
|
+
lastname: 'Roy',
|
|
3536
|
+
email: 'agate.roy@exemple.com',
|
|
3537
|
+
},
|
|
3538
|
+
{
|
|
3539
|
+
firstname: 'Théo',
|
|
3540
|
+
lastname: 'Garnier',
|
|
3541
|
+
email: 'theo.garnier@exemple.com',
|
|
3542
|
+
},
|
|
3543
|
+
{
|
|
3544
|
+
firstname: 'Clara',
|
|
3545
|
+
lastname: 'Moreau',
|
|
3546
|
+
email: 'clara.moreau@exemple.com',
|
|
3547
|
+
},
|
|
3548
|
+
{
|
|
3549
|
+
firstname: 'Lucas',
|
|
3550
|
+
lastname: 'Lefebvre',
|
|
3551
|
+
email: 'lucas.lefebre@exemple.com',
|
|
3552
|
+
},
|
|
3553
|
+
{
|
|
3554
|
+
firstname: 'Emma',
|
|
3555
|
+
lastname: 'Dubois',
|
|
3556
|
+
email: 'emma.dubois@exemple.com',
|
|
3557
|
+
},
|
|
3558
|
+
{
|
|
3559
|
+
firstname: 'Julien',
|
|
3560
|
+
lastname: 'Martin',
|
|
3561
|
+
email: 'julien.martin@exemple.com',
|
|
3562
|
+
},
|
|
3563
|
+
{
|
|
3564
|
+
firstname: 'Sophie',
|
|
3565
|
+
lastname: 'Bernard',
|
|
3566
|
+
email: 'sophie.bernard@exemple.com',
|
|
3567
|
+
},
|
|
3568
|
+
{
|
|
3569
|
+
firstname: 'Antoine',
|
|
3570
|
+
lastname: 'Lemoine',
|
|
3571
|
+
email: 'antoine.lemoine@exemple.com',
|
|
3572
|
+
},
|
|
3573
|
+
{
|
|
3574
|
+
firstname: 'Camille',
|
|
3575
|
+
lastname: 'Rousseau',
|
|
3576
|
+
email: 'camille.rousseau@exemple.com',
|
|
3577
|
+
},
|
|
3578
|
+
],
|
|
3579
|
+
'options': {
|
|
3580
|
+
itemsPerPage: 5,
|
|
3581
|
+
},
|
|
3582
|
+
'itemsPerPageOptions': [5, 10, 15],
|
|
3583
|
+
'caption': '',
|
|
3584
|
+
'suffix': 'default-table',
|
|
3585
|
+
'density': 'default',
|
|
3586
|
+
'striped': false,
|
|
3587
|
+
'onUpdate:options': fn(),
|
|
3588
|
+
},
|
|
3589
|
+
render: (args) => {
|
|
3590
|
+
return {
|
|
3591
|
+
components: { SyTable },
|
|
3592
|
+
setup() {
|
|
3593
|
+
return { args }
|
|
3594
|
+
},
|
|
3595
|
+
template: `
|
|
3596
|
+
<SyTable
|
|
3597
|
+
v-model:options="args.options"
|
|
3598
|
+
v-bind="args"
|
|
3599
|
+
/>
|
|
3600
|
+
`,
|
|
3601
|
+
}
|
|
3602
|
+
},
|
|
3603
|
+
}
|
|
@@ -29,6 +29,7 @@
|
|
|
29
29
|
showSelect: false,
|
|
30
30
|
multiSort: false,
|
|
31
31
|
mustSort: false,
|
|
32
|
+
itemsPerPageOptions: undefined,
|
|
32
33
|
})
|
|
33
34
|
|
|
34
35
|
const emit = defineEmits<{
|
|
@@ -421,6 +422,7 @@
|
|
|
421
422
|
:items-per-page="itemsPerPageValue"
|
|
422
423
|
:page-count="pageCount"
|
|
423
424
|
:items-length="filteredItems.length"
|
|
425
|
+
:items-per-page-options="props.itemsPerPageOptions"
|
|
424
426
|
@update:page="page = $event"
|
|
425
427
|
@update:items-per-page="updateItemsPerPage"
|
|
426
428
|
/>
|
|
@@ -9,7 +9,10 @@
|
|
|
9
9
|
|
|
10
10
|
// Items per page options - standard options and current value
|
|
11
11
|
const itemsPerPageOptions = computed(() => {
|
|
12
|
-
|
|
12
|
+
// Use provided itemsPerPageOptions or default standard options
|
|
13
|
+
const baseOptions = props.itemsPerPageOptions || [5, 10, 25, 50, 100]
|
|
14
|
+
// Filter out -1 from base options since we'll handle it separately
|
|
15
|
+
const standardOptions = [...baseOptions.filter(option => option !== -1)]
|
|
13
16
|
|
|
14
17
|
// Add the current itemsPerPage if it's not already in the standard options
|
|
15
18
|
// and it's not -1 (which represents "Tous")
|
|
@@ -25,11 +28,14 @@
|
|
|
25
28
|
value,
|
|
26
29
|
}))
|
|
27
30
|
|
|
28
|
-
// Add "Tous" option
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
// Add "Tous" option only if not limited by itemsPerPageOptions
|
|
32
|
+
// or if explicitly allowed (by including -1 in itemsPerPageOptions)
|
|
33
|
+
if (!props.itemsPerPageOptions || props.itemsPerPageOptions.includes(-1)) {
|
|
34
|
+
options.push({
|
|
35
|
+
text: locales.pagination.all,
|
|
36
|
+
value: -1,
|
|
37
|
+
})
|
|
38
|
+
}
|
|
33
39
|
|
|
34
40
|
return options
|
|
35
41
|
})
|
|
@@ -39,6 +45,7 @@
|
|
|
39
45
|
pageCount: number
|
|
40
46
|
itemsPerPage: number
|
|
41
47
|
itemsLength: number
|
|
48
|
+
itemsPerPageOptions?: number[]
|
|
42
49
|
}>()
|
|
43
50
|
|
|
44
51
|
const emit = defineEmits<{
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
|
-
import { computed, nextTick, onMounted, ref, inject, watch, type Ref } from 'vue'
|
|
2
|
+
import { computed, nextTick, onMounted, ref, inject, watch, type Ref, onUnmounted } from 'vue'
|
|
3
3
|
import type { VDataTable, VDataTableServer } from 'vuetify/components'
|
|
4
4
|
import { locales } from './locales'
|
|
5
5
|
|
|
@@ -106,16 +106,19 @@
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
const tableWidth = ref(0)
|
|
109
|
-
|
|
110
|
-
await nextTick()
|
|
109
|
+
function updateTableWidth() {
|
|
111
110
|
if (props.table) {
|
|
112
111
|
tableWidth.value = props.table.$el.offsetWidth
|
|
113
112
|
}
|
|
113
|
+
}
|
|
114
|
+
onMounted(async () => {
|
|
115
|
+
await nextTick()
|
|
116
|
+
updateTableWidth()
|
|
114
117
|
})
|
|
115
|
-
window.addEventListener('resize',
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
118
|
+
window.addEventListener('resize', updateTableWidth)
|
|
119
|
+
|
|
120
|
+
onUnmounted(() => {
|
|
121
|
+
window.removeEventListener('resize', updateTableWidth)
|
|
119
122
|
})
|
|
120
123
|
|
|
121
124
|
function resizeKeyboardColumn(increment: number) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { onMounted } from 'vue'
|
|
1
|
+
import { onMounted, onUnmounted, ref } from 'vue'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Utility function to enhance table accessibility
|
|
@@ -8,6 +8,8 @@ export function useTableAccessibility({
|
|
|
8
8
|
}: {
|
|
9
9
|
tableId: string
|
|
10
10
|
}) {
|
|
11
|
+
// Référence pour stocker et nettoyer les timeouts
|
|
12
|
+
const accessibilityTimeouts = ref<ReturnType<typeof setTimeout>[]>([])
|
|
11
13
|
function setupAccessibility() {
|
|
12
14
|
onMounted(() => {
|
|
13
15
|
const captionElement = document.querySelector(`#${tableId} caption`)
|
|
@@ -31,11 +33,12 @@ export function useTableAccessibility({
|
|
|
31
33
|
}
|
|
32
34
|
|
|
33
35
|
// Check again after a delay
|
|
34
|
-
setTimeout(() => {
|
|
36
|
+
const timeoutId = setTimeout(() => {
|
|
35
37
|
if (element.hasAttribute('aria-controls')) {
|
|
36
38
|
element.removeAttribute('aria-controls')
|
|
37
39
|
}
|
|
38
40
|
}, 500)
|
|
41
|
+
accessibilityTimeouts.value.push(timeoutId)
|
|
39
42
|
})
|
|
40
43
|
|
|
41
44
|
const fieldLabels = document.querySelectorAll(`#${tableId} .v-field`)
|
|
@@ -53,6 +56,14 @@ export function useTableAccessibility({
|
|
|
53
56
|
th[i].setAttribute('scope', 'col')
|
|
54
57
|
}
|
|
55
58
|
})
|
|
59
|
+
|
|
60
|
+
// Nettoyer tous les timeouts lors du démontage du composant
|
|
61
|
+
onUnmounted(() => {
|
|
62
|
+
accessibilityTimeouts.value.forEach((timeoutId) => {
|
|
63
|
+
clearTimeout(timeoutId)
|
|
64
|
+
})
|
|
65
|
+
accessibilityTimeouts.value = []
|
|
66
|
+
})
|
|
56
67
|
}
|
|
57
68
|
|
|
58
69
|
return {
|