Skip to content

Commit b8cd1be

Browse files
committed
refactor(stories): ♻️ convertit DsfrTags.stories.ts au format CSF3
## Pourquoi les changements ont été faits : - Migration vers Storybook 9 nécessitant le format CSF3 moderne - Amélioration de la maintenabilité avec TypeScript strict - Alignement avec les conventions du projet (Composition API) ## Quelles modifications ont été apportées : - Conversion de toutes les stories du format Options API vers CSF3 - Utilisation de Meta<typeof DsfrTags> et StoryObj pour le typage - Migration de data()/this vers setup()/ref() (Composition API) - Ajout des imports de types depuis @storybook/vue3-vite - Correction des 7 stories : GroupeDEtiquettes, EtiquettesSimples, EtiquettesSimplesPetites, EtiquettesCliquables, EtiquettesCliquablesPetites, EtiquettesSelectionnables, EtiquettesFermables - Respect des conventions typographiques françaises
1 parent 796e7a5 commit b8cd1be

File tree

15 files changed

+179
-306
lines changed

15 files changed

+179
-306
lines changed

.github/copilot-instructions.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
## Vue d'ensemble du projet
44
VueDsfr est une bibliothèque de composants Vue 3 qui porte le Système de Design Français (DSFR) vers Vue.js. Elle fournit ~50 composants accessibles et prêts pour la production suivant les normes de design du gouvernement français.
55

6+
## Pour les tâches que je vais te demander
7+
8+
Voir le fichier `.github/copilot-tasks.instructions.md` pour les instructions spécifiques aux tâches.
9+
610
## Architecture et structure des fichiers
711

812
### Organisation des composants

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,4 +176,4 @@
176176
"volta": {
177177
"node": "22.13.1"
178178
}
179-
}
179+
}

src/components/DsfrMedia/DsfrVideo.stories.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { Meta, StoryObj } from '@storybook/vue3-vite'
22

3-
import { expect, fn, within } from 'storybook/test'
43
import { setup } from '@storybook/vue3-vite'
4+
import { expect, fn, within } from 'storybook/test'
55

66
import DsfrModal from '../DsfrModal/DsfrModal.vue'
77
import VIcon from '../VIcon/VIcon.vue'

src/components/DsfrModal/DsfrModal.stories.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { Meta, StoryObj } from '@storybook/vue3-vite'
22

3-
import { expect, fn, userEvent, within } from 'storybook/test'
43
import { setup } from '@storybook/vue3-vite'
4+
import { expect, fn, userEvent, within } from 'storybook/test'
55
import { computed, ref } from 'vue'
66

77
import DsfrButton from '../DsfrButton/DsfrButton.vue'

src/components/DsfrRadioButton/DsfrRadioButton.stories.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import type { Meta, StoryObj } from '@storybook/vue3-vite'
2+
23
import { expect, fn, within } from 'storybook/test'
34
import { ref } from 'vue'
45

src/components/DsfrRadioButton/DsfrRadioButton.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@ defineSlots<{
2424
/**
2525
* Slot pour personnaliser tout le contenu de la balise <label>
2626
*/
27-
label(props: { label: string }): any
27+
label: (props: { label: string }) => any
2828
/**
2929
* Slot pour indiquer que le champ est obligatoire. Par défaut, met une astérisque si `required` est à true (dans un `<span class="required">`)
3030
*/
31-
'required-tip'(props: Record<string, never>): any
31+
'required-tip': (props: Record<string, never>) => any
3232
}>()
3333
3434
const defaultSvgAttrs = { viewBox: '0 0 80 80', width: '80px', height: '80px' }

src/components/DsfrRange/DsfrRange.vue

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,16 @@ const emit = defineEmits<{
2323
(e: 'update:lowerValue', payload: string | number): void
2424
}>()
2525
26+
defineSlots<{
27+
/** Pour un libellé plus personnalisé du champ */
28+
label: (props: Record<string, never>) => any
29+
/** Pour une indication plus personnalisée sur le champ */
30+
hint: (props: Record<string, never>) => any
31+
/** Pour remplacer l’astérisque par autre chose pour un champ requis */
32+
'required-tip': (props: Record<string, never>) => any
33+
/** Pour les messages d’erreur ou de succès */
34+
messages: (props: Record<string, never>) => any
35+
}>()
2636
const input = ref<HTMLInputElement>()
2737
const output = ref<HTMLSpanElement>()
2838
const inputWidth = ref()
@@ -76,17 +86,6 @@ const outputValue = computed(() => {
7686
.concat(props.suffix ?? '')
7787
})
7888
79-
defineSlots<{
80-
/** Pour un libellé plus personnalisé du champ */
81-
label(props: Record<string, never>): any
82-
/** Pour une indication plus personnalisée sur le champ */
83-
hint(props: Record<string, never>): any
84-
/** Pour remplacer l’astérisque par autre chose pour un champ requis */
85-
'required-tip'(props: Record<string, never>): any
86-
/** Pour les messages d’erreur ou de succès */
87-
messages(props: Record<string, never>): any
88-
}>()
89-
9089
onMounted(() => {
9190
inputWidth.value = input.value?.offsetWidth
9291
})

src/components/DsfrSideMenu/DsfrSideMenu.vue

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,6 @@ import DsfrSideMenuList from './DsfrSideMenuList.vue'
1010
1111
export type { DsfrSideMenuProps }
1212
13-
defineSlots<{
14-
/**
15-
* Contenu personnalisé du menu latéral (remplace la liste des éléments par défaut)
16-
*/
17-
default?: any
18-
}>()
19-
2013
withDefaults(defineProps<DsfrSideMenuProps>(), {
2114
buttonLabel: 'Dans cette rubrique',
2215
id: () => useRandomId('sidemenu'),
@@ -34,6 +27,13 @@ const emit = defineEmits<{
3427
toggleExpand: [payload: string]
3528
}>()
3629
30+
defineSlots<{
31+
/**
32+
* Contenu personnalisé du menu latéral (remplace la liste des éléments par défaut)
33+
*/
34+
default?: any
35+
}>()
36+
3737
const {
3838
collapse,
3939
collapsing,

src/components/DsfrSideMenu/DsfrSideMenuButton.stories.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import type { Meta, StoryObj } from '@storybook/vue3'
22

3-
import { ref } from 'vue'
4-
53
import DsfrSideMenu from './DsfrSideMenu.vue'
64
import DsfrSideMenuButton from './DsfrSideMenuButton.vue'
75
import DsfrSideMenuLink from './DsfrSideMenuLink.vue'

src/components/DsfrTabs/DsfrTabContent.stories.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
import type { Meta, StoryObj } from '@storybook/vue3'
22

3-
import { ref } from 'vue'
4-
53
import DsfrTabContent from './DsfrTabContent.vue'
64
import DsfrTabs from './DsfrTabs.vue'
75

0 commit comments

Comments
 (0)