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

Merged
tristan merged 1 commits from feature/sidebar-active-prefix into develop 2026-06-19 13:58:55 +00:00
Owner

Problème

L'état actif d'un lien Sidebar reposait sur l'active-class de NuxtLink, qui dépend de l'imbrication des routes Vue Router. Sur un routing plat (typique ERP), /supplier n'était plus actif sur /supplier/1/edit.

Solution (option 2 : match par préfixe)

L'actif est désormais calculé côté composant via useRoute().path :

  • actif si path === item.to ou path commence par item.to + '/'/supplier reste actif sur /supplier/1/edit, quel que soit le routing du consommateur.
  • nouvelle option exact: true par item pour forcer le match strict (actif uniquement sur la route exacte).

Tests / doc

  • 24 tests Sidebar (route exacte, sous-route préfixe, autres liens non actifs, exact strict/exact) — montés avec un router mémoire.
  • COMPONENTS.md (type SidebarItem + comportement actif) et CHANGELOG mis à jour.

Branche partie de develop (indépendante de la PR #79).

## Problème L'état actif d'un lien Sidebar reposait sur l'`active-class` de NuxtLink, qui dépend de l'imbrication des routes Vue Router. Sur un routing **plat** (typique ERP), `/supplier` n'était plus actif sur `/supplier/1/edit`. ## Solution (option 2 : match par préfixe) L'actif est désormais calculé côté composant via `useRoute().path` : - actif si `path === item.to` **ou** `path` commence par `item.to + '/'` → `/supplier` reste actif sur `/supplier/1/edit`, quel que soit le routing du consommateur. - nouvelle option **`exact: true`** par item pour forcer le match strict (actif uniquement sur la route exacte). ## Tests / doc - 24 tests Sidebar (route exacte, sous-route préfixe, autres liens non actifs, `exact` strict/exact) — montés avec un router mémoire. - COMPONENTS.md (type SidebarItem + comportement actif) et CHANGELOG mis à jour. Branche partie de `develop` (indépendante de la PR #79).
tristan added 1 commit 2026-06-19 13:56:46 +00:00
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>
tristan merged commit aef1550d7c into develop 2026-06-19 13:58:55 +00:00
tristan deleted branch feature/sidebar-active-prefix 2026-06-19 13:58:55 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MALIO-DEV/malio-layer-ui#81