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

Menu

Presenta una lista vertical de acciones con grupos en línea, expansión controlada y contenido personalizado.

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

Uso

Define items con claves únicas y etiquetas legibles. children crea un grupo en línea; separator añade un separador, visible:false elimina una entrada y disabled impide activarla. icon se resuelve con el proveedor de iconos de tu aplicación. badge y shortcut añaden contexto compacto; shortcut es una indicación visual, no un atajo registrado.

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-menu
  [items]="items"
  ariaLabel="Navegación de ejemplo"
  [expandedKeys]="expandedKeys()"
  (expandedKeysChange)="expandedKeys.set($event)"
  (itemClick)="selectItem($event)"
/>

Activar desde código

Usa activate(item) para activar una acción desde tu aplicación. Un elemento habilitado sin hijos ejecuta su command opcional y emite itemClick; un grupo cambia la expansión. Los elementos deshabilitados, ocultos y los separadores no se pueden activar.

Activar desde código

Seleccionado: — · itemClick: 0 · Acciones: 0

Datos y contenido

Asigna expandedKeys y acepta expandedKeysChange para controlar los grupos abiertos. Omite expandedKeys para usar expansión local; los grupos en línea empiezan abiertos. Una hoja ejecuta su command opcional y emite itemClick. Activar una rama solo propone expansión. Conecta las acciones a tu aplicación mediante command o itemClick, incluida la navegación. activate(item) ofrece ese mismo flujo protegido para activar una acción desde código.

Accesibilidad y teclado

Tab entra en la lista. Arriba/abajo, Inicio/Fin y la búsqueda por letras mueven el foco entre elementos disponibles. Intro/Espacio activan una hoja; izquierda/derecha abren, entran o regresan desde un grupo según la dirección del texto. Elementos ocultos, separadores y acciones desactivadas quedan fuera del recorrido. Los Templates sustituyen el contenido, no el control nativo que lo envuelve.

Tecla
Acción
Tab Entra o sale de las acciones disponibles del menú.
ArrowUp / ArrowDown Recorre las acciones disponibles del nivel actual.
ArrowRight / ArrowLeft Entra o vuelve de un submenú; las direcciones se invierten en RTL.
Home Enfoca la primera acción disponible del nivel.
End Enfoca la última acción disponible del nivel.
Enter Activa la acción habilitada enfocada o abre su grupo.
Space Activa la acción habilitada enfocada o abre su grupo.
A–Z Busca acciones disponibles por su etiqueta.
Escape Cierra el submenú abierto más profundo; un menú emergente devuelve el foco al 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'Menu bar'[ariaLabel]Nombre accesible de la navegación/menú. Usa una etiqueta específica de esta región.
expandedKeysreadonly string[] | undefinedundefined[expandedKeys]Claves de ramas aplicadas; undefined activa la expansión gestionada por el componente.
itemsNeuMenuItem[][][items]Datos de acciones con claves únicas; children crea grupos. Core no modifica el array.
itemTemplateTemplateRef<{ $implicit: NeuMenuItem; }> | nullnull[itemTemplate]TemplateRef del contenido; recibe $implicit: NeuMenuItem y tiene prioridad sobre neuMenuItem.

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
expandedKeysChangestring[](expandedKeysChange)="onExpandedKeysChange($event)"Propone las próximas claves de ramas. Actualiza expandedKeys para aceptar un cambio controlado.
itemClickNeuMenuItem(itemClick)="onItemClick($event)"Emite la hoja/acción activada. El command opcional se ejecuta antes; las entradas desactivadas no se activan.

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
itemTemplateVer ejemplo Input de tipo TemplateRefTemplateRef<{ $implicit: NeuMenuItem$1; }> | null
NeuMenuItemDirectiveVer ejemplo Directiva pública de templateng-template[neuMenuItem]

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

Input TemplateRef

itemTemplate

Input TemplateRef

Seleccionado: — · itemClick: 0 · Acciones: 0

Contenido del elemento

NeuMenuItemDirective

Contenido del elemento

Seleccionado: — · itemClick: 0 · Acciones: 0

Métodos públicos

Nombre
Contrato
activateactivate(item: NeuMenuItem$1, originalEvent?: Event): void;

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-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-text-muted Etiquetas secundarias y contenido de ayuda Compartido con otros consumidores de Core; limita el cambio a un ámbito. #475569
--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)
--neu-shadow-sm Elevación de la superficie o capa Compartido con otros consumidores de Core; limita el cambio a un ámbito. 0 1px 3px rgba(15, 23, 42, 0.08), 0 1px 2px rgba(15, 23, 42, 0.04)