Cada elemento principal tiene kind: link, command o panel. Un enlace necesita routerLink o url; una acción necesita su callback; un panel contiene columnas, grupos y hojas de enlace/acción. Asigna claves estables a todos los niveles. orientation elige el diseño horizontal o vertical; breakpoint activa la navegación móvil y scrollHeight limita la altura del panel.
Los datos estructurados, callbacks y templates se muestran en los ejemplos y en la API.
El código añade las opciones avanzadas cuando difieren del valor predeterminado. Los datos y valores de esta configuración aparecen en el estado del template.
Las opciones de Core actualizan este template. Los iconos, contadores y acciones desactivadas pertenecen al modelo de datos que se muestra en Código.
template.html
<neu-mega-menu
[items]="items"
ariaLabel="Navegación de ejemplo"
orientation="horizontal"
direction="ltr"
breakpoint="960px"
scrollHeight="min(28rem, 70vh)"
[disabled]="false"
(itemClick)="selectItem($event)"
(mobileActiveChange)="mobile.set($event)"
[menuButtonAriaLabel]="'Mostrar u ocultar navegación de ejemplo'"
/>
Estos valores corresponden a la vista previa actual. Los handlers, imports de Core y templates completos están en Código.
itemClick emite los enlaces o acciones activados, no los paneles que solo se despliegan. mobileActiveChange comunica el estado del menú móvil. Core gestiona apertura y foco y respeta las entradas desactivadas; la aplicación aporta los destinos y las acciones. Start y End añaden contenido alrededor. Item recibe item, active, index y level (0 para principales, 3 para hojas), no un callback que debas ejecutar.
Nombra la navegación y traduce menuButtonAriaLabel. Usa Tab/Mayús+Tab para recorrer enlaces y botones nativos; Intro activa ambos y Espacio solo los botones. Tab desde el activador de un panel abierto en escritorio entra en su primer enlace o botón disponible. Escape cierra el panel y devuelve el foco al activador; sobre el botón móvil cierra la navegación móvil. Las flechas e Inicio/Fin conservan el comportamiento del navegador: es navegación, no un menú de aplicación. Item permanece dentro de los enlaces/botones de Core; Start/End pueden contener sus propios controles accesibles.
Tecla
Acción
Tab
Recorre las acciones principales, enlaces del panel abierto y controles móviles disponibles.
Arrow keys
Conservan el desplazamiento nativo del navegador; esta navegación no añade selección mediante flechas.
Home / End
Conservan el comportamiento nativo; usa Tab y Mayús+Tab para recorrer enlaces y botones.
Enter
Activa el enlace o botón nativo enfocado, incluido el activador de un panel.
Space
Activa el botón o activador de panel enfocado; los enlaces nativos usan Intro.
Escape
Cierra el panel y devuelve el foco a su activador.
Inputs y Outputs corresponden al paquete instalado. Los tipos con nombre enlazan a sus definiciones. Cada Template/proyección disponible tiene un ejemplo ejecutable.
Inputs
Configura el componente con [propiedad]="valor". Tu aplicación proporciona estos valores; el componente no debe reemplazar el estado que le pasas.
Nombre
Tipo
Por defecto
Uso en el template
Descripción
ariaLabel
string
'Main navigation'
[ariaLabel]
Nombre accesible de la navegación/menú. Usa una etiqueta específica de esta región.
ariaLabelledBy
string | null
null
[ariaLabelledBy]
Id de un elemento existente que nombra la navegación; tiene prioridad sobre ariaLabel.
breakpoint
string
'960px'
[breakpoint]
Umbral de ancho del viewport para la presentación móvil compacta, expresado en píxeles CSS.
direction
NeuTextDirection
'ltr'
[direction]
Dirección del texto y teclado: ltr o rtl.
disabled
boolean
false
[disabled]
Desactiva el botón/navegación. Los estados disabled de cada elemento pertenecen a items.
id
string | undefined
Sin valor por defecto
[id]
Id estable opcional del elemento. Conserva ids únicos si muestras varios menús.
Comunica si está abierta la navegación móvil; no es un Input de estado controlado.
Templates
ng-content proyecta contenido dentro del componente. Los inputs TemplateRef reciben un template; las directivas ng-template identifican templates con un contexto tipado. Una directiva compartida en el entrypoint no es necesariamente un slot de este componente.
Utiliza los tokens públicos disponibles. La resolución de iconos y el diseño que rodea al ejemplo pertenecen a la aplicación. Comprueba ambos temas y pantallas estrechas.
Tokens específicos
Este componente utiliza tokens compartidos del tema en lugar de tokens específicos.
Tokens compartidos utilizados
Sobrescríbelos en un contenedor local para afectar a este ejemplo. Una modificación en :root afecta a los demás componentes que utilizan el mismo token.
Token
Efecto aquí
Otros efectos
Valor / alternativa
--neu-border
Bordes normales de controles y celdas
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
rgba(15, 23, 42, 0.08)
--neu-primary
Color de marca en controles activos y énfasis
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
#007aff
--neu-primary-soft
Superficie tenue de selección o estado activo
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
var(--neu-primary-50)
--neu-surface
Superficie principal del campo, cabecera o control
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
#ffffff
--neu-surface-2
Superficies secundarias y filas alternas
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
#f1f5f9
--neu-text
Color del texto principal y de los iconos que lo heredan
Compartido con otros consumidores de Core; limita el cambio a un ámbito.
#0f172a
--neu-shadow-lg
Elevación de la superficie o capa
Compartido con otros consumidores de Core; limita el cambio a un ámbito.