UNPKG

acud

Version:

acg react 组件库

181 lines (180 loc) • 7.64 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var React = _interopRequireWildcard(require("react")); var _FilledError = _interopRequireDefault(require("acud-icon/lib/icons/FilledError")); var _OutlinedClose = _interopRequireDefault(require("acud-icon/lib/icons/OutlinedClose")); var _FilledSuccess = _interopRequireDefault(require("acud-icon/lib/icons/FilledSuccess")); var _FilledWarn = _interopRequireDefault(require("acud-icon/lib/icons/FilledWarn")); var _FilledInfo = _interopRequireDefault(require("acud-icon/lib/icons/FilledInfo")); var _classnames = _interopRequireDefault(require("classnames")); var _configProvider = _interopRequireWildcard(require("../config-provider")); var _button = _interopRequireDefault(require("../button")); var _Modal = _interopRequireDefault(require("./Modal")); var _LocaleReceiver = require("../locale-provider/LocaleReceiver"); var _locale = require("./locale"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var __rest = void 0 && (void 0).__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; }; var DialogType = { success: { className: 'sucess', icon: /*#__PURE__*/React.createElement(_FilledSuccess["default"], { color: "@S6" }) }, warning: { className: 'warning', icon: /*#__PURE__*/React.createElement(_FilledWarn["default"], { color: "@W6" }) }, confirm: { className: 'confirm', icon: /*#__PURE__*/React.createElement(_FilledWarn["default"], { color: "@W6" }) }, info: { className: 'info', icon: /*#__PURE__*/React.createElement(_FilledInfo["default"], { color: "@B6" }) }, error: { className: 'error', icon: /*#__PURE__*/React.createElement(_FilledError["default"], { 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(_configProvider.ConfigContext), getPopupContainer = _React$useContext.getPopupContainer; var _globalConfig = (0, _configProvider.globalConfig)(), getPrefixCls = _globalConfig.getPrefixCls; var rootPrefixCls = getPrefixCls('', ''); var prefixCls = getPrefixCls('modal-dialogbox', propsPrefixCls); var _React$useState = React.useState(false), _React$useState2 = (0, _slicedToArray2["default"])(_React$useState, 2), loading = _React$useState2[0], toggleLoading = _React$useState2[1]; var locale = (0, _LocaleReceiver.useLocaleReceiver)('Modal', (0, _locale.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["default"], { 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["default"], { className: "".concat(prefixCls, "-close-icon") }) : closeIcon); }, [prefixCls, closeIcon]); return /*#__PURE__*/React.createElement(_configProvider["default"], { prefixCls: rootPrefixCls }, /*#__PURE__*/React.createElement(_Modal["default"], (0, _extends2["default"])({}, restProps, { confirmLoading: okBtnLoading, footer: footer, title: titleNode, className: (0, _classnames["default"])(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' }; */ var _default = exports["default"] = DialogBox;