129 lines
5.4 KiB
JavaScript
129 lines
5.4 KiB
JavaScript
import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
|
|
import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
|
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
var _excluded = ["children", "value", "valuePropName", "onChange", "fieldProps", "space", "type", "transform", "convertValue", "lightProps"],
|
|
_excluded2 = ["children", "space", "valuePropName"];
|
|
import { runFunction, useRefFunction } from '@ant-design/pro-utils';
|
|
import { Input, Space } from 'antd';
|
|
import toArray from "rc-util/es/Children/toArray";
|
|
import React, { useCallback, useImperativeHandle, useMemo } from 'react';
|
|
import { createField } from "../../BaseForm/createField";
|
|
import { useGridHelpers } from "../../helpers";
|
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
var FieldSetType = {
|
|
space: Space,
|
|
group: Input.Group
|
|
};
|
|
export function defaultGetValueFromEvent(valuePropName) {
|
|
var event = arguments.length <= 1 ? undefined : arguments[1];
|
|
if (event && event.target && valuePropName in event.target) {
|
|
// @ts-ignore
|
|
return event.target[valuePropName];
|
|
}
|
|
return event;
|
|
}
|
|
var FieldSet = function FieldSet(props) {
|
|
var children = props.children,
|
|
_props$value = props.value,
|
|
value = _props$value === void 0 ? [] : _props$value,
|
|
valuePropName = props.valuePropName,
|
|
onChange = props.onChange,
|
|
fieldProps = props.fieldProps,
|
|
space = props.space,
|
|
_props$type = props.type,
|
|
type = _props$type === void 0 ? 'space' : _props$type,
|
|
transform = props.transform,
|
|
convertValue = props.convertValue,
|
|
lightProps = props.lightProps,
|
|
rest = _objectWithoutProperties(props, _excluded);
|
|
/**
|
|
* 使用方法的引用防止闭包
|
|
*
|
|
* @param fileValue
|
|
* @param index
|
|
*/
|
|
var fieldSetOnChange = useRefFunction(function (fileValue, index) {
|
|
var _fieldProps$onChange;
|
|
var newValues = _toConsumableArray(value);
|
|
newValues[index] = defaultGetValueFromEvent(valuePropName || 'value', fileValue);
|
|
onChange === null || onChange === void 0 || onChange(newValues);
|
|
fieldProps === null || fieldProps === void 0 || (_fieldProps$onChange = fieldProps.onChange) === null || _fieldProps$onChange === void 0 || _fieldProps$onChange.call(fieldProps, newValues);
|
|
});
|
|
var itemIndex = -1;
|
|
var list = toArray(runFunction(children, value, props)).map(function (item) {
|
|
if ( /*#__PURE__*/React.isValidElement(item)) {
|
|
var _item$type, _item$props, _item$props2;
|
|
itemIndex += 1;
|
|
var index = itemIndex;
|
|
var isProFromItem =
|
|
// @ts-ignore
|
|
(item === null || item === void 0 || (_item$type = item.type) === null || _item$type === void 0 ? void 0 : _item$type.displayName) === 'ProFormComponent' || (item === null || item === void 0 || (_item$props = item.props) === null || _item$props === void 0 ? void 0 : _item$props.readonly);
|
|
var forkProps = isProFromItem ? _objectSpread(_objectSpread({
|
|
key: index,
|
|
ignoreFormItem: true
|
|
}, item.props || {}), {}, {
|
|
// 如果不是我们自定义的组件 fieldProps 无法识别
|
|
fieldProps: _objectSpread(_objectSpread({}, item === null || item === void 0 || (_item$props2 = item.props) === null || _item$props2 === void 0 ? void 0 : _item$props2.fieldProps), {}, {
|
|
onChange: function onChange() {
|
|
fieldSetOnChange(arguments.length <= 0 ? undefined : arguments[0], index);
|
|
}
|
|
}),
|
|
value: value === null || value === void 0 ? void 0 : value[index],
|
|
onChange: undefined
|
|
}) : _objectSpread(_objectSpread({
|
|
key: index
|
|
}, item.props || {}), {}, {
|
|
value: value === null || value === void 0 ? void 0 : value[index],
|
|
onChange: function onChange(itemValue) {
|
|
var _props$onChange, _props;
|
|
fieldSetOnChange(itemValue, index);
|
|
(_props$onChange = (_props = item.props).onChange) === null || _props$onChange === void 0 || _props$onChange.call(_props, itemValue);
|
|
}
|
|
});
|
|
return /*#__PURE__*/React.cloneElement(item, forkProps);
|
|
}
|
|
return item;
|
|
});
|
|
var Components = FieldSetType[type];
|
|
var _useGridHelpers = useGridHelpers(rest),
|
|
RowWrapper = _useGridHelpers.RowWrapper;
|
|
|
|
/** Input.Group 需要配置 compact */
|
|
var typeProps = useMemo(function () {
|
|
return _objectSpread({}, type === 'group' ? {
|
|
compact: true
|
|
} : {});
|
|
}, [type]);
|
|
var Wrapper = useCallback(function (_ref) {
|
|
var dom = _ref.children;
|
|
return /*#__PURE__*/_jsx(Components, _objectSpread(_objectSpread(_objectSpread({}, typeProps), space), {}, {
|
|
align: "start",
|
|
wrap: true,
|
|
children: dom
|
|
}));
|
|
}, [Components, space, typeProps]);
|
|
return /*#__PURE__*/_jsx(RowWrapper, {
|
|
Wrapper: Wrapper,
|
|
children: list
|
|
});
|
|
};
|
|
var BaseProFormFieldSet = /*#__PURE__*/React.forwardRef(function (_ref2, ref) {
|
|
var children = _ref2.children,
|
|
space = _ref2.space,
|
|
valuePropName = _ref2.valuePropName,
|
|
rest = _objectWithoutProperties(_ref2, _excluded2);
|
|
useImperativeHandle(ref, function () {
|
|
return {};
|
|
});
|
|
return /*#__PURE__*/_jsx(FieldSet, _objectSpread(_objectSpread(_objectSpread({
|
|
space: space,
|
|
valuePropName: valuePropName
|
|
}, rest.fieldProps), {}, {
|
|
// 把 fieldProps 里的重置掉
|
|
onChange: undefined
|
|
}, rest), {}, {
|
|
children: children
|
|
}));
|
|
});
|
|
var ProFormFieldSet = createField(BaseProFormFieldSet);
|
|
export default ProFormFieldSet; |