| import { Avatar, Card, Flex, Layout, Space } from 'antd'; | |
| import classNames from 'classnames'; | |
| import { useState } from 'react'; | |
| import { componentList } from '../mock'; | |
| import { useHandleDrag } from '../hooks'; | |
| import styles from './index.less'; | |
| const { Sider } = Layout; | |
| const FlowSider = () => { | |
| const [collapsed, setCollapsed] = useState(true); | |
| const { handleDrag } = useHandleDrag(); | |
| 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)} | |
| onDragStart={handleDrag(x.name)} | |
| > | |
| <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> | |
| ); | |
| }; | |
| export default FlowSider; | |