Skip to content

Commit 505192b

Browse files
iNeoOlaruiss
authored andcommitted
feat(DsfrRadioButtonSet): ✨ permet d’ajouter un hint via une props ou un slot
1 parent 4ab1358 commit 505192b

File tree

4 files changed

+15
-1
lines changed

4 files changed

+15
-1
lines changed

src/components/DsfrRadioButton/DsfrRadioButton.types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export type DsfrRadioButtonSetProps = {
2525
errorMessage?: string
2626
validMessage?: string
2727
legend?: string
28+
hint?: string
2829
modelValue?: string | number | boolean | undefined
2930
options?: Omit<DsfrRadioButtonProps, 'modelValue'>[]
3031
ariaInvalid?: boolean | 'grammar' | 'spelling'

src/components/DsfrRadioButton/DsfrRadioButtonSet.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Le composant `DsfrRadioButtonSet` est composé des éléments suivants :
1515
- Un élément `<div>` englobant l'ensemble du groupe de radio.
1616
- Un élément `<fieldset>` contenant les boutons radio et les messages associés.
1717
- Une légende (`legend`) définie par la prop `legend` et personnalisable avec le slot `legend`.
18+
- Un hint (`hint`) définie par la prop `hint` et personnalisable avec le slot `hint`.
1819
- Un groupe de boutons radio individuels rendus par le composant `DsfrRadioButton`.
1920
- Un message d'information, d'erreur ou de validation, affiché en dessous du groupe de boutons radio (facultatif).
2021

@@ -31,6 +32,7 @@ Le composant `DsfrRadioButtonSet` est composé des éléments suivants :
3132
| `errorMessage` | *`string`* | Message d'erreur global à afficher | Non |
3233
| `validMessage` | *`string`* | Message de validation global à afficher | Non |
3334
| `legend` | *`string`* | Texte de la légende | Non |
35+
| `hint` | *`string`* | Texte du hint | Non |
3436
| `modelValue` | *`string`* ou *`number`* ou *`boolean`* | Valeur courante du composant (sélection courante) | Non |
3537
| `options` | *`Omit<DsfrRadioButtonProps, 'modelValue'>[]`* | Tableau d'options définissant les boutons radio individuels | Oui |
3638

@@ -204,6 +206,7 @@ const options = [
204206
`DsfrRadioButtonSet` fournit les slots suivants pour la personnalisation :
205207

206208
- `legend` : Permet de personnaliser le contenu de la légende.
209+
- `hint` : Permet de personnaliser le contenu d'un hint.
207210
- `required-tip` : Permet d'ajouter un astérisque indiquant que le champ est obligatoire (fonctionne uniquement si l'attribut `required` est défini sur le composant).
208211

209212
## 🪆 Relation avec `DsfrRadioButton`

src/components/DsfrRadioButton/DsfrRadioButtonSet.vue

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ const props = withDefaults(defineProps<DsfrRadioButtonSetProps>(), {
1313
errorMessage: '',
1414
validMessage: '',
1515
legend: '',
16+
hint: '',
1617
options: () => [],
1718
})
1819
@@ -45,13 +46,21 @@ const ariaLabelledby = computed(() => message.value ? `${props.titleId} messages
4546
:role="(errorMessage || validMessage) ? 'group' : undefined"
4647
>
4748
<legend
48-
v-if="legend || $slots.legend"
49+
v-if="legend || $slots.legend || hint || $slots.hint"
4950
:id="titleId"
5051
class="fr-fieldset__legend fr-fieldset__legend--regular"
5152
>
5253
<!-- @slot Slot pour personnaliser tout le contenu de la balise <legend> cf. [DsfrInput](/?path=/story/composants-champ-de-saisie-champ-simple-dsfrinput--champ-avec-label-personnalise). Une **props porte le même nom pour une légende simple** (texte sans mise en forme) -->
5354
<slot name="legend">
5455
{{ legend }}
56+
<span
57+
class="fr-hint-text"
58+
v-if="hint || $slots.hint"
59+
>
60+
<slot name="hint">
61+
{{ hint }}
62+
</slot>
63+
</span>
5564
<!-- @slot Slot pour indiquer que le champ est obligatoire. Par défaut, met une astérisque si `required` est à true (dans un `<span class="required">`) -->
5665
<slot name="required-tip">
5766
<span

src/components/DsfrRadioButton/docs-demo/DsfrRadioButtonSetDemo.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ const options6 = structuredClone(options1).map(option => Object.fromEntries(
5858
<DsfrRadioButtonSet
5959
v-model="modelValue1"
6060
legend="Groupe de boutons radio simple"
61+
hint="Texte de description additionnel"
6162
:options="options1"
6263
name="name-1"
6364
/>

0 commit comments

Comments
 (0)