Angular カンバンボードコンポーネント | ng-hub-ui-board

ドラッグ&ドロップ、カスタムカードテンプレート、カラムワークフロー、CSS 変数を備えた Angular の Kanban ボードコンポーネント。業務ダッシュボード向けです。

API リファレンス

board の完全な仕様をここにまとめました。バインド、リッスン、プロジェクション、テーマ設定ができるすべてが一か所に集約されています。必要なものを接続し、好きなようにスタイリングしてください — standalone で signal フレンドリーです。

インプット

5 個のインプットで board を調整。通常の Angular @Input と同じようにバインドできます。

名前型デフォルト説明
boardBoardundefinedレンダリングするボード全体の定義:columns 配列に、コンポーネントが表示するカラムとカードのデータを保持するオブジェクトです。
boardLabelstring'Board'ボードのリストコンテナのアクセシブルな名前。
variant'primary' | 'success' | 'danger' | 'warning' | 'info' | stringundefinedドラッグ&ドロップのプレースホルダーのセマンティックアクセント。デザインシステム組み込みのアクセント、登録済みの任意のカスタムアクセント名、またはリテラルカラー(#hex、rgb()、oklch()、CSS の名前付きカラー)を受け付けます。未設定の場合は primary アクセントがデフォルトです。
columnSortingDisabledbooleanfalsetrue の場合、ボード全体でドラッグ&ドロップによるカラムの並べ替えが無効になります。
dragBehavior'ghost' | 'hide' | 'collapse''collapse'ドラッグ中の要素の見た目を制御します:'ghost' は半分の不透明度で表示したままにし、'hide' は非表示にしつつスペースを保持し、'collapse' は要素とそのスペースを完全に取り除きます。

アウトプット

board の動作に反応 — ロジックを接続できる 4 個のイベント。

名前型説明
onCardClickOutputEmitterRef<BoardCard>ボード内でカードがクリックされるたびに、クリックされたカードを発行します。
onCardMovedOutputEmitterRef<CardDragDropEvent>ポインタードラッグまたはキーボード操作でカードが移動されたとき(同じカラム内または別のカラムへ)に発行され、移動前後のインデックスと移動元/移動先のカラムを伴います。
onColumnMovedOutputEmitterRef<ColumnDragDropEvent>ドラッグ&ドロップでカラムが並べ替えられたときに発行され、並べ替え前後のカラムインデックスを伴います。
reachedEndOutputEmitterRef<ReachedEndEvent>カラム本文が最下部までスクロールされたときに、カラムのインデックスとデータを伴って発行されます — 無限スクロール読み込みを実現できます。

テンプレート

自分好みに — 7 個のテンプレートスロットでカスタムマークアップをプロジェクションできます。

名前説明サンプル
cardTptカードの既定の本体を置き換えます。テンプレートのコンテキストは item(カード)と column(そのカードが属する列)を公開するため、let-card="item" とバインドします。<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>
columnHeaderTpt列の既定のヘッダーを置き換えます。テンプレートのコンテキストは column を公開します。<ng-template columnHeaderTpt let-column="column"> <h5>{{ column.title }}</h5> <span>{{ column.cards.length }} cards</span> </ng-template>
columnFooterTpt列の本体の下にフッターを追加します。テンプレートのコンテキストは column を公開します。テンプレートがなければフッターは描画されません。<ng-template columnFooterTpt let-column="column"> <button type="button" (click)="addCard(column)">Add card</button> </ng-template>
cardPlaceholderカードのドラッグ中に表示されるカスタムのドロップ領域です。コンテキストは card(ドラッグ中のカード)と column(ドロップ先の列)を公開します。<ng-template cardPlaceholder let-card="card" let-column="column"> <div class="drop-zone">Drop "{{ card?.title }}" in {{ column.title }}</div> </ng-template>
columnPlaceholder列のドラッグ中に表示されるカスタムのドロップ領域です。コンテキストは column(ドラッグ中の列)を公開します。<ng-template columnPlaceholder let-column="column"> <div class="drop-zone">Drop column here</div> </ng-template>
cardDragPreviewカードのドラッグ中にカーソルへ追従するカスタム要素です。コンテキストは card と column(ドラッグ元の列)を公開します。<ng-template cardDragPreview let-card="card" let-column="column"> <div class="preview">{{ card.title }} — {{ column.title }}</div> </ng-template>
columnDragPreview列のドラッグ中にカーソルへ追従するカスタム要素です。コンテキストは column を公開します。<ng-template columnDragPreview let-column="column"> <div class="preview">{{ column.title }}</div> </ng-template>