@cnamts/synapse 1.0.9 → 1.0.10
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-BylukfjR.js → DateFilter-C0wDuzgn.js} +1 -1
- package/dist/{NumberFilter-C_bUk9o1.js → NumberFilter-CBj7zdOi.js} +1 -1
- package/dist/{PeriodFilter-dVOmcfmt.js → PeriodFilter-DB4wWyKy.js} +1 -1
- package/dist/{SelectFilter-BW8KpXkQ.js → SelectFilter-Dces8572.js} +1 -1
- package/dist/{TextFilter-diwVzTz7.js → TextFilter-BU9nlkuS.js} +1 -1
- package/dist/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.d.ts +110 -0
- package/dist/components/Amelipro/AmeliproAccordionFrieze/types.d.ts +6 -0
- package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +120 -120
- package/dist/components/Amelipro/AmeliproBtn/AmeliproBtn.d.ts +2 -2
- package/dist/components/Amelipro/AmeliproCarousel/AmeliproCarousel.d.ts +3 -3
- package/dist/components/Amelipro/AmeliproDentalChart/AmeliproDentalChart.d.ts +47 -0
- package/dist/components/Amelipro/AmeliproDentalChart/AmeliproTooth/AmeliproTooth.d.ts +88 -0
- package/dist/components/Amelipro/AmeliproDentalChart/types.d.ts +13 -0
- package/dist/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.d.ts +70 -0
- package/dist/components/Amelipro/AmeliproFirstLogin/locales.d.ts +46 -0
- package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.d.ts +149 -0
- package/dist/components/Amelipro/AmeliproPatientLogged/types.d.ts +48 -0
- package/dist/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLogin.d.ts +177 -0
- package/dist/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/AmeliproPatientLoginForm.d.ts +169 -0
- package/dist/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/types.d.ts +5 -0
- package/dist/components/Amelipro/AmeliproPatientLogin/types.d.ts +5 -0
- package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +2925 -0
- package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/types.d.ts +11 -0
- package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +4489 -0
- package/dist/components/Amelipro/AmeliproPostalAddressField/types.d.ts +17 -0
- package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +120 -120
- package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +120 -120
- package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +12 -12
- package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +30 -30
- package/dist/components/Amelipro/AmeliproTooltips/AmeliproTooltips.d.ts +12 -2
- package/dist/components/CookieBanner/CookieBanner.d.ts +7 -7
- package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +20 -20
- package/dist/components/CookiesSelection/CookiesSelection.d.ts +9 -9
- package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +7 -6
- package/dist/components/Customs/SyForm/SyForm.d.ts +1820 -0
- package/dist/components/Customs/SyTabs/SyTabs.d.ts +3 -1
- package/dist/components/Customs/SyTabs/useTabTransition.d.ts +5 -0
- package/dist/components/Customs/SyTextField/SyTextField.d.ts +36 -31
- package/dist/components/Customs/SyTextField/types.d.ts +1 -1
- package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +232 -134
- package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +121 -71
- package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +60 -37
- package/dist/components/DatePicker/composables/useDateValidation.d.ts +14 -2
- package/dist/components/DatePicker/composables/useManualDateValidation.d.ts +2 -2
- package/dist/components/DatePicker/tests/setup.d.ts +74354 -0
- package/dist/components/DialogBox/DialogBox.d.ts +10 -10
- package/dist/components/DialogBox/locales.d.ts +1 -0
- package/dist/components/DialogBox/useDraggable.d.ts +2 -0
- package/dist/components/FilterSideBar/FilterSideBar.d.ts +7 -7
- package/dist/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.d.ts +2 -0
- package/dist/components/HeaderNavigationBar/types.d.ts +1 -0
- package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +842 -9
- package/dist/components/HeaderToolbar/locales.d.ts +3 -0
- package/dist/components/HeaderToolbar/useMobileRightMenu.d.ts +10 -0
- package/dist/components/LangBtn/LangBtn.d.ts +8 -8
- package/dist/components/NirField/NirField.d.ts +90 -65
- package/dist/components/NirField/locales.d.ts +6 -4
- package/dist/components/PasswordField/PasswordField.d.ts +3 -1
- package/dist/components/PasswordField/locales.d.ts +2 -0
- package/dist/components/PeriodField/PeriodField.d.ts +460 -260
- package/dist/components/PhoneField/PhoneField.d.ts +45 -32
- package/dist/components/RangeField/RangeField.d.ts +11 -1
- package/dist/components/RangeField/RangeSlider/RangeSlider.d.ts +2 -2
- package/dist/components/RangeField/config.d.ts +3 -0
- package/dist/components/RatingPicker/EmotionPicker/EmotionPicker.d.ts +3 -1
- package/dist/components/RatingPicker/EmotionPicker/locales.d.ts +2 -0
- package/dist/components/RatingPicker/NumberPicker/NumberPicker.d.ts +3 -1
- package/dist/components/RatingPicker/StarsPicker/StarsPicker.d.ts +3 -1
- package/dist/components/RatingPicker/locales.d.ts +1 -0
- package/dist/components/SearchListField/SearchListField.d.ts +6 -6
- package/dist/components/SyAlert/SyAlert.d.ts +2 -2
- package/dist/components/SyTextArea/SyTextArea.d.ts +13 -13
- package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +3 -5
- package/dist/components/Tables/SyTable/SyTable.d.ts +3 -5
- package/dist/components/Tables/common/SyTablePagination.d.ts +8 -6
- package/dist/components/Tables/common/organizeColumns/OrganizeColumns.d.ts +4 -4
- package/dist/components/Tables/common/usePagination.d.ts +1 -3
- package/dist/components/Tables/common/useTableCheckbox.d.ts +1 -1
- package/dist/components/UploadWorkflow/UploadWorkflow.d.ts +4 -4
- package/dist/components/index.d.ts +8 -0
- package/dist/composables/validation/useFormValidation.d.ts +24 -0
- package/dist/composables/validation/useValidatable.d.ts +17 -0
- package/dist/design-system-v3.js +181 -173
- package/dist/design-system-v3.umd.cjs +265 -263
- package/dist/{main-2eWGB7zZ.js → main-Dt4iNotT.js} +14095 -11151
- package/dist/style.css +1 -1
- package/dist/tooth-11-B9fN9Ow_.js +4 -0
- package/dist/tooth-12-BOOjuDe9.js +4 -0
- package/dist/tooth-13-DVU7jhZ8.js +4 -0
- package/dist/tooth-14-CXNleTBu.js +4 -0
- package/dist/tooth-15-iq3z8dzZ.js +4 -0
- package/dist/tooth-16-BuNIHSQk.js +4 -0
- package/dist/tooth-17-DLb4ijsH.js +4 -0
- package/dist/tooth-18-huijQe68.js +4 -0
- package/dist/tooth-21-Bl7Q-o4y.js +4 -0
- package/dist/tooth-22-ChQKI3h5.js +4 -0
- package/dist/tooth-23-CkzbEvBa.js +4 -0
- package/dist/tooth-24-BpaPUSEp.js +4 -0
- package/dist/tooth-25-BaVfhAL6.js +4 -0
- package/dist/tooth-26-BnL03Jv5.js +4 -0
- package/dist/tooth-27-BaHyZfhH.js +4 -0
- package/dist/tooth-28-BrMBVEgX.js +4 -0
- package/dist/tooth-31-DEH3Btej.js +4 -0
- package/dist/tooth-32-Dqcy596v.js +4 -0
- package/dist/tooth-33-DLzQOVky.js +4 -0
- package/dist/tooth-34-36nkjUPW.js +4 -0
- package/dist/tooth-35-VfFhleWT.js +4 -0
- package/dist/tooth-36-BHwtGkLx.js +4 -0
- package/dist/tooth-37-CT47Rtk-.js +4 -0
- package/dist/tooth-38-D15JmYSD.js +4 -0
- package/dist/tooth-41--x9N_iSc.js +4 -0
- package/dist/tooth-42-DZ1D3qmP.js +4 -0
- package/dist/tooth-43-C9T3b5_0.js +4 -0
- package/dist/tooth-44-CsPRBSZV.js +4 -0
- package/dist/tooth-45-Dg3wQunm.js +4 -0
- package/dist/tooth-46-DAOEt4G5.js +4 -0
- package/dist/tooth-47-DcqUeVM0.js +4 -0
- package/dist/tooth-48-0MVzkYem.js +4 -0
- package/dist/tooth-51-DOTod22I.js +4 -0
- package/dist/tooth-52-DZB1Jabv.js +4 -0
- package/dist/tooth-53-nunm2BQr.js +4 -0
- package/dist/tooth-54-BwdYfBd-.js +4 -0
- package/dist/tooth-55-BUJdNwqL.js +4 -0
- package/dist/tooth-61-BwqR1B88.js +4 -0
- package/dist/tooth-62-BzaECsvF.js +4 -0
- package/dist/tooth-63-wjdIfSq2.js +4 -0
- package/dist/tooth-64-CGW4ZcUq.js +4 -0
- package/dist/tooth-65-DxH4GgAL.js +4 -0
- package/dist/tooth-71-CmjVz11G.js +4 -0
- package/dist/tooth-72-CCyNUD-W.js +4 -0
- package/dist/tooth-73-D6aJwVz4.js +4 -0
- package/dist/tooth-74-zNtDQ6ig.js +4 -0
- package/dist/tooth-75-DDEx6y4E.js +4 -0
- package/dist/tooth-81-xg8UVvz2.js +4 -0
- package/dist/tooth-82-CtNXwBtB.js +4 -0
- package/dist/tooth-83-C2ODw7VT.js +4 -0
- package/dist/tooth-84-BKIdO9HA.js +4 -0
- package/dist/tooth-85-3YmvfAsK.js +4 -0
- package/package.json +2 -2
- package/src/assets/amelipro/img/dental-chart-img/tooth-11.svg +16 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-12.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-13.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-14.svg +26 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-15.svg +21 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-16.svg +31 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-17.svg +26 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-18.svg +26 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-21.svg +16 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-22.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-23.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-24.svg +26 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-25.svg +21 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-26.svg +31 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-27.svg +26 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-28.svg +26 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-31.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-32.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-33.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-34.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-35.svg +22 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-36.svg +26 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-37.svg +26 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-38.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-41.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-42.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-43.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-44.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-45.svg +22 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-46.svg +26 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-47.svg +26 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-48.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-51.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-52.svg +16 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-53.svg +16 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-54.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-55.svg +16 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-61.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-62.svg +16 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-63.svg +16 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-64.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-65.svg +16 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-71.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-72.svg +16 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-73.svg +16 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-74.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-75.svg +16 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-81.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-82.svg +16 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-83.svg +16 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-84.svg +11 -0
- package/src/assets/amelipro/img/dental-chart-img/tooth-85.svg +16 -0
- package/src/assets/amelipro/img/idpa/apcv_logo.svg +16 -0
- package/src/assets/amelipro/img/idpa/carte-vitale.svg +75 -0
- package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.mdx +15 -0
- package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.stories.ts +261 -0
- package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +419 -0
- package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/AmeliproAccordionFrieze.spec.ts +98 -0
- package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/__snapshots__/AmeliproAccordionFrieze.spec.ts.snap +858 -0
- package/src/components/Amelipro/AmeliproAccordionFrieze/types.d.ts +6 -0
- package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +2 -2
- package/src/components/Amelipro/AmeliproAccordionList/__tests__/__snapshots__/AmeliproAccordionList.spec.ts.snap +0 -4
- package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +2 -2
- package/src/components/Amelipro/AmeliproAccordionResultList/__tests__/__snapshots__/AmeliproAccordionResultList.spec.ts.snap +0 -4
- package/src/components/Amelipro/AmeliproBadge/AmeliproBadge.stories.ts +97 -0
- package/src/components/Amelipro/AmeliproBtn/AmeliproBtn.stories.ts +190 -8
- package/src/components/Amelipro/AmeliproCallback/AmeliproCallback.stories.ts +321 -0
- package/src/components/Amelipro/AmeliproCaptcha/AmeliproCaptcha.vue +1 -1
- package/src/components/Amelipro/AmeliproCard/AmeliproCard.stories.ts +360 -0
- package/src/components/Amelipro/AmeliproCheckbox/AmeliproCheckbox.stories.ts +1 -1
- package/src/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.stories.ts +2 -2
- package/src/components/Amelipro/AmeliproCheckboxGroup/AmeliproCheckboxGroup.vue +1 -1
- package/src/components/Amelipro/AmeliproChips/AmeliproChips.stories.ts +46 -0
- package/src/components/Amelipro/AmeliproClickableTile/AmeliproClickableTile.stories.ts +173 -0
- package/src/components/Amelipro/AmeliproCopyBtn/AmeliproCopyBtn.stories.ts +112 -26
- package/src/components/Amelipro/AmeliproDentalChart/AmeliproDentalChart.mdx +15 -0
- package/src/components/Amelipro/AmeliproDentalChart/AmeliproDentalChart.stories.ts +1078 -0
- package/src/components/Amelipro/AmeliproDentalChart/AmeliproDentalChart.vue +163 -0
- package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/AmeliproTooth.vue +183 -0
- package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/tests/AmeliproTooth.spec.ts +20 -0
- package/src/components/Amelipro/AmeliproDentalChart/AmeliproTooth/tests/__snapshots__/AmeliproTooth.spec.ts.snap +39 -0
- package/src/components/Amelipro/AmeliproDentalChart/tests/AmeliproDentalChart.spec.ts +468 -0
- package/src/components/Amelipro/AmeliproDentalChart/tests/__snapshots__/AmeliproDentalChart.spec.ts.snap +2589 -0
- package/src/components/Amelipro/AmeliproDentalChart/types.d.ts +13 -0
- package/src/components/Amelipro/AmeliproDialog/AmeliproDialog.stories.ts +333 -0
- package/src/components/Amelipro/AmeliproDialog/AmeliproDialog.vue +7 -2
- package/src/components/Amelipro/AmeliproDialog/tests/__snapshots__/AmeliproDialog.spec.ts.snap +1 -0
- package/src/components/Amelipro/AmeliproErrorTemplate/AmeliproErrorTemplate.vue +1 -1
- package/src/components/Amelipro/AmeliproErrorTemplate/__tests__/__snapshots__/AmeliproErrorTemplate.spec.ts.snap +1 -2
- package/src/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.mdx +15 -0
- package/src/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.stories.ts +287 -0
- package/src/components/Amelipro/AmeliproFirstLogin/AmeliproFirstLogin.vue +331 -0
- package/src/components/Amelipro/AmeliproFirstLogin/__tests__/AmeliproFirstLogin.spec.ts +29 -0
- package/src/components/Amelipro/AmeliproFirstLogin/__tests__/__snapshots__/AmeliproFirstLogin.spec.ts.snap +1210 -0
- package/src/components/Amelipro/AmeliproFirstLogin/locales.ts +48 -0
- package/src/components/Amelipro/AmeliproIcon/AmeliproIcon.stories.ts +61 -1
- package/src/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.stories.ts +174 -0
- package/src/components/Amelipro/AmeliproIllustratedDataTile/AmeliproIllustratedDataTile.stories.ts +186 -0
- package/src/components/Amelipro/AmeliproMailTile/AmeliproMailTile.stories.ts +237 -0
- package/src/components/Amelipro/AmeliproMessage/AmeliproMessage.stories.ts +111 -0
- package/src/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.stories.ts +199 -0
- package/src/components/Amelipro/AmeliproNumberedCard/AmeliproNumberedCard.stories.ts +150 -0
- package/src/components/Amelipro/AmeliproOnboarding/AmeliproOnboarding.stories.ts +281 -8
- package/src/components/Amelipro/AmeliproPagination/AmeliproPagination.stories.ts +123 -43
- package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.mdx +18 -0
- package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.stories.ts +250 -0
- package/src/components/Amelipro/AmeliproPatientLogged/AmeliproPatientLogged.vue +520 -0
- package/src/components/Amelipro/AmeliproPatientLogged/__tests__/AmeliproPatientLogged.spec.ts +79 -0
- package/src/components/Amelipro/AmeliproPatientLogged/__tests__/__snapshots__/AmeliproPatientLogged.spec.ts.snap +1140 -0
- package/src/components/Amelipro/AmeliproPatientLogged/types.d.ts +49 -0
- package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLogin.mdx +18 -0
- package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLogin.stories.ts +151 -0
- package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLogin.vue +231 -0
- package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/AmeliproPatientLoginForm.vue +252 -0
- package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/__tests__/AmeliproPatientLoginForm.spec.ts +46 -0
- package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/__tests__/__snapshots__/AmeliproPatientLoginForm.spec.ts.snap +33 -0
- package/src/components/Amelipro/AmeliproPatientLogin/AmeliproPatientLoginForm/types.d.ts +6 -0
- package/src/components/Amelipro/AmeliproPatientLogin/__tests__/AmeliproPatientLogin.spec.ts +49 -0
- package/src/components/Amelipro/AmeliproPatientLogin/__tests__/__snapshots__/AmeliproPatientLogin.spec.ts.snap +60 -0
- package/src/components/Amelipro/AmeliproPatientLogin/types.d.ts +6 -0
- package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.vue +464 -0
- package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/__tests__/AmeliproPostalAddressCityRow.spec.ts +41 -0
- package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/__tests__/__snapshots__/AmeliproPostalAddressCityRow.spec.ts.snap +548 -0
- package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/types.d.ts +12 -0
- package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.mdx +15 -0
- package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.stories.ts +133 -0
- package/src/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.vue +360 -0
- package/src/components/Amelipro/AmeliproPostalAddressField/tests/AmeliproPostalAddressField.spec.ts +27 -0
- package/src/components/Amelipro/AmeliproPostalAddressField/tests/__snapshots__/AmeliproPostalAddressField.spec.ts.snap +548 -0
- package/src/components/Amelipro/AmeliproPostalAddressField/types.d.ts +18 -0
- package/src/components/Amelipro/AmeliproRadioGroup/AmeliproRadioGroup.vue +4 -3
- package/src/components/Amelipro/AmeliproResultList/AmeliproResultList.vue +2 -2
- package/src/components/Amelipro/AmeliproResultList/__tests__/__snapshots__/AmeliproResultList.spec.ts.snap +0 -4
- package/src/components/Amelipro/AmeliproStateTile/AmeliproStateTile.stories.ts +210 -0
- package/src/components/Amelipro/AmeliproStatus/AmeliproStatus.stories.ts +326 -0
- package/src/components/Amelipro/AmeliproTable/AmeliproTable.stories.ts +232 -4
- package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +3 -2
- package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +0 -4
- package/src/components/Amelipro/AmeliproTabs/AmeliproTabs.vue +1 -1
- package/src/components/Amelipro/AmeliproTextField/AmeliproTextField.stories.ts +2 -2
- package/src/components/Amelipro/AmeliproTileBtn/AmeliproTileBtn.stories.ts +222 -6
- package/src/components/Amelipro/AmeliproTooltips/AmeliproTooltips.stories.ts +169 -0
- package/src/components/Amelipro/AmeliproTooltips/AmeliproTooltips.vue +6 -1
- package/src/components/Amelipro/AmeliproTooltips/tests/__snapshots__/AmeliproTooltips.spec.ts.snap +1 -5
- package/src/components/Amelipro/AmeliproTransmission/AmeliproTransmission.stories.ts +160 -0
- package/src/components/Amelipro/StructureMenu/StructureMenu.vue +1 -1
- package/src/components/Amelipro/StructureMenu/tests/__snapshots__/StructureMenu.spec.ts.snap +1 -2
- package/src/components/Customs/Selects/SySelect/SySelect.vue +43 -1
- package/src/components/Customs/SyCheckbox/SyCheckbox.vue +4 -0
- package/src/components/Customs/SyForm/Introduction.mdx +132 -0
- package/src/components/Customs/SyForm/SyForm.mdx +105 -0
- package/src/components/Customs/SyForm/SyForm.stories.ts +375 -0
- package/src/components/Customs/SyForm/SyForm.vue +80 -0
- package/src/components/Customs/SyTabs/SyTabs.stories.ts +31 -0
- package/src/components/Customs/SyTabs/SyTabs.vue +185 -27
- package/src/components/Customs/SyTabs/useTabTransition.ts +42 -0
- package/src/components/Customs/SyTextField/SyTextField.vue +12 -3
- package/src/components/Customs/SyTextField/types.d.ts +1 -1
- package/src/components/DataListItem/DataListItem.vue +12 -13
- package/src/components/DatePicker/CalendarMode/DatePicker.stories.ts +242 -41
- package/src/components/DatePicker/CalendarMode/DatePicker.vue +30 -12
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.stories.ts +246 -59
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +40 -10
- package/src/components/DatePicker/DatePickerOverview.mdx +5 -1
- package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.mdx +21 -21
- package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts +240 -133
- package/src/components/DatePicker/DateTextInput/DateRange.stories.ts +29 -1
- package/src/components/DatePicker/DateTextInput/DateTextInput.vue +32 -9
- package/src/components/DatePicker/DateTextInput/NoCalendar.stories.ts +166 -38
- package/src/components/DatePicker/composables/useDateValidation.ts +8 -5
- package/src/components/DatePicker/composables/useManualDateValidation.ts +23 -6
- package/src/components/DatePicker/datePickers.stories.ts +28 -0
- package/src/components/DatePicker/docExamples/DatePickerBidirectionalValidation.vue +47 -58
- package/src/components/DatePicker/docExamples/DatePickerValidationExamples.vue +2 -2
- package/src/components/DatePicker/tests/DatePicker.validation.spec.ts +4654 -0
- package/src/components/DatePicker/tests/archiTest.md +33 -0
- package/src/components/DatePicker/tests/setup.ts +243 -0
- package/src/components/DialogBox/DialogBox.stories.ts +1 -1
- package/src/components/DialogBox/DialogBox.vue +25 -8
- package/src/components/DialogBox/locales.ts +1 -0
- package/src/components/DialogBox/tests/DialogBox.spec.ts +187 -15
- package/src/components/DialogBox/useDraggable.ts +92 -4
- package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/HeaderMenuItem.vue +4 -0
- package/src/components/HeaderBar/HeaderBurgerMenu/HeaderMenuItem/tests/__snapshots__/HeaderMenuItem.spec.ts.snap +4 -1
- package/src/components/HeaderNavigationBar/HeaderNavigationBar.vue +18 -2
- package/src/components/HeaderNavigationBar/HorizontalNavbar/HorizontalNavbar.vue +14 -4
- package/src/components/HeaderNavigationBar/types.ts +1 -0
- package/src/components/HeaderToolbar/Accessibilite.stories.ts +8 -0
- package/src/components/HeaderToolbar/HeaderToolbar.mdx +0 -1
- package/src/components/HeaderToolbar/HeaderToolbar.stories.ts +65 -6
- package/src/components/HeaderToolbar/HeaderToolbar.vue +589 -162
- package/src/components/HeaderToolbar/locales.ts +3 -0
- package/src/components/HeaderToolbar/useMobileRightMenu.ts +121 -0
- package/src/components/NirField/Accessibilite.stories.ts +4 -0
- package/src/components/NirField/NirField.stories.ts +0 -11
- package/src/components/NirField/NirField.vue +164 -53
- package/src/components/NirField/locales.ts +6 -4
- package/src/components/NirField/tests/NirField.spec.ts +2 -2
- package/src/components/PasswordField/Accessibilite.stories.ts +96 -0
- package/src/components/PasswordField/PasswordField.stories.ts +8 -1
- package/src/components/PasswordField/PasswordField.vue +98 -19
- package/src/components/PasswordField/locales.ts +2 -0
- package/src/components/PasswordField/tests/PasswordField.spec.ts +1 -1
- package/src/components/PhoneField/PhoneField.vue +4 -0
- package/src/components/RangeField/Accessibilite.stories.ts +4 -0
- package/src/components/RangeField/RangeField.stories.ts +60 -0
- package/src/components/RangeField/RangeField.vue +37 -21
- package/src/components/RangeField/RangeSlider/RangeSlider.vue +30 -8
- package/src/components/RangeField/RangeSlider/Tooltip/Tooltip.vue +1 -0
- package/src/components/RangeField/RangeSlider/tests/__snapshots__/rangeSlider.spec.ts.snap +12 -4
- package/src/components/RangeField/RangeSlider/tests/useMouseSlide.spec.ts +9 -1
- package/src/components/RangeField/RangeSlider/useMouseSlide.ts +23 -8
- package/src/components/RangeField/config.ts +3 -1
- package/src/components/RangeField/tests/__snapshots__/RangeField.spec.ts.snap +132 -141
- package/src/components/RatingPicker/Accessibilite.stories.ts +4 -0
- package/src/components/RatingPicker/EmotionPicker/EmotionPicker.vue +119 -66
- package/src/components/RatingPicker/EmotionPicker/locales.ts +2 -0
- package/src/components/RatingPicker/EmotionPicker/tests/EmotionPicker.spec.ts +4 -4
- package/src/components/RatingPicker/EmotionPicker/tests/__snapshots__/EmotionPicker.spec.ts.snap +462 -678
- package/src/components/RatingPicker/NumberPicker/NumberPicker.vue +106 -42
- package/src/components/RatingPicker/NumberPicker/tests/NumberPicker.spec.ts +3 -3
- package/src/components/RatingPicker/NumberPicker/tests/__snapshots__/NumberPicker.spec.ts.snap +119 -515
- package/src/components/RatingPicker/Rating.ts +5 -1
- package/src/components/RatingPicker/RatingPicker.stories.ts +5 -6
- package/src/components/RatingPicker/RatingPicker.vue +7 -2
- package/src/components/RatingPicker/StarsPicker/StarsPicker.vue +78 -42
- package/src/components/RatingPicker/StarsPicker/tests/StarsPicker.spec.ts +7 -7
- package/src/components/RatingPicker/StarsPicker/tests/__snapshots__/StarsPicker.spec.ts.snap +163 -245
- package/src/components/RatingPicker/locales.ts +1 -0
- package/src/components/RatingPicker/tests/__snapshots__/RatingPicker.spec.ts.snap +120 -516
- package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +109 -84
- package/src/components/Tables/SyServerTable/SyServerTable.vue +51 -16
- package/src/components/Tables/SyTable/SyTable.vue +1 -6
- package/src/components/Tables/SyTable/tests/SyTable.spec.ts +6 -0
- package/src/components/Tables/common/SyTablePagination.vue +0 -6
- package/src/components/Tables/common/tableProps.ts +19 -1
- package/src/components/Tables/common/usePagination.ts +0 -6
- package/src/components/Tables/common/useTableCheckbox.ts +5 -5
- package/src/components/index.ts +8 -0
- package/src/composables/rules/useFieldValidation.ts +21 -3
- package/src/composables/validation/AvecVosComposants.mdx +145 -0
- package/src/composables/validation/FormValidation.mdx +151 -0
- package/src/composables/validation/FormValidation.stories.ts +402 -0
- package/src/composables/validation/useFormValidation.ts +91 -0
- package/src/composables/validation/useValidatable.ts +41 -0
- package/src/stories/Accessibilite/Avancement/Avancement.stories.ts +2 -2
- package/src/stories/Accessibilite/KitDePreAudit/Outils/Introduction.mdx +2 -2
- package/src/stories/Accessibilite/KitDePreAudit/Preaudit.mdx +2 -2
- package/src/stories/Demarrer/Accueil.stories.ts +6 -6
- package/src/stories/GuideDuDev/Installation.mdx +13 -0
- package/src/stories/GuideDuDev/LesBreackingChanges.mdx +1 -1
- package/src/stories/GuideDuDev/MigrationDepuisBridge.mdx +1 -1
- package/src/stories/GuideDuDev/MigrationDepuisVue2.mdx +1 -1
package/src/components/DatePicker/DatePickerValidationExample/DatePickerValidation.stories.ts
CHANGED
|
@@ -73,8 +73,9 @@ ValidationExamples.parameters = {
|
|
|
73
73
|
name: 'Script',
|
|
74
74
|
code: `
|
|
75
75
|
<script setup>
|
|
76
|
-
|
|
77
|
-
|
|
76
|
+
import { computed, ref, watch } from 'vue';vue'
|
|
77
|
+
import DatePicker from '@/components/DatePicker/CalendarMode/DatePicker.vue'
|
|
78
|
+
import { useDateFormat } from '@/composables/date/useDateFormat';vue'
|
|
78
79
|
|
|
79
80
|
// Exemple 1: Validation de base (required)
|
|
80
81
|
const date1 = ref('')
|
|
@@ -140,143 +141,249 @@ BidirectionalValidation.parameters = {
|
|
|
140
141
|
name: 'Template',
|
|
141
142
|
code: `
|
|
142
143
|
<template>
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
144
|
+
<div class="date-picker-bidirectional-validation">
|
|
145
|
+
<h1 class="text-h5 mb-6">
|
|
146
|
+
Validation bidirectionnelle entre deux DatePickers
|
|
147
|
+
</h1>
|
|
148
|
+
|
|
149
|
+
<div class="text-body-2 mb-4">
|
|
150
|
+
Ce composant démontre la validation bidirectionnelle entre deux DatePickers. Les règles de validation sont appliquées dans les deux sens :
|
|
151
|
+
<ul class="ml-4">
|
|
152
|
+
<li>La date de fin doit être postérieure ou égale à la date de début</li>
|
|
153
|
+
<li>La date de début doit être antérieure ou égale à la date de fin</li>
|
|
154
|
+
<li>Lorsque la date de début change, la validation de la date de fin est mise à jour</li>
|
|
155
|
+
<li>Lorsque la date de fin change, la validation de la date de début est mise à jour</li>
|
|
156
|
+
</ul>
|
|
157
|
+
</div>
|
|
158
|
+
|
|
159
|
+
<div class="date-range-container mb-6">
|
|
160
|
+
<div class="date-picker-wrapper">
|
|
161
|
+
<h3 class="text-subtitle-1 mb-2">
|
|
162
|
+
Date de début
|
|
163
|
+
</h3>
|
|
164
|
+
<DatePicker
|
|
165
|
+
ref="startDatePickerRef"
|
|
166
|
+
v-model="startDate"
|
|
167
|
+
placeholder="Date de début"
|
|
168
|
+
:custom-rules="startDateRules"
|
|
169
|
+
required
|
|
170
|
+
@update:model-value="validateEndDate"
|
|
171
|
+
/>
|
|
172
|
+
</div>
|
|
173
|
+
<div class="date-picker-wrapper">
|
|
174
|
+
<h3 class="text-subtitle-1 mb-2">
|
|
175
|
+
Date de fin
|
|
176
|
+
</h3>
|
|
177
|
+
<DatePicker
|
|
178
|
+
ref="endDatePickerRef"
|
|
179
|
+
v-model="endDate"
|
|
180
|
+
placeholder="Date de fin"
|
|
181
|
+
:custom-rules="endDateRules"
|
|
182
|
+
required
|
|
183
|
+
@update:model-value="validateStartDate"
|
|
184
|
+
/>
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
<div class="actions mb-4">
|
|
189
|
+
<v-btn
|
|
190
|
+
size="small"
|
|
191
|
+
color="primary"
|
|
192
|
+
class="mr-2"
|
|
193
|
+
@click="resetDates"
|
|
194
|
+
>
|
|
195
|
+
Réinitialiser
|
|
196
|
+
</v-btn>
|
|
197
|
+
|
|
198
|
+
<v-btn
|
|
199
|
+
size="small"
|
|
200
|
+
color="success"
|
|
201
|
+
class="mr-2"
|
|
202
|
+
@click="setTestDates"
|
|
203
|
+
>
|
|
204
|
+
Dates valides
|
|
205
|
+
</v-btn>
|
|
206
|
+
|
|
207
|
+
<v-btn
|
|
208
|
+
size="small"
|
|
209
|
+
color="error"
|
|
210
|
+
@click="setInvalidDates"
|
|
211
|
+
>
|
|
212
|
+
Dates invalides
|
|
213
|
+
</v-btn>
|
|
214
|
+
</div>
|
|
215
|
+
|
|
216
|
+
<div class="current-values mt-4">
|
|
217
|
+
<p><strong>Date de début :</strong> {{ startDate || 'Non sélectionnée' }}</p>
|
|
218
|
+
<p><strong>Date de fin :</strong> {{ endDate || 'Non sélectionnée' }}</p>
|
|
219
|
+
</div>
|
|
220
|
+
|
|
221
|
+
<div class="mt-6 pa-4 bg-grey-lighten-4 rounded">
|
|
222
|
+
<h3 class="text-subtitle-1 mb-2">
|
|
223
|
+
Comment fonctionne la validation bidirectionnelle
|
|
224
|
+
</h3>
|
|
225
|
+
<p class="text-body-2">
|
|
226
|
+
La validation bidirectionnelle entre les DatePickers est implémentée grâce à des règles de validation personnalisées
|
|
227
|
+
qui vérifient la relation entre les deux dates. Chaque DatePicker a sa propre règle qui vérifie sa valeur par rapport à l'autre.
|
|
228
|
+
</p>
|
|
229
|
+
<p class="text-body-2 mt-2">
|
|
230
|
+
Lorsqu'une date change, un watcher déclenche la validation de l'autre DatePicker. Cela garantit que les messages d'erreur
|
|
231
|
+
sont toujours à jour, même lorsque les dates sont modifiées dans n'importe quel ordre.
|
|
232
|
+
</p>
|
|
233
|
+
<p class="text-body-2 mt-2">
|
|
234
|
+
Les messages d'erreur apparaissent directement dans les composants DatePicker, ce qui améliore l'expérience utilisateur
|
|
235
|
+
en fournissant un retour immédiat sur la validité des dates sélectionnées.
|
|
236
|
+
</p>
|
|
237
|
+
<p class="text-body-2 mt-2">
|
|
238
|
+
Vous trouverez le code source dans la story Bidirectional Validation.
|
|
239
|
+
</p>
|
|
240
|
+
</div>
|
|
241
|
+
</div>
|
|
242
|
+
</template>
|
|
221
243
|
`,
|
|
222
244
|
},
|
|
223
245
|
{
|
|
224
246
|
name: 'Script',
|
|
225
247
|
code: `
|
|
226
248
|
<script lang="ts" setup>
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
249
|
+
// useDateFormat n'est plus nécessaire avec les règles prédéfinies
|
|
250
|
+
|
|
251
|
+
// État des dates
|
|
252
|
+
const startDate = ref<string | null>(null)
|
|
253
|
+
const endDate = ref<string | null>(null)
|
|
254
|
+
|
|
255
|
+
// Références aux composants CalendarMode pour accéder à leurs méthodes
|
|
256
|
+
const startDatePickerRef = ref<InstanceType<typeof DatePicker> | null>(null)
|
|
257
|
+
const endDatePickerRef = ref<InstanceType<typeof DatePicker> | null>(null)
|
|
258
|
+
|
|
259
|
+
// Les règles de validation sont définies directement dans les computed startDateRules et endDateRules
|
|
260
|
+
|
|
261
|
+
// Règles de validation pour la date de début
|
|
262
|
+
const startDateRules = computed(() => {
|
|
263
|
+
const rules = [
|
|
264
|
+
{
|
|
265
|
+
type: 'required',
|
|
266
|
+
options: {
|
|
267
|
+
message: 'La date de début est requise.',
|
|
268
|
+
},
|
|
269
|
+
},
|
|
270
|
+
]
|
|
271
|
+
|
|
272
|
+
// Ajouter la règle notAfterDate seulement si endDate.value existe
|
|
273
|
+
if (endDate.value) {
|
|
274
|
+
rules.push({
|
|
275
|
+
type: 'notAfterDate',
|
|
276
|
+
|
|
277
|
+
options: {
|
|
278
|
+
message: 'La date de début ne peut pas être postérieure à la date de fin',
|
|
279
|
+
date: endDate.value, // Déjà une chaîne au format DD/MM/YYYY
|
|
280
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- mock Axios headers
|
|
281
|
+
} as any,
|
|
282
|
+
})
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
return rules
|
|
286
|
+
})
|
|
287
|
+
|
|
288
|
+
// Règles de validation pour la date de fin
|
|
289
|
+
const endDateRules = computed(() => {
|
|
290
|
+
const rules = [
|
|
291
|
+
{
|
|
292
|
+
type: 'required',
|
|
293
|
+
options: {
|
|
294
|
+
message: 'La date de fin est requise.',
|
|
295
|
+
},
|
|
296
|
+
},
|
|
297
|
+
]
|
|
298
|
+
// Ajouter la règle notBeforeDate seulement si startDate.value existe
|
|
299
|
+
if (startDate.value) {
|
|
300
|
+
rules.push({
|
|
301
|
+
type: 'notBeforeDate',
|
|
302
|
+
|
|
303
|
+
options: {
|
|
304
|
+
message: 'La date de fin ne peut pas être antérieure à la date de début',
|
|
305
|
+
date: startDate.value, // Déjà une chaîne au format DD/MM/YYYY
|
|
306
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- mock Axios headers
|
|
307
|
+
} as any,
|
|
308
|
+
})
|
|
309
|
+
}
|
|
310
|
+
return rules
|
|
311
|
+
})
|
|
312
|
+
|
|
313
|
+
// Fonction pour forcer la validation de la date de fin quand la date de début change
|
|
314
|
+
const validateEndDate = () => {
|
|
315
|
+
if (endDatePickerRef.value && endDate.value) {
|
|
316
|
+
// On utilise validateOnSubmit pour forcer la validation complète
|
|
317
|
+
endDatePickerRef.value.validateOnSubmit()
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
// Fonction pour forcer la validation de la date de début quand la date de fin change
|
|
322
|
+
const validateStartDate = () => {
|
|
323
|
+
if (startDatePickerRef.value && startDate.value) {
|
|
324
|
+
// On utilise validateOnSubmit pour forcer la validation complète
|
|
325
|
+
startDatePickerRef.value.validateOnSubmit()
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// Watcher pour la date de début qui force la revalidation de la date de fin
|
|
330
|
+
watch(startDate, () => {
|
|
331
|
+
// Laisser le temps au système de mettre à jour les valeurs
|
|
332
|
+
setTimeout(() => {
|
|
333
|
+
validateEndDate()
|
|
334
|
+
}, 0)
|
|
335
|
+
})
|
|
336
|
+
|
|
337
|
+
// Watcher pour la date de fin qui force la revalidation de la date de début
|
|
338
|
+
watch(endDate, () => {
|
|
339
|
+
// Laisser le temps au système de mettre à jour les valeurs
|
|
340
|
+
setTimeout(() => {
|
|
341
|
+
validateStartDate()
|
|
342
|
+
}, 0)
|
|
343
|
+
})
|
|
344
|
+
|
|
345
|
+
// Fonction pour définir des dates de test
|
|
346
|
+
const setTestDates = () => {
|
|
347
|
+
// Définir une date de début (aujourd'hui)
|
|
348
|
+
const today = new Date()
|
|
349
|
+
const day = String(today.getDate()).padStart(2, '0')
|
|
350
|
+
const month = String(today.getMonth() + 1).padStart(2, '0')
|
|
351
|
+
const year = today.getFullYear()
|
|
352
|
+
startDate.value = day + '/' + month + '/' + year
|
|
353
|
+
|
|
354
|
+
// Définir une date de fin (demain) - pour démontrer une validation valide
|
|
355
|
+
const tomorrow = new Date(today)
|
|
356
|
+
tomorrow.setDate(today.getDate() + 1)
|
|
357
|
+
const tomorrowDay = String(tomorrow.getDate()).padStart(2, '0')
|
|
358
|
+
const tomorrowMonth = String(tomorrow.getMonth() + 1).padStart(2, '0')
|
|
359
|
+
const tomorrowYear = tomorrow.getFullYear()
|
|
360
|
+
endDate.value = tomorrowDay + '/' + tomorrowMonth + '/' + tomorrowYear
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
// Fonction pour définir des dates invalides (date de fin avant date de début)
|
|
364
|
+
const setInvalidDates = () => {
|
|
365
|
+
// Définir une date de début (aujourd'hui)
|
|
366
|
+
const today = new Date()
|
|
367
|
+
const day = String(today.getDate()).padStart(2, '0')
|
|
368
|
+
const month = String(today.getMonth() + 1).padStart(2, '0')
|
|
369
|
+
const year = today.getFullYear()
|
|
370
|
+
startDate.value = day + '/' + month + '/' + year
|
|
371
|
+
|
|
372
|
+
// Définir une date de fin (hier) - pour démontrer une validation invalide
|
|
373
|
+
const yesterday = new Date(today)
|
|
374
|
+
yesterday.setDate(today.getDate() - 1)
|
|
375
|
+
const yesterdayDay = String(yesterday.getDate()).padStart(2, '0')
|
|
376
|
+
const yesterdayMonth = String(yesterday.getMonth() + 1).padStart(2, '0')
|
|
377
|
+
const yesterdayYear = yesterday.getFullYear()
|
|
378
|
+
endDate.value = yesterdayDay + '/' + yesterdayMonth + '/' + yesterdayYear
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
// Fonction pour réinitialiser les dates
|
|
382
|
+
const resetDates = () => {
|
|
383
|
+
startDate.value = null
|
|
384
|
+
endDate.value = null
|
|
385
|
+
}
|
|
386
|
+
</script>
|
|
280
387
|
`,
|
|
281
388
|
},
|
|
282
389
|
{
|
|
@@ -10,6 +10,7 @@ interface DatePickerProps {
|
|
|
10
10
|
'placeholder'?: string
|
|
11
11
|
'format'?: string
|
|
12
12
|
'dateFormatReturn'?: string
|
|
13
|
+
'density'?: 'default' | 'comfortable' | 'compact'
|
|
13
14
|
'isBirthDate'?: boolean
|
|
14
15
|
'birthDate'?: boolean
|
|
15
16
|
'showWeekNumber'?: boolean
|
|
@@ -29,7 +30,6 @@ interface DatePickerProps {
|
|
|
29
30
|
'disableErrorHandling'?: boolean
|
|
30
31
|
'showSuccessMessages'?: boolean
|
|
31
32
|
'bgColor'?: string
|
|
32
|
-
'density'?: 'default' | 'comfortable' | 'compact'
|
|
33
33
|
'hideDetails'?: boolean | 'auto'
|
|
34
34
|
'displayWeekendDays'?: boolean
|
|
35
35
|
'displayTodayButton'?: boolean
|
|
@@ -68,80 +68,108 @@ const meta = {
|
|
|
68
68
|
placeholder: {
|
|
69
69
|
control: 'text',
|
|
70
70
|
description: 'Texte indicatif',
|
|
71
|
+
defaultValue: 'JJ/MM/AAAA - JJ/MM/AAAA',
|
|
71
72
|
},
|
|
72
73
|
format: {
|
|
73
74
|
control: 'select',
|
|
74
75
|
options: ['DD/MM/YYYY', 'MM/DD/YYYY', 'YYYY-MM-DD'],
|
|
75
76
|
description: 'Format d\'affichage de la date',
|
|
77
|
+
defaultValue: 'DD/MM/YYYY',
|
|
76
78
|
},
|
|
77
79
|
dateFormatReturn: {
|
|
78
80
|
control: 'select',
|
|
79
81
|
options: ['', 'DD/MM/YYYY', 'MM/DD/YYYY', 'YYYY-MM-DD'],
|
|
80
82
|
description: 'Format de la date pour la valeur de retour',
|
|
83
|
+
defaultValue: '',
|
|
81
84
|
},
|
|
82
85
|
label: {
|
|
83
86
|
control: 'text',
|
|
84
87
|
description: 'Libellé du champ',
|
|
88
|
+
defaultValue: 'Période',
|
|
85
89
|
},
|
|
86
90
|
required: {
|
|
87
91
|
control: 'boolean',
|
|
88
92
|
description: 'Champ obligatoire',
|
|
93
|
+
defaultValue: false,
|
|
89
94
|
},
|
|
90
95
|
disabled: {
|
|
91
96
|
control: 'boolean',
|
|
92
97
|
description: 'Désactive le champ',
|
|
98
|
+
defaultValue: false,
|
|
93
99
|
},
|
|
94
100
|
readonly: {
|
|
95
101
|
control: 'boolean',
|
|
96
102
|
description: 'Le champ est en lecture seule',
|
|
103
|
+
defaultValue: false,
|
|
97
104
|
},
|
|
98
105
|
isOutlined: {
|
|
99
106
|
control: 'boolean',
|
|
100
107
|
description: 'Affiche le champ en contour',
|
|
108
|
+
defaultValue: true,
|
|
101
109
|
},
|
|
102
110
|
displayIcon: {
|
|
103
111
|
control: 'boolean',
|
|
104
112
|
description: 'Affiche l\'icône calendrier',
|
|
113
|
+
defaultValue: true,
|
|
105
114
|
},
|
|
106
115
|
displayAppendIcon: {
|
|
107
116
|
control: 'boolean',
|
|
108
117
|
description: 'Icône à la fin du champ',
|
|
118
|
+
defaultValue: false,
|
|
109
119
|
},
|
|
110
120
|
noIcon: {
|
|
111
121
|
control: 'boolean',
|
|
112
122
|
description: 'Masque toutes les icônes',
|
|
123
|
+
defaultValue: false,
|
|
113
124
|
},
|
|
114
125
|
customRules: {
|
|
115
126
|
control: 'object',
|
|
116
127
|
description: 'Règles de validation',
|
|
128
|
+
defaultValue: [],
|
|
117
129
|
},
|
|
118
130
|
customWarningRules: {
|
|
119
131
|
control: 'object',
|
|
120
132
|
description: 'Règles d\'avertissement',
|
|
133
|
+
defaultValue: [],
|
|
121
134
|
},
|
|
122
135
|
displayPrependIcon: {
|
|
123
136
|
control: 'boolean',
|
|
124
137
|
description: 'Icône au début du champ',
|
|
138
|
+
defaultValue: true,
|
|
125
139
|
},
|
|
126
140
|
disableErrorHandling: {
|
|
127
141
|
control: 'boolean',
|
|
128
142
|
description: 'Désactive la gestion des erreurs par le composant',
|
|
143
|
+
defaultValue: false,
|
|
129
144
|
},
|
|
130
145
|
showSuccessMessages: {
|
|
131
146
|
control: 'boolean',
|
|
132
147
|
description: 'Affiche les messages de succès',
|
|
148
|
+
defaultValue: true,
|
|
133
149
|
},
|
|
134
150
|
bgColor: {
|
|
135
151
|
control: 'color',
|
|
136
152
|
description: 'Couleur de fond',
|
|
153
|
+
defaultValue: 'white',
|
|
137
154
|
},
|
|
138
155
|
displayRange: {
|
|
139
156
|
control: 'boolean',
|
|
140
157
|
description: 'Sélection de plage de dates',
|
|
158
|
+
defaultValue: true,
|
|
141
159
|
},
|
|
142
160
|
noCalendar: {
|
|
143
161
|
control: 'boolean',
|
|
144
162
|
description: 'Masque le calendrier',
|
|
163
|
+
defaultValue: false,
|
|
164
|
+
},
|
|
165
|
+
density: {
|
|
166
|
+
control: 'select',
|
|
167
|
+
options: ['default', 'comfortable', 'compact'],
|
|
168
|
+
description: 'Densité du champ, affecte l\'espacement interne et la hauteur (standard Vuetify)',
|
|
169
|
+
defaultValue: 'default',
|
|
170
|
+
},
|
|
171
|
+
title: {
|
|
172
|
+
control: 'text',
|
|
145
173
|
},
|
|
146
174
|
},
|
|
147
175
|
} as Meta<DatePickerProps>
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
import dayjs from 'dayjs'
|
|
14
14
|
import customParseFormat from 'dayjs/plugin/customParseFormat'
|
|
15
15
|
import { useValidation, type ValidationRule, type ValidationResult } from '@/composables/validation/useValidation'
|
|
16
|
+
import { useValidatable } from '@/composables/validation/useValidatable'
|
|
16
17
|
import { useDateFormat } from '@/composables/date/useDateFormatDayjs'
|
|
17
18
|
import { DATE_PICKER_MESSAGES } from '../constants/messages'
|
|
18
19
|
import type { DateValue } from '@/composables/date/useDateInitializationDayjs'
|
|
@@ -34,6 +35,7 @@
|
|
|
34
35
|
required?: boolean
|
|
35
36
|
disabled?: boolean
|
|
36
37
|
readonly?: boolean
|
|
38
|
+
title?: string | false
|
|
37
39
|
isOutlined?: boolean
|
|
38
40
|
displayIcon?: boolean
|
|
39
41
|
displayAppendIcon?: boolean
|
|
@@ -47,6 +49,8 @@
|
|
|
47
49
|
displayRange?: boolean
|
|
48
50
|
autoClamp?: boolean
|
|
49
51
|
isValidateOnBlur?: boolean
|
|
52
|
+
density?: 'default' | 'comfortable' | 'compact'
|
|
53
|
+
externalErrorMessages?: string[]
|
|
50
54
|
}>(), {
|
|
51
55
|
modelValue: null,
|
|
52
56
|
placeholder: DATE_PICKER_MESSAGES.PLACEHOLDER_DEFAULT,
|
|
@@ -56,6 +60,7 @@
|
|
|
56
60
|
required: false,
|
|
57
61
|
disabled: false,
|
|
58
62
|
readonly: false,
|
|
63
|
+
title: false,
|
|
59
64
|
isOutlined: true,
|
|
60
65
|
displayIcon: true,
|
|
61
66
|
displayAppendIcon: false,
|
|
@@ -69,6 +74,8 @@
|
|
|
69
74
|
displayRange: false,
|
|
70
75
|
autoClamp: true,
|
|
71
76
|
isValidateOnBlur: true,
|
|
77
|
+
density: 'default',
|
|
78
|
+
externalErrorMessages: () => [],
|
|
72
79
|
})
|
|
73
80
|
|
|
74
81
|
const emit = defineEmits<{
|
|
@@ -117,7 +124,9 @@
|
|
|
117
124
|
}
|
|
118
125
|
|
|
119
126
|
const { errors, warnings, successes, hasError, clearValidation, validateField } = validationApi
|
|
120
|
-
|
|
127
|
+
|
|
128
|
+
// Agrégation des erreurs internes et externes
|
|
129
|
+
const errorMessages = computed(() => [...errors.value, ...props.externalErrorMessages])
|
|
121
130
|
const warningMessages = warnings
|
|
122
131
|
const successMessages = successes
|
|
123
132
|
|
|
@@ -539,6 +548,13 @@
|
|
|
539
548
|
errors.value.push(DATE_PICKER_MESSAGES.ERROR_REQUIRED)
|
|
540
549
|
return false
|
|
541
550
|
}
|
|
551
|
+
// Permettre aux custom rules de s'exécuter même sur des champs vides
|
|
552
|
+
// Mais seulement si l'utilisateur a interagi avec le champ
|
|
553
|
+
if (props.customRules && props.customRules.length > 0 && hasInteracted.value) {
|
|
554
|
+
// Exécuter les custom rules sur la valeur vide
|
|
555
|
+
safeValidateField(null, computed(() => props.customRules).value, computed(() => props.customWarningRules).value)
|
|
556
|
+
return !hasError.value
|
|
557
|
+
}
|
|
542
558
|
return true
|
|
543
559
|
}
|
|
544
560
|
|
|
@@ -560,8 +576,8 @@
|
|
|
560
576
|
errors.value.push(DATE_PICKER_MESSAGES.ERROR_END_BEFORE_START)
|
|
561
577
|
return false
|
|
562
578
|
}
|
|
563
|
-
safeValidateField(startDate, props.customRules, props.customWarningRules)
|
|
564
|
-
if (errors.value.length === 0) safeValidateField(endDate, props.customRules, props.customWarningRules)
|
|
579
|
+
safeValidateField(startDate, computed(() => props.customRules).value, computed(() => props.customWarningRules).value)
|
|
580
|
+
if (errors.value.length === 0) safeValidateField(endDate, computed(() => props.customRules).value, computed(() => props.customWarningRules).value)
|
|
565
581
|
}
|
|
566
582
|
}
|
|
567
583
|
return !hasError.value
|
|
@@ -620,7 +636,7 @@
|
|
|
620
636
|
|
|
621
637
|
if (inputValue.value) {
|
|
622
638
|
const formatValidationResult = validateDateFormatForSingleOrRange(inputValue.value)
|
|
623
|
-
const customRulesValidationResult = safeValidateField(inputValue.value, props.customRules, props.customWarningRules)
|
|
639
|
+
const customRulesValidationResult = safeValidateField(inputValue.value, computed(() => props.customRules).value, computed(() => props.customWarningRules).value)
|
|
624
640
|
|
|
625
641
|
if (formatValidationResult.isValid && !customRulesValidationResult.hasError && !isRange.value) {
|
|
626
642
|
const parsedDate = dayjs(inputValue.value, displayFormat.value, true).toDate()
|
|
@@ -637,8 +653,11 @@
|
|
|
637
653
|
else {
|
|
638
654
|
runRules(inputValue.value)
|
|
639
655
|
if (!props.disableErrorHandling && formatValidationResult.message) errors.value.push(formatValidationResult.message)
|
|
640
|
-
//
|
|
641
|
-
|
|
656
|
+
// Only emit null for format errors, not for custom rule errors
|
|
657
|
+
if (!formatValidationResult.isValid) {
|
|
658
|
+
emitModel(null)
|
|
659
|
+
}
|
|
660
|
+
// For custom rule errors with valid format, keep the current value
|
|
642
661
|
}
|
|
643
662
|
}
|
|
644
663
|
|
|
@@ -921,6 +940,9 @@
|
|
|
921
940
|
return !hasError.value
|
|
922
941
|
}
|
|
923
942
|
|
|
943
|
+
// Intégration avec le système de validation du formulaire
|
|
944
|
+
useValidatable(validateOnSubmit)
|
|
945
|
+
|
|
924
946
|
defineExpose({
|
|
925
947
|
validateOnSubmit,
|
|
926
948
|
focus() {
|
|
@@ -985,7 +1007,7 @@
|
|
|
985
1007
|
'warning-field': isOnWarning,
|
|
986
1008
|
'success-field': isOnSuccess,
|
|
987
1009
|
}"
|
|
988
|
-
:disabled="props.disabled
|
|
1010
|
+
:disabled="props.disabled"
|
|
989
1011
|
:error-messages="errorMessages"
|
|
990
1012
|
:label="props.label || ''"
|
|
991
1013
|
:placeholder="props.placeholder"
|
|
@@ -997,11 +1019,12 @@
|
|
|
997
1019
|
:success-messages="props.showSuccessMessages ? successMessages : []"
|
|
998
1020
|
:bg-color="props.bgColor"
|
|
999
1021
|
color="primary"
|
|
1000
|
-
is-clearable
|
|
1022
|
+
:is-clearable="!props.readonly"
|
|
1001
1023
|
:display-persistent-placeholder="true"
|
|
1002
1024
|
:aria-label="ariaLabel || props.placeholder"
|
|
1003
1025
|
:is-validate-on-blur="props.isValidateOnBlur"
|
|
1004
|
-
|
|
1026
|
+
:density="props.density"
|
|
1027
|
+
:title="props.title || undefined"
|
|
1005
1028
|
@focus="onFocus"
|
|
1006
1029
|
@blur="onBlur"
|
|
1007
1030
|
@keydown="handleKeydown"
|