diff --git a/.vitepress/config.ts b/.vitepress/config.ts index fde6cd4b..4017e800 100644 --- a/.vitepress/config.ts +++ b/.vitepress/config.ts @@ -14,6 +14,7 @@ export default defineConfig({ appearance: { listenToStorageChanges: false }, // handling this in Story.vue itself to avoid flickering rewrites: { + 'src/components/DsfrButton/DsfrButtonGroup.md': 'composants/DsfrButtonGroup.md', 'src/components/DsfrSegmented/DsfrSegmentedSet.md': 'composants/DsfrSegmentedSet.md', 'src/components/:comp/:comp.md': 'composants/:comp.md', 'docs/:splat*': ':splat*', diff --git a/src/components/DsfrButton/DsfrButtonGroup.md b/src/components/DsfrButton/DsfrButtonGroup.md new file mode 100644 index 00000000..bca3484f --- /dev/null +++ b/src/components/DsfrButton/DsfrButtonGroup.md @@ -0,0 +1,58 @@ +# Groupe de boutons - DsfrButtonGroup + +## 🌟 Introduction + +Les boutons dans le contexte d'un groupe suivent les même règles que le composant bouton : + +- Il prend en charge les 2 types de boutons (primaire, secondaire) ; +- Il gère les 3 tailles (prop `size` valeurs `sm`, `md`, `lg`) et les variantes ( Icônes / texte seul, avec icônes à gauche / droite). + +## 📐 Structure + +Ce composant est une simple balise `ul` qui peut recevoir un tableau de `DsfrButtonProps & ButtonHTMLAttributes` pour mettre chaque bouton dans un `li`. + +Le slot par défaut peut être utilisé pour mettre vos boutons si la prop `buttons` est absente (ou un tableau vide). + +## 🛠️ Les props + +Aucune prop n’est obligatoire + +| Nom | Type | Défaut | Description | +|------------------|--------------------------|--------------- |-------------| +| align | 'right' / 'center' / String | undefined | Définit l'alignement des boutons dans le groupe. Peut être 'right' ou 'center'. | +| buttons | `(DsfrButtonProps & ButtonHTMLAttributes)[]` | () => [] | Liste des boutons à afficher. Chaque bouton est un objet qui peut inclure toutes les pros d’un [DsfrButton](/composants/DsfrButton), y compris un gestionnaire `onClick`. | +| equisized | `boolean` | false | Si `true`, tous les boutons du groupe auront la même largeur. | +| inlineLayoutWhen | `string \| boolean` | 'never' | Détermine quand les boutons doivent être affichés sur une seule linge. Peut être `'always'`, `'never'`, ou correspondre à une taille spécifique (`'sm'`, `'md'`, `'lg'`). | +| iconRight | `boolean` | false | Si `true`, place les icônes à droite du texte dans tous les boutons. | +| size | `'sm' \| 'md' \| 'lg'` | 'md' | Détermine la taille des boutons. Peut être `'sm'` (petit), `'md`' (moyen, défaut), `'lg'` (grand). | + +## 🧩 Les slots + +Le slot par défaut peut être utilisé pour mettre des boutons personnalisés. + +::: warning Important + +Si vous utilisez le slot, il faut bien envelopper chaque bouton dans une balise `
  • ` Cf. les exemples + +::: + +## 📝 Des exemples + +::: code-group + + + + + +<<< docs-demo/DsfrButtonGroupDemo.vue [Code de la démo] + +<<< DsfrButtonGroup.vue + +<<< DsfrButton.types.ts +::: + +Et voilà ! Vous êtes prêt à ajouter une touche de sophistication à votre interface avec DsfrButtonGroup. Bonne création ! 🎨✨ + + diff --git a/src/components/DsfrButton/docs-demo/DsfrButtonDemo.vue b/src/components/DsfrButton/docs-demo/DsfrButtonDemo.vue new file mode 100644 index 00000000..7385799c --- /dev/null +++ b/src/components/DsfrButton/docs-demo/DsfrButtonDemo.vue @@ -0,0 +1,180 @@ + + + diff --git a/src/components/DsfrButton/docs-demo/DsfrButtonExample1.vue b/src/components/DsfrButton/docs-demo/DsfrButtonExample1.vue new file mode 100644 index 00000000..ea0ff762 --- /dev/null +++ b/src/components/DsfrButton/docs-demo/DsfrButtonExample1.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/components/DsfrButton/docs-demo/DsfrButtonExample2.vue b/src/components/DsfrButton/docs-demo/DsfrButtonExample2.vue new file mode 100644 index 00000000..fa5417d0 --- /dev/null +++ b/src/components/DsfrButton/docs-demo/DsfrButtonExample2.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/DsfrButton/docs-demo/DsfrButtonGroupDemo.vue b/src/components/DsfrButton/docs-demo/DsfrButtonGroupDemo.vue new file mode 100644 index 00000000..77d6d7cc --- /dev/null +++ b/src/components/DsfrButton/docs-demo/DsfrButtonGroupDemo.vue @@ -0,0 +1,80 @@ + + +