Files
2026-01-09 14:52:46 +00:00

222 lines
12 KiB
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.spellNamePath = exports.default = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _proForm = require("@ant-design/pro-form");
var _proUtils = require("@ant-design/pro-utils");
var _antd = require("antd");
var _get = _interopRequireDefault(require("rc-util/lib/utils/get"));
var _react = _interopRequireWildcard(require("react"));
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["children"];
var SHOW_EMPTY_TEXT_LIST = ['', null, undefined];
/**
* 拼接用于编辑的 key
*/
var spellNamePath = exports.spellNamePath = function spellNamePath() {
for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) {
rest[_key] = arguments[_key];
}
return rest.filter(function (index) {
return index !== undefined;
}).map(function (item) {
if (typeof item === 'number') {
return item.toString();
}
return item;
}).flat(1);
};
var CellRenderFromItem = function CellRenderFromItem(props) {
var formContext = (0, _react.useContext)(_proForm.FieldContext);
var columnProps = props.columnProps,
prefixName = props.prefixName,
text = props.text,
counter = props.counter,
rowData = props.rowData,
index = props.index,
recordKey = props.recordKey,
subName = props.subName,
proFieldProps = props.proFieldProps,
editableUtils = props.editableUtils;
var editableForm = _proForm.ProForm.useFormInstance();
var key = recordKey || index;
var realIndex = (0, _react.useMemo)(function () {
var _editableUtils$getRea, _editableUtils$getRea2;
return (_editableUtils$getRea = editableUtils === null || editableUtils === void 0 || (_editableUtils$getRea2 = editableUtils.getRealIndex) === null || _editableUtils$getRea2 === void 0 ? void 0 : _editableUtils$getRea2.call(editableUtils, rowData)) !== null && _editableUtils$getRea !== void 0 ? _editableUtils$getRea : index;
}, [editableUtils, index, rowData]);
var _useState = (0, _react.useState)(function () {
var _ref, _columnProps$key;
return spellNamePath(prefixName, prefixName ? subName : [], prefixName ? realIndex : key, (_ref = (_columnProps$key = columnProps === null || columnProps === void 0 ? void 0 : columnProps.key) !== null && _columnProps$key !== void 0 ? _columnProps$key : columnProps === null || columnProps === void 0 ? void 0 : columnProps.dataIndex) !== null && _ref !== void 0 ? _ref : index);
}),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
formItemName = _useState2[0],
setName = _useState2[1];
var rowName = (0, _react.useMemo)(function () {
return formItemName.slice(0, -1);
}, [formItemName]);
(0, _react.useEffect)(function () {
var _ref2, _columnProps$key2;
var value = spellNamePath(prefixName, prefixName ? subName : [], prefixName ? realIndex : key, (_ref2 = (_columnProps$key2 = columnProps === null || columnProps === void 0 ? void 0 : columnProps.key) !== null && _columnProps$key2 !== void 0 ? _columnProps$key2 : columnProps === null || columnProps === void 0 ? void 0 : columnProps.dataIndex) !== null && _ref2 !== void 0 ? _ref2 : index);
if (value.join('-') !== formItemName.join('-')) setName(value);
}, [columnProps === null || columnProps === void 0 ? void 0 : columnProps.dataIndex, columnProps === null || columnProps === void 0 ? void 0 : columnProps.key, index, recordKey, prefixName, key, subName, formItemName, realIndex]);
var needProps = (0, _react.useMemo)(function () {
return [editableForm, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, columnProps), {}, {
rowKey: rowName,
rowIndex: index,
isEditable: true
})];
}, [columnProps, editableForm, index, rowName]);
var InlineItem = (0, _react.useCallback)(function (_ref3) {
var children = _ref3.children,
restProps = (0, _objectWithoutProperties2.default)(_ref3, _excluded);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_proUtils.InlineErrorFormItem, (0, _objectSpread2.default)((0, _objectSpread2.default)({
popoverProps: {
getPopupContainer: formContext.getPopupContainer || function () {
return counter.rootDomRef.current || document.body;
}
},
errorType: "popover",
name: formItemName
}, restProps), {}, {
children: children
}), key);
},
// eslint-disable-next-line react-hooks/exhaustive-deps
[key, formItemName]);
var generateFormItem = (0, _react.useCallback)(function () {
var _ref4, _ref5;
var formItemProps = (0, _objectSpread2.default)({}, _proUtils.getFieldPropsOrFormItemProps.apply(void 0, [columnProps === null || columnProps === void 0 ? void 0 : columnProps.formItemProps].concat((0, _toConsumableArray2.default)(needProps))));
formItemProps.messageVariables = (0, _objectSpread2.default)({
label: (columnProps === null || columnProps === void 0 ? void 0 : columnProps.title) || '此项',
type: (columnProps === null || columnProps === void 0 ? void 0 : columnProps.valueType) || '文本'
}, formItemProps === null || formItemProps === void 0 ? void 0 : formItemProps.messageVariables);
formItemProps.initialValue = (_ref4 = (_ref5 = prefixName ? null : text) !== null && _ref5 !== void 0 ? _ref5 : formItemProps === null || formItemProps === void 0 ? void 0 : formItemProps.initialValue) !== null && _ref4 !== void 0 ? _ref4 : columnProps === null || columnProps === void 0 ? void 0 : columnProps.initialValue;
var fieldDom = /*#__PURE__*/(0, _jsxRuntime.jsx)(_proForm.ProFormField, (0, _objectSpread2.default)({
cacheForSwr: true,
name: formItemName,
proFormFieldKey: key,
ignoreFormItem: true,
fieldProps: _proUtils.getFieldPropsOrFormItemProps.apply(void 0, [columnProps === null || columnProps === void 0 ? void 0 : columnProps.fieldProps].concat((0, _toConsumableArray2.default)(needProps)))
}, proFieldProps), formItemName.join('-'));
/**
* 如果没有自定义直接返回
*/
if (columnProps !== null && columnProps !== void 0 && columnProps.renderFormItem) {
fieldDom = columnProps.renderFormItem((0, _objectSpread2.default)((0, _objectSpread2.default)({}, columnProps), {}, {
index: index,
isEditable: true,
type: 'table'
}), {
defaultRender: function defaultRender() {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
children: fieldDom
});
},
type: 'form',
recordKey: recordKey,
record: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, rowData), editableForm === null || editableForm === void 0 ? void 0 : editableForm.getFieldValue([key])),
isEditable: true
}, editableForm, props.editableUtils);
// 如果需要完全自定义可以不要name
if (columnProps.ignoreFormItem) return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
children: fieldDom
});
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(InlineItem, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, formItemProps), {}, {
children: fieldDom
}), formItemName.join('-'));
}, [columnProps, needProps, prefixName, text, key, formItemName, proFieldProps, InlineItem, index, recordKey, rowData, editableForm, props.editableUtils]);
if (formItemName.length === 0) return null;
if (typeof (columnProps === null || columnProps === void 0 ? void 0 : columnProps.renderFormItem) === 'function' || typeof (columnProps === null || columnProps === void 0 ? void 0 : columnProps.fieldProps) === 'function' || typeof (columnProps === null || columnProps === void 0 ? void 0 : columnProps.formItemProps) === 'function') {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Form.Item, {
noStyle: true,
shouldUpdate: function shouldUpdate(pre, next) {
if (pre === next) return false;
var shouldName = [rowName].flat(1);
try {
return JSON.stringify((0, _get.default)(pre, shouldName)) !== JSON.stringify((0, _get.default)(next, shouldName));
} catch (error) {
return true;
}
},
children: function children() {
return generateFormItem();
}
});
}
return generateFormItem();
};
/**
* 根据不同的类型来转化数值
*
* @param text
* @param valueType
*/
function cellRenderToFromItem(config) {
var _columnProps$dataInde, _config$recordKey;
var text = config.text,
valueType = config.valueType,
rowData = config.rowData,
columnProps = config.columnProps,
index = config.index;
// 如果 valueType === text ,没必要多走一次 render
if ((!valueType || ['textarea', 'text'].includes(valueType.toString())) &&
// valueEnum 存在说明是个select
!(columnProps !== null && columnProps !== void 0 && columnProps.valueEnum) && config.mode === 'read') {
// 如果是''、null、undefined 显示columnEmptyText
return SHOW_EMPTY_TEXT_LIST.includes(text) ? config.columnEmptyText : text;
}
if (typeof valueType === 'function' && rowData) {
// 防止valueType是函数,并且text是''、null、undefined跳过显式设置的columnEmptyText
return cellRenderToFromItem((0, _objectSpread2.default)((0, _objectSpread2.default)({}, config), {}, {
valueType: valueType(rowData, config.type) || 'text'
}));
}
var columnKey = (columnProps === null || columnProps === void 0 ? void 0 : columnProps.key) || (columnProps === null || columnProps === void 0 || (_columnProps$dataInde = columnProps.dataIndex) === null || _columnProps$dataInde === void 0 ? void 0 : _columnProps$dataInde.toString());
var dependencies = columnProps !== null && columnProps !== void 0 && columnProps.dependencies ? [config.prefixName, config.prefixName ? index === null || index === void 0 ? void 0 : index.toString() : (_config$recordKey = config.recordKey) === null || _config$recordKey === void 0 ? void 0 : _config$recordKey.toString(), columnProps === null || columnProps === void 0 ? void 0 : columnProps.dependencies].filter(Boolean).flat(1) : [];
/**
* 生成公用的 proField dom 配置
*/
var proFieldProps = {
valueEnum: (0, _proUtils.runFunction)(columnProps === null || columnProps === void 0 ? void 0 : columnProps.valueEnum, rowData),
request: columnProps === null || columnProps === void 0 ? void 0 : columnProps.request,
dependencies: columnProps !== null && columnProps !== void 0 && columnProps.dependencies ? [dependencies] : undefined,
originDependencies: columnProps !== null && columnProps !== void 0 && columnProps.dependencies ? [columnProps === null || columnProps === void 0 ? void 0 : columnProps.dependencies] : undefined,
params: (0, _proUtils.runFunction)(columnProps === null || columnProps === void 0 ? void 0 : columnProps.params, rowData, columnProps),
readonly: columnProps === null || columnProps === void 0 ? void 0 : columnProps.readonly,
text: valueType === 'index' || valueType === 'indexBorder' ? config.index : text,
mode: config.mode,
renderFormItem: undefined,
valueType: valueType,
// @ts-ignore
record: rowData,
proFieldProps: {
emptyText: config.columnEmptyText,
proFieldKey: columnKey ? "table-field-".concat(columnKey) : undefined
}
};
/** 只读模式直接返回就好了,不需要处理 formItem */
if (config.mode !== 'edit') {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_proForm.ProFormField, (0, _objectSpread2.default)({
mode: "read",
ignoreFormItem: true,
fieldProps: (0, _proUtils.getFieldPropsOrFormItemProps)(columnProps === null || columnProps === void 0 ? void 0 : columnProps.fieldProps, null, columnProps)
}, proFieldProps));
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(CellRenderFromItem, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, config), {}, {
proFieldProps: proFieldProps
}), config.recordKey);
}
var _default = exports.default = cellRenderToFromItem;