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)
openEmesso quando il menu si apre
closeEmesso quando il menu si chiude

Slot

SlotScopeDescrizione
headerContenuto nell'intestazione del pannello menu (prima degli elementi)
item{ item: MobileNavItem }Template personalizzato per ogni elemento della lista
footerContenuto 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 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'