skyouc
4 天以前 27f59f44345d044967e2048f09dbd704f90ce3db
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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;