From 4c35e0480230aaf8288f14badc3763554f66b45e Mon Sep 17 00:00:00 2001 From: Sabir Hassan Date: Mon, 4 Jul 2022 16:00:23 +0500 Subject: [PATCH] chore: add snackbar for showing success alert --- web/src/components/snackbar.tsx | 62 ++++++++++++++++++++++ web/src/containers/Settings/permission.tsx | 32 +++++++---- 2 files changed, 84 insertions(+), 10 deletions(-) create mode 100644 web/src/components/snackbar.tsx diff --git a/web/src/components/snackbar.tsx b/web/src/components/snackbar.tsx new file mode 100644 index 0000000..ed4328c --- /dev/null +++ b/web/src/components/snackbar.tsx @@ -0,0 +1,62 @@ +import React, { Dispatch, SetStateAction } from 'react' +import Snackbar from '@mui/material/Snackbar' +import MuiAlert, { AlertProps } from '@mui/material/Alert' +import Slide, { SlideProps } from '@mui/material/Slide' + +const Alert = React.forwardRef(function Alert( + props, + ref +) { + return +}) + +const Transition = (props: SlideProps) => { + return +} + +export enum AlertSeverityType { + Success = 'success', + Warning = 'warning', + Info = 'info', + Error = 'error' +} + +type BootstrapSnackbarProps = { + open: boolean + setOpen: Dispatch> + message: string + severity: AlertSeverityType +} + +const BootstrapSnackbar = ({ + open, + setOpen, + message, + severity +}: BootstrapSnackbarProps) => { + const handleClose = ( + event: React.SyntheticEvent | Event, + reason?: string + ) => { + if (reason === 'clickaway') { + return + } + + setOpen(false) + } + + return ( + + + {message} + + + ) +} + +export default BootstrapSnackbar diff --git a/web/src/containers/Settings/permission.tsx b/web/src/containers/Settings/permission.tsx index 9f69793..86f5fc6 100644 --- a/web/src/containers/Settings/permission.tsx +++ b/web/src/containers/Settings/permission.tsx @@ -29,6 +29,7 @@ import PermissionFilterModal from './permissionFilterModal' import AddPermissionModal from './addPermissionModal' import UpdatePermissionModal from './updatePermissionModal' import DeleteModal from './deletePermissionModal' +import BootstrapSnackbar, { AlertSeverityType } from '../../components/snackbar' import { GroupDetailsResponse, @@ -52,6 +53,11 @@ const Permission = () => { const [openModal, setOpenModal] = useState(false) const [modalTitle, setModalTitle] = useState('') const [modalPayload, setModalPayload] = useState('') + const [openSnackbar, setOpenSnackbar] = useState(false) + const [snackbarMessage, setSnackbarMessage] = useState('') + const [snackbarSeverity, setSnackbarSeverity] = useState( + AlertSeverityType.Success + ) const [addPermissionModalOpen, setAddPermissionModalOpen] = useState(false) const [updatePermissionModalOpen, setUpdatePermissionModalOpen] = useState(false) @@ -177,9 +183,9 @@ const Permission = () => { .post('/SASjsApi/permission', addPermissionPayload) .then((res: any) => { fetchPermissions() - setModalTitle('Success') - setModalPayload('Permission added Successfully.') - setOpenModal(true) + setSnackbarMessage('Permission added!') + setSnackbarSeverity(AlertSeverityType.Success) + setOpenSnackbar(true) }) .catch((err) => { setModalTitle('Abort') @@ -209,9 +215,9 @@ const Permission = () => { }) .then((res: any) => { fetchPermissions() - setModalTitle('Success') - setModalPayload('Permission updated Successfully.') - setOpenModal(true) + setSnackbarMessage('Permission updated!') + setSnackbarSeverity(AlertSeverityType.Success) + setOpenSnackbar(true) }) .catch((err) => { setModalTitle('Abort') @@ -240,9 +246,9 @@ const Permission = () => { .delete(`/SASjsApi/permission/${selectedPermission?.permissionId}`) .then((res: any) => { fetchPermissions() - setModalTitle('Success') - setModalPayload('Permission deleted Successfully.') - setOpenModal(true) + setSnackbarMessage('Permission deleted!') + setSnackbarSeverity(AlertSeverityType.Success) + setOpenSnackbar(true) }) .catch((err) => { setModalTitle('Abort') @@ -294,6 +300,12 @@ const Permission = () => { /> + { disableRestoreFocus > - Group Users + Group Members {group.users.map((user) => (