diff --git a/CHANGELOG.md b/CHANGELOG.md index d006f62..6a5e29b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ Liste des évolutions de la librairie Malio layer UI * [#MUI-34] Revoir le système de playground ### Changed +* [#MUI-35] Refonte du composant drawer : slots `#header`/`#footer`, prop `side` (droite/gauche), `dismissable`, `closeOnEscape`, classes d'override, focus-trap, scroll-lock et fermeture au clavier. **Breaking** : la prop `title` est remplacée par le slot `#header`. ### Fixed * Hauteur des boutons de pagination du datatable alignée sur le select (40px) diff --git a/COMPONENTS.md b/COMPONENTS.md index f45b21d..ab98a54 100644 --- a/COMPONENTS.md +++ b/COMPONENTS.md @@ -584,28 +584,59 @@ Barre latérale de navigation rétractable. ## MalioDrawer -Panneau latéral (drawer) qui s'ouvre depuis la droite avec backdrop semi-transparent. +Panneau latéral (drawer) qui s'ouvre depuis la droite ou la gauche avec backdrop semi-transparent. Gère l'accessibilité (focus-trap, restitution du focus, `Échap`), le verrouillage du scroll de la page et un empilement correct de plusieurs drawers. | Prop | Type | Défaut | Description | |------|------|--------|-------------| | `id` | `string` | auto | Identifiant HTML | | `modelValue` | `boolean` | `undefined` | État ouvert/fermé (v-model) | -| `title` | `string` | `''` | Titre affiché dans le header | +| `side` | `'right' \| 'left'` | `'right'` | Côté d'apparition | | `showClose` | `boolean` | `true` | Afficher le bouton de fermeture (croix) | -| `drawerClass` | `string` | `''` | Classes CSS panneau (twMerge) | +| `dismissable` | `boolean` | `true` | Fermer au clic sur le backdrop | +| `closeOnEscape` | `boolean` | `true` | Fermer avec la touche `Échap` | +| `ariaLabel` | `string` | `''` | Nom accessible de secours quand le slot `#header` est absent | +| `drawerClass` | `string` | `''` | Classes CSS panneau, ex. largeur `max-w-2xl` (twMerge) | +| `overlayClass` | `string` | `''` | Classes CSS backdrop (twMerge) | +| `headerClass` | `string` | `''` | Classes CSS barre header (twMerge) | +| `bodyClass` | `string` | `''` | Classes CSS zone scrollable (twMerge) | +| `footerClass` | `string` | `''` | Classes CSS wrapper du footer (aucune position imposée) | -**Events :** `update:modelValue(value: boolean)` -**Slots :** `default` (contenu du drawer) +**Events :** `update:modelValue(value: boolean)`, `close()` + +**Slots :** +- `header` — en-tête (titre, etc.). S'il est absent et que `showClose` est `true`, seule la croix est affichée. +- `default` — contenu (zone scrollable). +- `footer` — rendu dans la zone scrollable, sans positionnement imposé : le consommateur choisit (`sticky bottom-0`, `fixed`, ou rien). ```vue - + +

Contenu du drawer

- -

Fermeture uniquement via backdrop

+ + + + +

Drawer large depuis la gauche

- -

Drawer plus large

+ + + + + + + + + + + +

Fermeture via la croix uniquement

```