|
| 1 | +# Contrôle segmenté - `DsfrSegmentedSet` |
| 2 | + |
| 3 | +🌟 Bienvenue dans l'univers de `DsfrSegmentedSet`, le chef d'orchestre de vos composants radio boutonnés `DsfrSegmented`. Ce composant est là pour vous aider à organiser et afficher un ensemble de choix avec élégance et fonctionnalité. Préparez-vous, ça va être aussi sympa qu'une balade sur la Seine ! |
| 4 | + |
| 5 | +Le composant « contrôle segmenté » incite l'utilisateur à choisir entre plusieurs options d'affichage disponibles (vues), mutuellement exclusives avec une valeur sélectionnée par défaut (Il faut toujours ramener un peu de sérieux dans l’affaire...). |
| 6 | + |
| 7 | +La documentation sur les boutons segmentés sur le [DSFR sera ici](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/controle-segmente) (n’existe pas non plus à l’heure où cette documentation est écrite, on est trop en avance, nous !). |
| 8 | + |
| 9 | +La story sur l’alerte sur le storybook de [VueDsfr est ici](https://vue-ds.fr/?path=/docs/composants-dsfrsegmentedset--docs) (oui parce que nous on fait rien à moitié, nous 😏, merci [Vincent Lainé](https://github.com/vincentlaine/) !). |
| 10 | + |
| 11 | +## Props |
| 12 | + |
| 13 | +| Nom | Type | Défaut | Description | |
| 14 | +|-------------|---------------------------------------|----------------|----------------------------------------------------------------| |
| 15 | +| `titleId` | `string` | ID aléatoire | Identifiant unique pour le titre du groupe. | |
| 16 | +| `disabled` | `boolean` | `false` | Si `true`, désactive tous les boutons radio du groupe. | |
| 17 | +| `small` | `boolean` | `false` | Si `true`, Utilise la version réduite des contrôles segmentés. | |
| 18 | +| `inline` | `boolean` | `false` | Si `true`, la légende sera alignée avec les boutons, sinon, ils seront chacun sur une ligne (`false`, défaut). | |
| 19 | +| `name` | `string` | `'no-name'` | Nom par défaut pour le groupe de boutons radio. | |
| 20 | +| `hint` | `string` | `undefined` | Texte d'indice affiché sous la légende (facultatif). | |
| 21 | +| `legend` | `string` | `''` | Texte de la légende pour le groupe de boutons radio. | |
| 22 | +| `modelValue`| `string \| number` | (requis) | La valeur actuellement sélectionnée. | |
| 23 | +| `options` | `DsfrSegmentedProps[]` | `[]` | Tableau d’objets : chaque objet contient les props à passer à [`DsfrSegmented`](/composants/DsfrSegmented). | |
| 24 | + |
| 25 | +### Notes |
| 26 | + |
| 27 | +- `titleId`: Généré automatiquement si non spécifié. |
| 28 | +- `options`: Chaque élément représente un bouton radio avec ses props spécifiques. |
| 29 | + |
| 30 | +## Événements |
| 31 | + |
| 32 | +| Nom | Valeur | Description | |
| 33 | +|--------------------|----------------------|----------------------------------------------| |
| 34 | +| `update:modelValue` | `string \| number` | Émis lorsqu'une nouvelle valeur est sélectionnée dans le groupe. | |
| 35 | + |
| 36 | +## Slots |
| 37 | + |
| 38 | +1. **slot par défaut**: Permet de personnaliser les boutons radio individuellement. |
| 39 | +2. **Slot `legend`**: Permet de personnaliser la légende avec du contenu riche. |
| 40 | + |
| 41 | +## Exemple |
| 42 | + |
| 43 | +```vue |
| 44 | +<DsfrSegmentedSet |
| 45 | + legend="Votre Choix" |
| 46 | + :options="[ |
| 47 | + { |
| 48 | + label: 'Croissant', |
| 49 | + value: 'croissant', |
| 50 | + }, |
| 51 | + { |
| 52 | + label: 'Pain au chocolat (noooon ! Cho-co-la-tine ! C’est pas compliqué, pourtant !)', |
| 53 | + value: 'chocolatine', |
| 54 | + disabled: true, |
| 55 | + } |
| 56 | + ]" |
| 57 | + v-model="selectedOption" |
| 58 | +/> |
| 59 | +``` |
| 60 | + |
| 61 | +## Utilisation |
| 62 | + |
| 63 | +Assurez-vous d'importer `DsfrSegmentedSet` ainsi que `DsfrSegmented` dans votre projet. Puis, utilisez-le dans votre template en fournissant les props et les options nécessaires. |
| 64 | + |
| 65 | +::: code-group |
| 66 | + |
| 67 | +<Story data-title="Démo" min-h="150px"> |
| 68 | + <DsfrSegmentedDemo /> |
| 69 | +</Story> |
| 70 | + |
| 71 | +<<< docs-demo/DsfrSegmentedDemo.vue [Code de la démo] |
| 72 | + |
| 73 | +<<< DsfrSegmentedSet.vue |
| 74 | +<<< DsfrSegmented.vue |
| 75 | +<<< DsfrSegmented.types.ts |
| 76 | +::: |
| 77 | + |
| 78 | +<script setup lang="ts"> |
| 79 | +import DsfrSegmentedDemo from './docs-demo/DsfrSegmentedDemo.vue' |
| 80 | +</script> |
| 81 | + |
| 82 | +--- |
| 83 | + |
| 84 | +Voilà, vous êtes prêt à utiliser `DsfrSegmentedSet` pour créer un ensemble élégant et fonctionnel de boutons radio. À vos marques, prêt, codez ! 🚀 |
0 commit comments