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

Accordion

Organiza información relacionada en secciones desplegables.

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

Uso

Proporciona items con un id único y estable, un title y contenido HTML opcional saneado. multiple permite varios paneles abiertos. Enlaza expandedKeys y acepta expandedKeysChange si la aplicación controla el estado, o deja expandedKeys sin enlazar y utiliza initialExpandedKeys una sola vez. Mantén esa elección durante la vida de la instancia. Los Templates de cabecera y cuerpo reciben el elemento y su estado expanded.

Ejemplos

Prueba el comportamiento y consulta el código ejecutable en Código.

Ejemplos
Los pedidos llegan en dos días laborables.

El panel abierto inicial es solo un valor de inicio. Esta instancia gestiona las siguientes aperturas.

Prueba y configura

Cambia las opciones, prueba el resultado y consulta su template generado. Abre Código para ver la implementación completa.

Prueba y configura
Los pedidos llegan en dos días laborables.

Abiertos: delivery ·

template.html
<neu-accordion
  [items]="items()"
  [multiple]="false"
  [bordered]="true"
  [expandedKeys]="expanded()"
  (expandedKeysChange)="expanded.set($event)"
  (panelToggle)="lastToggle.set($event.id + &quot;: &quot; + $event.expanded)"
/>

Datos y contenido

expandedKeysChange propone el array completo de claves abiertas. panelToggle comunica la acción individual como { id, expanded }. initialExpandedKeys no sustituye al estado aplicado de forma reactiva.

Accesibilidad y teclado

Tab llega a las cabeceras habilitadas. Intro o Espacio abre o cierra una sección. Las flechas arriba/abajo, Inicio y Fin mueven el foco entre cabeceras, omitiendo las deshabilitadas. El contenido cerrado es inerte. No anides controles interactivos en las cabeceras personalizadas.

Tecla
Acción
Tab Accede a las cabeceras habilitadas y a los controles de las secciones abiertas.
ArrowUp / ArrowDown Mueve el foco entre cabeceras habilitadas.
Home Enfoca la primera cabecera habilitada.
End Enfoca la última cabecera habilitada.
Enter Abre o cierra la sección enfocada.
Space Abre o cierra la sección enfocada.

API

Los Inputs y Outputs corresponden al paquete Core fijado. Los tipos con nombre enlazan a sus definiciones. Templates incluye ejemplos ejecutables de cada zona disponible.

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
borderedbooleantrue[bordered]Dibuja el borde exterior.
expandedKeysreadonly K[] | undefinedundefined[expandedKeys]Claves abiertas aplicadas; undefined elige el modo no controlado una vez.
initialExpandedKeysreadonly K[][][initialExpandedKeys]Claves iniciales, aplicadas una sola vez cuando se omite expandedKeys.
itemsreadonly T[][][items]Elementos con id único estable, title, contenido HTML opcional y disabled.
multiplebooleanfalse[multiple]Permite más de un panel abierto.

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
expandedKeysChangereadonly K[](expandedKeysChange)="onExpandedKeysChange($event)"Propone el array completo de claves abiertas.
panelToggleNeuAccordionPanelToggle<K>(panelToggle)="onPanelToggle($event)"Comunica el id del elemento y su estado expanded.

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
NeuAccordionBodyDirective

Cuerpo del panel

Ver ejemplo
Directiva pública de template

Utiliza let-item y let-expanded="expanded". La cabecera ya es un botón; coloca las acciones dentro del cuerpo.

ng-template[neuAccordionBody]

Contexto utilizado: $implicit: item, expanded: boolean

NeuAccordionHeaderDirective

Cabecera del panel

Ver ejemplo
Directiva pública de template

Utiliza let-item y let-expanded="expanded". La cabecera ya es un botón; coloca las acciones dentro del cuerpo.

ng-template[neuAccordionHeader]

Contexto utilizado: $implicit: item, expanded: boolean

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

Cabecera

NeuAccordionHeaderDirective

Cabecera
Los pedidos llegan en dos días laborables.

Cuerpo

NeuAccordionBodyDirective

Cuerpo

Los pedidos llegan en dos días laborables.

Solicitudes: 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 de superficie, texto, espaciado y foco. Comprueba el contenido en ambos temas y con anchos reducidos.

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-focus-ring Anillo normal del foco de teclado Compartido con otros consumidores de Core; limita el cambio a un ámbito. 0 0 0 var(--neu-focus-ring-width) rgba(0, 122, 255, 0.15)
--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-font-sans Tipografía del texto Compartido con otros consumidores de Core; limita el cambio a un ámbito. 'Inter', system-ui, -apple-system, BlinkMacSystemFont, sans-serif
--neu-radius-lg Radio de esquina Compartido con otros consumidores de Core; limita el cambio a un ámbito. 12px