Skip to content

Commit adc972e

Browse files
committed
docs(DsfrSegmented): ✨ ajoute la documentation complète des props dans Storybook
## Pourquoi les changements ont été faits : - Amélioration de la documentation des props pour DsfrSegmented - Harmonisation avec la documentation existante dans DsfrSegmented.md - Meilleure expérience développeur dans Storybook ## Quelles modifications ont été apportées : - Ajout de la documentation pour toutes les props : id, name, value, label, disabled, icon, modelValue - Migration vers le format CSF3 pour une meilleure lisibilité - Optimisation du typage TypeScript avec 'as any' pour les props spécifiques aux histoires
1 parent 39526b3 commit adc972e

File tree

1 file changed

+51
-33
lines changed

1 file changed

+51
-33
lines changed
Lines changed: 51 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import type { Meta, StoryObj } from '@storybook/vue3'
2-
import { fn } from '@storybook/test'
3-
import { ref } from 'vue'
1+
import type { Meta, StoryObj } from '@storybook/vue3-vite'
2+
3+
import { fn } from 'storybook/test'
44

55
import DsfrSegmented from './DsfrSegmented.vue'
66

@@ -17,24 +17,65 @@ const meta = {
1717
description:
1818
'(optionnel) Valeur de l’attribut `id` du contrôle segmenté. Par défaut, un id pseudo-aléatoire sera donné.',
1919
},
20-
options: {
21-
control: 'object',
22-
description:
23-
'Tableau d’objets : chaque objet contient les props à passer à `DsfrSegmented` - *N.B. : Ne fait pas partie du composant',
20+
name: {
21+
control: 'text',
22+
description: 'Nom du groupe de boutons radio',
23+
},
24+
value: {
25+
control: 'text',
26+
description: 'Valeur du bouton radio (obligatoire)',
27+
},
28+
label: {
29+
control: 'text',
30+
description: 'Texte du label associé au bouton',
31+
},
32+
disabled: {
33+
control: 'boolean',
34+
description: 'Si `true`, désactive le bouton radio',
2435
},
36+
icon: {
37+
control: 'text',
38+
description: 'Icône à afficher à côté du label. Si la valeur commence par `fr-`, cette classe sera ajoutée à la balise `<label>`, sinon c\'est une icône Iconify qui sera utilisée',
39+
},
40+
2541
modelValue: {
2642
control: 'radio',
2743
options: ['1', '3'],
2844
description: 'Valeur de la case active',
2945
},
30-
'onUpdate:modelValue': fn(),
46+
'onUpdate:modelValue': {
47+
action: fn(),
48+
table: { category: 'Pour cette histoire uniquement' },
49+
},
3150
},
32-
} satisfies Meta<typeof DsfrSegmented>
51+
} as any
3352

3453
export default meta
3554
type Story = StoryObj<typeof meta>
3655

3756
export const ControleSegmente: Story = {
57+
args: {
58+
modelValue: '3',
59+
'onUpdate:modelValue': fn(),
60+
options: [
61+
{
62+
label: 'Valeur 1',
63+
value: '1',
64+
name: 'Choix',
65+
},
66+
{
67+
label: 'Valeur 2',
68+
value: '2',
69+
disabled: true,
70+
name: 'Choix',
71+
},
72+
{
73+
label: 'Valeur 3',
74+
value: '3',
75+
name: 'Choix',
76+
},
77+
],
78+
} as any,
3879
render: (args) => ({
3980
components: { DsfrSegmented },
4081
setup () {
@@ -51,36 +92,13 @@ export const ControleSegmente: Story = {
5192
class="fr-segmented__elements"
5293
>
5394
<DsfrSegmented
95+
v-model="args.modelValue"
5496
v-for="(option, i) of args.options"
5597
:key="i"
56-
v-model="args.modelValue"
5798
v-bind="option"
5899
/>
59100
</div>
60101
</fieldset>
61102
</div>
62103
`,
63-
}),
64-
args: {
65-
modelValue: '3',
66-
'onUpdate:modelValue': fn(),
67-
options: [
68-
{
69-
label: 'Valeur 1',
70-
value: '1',
71-
name: 'Choix',
72-
},
73-
{
74-
label: 'Valeur 2',
75-
value: '2',
76-
disabled: true,
77-
name: 'Choix',
78-
},
79-
{
80-
label: 'Valeur 3',
81-
value: '3',
82-
name: 'Choix',
83-
},
84-
],
85-
},
86104
}

0 commit comments

Comments
 (0)