Saltar al contenido principal
Neural UIv2.0.0Documentación
Ver v1 GitHub

MegaMenu

Combina enlaces, acciones y paneles agrupados en varias columnas en una navegación adaptable.

Categoría
Navegación
Import
@neural-ui/core/mega-menu
Selector
neu-mega-menu
import { NeuMegaMenuComponent } from '@neural-ui/core/mega-menu';

Uso

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.

Ejemplos

Prueba la interacción y abre Código para ver la implementación completa.

Ejemplos

Seleccionado: — · itemClick: 0 · Acciones: 0

Prueba y configura

Cambia las opciones, prueba el resultado y consulta el template actualizado. Abre Código para ver el modelo de datos y la implementación completa.

Prueba y configura

Seleccionado: — · itemClick: 0 · Acciones: 0

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'"
/>

Datos y contenido

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.

Accesibilidad y teclado

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.

API

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
ariaLabelstring'Main navigation'[ariaLabel]Nombre accesible de la navegación/menú. Usa una etiqueta específica de esta región.
ariaLabelledBystring | nullnull[ariaLabelledBy]Id de un elemento existente que nombra la navegación; tiene prioridad sobre ariaLabel.
breakpointstring'960px'[breakpoint]Umbral de ancho del viewport para la presentación móvil compacta, expresado en píxeles CSS.
directionNeuTextDirection'ltr'[direction]Dirección del texto y teclado: ltr o rtl.
disabledbooleanfalse[disabled]Desactiva el botón/navegación. Los estados disabled de cada elemento pertenecen a items.
idstring | undefinedSin valor por defecto[id]Id estable opcional del elemento. Conserva ids únicos si muestras varios menús.
itemsreadonly NeuMegaMenuItem[][][items]Entradas principales discriminadas: link, command o panel con columnas/grupos/hojas.
menuButtonAriaLabelstring'Toggle navigation'[menuButtonAriaLabel]Nombre accesible del botón móvil; tradúcelo para tu aplicación.
orientationNeuMegaMenuOrientation'horizontal'[orientation]Diseño principal y orientación de teclado: horizontal o vertical.
scrollHeightstring'min(28rem, 70vh)'[scrollHeight]Altura máxima del panel; su contenido se desplaza localmente cuando es necesario.

Outputs

Escucha un evento con (evento)="handler($event)". La tabla indica qué datos recibe tu función y cómo utilizarlos.

Nombre
Valor emitido
Uso en el template
Descripción
itemClickNeuMegaMenuItem | NeuMegaMenuLeaf(itemClick)="onItemClick($event)"Emite la hoja/acción activada. El command opcional se ejecuta antes; las entradas desactivadas no se activan.
mobileActiveChangeboolean(mobileActiveChange)="onMobileActiveChange($event)"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.

Nombre
Mecanismo
Contrato
NeuMegaMenuEndDirectiveVer ejemplo Directiva pública de templateng-template[neuMegaMenuEnd]
NeuMegaMenuItemDirectiveVer ejemplo Directiva pública de templateng-template[neuMegaMenuItem]
NeuMegaMenuStartDirectiveVer ejemplo Directiva pública de templateng-template[neuMegaMenuStart]

Cada ejemplo muestra un template diferente. Alterna entre Demo y Código para consultar su implementación, imports y estado.

Contenido inicial

NeuMegaMenuStartDirective

Contenido inicial

Seleccionado: — · itemClick: 0 · Acciones: 0

Contenido principal y de hojas

NeuMegaMenuItemDirective

Contenido principal y de hojas

Seleccionado: — · itemClick: 0 · Acciones: 0

Contenido final

NeuMegaMenuEndDirective

Contenido final

Seleccionado: — · itemClick: 0 · Acciones: 0

Public Types

Abre un tipo para consultar su definición y los campos de sus interfaces.

Estilos y tokens

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. 0 10px 30px rgba(15, 23, 42, 0.1), 0 4px 8px rgba(15, 23, 42, 0.04)