mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-06 07:03:45 +08:00
* chore: Upgrade to React 18 * runfix: Add children type to FC components * chore: Remove @types/react
68 lines
1.3 KiB
TypeScript
68 lines
1.3 KiB
TypeScript
import { ReactNode } from "react";
|
|
import {
|
|
Button,
|
|
Dialog,
|
|
DialogActions,
|
|
DialogContent,
|
|
DialogTitle,
|
|
type SxProps,
|
|
type Theme,
|
|
} from "@mui/material";
|
|
|
|
interface Props {
|
|
title: ReactNode;
|
|
open: boolean;
|
|
okBtn?: ReactNode;
|
|
cancelBtn?: ReactNode;
|
|
disableOk?: boolean;
|
|
disableCancel?: boolean;
|
|
disableFooter?: boolean;
|
|
contentSx?: SxProps<Theme>;
|
|
children?: ReactNode;
|
|
onOk?: () => void;
|
|
onCancel?: () => void;
|
|
onClose?: () => void;
|
|
}
|
|
|
|
export interface DialogRef {
|
|
open: () => void;
|
|
close: () => void;
|
|
}
|
|
|
|
export const BaseDialog: React.FC<Props> = (props) => {
|
|
const {
|
|
open,
|
|
title,
|
|
children,
|
|
okBtn,
|
|
cancelBtn,
|
|
contentSx,
|
|
disableCancel,
|
|
disableOk,
|
|
disableFooter,
|
|
} = props;
|
|
|
|
return (
|
|
<Dialog open={open} onClose={props.onClose}>
|
|
<DialogTitle>{title}</DialogTitle>
|
|
|
|
<DialogContent sx={contentSx}>{children}</DialogContent>
|
|
|
|
{!disableFooter && (
|
|
<DialogActions>
|
|
{!disableCancel && (
|
|
<Button variant="outlined" onClick={props.onCancel}>
|
|
{cancelBtn}
|
|
</Button>
|
|
)}
|
|
{!disableOk && (
|
|
<Button variant="contained" onClick={props.onOk}>
|
|
{okBtn}
|
|
</Button>
|
|
)}
|
|
</DialogActions>
|
|
)}
|
|
</Dialog>
|
|
);
|
|
};
|