58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
import Dialog from "@mui/material/Dialog";
|
|
import DialogTitle from "@mui/material/DialogTitle";
|
|
import DialogContent from "@mui/material/DialogContent";
|
|
import DialogContentText from "@mui/material/DialogContentText";
|
|
import DialogActions from "@mui/material/DialogActions";
|
|
import MuiButton from "@mui/material/Button";
|
|
|
|
export interface ConfirmDialogProps {
|
|
isOpen: boolean;
|
|
onClose: () => void;
|
|
onConfirm: () => void;
|
|
title: string;
|
|
message: string;
|
|
confirmText?: string;
|
|
cancelText?: string;
|
|
confirmVariant?: "primary" | "danger";
|
|
loading?: boolean;
|
|
}
|
|
|
|
/** Confirmation dialog over MUI Dialog. Preserves the legacy ConfirmModal prop shape. */
|
|
export default function ConfirmDialog({
|
|
isOpen,
|
|
onClose,
|
|
onConfirm,
|
|
title,
|
|
message,
|
|
confirmText = "Potvrdit",
|
|
cancelText = "Zrušit",
|
|
confirmVariant = "primary",
|
|
loading = false,
|
|
}: ConfirmDialogProps) {
|
|
return (
|
|
<Dialog
|
|
open={isOpen}
|
|
onClose={loading ? undefined : onClose}
|
|
slotProps={{ paper: { sx: { borderRadius: 3 } } }}
|
|
>
|
|
<DialogTitle>{title}</DialogTitle>
|
|
<DialogContent>
|
|
<DialogContentText>{message}</DialogContentText>
|
|
</DialogContent>
|
|
<DialogActions sx={{ px: 3, pb: 2 }}>
|
|
<MuiButton onClick={onClose} color="inherit" disabled={loading}>
|
|
{cancelText}
|
|
</MuiButton>
|
|
<MuiButton
|
|
onClick={onConfirm}
|
|
variant="contained"
|
|
color={confirmVariant === "danger" ? "error" : "primary"}
|
|
disabled={loading}
|
|
>
|
|
{loading ? "Pracuji…" : confirmText}
|
|
</MuiButton>
|
|
</DialogActions>
|
|
</Dialog>
|
|
);
|
|
}
|