UNPKG

acud

Version:

acg react 组件库

172 lines • 6.2 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; var __rest = this && this.__rest || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; import * as React from 'react'; import FilledError from "acud-icon/es/icons/FilledError"; import OutlinedClose from "acud-icon/es/icons/OutlinedClose"; import FilledSuccess from "acud-icon/es/icons/FilledSuccess"; import FilledWarn from "acud-icon/es/icons/FilledWarn"; import FilledInfo from "acud-icon/es/icons/FilledInfo"; import classNames from 'classnames'; import ConfigProvider, { ConfigContext, globalConfig } from '../config-provider'; import Button from '../button'; import Modal from './Modal'; import { useLocaleReceiver } from '../locale-provider/LocaleReceiver'; import { getModalLocale } from './locale'; var DialogType = { success: { className: 'sucess', icon: /*#__PURE__*/React.createElement(FilledSuccess, { color: "@S6" }) }, warning: { className: 'warning', icon: /*#__PURE__*/React.createElement(FilledWarn, { color: "@W6" }) }, confirm: { className: 'confirm', icon: /*#__PURE__*/React.createElement(FilledWarn, { color: "@W6" }) }, info: { className: 'info', icon: /*#__PURE__*/React.createElement(FilledInfo, { color: "@B6" }) }, error: { className: 'error', icon: /*#__PURE__*/React.createElement(FilledError, { color: "@E6" }) } }; var DialogBox = function DialogBox(props) { var className = props.className, title = props.title, content = props.content, closeIcon = props.closeIcon, cancelBtn = props.cancelBtn, okText = props.okText, confirmLoading = props.confirmLoading, onOk = props.onOk, onClose = props.onClose, icon = props.icon, getContainer = props.getContainer, propsPrefixCls = props.prefixCls, restProps = __rest(props, ["className", "title", "content", "closeIcon", "cancelBtn", "okText", "confirmLoading", "onOk", "onClose", "icon", "getContainer", "prefixCls"]); var visible = props.visible === undefined ? true : props.visible; var type = props.type === undefined ? 'info' : props.type; var _React$useContext = React.useContext(ConfigContext), getPopupContainer = _React$useContext.getPopupContainer; var _globalConfig = globalConfig(), getPrefixCls = _globalConfig.getPrefixCls; var rootPrefixCls = getPrefixCls('', ''); var prefixCls = getPrefixCls('modal-dialogbox', propsPrefixCls); var _React$useState = React.useState(false), _React$useState2 = _slicedToArray(_React$useState, 2), loading = _React$useState2[0], toggleLoading = _React$useState2[1]; var locale = useLocaleReceiver('Modal', getModalLocale()); var okBtnLoading = React.useMemo(function () { if (typeof confirmLoading === 'boolean') { return confirmLoading; } return loading; }, [confirmLoading, loading]); var handleOk = React.useCallback(function (e) { var okResult = onOk === null || onOk === void 0 ? void 0 : onOk(e); if (okResult && typeof okResult.then === 'function') { toggleLoading(true); okResult.then(function () { toggleLoading(false); onClose === null || onClose === void 0 ? void 0 : onClose.apply(void 0, arguments); }, function (e) { console.error(e); toggleLoading(false); }); } else { onClose === null || onClose === void 0 ? void 0 : onClose(e); } }, [onOk, onClose]); var handleCancel = React.useCallback(function () { onClose === null || onClose === void 0 ? void 0 : onClose({ triggerCancel: true }); }, [onClose]); var titleNode = React.useMemo(function () { return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-icon") }, icon || DialogType[type].icon), /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-title") }, title)); }, [prefixCls]); var footer = React.useMemo(function () { if (!cancelBtn) { var ok = okText; if (!ok) { switch (type) { case 'confirm': break; case 'success': case 'warning': ok = locale[0].funcCloseText; break; case 'error': ok = locale[0].funcRetryText; break; default: ok = locale[0].okText; break; } } return /*#__PURE__*/React.createElement(Button, { prefix: "".concat(rootPrefixCls, "-btn"), type: "primary", loading: okBtnLoading, onClick: handleOk }, ok); } }, [okText, cancelBtn, okBtnLoading, handleOk, type, locale]); var dialogCloseIcon = React.useMemo(function () { return /*#__PURE__*/React.createElement("span", { className: "".concat(prefixCls, "-close-x") }, closeIcon === undefined ? /*#__PURE__*/React.createElement(OutlinedClose, { className: "".concat(prefixCls, "-close-icon") }) : closeIcon); }, [prefixCls, closeIcon]); return /*#__PURE__*/React.createElement(ConfigProvider, { prefixCls: rootPrefixCls }, /*#__PURE__*/React.createElement(Modal, _extends({}, restProps, { confirmLoading: okBtnLoading, footer: footer, title: titleNode, className: classNames(className, "".concat(prefixCls), "".concat(prefixCls, "-").concat(type)), getContainer: getContainer || getPopupContainer, visible: visible, closeIcon: dialogCloseIcon, onCancel: handleCancel, onOk: handleOk, okText: okText }), /*#__PURE__*/React.createElement("div", { className: "".concat(prefixCls, "-content") }, content))); }; /* DialogBox.defaultProps = { visible: true, type: 'info' }; */ export default DialogBox;