import { DynamicFormItemType, IDynamicFormItemSchema, } from '@/app/infra/entities/form/dynamic'; import { Input } from "@/components/ui/input" import { Select, SelectContent, SelectGroup, SelectItem, SelectLabel, SelectTrigger, SelectValue } from "@/components/ui/select" import { Switch } from "@/components/ui/switch" import { ControllerRenderProps } from "react-hook-form"; import { Button } from "@/components/ui/button"; export default function DynamicFormItemComponent({ config, field, }: { config: IDynamicFormItemSchema; field: ControllerRenderProps; }) { switch (config.type) { case DynamicFormItemType.INT: case DynamicFormItemType.FLOAT: return ( field.onChange(Number(e.target.value))} /> ); case DynamicFormItemType.STRING: return ; case DynamicFormItemType.BOOLEAN: return ( ); case DynamicFormItemType.STRING_ARRAY: return (
{field.value.map((item: string, index: number) => (
{ const newValue = [...field.value]; newValue[index] = e.target.value; field.onChange(newValue); }} />
))}
); case DynamicFormItemType.SELECT: return ( ); case DynamicFormItemType.PROMPT_EDITOR: return (
{field.value.map((item: { role: string; content: string }, index: number) => (
{/* 角色选择 */} {index === 0 ? (
system
) : ( )} {/* 内容输入 */} { const newValue = [...field.value]; newValue[index] = { ...newValue[index], content: e.target.value }; field.onChange(newValue); }} /> {/* 删除按钮,第一轮不显示 */} {index !== 0 && ( )}
))}
); default: return ; } }