ERP-node/frontend/lib/registry/components/v2-repeat-container/index.ts

61 lines
1.8 KiB
TypeScript

"use client";
import { createComponentDefinition } from "../../utils/createComponentDefinition";
import { ComponentCategory } from "@/types/component";
import { RepeatContainerWrapper } from "./RepeatContainerComponent";
import { RepeatContainerConfigPanel } from "./RepeatContainerConfigPanel";
import type { RepeatContainerConfig } from "./types";
/**
* RepeatContainer 컴포넌트 정의
* 데이터 수만큼 내부 컨텐츠를 반복 렌더링하는 컨테이너
*/
export const V2RepeatContainerDefinition = createComponentDefinition({
id: "v2-repeat-container",
name: "리피터 컨테이너",
nameEng: "Repeat Container",
description: "데이터 수만큼 내부 컴포넌트를 반복 렌더링하는 컨테이너",
category: ComponentCategory.LAYOUT,
webType: "text",
component: RepeatContainerWrapper,
defaultConfig: {
dataSourceType: "manual",
layout: "vertical",
gridColumns: 2,
gap: "16px",
showBorder: true,
showShadow: false,
borderRadius: "8px",
backgroundColor: "#ffffff",
padding: "16px",
showItemTitle: false,
itemTitleTemplate: "",
titleFontSize: "14px",
titleColor: "#374151",
titleFontWeight: "600",
emptyMessage: "데이터가 없습니다",
usePaging: false,
pageSize: 10,
clickable: false,
showSelectedState: true,
selectionMode: "single",
} as Partial<RepeatContainerConfig>,
defaultSize: { width: 600, height: 300 },
configPanel: RepeatContainerConfigPanel,
icon: "Repeat",
tags: ["리피터", "반복", "컨테이너", "데이터", "레이아웃", "그리드"],
version: "1.0.0",
author: "개발팀",
});
// 타입 내보내기
export type {
RepeatContainerConfig,
SlotComponentConfig,
RepeatItemContext,
RepeatContainerValue,
DataSourceType,
LayoutType,
} from "./types";