UNPKG

fx-form-widget

Version:
155 lines (148 loc) 6.79 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _modal = _interopRequireDefault(require("antd/lib/modal")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose")); var _form = _interopRequireDefault(require("antd/lib/form")); var _react = _interopRequireWildcard(require("react")); var _reactDom = require("react-dom"); var _stores = require("../stores"); var _excluded = ["children", "visible", "url", "onSubmitSuccess", "onSubmitError", "onCancelSubmit", "width", "title", "form", "extraData", "validateError", "formatValues"]; function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; } var submit = _stores.formRelatedStore.submit; var useForm = _form["default"].useForm; var FormInModal = function FormInModal(props) { var children = props.children, visible = props.visible, _props$url = props.url, url = _props$url === void 0 ? '' : _props$url, onSubmitSuccess = props.onSubmitSuccess, onSubmitError = props.onSubmitError, onCancelSubmit = props.onCancelSubmit, _props$width = props.width, width = _props$width === void 0 ? 520 : _props$width, title = props.title, form = props.form, extraData = props.extraData, validateError = props.validateError, formatValues = props.formatValues, restProps = (0, _objectWithoutPropertiesLoose2["default"])(props, _excluded); var _useForm = useForm(), formInstance = _useForm[0]; var _useState = (0, _react.useState)(false), loading = _useState[0], setLoading = _useState[1]; var _useState2 = (0, _react.useState)('提交'), buttonText = _useState2[0], setButtonText = _useState2[1]; formInstance = form ? form : formInstance; // 克隆表单,将表单的内容可控 var CloneForm = /*#__PURE__*/_react["default"].cloneElement(children, { form: formInstance, preserve: false }); var setLoadingAndButtonText = function setLoadingAndButtonText(loading, buttonText) { (0, _reactDom.unstable_batchedUpdates)(function () { setLoading(loading); setButtonText(buttonText); }); }; // 提交表单 var onSubmitForm = /*#__PURE__*/function () { var _ref = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() { var _values, hasValidate, _yield$submit, _success, data, _yield$submit2, _success2, _data; return _regenerator["default"].wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: _context.prev = 0; _context.next = 3; return formInstance.validateFields(); case 3: _values = _context.sent; if (formatValues) { _values = formatValues(_values); } setLoadingAndButtonText(true, '正在提交中...'); if (!(url === '')) { _context.next = 9; break; } onSubmitSuccess === null || onSubmitSuccess === void 0 ? void 0 : onSubmitSuccess(true, (0, _extends2["default"])({}, _values, extraData)); return _context.abrupt("return"); case 9: if (!(typeof validateError === 'function')) { _context.next = 20; break; } hasValidate = validateError(); if (!hasValidate) { _context.next = 18; break; } _context.next = 14; return submit(url, (0, _extends2["default"])({}, _values, extraData)); case 14: _yield$submit = _context.sent; _success = _yield$submit.success; data = _yield$submit.data; onSubmitSuccess === null || onSubmitSuccess === void 0 ? void 0 : onSubmitSuccess(_success, data); case 18: _context.next = 26; break; case 20: _context.next = 22; return submit(url, (0, _extends2["default"])({}, _values, extraData)); case 22: _yield$submit2 = _context.sent; _success2 = _yield$submit2.success; _data = _yield$submit2.data; onSubmitSuccess === null || onSubmitSuccess === void 0 ? void 0 : onSubmitSuccess(_success2, _data); case 26: _context.next = 31; break; case 28: _context.prev = 28; _context.t0 = _context["catch"](0); onSubmitError === null || onSubmitError === void 0 ? void 0 : onSubmitError(false, _context.t0); case 31: _context.prev = 31; setLoadingAndButtonText(false, '提交'); return _context.finish(31); case 34: case "end": return _context.stop(); } }, _callee, null, [[0, 28, 31, 34]]); })); return function onSubmitForm() { return _ref.apply(this, arguments); }; }(); // 重置表单 var onResetForm = function onResetForm(form) { form.resetFields(); }; // 提交按钮的相关属性 var okButtonProps = { loading: loading }; // 取消弹框 var cancelSubmitForm = function cancelSubmitForm() { onCancelSubmit === null || onCancelSubmit === void 0 ? void 0 : onCancelSubmit(!visible); }; return /*#__PURE__*/_react["default"].createElement(_modal["default"], (0, _extends2["default"])({ title: title, width: width, visible: visible, onOk: onSubmitForm, onCancel: cancelSubmitForm, okText: buttonText, okButtonProps: okButtonProps }, restProps), CloneForm); }; var _default = exports["default"] = FormInModal;