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

DataView

Explora una colección en lista, cuadrícula o tabla con búsqueda, orden y páginas.

Categoría
Datos y jerarquía
Import
@neural-ui/core/data-view
Selector
neu-data-view
import { NeuDataViewComponent } from '@neural-ui/core/data-view';

Uso

items contiene los datos de aplicación. Usa neuDataViewItem para renderizar registros estructurados; el contenido por defecto no es una tarjeta de dominio. searchFields permite buscar localmente y sortOptions nombra campos ordenables. Omite total/currentPage para paginación local; asigna ambos y procesa pageChange para cargar páginas remotas. modeChange propone el modo; aplícalo a mode. Los Templates sustituyen contenido, no el motor de páginas.

Ejemplos

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

Ejemplos
  • AtlasEU · 240 €
  • BirchUS · 180 €
  • CedarEU · 420 €

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
  • AtlasEU · 240 €
  • BirchUS · 180 €
  • CedarEU · 420 €

Eventos: 0

template.html
<neu-data-view
  (pageChange)="onPageChange($event)"
  [items]="items()"
  [mode]="'list'"
  (modeChange)="mode.set($event)"
  [modeLabels]="modes()"
  [loading]="false"
  [searchable]="true"
  [searchFields]="['name', 'region', 'amount']"
  [sortOptions]="sortOptions()"
  [pagination]="true"
  [pageSize]="3"
  [viewSwitcher]="true"
  [trackBy]="track"
  (pageChange)="record('pageChange', $event)"
  (searchChange)="record('searchChange', $event)"
  (sortChange)="record('sortChange', $event)"
  [emptyLabel]="'Sin proyectos'"
  [loadingLabel]="'Cargando proyectos'"
  [nextLabel]="'Siguiente'"
  [paginationAriaLabel]="'Páginas de proyectos'"
  [previousLabel]="'Anterior'"
  [searchAriaLabel]="'Buscar proyectos'"
  [searchPlaceholder]="'Buscar proyectos'"
  [sortAriaLabel]="'Ordenar proyectos'"
  [viewAriaLabel]="'Modo de vista'"
><ng-template neuDataViewItem let-item let-index="index"
    ><article class="remaining-data-item">
      <strong>{{ item.name }}</strong
      ><span>{{ item.region }} · {{ item.amount }} €</span>
    </article></ng-template
  ></neu-data-view
>

Estado y eventos

items contiene los datos de aplicación. Usa neuDataViewItem para renderizar registros estructurados; el contenido por defecto no es una tarjeta de dominio. searchFields permite buscar localmente y sortOptions nombra campos ordenables. Omite total/currentPage para paginación local; asigna ambos y procesa pageChange para cargar páginas remotas. modeChange propone el modo; aplícalo a mode. Los Templates sustituyen contenido, no el motor de páginas.

Accesibilidad y teclado

Tab alcanza búsqueda, orden, botones de modo y paginador. Intro/Espacio activa los botones; los controles personalizados conservan su comportamiento nativo.

Tecla
Acción
Tab Recorre búsqueda, ordenación, controles de vista y paginación.
Enter Activa el botón enfocado. Los templates de elementos conservan el comportamiento de sus controles.
Space Activa el botón enfocado. Los templates de elementos conservan el comportamiento de sus controles.

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
currentPagenumber | undefinedundefined[currentPage]Página aplicada, empezando en uno, para datos remotos; omítela para paginación local.
emptyLabelstring'No items found'[emptyLabel]Etiqueta de colección vacía. Tradúcela para tu aplicación.
itemsreadonly unknown[][][items]Colección aplicada de elementos. Claves y accesores estables identifican las entradas; el componente no modifica el array.
loadingbooleanfalse[loading]Muestra el estado de carga mientras la aplicación proporciona datos.
loadingLabelstring'Loading...'[loadingLabel]Mensaje o anuncio durante la carga de opciones.
modeNeuDataViewMode'list'[mode]Muestra los elementos en una lista o cuadrícula.
modeLabelsPartial<Record<NeuDataViewMode, string>>{}[modeLabels]Etiquetas visibles localizadas de los modos list, grid y table.
modesreadonly NeuDataViewMode[]['list', 'grid', 'table'][modes]Conjunto ordenado de modos ofrecidos por el selector de vista.
nextLabelstring'Next'[nextLabel]Etiqueta de navegación siguiente. Tradúcela para tu aplicación.
pageSizenumber9[pageSize]Cantidad positiva aplicada de registros por página.
paginationbooleantrue[pagination]Muestra la navegación por páginas de la colección.
paginationAriaLabelstring'Data view pagination'[paginationAriaLabel]Nombre accesible de la región de paginación.
previousLabelstring'Previous'[previousLabel]Etiqueta de navegación anterior. Tradúcela para tu aplicación.
searchablebooleantrue[searchable]Muestra el campo de búsqueda integrado.
searchAriaLabelstring'Search items'[searchAriaLabel]Etiqueta accesible o texto de ayuda del campo de búsqueda.
searchFieldsreadonly string[][][searchFields]Rutas de propiedades de registros incluidas en la búsqueda global local.
searchPlaceholderstring'Search...'[searchPlaceholder]Etiqueta accesible o texto de ayuda del campo de búsqueda.
sortAriaLabelstring'Sort items'[sortAriaLabel]Nombre accesible del selector de orden de la colección.
sortOptionsreadonly NeuDataViewSortOption[][][sortOptions]Opciones de ordenación con label, value que identifica el campo del elemento y direction opcional.
totalnumber | undefinedundefined[total]Cantidad total de registros, no de páginas.
trackBy(index: number, item: unknown) => unknown(index) => indexValor derivado[trackBy]Función de identidad estable que recibe el índice absoluto y el elemento.
viewAriaLabelstring'View mode'[viewAriaLabel]Nombre accesible del grupo de botones de modo de vista.
viewSwitcherbooleantrue[viewSwitcher]Muestra el control que ofrece los modos de vista configurados.

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
modeChangeNeuDataViewMode(modeChange)="onModeChange($event)"Propone un modo de vista. Aplícalo a mode para aceptar el cambio.
pageChangeNeuDataViewPageEvent(pageChange)="onPageChange($event)"Informa de la página seleccionada, empezando en 1, y del pageSize aplicado.
searchChangestring(searchChange)="onSearchChange($event)"Informa de la consulta actual; úsala para solicitar resultados remotos si procede.
sortChangestring(sortChange)="onSortChange($event)"Informa del campo de orden seleccionado.

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
NeuDataViewFooterDirectiveVer ejemplo Directiva pública de templateng-template[neuDataViewFooter]
NeuDataViewHeaderDirectiveVer ejemplo Directiva pública de templateng-template[neuDataViewHeader]
NeuDataViewItemDirectiveVer ejemplo Directiva pública de templateng-template[neuDataViewItem]

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

NeuDataViewItemDirective

NeuDataViewItemDirective

NeuDataViewItemDirective
  • AtlasEU · 240 €
  • BirchUS · 180 €
  • CedarEU · 420 €

Eventos: 0

NeuDataViewHeaderDirective

NeuDataViewHeaderDirective

NeuDataViewHeaderDirective

Directorio de proyectos

  • {"id":"atlas","name":"Atlas","region":"EU","amount":240}
  • {"id":"birch","name":"Birch","region":"US","amount":180}
  • {"id":"cedar","name":"Cedar","region":"EU","amount":420}

Eventos: 0

NeuDataViewFooterDirective

NeuDataViewFooterDirective

NeuDataViewFooterDirective
  • {"id":"atlas","name":"Atlas","region":"EU","amount":240}
  • {"id":"birch","name":"Birch","region":"US","amount":180}
  • {"id":"cedar","name":"Cedar","region":"EU","amount":420}

6 proyectos en esta colección

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-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-dark Tono oscuro de marca; texto de Button outline y ghost en el tema claro Compartido con otros consumidores de Core; limita el cambio a un ámbito. #005fcc
--neu-primary-fg Contenido dibujado sobre el fondo primario Compartido con otros consumidores de Core; limita el cambio a un ámbito. #ffffff
--neu-primary-solid Fondo de las acciones de marca sólidas Compartido con otros consumidores de Core; limita el cambio a un ámbito. #006ee6
--neu-primary-solid-fg Contenido de las acciones de marca sólidas Compartido con otros consumidores de Core; limita el cambio a un ámbito. #ffffff
--neu-primary-solid-hover Fondo de las acciones sólidas al pasar el puntero Compartido con otros consumidores de Core; limita el cambio a un ámbito. #005fcc
--neu-surface Superficie principal del campo, cabecera o control Compartido con otros consumidores de Core; limita el cambio a un ámbito. #ffffff