/** * 左侧组件面板 * 显示可拖拽的表单组件列表 */ import React from 'react'; import { useDraggable } from '@dnd-kit/core'; import { CSS } from '@dnd-kit/utilities'; import { Collapse, Typography } from 'antd'; import type { ComponentMeta } from '../config'; import { getComponentsByCategory } from '../config'; import '../styles.css'; const { Panel } = Collapse; const { Text } = Typography; // 可拖拽组件项 const DraggableComponent: React.FC<{ component: ComponentMeta }> = ({ component }) => { const { attributes, listeners, setNodeRef, transform } = useDraggable({ id: `new-${component.type}`, data: { type: component.type, isNew: true, }, }); const style = { transform: CSS.Translate.toString(transform), cursor: 'move', }; const Icon = component.icon; return (
{component.label}
); }; // 组件面板 const ComponentPanel: React.FC = () => { const componentsByCategory = getComponentsByCategory(); // 定义分类显示顺序 const categoryOrder = ['布局字段', '基础字段', '高级字段']; return (
组件列表
{categoryOrder.map((category) => { const components = componentsByCategory[category]; if (!components || components.length === 0) return null; return (
{components.map((component) => ( ))}
); })}
); }; export default ComponentPanel;