@totalsoft/rocket-ui
Version:
A set of reusable and composable React components built on top of Material UI core for developing fast and friendly web applications interfaces.
48 lines • 2 kB
JavaScript
// Copyright (c) TotalSoft.
// This source code is licensed under the MIT license.
import { useCallback } from 'react';
import { toast } from 'react-toastify';
import { classes } from './ToastStyles';
import cx from 'classnames';
import { getTransitionType } from './types';
import Toast from './utils';
import React from 'react';
const useToast = () => {
return useCallback(
/**
*
* @param {ToastContent} message The content to be displayed. It can be a string or a React component.
* @param {('success'|'info'|'warning'|'error')} variant The type of the toast
* @param {ToastOptions} options Additional options passed to the toast
*/
(message, variant, { transitionType, actions, ...restOptions } = {}) => {
const toastClasses = cx({
[classes[variant]]: variant,
[classes['default']]: true
});
const options = {
...restOptions,
transition: getTransitionType(transitionType),
className: toastClasses
};
switch (variant) {
case 'error':
toast.error(React.createElement(Toast, { message: message, variant: variant, actions: actions }), options);
break;
case 'info':
toast.info(React.createElement(Toast, { message: message, variant: variant, actions: actions }), options);
break;
case 'success':
toast.success(React.createElement(Toast, { message: message, variant: variant, actions: actions }), options);
break;
case 'warning':
toast.warn(React.createElement(Toast, { message: message, variant: variant, actions: actions }), options);
break;
default:
toast(React.createElement(Toast, { message: message, variant: variant, actions: actions }), options);
break;
}
}, []);
};
export default useToast;
//# sourceMappingURL=useToast.js.map