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

TimelineGrid

Organiza actividades por filas y columnas temporales con selección controlada.

Categoría
Datos y jerarquía
Import
@neural-ui/core/timeline-grid
Selector
neu-timeline-grid
import { NeuTimelineGridComponent } from '@neural-ui/core/timeline-grid';

Uso

Define columnas con ids estables, etiquetas y descripciones opcionales. Cada fila aporta sus actividades; start identifica una columna y span ocupa columnas consecutivas. La cuadrícula ajusta span a las columnas disponibles e ignora actividades cuyo start no existe. Usa tone, subtitle y meta para describirlas. minColumnWidth conserva columnas legibles y el calendario se desplaza localmente en pantallas estrechas.

Ejemplos

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

Ejemplos

Selecciona una actividad o una franja disponible. En pantallas estrechas, desplaza este calendario horizontalmente para ver todos los días.

Lunes
Martes
Miércoles
DiseñoEquipo de producto
Desarrollo

Actividad seleccionada: — · Franja seleccionada: — / —

Prueba y configura

Cambia las opciones, prueba el resultado y consulta el template actualizado. Código contiene el ejemplo ejecutable completo.

Prueba y configura

Selecciona una actividad o una franja disponible. En pantallas estrechas, desplaza este calendario horizontalmente para ver todos los días.

Lunes
Martes
Miércoles
DiseñoEquipo de producto
Desarrollo

Actividad seleccionada: — · Franja seleccionada: — / —

Template generado con tus opciones actuales. Abre Código para consultar el ejemplo completo.

template.html
<neu-timeline-grid
  [columns]="columns"
  [rows]="rows"
  density="normal"
  minColumnWidth="112px"
  [stickyLabels]="true"
  [selectedItemId]="selectedItemId()"
  [selectedSlot]="selectedSlot()"
  (itemClick)="chooseItem($event)"
  (slotClick)="chooseSlot($event)"
/>
rows.ts
import type { NeuTimelineGridRow } from '@neural-ui/core/timeline-grid';

const rows: readonly NeuTimelineGridRow[] = [
  {
    "id": "design",
    "label": "Diseño",
    "description": "Equipo de producto",
    "items": [
      {
        "id": "research",
        "title": "Investigación",
        "start": "mon",
        "span": 2,
        "tone": "info",
        "subtitle": "Entrevistas"
      }
    ]
  },
  {
    "id": "engineering",
    "label": "Desarrollo",
    "items": [
      {
        "id": "review",
        "title": "Revisión",
        "start": "tue",
        "tone": "success"
      },
      {
        "id": "release",
        "title": "Entrega",
        "start": "wed",
        "tone": "warning"
      }
    ]
  }
];

Datos y contenido

itemClick y slotClick comunican la activación; no aplican la selección automáticamente. Actualiza selectedItemId o selectedSlot para mostrar lo que acepta tu aplicación. Limpia el otro valor si la selección de actividad y franja debe ser excluyente. Este componente presenta datos; no implementa arrastre ni edición. No tiene Templates.

Accesibilidad y teclado

Las actividades y franjas son botones nativos nombrados a partir de su fila y contenido. Usa Tab para acceder e Intro o Espacio para activarlos. Las selecciones aplicadas exponen aria-pressed. El área desplazable recibe foco por teclado; stickyLabels mantiene visibles los nombres de fila.

Tecla
Acción
Tab Recorre la región de desplazamiento y los botones habilitados de elementos o franjas.
Enter Activa el elemento o franja enfocados; la selección aplicada controla aria-pressed.
Space Activa el elemento o franja enfocados; la selección aplicada controla aria-pressed.

API

Inputs y Outputs corresponden al paquete instalado. Los tipos con nombre enlazan a sus definiciones. Cada Template disponible tiene un ejemplo con Demo y Código.

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
columnsreadonly NeuTimelineGridColumn[][][columns]Ids estables, etiquetas y descripciones de columnas ordenadas.
densityNeuDensity'normal'[density]Espaciado de filas: compact, normal o relaxed.
minColumnWidthstring'112px'[minColumnWidth]Ancho mínimo de columna como dimensión CSS.
rowsreadonly NeuTimelineGridRow[][][rows]Filas con nombre y actividades que referencian ids de columna.
selectedItemIdstring | nullnull[selectedItemId]Id de actividad aplicado; null indica ninguna.
selectedSlotNeuTimelineGridSlotSelection | nullnull[selectedSlot]Par rowId/columnId aplicado; null indica ninguno.
stickyLabelsbooleantrue[stickyLabels]Mantiene las etiquetas de fila al desplazar horizontalmente.

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
itemClickNeuTimelineGridItem(itemClick)="onItemClick($event)"Comunica el objeto de actividad activada.
slotClickNeuTimelineGridSlotSelection(slotClick)="onSlotClick($event)"Comunica el par rowId/columnId activado.

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.

Este componente no expone proyección de contenido ni templates públicos de personalización.

Public Types

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

Estilos y tokens

Personaliza los tokens públicos disponibles y comprueba ambos temas. Las ilustraciones y el estado de los ejemplos no son Inputs de Core.

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-error Color del campo no válido o de la acción de peligro Compartido con otros consumidores de Core; limita el cambio a un ámbito. #dc2626
--neu-primary Color de marca en controles activos y énfasis Compartido con otros consumidores de Core; limita el cambio a un ámbito. #007aff
--neu-radius Radio de las esquinas del control Compartido con otros consumidores de Core; limita el cambio a un ámbito. 8px
--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