컴포넌트/TreeView

TreeView

폴더 구조나 카테고리 계층을 표시하는 트리 뷰 컴포넌트입니다. 파일 탐색기, 사이드바 네비게이션, 조직도 등에 활용할 수 있습니다.

설치

Terminal
npx @msub-core/ui-cli add tree-view

사용법

TSX
import { TreeView } from "@msub-core/ui/components/tree-view"

function MyComponent() {
  const data = [
    {
      id: "1",
      label: "폴더 1",
      children: [
        { id: "1-1", label: "파일 1", isLeaf: true },
        { id: "1-2", label: "파일 2", isLeaf: true },
      ],
    },
  ]

  return (
    <TreeView
      data={data}
      selectionMode="single"
    />
  )
}

기본

문서
업무 문서
개인 문서
사진
휴가
가족
2023년
2024년
비디오
PropTypeDefaultRequiredDescription
dataTreeNodeData[]-No트리 데이터 배열
selectionMode"single" | "multi" | "none""single"No선택 모드
selectedIdsstring[]-No선택된 노드 ID (controlled)
defaultSelectedIdsstring[][]No기본 선택된 노드 ID (uncontrolled)
expandedIdsstring[]-No확장된 노드 ID (controlled)
defaultExpandedIdsstring[][]No기본 확장된 노드 ID (uncontrolled)
onSelectChange(ids: string[]) => void-No선택 변경 핸들러
onExpandChange(ids: string[]) => void-No확장 변경 핸들러
showCheckboxbooleanfalseNo체크박스 표시 여부
variant"default" | "outline" | "ghost""default"No스타일 변형
size"sm" | "default" | "lg""default"No크기
showIndentGuidesbooleanfalseNo들여쓰기 가이드 라인 표시
enableDragDropbooleanfalseNo드래그 앤 드롭 활성화
onNodeDrop(draggedId: string, targetId: string) => void-No노드 드롭 핸들러
onLoadChildren(nodeId: string) => Promise<TreeNodeData[]>-No비동기 자식 로드 핸들러
filter(node: TreeNodeData) => boolean-No필터 함수 (검색 기능)

크기

sm
문서
업무 문서
개인 문서
사진
휴가
비디오
default
문서
업무 문서
개인 문서
사진
휴가
비디오
lg
문서
업무 문서
개인 문서
사진
휴가
비디오

변형

default
문서
업무 문서
개인 문서
사진
휴가
비디오
outline
문서
업무 문서
개인 문서
사진
휴가
비디오
ghost
문서
업무 문서
개인 문서
사진
휴가
비디오

선택 모드

선택 없음 (none)
문서
업무 문서
개인 문서
사진
휴가
비디오
단일 선택 (single)
문서
업무 문서
개인 문서
사진
휴가
비디오
다중 선택 (multi)
문서
업무 문서
개인 문서
사진
휴가
가족
2023년
2024년
비디오

선택된 항목: 2-1, 2-2-1

체크박스

문서
업무 문서
개인 문서
사진
휴가
가족
2023년
2024년
비디오

선택된 항목: 2-1, 2-2-1

인덴트 가이드

문서
업무 문서
개인 문서
사진
휴가
가족
2023년
2024년
비디오

들여쓰기 가이드 라인이 표시되어 계층 구조를 더 쉽게 파악할 수 있습니다.

커스텀 아이콘

이미지
photo.jpg
비디오
movie.mp4
음악
song.mp3

비동기 로딩

루트 폴더
문서

폴더를 펼치면 서버에서 하위 항목을 비동기로 로드합니다.

드래그 앤 드롭

project
src
components
button.tsx
input.tsx
app.tsx
package.json
README.md

노드를 드래그하여 다른 위치로 이동할 수 있습니다. (콘솔에서 로그 확인)

검색/필터

검색어를 입력하면 일치하는 항목만 표시됩니다.

문서
업무 문서
개인 문서
사진
휴가
가족
2023년
2024년
비디오

파일 탐색기 예제

VSCode 스타일의 파일 탐색기 예제입니다. 폴더를 클릭하여 열고 닫을 수 있으며, 파일 아이콘과 계층 구조를 시각화합니다.

EXPLORER
project
src
components
button.tsx
input.tsx
app.tsx
package.json
README.md
button.tsx
input.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
main
0 문제
Ln 52, Col 1UTF-8
TypeScript

카테고리 트리 예제

전자제품
스마트폰
아이폰
갤럭시
컴퓨터
노트북
데스크톱
패션
의류
남성
여성

전자상거래 사이트의 상품 카테고리 선택에 활용할 수 있습니다.