@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,9 +1,8 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
+
import useCustomizableOptions, { type CustomizableOptions } from '@/composables/useCustomizableOptions'
|
|
2
3
|
import { computed } from 'vue'
|
|
3
4
|
import { useTheme } from 'vuetify'
|
|
4
|
-
|
|
5
|
-
import useCustomizableOptions, { type CustomizableOptions } from '@/composables/useCustomizableOptions'
|
|
6
|
-
|
|
5
|
+
import SyIcon from '../Customs/SyIcon/SyIcon.vue'
|
|
7
6
|
import { config } from './config'
|
|
8
7
|
import { locales } from './locales'
|
|
9
8
|
|
|
@@ -34,7 +33,7 @@
|
|
|
34
33
|
|
|
35
34
|
const labelColor = computed(() => {
|
|
36
35
|
return theme.current.value.dark
|
|
37
|
-
? 'rgba(255, 255, 255, .
|
|
36
|
+
? 'rgba(255, 255, 255, .85)'
|
|
38
37
|
: 'rgba(0, 0, 0, .6)'
|
|
39
38
|
})
|
|
40
39
|
|
|
@@ -46,87 +45,95 @@
|
|
|
46
45
|
}
|
|
47
46
|
return props.value || props.placeholder
|
|
48
47
|
})
|
|
48
|
+
|
|
49
|
+
const actionButtonColor = computed(() => {
|
|
50
|
+
return theme.current.value.dark ? 'white' : 'primary'
|
|
51
|
+
})
|
|
49
52
|
</script>
|
|
50
53
|
|
|
51
54
|
<template>
|
|
52
|
-
<
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
<div
|
|
56
|
+
:class="{ 'sy-row': row }"
|
|
57
|
+
class="sy-data-list-item"
|
|
58
|
+
>
|
|
59
|
+
<dt
|
|
60
|
+
class="sy-data-list-item-label text-caption"
|
|
61
|
+
:style="{ color: labelColor }"
|
|
62
|
+
>
|
|
63
|
+
<slot name="icon">
|
|
64
|
+
<SyIcon
|
|
65
|
+
v-if="icon"
|
|
66
|
+
v-bind="options.icon"
|
|
67
|
+
:icon="icon"
|
|
68
|
+
:decorative="true"
|
|
69
|
+
/>
|
|
70
|
+
</slot>
|
|
71
|
+
<span>{{ label }} :</span>
|
|
72
|
+
</dt>
|
|
73
|
+
|
|
74
|
+
<dd
|
|
75
|
+
class="sy-data-list-item-value d-flex align-center ga-2"
|
|
76
|
+
:class="{ 'has-icon': icon }"
|
|
77
|
+
>
|
|
78
|
+
<slot
|
|
79
|
+
name="value"
|
|
80
|
+
v-bind="{ itemValue }"
|
|
57
81
|
>
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
<div class="sy-data-list-item-content">
|
|
63
|
-
<div :class="{ 'sy-row': row }">
|
|
64
|
-
<div
|
|
65
|
-
class="sy-data-list-item-label text-caption"
|
|
66
|
-
:style="{ color: labelColor }"
|
|
82
|
+
<VChip
|
|
83
|
+
v-if="chip"
|
|
84
|
+
v-bind="options.chip"
|
|
67
85
|
>
|
|
68
|
-
{{
|
|
69
|
-
</
|
|
70
|
-
|
|
71
|
-
<
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
86
|
+
{{ itemValue }}
|
|
87
|
+
</VChip>
|
|
88
|
+
|
|
89
|
+
<span
|
|
90
|
+
v-else-if="renderHtmlValue"
|
|
91
|
+
class="text-body-1"
|
|
92
|
+
v-html="itemValue"
|
|
93
|
+
/>
|
|
94
|
+
|
|
95
|
+
<span
|
|
96
|
+
v-else
|
|
97
|
+
class="text-body-1"
|
|
98
|
+
v-text="itemValue"
|
|
99
|
+
/>
|
|
100
|
+
|
|
101
|
+
<slot name="action">
|
|
102
|
+
<VBtn
|
|
103
|
+
v-if="action"
|
|
104
|
+
class="sy-data-list-item-action-btn px-2"
|
|
105
|
+
size="small"
|
|
106
|
+
variant="tonal"
|
|
107
|
+
:color="actionButtonColor"
|
|
108
|
+
@click="emits('click:action')"
|
|
75
109
|
>
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
>
|
|
80
|
-
{{ itemValue }}
|
|
81
|
-
</VChip>
|
|
82
|
-
|
|
83
|
-
<span
|
|
84
|
-
v-else-if="renderHtmlValue"
|
|
85
|
-
class="text-body-1"
|
|
86
|
-
v-html="itemValue"
|
|
87
|
-
/>
|
|
88
|
-
|
|
89
|
-
<span
|
|
90
|
-
v-else
|
|
91
|
-
class="text-body-1"
|
|
92
|
-
v-text="itemValue"
|
|
93
|
-
/>
|
|
94
|
-
</slot>
|
|
95
|
-
</div>
|
|
96
|
-
</div>
|
|
97
|
-
|
|
98
|
-
<slot name="action">
|
|
99
|
-
<VBtn
|
|
100
|
-
v-if="action"
|
|
101
|
-
v-bind="options.actionBtn"
|
|
102
|
-
class="sy-data-list-item-action-btn"
|
|
103
|
-
@click="emits('click:action')"
|
|
104
|
-
>
|
|
105
|
-
{{ action }}
|
|
106
|
-
</VBtn>
|
|
110
|
+
{{ action }}
|
|
111
|
+
</VBtn>
|
|
112
|
+
</slot>
|
|
107
113
|
</slot>
|
|
108
|
-
</
|
|
109
|
-
</
|
|
114
|
+
</dd>
|
|
115
|
+
</div>
|
|
110
116
|
</template>
|
|
111
117
|
|
|
112
118
|
<style lang="scss" scoped>
|
|
113
119
|
.sy-row {
|
|
114
120
|
display: flex;
|
|
115
121
|
flex-wrap: wrap;
|
|
122
|
+
gap: 0.25rem;
|
|
116
123
|
|
|
117
124
|
.sy-data-list-item-label {
|
|
118
125
|
align-self: center;
|
|
119
|
-
|
|
120
|
-
&::after {
|
|
121
|
-
content: ':';
|
|
122
|
-
margin: 0 4px;
|
|
123
|
-
}
|
|
124
126
|
}
|
|
125
127
|
}
|
|
126
128
|
|
|
129
|
+
.sy-data-list-item-value.has-icon {
|
|
130
|
+
margin-left: 2.5rem;
|
|
131
|
+
}
|
|
132
|
+
|
|
127
133
|
.sy-data-list-item-action-btn.v-btn {
|
|
128
|
-
|
|
129
|
-
|
|
134
|
+
&:focus-visible::after {
|
|
135
|
+
opacity: 1;
|
|
136
|
+
}
|
|
130
137
|
}
|
|
131
138
|
|
|
132
139
|
.v-icon.v-theme--light {
|
|
@@ -622,8 +622,8 @@ export const WithError: Story = {
|
|
|
622
622
|
v-model="date"
|
|
623
623
|
placeholder="notAfterToday"
|
|
624
624
|
:custom-rules="[
|
|
625
|
-
|
|
626
|
-
|
|
625
|
+
{ type: 'notAfterToday', options: { message: 'La date ne peut pas être après aujourd'hui' } },
|
|
626
|
+
]"
|
|
627
627
|
/>
|
|
628
628
|
</template>
|
|
629
629
|
`,
|
|
@@ -656,7 +656,7 @@ export const WithError: Story = {
|
|
|
656
656
|
'noCalendar': false,
|
|
657
657
|
'modelValue': '01/01/2100',
|
|
658
658
|
'customRules': [
|
|
659
|
-
{ type: 'notAfterToday', options: { message: 'La date ne peut pas être après aujourd
|
|
659
|
+
{ type: 'notAfterToday', options: { message: 'La date ne peut pas être après aujourd hui' } },
|
|
660
660
|
],
|
|
661
661
|
'onUpdate:modelValue': fn(),
|
|
662
662
|
'onFocus': fn(),
|
|
@@ -68,6 +68,7 @@
|
|
|
68
68
|
max?: string
|
|
69
69
|
}
|
|
70
70
|
autoClamp?: boolean
|
|
71
|
+
isValidateOnBlur?: boolean
|
|
71
72
|
}>(), {
|
|
72
73
|
modelValue: undefined,
|
|
73
74
|
label: DATE_PICKER_MESSAGES.LABEL_DEFAULT,
|
|
@@ -106,13 +107,14 @@
|
|
|
106
107
|
max: '',
|
|
107
108
|
}),
|
|
108
109
|
autoClamp: false,
|
|
110
|
+
isValidateOnBlur: true,
|
|
109
111
|
})
|
|
110
112
|
|
|
111
113
|
// La compatibilité entre isBirthDate et birthDate est gérée directement dans l'appel au composable
|
|
112
114
|
|
|
113
115
|
// Utilisation des composables pour les fonctionnalités du CalendarMode
|
|
114
116
|
const { displayWeekendDays } = useWeekendDays(props)
|
|
115
|
-
const { todayInString } = useTodayButton(props)
|
|
117
|
+
const { todayInString, headerDate } = useTodayButton(props)
|
|
116
118
|
const { labelWithAsterisk } = useAsteriskDisplay(props)
|
|
117
119
|
|
|
118
120
|
const selectedDates = ref<Date | Date[] | null>(
|
|
@@ -125,9 +127,12 @@
|
|
|
125
127
|
todayInString,
|
|
126
128
|
})
|
|
127
129
|
|
|
130
|
+
const onblur = ref(false)
|
|
131
|
+
|
|
128
132
|
const dateTextInputRef = ref<null | ComponentPublicInstance<typeof DateTextInput>>()
|
|
129
133
|
const dateCalendarTextInputRef = ref<null | ComponentPublicInstance<typeof SyTextField>>()
|
|
130
134
|
const datePickerRef = ref<null | ComponentPublicInstance<typeof VDatePicker>>()
|
|
135
|
+
const complexDatePickerRef = ref<null | ComponentPublicInstance<typeof ComplexDatePicker>>()
|
|
131
136
|
|
|
132
137
|
// Fonction pour sélectionner la date du jour
|
|
133
138
|
const handleSelectToday = () => {
|
|
@@ -151,6 +156,12 @@
|
|
|
151
156
|
|
|
152
157
|
// Mettre à jour l'affichage formaté
|
|
153
158
|
updateDisplayFormattedDate()
|
|
159
|
+
|
|
160
|
+
// Mettre à jour les variables currentMonth et currentYear pour refléter la date d'aujourd'hui
|
|
161
|
+
currentMonth.value = today.getMonth().toString()
|
|
162
|
+
currentYear.value = today.getFullYear().toString()
|
|
163
|
+
currentMonthName.value = dayjs(today).format('MMMM')
|
|
164
|
+
currentYearName.value = today.getFullYear().toString()
|
|
154
165
|
}
|
|
155
166
|
|
|
156
167
|
const emit = defineEmits<{
|
|
@@ -210,6 +221,10 @@
|
|
|
210
221
|
if (props.readonly) {
|
|
211
222
|
return
|
|
212
223
|
}
|
|
224
|
+
// Ne pas afficher d'erreur si on est sur une perte de focus et si isValidateOnBlur est false
|
|
225
|
+
if (onblur.value && !props.isValidateOnBlur) {
|
|
226
|
+
return
|
|
227
|
+
}
|
|
213
228
|
// Ne pas afficher d'erreur si on est dans le contexte du mounted initial
|
|
214
229
|
if (shouldDisplayErrors && (!isInitialValidation.value || forceValidation)) {
|
|
215
230
|
errors.value.push(DATE_PICKER_MESSAGES.ERROR_REQUIRED)
|
|
@@ -275,8 +290,13 @@
|
|
|
275
290
|
try {
|
|
276
291
|
isUpdatingFromInternal.value = true
|
|
277
292
|
if (Array.isArray(newValue)) {
|
|
278
|
-
// Pour les plages de dates,
|
|
279
|
-
if (newValue.length
|
|
293
|
+
// Pour les plages de dates, formater correctement la plage complète
|
|
294
|
+
if (props.displayRange && newValue.length >= 2) {
|
|
295
|
+
// Formater la plage complète pour l'affichage
|
|
296
|
+
textInputValue.value = `${formatDate(newValue[0], props.format)} - ${formatDate(newValue[1], props.format)}`
|
|
297
|
+
}
|
|
298
|
+
else if (newValue.length > 0) {
|
|
299
|
+
// Si on n'a qu'une date ou mode non-range, utiliser la première date
|
|
280
300
|
textInputValue.value = formatDate(newValue[0], props.format)
|
|
281
301
|
}
|
|
282
302
|
}
|
|
@@ -545,9 +565,14 @@
|
|
|
545
565
|
})
|
|
546
566
|
|
|
547
567
|
const validateOnSubmit = () => {
|
|
568
|
+
// Si le mode noCalendar est activé, on délègue la validation au DateTextInput
|
|
548
569
|
if (props.noCalendar) {
|
|
549
570
|
return dateTextInputRef.value?.validateOnSubmit()
|
|
550
571
|
}
|
|
572
|
+
// Si le mode combiné est activé, on délègue la validation au ComplexDatePicker
|
|
573
|
+
else if (props.useCombinedMode) {
|
|
574
|
+
return complexDatePickerRef.value?.validateOnSubmit()
|
|
575
|
+
}
|
|
551
576
|
// Forcer la validation pour ignorer les conditions de validation interactive
|
|
552
577
|
validateDates(true)
|
|
553
578
|
// Retourner directement un booléen pour maintenir la compatibilité avec les tests existants
|
|
@@ -652,7 +677,10 @@
|
|
|
652
677
|
|
|
653
678
|
const handleInputBlur = () => {
|
|
654
679
|
emit('blur')
|
|
655
|
-
|
|
680
|
+
onblur.value = true
|
|
681
|
+
if (props.isValidateOnBlur) {
|
|
682
|
+
validateDates(true)
|
|
683
|
+
}
|
|
656
684
|
}
|
|
657
685
|
|
|
658
686
|
watch(isDatePickerVisible, async (isVisible) => {
|
|
@@ -665,22 +693,14 @@
|
|
|
665
693
|
resetViewMode()
|
|
666
694
|
}
|
|
667
695
|
|
|
668
|
-
if (isVisible) {
|
|
669
|
-
// set the focus on the date picker
|
|
670
|
-
await nextTick()
|
|
671
|
-
const firstButton = datePickerRef.value?.$el.querySelector('button')
|
|
672
|
-
if (firstButton) {
|
|
673
|
-
firstButton.focus()
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
else {
|
|
696
|
+
if (!isVisible) {
|
|
677
697
|
// set the focus on the text input
|
|
678
698
|
// wait for VMenu to finish DOM updates & transition
|
|
679
699
|
setTimeout(() => {
|
|
680
700
|
requestAnimationFrame(() => {
|
|
681
|
-
const inputElement = dateCalendarTextInputRef.value?.$el?.querySelector('input')
|
|
701
|
+
const inputElement = dateCalendarTextInputRef.value?.$el?.querySelector?.('input')
|
|
682
702
|
if (inputElement) {
|
|
683
|
-
inputElement.focus()
|
|
703
|
+
inputElement.focus({ preventScroll: true })
|
|
684
704
|
isDatePickerVisible.value = false
|
|
685
705
|
}
|
|
686
706
|
})
|
|
@@ -793,8 +813,9 @@
|
|
|
793
813
|
customizeMonthButton()
|
|
794
814
|
}
|
|
795
815
|
|
|
816
|
+
// Ne plus ouvrir automatiquement le calendrier au focus, juste émettre l'événement
|
|
796
817
|
const openDatePickerOnFocus = () => {
|
|
797
|
-
openDatePicker()
|
|
818
|
+
// openDatePicker() - désactivé pour améliorer l'accessibilité
|
|
798
819
|
emit('focus')
|
|
799
820
|
}
|
|
800
821
|
|
|
@@ -802,6 +823,22 @@
|
|
|
802
823
|
toggleDatePicker()
|
|
803
824
|
}
|
|
804
825
|
|
|
826
|
+
// Gestionnaire d'événement clavier pour l'input
|
|
827
|
+
const handleInputKeydown = (event: KeyboardEvent) => {
|
|
828
|
+
// Ouvrir le calendrier uniquement lorsque la touche Entrée est pressée
|
|
829
|
+
if (event.key === 'Enter') {
|
|
830
|
+
openDatePicker()
|
|
831
|
+
event.preventDefault() // Empêcher la soumission du formulaire
|
|
832
|
+
}
|
|
833
|
+
// Fermer le calendrier lorsque la touche Escape est pressée
|
|
834
|
+
else if ((event.key === 'Escape' || event.key === 'Esc') && isDatePickerVisible.value) {
|
|
835
|
+
isDatePickerVisible.value = false
|
|
836
|
+
emit('closed')
|
|
837
|
+
validateDates() // Valider les dates à la fermeture
|
|
838
|
+
event.preventDefault()
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
|
|
805
842
|
defineExpose({
|
|
806
843
|
validateOnSubmit,
|
|
807
844
|
isDatePickerVisible,
|
|
@@ -847,6 +884,7 @@
|
|
|
847
884
|
:period="props.period"
|
|
848
885
|
:auto-clamp="props.autoClamp"
|
|
849
886
|
:display-asterisk="props.displayAsterisk"
|
|
887
|
+
:is-validate-on-blur="props.isValidateOnBlur"
|
|
850
888
|
@update:model-value="handleDateTextInputUpdate"
|
|
851
889
|
@date-selected="handleDateTextInputSelection"
|
|
852
890
|
@blur="handleInputBlur"
|
|
@@ -855,6 +893,7 @@
|
|
|
855
893
|
</template>
|
|
856
894
|
<template v-else-if="props.useCombinedMode">
|
|
857
895
|
<ComplexDatePicker
|
|
896
|
+
ref="complexDatePickerRef"
|
|
858
897
|
:model-value="props.modelValue"
|
|
859
898
|
:format="props.format"
|
|
860
899
|
:date-format-return="props.dateFormatReturn"
|
|
@@ -886,6 +925,7 @@
|
|
|
886
925
|
:auto-clamp="props.autoClamp"
|
|
887
926
|
:label="props.label"
|
|
888
927
|
:placeholder="props.placeholder"
|
|
928
|
+
:is-validate-on-blur="props.isValidateOnBlur"
|
|
889
929
|
@update:model-value="emit('update:modelValue', $event)"
|
|
890
930
|
@focus="emit('focus')"
|
|
891
931
|
@blur="emit('blur')"
|
|
@@ -901,7 +941,7 @@
|
|
|
901
941
|
location="bottom"
|
|
902
942
|
:close-on-content-click="false"
|
|
903
943
|
:open-on-click="false"
|
|
904
|
-
scroll-strategy="
|
|
944
|
+
scroll-strategy="reposition"
|
|
905
945
|
transition="fade-transition"
|
|
906
946
|
attach="body"
|
|
907
947
|
:offset="[-20, 5]"
|
|
@@ -938,6 +978,7 @@
|
|
|
938
978
|
@click="openDatePickerOnClick"
|
|
939
979
|
@focus="openDatePickerOnFocus"
|
|
940
980
|
@blur="handleInputBlur"
|
|
981
|
+
@keydown="handleInputKeydown"
|
|
941
982
|
@update:model-value="updateSelectedDates"
|
|
942
983
|
@prepend-icon-click="openDatePickerOnIconClick"
|
|
943
984
|
@append-icon-click="openDatePickerOnIconClick"
|
|
@@ -970,7 +1011,7 @@
|
|
|
970
1011
|
</template>
|
|
971
1012
|
<template #header>
|
|
972
1013
|
<h3 class="mx-auto my-auto ml-5 mb-4">
|
|
973
|
-
{{ displayedDateString }}
|
|
1014
|
+
{{ selectedDates ? displayedDateString : headerDate }}
|
|
974
1015
|
</h3>
|
|
975
1016
|
</template>
|
|
976
1017
|
<template
|
|
@@ -1305,3 +1305,177 @@ export const WithFormSubmission: Story = {
|
|
|
1305
1305
|
}
|
|
1306
1306
|
},
|
|
1307
1307
|
}
|
|
1308
|
+
|
|
1309
|
+
export const CustomRules: Story = {
|
|
1310
|
+
parameters: {
|
|
1311
|
+
sourceCode: [
|
|
1312
|
+
{
|
|
1313
|
+
name: 'Template',
|
|
1314
|
+
code: `
|
|
1315
|
+
<template>
|
|
1316
|
+
<DatePicker
|
|
1317
|
+
v-model="date"
|
|
1318
|
+
placeholder="Date requise"
|
|
1319
|
+
format="DD/MM/YYYY"
|
|
1320
|
+
required
|
|
1321
|
+
class="mb-4"
|
|
1322
|
+
useCombinedMode
|
|
1323
|
+
:customRules="customRules"
|
|
1324
|
+
/>
|
|
1325
|
+
</template>
|
|
1326
|
+
`,
|
|
1327
|
+
},
|
|
1328
|
+
{
|
|
1329
|
+
name: 'Script',
|
|
1330
|
+
code: `
|
|
1331
|
+
<script setup lang="ts">
|
|
1332
|
+
import { DatePicker } from '@cnamts/synapse'
|
|
1333
|
+
import { ref } from 'vue'
|
|
1334
|
+
|
|
1335
|
+
const date = ref('')
|
|
1336
|
+
|
|
1337
|
+
const customRules = [
|
|
1338
|
+
{
|
|
1339
|
+
type: 'notBeforeToday',
|
|
1340
|
+
options: {
|
|
1341
|
+
message: 'La date ne peut pas être antérieure à aujourd'hui',
|
|
1342
|
+
},
|
|
1343
|
+
},
|
|
1344
|
+
]
|
|
1345
|
+
</script>
|
|
1346
|
+
`,
|
|
1347
|
+
},
|
|
1348
|
+
],
|
|
1349
|
+
},
|
|
1350
|
+
render: () => {
|
|
1351
|
+
return {
|
|
1352
|
+
components: { DatePicker },
|
|
1353
|
+
setup() {
|
|
1354
|
+
const customRules = [
|
|
1355
|
+
{
|
|
1356
|
+
type: 'notBeforeToday',
|
|
1357
|
+
options: {
|
|
1358
|
+
message: 'La date ne peut pas être antérieure à aujourd\'hui',
|
|
1359
|
+
},
|
|
1360
|
+
},
|
|
1361
|
+
]
|
|
1362
|
+
|
|
1363
|
+
// Valeur du DatePicker
|
|
1364
|
+
const date = ref(null)
|
|
1365
|
+
|
|
1366
|
+
return { date, customRules }
|
|
1367
|
+
},
|
|
1368
|
+
template: `
|
|
1369
|
+
<div class="d-flex flex-wrap align-center pa-4">
|
|
1370
|
+
<DatePicker
|
|
1371
|
+
v-model="date"
|
|
1372
|
+
:custom-rules="customRules"
|
|
1373
|
+
required
|
|
1374
|
+
use-combined-mode
|
|
1375
|
+
label="Date de rendez-vous"
|
|
1376
|
+
placeholder="JJ/MM/AAAA"
|
|
1377
|
+
/>
|
|
1378
|
+
</div>
|
|
1379
|
+
`,
|
|
1380
|
+
}
|
|
1381
|
+
},
|
|
1382
|
+
}
|
|
1383
|
+
|
|
1384
|
+
export const CustomWarningRules: Story = {
|
|
1385
|
+
parameters: {
|
|
1386
|
+
sourceCode: [
|
|
1387
|
+
{
|
|
1388
|
+
name: 'Template',
|
|
1389
|
+
code: `
|
|
1390
|
+
<template>
|
|
1391
|
+
<DatePicker
|
|
1392
|
+
v-model="date"
|
|
1393
|
+
placeholder="Date requise"
|
|
1394
|
+
format="DD/MM/YYYY"
|
|
1395
|
+
required
|
|
1396
|
+
class="mb-4"
|
|
1397
|
+
useCombinedMode
|
|
1398
|
+
:customWarningRules="customWarningRules"
|
|
1399
|
+
/>
|
|
1400
|
+
</template>
|
|
1401
|
+
`,
|
|
1402
|
+
},
|
|
1403
|
+
{
|
|
1404
|
+
name: 'Script',
|
|
1405
|
+
code: `
|
|
1406
|
+
<script setup lang="ts">
|
|
1407
|
+
import { DatePicker } from '@cnamts/synapse'
|
|
1408
|
+
import { ref } from 'vue'
|
|
1409
|
+
|
|
1410
|
+
const date = ref('')
|
|
1411
|
+
const customWarningRules = [
|
|
1412
|
+
{
|
|
1413
|
+
type: 'custom',
|
|
1414
|
+
options: {
|
|
1415
|
+
validate: (value: string | Date) => {
|
|
1416
|
+
// check if manual entry
|
|
1417
|
+
if (typeof value === 'string') {
|
|
1418
|
+
return !value.includes('2025')
|
|
1419
|
+
} else {
|
|
1420
|
+
// check if DatePicker selection
|
|
1421
|
+
return !value.getFullYear().toString().includes('2025')
|
|
1422
|
+
}
|
|
1423
|
+
},
|
|
1424
|
+
warningMessage: 'Les dates en 2025 ne sont pas autorisées',
|
|
1425
|
+
successMessage: 'Date hors 2025',
|
|
1426
|
+
fieldIdentifier: 'date',
|
|
1427
|
+
},
|
|
1428
|
+
},
|
|
1429
|
+
]
|
|
1430
|
+
</script>
|
|
1431
|
+
`,
|
|
1432
|
+
},
|
|
1433
|
+
],
|
|
1434
|
+
},
|
|
1435
|
+
render: () => {
|
|
1436
|
+
return {
|
|
1437
|
+
components: { DatePicker },
|
|
1438
|
+
setup() {
|
|
1439
|
+
const customWarningRules = [
|
|
1440
|
+
{
|
|
1441
|
+
type: 'custom',
|
|
1442
|
+
options: {
|
|
1443
|
+
validate: (value: string | Date) => {
|
|
1444
|
+
// check typeof value
|
|
1445
|
+
if (typeof value === 'string') {
|
|
1446
|
+
return !value.includes('2025')
|
|
1447
|
+
}
|
|
1448
|
+
else {
|
|
1449
|
+
// check if value is a Date
|
|
1450
|
+
return !value.getFullYear().toString().includes('2025')
|
|
1451
|
+
}
|
|
1452
|
+
},
|
|
1453
|
+
warningMessage: 'Les dates en 2025 ne sont pas autorisées',
|
|
1454
|
+
successMessage: 'Date hors 2025',
|
|
1455
|
+
fieldIdentifier: 'date',
|
|
1456
|
+
isWarning: true,
|
|
1457
|
+
},
|
|
1458
|
+
},
|
|
1459
|
+
]
|
|
1460
|
+
|
|
1461
|
+
// Valeur du DatePicker
|
|
1462
|
+
const date = ref('')
|
|
1463
|
+
|
|
1464
|
+
return { date, customWarningRules }
|
|
1465
|
+
},
|
|
1466
|
+
template: `
|
|
1467
|
+
<div class="d-flex flex-wrap align-center pa-4">
|
|
1468
|
+
<DatePicker
|
|
1469
|
+
v-model="date"
|
|
1470
|
+
:custom-warning-rules="customWarningRules"
|
|
1471
|
+
required
|
|
1472
|
+
use-combined-mode
|
|
1473
|
+
label="Date de rendez-vous"
|
|
1474
|
+
placeholder="JJ/MM/AAAA"
|
|
1475
|
+
/>
|
|
1476
|
+
</div>
|
|
1477
|
+
`,
|
|
1478
|
+
}
|
|
1479
|
+
},
|
|
1480
|
+
|
|
1481
|
+
}
|