Navigation

ContextMenu

Menu contestuale attivato dal click destro del mouse. Supporta submenu annidati, modalità globale per tutto il documento, attivazione programmatica e posizionamento automatico con rilevamento bordi.

Import

import { ContextMenu } from '@pzeta/vue-components'
import type { MenuItem } from '@pzeta/vue-components'

Esempio Base

Props

PropTipoDefaultDescrizione
modelMenuItem[][]Array di elementi del menu
appendTo'body' | 'self' | string | HTMLElement'body'Elemento a cui appendere il menu
breakpointstringundefinedBreakpoint per nascondere il menu
globalbooleanfalseSe true, aggiunge un listener contextmenu globale su tutto il documento
autoZIndexbooleantrueGestione automatica dello z-index
baseZIndexnumber0Valore base z-index
tabindexnumber0Indice di tabulazione
ariaLabelstringundefinedLabel ARIA del menu
ariaLabelledbystringundefinedID dell'elemento che fornisce il label ARIA

Emits

EventoPayloadDescrizione
focusFocusEventEmesso quando il menu riceve il focus
blurFocusEventEmesso quando il menu perde il focus
beforeShowEmesso prima che il menu diventi visibile
beforeHideEmesso prima che il menu venga nascosto
showEmesso quando il menu è visibile
hideEmesso quando il menu è nascosto

Slot

SlotScopeDescrizione
item{ item: MenuItem; label?: string; props: Record<string, unknown>; hasSubmenu: boolean }Template personalizzato per ogni voce
itemicon{ item: MenuItem; class: string }Template personalizzato per l'icona della voce
submenuicon{ active: boolean }Template personalizzato per l'icona del submenu

Esempi

Modalità globale (tutto il documento)

Attivazione programmatica

Con submenu annidati

Template voce personalizzato

Metodi esposti (ref)

MetodoFirmaDescrizione
show(event: MouseEvent) => voidMostra il menu alla posizione del mouse
hide() => voidNasconde il menu
toggle(event: MouseEvent) => voidAlterna la visibilità del menu

Comportamento

  • Il menu si posiziona automaticamente alle coordinate del click destro con rilevamento dei bordi dello schermo.
  • Quando vengono aperti più ContextMenu contemporaneamente, il precedente si chiude automaticamente.
  • La chiusura avviene al click fuori dall'area del menu.
  • I link con target="_blank" ricevono automaticamente rel="noopener noreferrer".

Accessibilità

  • L'evento contextmenu viene prevenuto sull'area target.
  • Il menu supporta navigazione da tastiera.

TypeScript

import type {
  ContextMenuProps,
  ContextMenuEmits,
  ContextMenuSlots,
  ContextMenuExpose,
  ContextMenuItemSlotProps,
} from '@pzeta/vue-components'