import React, { useState, useRef, useEffect, useMemo, useCallback } from "react";
|
import { Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle } from '@mui/material';
|
import {
|
useTranslate,
|
} from 'react-admin';
|
|
const ConfirmButton = (props) => {
|
const { label, onConfirm, data, ...rest } = props;
|
const translate = useTranslate();
|
const buttonRef = useRef(null);
|
const [open, setOpen] = useState(false);
|
|
const handleClickOpen = (event) => {
|
event.stopPropagation();
|
setOpen(true);
|
};
|
|
const handleClose = (event) => {
|
event.stopPropagation();
|
setOpen(false);
|
};
|
|
const handleConfirm = (event) => {
|
handleClose(event);
|
onConfirm();
|
};
|
|
return (
|
<>
|
<Button
|
ref={buttonRef}
|
onClick={handleClickOpen}
|
aria-label={translate(label)}
|
{...rest}
|
>
|
{translate(label)}
|
</Button>
|
<Dialog
|
aria-labelledby="dialog-title"
|
aria-describedby="dialog-description"
|
open={open}
|
onClose={handleClose}
|
>
|
<DialogTitle>{translate('common.msg.confirm.tip')}</DialogTitle>
|
<DialogContent>
|
<DialogContentText>
|
{data ? data : translate('common.msg.confirm.desc')}
|
</DialogContentText>
|
</DialogContent>
|
<DialogActions>
|
<Button onClick={handleClose} color="primary">
|
{translate('ra.action.cancel')}
|
</Button>
|
<Button onClick={handleConfirm} color="primary">
|
{translate('ra.action.confirm')}
|
</Button>
|
</DialogActions>
|
</Dialog>
|
</>
|
)
|
}
|
|
export default ConfirmButton;
|