notistack#SnackbarContent TypeScript Examples
The following examples show how to use
notistack#SnackbarContent.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: snackbar.tsx From lobis-frontend with MIT License | 5 votes |
SnackMessage = forwardRef<HTMLDivElement, { id: string | number; message: Message }>((props, ref) => {
const classes = useStyles();
const { closeSnackbar } = useSnackbar();
const [expanded, setExpanded] = useState(false);
const [isCopy, setIsCopy] = useState(false);
const handleExpandClick = useCallback(() => {
setExpanded(oldExpanded => !oldExpanded);
}, []);
const handleDismiss = useCallback(() => {
closeSnackbar(props.id);
}, [props.id, closeSnackbar]);
const getIcon = (severity: Color) => {
switch (severity) {
case "error":
return <ErrorIcon color="inherit" />;
case "info":
return <InfoIcon color="inherit" />;
case "success":
return <SuccessIcon color="inherit" />;
case "warning":
return <WarningIcon color="inherit" />;
default:
return <div />;
}
};
const copyToClipboard = (text: any) => () => {
const textField = document.createElement("textarea");
textField.innerText = text;
document.body.appendChild(textField);
textField.select();
document.execCommand("copy");
textField.remove();
setIsCopy(true);
};
return (
<SnackbarContent ref={ref} className={classes.root}>
<Card className={classnames(classes.card, classes[props.message.severity])}>
<CardActions classes={{ root: classes.actionRoot }}>
{getIcon(props.message.severity)}
<Typography variant="subtitle2" className={classes.typography}>
{props.message.text}
</Typography>
<div className={classes.icons}>
{props.message.error && (
<IconButton aria-label="Show more" className={classnames(classes.expand, { [classes.expandOpen]: expanded })} onClick={handleExpandClick}>
<ExpandMoreIcon color="inherit" />
</IconButton>
)}
<IconButton className={classes.expand} onClick={handleDismiss}>
<CloseIcon color="inherit" />
</IconButton>
</div>
</CardActions>
<Collapse in={expanded} timeout="auto" unmountOnExit>
<Paper className={classes.collapse}>
<Button size="small" className={classes.button} onClick={copyToClipboard(JSON.stringify(props.message.error))}>
<CheckCircleIcon className={classnames(classes.checkIcon, { [classes.checkIconCopy]: isCopy })} />
Copy to clipboard
</Button>
<div className={classes.errorWrap}>
<Typography>Error message: </Typography>
<Typography className={classes.errorText}>{JSON.stringify(props.message.error, null, 2)}</Typography>
</div>
</Paper>
</Collapse>
</Card>
</SnackbarContent>
);
})
Example #2
Source File: snackbar.tsx From rugenerous-frontend with MIT License | 5 votes |
SnackMessage = forwardRef<HTMLDivElement, { id: string | number; message: Message }>((props, ref) => {
const classes = useStyles();
const { closeSnackbar } = useSnackbar();
const [expanded, setExpanded] = useState(false);
const [isCopy, setIsCopy] = useState(false);
const handleExpandClick = useCallback(() => {
setExpanded(oldExpanded => !oldExpanded);
}, []);
const handleDismiss = useCallback(() => {
closeSnackbar(props.id);
}, [props.id, closeSnackbar]);
const getIcon = (severity: Color) => {
switch (severity) {
case "error":
return <ErrorIcon color="inherit" />;
case "info":
return <InfoIcon color="inherit" />;
case "success":
return <SuccessIcon color="inherit" />;
case "warning":
return <WarningIcon color="inherit" />;
default:
return <div />;
}
};
return (
<SnackbarContent ref={ref} className={classes.root}>
<Card className={classnames(classes.card, classes[props.message.severity])}>
<CardActions classes={{ root: classes.actionRoot }}>
{getIcon(props.message.severity)}
<Typography variant="subtitle2" className={classes.typography}>
{props.message.text}
</Typography>
<div className={classes.icons}>
{props.message.error && (
<IconButton
aria-label="Show more"
className={classnames(classes.expand, { [classes.expandOpen]: expanded })}
onClick={handleExpandClick}
>
<ExpandMoreIcon color="inherit" />
</IconButton>
)}
<IconButton className={classes.expand} onClick={handleDismiss}>
<CloseIcon color="inherit" />
</IconButton>
</div>
</CardActions>
<Collapse in={expanded} timeout="auto" unmountOnExit>
<Paper className={classes.collapse}>
<CopyToClipboard text={JSON.stringify(props.message.error)} onCopy={() => setIsCopy(true)}>
<Button size="small" className={classes.button}>
<CheckCircleIcon className={classnames(classes.checkIcon, { [classes.checkIconCopy]: isCopy })} />
Copy to clipboard
</Button>
</CopyToClipboard>
<div className={classes.errorWrap}>
<Typography>Error message: </Typography>
<Typography className={classes.errorText}>{JSON.stringify(props.message.error, null, 2)}</Typography>
</div>
</Paper>
</Collapse>
</Card>
</SnackbarContent>
);
})
Example #3
Source File: snackbar.tsx From wonderland-frontend with MIT License | 5 votes |
SnackMessage = forwardRef<HTMLDivElement, { id: string | number; message: Message }>((props, ref) => {
const classes = useStyles();
const { closeSnackbar } = useSnackbar();
const [expanded, setExpanded] = useState(false);
const [isCopy, setIsCopy] = useState(false);
const handleExpandClick = useCallback(() => {
setExpanded(oldExpanded => !oldExpanded);
}, []);
const handleDismiss = useCallback(() => {
closeSnackbar(props.id);
}, [props.id, closeSnackbar]);
const getIcon = (severity: Color) => {
switch (severity) {
case "error":
return <ErrorIcon color="inherit" />;
case "info":
return <InfoIcon color="inherit" />;
case "success":
return <SuccessIcon color="inherit" />;
case "warning":
return <WarningIcon color="inherit" />;
default:
return <div />;
}
};
return (
<SnackbarContent ref={ref} className={classes.root}>
<Card className={classnames(classes.card, classes[props.message.severity])}>
<CardActions classes={{ root: classes.actionRoot }}>
{getIcon(props.message.severity)}
<Typography variant="subtitle2" className={classes.typography}>
{props.message.text}
</Typography>
<div className={classes.icons}>
{props.message.error && (
<IconButton aria-label="Show more" className={classnames(classes.expand, { [classes.expandOpen]: expanded })} onClick={handleExpandClick}>
<ExpandMoreIcon color="inherit" />
</IconButton>
)}
<IconButton className={classes.expand} onClick={handleDismiss}>
<CloseIcon color="inherit" />
</IconButton>
</div>
</CardActions>
<Collapse in={expanded} timeout="auto" unmountOnExit>
<Paper className={classes.collapse}>
<CopyToClipboard text={JSON.stringify(props.message.error)} onCopy={() => setIsCopy(true)}>
<Button size="small" className={classes.button}>
<CheckCircleIcon className={classnames(classes.checkIcon, { [classes.checkIconCopy]: isCopy })} />
Copy to clipboard
</Button>
</CopyToClipboard>
<div className={classes.errorWrap}>
<Typography>Error message: </Typography>
<Typography className={classes.errorText}>{JSON.stringify(props.message.error, null, 2)}</Typography>
</div>
</Paper>
</Collapse>
</Card>
</SnackbarContent>
);
})