mobile-more
Version:
基于 antd-mobile v5 扩展移动端 UI 组件
66 lines (65 loc) • 2.71 kB
JavaScript
import _extends from "@babel/runtime/helpers/esm/extends";
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
var _excluded = ["onFinish", "className", "justify", "visible", "layout"];
import { Form } from 'antd-mobile';
import classnames from 'classnames';
import namePathSet from "rc-util/es/utils/set";
import React from 'react';
import { isArray } from 'ut2';
import { prefixClass } from "../../config";
import "./Form.css";
import FormArray from "./FormArray";
import FormContext from "./FormContext";
import FormItem from "./FormItem";
import getNamePaths from "./utils/getNamePaths";
import { transformFormValues } from "./utils/transform";
var prefixCls = "".concat(prefixClass, "-form");
var BizForm = function BizForm(_ref) {
var _onFinish = _ref.onFinish,
className = _ref.className,
_ref$justify = _ref.justify,
justify = _ref$justify === void 0 ? 'start' : _ref$justify,
_ref$visible = _ref.visible,
visible = _ref$visible === void 0 ? true : _ref$visible,
_ref$layout = _ref.layout,
layout = _ref$layout === void 0 ? 'horizontal' : _ref$layout,
restProps = _objectWithoutProperties(_ref, _excluded);
var transformRecordRef = React.useRef({});
var setFieldTransform = function setFieldTransform(name, transform, parentListNames) {
if (name && transform) {
if (isArray(parentListNames) && parentListNames.length > 0) {
var paths = getNamePaths(name, parentListNames);
transformRecordRef.current = namePathSet(transformRecordRef.current, paths, transform);
} else if (isArray(name)) {
transformRecordRef.current = namePathSet(transformRecordRef.current, name, transform);
} else {
transformRecordRef.current[String(name)] = transform;
}
}
};
return /*#__PURE__*/React.createElement(FormContext.Provider, {
value: {
setFieldTransform: setFieldTransform,
justify: justify
}
}, /*#__PURE__*/React.createElement(Form, _extends({
className: classnames(prefixCls, _defineProperty({}, "".concat(prefixCls, "-visible"), visible), className),
layout: layout,
onFinish: function onFinish(values) {
if (typeof _onFinish !== 'function') {
return;
}
var transValues = transformFormValues(values, transformRecordRef.current);
// console.log(values, transValues);
_onFinish(transValues);
}
}, restProps)));
};
BizForm.Item = FormItem;
BizForm.Array = FormArray;
BizForm.Subscribe = Form.Subscribe;
BizForm.Header = Form.Header;
BizForm.useForm = Form.useForm;
BizForm.useWatch = Form.useWatch;
export default BizForm;