fix(sidebar) : lien actif sur les sous-routes (match préfixe) + option exact

L'actif reposait sur l'active-class de NuxtLink, qui dépend de l'imbrication des
routes Vue Router : sur un routing plat, /supplier n'était plus actif sur
/supplier/1/edit. On calcule désormais l'actif côté composant via useRoute().path :
actif si path === item.to OU path commence par item.to + '/'. Nouvelle option
`exact: true` par item pour forcer le match strict.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-19 15:55:58 +02:00
parent 5a06cf642f
commit 61e1925ccd
4 changed files with 73 additions and 9 deletions
+4 -1
View File
@@ -885,7 +885,10 @@ Barre latérale de navigation rétractable.
| `sidebarClass` | `string` | `''` | Classes CSS sidebar |
| `toggleClass` | `string` | `''` | Classes CSS bouton toggle |
**Type SidebarSection :** `{ title?: string, items: { label: string, icon?: string, to?: string, href?: string, active?: boolean }[] }`
**Type SidebarSection :** `{ label?: string, icon?: string, items: SidebarItem[] }`
**Type SidebarItem :** `{ label: string, to: string, exact?: boolean }`
**Lien actif :** un lien est marqué actif (texte `m-primary` + semi-bold) quand la route courante **est ce lien ou une de ses sous-routes** (match par préfixe) — ex. `/supplier` reste actif sur `/supplier/1/edit`. Mettre `exact: true` sur l'item force le match strict (actif uniquement sur la route exacte). Indépendant de l'imbrication des routes côté consommateur.
**Events :** `update:modelValue(value: boolean)`
**Slots :** `logo` (sidebar ouverte), `logo-collapsed` (sidebar fermée)