27 lines
1.6 KiB
TypeScript
27 lines
1.6 KiB
TypeScript
|
|
// 사용 가능한 위젯 컴포넌트 목록
|
||
|
|
export const AVAILABLE_COMPONENTS = [
|
||
|
|
{ value: "TextWidget", label: "텍스트 입력", description: "기본 텍스트 입력 필드" },
|
||
|
|
{ value: "NumberWidget", label: "숫자 입력", description: "숫자 전용 입력 필드" },
|
||
|
|
{ value: "DateWidget", label: "날짜 선택", description: "날짜/시간 선택기" },
|
||
|
|
{ value: "SelectWidget", label: "선택 목록", description: "드롭다운 선택 목록" },
|
||
|
|
{ value: "TextareaWidget", label: "긴 텍스트", description: "여러 줄 텍스트 입력" },
|
||
|
|
{ value: "CheckboxWidget", label: "체크박스", description: "참/거짓 선택" },
|
||
|
|
{ value: "RadioWidget", label: "라디오 버튼", description: "단일 선택 라디오 버튼" },
|
||
|
|
{ value: "FileWidget", label: "파일 업로드", description: "파일 선택 및 업로드" },
|
||
|
|
{ value: "CodeWidget", label: "코드 입력", description: "코드 편집기" },
|
||
|
|
{ value: "EntityWidget", label: "엔티티 선택", description: "관련 데이터 선택" },
|
||
|
|
{ value: "RatingWidget", label: "별점 평가", description: "별점 선택 위젯" },
|
||
|
|
] as const;
|
||
|
|
|
||
|
|
export type ComponentName = (typeof AVAILABLE_COMPONENTS)[number]["value"];
|
||
|
|
|
||
|
|
// 컴포넌트명으로 정보 조회
|
||
|
|
export const getComponentInfo = (componentName: string) => {
|
||
|
|
return AVAILABLE_COMPONENTS.find((comp) => comp.value === componentName);
|
||
|
|
};
|
||
|
|
|
||
|
|
// 컴포넌트 존재 여부 확인
|
||
|
|
export const isValidComponent = (componentName: string): componentName is ComponentName => {
|
||
|
|
return AVAILABLE_COMPONENTS.some((comp) => comp.value === componentName);
|
||
|
|
};
|