@antdp/edit-table
Version:
基于antd封装的组件
117 lines (116 loc) • 4.9 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.EditableCellItem = void 0;
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireDefault(require("react"));
var _antd = require("antd");
var _rcFieldForm = _interopRequireDefault(require("rc-field-form"));
var _utils = require("./utils");
var _jsxRuntime = require("react/jsx-runtime");
var _excluded = ["editing", "dataIndex", "title", "record", "index", "inputNode", "rules", "children", "itemAttr", "type", "attr", "tip", "tipAttr", "multiple", "rowKey", "isList", "listAttr"],
_excluded2 = ["name", "rules", "preName", "itemValue", "children", "tipAttr", "tip"];
var EditableCell = function EditableCell(_ref) {
var editing = _ref.editing,
dataIndex = _ref.dataIndex,
title = _ref.title,
record = _ref.record,
index = _ref.index,
inputNode = _ref.inputNode,
rules = _ref.rules,
children = _ref.children,
itemAttr = _ref.itemAttr,
type = _ref.type,
attr = _ref.attr,
tip = _ref.tip,
tipAttr = _ref.tipAttr,
multiple = _ref.multiple,
rowKey = _ref.rowKey,
isList = _ref.isList,
listAttr = _ref.listAttr,
restProps = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
var renders = (0, _utils.getItem)({
attr: attr,
type: type,
inputNode: inputNode
});
var _render = function _render() {
// 使用 List 时 isList===true && inputNode 是方法
if (isList && typeof inputNode === 'function') {
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_rcFieldForm["default"].List, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, listAttr), {}, {
name: dataIndex,
children: function children(fields, operation, meta) {
return inputNode(fields.map(function (field) {
return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, field), {}, {
fieldKey: field.key
});
}), operation, meta);
}
}));
}
return /*#__PURE__*/(0, _jsxRuntime.jsx)(EditableCellItem, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, itemAttr), {}, {
name: dataIndex,
rules: rules,
preName: record[rowKey],
itemValue: record,
children: renders,
tipAttr: tipAttr,
tip: tip
}));
};
return /*#__PURE__*/(0, _jsxRuntime.jsx)("td", (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, restProps), {}, {
children: editing ? _render() : children
}));
};
var EditableCellItem = exports.EditableCellItem = function EditableCellItem(props) {
var name = props.name,
rules = props.rules,
_props$preName = props.preName,
preName = _props$preName === void 0 ? '' : _props$preName,
itemValue = props.itemValue,
_children = props.children,
_props$tipAttr = props.tipAttr,
tipAttr = _props$tipAttr === void 0 ? {} : _props$tipAttr,
tip = props.tip,
rest = (0, _objectWithoutProperties2["default"])(props, _excluded2);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_rcFieldForm["default"].Field, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, rest), {}, {
name: name,
rules: rules,
children: function children(control, meta, form) {
var mergedName = (0, _utils.toArray)(name).length && meta ? meta.name : [];
var fieldId = (0, _utils.getFieldId)(mergedName, preName);
var onChange = function onChange(event) {
var value = event;
if (event && event.target) {
value = event.target.value;
}
control.onChange(value);
};
var childNode = typeof _children === 'function' ? _children((0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, control), {}, {
id: fieldId
}), meta, form, {
record: itemValue
}) : /*#__PURE__*/_react["default"].isValidElement(_children) ? /*#__PURE__*/_react["default"].cloneElement(_children, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, control), {}, {
onChange: onChange,
id: fieldId
})) : _children;
var errs = meta.errors.map(function (err) {
return err;
}).join(',');
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Tooltip, (0, _objectSpread2["default"])((0, _objectSpread2["default"])({
color: "#fff",
overlayInnerStyle: {
color: 'red'
}
}, tipAttr), {}, {
title: tip ? tip(errs) : errs,
open: !!meta.errors.length,
children: childNode
}));
}
}));
};
var _default = exports["default"] = EditableCell;