| 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; |