Skip to Content

Kanban

드래그 앤 드롭을 지원하는 칸반 보드 컴포넌트


개요

KanbanBoard 컴포넌트는 flat tasks 배열과 groupBy 속성을 사용하여 태스크를 컬럼별로 자동 분류하는 칸반 보드입니다. @atlaskit/pragmatic-drag-and-drop 기반의 카드/컬럼 드래그 앤 드롭, 커스텀 카드 렌더링, 카드/컬럼 추가 등을 지원합니다.

주요 특징

  • 카드 드래그 앤 드롭: 카드를 다른 컬럼으로 이동
  • 컬럼 드래그 앤 드롭: 컬럼 순서 변경
  • 커스텀 카드 렌더링: renderCard prop으로 자유로운 카드 UI
  • 드래그 핸들: DragHandleProps로 핸들 기반 드래그
  • 카드/컬럼 추가: showAddCard, showAddColumn 지원
  • 동적 그룹핑: groupBy에 문자열 키 또는 함수 전달
  • 디자인 토큰: 테마 커스터마이징 지원

기본 상태

기본 카드 렌더링(renderCard 미지정)을 사용하는 칸반 보드입니다. task의 title 또는 id가 카드에 표시됩니다.

To Do2
캠페인 기획서 작성
고객 세그먼트 분석
In Progress3
여름 캠페인 콘텐츠
A/B 테스트 설정
이메일 템플릿 디자인
In Review1
VIP 혜택 카피라이팅
Completed2
6월 성과 리포트
신규 세그먼트 생성

드래그 앤 드롭 / 커스텀 카드 / 카드·컬럼 추가

카드 드래그(핸들 기반), 컬럼 드래그, 커스텀 renderCard, 카드/컬럼 추가 버튼, 컬럼 메뉴를 모두 포함하는 인터랙티브 보드입니다.

To Do2
캠페인 기획서 작성High
2024-07-15
고객 세그먼트 분석Normal
2024-07-18
In Progress3
여름 캠페인 콘텐츠High
2024-07-12
A/B 테스트 설정Normal
2024-07-14
이메일 템플릿 디자인Low
2024-07-16
In Review1
VIP 혜택 카피라이팅High
2024-07-15
Completed2
6월 성과 리포트Normal
2024-07-08
신규 세그먼트 생성Low
2024-07-05

빈 보드

태스크가 없는 빈 보드입니다. 각 컬럼에 “Drop here” placeholder가 표시됩니다.

To Do0
Drop here
In Progress0
Drop here
Done0
Drop here

동적 그룹핑 (groupBy)

groupBy에 다른 키를 전달하여 우선순위별 등 다양한 기준으로 그룹핑할 수 있습니다.

High Priority3
캠페인 기획서 작성High
2024-07-15
여름 캠페인 콘텐츠High
2024-07-12
VIP 혜택 카피라이팅High
2024-07-15
Normal Priority3
고객 세그먼트 분석Normal
2024-07-18
A/B 테스트 설정Normal
2024-07-14
6월 성과 리포트Normal
2024-07-08
Low Priority2
이메일 템플릿 디자인Low
2024-07-16
신규 세그먼트 생성Low
2024-07-05

API Reference

Props

PropTypeDefaultDescription
columnsKanbanColumnDef[]-컬럼 정의 배열
tasksTTask[]-태스크 배열 (flat)
groupBystring | ((task: TTask) => string)-태스크를 컬럼에 분류하는 키/함수
itemKeystring | ((task: TTask) => string)"id"태스크 고유 키
renderCard(task, columnId, dragHandleProps) => ReactNode기본 카드커스텀 카드 렌더링 함수
draggablebooleantrue카드 드래그 활성화
columnDraggablebooleantrue컬럼 드래그 활성화
showAddCardbooleantrue카드 추가 버튼 표시
addCardLabelstring"Add Task"카드 추가 버튼 라벨
showAddColumnbooleanfalse컬럼 추가 버튼 표시
addColumnLabelstring"Add Column"컬럼 추가 버튼 라벨

Events

EventTypeDescription
onTaskClick(task: TTask, columnId: string) => void태스크 클릭 시
onTaskAdd(columnId: string) => void카드 추가 클릭 시
onTaskMove(result: KanbanDropResult) => void카드 드래그 완료 시
onColumnMenuClick(columnId: string) => void컬럼 메뉴 클릭 시
onColumnAdd() => void컬럼 추가 클릭 시
onColumnMove(result: KanbanColumnMoveResult) => void컬럼 드래그 완료 시

KanbanColumnDef

PropTypeDescription
idstring컬럼 고유 ID
titlestring컬럼 제목
colorstring컬럼 색상 (dot)

KanbanDropResult

PropTypeDescription
taskIdstring이동된 태스크 ID
sourceColumnIdstring출발 컬럼 ID
targetColumnIdstring도착 컬럼 ID
targetIndexnumber도착 위치 인덱스

KanbanColumnMoveResult

PropTypeDescription
columnIdstring이동된 컬럼 ID
sourceIndexnumber출발 위치 인덱스
targetIndexnumber도착 위치 인덱스

접근성

권장 사항

  • ✅ 카드에 의미 있는 텍스트 콘텐츠 제공
  • ✅ 드래그 핸들에 시각적 아이콘 사용 (GripVertical 등)
  • ❌ 드래그만으로 기능 제공하지 않기 (키보드 대안 고려)
Last updated on