import {useEffect} from '@wordpress/element'; import {dispatch} from '@wordpress/data'; import cx from 'classnames'; import type {Notification} from '@givewp/campaigns/types'; import {CloseIcon} from '../Icons'; import styles from './Notices.module.scss'; const Snackbar = ({notification, onDismiss}: { notification: Notification, onDismiss: () => void }) => { return (
{typeof notification.content === 'function' ? notification.content(onDismiss, notification) : notification.content}
{notification.isDismissible && ( )}
); }; const Notice = ({notification, onDismiss}: { notification: Notification, onDismiss: () => void }) => { return (
{typeof notification.content === 'function' ? notification.content(onDismiss, notification) : notification.content}
{notification.isDismissible && ( )}
); }; export default ({notification}) => { useEffect(() => { if (notification.autoHide) { setTimeout(() => { dispatch('givewp/campaign-notifications').dismissNotification(notification.id); }, notification.duration); } }, []); const onDismiss = () => { dispatch('givewp/campaign-notifications').dismissNotification(notification.id); if (typeof notification.onDismiss === 'function') { notification.onDismiss(); } }; switch (notification.notificationType) { case 'snackbar': return case 'notice': return default: return null; } }