import { IconButton } from '@mui/material'; import { closeSnackbar, OptionsObject, SnackbarKey, SnackbarMessage, useSnackbar } from 'notistack'; import React from 'react'; import { MdCancel } from 'react-icons/md'; export type EnqueueSnackbarExt = (msg: SnackbarMessage, options?: OptionsObject & { closePrior?: SnackbarKey[] }) => SnackbarKey const SnackCancelBtnComponent = (props: { snackbarId: SnackbarKey }) => { const { closeSnackbar } = useSnackbar() return { closeSnackbar(props.snackbarId); }}> } const useSnackbarExt = () => { const { enqueueSnackbar } = useSnackbar(); const enqueueSnackbarError: EnqueueSnackbarExt = (msg: SnackbarMessage, options?: OptionsObject & { closePrior?: SnackbarKey[] }) => { const {closePrior, ...rest} = options ?? {} if (options?.closePrior?.length) for (const prior of options.closePrior) closeSnackbar(prior) return enqueueSnackbar(msg, { variant: 'error', action: (id) => , ...rest, }); }; const enqueueSnackbarPersistedError: EnqueueSnackbarExt = (msg: SnackbarMessage, options?: OptionsObject & { closePrior?: SnackbarKey[] }) => { const {closePrior, ...rest} = options ?? {} if (options?.closePrior?.length) for (const prior of options.closePrior) closeSnackbar(prior) return enqueueSnackbar(msg, { variant: 'error', persist: true, action: (id) => , ...rest, }); }; const enqueueSnackbarSuccess: EnqueueSnackbarExt = (msg: SnackbarMessage, options?: OptionsObject & { closePrior?: SnackbarKey[] }) => { const {closePrior, ...rest} = options ?? {} if (options?.closePrior?.length) for (const prior of options.closePrior) closeSnackbar(prior) return enqueueSnackbar(msg, { variant: 'success', action: (id) => , ...rest, }); }; const enqueueSnackbarPersistedSuccess: EnqueueSnackbarExt = (msg: SnackbarMessage, options?: OptionsObject & { closePrior?: SnackbarKey[] }) => { const {closePrior, ...rest} = options ?? {} if (options?.closePrior?.length) for (const prior of options.closePrior) closeSnackbar(prior) return enqueueSnackbar(msg, { variant: 'success', persist: true, action: (id) => , ...rest, }); }; const enqueueSnackbarInfo: EnqueueSnackbarExt = (msg: SnackbarMessage, options?: OptionsObject & { closePrior?: SnackbarKey[] }) => { const {closePrior, ...rest} = options ?? {} if (options?.closePrior?.length) for (const prior of options.closePrior) closeSnackbar(prior) return enqueueSnackbar(msg, { variant: 'info', action: (id) => , ...rest, }); }; const enqueueSnackbarPersistedInfo: EnqueueSnackbarExt = (msg: SnackbarMessage, options?: OptionsObject & { closePrior?: SnackbarKey[] }) => { const {closePrior, ...rest} = options ?? {} if (options?.closePrior?.length) for (const prior of options.closePrior) closeSnackbar(prior) return enqueueSnackbar(msg, { variant: 'info', persist: true, action: (id) => , ...rest, }); }; const enqueueSnackbarWarning: EnqueueSnackbarExt = (msg: SnackbarMessage, options?: OptionsObject & { closePrior?: SnackbarKey[] }) => { const {closePrior, ...rest} = options ?? {} if (options?.closePrior?.length) for (const prior of options.closePrior) closeSnackbar(prior) return enqueueSnackbar(msg, { variant: 'warning', action: (id) => , ...rest, }); }; const enqueueSnackbarPersistedWarning: EnqueueSnackbarExt = (msg: SnackbarMessage, options?: OptionsObject & { closePrior?: SnackbarKey[] }) => { const {closePrior, ...rest} = options ?? {} if (options?.closePrior?.length) for (const prior of options.closePrior) closeSnackbar(prior) return enqueueSnackbar(msg, { variant: 'warning', persist: true, action: (id) => , ...rest, }); }; return { enqueueSnackbarError, enqueueSnackbarPersistedError, enqueueSnackbarSuccess, enqueueSnackbarPersistedSuccess, enqueueSnackbarInfo, enqueueSnackbarPersistedInfo, enqueueSnackbarWarning, enqueueSnackbarPersistedWarning, }; }; export default useSnackbarExt;