-
-
Notifications
You must be signed in to change notification settings - Fork 13
/
ButtonConfirmation.tsx
66 lines (61 loc) · 1.61 KB
/
ButtonConfirmation.tsx
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
64
65
66
import {
Button,
Dialog,
DialogActions,
DialogContent,
DialogContentText,
DialogTitle,
} from "@material-ui/core";
import React from "react";
import { Translate } from "react-localize-redux";
import LoadingButton from "./LoadingButton";
interface ButtonConfirmationProps {
open: boolean;
textId: string;
titleId: string;
onClose: () => void;
onConfirm: () => void | Promise<void>;
}
/**
* Button for archiving/restoring project (changing isActive)
*/
export default function ButtonConfirmation(props: ButtonConfirmationProps) {
const [loading, setLoading] = React.useState<boolean>(false);
async function onConfirm() {
setLoading(true);
await props.onConfirm();
setLoading(false);
props.onClose();
}
return (
<Dialog
open={props.open}
onClose={props.onClose}
aria-labelledby="alert-dialog-title"
aria-describedby="alert-dialog-description"
>
<DialogTitle id="alert-dialog-title">
<Translate id={props.titleId} />
</DialogTitle>
<DialogContent>
<DialogContentText id="alert-dialog-description">
<Translate id={props.textId} />
</DialogContentText>
</DialogContent>
<DialogActions>
<Button onClick={props.onClose} variant="outlined" color="primary">
<Translate id="buttons.cancel" />
</Button>
<LoadingButton
onClick={onConfirm}
color="primary"
variant="contained"
loading={loading}
{...props}
>
<Translate id="buttons.confirm" />
</LoadingButton>
</DialogActions>
</Dialog>
);
}