import * as React from 'react'; import { dialog } from '../../_styles/themes/default.components'; import guid from '../../_utils/guid'; import MDIcon from '../icon'; import RootView from '../root-view'; import Dialog, { IMDDialogBtnModel } from './dialog'; export interface IMDDialogProps { isVisible: boolean; closeable: boolean; icon?: React.ReactNode; iconColor?: string; title?: string; context: string; btns: IMDDialogBtnModel[]; } export interface IMDConfirmPrams { isVisible: boolean; closeable: boolean; icon?: string; iconColor?: string; title?: string; context: string; cancelText?: string; confirmText: string; onConfirm?: () => void; } const MDDialog = (props: IMDDialogProps) => { const { isVisible, closeable, icon, iconColor, title, context, btns } = props; const _dialog = dialogWrapper( isVisible, closeable, icon!, iconColor!, title!, context, btns ); return _dialog; }; // 自定义 MDDialog.show = (prams: IMDDialogProps) => { const { isVisible, closeable, icon, iconColor, title, context, btns } = prams; const _dialog = dialogWrapper( isVisible, closeable!, icon!, iconColor!, title!, context, btns ); RootView.add(_dialog); return _dialog; }; MDDialog.alert = (prams: IMDConfirmPrams) => { const { isVisible, closeable, icon, iconColor, title, context, confirmText, onConfirm, } = prams; const _dialog = dialogWrapper( isVisible, closeable, icon!, iconColor!, title!, context, [ { text: confirmText, handle: () => { onConfirm && onConfirm!(); closeDialog(); }, }, ] ); function closeDialog () { if (_dialog.key) { MDDialog.hide(_dialog.key as string); } } RootView.add(_dialog); return _dialog; }; MDDialog.confirm = (prams: IMDConfirmPrams) => { const { isVisible, closeable, icon, iconColor, title, context, cancelText, confirmText, onConfirm, } = prams; const _dialog = dialogWrapper( isVisible, closeable, icon!, iconColor!, title!, context, [ { text: cancelText!, handle: closeDialog, }, { text: confirmText, handle: () => { onConfirm && onConfirm!(); closeDialog(); }, }, ] ); function closeDialog () { if (_dialog.key) { MDDialog.hide(_dialog.key as string); } } RootView.add(_dialog); return _dialog; }; MDDialog.succeed = (props: any) => { props.icon = ; const _dialog = MDDialog.confirm({ ...props }); return _dialog; }; MDDialog.failed = (props: any) => { props.icon = ; const _dialog = MDDialog.confirm({ ...props }); return _dialog; }; MDDialog.hide = (key: string) => RootView.remove(key); const dialogWrapper = ( isVisible: boolean, closeable: boolean, icon: React.ReactNode, iconColor: string, title: string, context: string, btns: IMDDialogBtnModel[] ) => { const _dialog = ( ); return _dialog; }; export default MDDialog;