mirror of
https://github.com/sasjs/server.git
synced 2026-01-20 04:10:06 +00:00
chore: add snackbar for showing success alert
This commit is contained in:
62
web/src/components/snackbar.tsx
Normal file
62
web/src/components/snackbar.tsx
Normal file
@@ -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<HTMLDivElement, AlertProps>(function Alert(
|
||||||
|
props,
|
||||||
|
ref
|
||||||
|
) {
|
||||||
|
return <MuiAlert elevation={6} ref={ref} variant="filled" {...props} />
|
||||||
|
})
|
||||||
|
|
||||||
|
const Transition = (props: SlideProps) => {
|
||||||
|
return <Slide {...props} direction="up" />
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum AlertSeverityType {
|
||||||
|
Success = 'success',
|
||||||
|
Warning = 'warning',
|
||||||
|
Info = 'info',
|
||||||
|
Error = 'error'
|
||||||
|
}
|
||||||
|
|
||||||
|
type BootstrapSnackbarProps = {
|
||||||
|
open: boolean
|
||||||
|
setOpen: Dispatch<SetStateAction<boolean>>
|
||||||
|
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 (
|
||||||
|
<Snackbar
|
||||||
|
open={open}
|
||||||
|
autoHideDuration={3000}
|
||||||
|
onClose={handleClose}
|
||||||
|
TransitionComponent={Transition}
|
||||||
|
>
|
||||||
|
<Alert onClose={handleClose} severity={severity} sx={{ width: '100%' }}>
|
||||||
|
{message}
|
||||||
|
</Alert>
|
||||||
|
</Snackbar>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default BootstrapSnackbar
|
||||||
@@ -29,6 +29,7 @@ import PermissionFilterModal from './permissionFilterModal'
|
|||||||
import AddPermissionModal from './addPermissionModal'
|
import AddPermissionModal from './addPermissionModal'
|
||||||
import UpdatePermissionModal from './updatePermissionModal'
|
import UpdatePermissionModal from './updatePermissionModal'
|
||||||
import DeleteModal from './deletePermissionModal'
|
import DeleteModal from './deletePermissionModal'
|
||||||
|
import BootstrapSnackbar, { AlertSeverityType } from '../../components/snackbar'
|
||||||
|
|
||||||
import {
|
import {
|
||||||
GroupDetailsResponse,
|
GroupDetailsResponse,
|
||||||
@@ -52,6 +53,11 @@ const Permission = () => {
|
|||||||
const [openModal, setOpenModal] = useState(false)
|
const [openModal, setOpenModal] = useState(false)
|
||||||
const [modalTitle, setModalTitle] = useState('')
|
const [modalTitle, setModalTitle] = useState('')
|
||||||
const [modalPayload, setModalPayload] = useState('')
|
const [modalPayload, setModalPayload] = useState('')
|
||||||
|
const [openSnackbar, setOpenSnackbar] = useState(false)
|
||||||
|
const [snackbarMessage, setSnackbarMessage] = useState('')
|
||||||
|
const [snackbarSeverity, setSnackbarSeverity] = useState<AlertSeverityType>(
|
||||||
|
AlertSeverityType.Success
|
||||||
|
)
|
||||||
const [addPermissionModalOpen, setAddPermissionModalOpen] = useState(false)
|
const [addPermissionModalOpen, setAddPermissionModalOpen] = useState(false)
|
||||||
const [updatePermissionModalOpen, setUpdatePermissionModalOpen] =
|
const [updatePermissionModalOpen, setUpdatePermissionModalOpen] =
|
||||||
useState(false)
|
useState(false)
|
||||||
@@ -177,9 +183,9 @@ const Permission = () => {
|
|||||||
.post('/SASjsApi/permission', addPermissionPayload)
|
.post('/SASjsApi/permission', addPermissionPayload)
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
fetchPermissions()
|
fetchPermissions()
|
||||||
setModalTitle('Success')
|
setSnackbarMessage('Permission added!')
|
||||||
setModalPayload('Permission added Successfully.')
|
setSnackbarSeverity(AlertSeverityType.Success)
|
||||||
setOpenModal(true)
|
setOpenSnackbar(true)
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
setModalTitle('Abort')
|
setModalTitle('Abort')
|
||||||
@@ -209,9 +215,9 @@ const Permission = () => {
|
|||||||
})
|
})
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
fetchPermissions()
|
fetchPermissions()
|
||||||
setModalTitle('Success')
|
setSnackbarMessage('Permission updated!')
|
||||||
setModalPayload('Permission updated Successfully.')
|
setSnackbarSeverity(AlertSeverityType.Success)
|
||||||
setOpenModal(true)
|
setOpenSnackbar(true)
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
setModalTitle('Abort')
|
setModalTitle('Abort')
|
||||||
@@ -240,9 +246,9 @@ const Permission = () => {
|
|||||||
.delete(`/SASjsApi/permission/${selectedPermission?.permissionId}`)
|
.delete(`/SASjsApi/permission/${selectedPermission?.permissionId}`)
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
fetchPermissions()
|
fetchPermissions()
|
||||||
setModalTitle('Success')
|
setSnackbarMessage('Permission deleted!')
|
||||||
setModalPayload('Permission deleted Successfully.')
|
setSnackbarSeverity(AlertSeverityType.Success)
|
||||||
setOpenModal(true)
|
setOpenSnackbar(true)
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
setModalTitle('Abort')
|
setModalTitle('Abort')
|
||||||
@@ -294,6 +300,12 @@ const Permission = () => {
|
|||||||
/>
|
/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
<BootstrapSnackbar
|
||||||
|
open={openSnackbar}
|
||||||
|
setOpen={setOpenSnackbar}
|
||||||
|
message={snackbarMessage}
|
||||||
|
severity={snackbarSeverity}
|
||||||
|
/>
|
||||||
<Modal
|
<Modal
|
||||||
open={openModal}
|
open={openModal}
|
||||||
setOpen={setOpenModal}
|
setOpen={setOpenModal}
|
||||||
@@ -454,7 +466,7 @@ const DisplayGroup = ({ group }: DisplayGroupProps) => {
|
|||||||
disableRestoreFocus
|
disableRestoreFocus
|
||||||
>
|
>
|
||||||
<Typography sx={{ p: 1 }} variant="h6" component="div">
|
<Typography sx={{ p: 1 }} variant="h6" component="div">
|
||||||
Group Users
|
Group Members
|
||||||
</Typography>
|
</Typography>
|
||||||
{group.users.map((user) => (
|
{group.users.map((user) => (
|
||||||
<Typography sx={{ p: 1 }} component="li">
|
<Typography sx={{ p: 1 }} component="li">
|
||||||
|
|||||||
Reference in New Issue
Block a user