a8ded6455d
11 패널 일괄 Inv* prefix 통일:
- 통합 (lib/registry/components/X/): button / container / divider / search /
stats / table / title / input → Inv*ConfigPanel
- frontend/components/v2/config-panels/V2FieldConfigPanel → InvFieldConfigPanel
- 옛 v2-* hidden 호환 → InvLegacy{Divider,Text,Button}ConfigPanel
input 통합 컴포넌트 cp 톤 신규 작성 (InvInputConfigPanel):
- 277줄 옛 디자인 → CPVisualGrid 10칸 type 카드 + 타입별 옵션 + FeatureChipGrid
getComponentConfigPanel.tsx 버그 수정 (Codex 검토):
- "stats" key 중복 제거 (옛 StatsCardConfigPanel 이 통합 stats 덮던 silent bug)
- ALIAS 에서 v2-button-primary/v2-divider-line/v2-text-display 제외
(옵션 B 일관성 — 옛 hidden 컴포넌트는 InvLegacy 패널 사용)
- MAP 의 해당 키를 InvLegacy* 로 직접 매핑
호출처 일괄 갱신:
- 각 통합 컴포넌트의 index.ts 7개 (import / config_panel / re-export)
- v2-input/v2-select/v2-divider-line/v2-text-display/v2-button-primary
의 index.ts (config_panel 매핑)
- V2PropertiesPanel.tsx 의 require pattern (v2-input/v2-select)
검증: tsc 우리 영역 0건 / V2FieldConfigPanel 잔재 0건 / 기존 path 잔재 0건
다음 세션: useDbTables hook 추출 + 잔여 V2* cp 마이그 + dead code 정리
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
75 lines
2.3 KiB
TypeScript
75 lines
2.3 KiB
TypeScript
"use client";
|
|
|
|
import { createComponentDefinition } from "../../utils/createComponentDefinition";
|
|
import { ComponentCategory } from "@/types/component";
|
|
import { TableWrapper } from "./TableComponent";
|
|
import { InvTableConfigPanel } from "./InvTableConfigPanel";
|
|
import type { TableConfig } from "./types";
|
|
|
|
/**
|
|
* Table — 통합 데이터 테이블 컴포넌트 (2026-04-11, Phase C-1)
|
|
*
|
|
* 흡수 대상 (9):
|
|
* - v2-table-list (base)
|
|
* - v2-table-grouped (displayMode='grouped')
|
|
* - v2-pivot-grid (displayMode='pivot')
|
|
* - v2-split-panel-layout (displayMode='split')
|
|
* - table-list, split-panel-layout, split-panel-layout2 (legacy)
|
|
* - modal-repeater-table, simple-repeater-table (legacy)
|
|
* - pivot-grid, tax-invoice-list (legacy)
|
|
*
|
|
* 관련 문서:
|
|
* notes/gbpark/2026-04-11-component-unification-plan.md §3.1
|
|
*/
|
|
|
|
const DEFAULT_CONFIG: Partial<TableConfig> = {
|
|
displayMode: "table",
|
|
selectionMode: "single",
|
|
showCheckbox: false,
|
|
showHeader: true,
|
|
showFooter: true,
|
|
showToolbar: true,
|
|
striped: true,
|
|
hoverable: true,
|
|
rowHeight: "normal",
|
|
pagination: {
|
|
enabled: true,
|
|
pageSize: 20,
|
|
},
|
|
};
|
|
|
|
export const TableDefinition = createComponentDefinition({
|
|
id: "table",
|
|
name: "테이블",
|
|
name_eng: "Table",
|
|
description:
|
|
"통합 데이터 테이블. 기본/분할/그룹/피벗/카드 5가지 모드 지원",
|
|
category: ComponentCategory.DISPLAY,
|
|
web_type: "text",
|
|
component: TableWrapper,
|
|
default_config: DEFAULT_CONFIG as Record<string, any>,
|
|
default_size: { width: 800, height: 400 },
|
|
config_panel: InvTableConfigPanel,
|
|
icon: "Table",
|
|
tags: ["테이블", "table", "grid", "list", "data", "split", "pivot"],
|
|
version: "2.0.0",
|
|
author: "INVYONE",
|
|
documentation:
|
|
"notes/gbpark/2026-04-11-component-unification-plan.md#31-table",
|
|
// ─── INVYONE DataPort 선언 ───
|
|
dataPorts: {
|
|
inputs: [
|
|
{ name: "searchParams", type: "params" },
|
|
{ name: "refreshTrigger", type: "value" },
|
|
],
|
|
outputs: [
|
|
{ name: "selectedRow", type: "row" },
|
|
{ name: "selectedRows", type: "rows" },
|
|
],
|
|
},
|
|
});
|
|
|
|
export type { TableConfig, TableColumn } from "./types";
|
|
export { TableComponent, TableWrapper } from "./TableComponent";
|
|
export { InvTableConfigPanel } from "./InvTableConfigPanel";
|