2024-04-28 19:03:54 +08:00
|
|
|
import { Avatar, Card, Flex, Layout, Space } from 'antd';
|
|
|
|
|
import classNames from 'classnames';
|
|
|
|
|
import { componentList } from '../mock';
|
|
|
|
|
|
|
|
|
|
import { useHandleDrag } from '../hooks';
|
|
|
|
|
import styles from './index.less';
|
|
|
|
|
|
|
|
|
|
const { Sider } = Layout;
|
|
|
|
|
|
2024-05-23 18:53:04 +08:00
|
|
|
interface IProps {
|
|
|
|
|
setCollapsed: (width: boolean) => void;
|
|
|
|
|
collapsed: boolean;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const FlowSide = ({ setCollapsed, collapsed }: IProps) => {
|
|
|
|
|
const { handleDragStart } = useHandleDrag();
|
2024-04-28 19:03:54 +08:00
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<Sider
|
|
|
|
|
collapsible
|
|
|
|
|
collapsed={collapsed}
|
|
|
|
|
collapsedWidth={0}
|
|
|
|
|
theme={'light'}
|
|
|
|
|
onCollapse={(value) => setCollapsed(value)}
|
|
|
|
|
>
|
|
|
|
|
<Flex vertical gap={10} className={styles.siderContent}>
|
|
|
|
|
{componentList.map((x) => (
|
|
|
|
|
<Card
|
|
|
|
|
key={x.name}
|
|
|
|
|
hoverable
|
|
|
|
|
draggable
|
|
|
|
|
className={classNames(styles.operatorCard)}
|
2024-05-23 18:53:04 +08:00
|
|
|
onDragStart={handleDragStart(x.name)}
|
2024-04-28 19:03:54 +08:00
|
|
|
>
|
|
|
|
|
<Flex justify="space-between" align="center">
|
|
|
|
|
<Space size={15}>
|
|
|
|
|
<Avatar icon={x.icon} shape={'square'} />
|
|
|
|
|
<section>
|
|
|
|
|
<b>{x.name}</b>
|
|
|
|
|
<div>{x.description}</div>
|
|
|
|
|
</section>
|
|
|
|
|
</Space>
|
|
|
|
|
</Flex>
|
|
|
|
|
</Card>
|
|
|
|
|
))}
|
|
|
|
|
</Flex>
|
|
|
|
|
</Sider>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
2024-05-23 18:53:04 +08:00
|
|
|
export default FlowSide;
|