UNPKG

mobile-more

Version:

基于 antd-mobile v5 扩展移动端 UI 组件

73 lines 2.9 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime"; import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator"; import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties"; var _excluded = ["form", "name", "onFinish"]; import React, { useContext, useRef } from 'react'; import { checkResult } from 'util-helpers'; import { useMount } from 'rc-hooks'; import BizForm from "../Form"; import StepsFormContext from "./StepsFormContext"; import StepFormContext from "./StepFormContext"; var StepForm = function StepForm(_ref) { var _ctx$formProps; var formProp = _ref.form, customName = _ref.name, customOnFinish = _ref.onFinish, restProps = _objectWithoutProperties(_ref, _excluded); var _BizForm$useForm = BizForm.useForm(), _BizForm$useForm2 = _slicedToArray(_BizForm$useForm, 1), form = _BizForm$useForm2[0]; var formRef = useRef(formProp || form); var ctx = useContext(StepsFormContext); var stepCtx = useContext(StepFormContext); var name = customName || stepCtx.name; var onFinish = customOnFinish || (ctx === null || ctx === void 0 || (_ctx$formProps = ctx.formProps) === null || _ctx$formProps === void 0 ? void 0 : _ctx$formProps.onFinish); useMount(function () { if (ctx && stepCtx) { ctx.formArrayRef.current[stepCtx.step] = formRef.current; } }); return /*#__PURE__*/React.createElement(BizForm, _extends({}, ctx === null || ctx === void 0 ? void 0 : ctx.formProps, restProps, { name: name, form: formRef.current, onFinish: ( /*#__PURE__*/function () { var _ref2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(values) { var ret; return _regeneratorRuntime().wrap(function _callee$(_context) { while (1) switch (_context.prev = _context.next) { case 0: ctx.setLoading(true); _context.next = 3; return checkResult(onFinish, values); case 3: ret = _context.sent; ctx.setLoading(false); if (ret) { _context.next = 7; break; } return _context.abrupt("return"); case 7: if (ctx && stepCtx) { ctx.onFormFinish(name, values); if (stepCtx.step !== stepCtx.total) { ctx.next(); } else { ctx.submit(); } } case 8: case "end": return _context.stop(); } }, _callee); })); return function (_x) { return _ref2.apply(this, arguments); }; }()) })); }; export default StepForm;