Angular Kanban-Board-Komponente | ng-hub-ui-board

Angular Kanban-Board-Komponente mit Drag-and-drop, individuellen Karten-Templates, Spalten-Workflows und CSS-Variablen für Business-Dashboards.

API-Referenz

Hier ist der vollständige Vertrag für board: alles, was du binden, abhören, projizieren und gestalten kannst, an einem Ort gesammelt. Verdrahte, was du brauchst, und gestalte, was du willst — es ist standalone und Signals-freundlich.

Inputs

Stelle board mit 5 Inputs ein. Binde sie wie jeden Angular-@Input.

NameTypStandardBeschreibung
boardBoardundefinedDie vollständige Board-Definition zum Rendern: ein Objekt, dessen columns-Array die Spalten- und Kartendaten enthält, die die Komponente anzeigt.
boardLabelstring'Board'Zugänglicher Name des Listen-Containers des Boards.
variant'primary' | 'success' | 'danger' | 'warning' | 'info' | stringundefinedSemantischer Akzent des Drag-and-Drop-Platzhalters. Akzeptiert die eingebauten Design-System-Akzente, jeden registrierten benutzerdefinierten Akzentnamen oder eine literale Farbe (#hex, rgb(), oklch(), benannte CSS-Farbe); ohne Angabe gilt der primäre Akzent.
columnSortingDisabledbooleanfalseWenn true, ist das Umsortieren von Spalten per Drag-and-Drop für das gesamte Board deaktiviert.
dragBehavior'ghost' | 'hide' | 'collapse''collapse'Steuert, wie das gezogene Element während des Ziehens aussieht: 'ghost' hält es bei halber Deckkraft sichtbar, 'hide' macht es unsichtbar, behält aber seinen Platz, und 'collapse' entfernt es samt seinem Platz vollständig.

Outputs

Reagiere darauf, was board tut — 4 Events, an die du deine Logik anknüpfen kannst.

NameTypBeschreibung
onCardClickOutputEmitterRef<BoardCard>Gibt bei jedem Klick auf eine Karte innerhalb des Boards die angeklickte Karte aus.
onCardMovedOutputEmitterRef<CardDragDropEvent>Wird ausgelöst, wenn eine Karte — innerhalb ihrer Spalte oder in eine andere Spalte — per Zeiger-Drag oder Tastatur verschoben wird, mit vorherigem/aktuellem Index sowie Quell- und Zielspalte.
onColumnMovedOutputEmitterRef<ColumnDragDropEvent>Wird ausgelöst, wenn Spalten per Drag-and-Drop umsortiert werden, mit dem vorherigen und dem aktuellen Spaltenindex.
reachedEndOutputEmitterRef<ReachedEndEvent>Wird ausgelöst, wenn ein Spaltenkörper bis zum Ende gescrollt wird, mit Spaltenindex und -daten — ermöglicht Infinite-Scroll-Laden.

Templates

Mach es zu deinem — 7 Template-Slots lassen dich eigenes Markup projizieren.

NameBeschreibungBeispiel
cardTptErsetzt den Standardinhalt der Karte. Der Template-Kontext stellt item (die Karte) und column (die zugehörige Spalte) bereit, daher let-card="item" binden.<hub-board [board]="board()"> <ng-template cardTpt let-card="item" let-column="column"> <strong>{{ card.title }}</strong> <small>{{ column.title }}</small> </ng-template> </hub-board>
columnHeaderTptErsetzt den Standard-Spaltenkopf. Der Template-Kontext stellt column bereit.<ng-template columnHeaderTpt let-column="column"> <h5>{{ column.title }}</h5> <span>{{ column.cards.length }} cards</span> </ng-template>
columnFooterTptFügt unter dem Spalteninhalt eine Fußzeile ein. Der Template-Kontext stellt column bereit; ohne Template wird keine Fußzeile gerendert.<ng-template columnFooterTpt let-column="column"> <button type="button" (click)="addCard(column)">Add card</button> </ng-template>
cardPlaceholderEigene Ablagezone, die beim Ziehen einer Karte angezeigt wird. Der Kontext stellt card (die gezogene Karte) und column (die Zielspalte) bereit.<ng-template cardPlaceholder let-card="card" let-column="column"> <div class="drop-zone">Drop "{{ card?.title }}" in {{ column.title }}</div> </ng-template>
columnPlaceholderEigene Ablagezone, die beim Ziehen einer Spalte angezeigt wird. Der Kontext stellt column (die gezogene Spalte) bereit.<ng-template columnPlaceholder let-column="column"> <div class="drop-zone">Drop column here</div> </ng-template>
cardDragPreviewEigenes Element, das beim Ziehen einer Karte dem Cursor folgt. Der Kontext stellt card und column (die Ausgangsspalte) bereit.<ng-template cardDragPreview let-card="card" let-column="column"> <div class="preview">{{ card.title }} — {{ column.title }}</div> </ng-template>
columnDragPreviewEigenes Element, das beim Ziehen einer Spalte dem Cursor folgt. Der Kontext stellt column bereit.<ng-template columnDragPreview let-column="column"> <div class="preview">{{ column.title }}</div> </ng-template>