"use client"; import { createComponentDefinition } from "../../utils/createComponentDefinition"; import { ComponentCategory } from "@/types/component"; import { RepeatScreenModalComponent } from "./RepeatScreenModalComponent"; import { RepeatScreenModalConfigPanel } from "./RepeatScreenModalConfigPanel"; import type { RepeatScreenModalProps, CardRowConfig, CardColumnConfig, ColumnSourceConfig, ColumnTargetConfig, DataSourceConfig, CardData, GroupingConfig, AggregationConfig, TableLayoutConfig, TableColumnConfig, GroupedCardData, CardRowData, CardContentRowConfig, AggregationDisplayConfig, } from "./types"; /** * RepeatScreenModal 컴포넌트 정의 v3 * 반복 화면 모달 - 선택한 행 개수만큼 카드를 생성하며, 각 카드는 커스터마이징 가능한 레이아웃 * * 주요 기능: * - 🆕 v3: 자유 레이아웃 - 행(Row)을 추가하고 각 행마다 타입(헤더/집계/테이블/필드) 선택 * - 그룹핑: 특정 필드 기준으로 여러 행을 하나의 카드로 묶기 * - 집계: 그룹 내 데이터의 합계/평균/개수 등 자동 계산 * - 카드 내 테이블: 그룹 내 각 행을 테이블 형태로 표시 * - 유연한 레이아웃: 행 타입 자유 선택, 순서 자유 배치 * - 컬럼별 소스 설정: 직접 조회/조인 조회/수동 입력 * - 컬럼별 타겟 설정: 어느 테이블의 어느 컬럼에 저장할지 설정 * - 다중 테이블 저장: 하나의 카드에서 여러 테이블 동시 저장 * * 사용 시나리오: * - 출하계획 동시 등록 (품목별 그룹핑 + 수주별 테이블) * - 구매발주 일괄 등록 (공급업체별 그룹핑 + 품목별 테이블) * - 생산계획 일괄 등록 (제품별 그룹핑 + 작업지시별 테이블) * - 입고검사 일괄 처리 (발주번호별 그룹핑 + 품목별 검사결과) */ export const RepeatScreenModalDefinition = createComponentDefinition({ id: "repeat-screen-modal", name: "반복 화면 모달", nameEng: "Repeat Screen Modal", description: "선택한 행을 그룹핑하여 카드로 표시하고, 각 카드는 헤더/집계/테이블을 자유롭게 구성 가능한 폼 (출하계획, 구매발주 등)", category: ComponentCategory.DATA, webType: "form", component: RepeatScreenModalComponent, defaultConfig: { // 기본 설정 showCardTitle: true, cardTitle: "카드 {index}", cardSpacing: "24px", showCardBorder: true, saveMode: "all", // 데이터 소스 dataSource: { sourceTable: "", filterField: "selectedIds", }, // 그룹핑 설정 grouping: { enabled: false, groupByField: "", aggregations: [], }, // 🆕 v3: 자유 레이아웃 (행 추가 후 타입 선택) contentRows: [], // (레거시 호환) cardMode: "simple", cardLayout: [], tableLayout: { headerRows: [], tableColumns: [], }, } as Partial, defaultSize: { width: 1000, height: 800 }, configPanel: RepeatScreenModalConfigPanel, icon: "LayoutGrid", tags: ["모달", "폼", "반복", "카드", "그룹핑", "집계", "테이블", "편집", "데이터", "출하계획", "일괄등록", "자유레이아웃"], version: "3.0.0", author: "개발팀", hidden: true, // v2-repeat-screen-modal 사용으로 패널에서 숨김 }); // 타입 재 export export type { RepeatScreenModalProps, CardRowConfig, CardColumnConfig, ColumnSourceConfig, ColumnTargetConfig, DataSourceConfig, CardData, GroupingConfig, AggregationConfig, TableLayoutConfig, TableColumnConfig, GroupedCardData, CardRowData, CardContentRowConfig, AggregationDisplayConfig, }; // 컴포넌트 재 export export { RepeatScreenModalComponent, RepeatScreenModalConfigPanel };