@zat-design/sisyphus-react 3.6.10 → 3.6.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 (65) hide show
  1. package/dist/index.esm.css +52 -54
  2. package/dist/less.esm.css +52 -54
  3. package/es/ProEditTable/components/RenderField/ListChanged.d.ts +16 -0
  4. package/es/ProEditTable/components/RenderField/ListChanged.js +124 -0
  5. package/es/ProEditTable/components/RenderField/index.js +27 -46
  6. package/es/ProEditTable/style/index.less +2 -1
  7. package/es/ProEditTable/utils/index.d.ts +1 -1
  8. package/es/ProEditTable/utils/index.js +19 -13
  9. package/es/ProEditTable/utils/tools.d.ts +6 -0
  10. package/es/ProEditTable/utils/tools.js +15 -2
  11. package/es/ProForm/components/combination/ProCascader/index.js +8 -14
  12. package/es/ProForm/components/render/Changed.d.ts +14 -0
  13. package/es/ProForm/components/render/Changed.js +64 -0
  14. package/es/ProForm/components/render/Render.js +17 -37
  15. package/es/ProForm/style/index.less +52 -52
  16. package/es/ProForm/utils/diffOriginal.d.ts +0 -1
  17. package/es/ProForm/utils/diffOriginal.js +4 -27
  18. package/es/ProForm/utils/useChanged.js +1 -2
  19. package/es/ProForm/utils/useListChanged.js +3 -3
  20. package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/index.d.ts +3 -1
  21. package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/index.js +108 -41
  22. package/es/ProTable/components/RcTable/components/DraggableTable/index.js +14 -1
  23. package/es/ProTable/index.js +6 -2
  24. package/es/ProTable/propsType.d.ts +22 -0
  25. package/es/ProTable/style/index.less +27 -32
  26. package/es/ProThemeTools/component/{PrdTools → ProTools}/index.d.ts +2 -2
  27. package/es/ProThemeTools/component/{PrdTools → ProTools}/index.js +2 -2
  28. package/es/ProThemeTools/component/index.d.ts +1 -2
  29. package/es/ProThemeTools/component/index.js +1 -2
  30. package/es/ProThemeTools/index.js +2 -2
  31. package/es/ProThemeTools/style/index.less +1 -1
  32. package/es/ProTreeModal/components/List.js +30 -4
  33. package/lib/ProEditTable/components/RenderField/ListChanged.d.ts +16 -0
  34. package/lib/ProEditTable/components/RenderField/ListChanged.js +129 -0
  35. package/lib/ProEditTable/components/RenderField/index.js +26 -41
  36. package/lib/ProEditTable/style/index.less +2 -1
  37. package/lib/ProEditTable/utils/index.d.ts +1 -1
  38. package/lib/ProEditTable/utils/index.js +17 -11
  39. package/lib/ProEditTable/utils/tools.d.ts +6 -0
  40. package/lib/ProEditTable/utils/tools.js +15 -1
  41. package/lib/ProForm/components/combination/ProCascader/index.js +6 -12
  42. package/lib/ProForm/components/render/Changed.d.ts +14 -0
  43. package/lib/ProForm/components/render/Changed.js +69 -0
  44. package/lib/ProForm/components/render/Render.js +17 -35
  45. package/lib/ProForm/style/index.less +52 -52
  46. package/lib/ProForm/utils/diffOriginal.d.ts +0 -1
  47. package/lib/ProForm/utils/diffOriginal.js +3 -27
  48. package/lib/ProForm/utils/useChanged.js +1 -2
  49. package/lib/ProForm/utils/useListChanged.js +2 -2
  50. package/lib/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/index.d.ts +3 -1
  51. package/lib/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/index.js +108 -41
  52. package/lib/ProTable/components/RcTable/components/DraggableTable/index.js +13 -1
  53. package/lib/ProTable/index.js +6 -2
  54. package/lib/ProTable/propsType.d.ts +22 -0
  55. package/lib/ProTable/style/index.less +27 -32
  56. package/lib/ProThemeTools/component/{PrdTools → ProTools}/index.d.ts +2 -2
  57. package/lib/ProThemeTools/component/{PrdTools → ProTools}/index.js +2 -2
  58. package/lib/ProThemeTools/component/index.d.ts +1 -2
  59. package/lib/ProThemeTools/component/index.js +3 -3
  60. package/lib/ProThemeTools/index.js +1 -1
  61. package/lib/ProThemeTools/style/index.less +1 -1
  62. package/lib/ProTreeModal/components/List.js +30 -4
  63. package/package.json +1 -1
  64. /package/es/ProThemeTools/component/{PrdTools → ProTools}/style/index.less +0 -0
  65. /package/lib/ProThemeTools/component/{PrdTools → ProTools}/style/index.less +0 -0
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ var _react = _interopRequireWildcard(require("react"));
13
+ var _antd = require("antd");
14
+ var _lodash = require("lodash");
15
+ var _diffOriginal = require("../../../ProForm/utils/diffOriginal");
16
+ var _excluded = ["name", "names", "namesStr", "originalName", "originalNames", "originalValues", "form", "equalWith", "rowKeyPath", "children", "type"];
17
+ var toNamePath = function toNamePath(name) {
18
+ if (Array.isArray(name)) {
19
+ return name;
20
+ }
21
+ return [name];
22
+ };
23
+ var toNamePaths = function toNamePaths(names) {
24
+ return names.map(function (name) {
25
+ return toNamePath(name);
26
+ });
27
+ };
28
+ var getOriginalValue = function getOriginalValue(_ref) {
29
+ var namePath = _ref.namePath,
30
+ originalName = _ref.originalName,
31
+ originalNames = _ref.originalNames,
32
+ originalValues = _ref.originalValues,
33
+ rowKeyPath = _ref.rowKeyPath,
34
+ form = _ref.form;
35
+ if (!originalValues) {
36
+ return undefined;
37
+ }
38
+ if (rowKeyPath) {
39
+ var rowValueNamePath = namePath.slice(0, rowKeyPath.length - 1); // 表单中变动值所在行
40
+ var rowKeyName = rowKeyPath[rowKeyPath.length - 1]; // rowKey在行内的name
41
+ var rowValue = form.getFieldValue(rowValueNamePath);
42
+ if (!rowValue) return undefined;
43
+ var keyValue = rowValue[rowKeyName]; // 获取表单中rowKey值
44
+ if (!keyValue) return undefined;
45
+ var originalValueList = (0, _lodash.get)(originalValues, originalName.slice(0, rowKeyPath.length - 2));
46
+ var originalValueRow = originalValueList.find(function (item) {
47
+ return item[rowKeyPath[rowKeyPath.length - 1]] === keyValue;
48
+ });
49
+ var originalValue;
50
+ if (originalNames === null || originalNames === void 0 ? void 0 : originalNames.length) {
51
+ var originalNamesValue = originalNames.map(function (originalName) {
52
+ return (0, _lodash.get)(originalValueRow, originalName.slice(rowKeyPath.length - 1));
53
+ });
54
+ // 有可能出现数组中全是undefined的情况 视为没有值
55
+ var fillUndefined = originalNamesValue.every(function (valItem) {
56
+ return valItem === undefined;
57
+ });
58
+ originalValue = fillUndefined ? undefined : originalNamesValue;
59
+ } else {
60
+ originalValue = (0, _lodash.get)(originalValueRow, originalName.slice(rowKeyPath.length - 1));
61
+ }
62
+ return originalValue;
63
+ }
64
+ // 这个方法是给editTable专用的 暂时不存在不传rowKey的情况
65
+ return (originalNames === null || originalNames === void 0 ? void 0 : originalNames.length) ? originalNames.map(function (originalName) {
66
+ return (0, _lodash.get)(originalValues, originalName);
67
+ }) : (0, _lodash.get)(originalValues, originalName);
68
+ };
69
+ var ListChanged = function ListChanged(props) {
70
+ var name = props.name,
71
+ names = props.names,
72
+ namesStr = props.namesStr,
73
+ _props$originalName = props.originalName,
74
+ originalName = _props$originalName === void 0 ? name : _props$originalName,
75
+ _props$originalNames = props.originalNames,
76
+ originalNames = _props$originalNames === void 0 ? names : _props$originalNames,
77
+ originalValues = props.originalValues,
78
+ form = props.form,
79
+ equalWith = props.equalWith,
80
+ rowKeyPath = props.rowKeyPath,
81
+ children = props.children,
82
+ type = props.type,
83
+ rest = (0, _objectWithoutProperties2.default)(props, _excluded);
84
+ var namePath = toNamePath(namesStr || name);
85
+ var originalNamePath = toNamePath(originalName);
86
+ var originalNamePaths = originalNames && toNamePaths(originalNames);
87
+ var notWatch = !originalValues || ['FormList', 'ProEditTable'].includes(type);
88
+ var originalValue = !notWatch ? getOriginalValue({
89
+ namePath: namePath,
90
+ originalName: originalNamePath,
91
+ originalNames: originalNamePaths,
92
+ originalValues: originalValues,
93
+ rowKeyPath: rowKeyPath,
94
+ form: form
95
+ }) : undefined;
96
+ var noChange = !equalWith && (!originalValues || originalValue === undefined);
97
+ var changed = (0, _react.useMemo)(function () {
98
+ if (notWatch || noChange) return false;
99
+ return (0, _diffOriginal.diffOriginal)({
100
+ value: props.value,
101
+ originalValue: originalValue,
102
+ form: form,
103
+ equalWith: equalWith
104
+ // name: isString(namesStr) ? namesStr : originalName || name,
105
+ });
106
+ }, [props.value, originalValue]);
107
+ if (notWatch || noChange) {
108
+ return /*#__PURE__*/_react.default.isValidElement(children) && /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, children.props), rest));
109
+ }
110
+ return (0, _jsxRuntime.jsx)(_antd.Tooltip, {
111
+ open: changed ? undefined : false,
112
+ getPopupContainer: function getPopupContainer(target) {
113
+ return target.parentElement;
114
+ },
115
+ title: (0, _jsxRuntime.jsxs)(_antd.Space, {
116
+ children: ["\u521D\u59CB\u503C\uFF1A", /*#__PURE__*/_react.default.isValidElement(children) ? /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, children), {}, {
117
+ // @ts-ignore
118
+ isView: true,
119
+ value: originalValue,
120
+ checked: type === 'Switch' ? originalValue : undefined
121
+ })) : undefined]
122
+ }),
123
+ children: (0, _jsxRuntime.jsx)("div", {
124
+ className: changed ? 'pro-form-item-changed' : '',
125
+ children: /*#__PURE__*/_react.default.isValidElement(children) ? /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, children.props), rest)) : undefined
126
+ })
127
+ });
128
+ };
129
+ var _default = exports.default = ListChanged;
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports.default = void 0;
9
9
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
11
10
  var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
12
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
12
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
@@ -26,10 +25,10 @@ var _ProConfigProvider = require("../../../ProConfigProvider");
26
25
  var _Container = _interopRequireDefault(require("../../../ProForm/components/Container"));
27
26
  var _transformNames = _interopRequireDefault(require("../../../ProForm/utils/transformNames"));
28
27
  var _useFieldProps = require("../../../ProForm/utils/useFieldProps");
29
- var _useListChanged3 = require("../../../ProForm/utils/useListChanged");
30
28
  var _useRules = _interopRequireDefault(require("../../../ProForm/utils/useRules"));
31
29
  var _utils = require("../../../ProForm/utils");
32
30
  var _ConfirmWrapper = _interopRequireDefault(require("../../../ProForm/components/render/ConfirmWrapper"));
31
+ var _ListChanged = _interopRequireDefault(require("./ListChanged"));
33
32
  var _excluded = ["type", "valueType", "names", "fieldProps", "labelRequired", "editRender", "component", "viewRender", "title", "originTitle", "label", "dataIndex", "formItemProps", "isEditable", "required", "rules", "equalWith", "className", "trim", "confirm"];
34
33
  /* eslint-disable prefer-destructuring */
35
34
  /* eslint-disable prefer-const */
@@ -492,21 +491,6 @@ var RenderField = function RenderField(_ref) {
492
491
  return _ref3.apply(this, arguments);
493
492
  };
494
493
  }();
495
- // 判断当前字段是否变更
496
- var _useListChanged = (0, _useListChanged3.useListChanged)({
497
- name: cellName,
498
- names: names,
499
- namesStr: [].concat((0, _toConsumableArray2.default)(baseName), [index, dataIndex]),
500
- rowKeyPath: [].concat((0, _toConsumableArray2.default)(baseName), [index, 'rowKey']),
501
- originalName: originalName,
502
- originalNames: originalNames,
503
- originalValues: originalValues,
504
- form: form,
505
- equalWith: equalWith
506
- }),
507
- _useListChanged2 = (0, _slicedToArray2.default)(_useListChanged, 2),
508
- changed = _useListChanged2[0],
509
- originalValue = _useListChanged2[1];
510
494
  var componentProps = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({
511
495
  form: form,
512
496
  name: cellName
@@ -552,16 +536,36 @@ var RenderField = function RenderField(_ref) {
552
536
  if (isView) {
553
537
  delete _formItemProps.rules;
554
538
  }
555
- var _className = (0, _classnames.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, className, className), 'pro-form-item-changed', changed));
539
+ var _className = (0, _classnames.default)((0, _defineProperty2.default)({}, className, className));
556
540
  var FormItem = null;
541
+ var FieldComponent = /*#__PURE__*/_react.default.isValidElement(TargetComponent) ? ( /*#__PURE__*/_react.default.cloneElement(TargetComponent, componentProps)) : (0, _jsxRuntime.jsx)(TargetComponent, (0, _objectSpread2.default)({}, componentProps));
542
+ if (originalValues) {
543
+ FieldComponent = (0, _jsxRuntime.jsx)(_ListChanged.default, {
544
+ name: cellName,
545
+ names: names,
546
+ namesStr: [].concat((0, _toConsumableArray2.default)(baseName), [index, dataIndex]),
547
+ rowKeyPath: [].concat((0, _toConsumableArray2.default)(baseName), [index, 'rowKey']),
548
+ originalName: originalName,
549
+ originalNames: originalNames,
550
+ originalValues: originalValues,
551
+ form: form,
552
+ equalWith: equalWith,
553
+ type: type,
554
+ onChange: _onChange,
555
+ children: FieldComponent
556
+ });
557
+ }
558
+ if ((_componentProps = componentProps) === null || _componentProps === void 0 ? void 0 : _componentProps.confirm) {
559
+ FieldComponent = (0, _jsxRuntime.jsx)(_ConfirmWrapper.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, componentProps), {}, {
560
+ children: FieldComponent
561
+ }));
562
+ }
557
563
  FormItem = TargetComponent ? (0, _jsxRuntime.jsx)(_antd.Form.Item, (0, _objectSpread2.default)((0, _objectSpread2.default)({
558
564
  validateFirst: true
559
565
  }, (0, _lodash.omit)(_formItemProps, ['render', 'cache', 'key', 'width', 'hiddenNames', 'name', 'onCell'])), {}, {
560
566
  className: _className,
561
567
  name: formNamePath ? cellName.slice((formNamePath === null || formNamePath === void 0 ? void 0 : formNamePath.length) - 1) : cellName,
562
- children: ((_componentProps = componentProps) === null || _componentProps === void 0 ? void 0 : _componentProps.confirm) ? (0, _jsxRuntime.jsx)(_ConfirmWrapper.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, componentProps), {}, {
563
- children: /*#__PURE__*/_react.default.isValidElement(TargetComponent) ? ( /*#__PURE__*/_react.default.cloneElement(TargetComponent, componentProps)) : (0, _jsxRuntime.jsx)(TargetComponent, (0, _objectSpread2.default)({}, componentProps))
564
- })) : /*#__PURE__*/_react.default.isValidElement(TargetComponent) ? ( /*#__PURE__*/_react.default.cloneElement(TargetComponent, componentProps)) : (0, _jsxRuntime.jsx)(TargetComponent, (0, _objectSpread2.default)({}, componentProps))
568
+ children: FieldComponent
565
569
  })) : (0, _jsxRuntime.jsx)(_Container.default, {
566
570
  viewEmpty: viewEmpty
567
571
  });
@@ -579,28 +583,9 @@ var RenderField = function RenderField(_ref) {
579
583
  }
580
584
  }));
581
585
  }
582
- var originalTitle = originalDiffTip && originalValues ? (0, _jsxRuntime.jsxs)(_antd.Space, {
583
- children: ["\u521D\u59CB\u503C\uFF1A", /*#__PURE__*/_react.default.isValidElement(TargetComponent) ? ( /*#__PURE__*/_react.default.cloneElement(TargetComponent, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, componentProps), {}, {
584
- isView: true,
585
- value: originalValue,
586
- checked: type === 'Switch' ? originalValue : undefined
587
- }))) : (0, _jsxRuntime.jsx)(TargetComponent, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, componentProps), {}, {
588
- isView: true,
589
- value: originalValue,
590
- checked: type === 'Switch' ? originalValue : undefined
591
- }))]
592
- }) : null;
593
586
  return (0, _jsxRuntime.jsx)(_useFieldProps.FieldProvider, {
594
587
  value: (_componentProps2 = componentProps) === null || _componentProps2 === void 0 ? void 0 : _componentProps2.otherProps,
595
- children: !originalTitle || ['FormList', 'ProEditTable'].includes(type) ? FormItem : (0, _jsxRuntime.jsx)(_antd.Tooltip, {
596
- title: originalTitle,
597
- placement: "topLeft",
598
- open: changed ? undefined : false,
599
- getPopupContainer: function getPopupContainer(target) {
600
- return target.parentElement;
601
- },
602
- children: FormItem
603
- })
588
+ children: FormItem
604
589
  });
605
590
  };
606
591
  var _default = exports.default = RenderField;
@@ -327,6 +327,7 @@
327
327
 
328
328
  .pro-edit-table-drag {
329
329
  table tr th.@{ant-prefix}-table-selection-column.@{ant-prefix}-table-cell-fix-left{
330
- text-align: right;
330
+ text-align: left;
331
+ padding-left: 52px;
331
332
  }
332
333
  }
@@ -6,4 +6,4 @@
6
6
  * @param columns 表格配置数据
7
7
  * @param config
8
8
  */
9
- export declare const transformColumns: (columns: any[], config: any) => any[];
9
+ export declare const transformColumns: (columns: any[], config: any) => any;
@@ -29,16 +29,21 @@ var _excluded = ["type", "label", "show", "needConfirm", "onHandle", "onClick"],
29
29
  _excluded2 = ["title", "icon"];
30
30
  // 渲染操作栏
31
31
  var getActionColumn = function getActionColumn(config) {
32
- var disabled = config.disabled,
33
- name = config.name,
34
- form = config.form,
35
- virtualKey = config.virtualKey,
36
- validateKeys = config.validateKeys,
37
- actionWidth = config.actionWidth,
38
- actionProps = config.actionProps,
39
- page = config.page,
40
- rowDisabled = config.rowDisabled,
41
- actionDirection = config.actionDirection;
32
+ var _cloneDeepWith = (0, _lodash.cloneDeepWith)(config, function (value) {
33
+ if ( /*#__PURE__*/_react.default.isValidElement(value)) {
34
+ return value;
35
+ }
36
+ }),
37
+ disabled = _cloneDeepWith.disabled,
38
+ name = _cloneDeepWith.name,
39
+ form = _cloneDeepWith.form,
40
+ virtualKey = _cloneDeepWith.virtualKey,
41
+ validateKeys = _cloneDeepWith.validateKeys,
42
+ actionWidth = _cloneDeepWith.actionWidth,
43
+ actionProps = _cloneDeepWith.actionProps,
44
+ page = _cloneDeepWith.page,
45
+ rowDisabled = _cloneDeepWith.rowDisabled,
46
+ actionDirection = _cloneDeepWith.actionDirection;
42
47
  var pageNum = _utils.tools.calc(page.pageNum, '-', 1);
43
48
  var firstIndex = _utils.tools.calc(pageNum, '*', page.pageSize);
44
49
  // actionProps配置为false 默认不插入
@@ -199,7 +204,8 @@ var transformColumns = exports.transformColumns = function transformColumns() {
199
204
  setState = config.setState,
200
205
  page = config.page;
201
206
  var isCell = mode === 'cell';
202
- var _columns = (0, _toConsumableArray2.default)(columns);
207
+ var _columns = (0, _tools.cloneDeepFilterNode)(columns);
208
+ // 你的函数代码
203
209
  var _cacheMap = (0, _objectSpread2.default)({}, cacheMap.current);
204
210
  var pageNum = _utils.tools.calc(page.pageNum, '-', 1);
205
211
  var firstIndex = _utils.tools.calc(pageNum, '*', page.pageSize);
@@ -29,3 +29,9 @@ export declare const getDisabled: ({ globalControl, formDisabled, column, tabled
29
29
  /** 表格自动滚动到报错位置
30
30
  */
31
31
  export declare const handleScrollToError: () => void;
32
+ /**
33
+ * 深copy一个对象,并过滤掉其中的React节点
34
+ * @param value 需要深拷贝的对象
35
+ * @returns 深拷贝后的对象,其中的React节点会被保留
36
+ */
37
+ export declare function cloneDeepFilterNode(value: any): any;
@@ -4,8 +4,10 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
+ exports.cloneDeepFilterNode = cloneDeepFilterNode;
7
8
  exports.splitNames = exports.onDelete = exports.handleScrollToError = exports.getRandom = exports.getNamePath = exports.getDisabled = exports.difference = exports.customValidate = void 0;
8
9
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
10
+ var _react = _interopRequireDefault(require("react"));
9
11
  var _lodash = require("lodash");
10
12
  var getRandom = exports.getRandom = function getRandom() {
11
13
  return Math.random().toString(36).slice(-6);
@@ -189,4 +191,16 @@ var handleScrollToError = exports.handleScrollToError = function handleScrollToE
189
191
  }
190
192
  }
191
193
  }, 0);
192
- };
194
+ };
195
+ /**
196
+ * 深copy一个对象,并过滤掉其中的React节点
197
+ * @param value 需要深拷贝的对象
198
+ * @returns 深拷贝后的对象,其中的React节点会被保留
199
+ */
200
+ function cloneDeepFilterNode(value) {
201
+ return (0, _lodash.cloneDeepWith)(value, function (val) {
202
+ if ( /*#__PURE__*/_react.default.isValidElement(val)) {
203
+ return val;
204
+ }
205
+ });
206
+ }
@@ -21,6 +21,7 @@ var _ProConfigProvider = require("../../../../ProConfigProvider");
21
21
  var _useEnum = _interopRequireDefault(require("../../../../ProEnum/hooks/useEnum"));
22
22
  var _locale = _interopRequireDefault(require("../../../../locale"));
23
23
  var _ = _interopRequireDefault(require("../../.."));
24
+ var _Container = _interopRequireDefault(require("../../Container"));
24
25
  var _excluded = ["className", "hasDetail", "detailMaxLength", "fieldNames", "value", "disabled", "dataSource", "onChange", "useRequest", "transformResponse", "level", "isView", "enumCode", "code", "tooltip", "separator", "detailPlaceholder"];
25
26
  var Text = _antd.Typography.Text;
26
27
  var defaultFieldNames = {
@@ -82,7 +83,8 @@ var ProCascader = function ProCascader(props) {
82
83
  detailPlaceholder = props.detailPlaceholder,
83
84
  otherProps = (0, _objectWithoutProperties2.default)(props, _excluded);
84
85
  var _ref3 = _.default.useFieldProps() || {},
85
- isViewCon = _ref3.isView;
86
+ isViewCon = _ref3.isView,
87
+ viewEmpty = _ref3.viewEmpty;
86
88
  var addressCode = code || enumCode;
87
89
  var realIsView = typeof isView === 'boolean' ? isView : isViewCon;
88
90
  var realLevel = Math.max(2, level);
@@ -238,17 +240,9 @@ var ProCascader = function ProCascader(props) {
238
240
  }
239
241
  }
240
242
  };
241
- return realIsView ? tooltip ? (0, _jsxRuntime.jsx)(_antd.Tooltip, {
242
- className: className,
243
- title: tooltip === true ? viewValue : tooltip,
244
- children: (0, _jsxRuntime.jsx)(Text, {
245
- ellipsis: {
246
- tooltip: false
247
- },
248
- children: viewValue
249
- })
250
- }) : (0, _jsxRuntime.jsx)("span", {
251
- className: className,
243
+ return realIsView ? (0, _jsxRuntime.jsx)(_Container.default, {
244
+ tooltip: !!tooltip,
245
+ viewEmpty: viewEmpty,
252
246
  children: viewValue
253
247
  }) : (0, _jsxRuntime.jsxs)("div", {
254
248
  className: "pro-address ".concat(className),
@@ -0,0 +1,14 @@
1
+ import { FormInstance } from 'antd';
2
+ import { NamePath } from 'antd/lib/form/interface';
3
+ import React from 'react';
4
+ interface Props {
5
+ name?: NamePath;
6
+ names?: NamePath[];
7
+ namesStr?: string;
8
+ originalValues?: any;
9
+ form: FormInstance;
10
+ equalWith?: (preValue: any, curValue: any) => boolean | undefined;
11
+ [name: string]: any;
12
+ }
13
+ declare const Changed: React.FC<Props>;
14
+ export default Changed;
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
10
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ var _antd = require("antd");
13
+ var _lodash = require("lodash");
14
+ var _react = _interopRequireWildcard(require("react"));
15
+ var _diffOriginal = require("../../utils/diffOriginal");
16
+ var _excluded = ["name", "names", "namesStr", "originalValues", "form", "equalWith", "children", "type", "originalDiffTip"];
17
+ var Changed = function Changed(props) {
18
+ var name = props.name,
19
+ names = props.names,
20
+ namesStr = props.namesStr,
21
+ originalValues = props.originalValues,
22
+ form = props.form,
23
+ equalWith = props.equalWith,
24
+ children = props.children,
25
+ type = props.type,
26
+ originalDiffTip = props.originalDiffTip,
27
+ rest = (0, _objectWithoutProperties2.default)(props, _excluded);
28
+ // 不渲染tooltip
29
+ var notWatch = !originalDiffTip || ['FormList', 'ProEditTable'].includes(type);
30
+ var originalValue = (names === null || names === void 0 ? void 0 : names.length) ? names.map(function (name) {
31
+ return (0, _lodash.get)(originalValues, name);
32
+ }) : (0, _lodash.get)(originalValues, name);
33
+ var noChange = !equalWith && (!originalValues || originalValue === undefined);
34
+ var changed = (0, _react.useMemo)(function () {
35
+ if (notWatch || noChange) return false;
36
+ return (0, _diffOriginal.diffOriginal)({
37
+ originalValue: originalValue,
38
+ value: props.value,
39
+ form: form,
40
+ equalWith: equalWith
41
+ // name: namesStr || name,
42
+ });
43
+ }, [notWatch, noChange, props.value, originalValue]);
44
+ var tipContent = (0, _react.useMemo)(function () {
45
+ if (notWatch || noChange) return undefined;
46
+ return /*#__PURE__*/_react.default.isValidElement(children) ? /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, children.props), {}, {
47
+ isView: true,
48
+ value: originalValue,
49
+ checked: type === 'Switch' ? originalValue : undefined
50
+ })) : undefined;
51
+ }, [originalValue, children]);
52
+ if (notWatch || noChange) {
53
+ return /*#__PURE__*/_react.default.isValidElement(children) && /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, children.props), rest));
54
+ }
55
+ return (0, _jsxRuntime.jsx)(_antd.Tooltip, {
56
+ open: changed ? undefined : false,
57
+ getPopupContainer: function getPopupContainer(target) {
58
+ return target.parentElement;
59
+ },
60
+ title: (0, _jsxRuntime.jsxs)(_antd.Space, {
61
+ children: ["\u521D\u59CB\u503C\uFF1A", tipContent]
62
+ }),
63
+ children: (0, _jsxRuntime.jsx)("div", {
64
+ className: changed ? 'pro-form-item-changed' : '',
65
+ children: /*#__PURE__*/_react.default.isValidElement(children) ? /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, children.props), rest)) : undefined
66
+ })
67
+ });
68
+ };
69
+ var _default = exports.default = Changed;
@@ -11,7 +11,6 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/
11
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
14
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
15
14
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
16
15
  var _jsxRuntime = require("react/jsx-runtime");
17
16
  var _antd = require("antd");
@@ -24,10 +23,10 @@ var _index = require("../../utils/index");
24
23
  var _ProConfigProvider = require("../../../ProConfigProvider");
25
24
  var _transformNames = _interopRequireDefault(require("../../utils/transformNames"));
26
25
  var _valueType = _interopRequireDefault(require("../../utils/valueType"));
27
- var _useChanged3 = require("../../utils/useChanged");
28
26
  var _tip = _interopRequireDefault(require("../../../assets/tip.svg"));
29
27
  var _useRules = _interopRequireDefault(require("../../utils/useRules"));
30
28
  var _ConfirmWrapper = _interopRequireDefault(require("./ConfirmWrapper"));
29
+ var _Changed = _interopRequireDefault(require("./Changed"));
31
30
  var _excluded = ["labelWidth", "hiddenNames", "trim", "upperCase", "className", "rules", "required", "labelRequired", "tooltip"];
32
31
  /* eslint-disable prefer-destructuring */
33
32
  // 这个组件只管渲染, 参数的整理在外部处理
@@ -99,18 +98,6 @@ var Render = function Render(props) {
99
98
  return Array.isArray(name) ? name.join('_') : name;
100
99
  }).join('-');
101
100
  }, [otherProps === null || otherProps === void 0 ? void 0 : otherProps.names]);
102
- // 判断当前字段是否变更
103
- var _useChanged = (0, _useChanged3.useChanged)({
104
- name: formItemProps.name,
105
- names: otherProps.names,
106
- namesStr: namesStr,
107
- originalValues: originalValues,
108
- form: form,
109
- equalWith: equalWith
110
- }),
111
- _useChanged2 = (0, _slicedToArray2.default)(_useChanged, 2),
112
- changed = _useChanged2[0],
113
- originalValue = _useChanged2[1];
114
101
  var internalRule = (0, _useRules.default)({
115
102
  names: otherProps.names,
116
103
  label: otherFormItemProps.label,
@@ -182,7 +169,7 @@ var Render = function Render(props) {
182
169
  var lastComponentProps = (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, componentProps), _fieldProps), {}, {
183
170
  disabled: lastDisabled
184
171
  });
185
- var _className = (0, _classnames.default)((0, _defineProperty2.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, className, className), 'pro-form-item-changed', changed), 'pro-form-item-width-auto', ['Switch'].includes(type)));
172
+ var _className = (0, _classnames.default)((0, _defineProperty2.default)((0, _defineProperty2.default)({}, className, className), 'pro-form-item-width-auto', ['Switch'].includes(type)));
186
173
  if (formItemProps.hidden === true || _show === false) {
187
174
  // 为了监听shouldUpdate 必须存在一个FormItem, 空Input解决 【[antd: Form.Item] `name` is only used for validate React element】
188
175
  return (0, _jsxRuntime.jsx)(_antd.Form.Item, {
@@ -440,6 +427,20 @@ var Render = function Render(props) {
440
427
  span: 24 // 默认占一行
441
428
  });
442
429
  }
430
+ if (originalValues) {
431
+ child = (0, _jsxRuntime.jsx)(_Changed.default, {
432
+ name: formItemProps.name,
433
+ names: otherProps.names,
434
+ namesStr: namesStr,
435
+ originalValues: originalValues,
436
+ form: form,
437
+ equalWith: equalWith,
438
+ originalDiffTip: originalDiffTip,
439
+ type: type,
440
+ onChange: handleChange,
441
+ children: child
442
+ });
443
+ }
443
444
  var orgFormItem = (0, _jsxRuntime.jsx)(_antd.Form.Item, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, (0, _lodash.omit)(_otherFormItemProps, filterFormItemKey)), {}, {
444
445
  // @ts-ignore
445
446
  _internalItemRender: internalItemRender,
@@ -466,26 +467,7 @@ var Render = function Render(props) {
466
467
  })
467
468
  });
468
469
  }
469
- // 不渲染tooltip
470
- if (!originalDiffTip || ['FormList', 'ProEditTable'].includes(type)) {
471
- return formItem;
472
- }
473
- var title = (0, _jsxRuntime.jsxs)(_antd.Space, {
474
- children: ["\u521D\u59CB\u503C\uFF1A", /*#__PURE__*/_react.default.cloneElement(child, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, child), {}, {
475
- isView: true,
476
- value: originalValue,
477
- checked: type === 'Switch' ? originalValue : undefined
478
- }))]
479
- });
480
- return (0, _jsxRuntime.jsx)(_antd.Tooltip, {
481
- title: title,
482
- open: changed ? undefined : false,
483
- // open={true}
484
- getPopupContainer: function getPopupContainer(target) {
485
- return target.parentElement;
486
- },
487
- children: formItem
488
- });
470
+ return formItem;
489
471
  };
490
472
  var FormItem = (0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
491
473
  children: [renderItem(), (otherProps === null || otherProps === void 0 ? void 0 : (_otherProps$names2 = otherProps.names) === null || _otherProps$names2 === void 0 ? void 0 : _otherProps$names2.length) ? otherProps.names.map(function (name) {