Skip to content

Commit 28e2393

Browse files
committed
fix: 🐛 Corrige le double input avec DsfrInputGroup
1 parent 51d23a6 commit 28e2393

File tree

2 files changed

+51
-13
lines changed

2 files changed

+51
-13
lines changed

src/components/DsfrInput/DsfrInputGroup.stories.js

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import DsfrInputGroup from './DsfrInputGroup.vue'
55
* [Voir quand l’utiliser sur la documentation du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/champ-de-saisie)
66
*/
77
export default {
8-
component: DsfrInput,
8+
component: DsfrInputGroup,
99
title: 'Composants/Champ de saisie/Champ avec message associé - DsfrInputGroup',
1010
argTypes: {
1111
id: {
@@ -42,7 +42,7 @@ export default {
4242
},
4343
disabled: {
4444
control: 'boolean',
45-
description: 'Permet de désactiver le champ, la saisie sera impossible. Sera passé à DsfrInput si modelValue n’est pas `undefined`',
45+
description: 'Permet de désactiver le champ, la saisie sera impossible. Sera passé à DsfrInput s’il n’y a pas d’utilisation du slot par défaut',
4646
},
4747
errorMessage: {
4848
control: 'text',
@@ -52,17 +52,50 @@ export default {
5252
control: 'text',
5353
description: 'Message de validation',
5454
},
55-
isValid: {
56-
control: 'boolean',
57-
description: 'Signale si le champ est en état validé (`true`) ou non (`false`, par défaut)',
58-
},
59-
isInvalid: {
60-
control: 'boolean',
61-
description: 'Signale si le champ est en état d’erreur (`true`) ou non (`false`, par défaut)',
62-
},
6355
},
6456
}
6557

58+
export const GroupeDeChampAvecPersonnalisation = (args) => ({
59+
components: {
60+
DsfrInput,
61+
DsfrInputGroup,
62+
},
63+
data () {
64+
return {
65+
...args,
66+
}
67+
},
68+
template: `
69+
<DsfrInputGroup
70+
:error-message="errorMessage"
71+
:valid-message="validMessage"
72+
>
73+
<DsfrInput
74+
:id="id"
75+
:placeholder="placeholder"
76+
:readonly="readonly !== ''"
77+
:model-value="modelValue"
78+
:label="label"
79+
:type="type"
80+
:hint="hint"
81+
:label-visible="labelVisible"
82+
/>
83+
</DsfrInputGroup>
84+
`,
85+
})
86+
GroupeDeChampAvecPersonnalisation.args = {
87+
type: 'text',
88+
label: 'Label champ de saisie',
89+
labelVisible: true,
90+
placeholder: 'Yo',
91+
modelValue: '',
92+
validMessage: 'Message de validation',
93+
errorMessage: '',
94+
hint: 'Texte d’indice du champ',
95+
id: '',
96+
readonly: '',
97+
}
98+
6699
export const ChampEnErreur = (args) => ({
67100
components: {
68101
DsfrInput,
@@ -87,7 +120,6 @@ export const ChampEnErreur = (args) => ({
87120
:is-invalid="isInvalid"
88121
/>
89122
`,
90-
91123
})
92124
ChampEnErreur.args = {
93125
label: 'Label champ de saisie',

src/components/DsfrInput/DsfrInputGroup.vue

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export default defineComponent({
3434
labelVisible: Boolean,
3535
modelValue: {
3636
type: String,
37-
default: '',
37+
default: undefined,
3838
},
3939
placeholder: {
4040
type: String,
@@ -63,6 +63,11 @@ export default defineComponent({
6363
return this.errorMessage ? 'ri-alert-line' : 'ri-checkbox-circle-line'
6464
},
6565
},
66+
watch: {
67+
modelValue (nv, ov) {
68+
console.log({ nv, ov })
69+
},
70+
},
6671
6772
})
6873
</script>
@@ -75,9 +80,10 @@ export default defineComponent({
7580
'fr-input-group--valid': validMessage,
7681
}"
7782
>
83+
<slot name="before-input" />
7884
<slot />
7985
<DsfrInput
80-
v-if="modelValue !== undefined"
86+
v-if="!$slots.default"
8187
v-bind="$attrs"
8288
:is-valid="!!validMessage"
8389
:is-invalid="!!errorMessage"

0 commit comments

Comments
 (0)