Skip to content

Commit 4850d61

Browse files
committed
refactor(DsfrCheckbox): ♻️ utilise defineSlots et met à jour pour Storybook 9
- Améliorer la documentation des slots avec JSDoc - Préparer la migration vers Storybook 9 avec les imports corrects - Ajout de defineSlots avec JSDoc dans DsfrCheckbox.vue (label, required-tip) - Ajout de defineSlots avec JSDoc dans DsfrCheckboxSet.vue (default, legend, required-tip) - Mise à jour des imports de '@storybook/test' dans les stories - Ajout des types Meta et StoryObj dans les fichiers stories - Échappement des apostrophes dans les descriptions
1 parent 3c93260 commit 4850d61

File tree

4 files changed

+54
-16
lines changed

4 files changed

+54
-16
lines changed

src/components/DsfrCheckbox/DsfrCheckbox.stories.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,29 @@
1-
import { expect, fn, within } from 'storybook/test'
1+
import type { Meta, StoryObj } from '@storybook/vue3-vite'
2+
3+
import { expect, fn, within } from '@storybook/test'
24

35
import DsfrCheckbox from './DsfrCheckbox.vue'
46

57
/**
6-
* [Voir quand lutiliser sur la documentation du DSFR](https://www.systeme-de-design.gouv.fr/version-courante/fr/composants/case-a-cocher)
8+
* [Voir quand l'utiliser sur la documentation du DSFR](https://www.systeme-de-design.gouv.fr/version-courante/fr/composants/case-a-cocher)
79
*/
8-
export default {
10+
const meta = {
911
component: DsfrCheckbox,
1012
title: 'Composants/DsfrCheckbox',
1113
tags: ['formulaire'],
1214
argTypes: {
1315
id: {
1416
control: 'text',
1517
description:
16-
'(optionnel) Valeur de lattribut `id` de la checkbox. Par défaut, un id pseudo-aléatoire sera donné.',
18+
'(optionnel) Valeur de l\'attribut `id` de la checkbox. Par défaut, un id pseudo-aléatoire sera donné.',
1719
},
1820
// label: {
1921
// control: 'text',
2022
// description: 'Label de la case à cocher',
2123
// },
2224
name: {
2325
control: 'text',
24-
description: 'Valeur de lattribut `name` de la case à cocher',
26+
description: 'Valeur de l\'attribut `name` de la case à cocher',
2527
},
2628
hint: {
2729
control: 'text',
@@ -41,7 +43,7 @@ export default {
4143
},
4244
errorMessage: {
4345
control: 'text',
44-
description: 'Texte du message à afficher en cas derreur',
46+
description: 'Texte du message à afficher en cas d\'erreur',
4547
},
4648
validMessage: {
4749
control: 'text',
@@ -54,11 +56,15 @@ export default {
5456
},
5557
'update:modelValue': {
5658
description:
57-
'Événement émis lors du changement de létat coché (`true`) ou non (`false`)',
59+
'Événement émis lors du changement de l\'état coché (`true`) ou non (`false`)',
5860
},
5961
onChange: { action: fn() },
6062
},
61-
}
63+
} satisfies Meta<typeof DsfrCheckbox>
64+
65+
export default meta
66+
67+
type Story = StoryObj<typeof meta>
6268

6369
export const Checkbox = (args) => ({
6470
components: { DsfrCheckbox },

src/components/DsfrCheckbox/DsfrCheckbox.vue

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,20 @@ import { useRandomId } from '../../utils/random-utils'
77
88
export type { DsfrCheckboxProps }
99
10+
/**
11+
* Slots disponibles pour DsfrCheckbox
12+
*/
13+
defineSlots<{
14+
/**
15+
* Slot pour personnaliser tout le contenu de la balise <label>
16+
*/
17+
label?: () => any
18+
/**
19+
* Slot pour indiquer que le champ est obligatoire
20+
*/
21+
'required-tip'?: () => any
22+
}>()
23+
1024
defineOptions({
1125
inheritAttrs: false,
1226
})

src/components/DsfrCheckbox/DsfrCheckboxSet.stories.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
1-
import { expect, fn, within } from 'storybook/test'
1+
import type { Meta, StoryObj } from '@storybook/vue3-vite'
2+
3+
import { expect, within } from '@storybook/test'
24

35
import DsfrCheckboxSet from './DsfrCheckboxSet.vue'
46

57
/**
6-
* [Voir quand lutiliser sur la documentation du DSFR](https://www.systeme-de-design.gouv.fr/version-courante/fr/composants/case-a-cocher)
8+
* [Voir quand l'utiliser sur la documentation du DSFR](https://www.systeme-de-design.gouv.fr/version-courante/fr/composants/case-a-cocher)
79
*/
8-
export default {
10+
const meta = {
911
component: DsfrCheckboxSet,
1012
title: 'Composants/DsfrCheckboxSet',
1113
tags: ['formulaire'],
1214
argTypes: {
1315
disabled: {
1416
control: 'boolean',
1517
description:
16-
'Indique si lensemble des checkboxes doivent être désactivées (`true`) ou non (`false`, défaut)',
18+
'Indique si l\'ensemble des checkboxes doivent être désactivées (`true`) ou non (`false`, défaut)',
1719
},
1820
errorMessage: {
1921
control: 'text',
20-
description: 'Texte du message à afficher en cas derreur',
22+
description: 'Texte du message à afficher en cas d\'erreur',
2123
},
2224
validMessage: {
2325
control: 'text',
@@ -34,12 +36,12 @@ export default {
3436
},
3537
// legend: {
3638
// control: 'text',
37-
// description: 'Titre de lensemble (Set) des checkboxes',
39+
// description: 'Titre de l'ensemble (Set) des checkboxes',
3840
// },
3941
options: {
4042
control: 'object',
4143
description:
42-
'Tableau de `string` (la valeur `value` de la checkbox sera identique au `label`) ou dobjets contenant les props à passer à chaque composant DsfrCheckbox, sauf `modelValue` qui sera calculée à partir de `modelValue` du DsfrCheckboxSet.',
44+
'Tableau de `string` (la valeur `value` de la checkbox sera identique au `label`) ou d\'objets contenant les props à passer à chaque composant DsfrCheckbox, sauf `modelValue` qui sera calculée à partir de `modelValue` du DsfrCheckboxSet.',
4345
},
4446
modelValue: {
4547
control: 'object',
@@ -55,7 +57,11 @@ export default {
5557
action: fn(),
5658
},
5759
},
58-
}
60+
} satisfies Meta<typeof DsfrCheckboxSet>
61+
62+
export default meta
63+
64+
type Story = StoryObj<typeof meta>
5965

6066
export const CheckboxSet = (args) => ({
6167
components: { DsfrCheckboxSet },

src/components/DsfrCheckbox/DsfrCheckboxSet.vue

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,21 @@ const props = withDefaults(defineProps<DsfrCheckboxSetProps>(), {
2020
modelValue: () => [],
2121
})
2222
23+
/**
24+
* Slots disponibles pour DsfrCheckboxSet
25+
*/
2326
defineSlots<{
27+
/**
28+
* Slot par défaut pour personnaliser l'ensemble des checkboxes
29+
*/
2430
default?: () => any
31+
/**
32+
* Slot pour personnaliser tout le contenu de la balise <legend>
33+
*/
2534
legend?: () => any
35+
/**
36+
* Slot pour indiquer que le champ est obligatoire
37+
*/
2638
'required-tip'?: () => any
2739
}>()
2840

0 commit comments

Comments
 (0)