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

Kanban

Organiza tarjetas en columnas de trabajo con propuestas de movimiento accesibles.

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

Uso

Columnas y tarjetas necesitan ids únicos. cardMove distingue reordenación de transferencia entre columnas; aplica la propuesta sustituyendo columns. showCounts y showWipLimit controlan metadatos. wipLimit comunica capacidad; tu aplicación decide si acepta un movimiento. La interacción no guarda tareas en servidor. Los tableros anchos se desplazan dentro de su propia región.

Ejemplos

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

Ejemplos

Para mover una tarjeta con el teclado, enfócala y pulsa Espacio o Intro. Usa las teclas de flecha, Inicio o Fin para elegir un destino; pulsa Espacio o Intro para confirmar, o Escape para cancelar. Los botones Mover ofrecen una alternativa mediante clic al arrastre.

Pendientes

2 2/3

En curso

1 1/2

Terminadas

1

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

Para mover una tarjeta con el teclado, enfócala y pulsa Espacio o Intro. Usa las teclas de flecha, Inicio o Fin para elegir un destino; pulsa Espacio o Intro para confirmar, o Escape para cancelar. Los botones Mover ofrecen una alternativa mediante clic al arrastre.

Pendientes

2 2/3

En curso

1 1/2

Terminadas

1

Eventos: 0

template.html
<neu-kanban
  [columns]="localizedColumns()"
  [columnWidth]="'240px'"
  [showCounts]="true"
  [showWipLimit]="true"
  (cardMove)="move($event)"
  [moveButtonLabel]="'Mover'"
/>

Estado y eventos

Columnas y tarjetas necesitan ids únicos. cardMove distingue reordenación de transferencia entre columnas; aplica la propuesta sustituyendo columns. showCounts y showWipLimit controlan metadatos. wipLimit comunica capacidad; tu aplicación decide si acepta un movimiento. La interacción no guarda tareas en servidor. Los tableros anchos se desplazan dentro de su propia región.

Accesibilidad y teclado

Usa Mover y sus controles de dirección para mover tarjetas sin arrastrar. Escape cancela el movimiento activo.

Tecla
Acción
Tab Recorre las acciones de las tarjetas y los controles para moverlas.
Enter Activa la acción Mover o el control de destino enfocado sin arrastrar.
Space Activa la acción Mover o el control de destino enfocado sin arrastrar.
Escape Cancela el movimiento activo.

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
columnsreadonly NeuKanbanColumn[][][columns]Columnas ordenadas con ids estables, títulos, arrays de tarjetas y límites WIP opcionales. Sustitúyelas para aceptar un movimiento.
columnWidthstring'320px'[columnWidth]Ancho CSS de cada columna Kanban, incluida la unidad.
moveButtonLabelstring'Move'[moveButtonLabel]Etiqueta visible y accesible para mover una tarjeta con teclado.
showCountsbooleantrue[showCounts]Muestra el número de tarjetas de cada columna Kanban.
showWipLimitbooleantrue[showWipLimit]Muestra el límite de trabajo en curso configurado en la cabecera.

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
cardMoveNeuKanbanCardMove(cardMove)="onCardMove($event)"Propone una reordenación o transferencia entre columnas. Sustituye columns para aceptarla.

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

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-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-error-bg Fondo de estados de error o peligro Compartido con otros consumidores de Core; limita el cambio a un ámbito. #fee2e2
--neu-error-text Texto de error y de Button danger outline/ghost en ambos temas Compartido con otros consumidores de Core; limita el cambio a un ámbito. #991b1b
--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