@zat-design/sisyphus-react 3.9.8-beta.1 → 3.9.8-beta.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/index.esm.css +0 -5
  2. package/dist/less.esm.css +0 -5
  3. package/es/ProEditTable/components/ActionButton/index.js +57 -9
  4. package/es/ProEditTable/components/RenderField/index.js +23 -14
  5. package/es/ProEditTable/components/RenderToolbar/index.js +18 -16
  6. package/es/ProEditTable/index.js +1 -1
  7. package/es/ProEditTable/propsType.d.ts +6 -3
  8. package/es/ProEditTable/utils/diffOriginal.d.ts +1 -1
  9. package/es/ProEditTable/utils/diffOriginal.js +21 -22
  10. package/es/ProEditTable/utils/index.js +35 -30
  11. package/es/ProEditTable/utils/tools.d.ts +1 -1
  12. package/es/ProEditTable/utils/tools.js +1 -1
  13. package/es/ProForm/components/combination/Group/index.js +7 -2
  14. package/es/ProForm/components/combination/Group/propsType.d.ts +1 -0
  15. package/es/ProForm/components/combination/Group/utils.d.ts +6 -1
  16. package/es/ProForm/components/combination/Group/utils.js +28 -6
  17. package/es/ProForm/components/render/Render.js +23 -11
  18. package/es/ProForm/components/render/RenderFields.d.ts +1 -0
  19. package/es/ProForm/components/render/RenderFields.js +8 -4
  20. package/es/ProForm/components/render/propsType.d.ts +3 -1
  21. package/es/ProForm/index.js +5 -2
  22. package/es/ProForm/propsType.d.ts +3 -0
  23. package/es/ProForm/utils/diffOriginal.js +9 -2
  24. package/es/ProForm/utils/useShouldUpdate.js +25 -5
  25. package/es/ProForm/utils/valueType.d.ts +8 -0
  26. package/es/ProForm/utils/valueType.js +99 -33
  27. package/es/ProLayout/components/ProHeader/style/index.less +0 -8
  28. package/es/ProTable/components/FormatColumn/index.js +1 -0
  29. package/es/ProTable/components/RenderColumn/index.d.ts +2 -0
  30. package/es/ProTable/components/RenderColumn/index.js +10 -2
  31. package/es/ProTable/hooks/useAntdTable.js +4 -3
  32. package/es/ProTable/propsType.d.ts +2 -0
  33. package/es/ProTable/utils/index.d.ts +4 -0
  34. package/es/ProTable/utils/index.js +15 -0
  35. package/lib/ProEditTable/components/ActionButton/index.js +57 -9
  36. package/lib/ProEditTable/components/RenderField/index.js +22 -13
  37. package/lib/ProEditTable/components/RenderToolbar/index.js +18 -16
  38. package/lib/ProEditTable/index.js +1 -1
  39. package/lib/ProEditTable/propsType.d.ts +6 -3
  40. package/lib/ProEditTable/utils/diffOriginal.d.ts +1 -1
  41. package/lib/ProEditTable/utils/diffOriginal.js +21 -22
  42. package/lib/ProEditTable/utils/index.js +35 -30
  43. package/lib/ProEditTable/utils/tools.d.ts +1 -1
  44. package/lib/ProEditTable/utils/tools.js +1 -1
  45. package/lib/ProForm/components/combination/Group/index.js +7 -2
  46. package/lib/ProForm/components/combination/Group/propsType.d.ts +1 -0
  47. package/lib/ProForm/components/combination/Group/utils.d.ts +6 -1
  48. package/lib/ProForm/components/combination/Group/utils.js +28 -6
  49. package/lib/ProForm/components/render/Render.js +23 -11
  50. package/lib/ProForm/components/render/RenderFields.d.ts +1 -0
  51. package/lib/ProForm/components/render/RenderFields.js +8 -4
  52. package/lib/ProForm/components/render/propsType.d.ts +3 -1
  53. package/lib/ProForm/index.js +5 -2
  54. package/lib/ProForm/propsType.d.ts +3 -0
  55. package/lib/ProForm/utils/diffOriginal.js +9 -2
  56. package/lib/ProForm/utils/useShouldUpdate.js +25 -5
  57. package/lib/ProForm/utils/valueType.d.ts +8 -0
  58. package/lib/ProForm/utils/valueType.js +100 -34
  59. package/lib/ProLayout/components/ProHeader/style/index.less +0 -8
  60. package/lib/ProTable/components/FormatColumn/index.js +1 -0
  61. package/lib/ProTable/components/RenderColumn/index.d.ts +2 -0
  62. package/lib/ProTable/components/RenderColumn/index.js +10 -2
  63. package/lib/ProTable/hooks/useAntdTable.js +3 -2
  64. package/lib/ProTable/propsType.d.ts +2 -0
  65. package/lib/ProTable/utils/index.d.ts +4 -0
  66. package/lib/ProTable/utils/index.js +17 -1
  67. package/package.json +2 -1
@@ -15,6 +15,8 @@ interface Props {
15
15
  isChanged?: boolean;
16
16
  /** 新增单元格字段 */
17
17
  isAddCell?: boolean;
18
+ /** 表格透传下来的scroll配置 */
19
+ scroll?: any;
18
20
  }
19
21
  declare const RenderColumn: FC<Props>;
20
22
  export default RenderColumn;
@@ -29,7 +29,8 @@ var RenderColumn = function RenderColumn(props) {
29
29
  _props$toolTipProps = props.toolTipProps,
30
30
  toolTipProps = _props$toolTipProps === void 0 ? {} : _props$toolTipProps,
31
31
  minWidth = props.minWidth,
32
- isInNewRowFlag = props.isInNewRowFlag;
32
+ isInNewRowFlag = props.isInNewRowFlag,
33
+ scroll = props.scroll;
33
34
  var _useSetState = useSetState({
34
35
  tooltip: false
35
36
  }),
@@ -43,8 +44,9 @@ var RenderColumn = function RenderColumn(props) {
43
44
  // 比对场景走的逻辑
44
45
  if (!isInNewRowFlag && isBoolean(props === null || props === void 0 ? void 0 : props.isChanged)) {
45
46
  var renderNode = value ? node : '-';
47
+ var isXMaxContent = (scroll === null || scroll === void 0 ? void 0 : scroll.x) === 'max-content';
46
48
  if (ellipsis || (props === null || props === void 0 ? void 0 : props.isChanged)) {
47
- renderNode = _jsx(Text, {
49
+ renderNode = !isXMaxContent ? _jsx(Text, {
48
50
  style: {
49
51
  width: currentValue === '-' ? 32.5 : width,
50
52
  minWidth: minWidth
@@ -53,6 +55,12 @@ var RenderColumn = function RenderColumn(props) {
53
55
  tooltip: false
54
56
  },
55
57
  children: ellipsis ? currentValue : renderNode
58
+ }) : _jsx("div", {
59
+ style: {
60
+ minWidth: minWidth,
61
+ width: width
62
+ },
63
+ children: ellipsis ? currentValue : renderNode
56
64
  });
57
65
  if ((props === null || props === void 0 ? void 0 : props.isChanged) === false) {
58
66
  return renderNode;
@@ -11,7 +11,7 @@ import { useCallback, useMemo, useState } from 'react';
11
11
  import { useRequest, useSetState, useDeepCompareEffect } from 'ahooks';
12
12
  import { pickBy, isObject, merge, set, isEqual } from 'lodash';
13
13
  import { defaultPage } from '../index';
14
- import { isListResult } from '../utils';
14
+ import { isListResult, removeEmptyKeys } from '../utils';
15
15
  import locale, { formatMessage } from '../../locale';
16
16
  var useDefaultOptions = function useDefaultOptions(options) {
17
17
  var _useState = useState((options === null || options === void 0 ? void 0 : options.page) || defaultPage),
@@ -219,16 +219,17 @@ function useAntdTable(service, options, useRequestOptions) {
219
219
  pageNum: 1,
220
220
  pageSize: page.pageSize
221
221
  };
222
+ var _values = removeEmptyKeys(values);
222
223
  onPageChange(newPage);
223
224
  setState({
224
- searchValues: values,
225
+ searchValues: _values,
225
226
  allSelected: false,
226
227
  selectedRecords: [],
227
228
  selectedRowKeys: []
228
229
  });
229
230
  run(getTransformParams(_objectSpread(_objectSpread({
230
231
  page: newPage
231
- }, extraFilter), values)));
232
+ }, extraFilter), _values)));
232
233
  }, [extraFilter, page.pageSize, run, getTransformParams]);
233
234
  var resetParams = useCallback(function () {
234
235
  var page = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initPage;
@@ -46,6 +46,8 @@ export interface ProTableColumn extends Omit<ColumnType<any>, 'dataIndex'> {
46
46
  viewRender?: ({ value, record, index, originalValue, originalRecord, }: any) => 'same' | 'changed' | 'add' | undefined;
47
47
  isChanged?: boolean | null;
48
48
  children?: ProTableColumn[];
49
+ /** table透传下来的scroll配置 */
50
+ scroll?: any;
49
51
  }
50
52
  export interface CreateTreeFromArrayOptions {
51
53
  itemKey?: string;
@@ -29,3 +29,7 @@ export declare const isListResult: (data: {
29
29
  [key: string]: any;
30
30
  }) => boolean;
31
31
  export declare const getRowKey: (rowKey: any, record: any) => any;
32
+ /** 移除对象中的 null , undefined, '' 的key */
33
+ export declare const removeEmptyKeys: (obj: any) => {
34
+ [k: string]: unknown;
35
+ };
@@ -1,3 +1,4 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
1
2
  import { get, isEqual } from 'lodash';
2
3
  import { validate } from '@zat-design/utils';
3
4
  var isEmpty = validate.isEmpty;
@@ -70,4 +71,18 @@ export var getRowKey = function getRowKey(rowKey, record) {
70
71
  key = (_ref = typeof rowKey === 'function' ? rowKey(record) : record[rowKey]) !== null && _ref !== void 0 ? _ref : key;
71
72
  }
72
73
  return key;
74
+ };
75
+ /** 移除对象中的 null , undefined, '' 的key */
76
+ export var removeEmptyKeys = function removeEmptyKeys(obj) {
77
+ // 使用 Object.entries() 将对象转换为键值对数组
78
+ var entries = Object.entries(obj);
79
+ // 过滤掉值为 null, undefined, 或 '' 的键值对
80
+ var filteredEntries = entries.filter(function (_ref2) {
81
+ var _ref3 = _slicedToArray(_ref2, 2),
82
+ key = _ref3[0],
83
+ value = _ref3[1];
84
+ return !isEmpty(value);
85
+ });
86
+ // 使用 Object.fromEntries() 将过滤后的键值对数组转换回对象
87
+ return Object.fromEntries(filteredEntries);
73
88
  };
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  });
7
7
  exports.default = void 0;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
+ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
9
10
  var _jsxRuntime = require("react/jsx-runtime");
10
11
  var _react = _interopRequireDefault(require("react"));
11
12
  var _antd = require("antd");
@@ -26,13 +27,20 @@ var ActionButton = function ActionButton(_ref) {
26
27
  deletePoConfirmMsg = config.deletePoConfirmMsg,
27
28
  mulDeletePoConfirmMsg = config.mulDeletePoConfirmMsg,
28
29
  max = config.max,
29
- tableLength = config.tableLength;
30
+ name = config.name,
31
+ tableLength = config.tableLength,
32
+ selectedRows = config.selectedRows;
33
+ var rowNamePath = [].concat((0, _toConsumableArray2.default)(name), [index]);
30
34
  // 操作按钮权限控制
31
35
  var getShow = function getShow(show) {
32
36
  if (typeof show === 'function') {
33
37
  return show(record, {
34
38
  index: index,
35
- form: form
39
+ form: form,
40
+ name: name,
41
+ namePath: rowNamePath,
42
+ tableLength: tableLength,
43
+ selectedRows: selectedRows
36
44
  });
37
45
  }
38
46
  return show;
@@ -42,7 +50,11 @@ var ActionButton = function ActionButton(_ref) {
42
50
  if (typeof disabled === 'function') {
43
51
  return disabled(record, {
44
52
  index: index,
45
- form: form
53
+ form: form,
54
+ name: name,
55
+ namePath: rowNamePath,
56
+ tableLength: tableLength,
57
+ selectedRows: selectedRows
46
58
  });
47
59
  }
48
60
  // 新增超过最大行,禁止操作按钮
@@ -64,14 +76,29 @@ var ActionButton = function ActionButton(_ref) {
64
76
  // 其他操作按钮Props
65
77
  var actionBtnProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, btnConfig.buttonProps), {}, {
66
78
  onClick: function onClick() {
67
- btnConfig === null || btnConfig === void 0 ? void 0 : btnConfig.onEvent(record, index);
79
+ btnConfig === null || btnConfig === void 0 ? void 0 : btnConfig.onEvent(record, {
80
+ index: index,
81
+ form: form,
82
+ name: name,
83
+ namePath: rowNamePath,
84
+ tableLength: tableLength,
85
+ selectedRows: selectedRows
86
+ });
68
87
  },
69
88
  disabled: getDisabled((_btnConfig$buttonProp3 = btnConfig.buttonProps) === null || _btnConfig$buttonProp3 === void 0 ? void 0 : _btnConfig$buttonProp3.disabled)
70
89
  });
71
90
  // 当传入函数时,先转成reactNode
72
91
  if ((0, _lodash.isFunction)(btnConfig.label)) {
73
- btnConfig.label = (0, _jsxRuntime.jsx)(btnConfig.label, {
74
- form: form
92
+ var addIndex = tableLength ? tableLength - 1 : 0;
93
+ var namePath = [].concat((0, _toConsumableArray2.default)(name), [addIndex]);
94
+ var addRecord = form.getFieldValue(namePath) || {};
95
+ btnConfig.label = btnConfig.label(addRecord, {
96
+ form: form,
97
+ namePath: namePath,
98
+ name: name,
99
+ tableLength: tableLength,
100
+ selectedRows: selectedRows,
101
+ index: addIndex
75
102
  });
76
103
  }
77
104
  var isDisabled = !selectedRowKeys.length && btnConfig.type === 'mulDelete' || editingKeys.length || (delBtnProps === null || delBtnProps === void 0 ? void 0 : delBtnProps.disabled);
@@ -81,7 +108,14 @@ var ActionButton = function ActionButton(_ref) {
81
108
  placement: "topRight",
82
109
  title: deleteMsgMap[btnConfig.type],
83
110
  onConfirm: function onConfirm() {
84
- btnConfig === null || btnConfig === void 0 ? void 0 : btnConfig.onEvent(record, index);
111
+ btnConfig === null || btnConfig === void 0 ? void 0 : btnConfig.onEvent(record, {
112
+ index: index,
113
+ form: form,
114
+ name: name,
115
+ namePath: rowNamePath,
116
+ tableLength: tableLength,
117
+ selectedRows: selectedRows
118
+ });
85
119
  },
86
120
  disabled: isDisabled,
87
121
  okText: _locale.default.ProEditTable.confirm,
@@ -101,13 +135,27 @@ var ActionButton = function ActionButton(_ref) {
101
135
  index: index,
102
136
  disabled: isDisabled,
103
137
  onClick: function onClick() {
104
- btnConfig === null || btnConfig === void 0 ? void 0 : btnConfig.onEvent(record, index);
138
+ btnConfig === null || btnConfig === void 0 ? void 0 : btnConfig.onEvent(record, {
139
+ index: index,
140
+ form: form,
141
+ name: name,
142
+ namePath: rowNamePath,
143
+ tableLength: tableLength,
144
+ selectedRows: selectedRows
145
+ });
105
146
  }
106
147
  }))) : (0, _jsxRuntime.jsx)(_antd.Button, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _lodash.omit)(delBtnProps, ['buttonProps', 'isEditable', 'onEvent'])), {}, {
107
148
  disabled: isDisabled,
108
149
  type: "link",
109
150
  onClick: function onClick() {
110
- btnConfig === null || btnConfig === void 0 ? void 0 : btnConfig.onEvent(record, index);
151
+ btnConfig === null || btnConfig === void 0 ? void 0 : btnConfig.onEvent(record, {
152
+ index: index,
153
+ form: form,
154
+ name: name,
155
+ namePath: rowNamePath,
156
+ tableLength: tableLength,
157
+ selectedRows: selectedRows
158
+ });
111
159
  },
112
160
  children: btnConfig.label
113
161
  }))
@@ -30,7 +30,7 @@ var _utils = require("../../../ProForm/utils");
30
30
  var _ConfirmWrapper = _interopRequireDefault(require("../../../ProForm/components/render/ConfirmWrapper"));
31
31
  var _getDefaultProps = require("../../utils/getDefaultProps");
32
32
  var _ListChangedWrapper = _interopRequireDefault(require("./ListChangedWrapper"));
33
- var _excluded = ["type", "valueType", "names", "fieldProps", "labelRequired", "editRender", "component", "viewRender", "title", "originTitle", "label", "dataIndex", "formItemProps", "isEditable", "required", "rules", "onDiff", "className", "trim", "confirm", "dependencies"];
33
+ var _excluded = ["type", "valueType", "names", "fieldProps", "labelRequired", "editRender", "component", "viewRender", "title", "originTitle", "label", "dataIndex", "formItemProps", "isEditable", "required", "rules", "onDiff", "className", "trim", "confirm", "dependencies", "desensitization"];
34
34
  /* eslint-disable prefer-destructuring */
35
35
  /* eslint-disable prefer-const */
36
36
  var RenderField = function RenderField(_ref) {
@@ -64,6 +64,7 @@ var RenderField = function RenderField(_ref) {
64
64
  trim = column.trim,
65
65
  confirm = column.confirm,
66
66
  dependencies = column.dependencies,
67
+ desensitization = column.desensitization,
67
68
  resetProps = (0, _objectWithoutProperties2.default)(column, _excluded);
68
69
  // editRender弃用使用component同ProForm
69
70
  var _editRender = component || editRender;
@@ -89,6 +90,7 @@ var RenderField = function RenderField(_ref) {
89
90
  var _required = required;
90
91
  var _valueType = valueType;
91
92
  var _disabled = false;
93
+ var _desensitization = desensitization || [];
92
94
  var isCell = mode === 'cell';
93
95
  if (isCell) {
94
96
  record['is-view'] = !(0, _lodash.isEqual)(cellNamePath, cellName);
@@ -125,6 +127,9 @@ var RenderField = function RenderField(_ref) {
125
127
  if ((0, _lodash.isFunction)(valueType)) {
126
128
  _valueType = valueType.apply(void 0, rowParams);
127
129
  }
130
+ if ((0, _lodash.isFunction)(desensitization)) {
131
+ _desensitization = desensitization.apply(void 0, rowParams);
132
+ }
128
133
  // 获取最终的disabled
129
134
  _disabled = (0, _tools.getDisabled)({
130
135
  globalControl: otherProps === null || otherProps === void 0 ? void 0 : otherProps.globalControl,
@@ -136,9 +141,9 @@ var RenderField = function RenderField(_ref) {
136
141
  });
137
142
  if (typeof isEditable === 'function') {
138
143
  isEditable = isEditable.apply(void 0, rowParams);
139
- setTimeout(function () {
140
- !isEditable && form.validateFields([cellName]);
141
- }, 100);
144
+ // setTimeout(() => {
145
+ // !isEditable && form.validateFields([cellName]);
146
+ // }, 100);
142
147
  }
143
148
  // 是否只读文本
144
149
  var isView = !isEditable || (record === null || record === void 0 ? void 0 : record['is-view']) || config.isView || virtualKey && !isEditing || (0, _tools.getDisabled)({
@@ -196,21 +201,23 @@ var RenderField = function RenderField(_ref) {
196
201
  * 配置valueType时,基于formItem的normalize与getValueProps进行值类型转换
197
202
  * @returns {}
198
203
  */
199
- var valueTypeTransform = (0, _react.useCallback)(function () {
200
- var _fieldProps3;
201
- // 不存在valueType返回空
202
- if (!_valueType) {
203
- return {};
204
- }
204
+ var valueTypeTransform = function valueTypeTransform() {
205
+ var _fieldProps3, _desensitization2;
205
206
  // SwitchCheckbox默认YN, 兼容已有组件
206
207
  if (type === 'SwitchCheckbox') {
207
208
  _valueType = 'switch';
208
209
  }
209
210
  var params = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, column), {}, {
210
- mode: (_fieldProps3 = _fieldProps) === null || _fieldProps3 === void 0 ? void 0 : _fieldProps3.mode
211
+ mode: (_fieldProps3 = _fieldProps) === null || _fieldProps3 === void 0 ? void 0 : _fieldProps3.mode,
212
+ desensitization: _desensitization
211
213
  });
214
+ var isDesensit = sessionStorage.getItem(otherProps === null || otherProps === void 0 ? void 0 : otherProps.desensitizationKey);
215
+ // 仅查看模式下进行数据脱敏
216
+ if (((_desensitization2 = _desensitization) === null || _desensitization2 === void 0 ? void 0 : _desensitization2.length) && _disabled && isDesensit === 'ON') {
217
+ _valueType = 'desensitization';
218
+ }
212
219
  return (0, _lodash.isFunction)(_valueType2.default[_valueType]) ? _valueType2.default[_valueType](params) : {};
213
- }, [_valueType]);
220
+ };
214
221
  if ((_names = names) === null || _names === void 0 ? void 0 : _names.length) {
215
222
  // 支持names配置,临时生成对应的formItem,用来存储单个对应的值
216
223
  names = names.map(function (key) {
@@ -524,6 +531,7 @@ var RenderField = function RenderField(_ref) {
524
531
  onBlur: _onblur,
525
532
  index: index,
526
533
  confirm: confirm,
534
+ desensitization: _desensitization,
527
535
  otherProps: {
528
536
  form: form,
529
537
  names: names,
@@ -532,7 +540,8 @@ var RenderField = function RenderField(_ref) {
532
540
  listName: cellName,
533
541
  viewEmpty: viewEmpty,
534
542
  valueType: _valueType,
535
- isView: isView
543
+ isView: isView,
544
+ desensitizationKey: otherProps === null || otherProps === void 0 ? void 0 : otherProps.desensitizationKey
536
545
  }
537
546
  });
538
547
  componentProps = (0, _lodash.omit)(componentProps, ['onFieldChange', 'namePath', 'index']);
@@ -23,12 +23,9 @@ var RenderToolbar = function RenderToolbar(config) {
23
23
  toolbarProps = config.toolbarProps,
24
24
  name = config.name,
25
25
  virtualKey = config.virtualKey,
26
- form = config.form,
27
26
  disabled = config.disabled,
28
- selectedRows = config.selectedRows,
29
27
  tableLength = config.tableLength;
30
28
  var virtualName = (0, _tools.getNamePath)(name, virtualKey);
31
- var dataSource = form.getFieldValue(name);
32
29
  // toolbarProps配置为false 默认不插入
33
30
  if (toolbarProps === false || disabled) {
34
31
  return null;
@@ -82,29 +79,34 @@ var RenderToolbar = function RenderToolbar(config) {
82
79
  toolbar.show = show !== null && show !== void 0 ? show : true;
83
80
  toolbar.needConfirm = needConfirm !== null && needConfirm !== void 0 ? needConfirm : true;
84
81
  toolbar.onEvent = /*#__PURE__*/function () {
85
- var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(record, index) {
86
- var onEvent, result;
82
+ var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(record, _ref) {
83
+ var index, form, name, namePath, tableLength, selectedRows, onEvent, result;
87
84
  return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
88
85
  while (1) switch (_context.prev = _context.next) {
89
86
  case 0:
87
+ index = _ref.index, form = _ref.form, name = _ref.name, namePath = _ref.namePath, tableLength = _ref.tableLength, selectedRows = _ref.selectedRows;
90
88
  onEvent = onClick || onHandle;
91
89
  if (onEvent) {
92
- _context.next = 5;
90
+ _context.next = 6;
93
91
  break;
94
92
  }
95
93
  result = true;
96
- _context.next = 8;
94
+ _context.next = 9;
97
95
  break;
98
- case 5:
99
- _context.next = 7;
100
- return onEvent === null || onEvent === void 0 ? void 0 : onEvent(selectedRows, dataSource, {
96
+ case 6:
97
+ _context.next = 8;
98
+ return onEvent === null || onEvent === void 0 ? void 0 : onEvent(record, {
99
+ index: index,
101
100
  form: form,
102
- namePath: virtualName
101
+ name: name,
102
+ namePath: namePath,
103
+ tableLength: tableLength,
104
+ selectedRows: selectedRows
103
105
  });
104
- case 7:
105
- result = _context.sent;
106
106
  case 8:
107
- if (result && type !== 'custom') {
107
+ result = _context.sent;
108
+ case 9:
109
+ if (result !== false && type !== 'custom') {
108
110
  _config.actions[type]((0, _objectSpread2.default)((0, _objectSpread2.default)({}, config), {}, {
109
111
  index: index,
110
112
  record: record,
@@ -113,14 +115,14 @@ var RenderToolbar = function RenderToolbar(config) {
113
115
  virtualName: virtualName
114
116
  }));
115
117
  }
116
- case 9:
118
+ case 10:
117
119
  case "end":
118
120
  return _context.stop();
119
121
  }
120
122
  }, _callee);
121
123
  }));
122
124
  return function (_x, _x2) {
123
- return _ref.apply(this, arguments);
125
+ return _ref2.apply(this, arguments);
124
126
  };
125
127
  }();
126
128
  toolbar.buttonProps = buttonProps;
@@ -300,7 +300,7 @@ var ProEditTable = function ProEditTable(_ref, ref) {
300
300
  }, [value, config.name]);
301
301
  var _columns = (0, _react.useMemo)(function () {
302
302
  return (0, _utils.transformColumns)(columns, config);
303
- }, [valueChangeRef.current, disabled, forceUpdate, columns, page, actionProps, editingKeys, cellNamePath]);
303
+ }, [valueChangeRef.current, disabled, forceUpdate, columns, page, actionProps, editingKeys, cellNamePath, value === null || value === void 0 ? void 0 : value.length]);
304
304
  var initDataSource = function initDataSource() {
305
305
  var _value$every, _value$some;
306
306
  var isAllHasKey = value === null || value === void 0 ? void 0 : (_value$every = value.every) === null || _value$every === void 0 ? void 0 : _value$every.call(value, function (item) {
@@ -11,9 +11,12 @@ import { ProFormValueType, ColumnPropsMap } from '../ProForm/components/render/p
11
11
  import { DiffOriginalParams } from '../ProForm/utils/diffOriginal';
12
12
  export type ActionType = 'edit' | 'delete' | 'save' | 'cancel' | 'add' | 'mulDelete' | 'custom';
13
13
  export type ShowFunction<T> = (record?: T, options?: {
14
- index?: number;
15
- form?: FormInstance;
16
- namePath?: NamePath;
14
+ index: number;
15
+ form: FormInstance;
16
+ name: NamePath;
17
+ namePath: NamePath;
18
+ tableLength: number;
19
+ selectedRows: T[];
17
20
  }) => Promise<any> | boolean | void;
18
21
  export interface OptionsProps {
19
22
  index: number;
@@ -4,7 +4,7 @@ export interface DiffOriginalParams {
4
4
  originalValue: any;
5
5
  value: any;
6
6
  form: FormInstance;
7
- equalWith?: ({ originValue, originRecord, value, record, index }: {
7
+ equalWith?: ({ originValue, originRecord, value, record, index, }: {
8
8
  originValue: any;
9
9
  originRecord: any;
10
10
  value: any;
@@ -10,7 +10,20 @@ var isEmpty = _utils.validate.isEmpty;
10
10
  // 过滤对象中undefined字段
11
11
  // 防止{a: '1'} {a: '1', b: undefined | null}被认为不相等
12
12
  var filterObject = function filterObject(data) {
13
- if (!(0, _lodash.isObject)(data) || Array.isArray(data) || data === null) return data;
13
+ if (!(0, _lodash.isObject)(data) || data === null) return data;
14
+ // ['1', undefined] ['1', ''] 视为相等
15
+ if (Array.isArray(data)) {
16
+ // 数组中全是empty值的话 视为null
17
+ var isFillNull = true;
18
+ var arr = data.map(function (item) {
19
+ if (isEmpty(item)) {
20
+ return null;
21
+ }
22
+ isFillNull = false;
23
+ return item;
24
+ });
25
+ return isFillNull ? null : arr;
26
+ }
14
27
  var resData = {};
15
28
  Object.keys(data).forEach(function (key) {
16
29
  if (!isEmpty(data[key])) {
@@ -47,25 +60,11 @@ var diffOriginal = exports.diffOriginal = function diffOriginal(params) {
47
60
  }
48
61
  var _value = filterObject(value);
49
62
  var _originalValue = filterObject(originalValue);
50
- // 如果原始值为空 且当前有值的话 认为变更类型是新增
51
- if (isEmpty(_originalValue) && !isEmpty(_value)) {
52
- return 'add';
53
- }
54
- if (Array.isArray(_originalValue)) {
55
- if ((_originalValue === null || _originalValue === void 0 ? void 0 : _originalValue.length) === (_value === null || _value === void 0 ? void 0 : _value.length)) {
56
- var isSame = _originalValue.every(function (valueItem, index) {
57
- // 如果两个值有一个不是空值, 则进行深比较
58
- if (!isEmpty(value === null || value === void 0 ? void 0 : value[index]) || !isEmpty(valueItem)) {
59
- return (0, _lodash.isEqual)(value === null || value === void 0 ? void 0 : value[index], valueItem);
60
- }
61
- return true;
62
- });
63
- return isSame ? 'same' : 'changed';
64
- }
65
- return 'changed';
66
- }
67
- if (!isEmpty(_originalValue) || !isEmpty(_value)) {
68
- return (0, _lodash.isEqual)(_value, _originalValue) ? 'same' : 'changed';
69
- }
70
- return 'same';
63
+ var isEmptyVal = isEmpty(_value);
64
+ var isEmptyOrg = isEmpty(_originalValue);
65
+ // 都为空视为相等
66
+ if (isEmptyOrg && isEmptyVal) return 'same';
67
+ // 如果原始值为空 且当前有值的话 视为新增
68
+ if (isEmptyOrg && !isEmptyVal) return 'add';
69
+ return (0, _lodash.isEqual)(_value, _originalValue) ? 'same' : 'changed';
71
70
  };
@@ -87,49 +87,54 @@ var getActionColumn = function getActionColumn(config) {
87
87
  action.show = show !== null && show !== void 0 ? show : true;
88
88
  action.needConfirm = needConfirm !== null && needConfirm !== void 0 ? needConfirm : true;
89
89
  action.onEvent = /*#__PURE__*/function () {
90
- var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(record, index) {
90
+ var _ref2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(record, _ref) {
91
91
  var _form$getFieldValue;
92
- var rowName, _record, onEvent, result;
92
+ var index, form, name, namePath, tableLength, selectedRows, rowName, _record, onEvent, result;
93
93
  return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
94
94
  while (1) switch (_context.prev = _context.next) {
95
95
  case 0:
96
+ index = _ref.index, form = _ref.form, name = _ref.name, namePath = _ref.namePath, tableLength = _ref.tableLength, selectedRows = _ref.selectedRows;
96
97
  index = _utils.tools.calc(firstIndex, '+', index);
97
98
  rowName = [].concat((0, _toConsumableArray2.default)(virtualRowName), [index]);
98
99
  if (!(type === 'save')) {
99
- _context.next = 12;
100
+ _context.next = 13;
100
101
  break;
101
102
  }
102
- _context.prev = 3;
103
- _context.next = 6;
103
+ _context.prev = 4;
104
+ _context.next = 7;
104
105
  return (0, _tools.customValidate)(validateKeys, form, rowName);
105
- case 6:
106
- _context.next = 12;
106
+ case 7:
107
+ _context.next = 13;
107
108
  break;
108
- case 8:
109
- _context.prev = 8;
110
- _context.t0 = _context["catch"](3);
109
+ case 9:
110
+ _context.prev = 9;
111
+ _context.t0 = _context["catch"](4);
111
112
  (0, _tools.handleScrollToError)();
112
113
  return _context.abrupt("return", Promise.reject(_context.t0));
113
- case 12:
114
+ case 13:
114
115
  // 编辑状态使用自定义form值,非编辑状态直接使用行数据
115
116
  _record = (_form$getFieldValue = form.getFieldValue(rowName)) !== null && _form$getFieldValue !== void 0 ? _form$getFieldValue : record; // 新增事件可以设置初始默认值,当做函数的出参导出
116
117
  onEvent = onClick || onHandle;
117
118
  if (onEvent) {
118
- _context.next = 18;
119
+ _context.next = 19;
119
120
  break;
120
121
  }
121
122
  result = true;
122
- _context.next = 21;
123
+ _context.next = 22;
123
124
  break;
124
- case 18:
125
- _context.next = 20;
126
- return onEvent === null || onEvent === void 0 ? void 0 : onEvent(_record, index, {
125
+ case 19:
126
+ _context.next = 21;
127
+ return onEvent === null || onEvent === void 0 ? void 0 : onEvent(_record, {
127
128
  form: form,
128
- namePath: virtualRowName
129
+ index: index,
130
+ tableLength: tableLength,
131
+ name: name,
132
+ namePath: namePath,
133
+ selectedRows: selectedRows
129
134
  });
130
- case 20:
131
- result = _context.sent;
132
135
  case 21:
136
+ result = _context.sent;
137
+ case 22:
133
138
  if (result !== false && type !== 'custom') {
134
139
  _config.actions[type]((0, _objectSpread2.default)((0, _objectSpread2.default)({}, config), {}, {
135
140
  rowName: [].concat((0, _toConsumableArray2.default)(name), [index]),
@@ -139,14 +144,14 @@ var getActionColumn = function getActionColumn(config) {
139
144
  validateKeys: validateKeys
140
145
  }));
141
146
  }
142
- case 22:
147
+ case 23:
143
148
  case "end":
144
149
  return _context.stop();
145
150
  }
146
- }, _callee, null, [[3, 8]]);
151
+ }, _callee, null, [[4, 9]]);
147
152
  }));
148
153
  return function (_x, _x2) {
149
- return _ref.apply(this, arguments);
154
+ return _ref2.apply(this, arguments);
150
155
  };
151
156
  }();
152
157
  action.buttonProps = buttonProps;
@@ -229,10 +234,10 @@ var transformColumns = exports.transformColumns = function transformColumns() {
229
234
  if (typeof columnTitle === 'string') {
230
235
  item.originTitle = columnTitle;
231
236
  if (tooltip) {
232
- var _ref2 = tooltip || {},
233
- tooltipTitle = _ref2.title,
234
- icon = _ref2.icon,
235
- resetProps = (0, _objectWithoutProperties2.default)(_ref2, _excluded2);
237
+ var _ref3 = tooltip || {},
238
+ tooltipTitle = _ref3.title,
239
+ icon = _ref3.icon,
240
+ resetProps = (0, _objectWithoutProperties2.default)(_ref3, _excluded2);
236
241
  item.title = (0, _jsxRuntime.jsxs)("span", {
237
242
  className: "pro-edit-table-title pro-edit-table-tooltip",
238
243
  children: [before, columnTitle, (0, _jsxRuntime.jsx)(_antd.Tooltip, (0, _objectSpread2.default)((0, _objectSpread2.default)({
@@ -392,13 +397,13 @@ var transformColumns = exports.transformColumns = function transformColumns() {
392
397
  // cacheMap 用来存储缓存值,若有值后不再请求
393
398
  if (JSON.stringify(cacheMap.current) === '{}') {
394
399
  Promise.all(Object.entries(_cacheMap).map(/*#__PURE__*/function () {
395
- var _ref3 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2(item) {
396
- var _item, key, value, _ref4, service, option;
400
+ var _ref4 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2(item) {
401
+ var _item, key, value, _ref5, service, option;
397
402
  return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
398
403
  while (1) switch (_context2.prev = _context2.next) {
399
404
  case 0:
400
405
  _item = (0, _slicedToArray2.default)(item, 2), key = _item[0], value = _item[1];
401
- _ref4 = (value === null || value === void 0 ? void 0 : value.useRequest) || {}, service = _ref4.service, option = _ref4.option;
406
+ _ref5 = (value === null || value === void 0 ? void 0 : value.useRequest) || {}, service = _ref5.service, option = _ref5.option;
402
407
  if (!service) {
403
408
  _context2.next = 8;
404
409
  break;
@@ -418,7 +423,7 @@ var transformColumns = exports.transformColumns = function transformColumns() {
418
423
  }, _callee2);
419
424
  }));
420
425
  return function (_x3) {
421
- return _ref3.apply(this, arguments);
426
+ return _ref4.apply(this, arguments);
422
427
  };
423
428
  }())).then(function (res) {
424
429
  res.forEach(function (item) {
@@ -7,7 +7,7 @@ export declare const customValidate: (validateKeys: any, form: any, rowName: any
7
7
  * @returns string
8
8
  */
9
9
  export declare const splitNames: (names: any[]) => any;
10
- export declare const getNamePath: (name: any, virtualKey: any) => any;
10
+ export declare const getNamePath: (name: any, virtualKey: any) => any[];
11
11
  export declare const onDelete: ({ name, form, virtualKey, selectedRowKeys }: {
12
12
  name: any;
13
13
  form: any;
@@ -53,7 +53,7 @@ var splitNames = exports.splitNames = function splitNames(names) {
53
53
  };
54
54
  // 获取中间formItem的name
55
55
  var getNamePath = exports.getNamePath = function getNamePath(name, virtualKey) {
56
- var nextName = (0, _lodash.cloneDeep)(name);
56
+ var nextName = (0, _lodash.cloneDeep)(Array.isArray(name) ? name : [name]);
57
57
  var lastValue = nextName[nextName.length - 1];
58
58
  nextName[nextName.length - 1] = "".concat(lastValue).concat(virtualKey ? "-".concat(virtualKey) : '');
59
59
  return nextName;