import React from 'react'; import ReactDOM from 'react-dom'; import classNames from 'classnames'; import Icon from '../icon'; import Dialog from './Modal'; import ActionButton from './ActionButton'; import { getConfirmLocale } from './locale'; export default function confirm(config) { const props = { iconType: 'question-circle', okType: 'primary', ...config, }; const prefixCls = props.prefixCls || 'ant-confirm'; let div = document.createElement('div'); document.body.appendChild(div); let width = props.width || 416; let style = props.style || {}; // 默认为 false,保持旧版默认行为 const maskClosable = props.maskClosable === undefined ? false : props.maskClosable; // 默认为 true,保持向下兼容 if (!('okCancel' in props)) { props.okCancel = true; } const runtimeLocale = getConfirmLocale(); props.okText = props.okText || (props.okCancel ? runtimeLocale.okText : runtimeLocale.justOkText); props.cancelText = props.cancelText || runtimeLocale.cancelText; function close(...args) { const unmountResult = ReactDOM.unmountComponentAtNode(div); if (unmountResult && div.parentNode) { div.parentNode.removeChild(div); } const triggerCancel = args && args.length && args.some(param => param && param.triggerCancel); if (props.onCancel && triggerCancel) { props.onCancel(...args); } } let body = (
{props.title}
{props.content}
); let footer: React.ReactElement | null = null; if (props.okCancel) { footer = (
{props.cancelText} {props.okText}
); } else { footer = (
{props.okText}
); } const classString = classNames(prefixCls, { [`${prefixCls}-${props.type}`]: true, }, props.className); ReactDOM.render(
{body} {footer}
, div); return { destroy: close, }; }