UNPKG

@jannie-shao/components-antd4

Version:
235 lines (234 loc) 9.45 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports["default"] = void 0; require("antd/es/form/style"); var _form = _interopRequireDefault(require("antd/es/form")); require("antd/es/input/style"); var _input = _interopRequireDefault(require("antd/es/input")); var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _react = _interopRequireWildcard(require("react")); var _lodash = require("lodash"); var _icons = require("@ant-design/icons"); var _table = _interopRequireDefault(require("../../../table")); var _iconFont = _interopRequireDefault(require("../../../icon-font")); var _config = require("../../../style/config"); var _renderFun = require("../../maker/render-fun"); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } var prefix = _config.rootPrefix + "-form-item"; var Item = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) { var maxKey = props.maxKey, eleCount = props.eleCount, operation = props.operation, model = props.model, data = props.data, onChange = props.onChange; var _ref = model.props || {}, _ref$disabled = _ref.disabled, disabled = _ref$disabled === void 0 ? false : _ref$disabled, max = _ref.max, _ref$startIdx = _ref.startIdx, startIdx = _ref$startIdx === void 0 ? 0 : _ref$startIdx, _ref$snConfig = _ref.snConfig, snConfig = _ref$snConfig === void 0 ? {} : _ref$snConfig, _ref$showSN = _ref.showSN, showSN = _ref$showSN === void 0 ? true : _ref$showSN, _ref$useKeyAsSN = _ref.useKeyAsSN, useKeyAsSN = _ref$useKeyAsSN === void 0 ? false : _ref$useKeyAsSN, _ref$useOperation = _ref.useOperation, useOperation = _ref$useOperation === void 0 ? true : _ref$useOperation, opRender = _ref.opRender, _ref$checkOpt = _ref.checkOpt, checkOpt = _ref$checkOpt === void 0 ? function () { return true; } : _ref$checkOpt; var _snConfig$snKey = snConfig.snKey, snKey = _snConfig$snKey === void 0 ? 'sn' : _snConfig$snKey, _snConfig$snLabel = snConfig.snLabel, snLabel = _snConfig$snLabel === void 0 ? 'SN' : _snConfig$snLabel; var _add = operation.add, remove = operation.remove; var getDefaultSN = function getDefaultSN(record) { if (record === void 0) { record = {}; } return record[snKey] === undefined ? maxKey : record[snKey]; }; var handleAdd = function handleAdd(d) { var _ref2; if (d === void 0) { d = {}; } if (disabled) return; if (max && eleCount.current >= max) return; var defaultData = useKeyAsSN ? (_ref2 = {}, _ref2[snKey] = maxKey + 1, _ref2) : {}; var dataToAdd = (0, _extends2["default"])({}, d, defaultData); _add(dataToAdd); }; var handleRemove = function handleRemove(idx) { remove(idx); if (eleCount.current < 1) { handleAdd(); } }; var handleUpdateFields = function handleUpdateFields(idx, values) { if (values === void 0) { values = {}; } if (disabled) return; var dataNow = (0, _lodash.cloneDeep)(data); if (!dataNow[idx]) { dataNow[idx] = {}; } Object.keys(values).forEach(function (key) { dataNow[idx][key] = values[key]; }); onChange && onChange(dataNow); }; (0, _react.useImperativeHandle)(ref, function () { return (0, _extends2["default"])({}, operation, { add: function add(d) { if (d === void 0) { d = {}; } if (disabled) return; if (max && eleCount.current >= max) return; _add(d); }, remove: handleRemove }); }); return /*#__PURE__*/_react["default"].createElement("div", { className: prefix + "-table" }, /*#__PURE__*/_react["default"].createElement(_table["default"], { pagination: false, dataSource: data.map(function (d, idx) { return (0, _extends2["default"])({}, d, { __rowKey__: "row:" + d[snKey] + ":" + idx }); }), rowKey: "__rowKey__", columns: [].concat(showSN ? [{ title: snLabel, dataIndex: snKey, width: 62, render: function render(_, record, idx) { if (record === void 0) { record = {}; } if (!useKeyAsSN) { return startIdx + idx; } return /*#__PURE__*/_react["default"].createElement(_form["default"].Item, { key: [idx, snKey], name: [idx, snKey], fieldKey: [idx, snKey], initialValue: getDefaultSN(record) }, /*#__PURE__*/_react["default"].createElement(_input["default"], { bordered: false, style: { color: 'rgba(0, 0, 0, 0.85)', cursor: 'default' }, disabled: true })); } }] : [], model.items.map(function (item) { var label = typeof item === 'string' ? item : item.label; return { title: label, dataIndex: item.name, render: function render(_, record, idx) { if (record === void 0) { record = {}; } var sn = getDefaultSN(record); var recordInfo = { sn: sn, record: record, idx: idx, dataSource: data }; var updateFields = function updateFields(values) { return handleUpdateFields(idx, values); }; // 构造子组件 var itemNow = (0, _lodash.cloneDeep)(item); // 获取子组件的 props 并改造 onChange 事件 itemNow.props = typeof itemNow.props === 'function' ? itemNow.props(recordInfo) : itemNow.props || {}; itemNow.props.disabled = disabled || itemNow.props.disabled; if (itemNow.props.onChange) { itemNow.props.onChange = function () { var _item$props; for (var _len = arguments.length, arg = new Array(_len), _key = 0; _key < _len; _key++) { arg[_key] = arguments[_key]; } return (_item$props = item.props).onChange.apply(_item$props, [(0, _extends2["default"])({}, recordInfo, { updateFields: updateFields })].concat(arg)); }; } return /*#__PURE__*/_react["default"].createElement(_form["default"].Item, (0, _extends2["default"])({}, item.formProps || {}, { key: [idx, item.name], name: [idx, item.name], fieldKey: [idx, item.name] }), typeof item.render === 'function' ? item.render((0, _extends2["default"])({}, recordInfo, { updateFields: updateFields })) : (0, _renderFun.makerFun)(itemNow)); } }; }), useOperation ? [{ title: 'Operation', dataIndex: '__OPERATION', render: function render(_, record, idx) { if (record === void 0) { record = {}; } if (disabled) return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null); var isLast = idx === data.length - 1 && !(max && data.length >= max); var isOnly = idx === 0 && isLast; var optConfig = { record: record, idx: idx, maxKey: maxKey, isLast: isLast, isOnly: isOnly }; var render = opRender ? opRender(optConfig, { add: handleAdd, remove: handleRemove }) : null; if (render) return render; var opts = []; if (!isOnly && checkOpt({ type: 'remove', optConfig: optConfig })) { opts.push( /*#__PURE__*/_react["default"].createElement(_iconFont["default"].Delete, { key: "remove", onClick: function onClick() { return handleRemove(idx); }, className: prefix + "-table-operation" })); } if (isLast && checkOpt({ type: 'add', optConfig: optConfig })) { opts.push( /*#__PURE__*/_react["default"].createElement(_icons.PlusSquareOutlined, { key: "add", onClick: function onClick() { return handleAdd(); }, className: prefix + "-table-operation" })); } return opts; } }] : []) })); }); var _default = Item; exports["default"] = _default;