react-fox-toast
Version:
This toast for UI which is very flexible to use
110 lines (104 loc) • 3.67 kB
text/typescript
import React$1, { ReactNode } from 'react';
type ToastType = 'success' | 'error' | 'info' | 'custom' | 'promise' | 'warning' | 'envelope' | 'drawer';
type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';
type Aria = {
role: string;
label: string;
};
interface ToastProps {
id: string;
message: ReactNode | any;
type: ToastType;
position?: ToastPosition;
duration?: number;
icon?: ReactNode;
className?: string;
style?: React.CSSProperties;
iconStyle?: React.CSSProperties;
expandable?: boolean;
expandedContent?: ReactNode;
onExpand?: any;
isClosing?: any;
isCloseBtn?: any;
expandedClassName?: string;
closeBtnStyle?: React.CSSProperties;
toastTypeTheming?: any;
spacingToast?: React.CSSProperties;
isPausedOnHover?: boolean;
direction?: string;
aria?: Aria;
}
type ToastTypeTheming = {
success: {
style: React$1.CSSProperties;
className: string;
};
error: {
style: React$1.CSSProperties;
className: string;
};
info: {
style: React$1.CSSProperties;
className: string;
};
custom: {
style: React$1.CSSProperties;
className: string;
};
};
interface ToastContainerProps {
toastTypeTheming?: ToastTypeTheming;
spacing?: number;
position?: ToastPosition;
duration?: number;
direction?: string;
isPausedOnHover?: boolean;
aria?: Aria;
}
declare const ToastContainer: React$1.FC<ToastContainerProps>;
interface Toast {
id: string;
message: React.ReactNode;
type: ToastType;
duration?: number;
position?: ToastPosition;
isClosing?: boolean;
isVisible?: boolean;
expandedContent?: React.ReactNode;
isExpanded?: boolean;
icon?: React.ReactNode;
promise?: Promise<any>;
status?: 'pending' | 'resolved' | 'rejected';
timerId?: NodeJS.Timeout;
startTime?: number;
remainingTime?: number;
isPaused?: boolean;
isPausedOnHover?: boolean;
onDismiss?: (id: string, message: React.ReactNode) => void;
onExpandContent?: (id: string, message: React.ReactNode) => void;
aria?: Aria;
}
declare const toast: ((message: React.ReactNode, options?: Partial<Omit<ToastProps, "message">>) => string) & {
success: (message: React.ReactNode, options?: Partial<Omit<ToastProps, "message" | "type">>) => string;
error: (message: React.ReactNode, options?: Partial<Omit<ToastProps, "message" | "type">>) => string;
info: (message: React.ReactNode, options?: Partial<Omit<ToastProps, "message" | "type">>) => string;
envelope: (message: React.ReactNode, options?: Partial<Omit<ToastProps, "message" | "type">>) => string;
drawer: (message: React.ReactNode, options?: Partial<Omit<ToastProps, "message" | "type">>) => string;
warning: (message: React.ReactNode, options?: Partial<Omit<ToastProps, "message" | "type">>) => string;
custom: (message: React.ReactNode, options?: Partial<Omit<ToastProps, "message" | "type">>) => string;
remove: (id: string) => void;
removeAll: () => void;
update: (id: string, updates: Partial<Toast>) => void;
pause: (id: string) => void;
remainingTime: (id: string) => number | null;
resume: (id: string) => void;
promise: <T = void>(promise: Promise<T>, { loading, success, error, position, toastOptions, }: {
loading: string;
success: string;
error: string;
duration?: number;
position?: any;
toastOptions?: Partial<ToastProps>;
}) => Promise<T>;
};
export { ToastContainer, type ToastPosition, toast };