feature/v2-unified-renewal #379
|
|
@ -82,23 +82,9 @@ export function ComponentsPanel({
|
||||||
tags: ["table", "list", "card", "kanban", "unified"],
|
tags: ["table", "list", "card", "kanban", "unified"],
|
||||||
defaultSize: { width: 600, height: 400 },
|
defaultSize: { width: 600, height: 400 },
|
||||||
},
|
},
|
||||||
{
|
// unified-media 제거 - 테이블 컬럼의 image/file 입력 타입으로 사용
|
||||||
id: "unified-media",
|
|
||||||
name: "통합 미디어",
|
|
||||||
description: "이미지, 비디오, 오디오, 파일 업로드 등 미디어 컴포넌트",
|
|
||||||
category: "display" as ComponentCategory,
|
|
||||||
tags: ["image", "video", "audio", "file", "unified"],
|
|
||||||
defaultSize: { width: 300, height: 200 },
|
|
||||||
},
|
|
||||||
// unified-biz 제거 - 개별 컴포넌트(flow-widget, rack-structure, numbering-rule)로 직접 표시
|
// unified-biz 제거 - 개별 컴포넌트(flow-widget, rack-structure, numbering-rule)로 직접 표시
|
||||||
{
|
// unified-hierarchy 제거 - 현재 미사용
|
||||||
id: "unified-hierarchy",
|
|
||||||
name: "통합 계층",
|
|
||||||
description: "트리, 조직도, BOM, 연쇄 선택박스 등 계층 구조 컴포넌트",
|
|
||||||
category: "data" as ComponentCategory,
|
|
||||||
tags: ["tree", "org", "bom", "cascading", "unified"],
|
|
||||||
defaultSize: { width: 400, height: 300 },
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: "unified-repeater",
|
id: "unified-repeater",
|
||||||
name: "통합 반복 데이터",
|
name: "통합 반복 데이터",
|
||||||
|
|
@ -148,6 +134,8 @@ export function ComponentsPanel({
|
||||||
"accordion-basic", // 아코디언 컴포넌트
|
"accordion-basic", // 아코디언 컴포넌트
|
||||||
"conditional-container", // 조건부 컨테이너
|
"conditional-container", // 조건부 컨테이너
|
||||||
"universal-form-modal", // 범용 폼 모달
|
"universal-form-modal", // 범용 폼 모달
|
||||||
|
// 통합 미디어 (테이블 컬럼 입력 타입으로 사용)
|
||||||
|
"unified-media", // → 테이블 컬럼의 image/file 입력 타입으로 사용
|
||||||
];
|
];
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|
|
||||||
|
|
@ -238,8 +238,6 @@ export const UnifiedListConfigPanel: React.FC<UnifiedListConfigPanelProps> = ({
|
||||||
<SelectContent>
|
<SelectContent>
|
||||||
<SelectItem value="table">테이블</SelectItem>
|
<SelectItem value="table">테이블</SelectItem>
|
||||||
<SelectItem value="card">카드</SelectItem>
|
<SelectItem value="card">카드</SelectItem>
|
||||||
<SelectItem value="kanban">칸반</SelectItem>
|
|
||||||
<SelectItem value="list">리스트</SelectItem>
|
|
||||||
</SelectContent>
|
</SelectContent>
|
||||||
</Select>
|
</Select>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@
|
||||||
// 핵심 입력 타입
|
// 핵심 입력 타입
|
||||||
export type InputType =
|
export type InputType =
|
||||||
| "text" // 텍스트
|
| "text" // 텍스트
|
||||||
| "textarea" // 텍스트 에리어 (여러 줄 입력)
|
|
||||||
| "number" // 숫자
|
| "number" // 숫자
|
||||||
| "date" // 날짜
|
| "date" // 날짜
|
||||||
| "code" // 코드
|
| "code" // 코드
|
||||||
|
|
@ -17,7 +16,8 @@ export type InputType =
|
||||||
| "select" // 선택박스
|
| "select" // 선택박스
|
||||||
| "checkbox" // 체크박스
|
| "checkbox" // 체크박스
|
||||||
| "radio" // 라디오버튼
|
| "radio" // 라디오버튼
|
||||||
| "image"; // 이미지
|
| "image" // 이미지
|
||||||
|
| "file"; // 파일
|
||||||
|
|
||||||
// 입력 타입 옵션 정의
|
// 입력 타입 옵션 정의
|
||||||
export interface InputTypeOption {
|
export interface InputTypeOption {
|
||||||
|
|
@ -43,13 +43,6 @@ export const INPUT_TYPE_OPTIONS: InputTypeOption[] = [
|
||||||
category: "basic",
|
category: "basic",
|
||||||
icon: "Type",
|
icon: "Type",
|
||||||
},
|
},
|
||||||
{
|
|
||||||
value: "textarea",
|
|
||||||
label: "텍스트 에리어",
|
|
||||||
description: "여러 줄 텍스트 입력",
|
|
||||||
category: "basic",
|
|
||||||
icon: "AlignLeft",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
value: "number",
|
value: "number",
|
||||||
label: "숫자",
|
label: "숫자",
|
||||||
|
|
@ -113,6 +106,13 @@ export const INPUT_TYPE_OPTIONS: InputTypeOption[] = [
|
||||||
category: "basic",
|
category: "basic",
|
||||||
icon: "Image",
|
icon: "Image",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
value: "file",
|
||||||
|
label: "파일",
|
||||||
|
description: "파일 업로드/다운로드",
|
||||||
|
category: "basic",
|
||||||
|
icon: "File",
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
// 카테고리별 입력 타입 그룹화
|
// 카테고리별 입력 타입 그룹화
|
||||||
|
|
@ -138,11 +138,6 @@ export const INPUT_TYPE_DEFAULT_CONFIGS: Record<InputType, Record<string, any>>
|
||||||
maxLength: 500,
|
maxLength: 500,
|
||||||
placeholder: "텍스트를 입력하세요",
|
placeholder: "텍스트를 입력하세요",
|
||||||
},
|
},
|
||||||
textarea: {
|
|
||||||
maxLength: 2000,
|
|
||||||
rows: 4,
|
|
||||||
placeholder: "내용을 입력하세요",
|
|
||||||
},
|
|
||||||
number: {
|
number: {
|
||||||
min: 0,
|
min: 0,
|
||||||
step: 1,
|
step: 1,
|
||||||
|
|
@ -180,13 +175,18 @@ export const INPUT_TYPE_DEFAULT_CONFIGS: Record<InputType, Record<string, any>>
|
||||||
placeholder: "이미지를 선택하세요",
|
placeholder: "이미지를 선택하세요",
|
||||||
accept: "image/*",
|
accept: "image/*",
|
||||||
},
|
},
|
||||||
|
file: {
|
||||||
|
placeholder: "파일을 선택하세요",
|
||||||
|
accept: "*/*",
|
||||||
|
maxSize: 10485760, // 10MB
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// 레거시 웹 타입 → 입력 타입 매핑
|
// 레거시 웹 타입 → 입력 타입 매핑
|
||||||
export const WEB_TYPE_TO_INPUT_TYPE: Record<string, InputType> = {
|
export const WEB_TYPE_TO_INPUT_TYPE: Record<string, InputType> = {
|
||||||
// 텍스트 관련
|
// 텍스트 관련
|
||||||
text: "text",
|
text: "text",
|
||||||
textarea: "textarea",
|
textarea: "text",
|
||||||
email: "text",
|
email: "text",
|
||||||
tel: "text",
|
tel: "text",
|
||||||
url: "text",
|
url: "text",
|
||||||
|
|
@ -213,15 +213,17 @@ export const WEB_TYPE_TO_INPUT_TYPE: Record<string, InputType> = {
|
||||||
entity: "entity",
|
entity: "entity",
|
||||||
category: "category",
|
category: "category",
|
||||||
|
|
||||||
|
// 파일/이미지 관련
|
||||||
|
file: "file",
|
||||||
|
image: "image",
|
||||||
|
|
||||||
// 기타 (기본값: text)
|
// 기타 (기본값: text)
|
||||||
file: "text",
|
|
||||||
button: "text",
|
button: "text",
|
||||||
};
|
};
|
||||||
|
|
||||||
// 입력 타입 → 웹 타입 역매핑 (화면관리 시스템 호환용)
|
// 입력 타입 → 웹 타입 역매핑 (화면관리 시스템 호환용)
|
||||||
export const INPUT_TYPE_TO_WEB_TYPE: Record<InputType, string> = {
|
export const INPUT_TYPE_TO_WEB_TYPE: Record<InputType, string> = {
|
||||||
text: "text",
|
text: "text",
|
||||||
textarea: "textarea",
|
|
||||||
number: "number",
|
number: "number",
|
||||||
date: "date",
|
date: "date",
|
||||||
code: "code",
|
code: "code",
|
||||||
|
|
@ -231,6 +233,7 @@ export const INPUT_TYPE_TO_WEB_TYPE: Record<InputType, string> = {
|
||||||
checkbox: "checkbox",
|
checkbox: "checkbox",
|
||||||
radio: "radio",
|
radio: "radio",
|
||||||
image: "image",
|
image: "image",
|
||||||
|
file: "file",
|
||||||
};
|
};
|
||||||
|
|
||||||
// 입력 타입 변환 함수
|
// 입력 타입 변환 함수
|
||||||
|
|
@ -245,11 +248,6 @@ export const INPUT_TYPE_VALIDATION_RULES: Record<InputType, Record<string, any>>
|
||||||
trim: true,
|
trim: true,
|
||||||
maxLength: 500,
|
maxLength: 500,
|
||||||
},
|
},
|
||||||
textarea: {
|
|
||||||
type: "string",
|
|
||||||
trim: true,
|
|
||||||
maxLength: 2000,
|
|
||||||
},
|
|
||||||
number: {
|
number: {
|
||||||
type: "number",
|
type: "number",
|
||||||
allowFloat: true,
|
allowFloat: true,
|
||||||
|
|
@ -286,4 +284,8 @@ export const INPUT_TYPE_VALIDATION_RULES: Record<InputType, Record<string, any>>
|
||||||
type: "string",
|
type: "string",
|
||||||
required: false,
|
required: false,
|
||||||
},
|
},
|
||||||
|
file: {
|
||||||
|
type: "string",
|
||||||
|
required: false,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue