mobile-more
Version:
基于 antd-mobile v5 扩展移动端 UI 组件
80 lines (79 loc) • 3.64 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _utilHelpers = require("util-helpers");
var _rcHooks = require("rc-hooks");
var _Form = _interopRequireDefault(require("../Form"));
var _StepsFormContext = _interopRequireDefault(require("./StepsFormContext"));
var _StepFormContext = _interopRequireDefault(require("./StepFormContext"));
var _excluded = ["form", "name", "onFinish"];
var StepForm = function StepForm(_ref) {
var _ctx$formProps;
var formProp = _ref.form,
customName = _ref.name,
customOnFinish = _ref.onFinish,
restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
var _BizForm$useForm = _Form.default.useForm(),
_BizForm$useForm2 = (0, _slicedToArray2.default)(_BizForm$useForm, 1),
form = _BizForm$useForm2[0];
var formRef = (0, _react.useRef)(formProp || form);
var ctx = (0, _react.useContext)(_StepsFormContext.default);
var stepCtx = (0, _react.useContext)(_StepFormContext.default);
var name = customName || stepCtx.name;
var _onFinish = customOnFinish || (ctx === null || ctx === void 0 ? void 0 : (_ctx$formProps = ctx.formProps) === null || _ctx$formProps === void 0 ? void 0 : _ctx$formProps.onFinish);
(0, _rcHooks.useMount)(function () {
if (ctx && stepCtx) {
ctx.formArrayRef.current[stepCtx.step] = formRef.current;
}
});
return /*#__PURE__*/_react.default.createElement(_Form.default, (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, ctx === null || ctx === void 0 ? void 0 : ctx.formProps), restProps), {}, {
name: name,
form: formRef.current,
onFinish: function () {
var _onFinish2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(values) {
var ret;
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return (0, _utilHelpers.checkResult)(_onFinish, values);
case 2:
ret = _context.sent;
if (ret) {
_context.next = 5;
break;
}
return _context.abrupt("return");
case 5:
if (ctx && stepCtx) {
ctx.onFormFinish(name, values);
if (stepCtx.step !== stepCtx.total) {
ctx.next();
} else {
ctx.submit();
}
}
case 6:
case "end":
return _context.stop();
}
}, _callee);
}));
function onFinish(_x) {
return _onFinish2.apply(this, arguments);
}
return onFinish;
}()
}));
};
var _default = exports.default = StepForm;