import * as React from 'react';
import base from '../../_styles/themes/default.basic';
import guid from '../../_utils/guid';
import MDActivityIndicator from '../activity-indicator';
import RootView from '../root-view';
import MDToastView from './toast';
import MDToastWrapper from './wrapper';
const toastKeys: string[] = [];
export interface IMDToastProps {
content: string;
icon?: string;
duration?: number;
position?: string;
hasMask?: boolean;
}
const setting = (
content: string,
duration: number = 3000,
hasMask: boolean = false,
icon: React.ReactNode = null,
position: string = 'center'
) => {
if (!content) {
console.warn('[MDToast]: content empty.');
}
const toastAndWrapper = (
);
RootView.add(toastAndWrapper);
if (duration) {
setTimeout(() => RootView.remove(toastAndWrapper.key as string), duration);
} else {
toastKeys.push(toastAndWrapper.key as string);
}
};
export default function MDToast (params: IMDToastProps) {
// todo svg 设计上应该用上
const { content, icon, duration, position, hasMask } = params;
setting(content, duration, hasMask, icon, position);
}
MDToast.info = (content: string, duration?: number, hasMask?: boolean, icon?: React.ReactNode | string) => {
setting(content, duration, hasMask, icon);
};
MDToast.warn = (content: string, duration?: number, hasMask?: boolean) => {
setting(content, duration, hasMask, 'warn');
};
MDToast.succeed = (
content: string = '操作成功',
duration?: number,
hasMask?: boolean
) => {
setting(content, duration, hasMask, 'checked');
};
MDToast.failed = (
content: string = '操作失败',
duration?: number,
hasMask?: boolean
) => {
setting(content, duration, hasMask, 'clear');
};
MDToast.loading = (
content: string = '加载中...',
duration?: number,
hasMask?: boolean
) => {
const icon = (
);
setting(content, duration, hasMask, icon);
};
MDToast.hide = () => {
if (toastKeys.length > 0) {
toastKeys.forEach((key) => {
RootView.remove(key);
});
toastKeys.length = 0;
}
};