Compare commits

2 Commits

Author SHA1 Message Date
DDD1542 59f5cf22f0 Merge remote-tracking branch 'origin/gbpark-node' into gbpark-node
Build & Deploy to K8s / build-and-deploy (push) Successful in 4m4s
2026-05-07 17:09:57 +09:00
DDD1542 c4631efbd2 중간저장 2026-05-07 17:06:26 +09:00
9 changed files with 49 additions and 19 deletions
@@ -219,6 +219,17 @@ function resolveTriple(
return { kind: "attach", type: "file", format: "any" };
}
// 2.5 옛 레거시 컴포넌트 ID → triple default
// config.kind/type 가 없을 때만 도달. 명시된 config 가 있으면 step 0 에서 이미 return.
switch (componentType) {
case "text-input": return { kind: "input", type: "text", format: "free" };
case "number-input": return { kind: "input", type: "number", format: "int" };
case "date-input": return { kind: "input", type: "date", format: "date" };
case "select-basic": return { kind: "choice", type: "single", format: "list" };
case "checkbox-basic": return { kind: "choice", type: "single", format: "boolean" };
case "textarea-basic": return { kind: "input", type: "text", format: "free" };
}
// 3. 선택 (source / multiple)
const isMulti = !!config.multiple;
const src = config.source || (config.fieldType === "select" ? "static" : config.fieldType);
@@ -5,7 +5,7 @@ import { createComponentDefinition } from "../../utils/createComponentDefinition
import { ComponentCategory } from "@/types/component";
import type { WebType } from "@/types/screen";
import { CheckboxBasicWrapper } from "./CheckboxBasicComponent";
import { CheckboxBasicConfigPanel } from "./CheckboxBasicConfigPanel";
import { InvFieldConfigPanel } from "@/components/v2/config-panels/InvFieldConfigPanel";
import { CheckboxBasicConfig } from "./types";
/**
@@ -21,10 +21,13 @@ export const CheckboxBasicDefinition = createComponentDefinition({
web_type: "checkbox",
component: CheckboxBasicWrapper,
default_config: {
kind: "choice",
type: "single",
format: "boolean",
placeholder: "입력하세요",
},
default_size: { width: 150, height: 120 }, // 40 * 3 (3개 옵션)
config_panel: CheckboxBasicConfigPanel,
config_panel: InvFieldConfigPanel,
icon: "Edit",
tags: [],
version: "1.0.0",
@@ -5,7 +5,7 @@ import { createComponentDefinition } from "../../utils/createComponentDefinition
import { ComponentCategory } from "@/types/component";
import type { WebType } from "@/types/screen";
import { DateInputComponent } from "./DateInputComponent";
import { DateInputConfigPanel } from "./DateInputConfigPanel";
import { InvFieldConfigPanel } from "@/components/v2/config-panels/InvFieldConfigPanel";
import { DateInputConfig } from "./types";
/**
@@ -21,10 +21,13 @@ export const DateInputDefinition = createComponentDefinition({
web_type: "date",
component: DateInputComponent,
default_config: {
kind: "input",
type: "date",
format: "date",
placeholder: "입력하세요",
},
default_size: { width: 220, height: 40 },
config_panel: DateInputConfigPanel,
config_panel: InvFieldConfigPanel,
icon: "Edit",
tags: [],
version: "1.0.0",
@@ -3,7 +3,7 @@
import { createComponentDefinition } from "../../utils/createComponentDefinition";
import { ComponentCategory } from "@/types/component";
import { InputWrapper } from "./InputComponent";
import { InvInputConfigPanel } from "./InvInputConfigPanel";
import { InvFieldConfigPanel } from "@/components/v2/config-panels/InvFieldConfigPanel";
import type { InputConfig } from "./types";
/**
@@ -25,12 +25,14 @@ import type { InputConfig } from "./types";
* notes/gbpark/2026-04-11-component-unification-plan.md §3.4
*/
const DEFAULT_CONFIG: Partial<InputConfig> = {
const DEFAULT_CONFIG = {
kind: "input",
type: "text",
format: "free",
placeholder: "입력하세요",
required: false,
editable: true,
};
} as Record<string, any>;
export const InputDefinition = createComponentDefinition({
id: "input",
@@ -40,9 +42,9 @@ export const InputDefinition = createComponentDefinition({
category: ComponentCategory.INPUT,
web_type: "text",
component: InputWrapper,
default_config: DEFAULT_CONFIG as Record<string, any>,
default_config: DEFAULT_CONFIG,
default_size: { width: 240, height: 48 },
config_panel: InvInputConfigPanel,
config_panel: InvFieldConfigPanel,
icon: "Edit",
tags: ["입력", "input", "field", "text", "number", "date", "select"],
version: "2.0.0",
@@ -61,4 +63,3 @@ export const InputDefinition = createComponentDefinition({
export type { InputConfig } from "./types";
export { InputComponent, InputWrapper } from "./InputComponent";
export { InvInputConfigPanel } from "./InvInputConfigPanel";
@@ -5,7 +5,7 @@ import { createComponentDefinition } from "../../utils/createComponentDefinition
import { ComponentCategory } from "@/types/component";
import type { WebType } from "@/types/screen";
import { NumberInputWrapper } from "./NumberInputComponent";
import { NumberInputConfigPanel } from "./NumberInputConfigPanel";
import { InvFieldConfigPanel } from "@/components/v2/config-panels/InvFieldConfigPanel";
import { NumberInputConfig } from "./types";
/**
@@ -21,12 +21,15 @@ export const NumberInputDefinition = createComponentDefinition({
web_type: "number",
component: NumberInputWrapper,
default_config: {
kind: "input",
type: "number",
format: "int",
min: 0,
max: 999999,
step: 1,
},
default_size: { width: 200, height: 40 },
config_panel: NumberInputConfigPanel,
config_panel: InvFieldConfigPanel,
icon: "Edit",
tags: [],
version: "1.0.0",
@@ -5,7 +5,7 @@ import { createComponentDefinition } from "../../utils/createComponentDefinition
import { ComponentCategory } from "@/types/component";
import type { WebType } from "@/types/screen";
import { SelectBasicWrapper } from "./SelectBasicComponent";
import { SelectBasicConfigPanel } from "./SelectBasicConfigPanel";
import { InvFieldConfigPanel } from "@/components/v2/config-panels/InvFieldConfigPanel";
import { SelectBasicConfig } from "./types";
/**
@@ -21,11 +21,14 @@ export const SelectBasicDefinition = createComponentDefinition({
web_type: "select",
component: SelectBasicWrapper,
default_config: {
kind: "choice",
type: "single",
format: "list",
options: [],
placeholder: "선택하세요",
},
default_size: { width: 250, height: 40 },
config_panel: SelectBasicConfigPanel,
config_panel: InvFieldConfigPanel,
icon: "Edit",
tags: [],
version: "1.0.0",
@@ -5,7 +5,7 @@ import { createComponentDefinition } from "../../utils/createComponentDefinition
import { ComponentCategory } from "@/types/component";
import type { WebType } from "@/types/screen";
import { TextInputWrapper } from "./TextInputComponent";
import { TextInputConfigPanel } from "./TextInputConfigPanel";
import { InvFieldConfigPanel } from "@/components/v2/config-panels/InvFieldConfigPanel";
import { TextInputConfig } from "./types";
/**
@@ -21,11 +21,14 @@ export const TextInputDefinition = createComponentDefinition({
web_type: "text",
component: TextInputWrapper,
default_config: {
kind: "input",
type: "text",
format: "free",
placeholder: "텍스트를 입력하세요",
maxLength: 255,
},
default_size: { width: 300, height: 40 },
config_panel: TextInputConfigPanel,
config_panel: InvFieldConfigPanel,
icon: "Edit",
tags: ["텍스트", "입력", "폼"],
version: "1.0.0",
@@ -5,7 +5,7 @@ import { createComponentDefinition } from "../../utils/createComponentDefinition
import { ComponentCategory } from "@/types/component";
import type { WebType } from "@/types/screen";
import { TextareaBasicWrapper } from "./TextareaBasicComponent";
import { TextareaBasicConfigPanel } from "./TextareaBasicConfigPanel";
import { InvFieldConfigPanel } from "@/components/v2/config-panels/InvFieldConfigPanel";
import { TextareaBasicConfig } from "./types";
/**
@@ -21,12 +21,15 @@ export const TextareaBasicDefinition = createComponentDefinition({
web_type: "textarea",
component: TextareaBasicWrapper,
default_config: {
kind: "input",
type: "text",
format: "free",
placeholder: "내용을 입력하세요",
rows: 3,
maxLength: 1000,
},
default_size: { width: 400, height: 100 },
config_panel: TextareaBasicConfigPanel,
config_panel: InvFieldConfigPanel,
icon: "Edit",
tags: [],
version: "1.0.0",
@@ -17,7 +17,7 @@ const CONFIG_PANEL_MAP: Record<string, () => Promise<any>> = {
"title": () => import("@/lib/registry/components/title/InvTitleConfigPanel"),
"button": () => import("@/lib/registry/components/button/InvButtonConfigPanel"),
"search": () => import("@/lib/registry/components/search/InvSearchConfigPanel"),
"input": () => import("@/lib/registry/components/input/InvInputConfigPanel"),
"input": () => import("@/components/v2/config-panels/InvFieldConfigPanel"),
"stats": () => import("@/lib/registry/components/stats/InvStatsConfigPanel"),
"table": () => import("@/lib/registry/components/table/InvTableConfigPanel"),
"container": () => import("@/lib/registry/components/container/InvContainerConfigPanel"),