import useBodyScroll from '@/hooks/use-body-scroll'; import { ExclamationCircleFilled } from '@ant-design/icons'; import { useIntl } from '@umijs/max'; import { Button, Modal, Space, message, type ModalFuncProps } from 'antd'; import { forwardRef, useImperativeHandle, useState } from 'react'; import Styles from './index.less'; const DeleteModal = forwardRef((props, ref) => { const intl = useIntl(); const { saveScrollHeight, restoreScrollHeight } = useBodyScroll(); const [visible, setVisible] = useState(false); const [config, setConfig] = useState< ModalFuncProps & { content: string; selection?: boolean; name?: string; okText?: string; cancelText?: string; title?: string; operation: string; } >({}); useImperativeHandle(ref, () => ({ show: ( data: ModalFuncProps & { content: string; selection?: boolean; name?: string; title?: string; cancelText?: string; okText?: string; operation: string; } ) => { saveScrollHeight(); setConfig(data); setVisible(true); }, hide: () => { setVisible(false); restoreScrollHeight(); } })); const handleCancel = () => { setVisible(false); config.onCancel?.(); restoreScrollHeight(); }; const handleOk = async () => { await config.onOk?.(); message.success(intl.formatMessage({ id: 'common.message.success' })); setVisible(false); restoreScrollHeight(); }; return ( } >
{config.title ? intl.formatMessage({ id: config.title }) : intl.formatMessage({ id: 'common.title.delete.confirm' })}
); }); export default DeleteModal;