| import { ReactComponent as MoreIcon } from '@/assets/svg/more.svg'; | |
| import { useShowDeleteConfirm } from '@/hooks/commonHooks'; | |
| import { DeleteOutlined } from '@ant-design/icons'; | |
| import { Dropdown, MenuProps, Space } from 'antd'; | |
| import { useTranslation } from 'react-i18next'; | |
| import React from 'react'; | |
| import styles from './index.less'; | |
| interface IProps { | |
| deleteItem: () => Promise<any>; | |
| } | |
| const OperateDropdown = ({ | |
| deleteItem, | |
| children, | |
| }: React.PropsWithChildren<IProps>) => { | |
| const { t } = useTranslation(); | |
| const showDeleteConfirm = useShowDeleteConfirm(); | |
| const handleDelete = () => { | |
| showDeleteConfirm({ onOk: deleteItem }); | |
| }; | |
| const handleDropdownMenuClick: MenuProps['onClick'] = ({ domEvent, key }) => { | |
| domEvent.preventDefault(); | |
| domEvent.stopPropagation(); | |
| if (key === '1') { | |
| handleDelete(); | |
| } | |
| }; | |
| const items: MenuProps['items'] = [ | |
| { | |
| key: '1', | |
| label: ( | |
| <Space> | |
| {t('common.delete')} | |
| <DeleteOutlined /> | |
| </Space> | |
| ), | |
| }, | |
| ]; | |
| return ( | |
| <Dropdown | |
| menu={{ | |
| items, | |
| onClick: handleDropdownMenuClick, | |
| }} | |
| > | |
| {children || ( | |
| <span className={styles.delete}> | |
| <MoreIcon /> | |
| </span> | |
| )} | |
| </Dropdown> | |
| ); | |
| }; | |
| export default OperateDropdown; | |