balibabu
feat: add GraphAvatar to graph list #918 (#1385)
7a2a8fe
raw
history blame
1.78 kB
import { formatDate } from '@/utils/date';
import { CalendarOutlined } from '@ant-design/icons';
import { Card, Typography } from 'antd';
import { useNavigate } from 'umi';
import OperateDropdown from '@/components/operate-dropdown';
import { useDeleteFlow } from '@/hooks/flow-hooks';
import { IFlow } from '@/interfaces/database/flow';
import { useCallback } from 'react';
import GraphAvatar from '../graph-avatar';
import styles from './index.less';
interface IProps {
item: IFlow;
}
const FlowCard = ({ item }: IProps) => {
const navigate = useNavigate();
const { deleteFlow } = useDeleteFlow();
const removeFlow = useCallback(() => {
return deleteFlow([item.id]);
}, [deleteFlow, item]);
const handleCardClick = () => {
navigate(`/flow/${item.id}`);
};
return (
<Card className={styles.card} onClick={handleCardClick}>
<div className={styles.container}>
<div className={styles.content}>
<GraphAvatar avatar={item.avatar}></GraphAvatar>
<OperateDropdown deleteItem={removeFlow}></OperateDropdown>
</div>
<div className={styles.titleWrapper}>
<Typography.Title
className={styles.title}
ellipsis={{ tooltip: item.title }}
>
{item.title}
</Typography.Title>
<p>{item.description}</p>
</div>
<div className={styles.footer}>
<div className={styles.bottom}>
<div className={styles.bottomLeft}>
<CalendarOutlined className={styles.leftIcon} />
<span className={styles.rightText}>
{formatDate(item.update_time)}
</span>
</div>
</div>
</div>
</div>
</Card>
);
};
export default FlowCard;