@zat-design/sisyphus-react 3.9.3 → 3.9.4

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.
@@ -120,9 +120,15 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
120
120
  if (!isWatch || noChange) return 'same';
121
121
  var _value = normalize ? normalize(props[valuePropName], undefined, undefined, true) // true 代表是值比对时的调用
122
122
  : props[valuePropName];
123
+ // fix:修复 DatePicker时,originalValue与最新值一致时,显示为 changed的问题
124
+ var _originalValue = normalize && ['DatePicker'].includes(props.type) ? normalize(originalValue, undefined, undefined, true) : originalValue;
125
+ // fix:修复 InputNumber 时,originalValue与最新值一致都为'0'时,显示为 changed的问题
126
+ if (['InputNumber'].includes(props.type) && normalize && _value === Number(originalValue)) {
127
+ return 'same';
128
+ }
123
129
  return diffOriginal({
124
130
  value: _value,
125
- originalValue: originalValue,
131
+ originalValue: _originalValue,
126
132
  form: form,
127
133
  equalWith: equalWith
128
134
  // name: isString(namesStr) ? namesStr : originalName || name,
@@ -16,7 +16,7 @@ import _Typography from "antd/es/typography";
16
16
  var _excluded = ["className", "hasDetail", "detailMaxLength", "fieldNames", "value", "disabled", "dataSource", "onChange", "useRequest", "transformResponse", "level", "isView", "enumCode", "code", "tooltip", "separator", "detailPlaceholder", "scrollFollowParent"];
17
17
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
18
  import { useEffect, useState, memo, useMemo } from 'react';
19
- import { omit, find as _find } from 'lodash';
19
+ import { omit, find as _find, isBoolean } from 'lodash';
20
20
  import { transformDataName } from './utils/index';
21
21
  import { useProConfig } from '../../../../ProConfigProvider';
22
22
  import useEnum from '../../../../ProEnum/hooks/useEnum';
@@ -111,6 +111,12 @@ var ProCascader = function ProCascader(props) {
111
111
  var result = transformDataName(isAddressMode && realLevel === 2 ? _filterDataSource(innerDataSource, level, fieldNames) : innerDataSource, fieldNames);
112
112
  return result;
113
113
  }, [isAddressMode, addressCode, realLevel, dataSource, enumDataSource === null || enumDataSource === void 0 ? void 0 : enumDataSource.length]);
114
+ var lastDisabled = useMemo(function () {
115
+ if (isBoolean(disabled) || disabled === undefined) {
116
+ return [disabled, disabled];
117
+ }
118
+ return disabled;
119
+ }, [disabled]);
114
120
  var _useRequest = _objectSpread({}, useRequest),
115
121
  service = _useRequest.service,
116
122
  _useRequest$defaultPa = _useRequest.defaultParams,
@@ -268,7 +274,7 @@ var ProCascader = function ProCascader(props) {
268
274
  placeholder: locale === null || locale === void 0 ? void 0 : (_locale$ProAddressBar = locale.ProAddressBar) === null || _locale$ProAddressBar === void 0 ? void 0 : _locale$ProAddressBar.placeholder,
269
275
  value: addressValue,
270
276
  options: service ? serviceData : realDataSource,
271
- disabled: disabled,
277
+ disabled: lastDisabled[0],
272
278
  displayRender: displayRender,
273
279
  showSearch: {
274
280
  filter: handlefilter,
@@ -278,19 +284,19 @@ var ProCascader = function ProCascader(props) {
278
284
  getPopupContainer: function getPopupContainer(trigger) {
279
285
  return scrollFollowParent ? trigger.parentElement : document.body;
280
286
  }
281
- }, omit(otherProps, ['otherProps', 'scrollFollowParent']))), hasDetail && (tooltip && disabled && detail ? _jsx(_Tooltip, {
287
+ }, omit(otherProps, ['otherProps', 'scrollFollowParent']))), hasDetail && (tooltip && lastDisabled[1] && detail ? _jsx(_Tooltip, {
282
288
  title: detail,
283
289
  children: _jsx("span", {
284
290
  className: "pro-address-detail",
285
291
  children: _jsx(_Input, {
286
- disabled: disabled,
292
+ disabled: lastDisabled[1],
287
293
  value: detail
288
294
  })
289
295
  })
290
296
  }) : _jsx(_Input, {
291
297
  allowClear: true,
292
298
  autoComplete: "off",
293
- disabled: disabled,
299
+ disabled: lastDisabled[1],
294
300
  value: detail,
295
301
  maxLength: detailMaxLength,
296
302
  placeholder: detailPlaceholder || (locale === null || locale === void 0 ? void 0 : (_locale$ProAddressBar2 = locale.ProAddressBar) === null || _locale$ProAddressBar2 === void 0 ? void 0 : _locale$ProAddressBar2.detailPlaceholder),
@@ -2,6 +2,7 @@ import "antd/es/space/style";
2
2
  import _Space from "antd/es/space";
3
3
  import "antd/es/tooltip/style";
4
4
  import _Tooltip from "antd/es/tooltip";
5
+ import _typeof from "@babel/runtime/helpers/esm/typeof";
5
6
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
6
7
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
7
8
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
@@ -47,9 +48,15 @@ var ChangedWrapper = function ChangedWrapper(props) {
47
48
  if (!isWatch || noChange) return 'same';
48
49
  var _value = normalize ? normalize(props[valuePropName], undefined, undefined, true) // true 代表是值比对时的调用
49
50
  : props[valuePropName];
51
+ // fix:修复 DatePicker时,originalValue与最新值一致时,显示为 changed的问题
52
+ var _originalValue = normalize && ['DatePicker'].includes(props.type) ? normalize(originalValue, undefined, undefined, true) : originalValue;
53
+ // fix:修复 InputNumber 时,originalValue与最新值一致都为'0'时,显示为 changed的问题
54
+ if (['InputNumber'].includes(props.type) && normalize && _value === Number(originalValue)) {
55
+ return 'same';
56
+ }
50
57
  return diffOriginal({
51
- originalValue: originalValue,
52
58
  value: _value,
59
+ originalValue: _originalValue,
53
60
  form: form,
54
61
  equalWith: equalWith
55
62
  // name: namesStr || name,
@@ -57,23 +64,20 @@ var ChangedWrapper = function ChangedWrapper(props) {
57
64
  }, [isWatch, noChange, props[valuePropName], originalValue]);
58
65
  var isAdd = diffType === 'add';
59
66
  var isChanged = diffType === 'changed';
60
- var viewRenderFun = useMemo(function () {
61
- return function (orgValue) {
62
- return viewRender(orgValue, originalValues, {
63
- form: form
64
- });
65
- };
66
- }, [form]);
67
67
  var tipContent = useMemo(function () {
68
68
  if (!isWatch || noChange) return undefined;
69
69
  var valueProps = getValueProps && !names ? getValueProps(originalValue) : {
70
70
  value: originalValue
71
71
  };
72
- if (viewRender) return viewRenderFun(valueProps === null || valueProps === void 0 ? void 0 : valueProps.value);
72
+ if (viewRender) {
73
+ return viewRender(valueProps === null || valueProps === void 0 ? void 0 : valueProps.value, originalValues, {
74
+ form: form
75
+ });
76
+ }
73
77
  return /*#__PURE__*/React.isValidElement(children) ? /*#__PURE__*/React.cloneElement(children, _objectSpread(_objectSpread({}, children.props), {}, _defineProperty({
74
78
  isView: true
75
79
  }, valuePropName, valueProps === null || valueProps === void 0 ? void 0 : valueProps.value))) : undefined;
76
- }, [originalValue, children]);
80
+ }, [_typeof(viewRender), originalValue, children]);
77
81
  if (!isWatch || noChange) {
78
82
  // 嵌套子组件
79
83
  var isNestedField = ['ProEditTable'].includes(type);
@@ -2,6 +2,14 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import { useRef, useState } from 'react';
3
3
  import { isFunction, isEqualWith, get } from 'lodash';
4
4
  import { customEqualForFun } from './index';
5
+ /** FormList中被删除的行也会再触发一次响应式函数 排除这种场景 */
6
+ var isDeleteLine = function isDeleteLine(form, namePath) {
7
+ if (namePath) {
8
+ var line = form.getFieldValue(namePath);
9
+ return line === undefined;
10
+ }
11
+ return false;
12
+ };
5
13
  // 代理shouldUpdate事件, 执行函数值的[show, disabled], 当[show, disabled]与上一次值不相同时更新状态
6
14
  var useShouldUpdate = function useShouldUpdate(props) {
7
15
  var show = props.show,
@@ -64,7 +72,7 @@ var useShouldUpdate = function useShouldUpdate(props) {
64
72
  }
65
73
  if (isFunction(disabled)) {
66
74
  // RangePicker返回数组时,特殊处理
67
- if (['Group', 'RangePicker'].includes(type) && Array.isArray(disabled(values, {
75
+ if (['Group', 'RangePicker', 'ProCascader'].includes(type) && Array.isArray(disabled(values, {
68
76
  form: form,
69
77
  index: index,
70
78
  namePath: namePath
@@ -169,7 +177,7 @@ var useShouldUpdate = function useShouldUpdate(props) {
169
177
  namePath: namePath
170
178
  }) : fieldProps;
171
179
  // 清值防抖 多次刷新时以最后一次为准
172
- if (clearNotShow !== false && (name || names)) {
180
+ if (clearNotShow !== false && (name || names) && !isDeleteLine(form, namePath)) {
173
181
  // 当show为其他变为false的时候记录一次需要清值
174
182
  if (_show !== showRef.current && _show === false) {
175
183
  needClear.current = true;
@@ -2,6 +2,7 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
3
  var _excluded = ["id", "title", "collapse", "children"];
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
+ import { useEffect } from 'react';
5
6
  import { useStep } from '../../index';
6
7
  import ProCollapse from '../../../ProLayout/components/ProCollapse';
7
8
  export default (function (_ref) {
@@ -14,10 +15,18 @@ export default (function (_ref) {
14
15
  var _useStep = useStep(),
15
16
  register = _useStep.register,
16
17
  collapse = _useStep.collapse;
17
- register === null || register === void 0 ? void 0 : register(_objectSpread(_objectSpread({}, restProps), {}, {
18
- title: title,
19
- id: id
20
- }));
18
+ useEffect(function () {
19
+ // 子组件更新父组件 延迟状态更新,避免重渲染
20
+ var timeoutId = setTimeout(function () {
21
+ register === null || register === void 0 ? void 0 : register(_objectSpread(_objectSpread({}, restProps), {}, {
22
+ title: title,
23
+ id: id
24
+ }));
25
+ }, 0);
26
+ return function () {
27
+ return clearTimeout(timeoutId);
28
+ };
29
+ }, [register]);
21
30
  return _jsx("div", {
22
31
  className: "pro-step-item",
23
32
  id: id,
@@ -125,9 +125,15 @@ var ListChangedWrapper = function ListChangedWrapper(props) {
125
125
  if (!isWatch || noChange) return 'same';
126
126
  var _value = normalize ? normalize(props[valuePropName], undefined, undefined, true) // true 代表是值比对时的调用
127
127
  : props[valuePropName];
128
+ // fix:修复 DatePicker时,originalValue与最新值一致时,显示为 changed的问题
129
+ var _originalValue = normalize && ['DatePicker'].includes(props.type) ? normalize(originalValue, undefined, undefined, true) : originalValue;
130
+ // fix:修复 InputNumber 时,originalValue与最新值一致都为'0'时,显示为 changed的问题
131
+ if (['InputNumber'].includes(props.type) && normalize && _value === Number(originalValue)) {
132
+ return 'same';
133
+ }
128
134
  return (0, _diffOriginal.diffOriginal)({
129
135
  value: _value,
130
- originalValue: originalValue,
136
+ originalValue: _originalValue,
131
137
  form: form,
132
138
  equalWith: equalWith
133
139
  // name: isString(namesStr) ? namesStr : originalName || name,
@@ -111,6 +111,12 @@ var ProCascader = function ProCascader(props) {
111
111
  var result = (0, _index.transformDataName)(isAddressMode && realLevel === 2 ? _filterDataSource(innerDataSource, level, fieldNames) : innerDataSource, fieldNames);
112
112
  return result;
113
113
  }, [isAddressMode, addressCode, realLevel, dataSource, enumDataSource === null || enumDataSource === void 0 ? void 0 : enumDataSource.length]);
114
+ var lastDisabled = (0, _react.useMemo)(function () {
115
+ if ((0, _lodash.isBoolean)(disabled) || disabled === undefined) {
116
+ return [disabled, disabled];
117
+ }
118
+ return disabled;
119
+ }, [disabled]);
114
120
  var _useRequest = (0, _objectSpread3.default)({}, useRequest),
115
121
  service = _useRequest.service,
116
122
  _useRequest$defaultPa = _useRequest.defaultParams,
@@ -268,7 +274,7 @@ var ProCascader = function ProCascader(props) {
268
274
  placeholder: _locale.default === null || _locale.default === void 0 ? void 0 : (_locale$ProAddressBar = _locale.default.ProAddressBar) === null || _locale$ProAddressBar === void 0 ? void 0 : _locale$ProAddressBar.placeholder,
269
275
  value: addressValue,
270
276
  options: service ? serviceData : realDataSource,
271
- disabled: disabled,
277
+ disabled: lastDisabled[0],
272
278
  displayRender: displayRender,
273
279
  showSearch: {
274
280
  filter: handlefilter,
@@ -278,19 +284,19 @@ var ProCascader = function ProCascader(props) {
278
284
  getPopupContainer: function getPopupContainer(trigger) {
279
285
  return scrollFollowParent ? trigger.parentElement : document.body;
280
286
  }
281
- }, (0, _lodash.omit)(otherProps, ['otherProps', 'scrollFollowParent']))), hasDetail && (tooltip && disabled && detail ? (0, _jsxRuntime.jsx)(_antd.Tooltip, {
287
+ }, (0, _lodash.omit)(otherProps, ['otherProps', 'scrollFollowParent']))), hasDetail && (tooltip && lastDisabled[1] && detail ? (0, _jsxRuntime.jsx)(_antd.Tooltip, {
282
288
  title: detail,
283
289
  children: (0, _jsxRuntime.jsx)("span", {
284
290
  className: "pro-address-detail",
285
291
  children: (0, _jsxRuntime.jsx)(_antd.Input, {
286
- disabled: disabled,
292
+ disabled: lastDisabled[1],
287
293
  value: detail
288
294
  })
289
295
  })
290
296
  }) : (0, _jsxRuntime.jsx)(_antd.Input, {
291
297
  allowClear: true,
292
298
  autoComplete: "off",
293
- disabled: disabled,
299
+ disabled: lastDisabled[1],
294
300
  value: detail,
295
301
  maxLength: detailMaxLength,
296
302
  placeholder: detailPlaceholder || (_locale.default === null || _locale.default === void 0 ? void 0 : (_locale$ProAddressBar2 = _locale.default.ProAddressBar) === null || _locale$ProAddressBar2 === void 0 ? void 0 : _locale$ProAddressBar2.detailPlaceholder),
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = void 0;
9
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
9
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
11
  var _objectSpread3 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
@@ -52,9 +53,15 @@ var ChangedWrapper = function ChangedWrapper(props) {
52
53
  if (!isWatch || noChange) return 'same';
53
54
  var _value = normalize ? normalize(props[valuePropName], undefined, undefined, true) // true 代表是值比对时的调用
54
55
  : props[valuePropName];
56
+ // fix:修复 DatePicker时,originalValue与最新值一致时,显示为 changed的问题
57
+ var _originalValue = normalize && ['DatePicker'].includes(props.type) ? normalize(originalValue, undefined, undefined, true) : originalValue;
58
+ // fix:修复 InputNumber 时,originalValue与最新值一致都为'0'时,显示为 changed的问题
59
+ if (['InputNumber'].includes(props.type) && normalize && _value === Number(originalValue)) {
60
+ return 'same';
61
+ }
55
62
  return (0, _diffOriginal.diffOriginal)({
56
- originalValue: originalValue,
57
63
  value: _value,
64
+ originalValue: _originalValue,
58
65
  form: form,
59
66
  equalWith: equalWith
60
67
  // name: namesStr || name,
@@ -62,23 +69,20 @@ var ChangedWrapper = function ChangedWrapper(props) {
62
69
  }, [isWatch, noChange, props[valuePropName], originalValue]);
63
70
  var isAdd = diffType === 'add';
64
71
  var isChanged = diffType === 'changed';
65
- var viewRenderFun = (0, _react.useMemo)(function () {
66
- return function (orgValue) {
67
- return viewRender(orgValue, originalValues, {
68
- form: form
69
- });
70
- };
71
- }, [form]);
72
72
  var tipContent = (0, _react.useMemo)(function () {
73
73
  if (!isWatch || noChange) return undefined;
74
74
  var valueProps = getValueProps && !names ? getValueProps(originalValue) : {
75
75
  value: originalValue
76
76
  };
77
- if (viewRender) return viewRenderFun(valueProps === null || valueProps === void 0 ? void 0 : valueProps.value);
77
+ if (viewRender) {
78
+ return viewRender(valueProps === null || valueProps === void 0 ? void 0 : valueProps.value, originalValues, {
79
+ form: form
80
+ });
81
+ }
78
82
  return /*#__PURE__*/_react.default.isValidElement(children) ? /*#__PURE__*/_react.default.cloneElement(children, (0, _objectSpread3.default)((0, _objectSpread3.default)({}, children.props), {}, (0, _defineProperty2.default)({
79
83
  isView: true
80
84
  }, valuePropName, valueProps === null || valueProps === void 0 ? void 0 : valueProps.value))) : undefined;
81
- }, [originalValue, children]);
85
+ }, [(0, _typeof2.default)(viewRender), originalValue, children]);
82
86
  if (!isWatch || noChange) {
83
87
  // 嵌套子组件
84
88
  var isNestedField = ['ProEditTable'].includes(type);
@@ -9,6 +9,14 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
9
9
  var _react = require("react");
10
10
  var _lodash = require("lodash");
11
11
  var _index = require("./index");
12
+ /** FormList中被删除的行也会再触发一次响应式函数 排除这种场景 */
13
+ var isDeleteLine = function isDeleteLine(form, namePath) {
14
+ if (namePath) {
15
+ var line = form.getFieldValue(namePath);
16
+ return line === undefined;
17
+ }
18
+ return false;
19
+ };
12
20
  // 代理shouldUpdate事件, 执行函数值的[show, disabled], 当[show, disabled]与上一次值不相同时更新状态
13
21
  var useShouldUpdate = function useShouldUpdate(props) {
14
22
  var show = props.show,
@@ -71,7 +79,7 @@ var useShouldUpdate = function useShouldUpdate(props) {
71
79
  }
72
80
  if ((0, _lodash.isFunction)(disabled)) {
73
81
  // RangePicker返回数组时,特殊处理
74
- if (['Group', 'RangePicker'].includes(type) && Array.isArray(disabled(values, {
82
+ if (['Group', 'RangePicker', 'ProCascader'].includes(type) && Array.isArray(disabled(values, {
75
83
  form: form,
76
84
  index: index,
77
85
  namePath: namePath
@@ -176,7 +184,7 @@ var useShouldUpdate = function useShouldUpdate(props) {
176
184
  namePath: namePath
177
185
  }) : fieldProps;
178
186
  // 清值防抖 多次刷新时以最后一次为准
179
- if (clearNotShow !== false && (name || names)) {
187
+ if (clearNotShow !== false && (name || names) && !isDeleteLine(form, namePath)) {
180
188
  // 当show为其他变为false的时候记录一次需要清值
181
189
  if (_show !== showRef.current && _show === false) {
182
190
  needClear.current = true;
@@ -8,6 +8,7 @@ exports.default = void 0;
8
8
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
9
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
10
10
  var _jsxRuntime = require("react/jsx-runtime");
11
+ var _react = require("react");
11
12
  var _index = require("../../index");
12
13
  var _ProCollapse = _interopRequireDefault(require("../../../ProLayout/components/ProCollapse"));
13
14
  var _excluded = ["id", "title", "collapse", "children"];
@@ -21,10 +22,18 @@ var _default = exports.default = function _default(_ref) {
21
22
  var _useStep = (0, _index.useStep)(),
22
23
  register = _useStep.register,
23
24
  collapse = _useStep.collapse;
24
- register === null || register === void 0 ? void 0 : register((0, _objectSpread2.default)((0, _objectSpread2.default)({}, restProps), {}, {
25
- title: title,
26
- id: id
27
- }));
25
+ (0, _react.useEffect)(function () {
26
+ // 子组件更新父组件 延迟状态更新,避免重渲染
27
+ var timeoutId = setTimeout(function () {
28
+ register === null || register === void 0 ? void 0 : register((0, _objectSpread2.default)((0, _objectSpread2.default)({}, restProps), {}, {
29
+ title: title,
30
+ id: id
31
+ }));
32
+ }, 0);
33
+ return function () {
34
+ return clearTimeout(timeoutId);
35
+ };
36
+ }, [register]);
28
37
  return (0, _jsxRuntime.jsx)("div", {
29
38
  className: "pro-step-item",
30
39
  id: id,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zat-design/sisyphus-react",
3
- "version": "3.9.3",
3
+ "version": "3.9.4",
4
4
  "license": "Apache-2.0",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -1,5 +0,0 @@
1
- {
2
- "recommendations": [
3
- "kisstkondoros.vscode-codemetrics"
4
- ]
5
- }