@cnamts/synapse 1.0.11 → 1.0.13
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-QEfKOz0P.js → DateFilter-_EFzsvvM.js} +1 -1
- package/dist/{NumberFilter-C0h7gVzp.js → NumberFilter-CUxEbKJh.js} +1 -1
- package/dist/{PeriodFilter-8dVrKjju.js → PeriodFilter-D5ueqtKy.js} +1 -1
- package/dist/{SelectFilter-BI3QGbqb.js → SelectFilter-BciBNydy.js} +1 -1
- package/dist/{TextFilter-UOp1hcPp.js → TextFilter-DMN_WAQB.js} +1 -1
- package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordion.d.ts +7 -3
- package/dist/components/Amelipro/AmeliproAccordion/AmeliproAccordionTemplate/AmeliproAccordionTemplate.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.d.ts +2 -0
- package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.d.ts +7 -3
- package/dist/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResultTemplate/AmeliproAccordionResultTemplate.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproAutoCompleteField/AmeliproAutoCompleteField.d.ts +50 -68
- package/dist/components/Amelipro/AmeliproCard/AmeliproCard.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproIcon/AmeliproIcon.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproIconBtn/AmeliproIconBtn.d.ts +5 -5
- package/dist/components/Amelipro/AmeliproMultipleFoldingCard/AmeliproMultipleFoldingCard.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproNumberedCard/AmeliproNumberedCard.d.ts +1 -1
- package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressCityRow/AmeliproPostalAddressCityRow.d.ts +24 -32
- package/dist/components/Amelipro/AmeliproPostalAddressField/AmeliproPostalAddressField.d.ts +36 -48
- package/dist/components/Amelipro/AmeliproSelect/AmeliproSelect.d.ts +50 -68
- package/dist/components/Amelipro/AmeliproTable/AmeliproTable.d.ts +4 -0
- package/dist/components/Amelipro/AmeliproTable/types.d.ts +11 -0
- package/dist/components/Amelipro/AmeliproTabs/AmeliproTabs.d.ts +50 -68
- package/dist/components/Amelipro/AmeliproTextArea/AmeliproTextArea.d.ts +0 -4
- package/dist/components/Amelipro/AmeliproTextField/AmeliproTextField.d.ts +12 -16
- package/dist/components/Captcha/Captcha.d.ts +68 -0
- package/dist/components/Captcha/CaptchaAlert.d.ts +13 -0
- package/dist/components/Captcha/CaptchaBase.d.ts +55 -0
- package/dist/components/Captcha/CaptchaBtn.d.ts +12 -0
- package/dist/components/Captcha/CaptchaForm.d.ts +16 -0
- package/dist/components/Captcha/CaptchaImg.d.ts +12 -0
- package/dist/components/Captcha/CaptchaInformation.d.ts +20 -0
- package/dist/components/Captcha/captchaApi.d.ts +41 -0
- package/dist/components/Captcha/icons/volumeUp.d.ts +2 -0
- package/dist/components/Captcha/locales.d.ts +35 -0
- package/dist/components/Captcha/types.d.ts +2 -0
- package/dist/components/ChipList/ChipList.d.ts +2 -2
- package/dist/components/CookiesSelection/CookiesInformation/CookiesInformation.d.ts +14 -14
- package/dist/components/Customs/Selects/SySelect/SySelect.d.ts +5 -5
- package/dist/components/Customs/SyForm/SyForm.d.ts +6 -3
- package/dist/components/Customs/SyTextField/SyTextField.d.ts +12 -16
- package/dist/components/DatePicker/CalendarMode/DatePicker.d.ts +96 -68
- package/dist/components/DatePicker/ComplexDatePicker/ComplexDatePicker.d.ts +63 -38
- package/dist/components/DatePicker/DateTextInput/DateTextInput.d.ts +23 -27
- package/dist/components/DatePicker/composables/useDatePickerViewMode.d.ts +2 -1
- package/dist/components/DatePicker/tests/setup.d.ts +816 -520
- package/dist/components/HeaderToolbar/HeaderToolbar.d.ts +10 -10
- package/dist/components/NirField/NirField.d.ts +31 -34
- package/dist/components/NirField/locales.d.ts +1 -3
- package/dist/components/PasswordField/PasswordField.d.ts +2 -0
- package/dist/components/PeriodField/PeriodField.d.ts +192 -128
- package/dist/components/PhoneField/PhoneField.d.ts +13 -17
- package/dist/components/SearchListField/SearchListField.d.ts +5 -5
- package/dist/components/SyTextArea/SyTextArea.d.ts +0 -4
- package/dist/components/Tables/SyServerTable/SyServerTable.d.ts +5 -8
- package/dist/components/Tables/SyTable/SyTable.d.ts +5 -8
- package/dist/components/Tables/common/SyTablePagination.d.ts +5 -5
- package/dist/components/Tables/common/types.d.ts +4 -0
- package/dist/components/Tables/common/usePagination.d.ts +3 -4
- package/dist/components/Tables/common/useTableCheckbox.d.ts +10 -6
- package/dist/components/index.d.ts +1 -0
- package/dist/composables/validation/useFormValidation.d.ts +10 -0
- package/dist/composables/validation/useValidatable.d.ts +10 -2
- package/dist/design-system-v3.js +126 -125
- package/dist/design-system-v3.umd.cjs +265 -265
- package/dist/main-DISHlqcd.js +34217 -0
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/src/assets/overrides/_forms.scss +2 -0
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.stories.ts +7 -4
- package/src/components/Amelipro/AmeliproAccordion/AmeliproAccordion.vue +2 -0
- package/src/components/Amelipro/AmeliproAccordionFrieze/AmeliproAccordionFrieze.vue +1 -0
- package/src/components/Amelipro/AmeliproAccordionFrieze/__tests__/__snapshots__/AmeliproAccordionFrieze.spec.ts.snap +574 -112
- package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.stories.ts +5 -2
- package/src/components/Amelipro/AmeliproAccordionList/AmeliproAccordionList.vue +2 -1
- package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.stories.ts +6 -3
- package/src/components/Amelipro/AmeliproAccordionResult/AmeliproAccordionResult.vue +2 -0
- package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.stories.ts +5 -2
- package/src/components/Amelipro/AmeliproAccordionResultList/AmeliproAccordionResultList.vue +2 -1
- package/src/components/Amelipro/AmeliproCheckbox/__tests__/AmeliproCheckbox.spec.ts +175 -0
- package/src/components/Amelipro/AmeliproCheckbox/__tests__/__snapshots__/AmeliproCheckbox.spec.ts.snap +88 -0
- package/src/components/Amelipro/AmeliproCheckboxGroup/__tests__/AmeliproCheckboxGroup.spec.ts +423 -0
- package/src/components/Amelipro/AmeliproCheckboxGroup/{tests → __tests__}/__snapshots__/AmeliproCheckboxGroup.spec.ts.snap +112 -78
- package/src/components/Amelipro/AmeliproChips/__tests__/AmeliproChips.spec.ts +92 -0
- package/src/components/Amelipro/AmeliproChips/__tests__/__snapshots__/AmeliproChips.spec.ts.snap +81 -0
- package/src/components/Amelipro/AmeliproDialog/__tests__/AmeliproDialog.spec.ts +257 -0
- package/src/components/Amelipro/AmeliproDialog/__tests__/__snapshots__/AmeliproDialog.spec.ts.snap +61 -0
- package/src/components/Amelipro/AmeliproDisclosure/__tests__/AmeliproDisclosure.spec.ts +79 -0
- package/src/components/Amelipro/AmeliproDisclosure/__tests__/__snapshots__/AmeliproDisclosure.spec.ts.snap +89 -0
- package/src/components/Amelipro/AmeliproFooter/AmeliproFooter.vue +6 -7
- package/src/components/Amelipro/AmeliproFooter/__tests__/AmeliproFooter.spec.ts +787 -0
- package/src/components/Amelipro/AmeliproFooter/__tests__/__snapshots__/AmeliproFooter.spec.ts.snap +318 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/AmeliproHeaderBrandSection.spec.ts +167 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/__tests__/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +100 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/AmeliproHeaderBar.spec.ts +312 -0
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/__tests__/__snapshots__/AmeliproHeaderBar.spec.ts.snap +98 -0
- package/src/components/Amelipro/AmeliproHeader/__tests__/AmeliproHeader.spec.ts +361 -0
- package/src/components/Amelipro/AmeliproHeader/__tests__/__snapshots__/AmeliproHeader.spec.ts.snap +22 -0
- package/src/components/Amelipro/AmeliproMenu/__tests__/AmeliproMenu.spec.ts +168 -0
- package/src/components/Amelipro/AmeliproMenu/__tests__/__snapshots__/AmeliproMenu.spec.ts.snap +295 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/AmeliproDropdownMenuBtn.spec.ts +128 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/__tests__/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +67 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/AmeliproDropdownMenu.spec.ts +266 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/__tests__/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +134 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/AmeliproMessagingMenuBtn.spec.ts +72 -0
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/__tests__/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +71 -0
- package/src/components/Amelipro/AmeliproPageLayout/tests/__snapshots__/AmeliproPageLayout.spec.ts.snap +12 -0
- package/src/components/Amelipro/AmeliproTable/AmeliproTable.stories.ts +81 -9
- package/src/components/Amelipro/AmeliproTable/AmeliproTable.vue +139 -61
- package/src/components/Amelipro/AmeliproTable/__tests__/AmeliproTable.spec.ts +10 -0
- package/src/components/Amelipro/AmeliproTable/__tests__/__snapshots__/AmeliproTable.spec.ts.snap +361 -187
- package/src/components/Amelipro/AmeliproTable/types.d.ts +11 -0
- package/src/components/Captcha/Captcha.mdx +72 -0
- package/src/components/Captcha/Captcha.stories.ts +276 -0
- package/src/components/Captcha/Captcha.vue +325 -0
- package/src/components/Captcha/CaptchaAlert.vue +60 -0
- package/src/components/Captcha/CaptchaBase.vue +219 -0
- package/src/components/Captcha/CaptchaBtn.vue +35 -0
- package/src/components/Captcha/CaptchaForm.vue +58 -0
- package/src/components/Captcha/CaptchaImg.vue +41 -0
- package/src/components/Captcha/CaptchaInformation.vue +64 -0
- package/src/components/Captcha/captchaApi.ts +111 -0
- package/src/components/Captcha/icons/volumeUp.vue +11 -0
- package/src/components/Captcha/locales.ts +35 -0
- package/src/components/Captcha/readme.md +5 -0
- package/src/components/Captcha/tests/Captcha.spec.ts +298 -0
- package/src/components/Captcha/tests/__snapshots__/Captcha.spec.ts.snap +716 -0
- package/src/components/Captcha/types.ts +2 -0
- package/src/components/Customs/Selects/SySelect/SySelect.vue +2 -2
- package/src/components/Customs/SyCheckbox/SyCheckbox.vue +4 -0
- package/src/components/Customs/SyForm/SyForm.stories.ts +133 -23
- package/src/components/Customs/SyForm/SyForm.vue +17 -1
- package/src/components/Customs/SyTextField/SyTextField.vue +29 -7
- package/src/components/DatePicker/CalendarMode/DatePicker.vue +32 -9
- package/src/components/DatePicker/ComplexDatePicker/ComplexDatePicker.vue +154 -18
- package/src/components/DatePicker/ComplexDatePicker/tests/ComplexDatePicker.spec.ts +2 -2
- package/src/components/DatePicker/DateTextInput/DateTextInput.vue +35 -4
- package/src/components/DatePicker/composables/tests/useDatePickerViewMode.spec.ts +107 -72
- package/src/components/DatePicker/composables/tests/useMonthButtonCustomization.spec.ts +6 -6
- package/src/components/DatePicker/composables/useDatePickerViewMode.ts +57 -7
- package/src/components/DatePicker/composables/useMonthButtonCustomization.ts +14 -14
- package/src/components/DatePicker/tests/navigation.regression.spec.ts +74 -0
- package/src/components/DatePicker/tests/navigation.simple.spec.ts +137 -0
- package/src/components/NirField/NirField.stories.ts +85 -2
- package/src/components/NirField/NirField.vue +55 -18
- package/src/components/NirField/locales.ts +1 -3
- package/src/components/PasswordField/PasswordField.vue +39 -7
- package/src/components/PhoneField/PhoneField.vue +43 -10
- package/src/components/RangeField/tests/RangeField.spec.ts +0 -3
- package/src/components/Tables/SyServerTable/SyServerTable.mdx +15 -0
- package/src/components/Tables/SyServerTable/SyServerTable.stories.ts +309 -0
- package/src/components/Tables/SyServerTable/SyServerTable.vue +18 -3
- package/src/components/Tables/SyServerTable/tests/SyServerTable.spec.ts +67 -0
- package/src/components/Tables/SyTable/SyTable.mdx +15 -0
- package/src/components/Tables/SyTable/SyTable.stories.ts +228 -0
- package/src/components/Tables/SyTable/SyTable.vue +18 -3
- package/src/components/Tables/SyTable/tests/SyTable.spec.ts +63 -0
- package/src/components/Tables/common/SyTablePagination.vue +10 -8
- package/src/components/Tables/common/types.ts +4 -0
- package/src/components/Tables/common/usePagination.ts +11 -20
- package/src/components/Tables/common/useTableCheckbox.ts +23 -11
- package/src/components/index.ts +1 -0
- package/src/composables/validation/AvecVosComposants.mdx.old +1 -1
- package/src/composables/validation/FormValidation.stories.ts.old +5 -5
- package/src/composables/validation/useFormValidation.ts +46 -8
- package/src/composables/validation/useValidatable.ts +19 -8
- package/src/stories/Accessibilite/Introduction.mdx +1 -1
- package/src/stories/Demarrer/EnrichirLeDesignSystem.mdx +43 -0
- package/src/stories/Demarrer/EnrichirLeDesignSystem.stories.ts +239 -0
- package/src/stories/Demarrer/SignalerUneAnomalie.mdx +39 -0
- package/src/stories/Demarrer/SignalerUneAnomalie.stories.ts +261 -0
- package/dist/main-DyEOPqqn.js +0 -33329
- package/src/components/Amelipro/AmeliproCheckbox/tests/AmeliproCheckbox.spec.ts +0 -19
- package/src/components/Amelipro/AmeliproCheckbox/tests/__snapshots__/AmeliproCheckbox.spec.ts.snap +0 -40
- package/src/components/Amelipro/AmeliproCheckboxGroup/tests/AmeliproCheckboxGroup.spec.ts +0 -46
- package/src/components/Amelipro/AmeliproChips/tests/AmeliproChips.spec.ts +0 -16
- package/src/components/Amelipro/AmeliproChips/tests/__snapshots__/AmeliproChips.spec.ts.snap +0 -97
- package/src/components/Amelipro/AmeliproDialog/tests/AmeliproDialog.spec.ts +0 -24
- package/src/components/Amelipro/AmeliproDialog/tests/__snapshots__/AmeliproDialog.spec.ts.snap +0 -134
- package/src/components/Amelipro/AmeliproDisclosure/tests/AmeliproDisclosure.spec.ts +0 -19
- package/src/components/Amelipro/AmeliproDisclosure/tests/__snapshots__/AmeliproDisclosure.spec.ts.snap +0 -104
- package/src/components/Amelipro/AmeliproFooter/tests/AmeliproFooter.spec.ts +0 -15
- package/src/components/Amelipro/AmeliproFooter/tests/__snapshots__/AmeliproFooter.spec.ts.snap +0 -432
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/AmeliproHeaderBrandSection.spec.ts +0 -15
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/AmeliproHeaderBrandSection/tests/__snapshots__/AmeliproHeaderBrandSection.spec.ts.snap +0 -131
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/AmeliproHeaderBar.spec.ts +0 -15
- package/src/components/Amelipro/AmeliproHeader/AmeliproHeaderBar/tests/__snapshots__/AmeliproHeaderBar.spec.ts.snap +0 -172
- package/src/components/Amelipro/AmeliproHeader/tests/AmeliproHeader.spec.ts +0 -159
- package/src/components/Amelipro/AmeliproHeader/tests/__snapshots__/AmeliproHeader.spec.ts.snap +0 -841
- package/src/components/Amelipro/AmeliproMenu/tests/AmeliproMenu.spec.ts +0 -85
- package/src/components/Amelipro/AmeliproMenu/tests/__snapshots__/AmeliproMenu.spec.ts.snap +0 -537
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/AmeliproDropdownMenuBtn.spec.ts +0 -16
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/AmeliproDropdownMenuBtn/tests/__snapshots__/AmeliproDropdownMenuBtn.spec.ts.snap +0 -56
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/AmeliproDropdownMenu.spec.ts +0 -28
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproDropdownMenu/tests/__snapshots__/AmeliproDropdownMenu.spec.ts.snap +0 -300
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/AmeliproMessagingMenuBtn.spec.ts +0 -16
- package/src/components/Amelipro/AmeliproMessagingLayout/AmeliproMessagingMenuBtn/tests/__snapshots__/AmeliproMessagingMenuBtn.spec.ts.snap +0 -89
- package/src/components/BackBtn/tests/__snapshots__/BackBtn.spec.ts.snap +0 -45
- package/src/components/RangeField/tests/__snapshots__/RangeField.spec.ts.snap +0 -1270
- package/src/stories/Demarrer/CreerUneIssue.mdx +0 -67
- package/src/stories/Demarrer/components.stories.ts +0 -25
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
defineOptions({
|
|
4
4
|
inheritAttrs: false,
|
|
5
5
|
})
|
|
6
|
-
import { mdiInformation,
|
|
6
|
+
import { mdiInformation, mdiChevronDown, mdiCloseCircle } from '@mdi/js'
|
|
7
7
|
import { ref, watch, onMounted, computed, nextTick, type PropType } from 'vue'
|
|
8
8
|
import { useSySelectKeyboard } from './composables/useSySelectKeyboard'
|
|
9
9
|
import { vRgaaSvgFix } from '../../../../directives/rgaaSvgFix'
|
|
@@ -839,7 +839,7 @@
|
|
|
839
839
|
</button>
|
|
840
840
|
<SyIcon
|
|
841
841
|
class="arrow"
|
|
842
|
-
:icon="
|
|
842
|
+
:icon="mdiChevronDown"
|
|
843
843
|
:decorative="true"
|
|
844
844
|
/>
|
|
845
845
|
</template>
|
|
@@ -33,7 +33,7 @@ export const Basic: Story = {
|
|
|
33
33
|
setup() {
|
|
34
34
|
const name = ref('')
|
|
35
35
|
const email = ref('')
|
|
36
|
-
const form = ref<{ validate: () => Promise<boolean
|
|
36
|
+
const form = ref<{ validate: () => Promise<boolean>, reset: () => void, clearValidation: () => void } | null>(null)
|
|
37
37
|
|
|
38
38
|
// Règles de validation selon le design system
|
|
39
39
|
const emailRules = [
|
|
@@ -56,9 +56,11 @@ export const Basic: Story = {
|
|
|
56
56
|
template: `
|
|
57
57
|
<SyForm ref="form" v-bind="args" @submit="submitForm">
|
|
58
58
|
<div class="d-flex flex-column gap-4">
|
|
59
|
-
<SyTextField v-model="name" label="Nom" required />
|
|
60
|
-
<SyTextField v-model="email" label="Email" :custom-rules="emailRules" />
|
|
61
|
-
<
|
|
59
|
+
<SyTextField v-model="name" label="Nom" required class="mb-2" />
|
|
60
|
+
<SyTextField v-model="email" label="Email" :custom-rules="emailRules" class="mb-2" />
|
|
61
|
+
<div class="d-flex gap-3">
|
|
62
|
+
<v-btn type="submit" color="primary">Soumettre</v-btn>
|
|
63
|
+
</div>
|
|
62
64
|
</div>
|
|
63
65
|
</SyForm>
|
|
64
66
|
`,
|
|
@@ -74,9 +76,11 @@ export const Basic: Story = {
|
|
|
74
76
|
<template>
|
|
75
77
|
<SyForm ref="form" v-bind="args" @submit="submitForm">
|
|
76
78
|
<div class="d-flex flex-column gap-4">
|
|
77
|
-
<SyTextField v-model="name" label="Nom" required />
|
|
78
|
-
<SyTextField v-model="email" label="Email" :custom-rules="emailRules" />
|
|
79
|
-
<
|
|
79
|
+
<SyTextField v-model="name" label="Nom" required class="mb-2" />
|
|
80
|
+
<SyTextField v-model="email" label="Email" :custom-rules="emailRules" class="mb-2" />
|
|
81
|
+
<div class="d-flex gap-3">
|
|
82
|
+
<v-btn type="submit" color="primary">Soumettre</v-btn>
|
|
83
|
+
</div>
|
|
80
84
|
</div>
|
|
81
85
|
</SyForm>
|
|
82
86
|
</template>
|
|
@@ -118,7 +122,7 @@ export const CustomValidation: Story = {
|
|
|
118
122
|
const username = ref('')
|
|
119
123
|
const password = ref('')
|
|
120
124
|
const confirmPassword = ref('')
|
|
121
|
-
const form = ref<{ validate: () => Promise<boolean
|
|
125
|
+
const form = ref<{ validate: () => Promise<boolean>, reset: () => void, clearValidation: () => void } | null>(null)
|
|
122
126
|
|
|
123
127
|
// Règles de validation
|
|
124
128
|
const passwordRules = computed(() => [
|
|
@@ -160,17 +164,18 @@ export const CustomValidation: Story = {
|
|
|
160
164
|
<div>
|
|
161
165
|
<SyForm ref="form" v-bind="args" @submit="submitForm">
|
|
162
166
|
<div class="d-flex flex-column gap-4">
|
|
163
|
-
<SyTextField v-model="username" label="Nom d'utilisateur" required />
|
|
164
|
-
<SyTextField v-model="password" label="Mot de passe" type="password" :custom-rules="passwordRules" />
|
|
167
|
+
<SyTextField v-model="username" label="Nom d'utilisateur" required class="mb-2" />
|
|
168
|
+
<SyTextField v-model="password" label="Mot de passe" type="password" :custom-rules="passwordRules" class="mb-2" />
|
|
165
169
|
<SyTextField
|
|
166
170
|
v-model="confirmPassword"
|
|
167
171
|
label="Confirmer le mot de passe"
|
|
168
172
|
type="password"
|
|
169
173
|
required
|
|
170
|
-
:custom-rules="confirmPasswordRules"
|
|
174
|
+
:custom-rules="confirmPasswordRules"
|
|
175
|
+
class="mb-2"
|
|
171
176
|
/>
|
|
172
177
|
<div class="d-flex gap-3">
|
|
173
|
-
<v-btn type="submit" color="primary">S'inscrire</v-btn>
|
|
178
|
+
<v-btn type="submit" color="primary" class="mr-2">S'inscrire</v-btn>
|
|
174
179
|
<v-btn @click="validateManually" color="secondary">Valider sans soumettre</v-btn>
|
|
175
180
|
</div>
|
|
176
181
|
</div>
|
|
@@ -187,16 +192,17 @@ export const CustomValidation: Story = {
|
|
|
187
192
|
<div>
|
|
188
193
|
<SyForm ref="form" @submit="onSubmit">
|
|
189
194
|
<div class="d-flex flex-column gap-4">
|
|
190
|
-
<SyTextField v-model="username" label="Nom d'utilisateur" required />
|
|
191
|
-
<SyTextField v-model="password" label="Mot de passe" type="password" :custom-rules="passwordRules" />
|
|
195
|
+
<SyTextField v-model="username" label="Nom d'utilisateur" required class="mb-2" />
|
|
196
|
+
<SyTextField v-model="password" label="Mot de passe" type="password" :custom-rules="passwordRules" class="mb-2" />
|
|
192
197
|
<SyTextField
|
|
193
198
|
v-model="confirmPassword"
|
|
194
199
|
label="Confirmer le mot de passe"
|
|
195
200
|
type="password"
|
|
196
201
|
:custom-rules="confirmPasswordRules"
|
|
202
|
+
class="mb-2"
|
|
197
203
|
/>
|
|
198
204
|
<div class="d-flex gap-3">
|
|
199
|
-
<v-btn type="submit" color="primary">S'inscrire</v-btn>
|
|
205
|
+
<v-btn type="submit" color="primary" class="mr-2">S'inscrire</v-btn>
|
|
200
206
|
<v-btn @click="validateManually" color="secondary">Valider sans soumettre</v-btn>
|
|
201
207
|
</div>
|
|
202
208
|
</div>
|
|
@@ -296,10 +302,12 @@ export const MixedFields: Story = {
|
|
|
296
302
|
template: `
|
|
297
303
|
<SyForm ref="form" v-bind="args" @submit="submitForm">
|
|
298
304
|
<div class="d-flex flex-column gap-4">
|
|
299
|
-
<SyTextField v-model="formData.name" label="Nom complet" required />
|
|
300
|
-
<SyTextField v-model="formData.email" label="Email" :custom-rules="emailCustomRules" />
|
|
301
|
-
<SySelect v-model="formData.country" :items="countries" label="Pays" required />
|
|
302
|
-
<
|
|
305
|
+
<SyTextField v-model="formData.name" label="Nom complet" required class="mb-2" />
|
|
306
|
+
<SyTextField v-model="formData.email" label="Email" :custom-rules="emailCustomRules" class="mb-2" />
|
|
307
|
+
<SySelect v-model="formData.country" :items="countries" label="Pays" required class="mb-2" />
|
|
308
|
+
<div class="d-flex gap-3">
|
|
309
|
+
<v-btn type="submit" color="primary">Enregistrer</v-btn>
|
|
310
|
+
</div>
|
|
303
311
|
</div>
|
|
304
312
|
</SyForm>
|
|
305
313
|
`,
|
|
@@ -312,10 +320,12 @@ export const MixedFields: Story = {
|
|
|
312
320
|
<template>
|
|
313
321
|
<SyForm ref="form" v-bind="args" @submit="submitForm">
|
|
314
322
|
<div class="d-flex flex-column gap-4">
|
|
315
|
-
<SyTextField v-model="formData.name" label="Nom complet" required />
|
|
316
|
-
<SyTextField v-model="formData.email" label="Email" :customRules="emailCustomRules" />
|
|
317
|
-
<SySelect v-model="formData.country" :items="countries" label="Pays" required />
|
|
318
|
-
<
|
|
323
|
+
<SyTextField v-model="formData.name" label="Nom complet" required class="mb-2" />
|
|
324
|
+
<SyTextField v-model="formData.email" label="Email" :customRules="emailCustomRules" class="mb-2" />
|
|
325
|
+
<SySelect v-model="formData.country" :items="countries" label="Pays" required class="mb-2" />
|
|
326
|
+
<div class="d-flex gap-3">
|
|
327
|
+
<v-btn type="submit" color="primary">Enregistrer</v-btn>
|
|
328
|
+
</div>
|
|
319
329
|
</div>
|
|
320
330
|
</SyForm>
|
|
321
331
|
</template>
|
|
@@ -361,3 +371,103 @@ export const MixedFields: Story = {
|
|
|
361
371
|
],
|
|
362
372
|
},
|
|
363
373
|
}
|
|
374
|
+
|
|
375
|
+
export const Reset: Story = {
|
|
376
|
+
render: args => ({
|
|
377
|
+
components: { SyForm, SyTextField, VBtn },
|
|
378
|
+
setup() {
|
|
379
|
+
const name = ref('')
|
|
380
|
+
const email = ref('')
|
|
381
|
+
const form = ref<{ validate: () => Promise<boolean>, reset: () => void, clearValidation: () => void } | null>(null)
|
|
382
|
+
|
|
383
|
+
// Règles de validation selon le design system
|
|
384
|
+
const emailRules = [
|
|
385
|
+
{ type: 'email', options: { message: 'Format d\'email invalide' } },
|
|
386
|
+
{ type: 'required', options: { message: 'L\'email est obligatoire' } },
|
|
387
|
+
]
|
|
388
|
+
|
|
389
|
+
const submitForm = async () => {
|
|
390
|
+
const isValid = await form.value?.validate()
|
|
391
|
+
if (isValid) {
|
|
392
|
+
alert('Formulaire valide !')
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
alert('Formulaire invalide, veuillez corriger les erreurs.')
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
function clearAll() {
|
|
400
|
+
form.value?.reset()
|
|
401
|
+
form.value?.clearValidation()
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
return { name, email, emailRules, form, submitForm, clearAll, args }
|
|
405
|
+
},
|
|
406
|
+
template: `
|
|
407
|
+
<SyForm ref="form" v-bind="args" @submit="submitForm" @reset="onFormReset">
|
|
408
|
+
<div class="d-flex flex-column gap-4">
|
|
409
|
+
<SyTextField v-model="name" label="Nom" required class="mb-2" />
|
|
410
|
+
<SyTextField v-model="email" label="Email" :custom-rules="emailRules" class="mb-2" />
|
|
411
|
+
<div class="d-flex gap-3">
|
|
412
|
+
<v-btn color="secondary" class="mr-2" @click="clearAll">Reset</v-btn>
|
|
413
|
+
<v-btn type="submit" color="primary">Soumettre</v-btn>
|
|
414
|
+
</div>
|
|
415
|
+
</div>
|
|
416
|
+
</SyForm>
|
|
417
|
+
`,
|
|
418
|
+
}),
|
|
419
|
+
args: {
|
|
420
|
+
validateOnSubmit: true,
|
|
421
|
+
},
|
|
422
|
+
parameters: {
|
|
423
|
+
sourceCode: [
|
|
424
|
+
{
|
|
425
|
+
name: 'Template',
|
|
426
|
+
code: `
|
|
427
|
+
<template>
|
|
428
|
+
<SyForm ref="form" v-bind="args" @submit="submitForm" @reset="onFormReset">
|
|
429
|
+
<div class="d-flex flex-column gap-4">
|
|
430
|
+
<SyTextField v-model="name" label="Nom" required class="mb-2" />
|
|
431
|
+
<SyTextField v-model="email" label="Email" :custom-rules="emailRules" class="mb-2" />
|
|
432
|
+
<div class="d-flex gap-3">
|
|
433
|
+
<v-btn color="secondary" class="mr-2" @click="clearAll">Reset</v-btn>
|
|
434
|
+
<v-btn type="submit" color="primary">Soumettre</v-btn>
|
|
435
|
+
</div>
|
|
436
|
+
</div>
|
|
437
|
+
</SyForm>
|
|
438
|
+
</template>
|
|
439
|
+
`,
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
name: 'Script',
|
|
443
|
+
code: `
|
|
444
|
+
<script setup lang="ts">
|
|
445
|
+
import { ref } from 'vue'
|
|
446
|
+
const name = ref('')
|
|
447
|
+
const email = ref('')
|
|
448
|
+
|
|
449
|
+
// Règles de validation selon le design system
|
|
450
|
+
const emailRules = [
|
|
451
|
+
{ type: 'email', options: { message: "Format d'email invalide" } },
|
|
452
|
+
{ type: 'required', options: { message: "L'email est obligatoire" } },
|
|
453
|
+
]
|
|
454
|
+
|
|
455
|
+
const onSubmit = (event: { isValid: boolean }) => {
|
|
456
|
+
if (event.isValid) {
|
|
457
|
+
alert('Formulaire valide !')
|
|
458
|
+
}
|
|
459
|
+
else {
|
|
460
|
+
alert('Formulaire invalide, veuillez corriger les erreurs.')
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
|
|
464
|
+
function clearAll() {
|
|
465
|
+
form.value?.reset()
|
|
466
|
+
form.value?.clearValidation()
|
|
467
|
+
}
|
|
468
|
+
</script>
|
|
469
|
+
`,
|
|
470
|
+
},
|
|
471
|
+
],
|
|
472
|
+
},
|
|
473
|
+
}
|
|
@@ -8,12 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|
const emit = defineEmits<{
|
|
10
10
|
(e: 'submit', value: { isValid: boolean }): void
|
|
11
|
+
(e: 'reset'): void
|
|
11
12
|
}>()
|
|
12
13
|
|
|
13
14
|
// Reference vers le formulaire Vuetify
|
|
14
15
|
const form = ref<InstanceType<typeof import('vuetify/components').VForm> | null>(null)
|
|
15
16
|
|
|
16
|
-
const { validateAll } = useFormValidation()
|
|
17
|
+
const { validateAll, clearAll, resetAll } = useFormValidation()
|
|
17
18
|
|
|
18
19
|
// Methode de validation globale qui combine Vuetify et nos composants personnalises
|
|
19
20
|
const validate = async () => {
|
|
@@ -48,7 +49,21 @@
|
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
const reset = () => {
|
|
52
|
+
// Reset custom components values
|
|
53
|
+
resetAll()
|
|
54
|
+
// Reset field values and validations for Vuetify form
|
|
51
55
|
form.value?.reset()
|
|
56
|
+
form.value?.resetValidation()
|
|
57
|
+
// Notify consumers so they can clear external models (e.g., v-model refs)
|
|
58
|
+
emit('reset')
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// Clear only validation states (keep current values)
|
|
62
|
+
const clearValidation = () => {
|
|
63
|
+
// Clear Vuetify internal validation state
|
|
64
|
+
form.value?.resetValidation()
|
|
65
|
+
// Clear custom components validation states registered in the form
|
|
66
|
+
clearAll()
|
|
52
67
|
}
|
|
53
68
|
|
|
54
69
|
// Gestion de la soumission du formulaire
|
|
@@ -65,6 +80,7 @@
|
|
|
65
80
|
defineExpose({
|
|
66
81
|
validate,
|
|
67
82
|
reset,
|
|
83
|
+
clearValidation,
|
|
68
84
|
form,
|
|
69
85
|
})
|
|
70
86
|
</script>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts" setup>
|
|
2
|
-
|
|
2
|
+
// Prevent display-asterisk from being passed to the DOM
|
|
3
3
|
defineOptions({
|
|
4
4
|
inheritAttrs: false,
|
|
5
5
|
})
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
mdiCheck,
|
|
9
9
|
mdiInformationOutline,
|
|
10
10
|
mdiClose,
|
|
11
|
-
|
|
11
|
+
mdiAlertCircle,
|
|
12
12
|
mdiCalendar,
|
|
13
13
|
} from '@mdi/js'
|
|
14
14
|
import { computed, onMounted, ref, watch, nextTick, type ComponentPublicInstance } from 'vue'
|
|
@@ -166,7 +166,7 @@
|
|
|
166
166
|
info: mdiInformationOutline,
|
|
167
167
|
success: mdiCheck,
|
|
168
168
|
warning: mdiAlertOutline,
|
|
169
|
-
error:
|
|
169
|
+
error: mdiAlertCircle,
|
|
170
170
|
close: mdiClose,
|
|
171
171
|
calendar: mdiCalendar,
|
|
172
172
|
}
|
|
@@ -189,6 +189,16 @@
|
|
|
189
189
|
|
|
190
190
|
const isBlurred = ref(false)
|
|
191
191
|
|
|
192
|
+
const showClear = computed(() => {
|
|
193
|
+
if (!props.isClearable) return false
|
|
194
|
+
if (props.readonly || props.disabled) return false
|
|
195
|
+
return model.value !== undefined && model.value !== null && String(model.value) !== '' && String(model.value) !== '__/__/____'
|
|
196
|
+
})
|
|
197
|
+
|
|
198
|
+
const clearField = () => {
|
|
199
|
+
model.value = ''
|
|
200
|
+
}
|
|
201
|
+
|
|
192
202
|
// Initialisation du composable de validation
|
|
193
203
|
const validation = useValidation({
|
|
194
204
|
customRules: props.customRules,
|
|
@@ -274,7 +284,7 @@
|
|
|
274
284
|
const hasWarning = computed(() => validation.hasWarning.value || props.hasWarning)
|
|
275
285
|
const hasSuccess = computed(() => (validation.hasSuccess.value && !hasError.value && !hasWarning.value) || props.hasSuccess)
|
|
276
286
|
|
|
277
|
-
const errors = computed(() => validation.errors.value)
|
|
287
|
+
const errors = computed(() => [...validation.errors.value, ...(props.errorMessages || [])])
|
|
278
288
|
const warnings = computed(() => validation.warnings.value)
|
|
279
289
|
const successes = computed(() => validation.successes.value)
|
|
280
290
|
|
|
@@ -351,7 +361,7 @@
|
|
|
351
361
|
const syTextFieldRef = ref<ComponentPublicInstance | null>(null)
|
|
352
362
|
|
|
353
363
|
// Intégration avec le système de validation du formulaire
|
|
354
|
-
useValidatable(validateOnSubmit)
|
|
364
|
+
useValidatable(validateOnSubmit, validation.clearValidation)
|
|
355
365
|
|
|
356
366
|
onMounted(() => {
|
|
357
367
|
nextTick(() => {
|
|
@@ -549,8 +559,6 @@
|
|
|
549
559
|
:base-color="props.baseColor"
|
|
550
560
|
:bg-color="props.bgColor"
|
|
551
561
|
:center-affix="props.centerAffix"
|
|
552
|
-
:clear-icon="ICONS.close"
|
|
553
|
-
:clearable="props.isClearable"
|
|
554
562
|
:color="props.color"
|
|
555
563
|
:counter-value="props.counterValue"
|
|
556
564
|
:density="props.density"
|
|
@@ -695,6 +703,16 @@
|
|
|
695
703
|
<!-- Append inner -->
|
|
696
704
|
<template #append-inner>
|
|
697
705
|
<slot name="append-inner">
|
|
706
|
+
<!-- Keyboard-focusable clear button -->
|
|
707
|
+
<VBtn
|
|
708
|
+
v-if="showClear"
|
|
709
|
+
class="v-btn v-btn--density-compact mr-1"
|
|
710
|
+
:aria-label="props.label ? `Vider ${props.label}` : 'Vider'"
|
|
711
|
+
:title="props.label ? `Vider ${props.label}` : 'Vider'"
|
|
712
|
+
:icon="mdiClose"
|
|
713
|
+
variant="text"
|
|
714
|
+
@click="clearField"
|
|
715
|
+
/>
|
|
698
716
|
<SyIcon
|
|
699
717
|
v-if="validationIcon && !props.appendInnerIcon"
|
|
700
718
|
:icon="validationIcon"
|
|
@@ -788,6 +806,10 @@
|
|
|
788
806
|
opacity: 1 !important;
|
|
789
807
|
}
|
|
790
808
|
|
|
809
|
+
:deep(.v-icon__svg) {
|
|
810
|
+
fill: tokens.$colors-text-success !important;
|
|
811
|
+
}
|
|
812
|
+
|
|
791
813
|
:deep(.v-field) {
|
|
792
814
|
color: tokens.$colors-border-success !important;
|
|
793
815
|
|
|
@@ -71,6 +71,8 @@
|
|
|
71
71
|
}
|
|
72
72
|
autoClamp?: boolean
|
|
73
73
|
isValidateOnBlur?: boolean
|
|
74
|
+
hint?: string
|
|
75
|
+
persistentHint?: boolean
|
|
74
76
|
}>(), {
|
|
75
77
|
modelValue: undefined,
|
|
76
78
|
label: DATE_PICKER_MESSAGES.LABEL_DEFAULT,
|
|
@@ -108,6 +110,8 @@
|
|
|
108
110
|
period: () => ({ min: '', max: '' }),
|
|
109
111
|
autoClamp: false,
|
|
110
112
|
isValidateOnBlur: true,
|
|
113
|
+
hint: undefined,
|
|
114
|
+
persistentHint: false,
|
|
111
115
|
})
|
|
112
116
|
|
|
113
117
|
// La compatibilité entre isBirthDate et birthDate est gérée directement dans l'appel au composable
|
|
@@ -588,7 +592,7 @@
|
|
|
588
592
|
}
|
|
589
593
|
|
|
590
594
|
// Intégration avec le système de validation du formulaire
|
|
591
|
-
useValidatable(validateOnSubmit)
|
|
595
|
+
useValidatable(validateOnSubmit, clearValidation)
|
|
592
596
|
|
|
593
597
|
const openDatePicker = () => {
|
|
594
598
|
if (props.disabled || props.readonly) return
|
|
@@ -597,9 +601,8 @@
|
|
|
597
601
|
}
|
|
598
602
|
}
|
|
599
603
|
|
|
600
|
-
// Fonction pour mettre à jour le mois
|
|
604
|
+
// Fonction pour mettre à jour le mois quand on navigue via les flèches
|
|
601
605
|
const onUpdateMonth = (month: string) => {
|
|
602
|
-
// Éviter les mises à jour inutiles si le mois n'a pas changé
|
|
603
606
|
if (currentMonth.value === month) return
|
|
604
607
|
currentMonth.value = month
|
|
605
608
|
currentMonthName.value = dayjs().month(parseInt(month, 10)).format('MMMM')
|
|
@@ -612,14 +615,12 @@
|
|
|
612
615
|
})
|
|
613
616
|
}
|
|
614
617
|
|
|
615
|
-
// Fonction pour mettre à jour l'année
|
|
618
|
+
// Fonction pour mettre à jour l'année quand on navigue via les flèches
|
|
616
619
|
const onUpdateYear = (year: string) => {
|
|
617
620
|
currentYear.value = year
|
|
618
621
|
currentYearName.value = year
|
|
619
|
-
markHolidayDays()
|
|
620
622
|
|
|
621
623
|
handleYearUpdate()
|
|
622
|
-
handleMonthUpdate()
|
|
623
624
|
nextTick(() => {
|
|
624
625
|
if (isDatePickerVisible.value) {
|
|
625
626
|
customizeMonthButton()
|
|
@@ -685,6 +686,8 @@
|
|
|
685
686
|
const { currentViewMode, handleViewModeUpdate, handleYearUpdate, handleMonthUpdate, resetViewMode } = useDatePickerViewMode(
|
|
686
687
|
// Fonction qui retourne la valeur actuelle de isBirthDate (combinaison de isBirthDate et birthDate)
|
|
687
688
|
() => props.isBirthDate || props.birthDate,
|
|
689
|
+
// Fonction qui retourne l'état de la date sélectionnée
|
|
690
|
+
() => selectedDates.value,
|
|
688
691
|
)
|
|
689
692
|
|
|
690
693
|
const handleInputBlur = () => {
|
|
@@ -697,6 +700,8 @@
|
|
|
697
700
|
|
|
698
701
|
watch(isDatePickerVisible, async (isVisible) => {
|
|
699
702
|
if (isVisible) {
|
|
703
|
+
// Réinitialiser le view mode à l'ouverture pour éviter les problèmes de navigation
|
|
704
|
+
resetViewMode()
|
|
700
705
|
// Marquer les jours fériés lorsque le calendrier devient visible
|
|
701
706
|
markHolidayDays()
|
|
702
707
|
}
|
|
@@ -804,6 +809,17 @@
|
|
|
804
809
|
}
|
|
805
810
|
}, { immediate: true })
|
|
806
811
|
|
|
812
|
+
// Reset month/year names when clearing the date
|
|
813
|
+
watch(selectedDates, (newValue) => {
|
|
814
|
+
if (!newValue) {
|
|
815
|
+
const today = new Date()
|
|
816
|
+
currentMonth.value = today.getMonth().toString()
|
|
817
|
+
currentMonthName.value = dayjs(today).format('MMMM')
|
|
818
|
+
currentYear.value = today.getFullYear().toString()
|
|
819
|
+
currentYearName.value = today.getFullYear().toString()
|
|
820
|
+
}
|
|
821
|
+
})
|
|
822
|
+
|
|
807
823
|
const toggleDatePicker = () => {
|
|
808
824
|
if (props.disabled || props.readonly) return
|
|
809
825
|
|
|
@@ -892,7 +908,7 @@
|
|
|
892
908
|
:no-icon="props.noIcon"
|
|
893
909
|
:is-outlined="props.isOutlined"
|
|
894
910
|
:readonly="props.readonly"
|
|
895
|
-
:title="props.title || undefined"
|
|
911
|
+
:title="props.title || props.placeholder || undefined"
|
|
896
912
|
:width="props.width"
|
|
897
913
|
:disable-error-handling="props.disableErrorHandling"
|
|
898
914
|
:show-success-messages="props.showSuccessMessages"
|
|
@@ -903,6 +919,8 @@
|
|
|
903
919
|
:auto-clamp="props.autoClamp"
|
|
904
920
|
:display-asterisk="props.displayAsterisk"
|
|
905
921
|
:is-validate-on-blur="props.isValidateOnBlur"
|
|
922
|
+
:hint="props.hint"
|
|
923
|
+
:persistent-hint="props.persistentHint"
|
|
906
924
|
@update:model-value="handleDateTextInputUpdate"
|
|
907
925
|
@date-selected="handleDateTextInputSelection"
|
|
908
926
|
@blur="handleInputBlur"
|
|
@@ -938,12 +956,14 @@
|
|
|
938
956
|
:show-week-number="props.showWeekNumber"
|
|
939
957
|
:is-birth-date="props.isBirthDate || props.birthDate"
|
|
940
958
|
:text-field-activator="props.textFieldActivator"
|
|
941
|
-
:title="props.title || undefined"
|
|
959
|
+
:title="props.title || props.placeholder || undefined"
|
|
942
960
|
:period="period"
|
|
943
961
|
:auto-clamp="props.autoClamp"
|
|
944
962
|
:label="props.label"
|
|
945
963
|
:placeholder="props.placeholder"
|
|
946
964
|
:is-validate-on-blur="props.isValidateOnBlur"
|
|
965
|
+
:hint="props.hint"
|
|
966
|
+
:persistent-hint="props.persistentHint"
|
|
947
967
|
@update:model-value="emit('update:modelValue', $event)"
|
|
948
968
|
@focus="emit('focus')"
|
|
949
969
|
@blur="emit('blur')"
|
|
@@ -992,7 +1012,9 @@
|
|
|
992
1012
|
:display-asterisk="props.displayAsterisk"
|
|
993
1013
|
:is-clearable="!props.readonly"
|
|
994
1014
|
:auto-clamp="props.autoClamp"
|
|
995
|
-
:title="props.title || undefined"
|
|
1015
|
+
:title="props.title || props.placeholder || undefined"
|
|
1016
|
+
:hint="props.hint"
|
|
1017
|
+
:persistent-hint="props.persistentHint"
|
|
996
1018
|
@click="openDatePickerOnClick"
|
|
997
1019
|
@focus="openDatePickerOnFocus"
|
|
998
1020
|
@blur="handleInputBlur"
|
|
@@ -1206,4 +1228,5 @@
|
|
|
1206
1228
|
:deep(.v-btn--variant-text .v-btn__overlay) {
|
|
1207
1229
|
padding: 13px;
|
|
1208
1230
|
}
|
|
1231
|
+
|
|
1209
1232
|
</style>
|