Rev 5 | Rev 3584 | Ir a la última revisión | Autoría | Comparar con el anterior | Ultima modificación | Ver Log |
import React, { useEffect } from 'react'
import { useDispatch } from 'react-redux'
import { Alert } from 'react-bootstrap'
import { styled } from '@mui/material'
import { removeNotification } from '@app/redux/notification/notification.actions'
const AlertContainer = styled(Alert)`
&.alert {
transition: all 0.3s;
}
&.isShow {
animation: slideIn 0.3s;
}
&.isHidden {
animation: fadeOut 0.3s;
animation-fill-mode: forwards;
}
@keyframes slideIn {
0% {
transform: translateY(-200%);
opacity: 0;
}
100% {
transform: translateY(0);
opacity: 100;
}
}
@keyframes fadeOut {
0% {
opacity: 100;
}
100% {
opacity: 0;
}
}
`
const AlertComponent = ({ notification }) => {
const { id, style, msg } = notification
const dispatch = useDispatch()
let closeTimeOut = null
useEffect(() => {
closeTimeOut = setTimeout(() => {
dispatch(removeNotification(id))
}, 3000)
return () => {
clearTimeout(closeTimeOut)
}
}, [])
return (
<AlertContainer variant={style} className='alert' transition>
<p>{msg}</p>
</AlertContainer>
)
}
export default AlertComponent