8개 Grid 변형 → <Grid> 이전 가이드
현행 API 불일치 — 재작성 예정
표·예제의 <Grid mode="client"> 표기는 현행 API와 불일치한다. 현재 <Grid>에는 top-level mode
prop이 없다 — client 모드는 별도 플래그 없이 <Grid columns data />가 기본이고, server는 manualPagination
플래그 또는 useServerSideData 패턴이다. 현행 패턴으로 재작성 예정.
이 문서는 레거시 코드베이스에서 사용하던 8개의 Grid 변형 컴포넌트를
@topgrid/grid-core의 통합 <Grid> 컴포넌트(및 관련 Pro 패키지)로 이전하는
참조 테이블이다. 실제 파일 단 위 이전은 MOD-GRID-17 이하 각 Goal에서 수행한다.
읽기 전에: 증분 이전 전략을 먼저 읽어 Goal당 ≤ 5 사용처 이전 규칙(C-19)을 이해한다.
전체 요약 테이블
| # | 변형 | 현재 상태 | 대상 패키지 | 주요 변환 포인트 |
|---|---|---|---|---|
| 1 | BaseGrid | 미이전 (raw TanStack) | @topgrid/grid-core | <Grid mode="client"> + 동일 props |
| 2 | VirtualGrid | 미이전 (@tanstack/react-virtual) | @topgrid/grid-core | <Grid enableVirtualization rowHeight containerHeight> |
| 3 | TreeGrid | 미이전 (getExpandedRowModel) | @topgrid/grid-core (legacy alias) | <TreeGrid> alias 사용 |
| 4 | ColumnPinGrid | 미이전 (ColumnPinningState) | @topgrid/grid-core (legacy alias) | <ColumnPinGrid pinLeft pinRight> alias 사용 |
| 5 | EditableGrid | 부분 이전 (import 교체, 쉘 로컬 유지) | @topgrid/grid-renderers + @topgrid/grid-pro-tracking | <Grid enableEditing> + useChangeTracking |
| 6 | GroupedHeaderGrid | 완전 이전 | @topgrid/grid-pro-header | 기존 import 유지 — 추가 작업 없음 |
| 7 | ChangeTrackingGrid | 완전 이전 (compat shim) | @topgrid/grid-pro-tracking | 기존 코드 변경 없음 — shim이 내부를 처리 |
| 8 | RangeSelectGrid | 완전 이전 (wrapper) | @topgrid/grid-pro-range | 기존 코드 변경 없음 — wrapper가 Pro로 위임 |
1. BaseGrid
현재 상태: 미이전 — @tanstack/react-table 직접 사용
Before: 원본 Props 인터페이스
// legacy BaseGrid.tsx
interface BaseGridProps<TData> {
data: TData[];
columns: ColumnDef<TData>[];
pagination?: GridPaginationOptions;
rowSelection?: GridRowSelectionOptions; // { mode: 'none' | 'single' | 'multi' }
onRowClick?: (row: TData) => void;
onRowDoubleClick?: (row: TData) => void;
loading?: boolean; // default: false
emptyText?: string; // default: '데이터가 없습니다.'
className?: string;
}
After: @topgrid/grid-core Grid 사용
import { Grid } from '@topgrid/grid-core';
// Before
import { BaseGrid } from '../Grid/BaseGrid';
<BaseGrid
data={rows}
columns={columns}
pagination={{ pageSize: 20 }}
rowSelection={{ mode: 'multi' }}
onRowClick={handleRowClick}
loading={isLoading}
emptyText="조회 결과가 없습니다."
/>
// After
import { Grid } from '@topgrid/grid-core';
<Grid
mode="client"
data={rows}
columns={columns}
pagination={{ pageSize: 20 }}
rowSelection={{ mode: 'multi' }}
onRowClick={handleRowClick}
loading={isLoading}
emptyText="조회 결과가 없습니다."
/>
이전 작업: import 경로 변경 + mode="client" prop 추가. 나머지 props는 동일.
2. VirtualGrid
현재 상태: 미이전 — @tanstack/react-virtual + raw TanStack Table 직접 사용