mirror of
https://github.com/yuezk/GlobalProtect-openconnect.git
synced 2025-05-20 07:26:58 -04:00
69 lines
1.3 KiB
TypeScript
69 lines
1.3 KiB
TypeScript
import {
|
|
Alert,
|
|
AlertColor,
|
|
AlertTitle,
|
|
Slide,
|
|
SlideProps,
|
|
Snackbar,
|
|
SnackbarCloseReason,
|
|
} from "@mui/material";
|
|
|
|
type TransitionProps = Omit<SlideProps, "direction">;
|
|
|
|
function TransitionDown(props: TransitionProps) {
|
|
return <Slide {...props} direction="down" />;
|
|
}
|
|
|
|
export type NotificationType = AlertColor;
|
|
export type NotificationConfig = {
|
|
open: boolean;
|
|
message: string;
|
|
title?: string;
|
|
type?: NotificationType;
|
|
};
|
|
|
|
type NotificationProps = {
|
|
onClose: () => void;
|
|
} & NotificationConfig;
|
|
|
|
export default function Notification(props: NotificationProps) {
|
|
const { open, message, title, type = "info", onClose } = props;
|
|
|
|
function handleClose(
|
|
_: React.SyntheticEvent | Event,
|
|
reason?: SnackbarCloseReason
|
|
) {
|
|
if (reason === "clickaway") {
|
|
return;
|
|
}
|
|
onClose();
|
|
}
|
|
|
|
return (
|
|
<Snackbar
|
|
open={open}
|
|
anchorOrigin={{ vertical: "top", horizontal: "center" }}
|
|
autoHideDuration={5000}
|
|
TransitionComponent={TransitionDown}
|
|
onClose={handleClose}
|
|
sx={{
|
|
top: 0,
|
|
left: 0,
|
|
right: 0,
|
|
}}
|
|
>
|
|
<Alert
|
|
severity={type}
|
|
icon={false}
|
|
sx={{
|
|
width: "100%",
|
|
borderRadius: 0,
|
|
}}
|
|
>
|
|
{title && <AlertTitle>{title}</AlertTitle>}
|
|
{message}
|
|
</Alert>
|
|
</Snackbar>
|
|
);
|
|
}
|