Navigation

MobileNav

Navigazione mobile con hamburger menu animato e overlay. Supporta v-model per controllo dello stato aperto/chiuso, posizione top o left, overlay scuro e slot per header, footer e item personalizzati.

Import

import { MobileNav } from '@pzeta/vue-components'
import type { MobileNavItem } from '@pzeta/vue-components'

Struttura MobileNavItem

CampoTipoDescrizione
idstring | numberID univoco dell'elemento (obbligatorio)
labelstringTesto del link (obbligatorio)
hrefstringURL destinazione (link esterno)
tostringRoute Vue Router
iconstringClasse CSS dell'icona
disabledbooleanDisabilita l'elemento

Esempio Base

Props

PropTipoDefaultDescrizione
itemsMobileNavItem[][]Lista degli elementi di navigazione
modelValuebooleanfalseStato aperto/chiuso del menu (usato con v-model)
colorstringundefinedColore CSS dell'hamburger icon (variabile CSS --hamburger-color)
activeColorstringundefinedColore CSS dell'hamburger quando il menu è aperto (--hamburger-active-color)
showOverlaybooleantrueMostra overlay scuro dietro il menu
position'top' | 'left''top'Posizione di apertura del menu

Emits

EventoPayloadDescrizione
update:modelValuebooleanEmesso quando lo stato aperto/chiuso cambia (per v-model)
itemClickMobileNavItemEmesso al click su un elemento (dopo chiusura automatica del menu)
open—Emesso quando il menu si apre
close—Emesso quando il menu si chiude

Slot

SlotScopeDescrizione
header—Contenuto nell'intestazione del pannello menu (prima degli elementi)
item{ item: MobileNavItem }Template personalizzato per ogni elemento della lista
footer—Contenuto nel piede del pannello menu (dopo gli elementi)

Esempi

Controllo programmatico con v-model

Posizione left

Senza overlay

Elemento personalizzato

Colori hamburger personalizzati

Comportamento

  • Il click su un elemento non disabilitato chiude automaticamente il menu prima di emettere itemClick.
  • Gli elementi con to vengono resi come <RouterLink>; quelli con href come <a>. Il RouterLink è quello registrato da vue-router nell'app, risolto una volta sola: senza vue-router non compare più il warning «Failed to resolve component: RouterLink» a ogni render (dalla 1.24.0).
  • Il click sull'overlay chiude il menu.
  • La classe CSS position-top / position-left viene aggiunta al contenitore in base alla prop position.

Accessibilità

  • Il pulsante hamburger ha aria-label gestito tramite @pzeta/vue-i18n.
  • Gli elementi disabilitati hanno la classe disabled.

TypeScript

import type { MobileNavProps, MobileNavEmits, MobileNavItem } from '@pzeta/vue-components'