@ant-design/pro-form
Version:
578 lines (564 loc) • 28 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BaseForm = BaseForm;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _objectSpread4 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _proProvider = require("@ant-design/pro-provider");
var _proUtils = require("@ant-design/pro-utils");
var _useParams = require("@umijs/use-params");
var _antd = require("antd");
var _classnames = _interopRequireDefault(require("classnames"));
var _omit = _interopRequireDefault(require("rc-util/lib/omit"));
var _get = _interopRequireDefault(require("rc-util/lib/utils/get"));
var _set = _interopRequireDefault(require("rc-util/lib/utils/set"));
var _warning = require("rc-util/lib/warning");
var _react = _interopRequireWildcard(require("react"));
var _FieldContext = _interopRequireDefault(require("../FieldContext"));
var _components = require("../components");
var _List = require("../components/List");
var _helpers = require("../helpers");
var _EditOrReadOnlyContext = require("./EditOrReadOnlyContext");
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["children", "contentRender", "submitter", "fieldProps", "formItemProps", "groupProps", "transformKey", "formRef", "onInit", "form", "loading", "formComponentType", "extraUrlParams", "syncToUrl", "onUrlSearchChange", "onReset", "omitNil", "isKeyPressSubmit", "autoFocusFirstInput", "grid", "rowProps", "colProps"],
_excluded2 = ["extraUrlParams", "syncToUrl", "isKeyPressSubmit", "syncToUrlAsImportant", "syncToInitialValues", "children", "contentRender", "submitter", "fieldProps", "proFieldProps", "formItemProps", "groupProps", "dateFormatter", "formRef", "onInit", "form", "formComponentType", "onReset", "grid", "rowProps", "colProps", "omitNil", "request", "params", "initialValues", "formKey", "readonly", "onLoadingChange", "loading"];
/* eslint-disable react-hooks/exhaustive-deps */
var genParams = function genParams(syncUrl, params, type) {
if (syncUrl === true) {
return params;
}
return (0, _proUtils.runFunction)(syncUrl, params, type);
};
/**
* It takes a name path and converts it to an array.
* @param {NamePath} name - The name of the form.
* @returns string[]
*
* a-> [a]
* [a] -> [a]
*/
var covertFormName = function covertFormName(name) {
if (!name) return name;
if (Array.isArray(name)) return name;
return [name];
};
function BaseFormComponents(props) {
var _ConfigProvider$useCo;
var children = props.children,
contentRender = props.contentRender,
submitter = props.submitter,
fieldProps = props.fieldProps,
formItemProps = props.formItemProps,
groupProps = props.groupProps,
transformKey = props.transformKey,
propsFormRef = props.formRef,
onInit = props.onInit,
form = props.form,
loading = props.loading,
formComponentType = props.formComponentType,
_props$extraUrlParams = props.extraUrlParams,
extraUrlParams = _props$extraUrlParams === void 0 ? {} : _props$extraUrlParams,
syncToUrl = props.syncToUrl,
onUrlSearchChange = props.onUrlSearchChange,
_onReset = props.onReset,
_props$omitNil = props.omitNil,
omitNil = _props$omitNil === void 0 ? true : _props$omitNil,
isKeyPressSubmit = props.isKeyPressSubmit,
_props$autoFocusFirst = props.autoFocusFirstInput,
autoFocusFirstInput = _props$autoFocusFirst === void 0 ? true : _props$autoFocusFirst,
grid = props.grid,
rowProps = props.rowProps,
colProps = props.colProps,
rest = (0, _objectWithoutProperties2.default)(props, _excluded);
/**
* 获取 form 实例
*/
var formInstance = _antd.Form.useFormInstance();
var _ref = (_antd.ConfigProvider === null || _antd.ConfigProvider === void 0 || (_ConfigProvider$useCo = _antd.ConfigProvider.useConfig) === null || _ConfigProvider$useCo === void 0 ? void 0 : _ConfigProvider$useCo.call(_antd.ConfigProvider)) || {
componentSize: 'middle'
},
componentSize = _ref.componentSize;
/** 同步 url 上的参数 */
var formRef = (0, _react.useRef)(form || formInstance);
/**
* 获取布局
*/
var _useGridHelpers = (0, _helpers.useGridHelpers)({
grid: grid,
rowProps: rowProps
}),
RowWrapper = _useGridHelpers.RowWrapper;
var getFormInstance = (0, _proUtils.useRefFunction)(function () {
return formInstance;
});
var formatValues = (0, _react.useMemo)(function () {
return {
/**
* 获取被 ProForm 格式化后的所有数据
* @param allData boolean
* @returns T
*
* @example getFieldsFormatValue(true) ->返回所有数据,即使没有被 form 托管的
*/
getFieldsFormatValue: function getFieldsFormatValue(allData) {
var _getFormInstance;
return transformKey((_getFormInstance = getFormInstance()) === null || _getFormInstance === void 0 ? void 0 : _getFormInstance.getFieldsValue(allData), omitNil);
},
/**
* 获取被 ProForm 格式化后的单个数据
* @param nameList (string|number)[]
* @returns T
*
* @example {a:{b:value}} -> getFieldFormatValue(['a', 'b']) -> value
*/
/** 获取格式化之后的单个数据 */
getFieldFormatValue: function getFieldFormatValue() {
var _getFormInstance2;
var paramsNameList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
var nameList = covertFormName(paramsNameList);
if (!nameList) throw new Error('nameList is require');
var value = (_getFormInstance2 = getFormInstance()) === null || _getFormInstance2 === void 0 ? void 0 : _getFormInstance2.getFieldValue(nameList);
var obj = nameList ? (0, _set.default)({}, nameList, value) : value;
//transformKey会将keys重新和nameList拼接,所以这里要将nameList的首个元素弹出
var newNameList = (0, _toConsumableArray2.default)(nameList);
newNameList.shift();
return (0, _get.default)(transformKey(obj, omitNil, newNameList), nameList);
},
/**
* 获取被 ProForm 格式化后的单个数据, 包含他的 name
* @param nameList (string|number)[]
* @returns T
*
* @example {a:{b:value}} -> getFieldFormatValueObject(['a', 'b']) -> {a:{b:value}}
*/
/** 获取格式化之后的单个数据 */
getFieldFormatValueObject: function getFieldFormatValueObject(paramsNameList) {
var _getFormInstance3;
var nameList = covertFormName(paramsNameList);
var value = (_getFormInstance3 = getFormInstance()) === null || _getFormInstance3 === void 0 ? void 0 : _getFormInstance3.getFieldValue(nameList);
var obj = nameList ? (0, _set.default)({}, nameList, value) : value;
return transformKey(obj, omitNil, nameList);
},
/**
/**
*验字段后返回格式化之后的所有数据
* @param nameList (string|number)[]
* @returns T
*
* @example validateFieldsReturnFormatValue -> {a:{b:value}}
*/
validateFieldsReturnFormatValue: function () {
var _validateFieldsReturnFormatValue = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(nameList) {
var _getFormInstance4;
var values, transformedKey;
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
if (!(!Array.isArray(nameList) && nameList)) {
_context.next = 2;
break;
}
throw new Error('nameList must be array');
case 2:
_context.next = 4;
return (_getFormInstance4 = getFormInstance()) === null || _getFormInstance4 === void 0 ? void 0 : _getFormInstance4.validateFields(nameList);
case 4:
values = _context.sent;
transformedKey = transformKey(values, omitNil);
return _context.abrupt("return", transformedKey ? transformedKey : {});
case 7:
case "end":
return _context.stop();
}
}, _callee);
}));
function validateFieldsReturnFormatValue(_x) {
return _validateFieldsReturnFormatValue.apply(this, arguments);
}
return validateFieldsReturnFormatValue;
}()
};
}, [omitNil, transformKey]);
var items = (0, _react.useMemo)(function () {
return _react.default.Children.toArray(children).map(function (item, index) {
if (index === 0 && /*#__PURE__*/_react.default.isValidElement(item) && autoFocusFirstInput) {
return /*#__PURE__*/_react.default.cloneElement(item, (0, _objectSpread4.default)((0, _objectSpread4.default)({}, item.props), {}, {
autoFocus: autoFocusFirstInput
}));
}
return item;
});
}, [autoFocusFirstInput, children]);
/** 计算 props 的对象 */
var submitterProps = (0, _react.useMemo)(function () {
return typeof submitter === 'boolean' || !submitter ? {} : submitter;
}, [submitter]);
/** 渲染提交按钮与重置按钮 */
var submitterNode = (0, _react.useMemo)(function () {
if (submitter === false) return undefined;
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.Submitter, (0, _objectSpread4.default)((0, _objectSpread4.default)({}, submitterProps), {}, {
onReset: function onReset() {
var _formRef$current, _submitterProps$onRes;
var finalValues = transformKey((_formRef$current = formRef.current) === null || _formRef$current === void 0 ? void 0 : _formRef$current.getFieldsValue(), omitNil);
submitterProps === null || submitterProps === void 0 || (_submitterProps$onRes = submitterProps.onReset) === null || _submitterProps$onRes === void 0 || _submitterProps$onRes.call(submitterProps, finalValues);
_onReset === null || _onReset === void 0 || _onReset(finalValues);
// 如果 syncToUrl,清空一下数据
if (syncToUrl) {
var _formRef$current2;
// 把没有的值设置为未定义可以删掉 url 的参数
var params = Object.keys(transformKey((_formRef$current2 = formRef.current) === null || _formRef$current2 === void 0 ? void 0 : _formRef$current2.getFieldsValue(), false)).reduce(function (pre, next) {
return (0, _objectSpread4.default)((0, _objectSpread4.default)({}, pre), {}, (0, _defineProperty2.default)({}, next, finalValues[next] || undefined));
}, extraUrlParams);
/** 在同步到 url 上时对参数进行转化 */
onUrlSearchChange(genParams(syncToUrl, params || {}, 'set'));
}
},
submitButtonProps: (0, _objectSpread4.default)({
loading: loading
}, submitterProps.submitButtonProps)
}), "submitter");
}, [submitter, submitterProps, loading, transformKey, omitNil, _onReset, syncToUrl, extraUrlParams, onUrlSearchChange]);
var content = (0, _react.useMemo)(function () {
var wrapItems = grid ? /*#__PURE__*/(0, _jsxRuntime.jsx)(RowWrapper, {
children: items
}) : items;
if (contentRender) {
return contentRender(wrapItems, submitterNode, formRef.current);
}
return wrapItems;
}, [grid, RowWrapper, items, contentRender, submitterNode]);
var preInitialValues = (0, _proUtils.usePrevious)(props.initialValues);
// 提示一个 initialValues ,问的人实在是太多了
(0, _react.useEffect)(function () {
if (syncToUrl || !props.initialValues || !preInitialValues || rest.request) return;
var isEqual = (0, _proUtils.isDeepEqualReact)(props.initialValues, preInitialValues);
(0, _warning.noteOnce)(isEqual, "initialValues \u53EA\u5728 form \u521D\u59CB\u5316\u65F6\u751F\u6548\uFF0C\u5982\u679C\u4F60\u9700\u8981\u5F02\u6B65\u52A0\u8F7D\u63A8\u8350\u4F7F\u7528 request\uFF0C\u6216\u8005 initialValues ? <Form/> : null ");
(0, _warning.noteOnce)(isEqual, "The initialValues only take effect when the form is initialized, if you need to load asynchronously recommended request, or the initialValues ? <Form/> : null ");
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [props.initialValues]);
// 初始化给一个默认的 form
(0, _react.useImperativeHandle)(propsFormRef, function () {
return (0, _objectSpread4.default)((0, _objectSpread4.default)({}, formRef.current), formatValues);
}, [formatValues, formRef.current]);
(0, _react.useEffect)(function () {
var _formRef$current3, _formRef$current3$get;
var finalValues = transformKey((_formRef$current3 = formRef.current) === null || _formRef$current3 === void 0 || (_formRef$current3$get = _formRef$current3.getFieldsValue) === null || _formRef$current3$get === void 0 ? void 0 : _formRef$current3$get.call(_formRef$current3, true), omitNil);
onInit === null || onInit === void 0 || onInit(finalValues, (0, _objectSpread4.default)((0, _objectSpread4.default)({}, formRef.current), formatValues));
}, []);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_proUtils.ProFormContext.Provider, {
value: (0, _objectSpread4.default)((0, _objectSpread4.default)({}, formatValues), {}, {
formRef: formRef
}),
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.ConfigProvider, {
componentSize: rest.size || componentSize,
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_helpers.GridContext.Provider, {
value: {
grid: grid,
colProps: colProps
},
children: [rest.component !== false && /*#__PURE__*/(0, _jsxRuntime.jsx)("input", {
type: "text",
style: {
display: 'none'
}
}), content]
})
})
});
}
/** 自动的formKey 防止重复 */
var requestFormCacheId = 0;
function BaseForm(props) {
var _props$extraUrlParams2 = props.extraUrlParams,
extraUrlParams = _props$extraUrlParams2 === void 0 ? {} : _props$extraUrlParams2,
syncToUrl = props.syncToUrl,
isKeyPressSubmit = props.isKeyPressSubmit,
_props$syncToUrlAsImp = props.syncToUrlAsImportant,
syncToUrlAsImportant = _props$syncToUrlAsImp === void 0 ? false : _props$syncToUrlAsImp,
_props$syncToInitialV = props.syncToInitialValues,
syncToInitialValues = _props$syncToInitialV === void 0 ? true : _props$syncToInitialV,
children = props.children,
contentRender = props.contentRender,
submitter = props.submitter,
fieldProps = props.fieldProps,
proFieldProps = props.proFieldProps,
formItemProps = props.formItemProps,
groupProps = props.groupProps,
_props$dateFormatter = props.dateFormatter,
dateFormatter = _props$dateFormatter === void 0 ? 'string' : _props$dateFormatter,
propsFormRef = props.formRef,
onInit = props.onInit,
form = props.form,
formComponentType = props.formComponentType,
onReset = props.onReset,
grid = props.grid,
rowProps = props.rowProps,
colProps = props.colProps,
_props$omitNil2 = props.omitNil,
omitNil = _props$omitNil2 === void 0 ? true : _props$omitNil2,
request = props.request,
params = props.params,
initialValues = props.initialValues,
_props$formKey = props.formKey,
formKey = _props$formKey === void 0 ? requestFormCacheId : _props$formKey,
readonly = props.readonly,
onLoadingChange = props.onLoadingChange,
propsLoading = props.loading,
propRest = (0, _objectWithoutProperties2.default)(props, _excluded2);
var formRef = (0, _react.useRef)({});
var _useMountMergeState = (0, _proUtils.useMountMergeState)(false, {
onChange: onLoadingChange,
value: propsLoading
}),
_useMountMergeState2 = (0, _slicedToArray2.default)(_useMountMergeState, 2),
loading = _useMountMergeState2[0],
setLoading = _useMountMergeState2[1];
var _useUrlSearchParams = (0, _useParams.useUrlSearchParams)({}, {
disabled: !syncToUrl
}),
_useUrlSearchParams2 = (0, _slicedToArray2.default)(_useUrlSearchParams, 2),
urlSearch = _useUrlSearchParams2[0],
setUrlSearch = _useUrlSearchParams2[1];
var curFormKey = (0, _react.useRef)((0, _proUtils.nanoid)());
(0, _react.useEffect)(function () {
requestFormCacheId += 0;
}, []);
var _useFetchData = (0, _proUtils.useFetchData)({
request: request,
params: params,
proFieldKey: formKey
}),
_useFetchData2 = (0, _slicedToArray2.default)(_useFetchData, 1),
initialData = _useFetchData2[0];
var _useContext = (0, _react.useContext)(_antd.ConfigProvider.ConfigContext),
getPrefixCls = _useContext.getPrefixCls;
var prefixCls = getPrefixCls('pro-form');
// css
var _useStyle = (0, _proUtils.useStyle)('ProForm', function (token) {
return (0, _defineProperty2.default)({}, ".".concat(prefixCls), (0, _defineProperty2.default)({}, "> div:not(".concat(token.proComponentsCls, "-form-light-filter)"), {
'.pro-field': {
maxWidth: '100%',
'@media screen and (max-width: 575px)': {
// 减少了 form 的 padding
maxWidth: 'calc(93vw - 48px)'
},
// 适用于短数字,短文本或者选项
'&-xs': {
width: 104
},
'&-s': {
width: 216
},
// 适用于较短字段录入、如姓名、电话、ID 等。
'&-sm': {
width: 216
},
'&-m': {
width: 328
},
// 标准宽度,适用于大部分字段长度
'&-md': {
width: 328
},
'&-l': {
width: 440
},
// 适用于较长字段录入,如长网址、标签组、文件路径等。
'&-lg': {
width: 440
},
// 适用于长文本录入,如长链接、描述、备注等,通常搭配自适应多行输入框或定高文本域使用。
'&-xl': {
width: 552
}
}
}));
}),
wrapSSR = _useStyle.wrapSSR,
hashId = _useStyle.hashId;
// 如果为 false,不需要触发设置进去
var _useState = (0, _react.useState)(function () {
if (!syncToUrl) {
return {};
}
return genParams(syncToUrl, urlSearch, 'get');
}),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
urlParamsMergeInitialValues = _useState2[0],
setUrlParamsMergeInitialValues = _useState2[1];
/** 保存 transformKeyRef,用于对表单key transform */
var transformKeyRef = (0, _react.useRef)({});
var fieldsValueType = (0, _react.useRef)({});
/** 使用 callback 的类型 */
var transformKey = (0, _proUtils.useRefFunction)(function (values, paramsOmitNil, parentKey) {
return (0, _proUtils.transformKeySubmitValue)((0, _proUtils.conversionMomentValue)(values, dateFormatter, fieldsValueType.current, paramsOmitNil, parentKey), transformKeyRef.current, paramsOmitNil);
});
(0, _react.useEffect)(function () {
if (syncToInitialValues) return;
setUrlParamsMergeInitialValues({});
}, [syncToInitialValues]);
var getGenParams = (0, _proUtils.useRefFunction)(function () {
return (0, _objectSpread4.default)((0, _objectSpread4.default)({}, urlSearch), extraUrlParams);
});
(0, _react.useEffect)(function () {
if (!syncToUrl) return;
setUrlSearch(genParams(syncToUrl, getGenParams(), 'set'));
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [extraUrlParams, getGenParams, syncToUrl]);
var getPopupContainer = (0, _react.useMemo)(function () {
if (typeof window === 'undefined') return undefined;
// 如果在 drawerForm 和 modalForm 里就渲染dom到父节点里
// modalForm 可能高度太小不适合
if (formComponentType && ['DrawerForm'].includes(formComponentType)) {
return function (e) {
return e.parentNode || document.body;
};
}
return undefined;
}, [formComponentType]);
var onFinish = (0, _proUtils.useRefFunction)( /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2() {
var _formRef$current4, _formRef$current4$get, finalValues, response, _formRef$current5, _formRef$current5$get, syncToUrlParams;
return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
if (propRest.onFinish) {
_context2.next = 2;
break;
}
return _context2.abrupt("return");
case 2:
if (!loading) {
_context2.next = 4;
break;
}
return _context2.abrupt("return");
case 4:
_context2.prev = 4;
finalValues = formRef === null || formRef === void 0 || (_formRef$current4 = formRef.current) === null || _formRef$current4 === void 0 || (_formRef$current4$get = _formRef$current4.getFieldsFormatValue) === null || _formRef$current4$get === void 0 ? void 0 : _formRef$current4$get.call(_formRef$current4);
response = propRest.onFinish(finalValues);
if (response instanceof Promise) {
setLoading(true);
}
_context2.next = 10;
return response;
case 10:
if (syncToUrl) {
// 把没有的值设置为未定义可以删掉 url 的参数
syncToUrlParams = Object.keys(formRef === null || formRef === void 0 || (_formRef$current5 = formRef.current) === null || _formRef$current5 === void 0 || (_formRef$current5$get = _formRef$current5.getFieldsFormatValue) === null || _formRef$current5$get === void 0 ? void 0 : _formRef$current5$get.call(_formRef$current5, undefined, false)).reduce(function (pre, next) {
var _finalValues$next;
return (0, _objectSpread4.default)((0, _objectSpread4.default)({}, pre), {}, (0, _defineProperty2.default)({}, next, (_finalValues$next = finalValues[next]) !== null && _finalValues$next !== void 0 ? _finalValues$next : undefined));
}, extraUrlParams); // fix #3547: 当原先在url中存在的字段被删除时,应该将 params 中的该字段设置为 undefined,以便触发url同步删除
Object.keys(urlSearch).forEach(function (key) {
if (syncToUrlParams[key] !== false && syncToUrlParams[key] !== 0 && !syncToUrlParams[key]) {
syncToUrlParams[key] = undefined;
}
});
/** 在同步到 url 上时对参数进行转化 */
setUrlSearch(genParams(syncToUrl, syncToUrlParams, 'set'));
}
setLoading(false);
_context2.next = 18;
break;
case 14:
_context2.prev = 14;
_context2.t0 = _context2["catch"](4);
console.log(_context2.t0);
setLoading(false);
case 18:
case "end":
return _context2.stop();
}
}, _callee2, null, [[4, 14]]);
})));
// 初始化给一个默认的 form
(0, _react.useImperativeHandle)(propsFormRef, function () {
return formRef.current;
}, [!initialData]);
if (!initialData && props.request) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
style: {
paddingTop: 50,
paddingBottom: 50,
textAlign: 'center'
},
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Spin, {})
});
}
return wrapSSR( /*#__PURE__*/(0, _jsxRuntime.jsx)(_EditOrReadOnlyContext.EditOrReadOnlyContext.Provider, {
value: {
mode: props.readonly ? 'read' : 'edit'
},
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_proProvider.ProConfigProvider, {
needDeps: true,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_FieldContext.default.Provider, {
value: {
formRef: formRef,
fieldProps: fieldProps,
proFieldProps: proFieldProps,
formItemProps: formItemProps,
groupProps: groupProps,
formComponentType: formComponentType,
getPopupContainer: getPopupContainer,
formKey: curFormKey.current,
setFieldValueType: function setFieldValueType(name, _ref4) {
var _ref4$valueType = _ref4.valueType,
valueType = _ref4$valueType === void 0 ? 'text' : _ref4$valueType,
dateFormat = _ref4.dateFormat,
transform = _ref4.transform;
if (!Array.isArray(name)) return;
transformKeyRef.current = (0, _set.default)(transformKeyRef.current, name, transform);
fieldsValueType.current = (0, _set.default)(fieldsValueType.current, name, {
valueType: valueType,
dateFormat: dateFormat
});
}
},
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_List.FormListContext.Provider, {
value: {},
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Form, (0, _objectSpread4.default)((0, _objectSpread4.default)({
onKeyPress: function onKeyPress(event) {
if (!isKeyPressSubmit) return;
if (event.key === 'Enter') {
var _formRef$current6;
(_formRef$current6 = formRef.current) === null || _formRef$current6 === void 0 || _formRef$current6.submit();
}
},
autoComplete: "off",
form: form
}, (0, _omit.default)(propRest, ['ref', 'labelWidth', 'autoFocusFirstInput'])), {}, {
ref: function ref(instance) {
if (!formRef.current) return;
formRef.current.nativeElement = instance === null || instance === void 0 ? void 0 : instance.nativeElement;
}
// 组合 urlSearch 和 initialValues
,
initialValues: syncToUrlAsImportant ? (0, _objectSpread4.default)((0, _objectSpread4.default)((0, _objectSpread4.default)({}, initialValues), initialData), urlParamsMergeInitialValues) : (0, _objectSpread4.default)((0, _objectSpread4.default)((0, _objectSpread4.default)({}, urlParamsMergeInitialValues), initialValues), initialData),
onValuesChange: function onValuesChange(changedValues, values) {
var _propRest$onValuesCha;
propRest === null || propRest === void 0 || (_propRest$onValuesCha = propRest.onValuesChange) === null || _propRest$onValuesCha === void 0 || _propRest$onValuesCha.call(propRest, transformKey(changedValues, !!omitNil), transformKey(values, !!omitNil));
},
className: (0, _classnames.default)(props.className, prefixCls, hashId),
onFinish: onFinish,
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(BaseFormComponents, (0, _objectSpread4.default)((0, _objectSpread4.default)({
transformKey: transformKey,
autoComplete: "off",
loading: loading,
onUrlSearchChange: setUrlSearch
}, props), {}, {
formRef: formRef,
initialValues: (0, _objectSpread4.default)((0, _objectSpread4.default)({}, initialValues), initialData)
}))
}))
})
})
})
}));
}