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

VirtualList

Renderiza una ventana de una lista grande de altura fija usando claves estables.

Categoría
Datos y jerarquía
Import
@neural-ui/core/virtual-list
Selector
neu-virtual-list
import { NeuVirtualListComponent } from '@neural-ui/core/virtual-list';

Uso

Define itemKey como una clave única estable de texto o número. itemSize es la altura real de fila en píxeles; el Template debe respetarla. visibleRows controla la ventana. rangeChange informa del rango renderizado, no solicita datos. Sustituye items cuando cambien los datos; no uses índices como clave para registros reordenables.

Ejemplos

Prueba esta interacción gestionada por la aplicación. Código incluye los eventos y los datos iniciales.

Ejemplos
1 · Proyecto 1
2 · Proyecto 2
3 · Proyecto 3
4 · Proyecto 4
5 · Proyecto 5
6 · Proyecto 6
7 · Proyecto 7
8 · Proyecto 8

Eventos: 0

Prueba y configura

Cambia las opciones públicas, prueba el resultado y consulta el template actualizado. Código contiene la implementación ejecutable completa.

Prueba y configura
1 · Proyecto 1
2 · Proyecto 2
3 · Proyecto 3
4 · Proyecto 4
5 · Proyecto 5
6 · Proyecto 6
7 · Proyecto 7
8 · Proyecto 8

Eventos: 0

template.html
<neu-virtual-list
  [items]="items()"
  [itemKey]="itemKey"
  [visibleRows]="6"
  [itemSize]="48"
  (rangeChange)="record('rangeChange', $event)"
  [emptyLabel]="'Sin proyectos'"
><ng-template
    [neuVirtualItem]="items()"
    [neuVirtualItemKey]="itemKey"
    let-item
    let-index="index"
    ><div class="remaining-virtual-row">
      {{ index + 1 }} · {{ item.label }}
    </div></ng-template
  ></neu-virtual-list
>

Estado y eventos

Define itemKey como una clave única estable de texto o número. itemSize es la altura real de fila en píxeles; el Template debe respetarla. visibleRows controla la ventana. rangeChange informa del rango renderizado, no solicita datos. Sustituye items cuando cambien los datos; no uses índices como clave para registros reordenables.

Accesibilidad y teclado

Enfoca la región de scroll y usa el desplazamiento del navegador. Los controles del Template conservan su comportamiento nativo de teclado.

Tecla
Acción
Tab Accede a la región de desplazamiento y a los controles enfocables de los templates de elementos.
ArrowUp / ArrowDown Desplaza la región mediante el comportamiento nativo cuando tiene el foco.
PageUp / PageDown Desplaza una página cada vez en la región enfocada.

API

Inputs, modelos y Outputs se extraen del paquete Core instalado. Los tipos públicos enlazan a sus definiciones. Los Templates incluyen ejemplos ejecutables.

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
emptyLabelstring'No results'[emptyLabel]Etiqueta de colección vacía. Tradúcela para tu aplicación.
itemKey(item: T) => KObligatorio[itemKey]Función que devuelve una clave única estable para cada fila virtual.
itemsreadonly T[][][items]Colección aplicada de elementos. Claves y accesores estables identifican las entradas; el componente no modifica el array.
itemSizenumber48[itemSize]Altura fija de fila en píxeles. El contenido del Template debe respetarla.
visibleRowsnumber10[visibleRows]Número de filas que determina la altura de la ventana virtual.

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
rangeChangeNeuVirtualListRange(rangeChange)="onRangeChange($event)"Rango visible actual del área virtual.

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
NeuVirtualItemDirectiveVer ejemplo Directiva pública de templateng-template[neuVirtualItem]

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

NeuVirtualItemDirective

NeuVirtualItemDirective

NeuVirtualItemDirective
1 · Proyecto 1
2 · Proyecto 2
3 · Proyecto 3
4 · Proyecto 4
5 · Proyecto 5
6 · Proyecto 6
7 · Proyecto 7
8 · Proyecto 8

Eventos: 0

Public Types

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

Estilos y tokens

Usa los tokens públicos de la referencia. El diseño del contenedor pertenece a tu aplicación; comprueba el resultado en modo claro y oscuro y en espacios estrechos.

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-text-muted Etiquetas secundarias y contenido de ayuda Compartido con otros consumidores de Core; limita el cambio a un ámbito. #475569