import * as React from 'react'; import {StyletronComponent} from 'styletron-react'; import {Override} from '../overrides'; export interface KIND { info: 'info'; positive: 'positive'; warning: 'warning'; negative: 'negative'; } export interface PLACEMENT { topLeft: 'topLeft'; top: 'top'; topRight: 'topRight'; bottomRight: 'bottomRight'; bottom: 'bottom'; bottomLeft: 'bottomLeft'; } export interface TYPE { inline: 'inline'; toast: 'toast'; } export interface IToaster { getRef: () => React.Ref; show: (children: React.ReactNode, props: Readonly) => React.Key; info: (children: React.ReactNode, props: Readonly) => React.Key; positive: ( children: React.ReactNode, props: Readonly, ) => React.Key; warning: ( children: React.ReactNode, props: Readonly, ) => React.Key; negative: ( children: React.ReactNode, props: Readonly, ) => React.Key; update: (key: React.Key, props: Readonly) => void; clear: (key: React.Key) => void; } export const toaster: IToaster; export interface ToasterContainerState { isMounted: boolean; toasts: Readonly; } export interface ToasterSharedStylePropsArg { $placement?: PLACEMENT[keyof PLACEMENT]; } export interface ToasterOverrides { Root?: Override; ToastBody?: Override; ToastCloseIcon?: Override; } export interface ToasterProps { overrides?: ToasterOverrides; placement?: PLACEMENT[keyof PLACEMENT]; usePortal?: boolean; autoHideDuration?: number; } export class ToasterContainer extends React.Component< Readonly, ToasterContainerState > { getToastProps(props: ToastProps): Readonly & {key: React.Key}; show(props: ToastProps): React.Key; update(key: React.Key, props: ToastProps): void; dismiss(key: React.Key): void; clearAll(): void; clear(key: React.Key): void; internalOnClose(key: React.Key): void; getOnCloseHandler(key: React.Key, onClose?: () => any): () => any; renderToast(toastProps: ToastProps & {key: React.Key}): React.ReactNode; getSharedProps(): {$placement: PLACEMENT[keyof PLACEMENT]}; } export interface SharedStylePropsArg { $kind?: KIND[keyof KIND]; $type?: TYPE[keyof TYPE]; $closeable?: boolean; $isRendered?: boolean; $isVisible?: boolean; } export interface ToastPrivateState { isVisible: boolean; isRendered: boolean; } export interface ToastOverrides { Body?: Override; CloseIcon?: Override; InnerContainer?: Override; } export interface ToastProps { autoHideDuration?: number; autoFocus?: Boolean; children?: | ((args: {dismiss: () => void}) => React.ReactNode) | React.ReactNode; closeable?: boolean; kind?: KIND[keyof KIND]; notificationType?: TYPE[keyof TYPE]; onClose?: () => any; onBlur?: (e: Event) => any; onFocus?: (e: Event) => any; onMouseEnter?: (e: Event) => any; onMouseLeave?: (e: Event) => any; 'data-baseweb'?: string; overrides?: ToastOverrides; key?: React.Key; } export class Toast extends React.Component { startTimeout(): void; clearTimeout(): void; animateIn(): void; animateOut(): void; dismiss(): void; onFocus(e: Event): void; onMouseEnter(e: Event): void; onBlur(e: Event): void; onMouseLeave(e: Event): void; getSharedProps(): Readonly; } export const Root: StyletronComponent; export const Body: StyletronComponent; export const CloseIconSvg: StyletronComponent; export const KIND: KIND; export const PLACEMENT: PLACEMENT; export const TYPE: TYPE;