Featuring Design System
Reference

API Reference

@featuring-corp/data-grid의 공개 export 전체 — 훅·컴포넌트·context·타입·TanStack 재노출.

이 페이지는 @featuring-corp/data-grid공개 표면 전체입니다. 표에 적힌 이름은 패키지 진입점(index.ts)에서 실제로 export하는 이름과 1:1로 일치합니다. 설명은 개념만 짚고, 시그니처와 옵션의 자세한 의미는 각 딥 페이지로 연결합니다.

import {
	useDataGrid,
	useDataGridSelection,
	useDataGridEditing,
	useDataGridFillHandle,
	DataGrid,
	getCoreRowModel,
	createColumnHelper,
	type ColumnDef,
} from '@featuring-corp/data-grid';

훅 (Hooks)

기능을 명시적으로 합성하는 진입점입니다. useDataGrid가 인스턴스를 만들고, 기능 훅이 그 위에 셀 선택·편집·자동 채우기를 얹습니다. 반환값은 <DataGrid.Root>에 prop으로 주입합니다(table에 부착하지 않음). 자세한 합성 모델은 Composition & DI를 참고하세요.

시그니처용도
useDataGriduseDataGrid<TData, TError>(options): DataGridInstance<TData, TError>TanStack Table을 만들고 loading/error/getSkeletonRowCount/debug/virtualization/runtime을 얹은 인스턴스 반환. Architecture
useDataGridSelectionuseDataGridSelection<TData, TError>(table, options?): DataGridSelection셀 선택(anchor/range 다중 직사각형) 인스턴스 생성. Selection model
useDataGridEditinguseDataGridEditing<TData, TError>(table, options): DataGridEditing인라인 편집 라이프사이클(진입/commit/cancel)·붙여넣기·undo/redo 인스턴스 생성. Editing model
useDataGridCellEdituseDataGridCellEdit<TValue>(cell?): DataGridCellEdit<TValue>column.cell 안에서 호출 — 이 셀의 편집 상태(isEditing/initialValue/commit/cancel/saveStatus)를 읽음. 인자 없으면 cell context에서 자동 해석. Editing model
useDataGridFillHandleuseDataGridFillHandle<TData, TError>(table, options?): DataGridFillHandleselection(단일 range) + editing을 잇는 자동 채우기 핸들 인스턴스 생성. Clipboard & Fill
useDataGridScrollToActiveuseDataGridScrollToActive<TData, TError>(table, options?): voidfocused 셀을 뷰포트로 스크롤(가상화·pinned 보정 포함). 부수효과 전용(반환 없음). View state
parseTsvparseTsv(text: string): string[][]TSV(tab/newline + RFC 4180 quoted) 문자열을 2D 배열로 파싱. 커스텀 붙여넣기 구현 시 내장과 동일 규칙 재사용. Clipboard & Fill

parseTsv는 훅이 아니라 순수 함수지만, useDataGridEditing과 같은 모듈에서 export됩니다(커스텀 클립보드 헬퍼).

각 훅의 옵션 타입도 export됩니다.

옵션 타입대상 훅
UseDataGridOptions<TData, TError>useDataGrid (TanStack TableOptions를 extends + loading/error/skeletonRows/debug/virtualization)
UseDataGridSelectionOptionsuseDataGridSelection (enabled/state/onChange/transformSelection/isCellSelectable)
UseDataGridEditingOptionsuseDataGridEditing (onCellEdit/onPaste/onBulkEdit/isCellEditable/equals/historyLimit 등)
UseDataGridFillHandleOptions<TData, TError>useDataGridFillHandle (getFillValue/doubleClickAction 등)
UseDataGridScrollToActiveOptionsuseDataGridScrollToActive (getScrollContainer/scrollAncestors/behavior/margin 등)
DataGridSelectionTransformMetatransformSelection 콜백의 meta 인자(gesture)
DataGridEditOnCellEditPayloadonCellEdit/onBulkEdit 콜백의 payload(coord/newValue/oldValue)

컴포넌트 (Compound components)

컴파운드 트리는 두 가지 형태로 동시에 export됩니다.

  • Namespaceimport { DataGrid } from '@featuring-corp/data-grid'DataGrid.Root, DataGrid.Header, …
  • Flat 원본 이름import { DataGridRoot } from '@featuring-corp/data-grid'

두 형태가 같은 컴포넌트를 가리킵니다. namespace는 작성용(JSX가 짧음), flat 이름은 docgen용입니다 — react-docgen-typescript가 namespace alias(X as Y)에서 __docgenInfo를 잘못 할당하는 이슈가 있어, prop 문서 추출을 위해 원본 이름을 별도로 flat export합니다. Storybook의 component/subcomponents에는 flat 이름을 쓰고, JSX는 namespace를 씁니다.

NamespaceFlat 이름책임
DataGrid.RootDataGridRootDI 허브·키/포인터 라우팅·role·size. table/selection/editing/fillHandle을 받아 context로 전파.
DataGrid.ScrollContainerDataGridScrollContainer스크롤 영역([data-scroll-container]) — pinned/sticky 기준.
DataGrid.HeaderDataGridHeader헤더 그룹 렌더. 자동(children 없음) / (headerGroup) => … render-prop.
DataGrid.HeaderRowDataGridHeaderRow헤더 행.
DataGrid.HeaderCellDataGridHeaderCell헤더 셀(header 또는 column 유니온).
DataGrid.BodyDataGridBody행 렌더·로딩 시 skeleton·가상화 윈도잉. 자동 / (row, rowIndex) => … render-prop.
DataGrid.RowDataGridRow행(row, rowIndex?data-* 상태 노출.
DataGrid.CellDataGridCell셀(cell 또는 column 유니온)·data-* 상태 노출.
DataGrid.CellDisplayDataGridCellDisplayedit 아닐 때의 셀 내용.
DataGrid.CellEditorDataGridCellEditoredit 시 mount되는 에디터 슬롯.
DataGrid.TextEditorDataGridTextEditor패키지 기본 인라인 텍스트 에디터(IME·키·blur 내장). parse·commitOnBlur opt-in.
DataGrid.EmptyDataGridEmpty빈 상태 슬롯.
DataGrid.LoadingDataGridLoading로딩 상태 슬롯.
DataGrid.ErrorDataGridError에러 상태 슬롯. (state) => … render-prop.
DataGrid.SortArrowDataGridSortArrow정렬 인디케이터(direction·nextDirection).
DataGrid.ResizeHandleDataGridResizeHandle컬럼 리사이즈 핸들(header·keyboardStep).

각 컴포넌트의 Props 타입과(있는 경우) state-callback 인자 State 타입도 export됩니다.

Props 타입State 타입
DataGridRootPropsDataGridRootState
DataGridScrollContainerPropsDataGridScrollContainerState
DataGridHeaderPropsDataGridHeaderState
DataGridHeaderRowPropsDataGridHeaderRowState
DataGridHeaderCellProps
DataGridBodyPropsDataGridBodyState
DataGridRowProps
DataGridCellProps
DataGridCellDisplayProps
DataGridCellEditorProps
DataGridTextEditorProps
DataGridEmptyPropsDataGridEmptyState
DataGridLoadingPropsDataGridLoadingState
DataGridErrorPropsDataGridErrorState
DataGridSortArrowPropsDataGridSortArrowState
DataGridResizeHandleProps

DataGridRootState/DataGridRowState/DataGridCellState/DataGridHeaderCellState는 도메인 타입으로 분류되어 별도 그룹(아래 "공개 타입")에서 export됩니다 — 컴포넌트 state-callback과 data-* 상태에 공유됩니다.

Root의 veto seam 컨텍스트 타입도 export됩니다.

타입용도
DataGridKeyDownContextonCellKeyDown 콜백의 ctx 인자(focused·preventGridDefault).
DataGridPointerDownContextonCellPointerDown 콜백의 ctx 인자(preventGridDefault).

Context

컴파운드 내부에서 그리드 전역/현재 셀 상태를 읽는 훅입니다. 커스텀 셀·에디터를 만들 때 사용합니다.

이름시그니처용도
useDataGridContextuseDataGridContext<TData, TError>(): DataGridContextValue<TData, TError>그리드 전역 context(table·size·selection·editing·fillHandle·gridId 등). Architecture
useDataGridCellContextuseDataGridCellContext<TData, TValue>(): DataGridCellContextValue<TData, TValue>현재 셀 context(cell 등). CellDisplay/CellEditor/useDataGridCellEdit이 읽는 것과 동일.

반환 타입 DataGridContextValue·DataGridCellContextValue도 export됩니다.

클립보드 헬퍼 (Clipboard helpers)

커스텀 클립보드(onCellKeyDown veto로 키 리맵 등)나 내보내기를 만들 때, 그리드 내장과 동일한 규칙을 재사용하기 위한 헬퍼입니다. Root 모듈에서 export됩니다(parseTsv는 editing 모듈).

이름시그니처용도
getActiveRangegetActiveRange(selection: DataGridSelection): DataGridCellRange | undefined클립보드/삭제/fill의 기준 range — 비연속 다중선택에서 active(마지막) range.
serializeRangeToTsvserializeRangeToTsv<TData, TError>(table, range): string | nullrange를 Excel/Sheets 호환 TSV로 직렬화. meta.getCopyValue 존중, control 컬럼 제외, 병합 covered 셀은 ''. 좌표가 현재 model에 없으면 null.

자세한 사용은 Clipboard & Fill을 참고하세요.

공개 타입 (Public types)

도메인 타입은 그룹별로 export됩니다. 모두 type-only export입니다(단, dataGridSizeValues·SIZE_TO_ROW_HEIGHT는 값).

인스턴스 / 옵션

  • DataGridInstanceuseDataGrid 반환. TanStack Table extends + loading/error/getSkeletonRowCount/debug/virtualization/runtime.
  • UseDataGridOptionsuseDataGrid 옵션. TanStack TableOptions extends.

좌표 / 범위

  • DataGridCellCoord{ rowId, columnId }.
  • DataGridCellRange{ start, end }.
  • DataGridClipboardSource — 복사/잘라내기한 영역(range·mode: 'copy' | 'cut').

선택 (Selection)

  • DataGridSelection — selection 인스턴스(공개 표면).
  • DataGridSelectionState{ anchor, focused, ranges }.

편집 (Editing)

  • DataGridEditing — editing 인스턴스(공개 표면).
  • DataGridEditingState{ coord, trigger, prefillChar }.
  • DataGridCellEditcolumn.cell 안 per-cell 편집 상태(useDataGridCellEdit 반환).
  • DataGridCellEditInputapplyEdits 입력({ coord, value }).
  • DataGridCellSaveStatus'idle' | 'pending' | 'error'.
  • DataGridEditTrigger'doubleclick' | 'F2' | 'Enter' | 'typing'.
  • DataGridEditCommitMove'down' | 'up' | 'right' | 'left'.
  • DataGridEditableCellStateDataGridCellEdit의 deprecated alias(하위호환 유지).

자동 채우기 (Fill)

  • DataGridFillHandle — fill handle 인스턴스(공개 표면).
  • DataGridFillHandleState{ isVisible, isDragging }.
  • DataGridFillArgsgetFillValue 콜백 인자(양축 fill).
  • DataGridFillContextdoubleClickAction 함수형 콜백 인자(sourceRange·table·applyFill).
  • DataGridFillDirection'down' | 'up' | 'right' | 'left'.
  • DataGridColumnFillcolumn.meta.fill 값('copy' | 'series' | 함수).
  • DataGridColumnFillFnmeta.fill 함수형.
  • DataGridColumnFillArgsmeta.fill 함수형 인자(컬럼 스코프).

컴포넌트 state 형태 (data-* 표면에 공유)

  • DataGridRootState·DataGridRowState·DataGridCellState·DataGridHeaderCellState — Root/Row/Cell/HeaderCell의 state-callback 인자.
  • DataGridResizeHandleState — ResizeHandle state(isResizing·canResize).

Skeleton

  • DataGridSkeletonContextcolumn.meta.skeleton 콜백 인자(table·column·rowIndex).

크기 (Size)

  • DataGridSize'sm' | 'md' | 'lg'.
  • dataGridSizeValues['sm', 'md', 'lg'] (값 export — 런타임에서 옵션 순회·검증에 사용).
  • SIZE_TO_ROW_HEIGHT — 사이즈별 행 높이 px 맵(값 export).

디버그 (Debug)

  • DataGridDebugboolean | DataGridDebugAreas.
  • DataGridDebugAreas{ selection?, editing?, clipboard?, keyboard? }.
  • DataGridDebugArea'selection' | 'editing' | 'clipboard' | 'keyboard'.

가상화 (Virtualization)

  • DataGridVirtualization{ rows?, columns?, estimateRowHeight?, overscan?, getScrollElement? }.

TanStack 재노출 (TanStack re-exports)

@featuring-corp/data-grid는 자주 쓰는 TanStack Table API를 그대로 재노출합니다. 소비자가 @tanstack/react-table직접 import하지 않아도 되도록 단일 진입점을 제공하는 것이 목적입니다 — 그리드와 row model이 같은 TanStack 버전을 공유하도록 보장합니다.

⚠️ row model 팩토리는 기본으로 깔리지 않습니다. getCoreRowModel() 등을 직접 useDataGrid 옵션에 넘겨야 합니다.

값 (factories / helpers)

이름용도
getCoreRowModel코어 row model(필수).
getSortedRowModel정렬.
getFilteredRowModel필터.
getFacetedRowModelfaceted 값 집계.
getFacetedUniqueValuesfaceted unique 값.
getFacetedMinMaxValuesfaceted min/max.
getPaginationRowModel페이지네이션.
getExpandedRowModel확장(트리/sub-row).
getGroupedRowModel그룹핑.
flexRender컬럼 정의의 header/cell을 렌더.
createColumnHelper타입 안전 컬럼 정의 빌더. 빠지면 소비자가 @tanstack/react-table을 직접 import하게 됨.

타입 (type re-exports)

ColumnDef, ColumnFiltersState, SortingState, RowSelectionState, PaginationState, VisibilityState, ColumnPinningState, ColumnOrderState, ExpandedState, GroupingState, Header, CellContext, HeaderContext, HeaderGroup, TableOptions, ColumnHelper를 그대로 재노출합니다.

이름 충돌을 피하기 위해 alias로 재노출되는 타입이 있습니다 — 소비자는 alias 이름으로 import해야 합니다.

TanStack 원본재노출 이름
RowTanstackRow
CellTanstackCell
ColumnTanstackColumn
TableTanstackTable
PaginationStateTanstackPaginationState (원본 이름 PaginationState도 함께 재노출)
import {
	type ColumnDef,
	type SortingState,
	type TanstackRow,
	type TanstackTable,
} from '@featuring-corp/data-grid';

다음 단계

  • Composition & DI — 훅을 Root에 주입하는 명시 DI 모델.
  • Extending — 모든 override seam과 veto 패턴(transformSelection·onCellEdit·getFillValue·onCellKeyDown 등).
  • ArchitectureDataGridInstance·runtime registry·context 전파.