Skip to content

Commit

Permalink
Merge pull request #945 from dnum-mi/docs/improve-docs
Browse files Browse the repository at this point in the history
docs/improve docs
  • Loading branch information
laruiss authored Sep 15, 2024
2 parents e581673 + 01ac366 commit 80794a7
Show file tree
Hide file tree
Showing 13 changed files with 387 additions and 105 deletions.
162 changes: 98 additions & 64 deletions .vitepress/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,10 +98,12 @@ const composants = [
{
text: 'DsfrAccordion',
link: '/composants/DsfrAccordion.md',
},
{
text: 'DsfrAccordionsGroup',
link: '/composants/DsfrAccordionsGroup.md',
items: [
{
text: 'DsfrAccordionsGroup',
link: '/composants/DsfrAccordionsGroup.md',
},
],
},
{
text: 'DsfrAlert',
Expand All @@ -122,10 +124,12 @@ const composants = [
{
text: 'DsfrButton',
link: '/composants/DsfrButton.md',
},
{
text: 'DsfrButtonGroup',
link: '/composants/DsfrButtonGroup.md',
items: [
{
text: 'DsfrButtonGroup',
link: '/composants/DsfrButtonGroup.md',
},
],
},
{
text: 'DsfrCallout',
Expand All @@ -138,10 +142,12 @@ const composants = [
{
text: 'DsfrCheckbox',
link: '/composants/DsfrCheckbox.md',
},
{
text: 'DsfrCheckboxSet',
link: '/composants/DsfrCheckboxSet.md',
items: [
{
text: 'DsfrCheckboxSet',
link: '/composants/DsfrCheckboxSet.md',
},
],
},
{
text: 'DsfrConsent',
Expand Down Expand Up @@ -170,34 +176,38 @@ const composants = [
{
text: 'DsfrFooter',
link: '/composants/DsfrFooter.md',
},
{
text: 'DsfrFooterLinkList',
link: '/composants/DsfrFooterLinkList.md',
},
{
text: 'DsfrFooterLink',
link: '/composants/DsfrFooterLink.md',
},
{
text: 'DsfrFooterPartners',
link: '/composants/DsfrFooterPartners.md',
},
{
text: 'DsfrFranceConnect',
link: '/composants/DsfrFranceConnect.md',
items: [
{
text: 'DsfrFooterLinkList',
link: '/composants/DsfrFooterLinkList.md',
},
{
text: 'DsfrFooterLink',
link: '/composants/DsfrFooterLink.md',
},
{
text: 'DsfrFooterPartners',
link: '/composants/DsfrFooterPartners.md',
},
{
text: 'DsfrFranceConnect',
link: '/composants/DsfrFranceConnect.md',
},
],
},
{
text: 'DsfrHeader',
link: '/composants/DsfrHeader.md',
},
{
text: 'DsfrHeaderMenuLink',
link: '/composants/DsfrHeaderMenuLink.md',
},
{
text: 'DsfrHeaderMenuLinks',
link: '/composants/DsfrHeaderMenuLinks.md',
items: [
{
text: 'DsfrHeaderMenuLink',
link: '/composants/DsfrHeaderMenuLink.md',
},
{
text: 'DsfrHeaderMenuLinks',
link: '/composants/DsfrHeaderMenuLinks.md',
},
],
},
{
text: 'DsfrHighlight',
Expand All @@ -206,10 +216,12 @@ const composants = [
{
text: 'DsfrInput',
link: '/composants/DsfrInput.md',
},
{
text: 'DsfrInputGroup',
link: '/composants/DsfrInputGroup.md',
items: [
{
text: 'DsfrInputGroup',
link: '/composants/DsfrInputGroup.md',
},
],
},
{
text: 'DsfrLanguageSelector',
Expand All @@ -226,10 +238,12 @@ const composants = [
{
text: 'DsfrRadioButton',
link: '/composants/DsfrRadioButton.md',
},
{
text: 'DsfrRadioButtonSet',
link: '/composants/DsfrRadioButtonSet.md',
items: [
{
text: 'DsfrRadioButtonSet',
link: '/composants/DsfrRadioButtonSet.md',
},
],
},
{
text: 'DsfrRange',
Expand All @@ -242,10 +256,12 @@ const composants = [
{
text: 'DsfrSegmented',
link: '/composants/DsfrSegmented.md',
},
{
text: 'DsfrSegmentedSet',
link: '/composants/DsfrSegmentedSet.md',
items: [
{
text: 'DsfrSegmentedSet',
link: '/composants/DsfrSegmentedSet.md',
},
],
},
{
text: 'DsfrSelect',
Expand All @@ -254,26 +270,38 @@ const composants = [
{
text: 'DsfrTable',
link: '/composants/DsfrTable.md',
},
{
text: 'DsfrTableHeader',
link: '/composants/DsfrTableHeader.md',
},
{
text: 'DsfrTableHeaders',
link: '/composants/DsfrTableHeaders.md',
},
{
text: 'DsfrTableRow',
link: '/composants/DsfrTableRow.md',
},
{
text: 'DsfrTableCell',
link: '/composants/DsfrTableCell.md',
items: [
{
text: 'DsfrTableHeader',
link: '/composants/DsfrTableHeader.md',
},
{
text: 'DsfrTableHeaders',
link: '/composants/DsfrTableHeaders.md',
},
{
text: 'DsfrTableRow',
link: '/composants/DsfrTableRow.md',
},
{
text: 'DsfrTableCell',
link: '/composants/DsfrTableCell.md',
},
],
},
{
text: 'DsfrTabs',
link: '/composants/DsfrTabs.md',
items: [
{
text: 'DsfrTabItem',
link: '/composants/DsfrTabItem.md',
},
{
text: 'DsfrTabContent',
link: '/composants/DsfrTabContent.md',
},
],
},
{
text: 'DsfrTag',
Expand All @@ -282,6 +310,12 @@ const composants = [
{
text: 'DsfrTile',
link: '/composants/DsfrTile.md',
items: [
{
text: 'DsfrTiles',
link: '/composants/DsfrTiles.md',
},
],
},
{
text: 'DsfrToggleSwitch',
Expand Down
53 changes: 53 additions & 0 deletions src/components/DsfrTabs/DsfrTabContent.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Contenu d’onglet - `DsfrTabContent`

## 🌟 Introduction

Le composant `DsfrTabContent` est conçu pour être utilisé comme panneau de contenu dans une interface à onglets. Il utilise une transition fluide pour animer l'affichage du contenu de l'onglet sélectionné.

Ce composant **doit** s’utiliser dans un [`DsfrTabs`](/composants/DsfrTabs).

## 📐 Structure

- `<DsfrTabContent>` : Le composant principal.
- Affiche le contenu associé à un onglet.
- Utilise une transition animée pour l'apparition et la disparition du contenu.
- Utilise des classes pour gérer l'état de sélection de l'onglet.

## 🛠️ Props

| Propriété | Type | Description | Valeur par défaut |
|-------------|-----------|------------------------------------------------------------------|-------------------|
| `panelId` | `string` | ID unique pour le panneau, utilisé pour l'accessibilité. | `obligatoire` |
| `tabId` | `string` | ID unique de l'onglet associé, utilisé pour l'accessibilité. | `obligatoire` |

## 📡 Événements

Ce composant ne déclenche pas d'événements spécifiques.

## 🧩 Slots

- `default` : Slot pour insérer le contenu de l'onglet à afficher.

## 📝 Exemples

::: code-group

<Story data-title="Démo" min-h="600px">
<DsfrTabsDemoComplex />
</Story>

<<< docs-demo/DsfrTabsDemoComplex.vue [Code de la démo]

:::

## ⚙️ Code source du composant

::: code-group
<<< DsfrTabContent.vue
<<< DsfrTabs.types.ts
<<< injection-key.ts
:::

<script setup lang="ts">
import DsfrTabsDemoComplex from './docs-demo/DsfrTabsDemoComplex.vue'
</script>
7 changes: 4 additions & 3 deletions src/components/DsfrTabs/DsfrTabContent.vue
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@
import { computed, inject, toRef } from 'vue'
import { registerTabKey } from './injection-key'
import type { DsfrTabContentProps } from './DsfrTabs.types'
export type { DsfrTabContentProps }
export type DsfrTabContentProps = {
panelId: string
tabId: string
}
const props = defineProps<DsfrTabContentProps>()
const values = { true: '100%', false: '-100%' }
Expand Down
59 changes: 59 additions & 0 deletions src/components/DsfrTabs/DsfrTabItem.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Onglet - `DsfrTabItem`

## 🌟 Introduction

Le composant `DsfrTabItem` représente un onglet individuel dans un ensemble d'onglets. Il gère les interactions utilisateur telles que les clics et les commandes clavier pour naviguer entre les onglets. Ce composant offre également une intégration avec des icônes pour une expérience utilisateur enrichie et intuitive.

Ce composant **doit** s’utiliser dans un [`DsfrTabs`](/composants/DsfrTabs).

## 📐 Structure

- `<DsfrTabItem>` : Un élément de liste représentant un onglet.
- Contient un bouton pour activer l'onglet.
- Gère les commandes clavier pour permettre la navigation entre les onglets.

## 🛠️ Props

| Propriété | Type | Description | Valeur par défaut |
|-----------|----------|------------------------------------------------------------------|-------------------|
| `panelId` | `string` | ID unique du panneau de contenu associé à cet onglet. | `obligatoire` |
| `tabId` | `string` | ID unique de l'onglet, utilisé pour l'accessibilité. | `obligatoire` |
| `icon` | `string` | Nom de l'icône à afficher dans l'onglet (facultatif). | `undefined` |

## 📡 Événements

- `click` : Événement émis lorsque l'onglet est cliqué, envoie l’index de l’onglet (`number`, entier commençant à `0`).
- `next` : Événement émis lorsque l'utilisateur appuie sur la touche "flèche droite" ou "flèche bas".
- `previous` : Événement émis lorsque l'utilisateur appuie sur la touche "flèche gauche" ou "flèche haut".
- `first` : Événement émis lorsque l'utilisateur appuie sur la touche "Home".
- `last` : Événement émis lorsque l'utilisateur appuie sur la touche "End".

## 🧩 Slots

- `default` : Slot pour insérer le contenu de l'onglet.

## 📝 Exemples

::: code-group

<Story data-title="Démo" min-h="600px">
<DsfrTabsDemoComplex />
</Story>

<<< docs-demo/DsfrTabsDemoComplex.vue [Code de la démo]

:::

## ⚙️ Code source du composant

::: code-group
<<< DsfrTabContent.vue
<<< DsfrTabs.types.ts
<<< injection-key.ts
:::

Le `DsfrTabItem` utilise `v-on:keydown` pour gérer les interactions clavier et permettre la navigation entre les onglets. Le composant utilise également `watch` pour gérer la mise au point automatique lorsque l'onglet est sélectionné, améliorant ainsi l'accessibilité et l'expérience utilisateur.

<script setup lang="ts">
import DsfrTabsDemoComplex from './docs-demo/DsfrTabsDemoComplex.vue'
</script>
Loading

0 comments on commit 80794a7

Please sign in to comment.