| import OperateDropdown from '@/components/operate-dropdown'; | |
| import { CopyOutlined } from '@ant-design/icons'; | |
| import { Flex, MenuProps } from 'antd'; | |
| import { useCallback } from 'react'; | |
| import { useTranslation } from 'react-i18next'; | |
| import useGraphStore from '../../store'; | |
| interface IProps { | |
| id: string; | |
| iconFontColor?: string; | |
| } | |
| const NodeDropdown = ({ id, iconFontColor }: IProps) => { | |
| const { t } = useTranslation(); | |
| const deleteNodeById = useGraphStore((store) => store.deleteNodeById); | |
| const duplicateNodeById = useGraphStore((store) => store.duplicateNode); | |
| const deleteNode = useCallback(() => { | |
| deleteNodeById(id); | |
| }, [id, deleteNodeById]); | |
| const duplicateNode = useCallback(() => { | |
| duplicateNodeById(id); | |
| }, [id, duplicateNodeById]); | |
| const items: MenuProps['items'] = [ | |
| { | |
| key: '2', | |
| onClick: duplicateNode, | |
| label: ( | |
| <Flex justify={'space-between'}> | |
| {t('common.copy')} | |
| <CopyOutlined /> | |
| </Flex> | |
| ), | |
| }, | |
| ]; | |
| return ( | |
| <OperateDropdown | |
| iconFontSize={14} | |
| height={14} | |
| deleteItem={deleteNode} | |
| items={items} | |
| needsDeletionValidation={false} | |
| iconFontColor={iconFontColor} | |
| ></OperateDropdown> | |
| ); | |
| }; | |
| export default NodeDropdown; | |