Skip to content

트리 테이블 (Tree Table)

TreeTableDataTable과 유사하지만 계층 구조(Tree)를 표현할 수 있는 컴포넌트입니다. 첫 번째 컬럼에 확장/축소 토글이 자동으로 추가됩니다.

기본 사용법 (Basic Usage)

data prop에 계층 구조가 포함된 데이터를 전달하고, columns를 정의합니다. 기본적으로 children 속성을 하위 노드로 인식합니다.

이름
종류
크기
Selected:
vue
<script setup lang="ts">
import { TreeTable } from '@jennifersoft/vue-components-v2';

const data = [
    {
        id: '1',
        name: 'Documents',
        children: [{ id: '1-1', name: 'Report.doc' }],
    },
    // ...
];

const columns = [
    { accessorKey: 'name', header: 'Name', size: 300 },
    // ...
];
</script>

<template>
    <TreeTable :data="data" :columns="columns" selection-mode="single" />
</template>

가상 스크롤 (Virtual Scrolling)

TreeTableDataTable과 마찬가지로 가상 스크롤을 지원합니다. 대량의 계층 데이터를 효율적으로 렌더링할 수 있습니다.

이름
종류
크기

커스텀 셀 (Custom Cells)

DataTable과 동일하게 셀 슬롯을 지원합니다.

이름
종류
크기

Props

PropTypeDefaultDescription
dataT[]Required계층 구조를 가진 데이터 객체들의 배열입니다.
columnsColumnDef<T>[]Required컬럼 정의 설정입니다.
selectionTundefined선택된 행 데이터(v-model 지원). 단일 선택만 지원합니다.
selectionMode'none' | 'single''none'행 선택 모드를 설정합니다.
columnVisibilityVisibilityState{}컬럼의 표시 상태를 정의하는 객체입니다.
skeletonbooleanfalsetrue일 때 로딩 스켈레톤(Skeleton) 상태를 표시합니다.
emptyTextstring'No Data'데이터 배열이 비어있을 때 표시할 텍스트입니다.
size'small' | 'normal''small'테이블의 크기(행 높이 및 폰트)를 설정합니다.
showColumnLinesbooleanfalsetrue일 때 데이터 셀의 세로 구분선을 표시합니다.
showRowLinesbooleanfalsetrue일 때 데이터 행의 가로 구분선을 표시합니다.
stripedRowsbooleanfalsetrue일 때 홀수 행에 배경색을 적용합니다.
variant'inset' | 'attached''inset'테이블의 시각적 스타일을 설정합니다.
getSubRows(row: T) => T[]row => row.children하위 행을 추출하는 함수입니다.

Events

EventPayloadDescription
update:selectionT행 선택 상태가 변경될 때 발생합니다.
update:columnVisibilityVisibilityState컬럼 표시 상태가 변경될 때 발생합니다.

Slots

Slot NameDescription
loading-state로딩 오버레이 영역에 표시할 커스텀 콘텐츠입니다.
empty-state데이터가 없을 때 표시할 커스텀 콘텐츠입니다.
cell-{id}특정 컬럼의 셀 내용을 커스터마이징합니다.