@zat-design/sisyphus-react 3.9.5 → 3.9.6-beta.2

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 (50) hide show
  1. package/.vscode/extensions.json +5 -0
  2. package/dist/index.esm.css +52 -6
  3. package/dist/less.esm.css +52 -6
  4. package/es/FormsProvider/index.d.ts +15 -0
  5. package/es/FormsProvider/index.js +32 -0
  6. package/es/ProConfigProvider/index.d.ts +0 -1
  7. package/es/ProConfigProvider/index.js +0 -5
  8. package/es/ProEditTable/utils/diffOriginal.js +11 -8
  9. package/es/ProForm/components/render/Render.js +4 -4
  10. package/es/ProForm/index.js +12 -38
  11. package/es/ProForm/style/index.less +1 -0
  12. package/es/ProForm/utils/diffOriginal.js +14 -19
  13. package/es/ProForm/utils/useForm.d.ts +4 -3
  14. package/es/ProForm/utils/useForm.js +12 -3
  15. package/es/ProLayout/components/ProHeader/PropTypes.d.ts +8 -0
  16. package/es/ProLayout/components/ProHeader/index.js +94 -28
  17. package/es/ProLayout/components/ProHeader/style/index.less +52 -6
  18. package/es/ProLayout/components/ProHeader/utils/index.d.ts +5 -0
  19. package/es/ProLayout/components/ProHeader/utils/index.js +14 -0
  20. package/es/ProLayout/style/index.less +1 -1
  21. package/es/ProSelect/index.js +1 -1
  22. package/es/ProTreeModal/components/Trigger.js +4 -0
  23. package/es/index.d.ts +1 -0
  24. package/es/index.js +1 -0
  25. package/es/utils/index.d.ts +4 -1
  26. package/es/utils/index.js +4 -1
  27. package/lib/FormsProvider/index.d.ts +15 -0
  28. package/lib/FormsProvider/index.js +39 -0
  29. package/lib/ProConfigProvider/index.d.ts +0 -1
  30. package/lib/ProConfigProvider/index.js +0 -6
  31. package/lib/ProEditTable/utils/diffOriginal.js +11 -8
  32. package/lib/ProForm/components/render/Render.js +4 -4
  33. package/lib/ProForm/index.js +11 -37
  34. package/lib/ProForm/style/index.less +1 -0
  35. package/lib/ProForm/utils/diffOriginal.js +14 -19
  36. package/lib/ProForm/utils/useForm.d.ts +4 -3
  37. package/lib/ProForm/utils/useForm.js +12 -3
  38. package/lib/ProLayout/components/ProHeader/PropTypes.d.ts +8 -0
  39. package/lib/ProLayout/components/ProHeader/index.js +90 -24
  40. package/lib/ProLayout/components/ProHeader/style/index.less +52 -6
  41. package/lib/ProLayout/components/ProHeader/utils/index.d.ts +5 -0
  42. package/lib/ProLayout/components/ProHeader/utils/index.js +20 -0
  43. package/lib/ProLayout/style/index.less +1 -1
  44. package/lib/ProSelect/index.js +1 -1
  45. package/lib/ProTreeModal/components/Trigger.js +4 -0
  46. package/lib/index.d.ts +1 -0
  47. package/lib/index.js +8 -0
  48. package/lib/utils/index.d.ts +4 -1
  49. package/lib/utils/index.js +4 -1
  50. package/package.json +1 -1
@@ -2,29 +2,30 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  import "antd/es/modal/style";
3
3
  import _Modal from "antd/es/modal";
4
4
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
- import "antd/es/tooltip/style";
6
- import _Tooltip from "antd/es/tooltip";
7
5
  import "antd/es/breadcrumb/style";
8
6
  import _Breadcrumb from "antd/es/breadcrumb";
9
7
  import "antd/es/divider/style";
10
8
  import _Divider from "antd/es/divider";
9
+ import "antd/es/tooltip/style";
10
+ import _Tooltip from "antd/es/tooltip";
11
11
  import "antd/es/space/style";
12
12
  import _Space from "antd/es/space";
13
13
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
14
14
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
15
15
  /* eslint-disable react/no-array-index-key */
16
16
 
17
- import { memo, useEffect, useState } from 'react';
17
+ import { memo, useEffect, useState, useRef } from 'react';
18
18
  import { tools } from '@zat-design/utils';
19
19
  import classnames from 'classnames';
20
20
  import moment from 'moment';
21
- import { useToggle } from 'ahooks';
21
+ import { useToggle, useSize } from 'ahooks';
22
22
  import { isFunction, isEmpty, isNumber, isString } from 'lodash';
23
23
  import { ReactSVG } from 'react-svg';
24
24
  import foldSvg from '../../../assets/arrow.svg';
25
25
  import { Copy, ProBackBtn } from './components';
26
26
  import getEnumLabel from '../../../ProEnum/utils/getEnumLabel';
27
27
  import locale from '../../../locale';
28
+ import { checkDescribeItemsHidden } from './utils';
28
29
  var formatAmount = tools.formatAmount;
29
30
  var ProHeader = function ProHeader(props) {
30
31
  var _props$breadcrumbList = props.breadcrumbList,
@@ -64,6 +65,8 @@ var ProHeader = function ProHeader(props) {
64
65
  _useToggle2 = _slicedToArray(_useToggle, 2),
65
66
  fold = _useToggle2[0],
66
67
  toggle = _useToggle2[1].toggle;
68
+ var ref = useRef(null);
69
+ var size = useSize(ref);
67
70
  var _title = title;
68
71
  // 面包屑配置数据源
69
72
  var _breadcrumbColumns = breadcrumbColumns || breadcrumbList;
@@ -94,7 +97,11 @@ var ProHeader = function ProHeader(props) {
94
97
  return null;
95
98
  }
96
99
  return _jsx("ul", {
97
- className: "pro-header-describe",
100
+ className: classnames({
101
+ 'pro-header-describe': true,
102
+ 'pro-header-describe-open': fold,
103
+ 'pro-header-describe-hidden': !fold
104
+ }),
98
105
  children: describeData.map(function (item, index) {
99
106
  var value = item.value,
100
107
  copyable = item.copyable,
@@ -102,20 +109,20 @@ var ProHeader = function ProHeader(props) {
102
109
  show = _item$show === void 0 ? true : _item$show,
103
110
  tag = item.tag,
104
111
  label = item.label,
105
- link = item.link;
112
+ link = item.link,
113
+ _item$items = item.items,
114
+ items = _item$items === void 0 ? [] : _item$items,
115
+ width = item.width;
106
116
  // show为false直接隐藏¸
107
117
  if (show === false || !show) {
108
118
  return null;
109
119
  }
110
120
  var onlyTag = tag && !label && !value;
111
- var tagCls = classnames({
112
- 'pro-header-only-tag': onlyTag
113
- });
114
- var tagRender = function tagRender() {
115
- if (Array.isArray(tag) && tag.length) {
121
+ var tagRender = function tagRender(parmas) {
122
+ if (Array.isArray(parmas === null || parmas === void 0 ? void 0 : parmas.tag) && (parmas === null || parmas === void 0 ? void 0 : parmas.tag.length)) {
116
123
  return _jsx(_Space, {
117
124
  size: 4,
118
- children: tag.map(function (tagItem, index) {
125
+ children: parmas.tag.map(function (tagItem, index) {
119
126
  return _jsx("div", {
120
127
  className: "pro-header-tag",
121
128
  children: tagItem
@@ -123,32 +130,91 @@ var ProHeader = function ProHeader(props) {
123
130
  })
124
131
  });
125
132
  }
126
- return tag ? _jsx("div", {
133
+ return (parmas === null || parmas === void 0 ? void 0 : parmas.tag) ? _jsx("div", {
127
134
  className: "pro-header-tag",
128
- children: tag
135
+ children: parmas === null || parmas === void 0 ? void 0 : parmas.tag
129
136
  }) : null;
130
137
  };
131
- var valueRender = function valueRender() {
138
+ /** 单行渲染 */
139
+ var valueRender = function valueRender(parmas) {
132
140
  return _jsxs(_Space, {
133
141
  size: 4,
134
- align: tag ? 'baseline' : 'center',
135
- children: [link ? _jsx("a", {
136
- href: link,
142
+ align: (parmas === null || parmas === void 0 ? void 0 : parmas.tag) ? 'baseline' : 'center',
143
+ children: [(parmas === null || parmas === void 0 ? void 0 : parmas.link) ? _jsx("a", {
144
+ href: parmas.link,
137
145
  rel: "noopener noreferrer",
138
146
  target: "_blank",
139
- children: value
140
- }) : value, copyable && isString(value) ? _jsx(Copy, {
141
- text: value
142
- }) : null, tagRender()]
147
+ children: parmas === null || parmas === void 0 ? void 0 : parmas.value
148
+ }) : parmas === null || parmas === void 0 ? void 0 : parmas.value, (parmas === null || parmas === void 0 ? void 0 : parmas.copyable) && isString(parmas === null || parmas === void 0 ? void 0 : parmas.value) ? _jsx(Copy, {
149
+ text: parmas.value
150
+ }) : null, tagRender({
151
+ tag: parmas === null || parmas === void 0 ? void 0 : parmas.tag
152
+ })]
143
153
  });
144
154
  };
145
- return _jsxs("li", {
155
+ /** 多行渲染 */
156
+ var itemsRender = function itemsRender() {
157
+ // items配置是否超长,超长配置... + tip 提示
158
+ var itemsHidden = checkDescribeItemsHidden(ref === null || ref === void 0 ? void 0 : ref.current);
159
+ var result = _jsxs("div", {
160
+ ref: ref,
161
+ className: classnames({
162
+ 'pro-header-describe-items': true,
163
+ 'pro-header-describe-items-more': items.length >= 2
164
+ }),
165
+ children: [(items === null || items === void 0 ? void 0 : items.length) > 3 ? "\u5171".concat(items === null || items === void 0 ? void 0 : items.length, "\u4E2A\uFF0C") : null, items.map(function (item, index) {
166
+ return _jsxs("span", {
167
+ children: [valueRender(item), (items === null || items === void 0 ? void 0 : items.length) !== index + 1 ? ' 、' : null]
168
+ }, index);
169
+ }), itemsHidden ? _jsx("span", {
170
+ className: "pro-header-describe-items-omit",
171
+ children: "..."
172
+ }) : null]
173
+ });
174
+ if (itemsHidden) {
175
+ var tipResult = _jsx(_Fragment, {
176
+ children: items.map(function (item, index) {
177
+ return _jsx("p", {
178
+ className: "pro-header-describe-items-tip-value",
179
+ children: valueRender(item)
180
+ }, index);
181
+ })
182
+ });
183
+ return _jsx(_Tooltip, {
184
+ placement: "bottomLeft",
185
+ overlayClassName: "pro-header-describe-items-tip",
186
+ title: tipResult,
187
+ children: result
188
+ });
189
+ }
190
+ return result;
191
+ };
192
+ var tagCls = classnames({
193
+ 'pro-header-only-tag': onlyTag,
194
+ 'pro-header-describe-items-calc': isString(width) ? width.includes('calc') : false
195
+ });
196
+ return _jsx("li", {
146
197
  className: tagCls,
147
- children: [label ? _jsx("span", {
148
- children: label
149
- }) : null, _jsx("span", {
150
- children: valueRender()
151
- })]
198
+ style: {
199
+ width: width
200
+ },
201
+ children: _jsxs(_Space, {
202
+ size: 4,
203
+ children: [label ? _jsx("span", {
204
+ className: "pro-header-describe-label",
205
+ children: label
206
+ }) : null, _jsx("span", {
207
+ className: "pro-header-describe-value",
208
+ children: (items === null || items === void 0 ? void 0 : items.length) ? itemsRender() : _jsx("span", {
209
+ children: valueRender({
210
+ value: value,
211
+ copyable: copyable,
212
+ tag: tag,
213
+ link: link
214
+ })
215
+ })
216
+ })]
217
+ })
152
218
  }, index);
153
219
  })
154
220
  });
@@ -3,7 +3,7 @@
3
3
  @import '../components/ProBackBtn/style/index';
4
4
 
5
5
  .pro-header {
6
- padding: 16px 0 0 0 !important;
6
+ padding: 10px 0 0 0 !important;
7
7
  background-color: var(--zaui-base-bg, #ffffff);
8
8
  box-shadow: 2px 3px 8px 0px rgba(0, 55, 93, 0.1);
9
9
 
@@ -46,9 +46,49 @@
46
46
  }
47
47
 
48
48
  .pro-header-describe {
49
+ transition: height 0.2s ease-in-out;
49
50
  a {
50
51
  color: var(--zaui-link, #006aff);
51
52
  }
53
+ .pro-header-describe-items-calc{
54
+ position: relative;
55
+ }
56
+ &.pro-header-describe-hidden {
57
+ height: 0;
58
+ padding: 0;
59
+ overflow: hidden;
60
+ border: 0;
61
+ }
62
+ .@{ant-prefix}-space {
63
+ .pro-header-describe-label {
64
+ font-weight: normal;
65
+ }
66
+ .pro-header-describe-value{
67
+ font-weight: 600;
68
+ .@{ant-prefix}-space-item{
69
+ font-weight: 600;
70
+ }
71
+ .pro-header-describe-items{
72
+ span:first-child{
73
+ margin-right: 2px;
74
+ }
75
+ .pro-header-describe-items-omit{
76
+ position: absolute;
77
+ right: 0;
78
+ background: #fff;
79
+ letter-spacing: 2px;
80
+ }
81
+ &.pro-header-describe-items-more{
82
+ .pro-header-tag{
83
+ padding: 0;
84
+ background: transparent;
85
+ color: #333 ;
86
+ }
87
+
88
+ }
89
+ }
90
+ }
91
+ }
52
92
  }
53
93
 
54
94
  .pro-header-copy {
@@ -334,8 +374,10 @@
334
374
  font-size: var(--zaui-font-size, 14px);
335
375
 
336
376
  li {
337
- margin-left: var(--zaui-space-card, 32px);
338
-
377
+ flex: 0 0 auto;
378
+ white-space: nowrap;
379
+ overflow: hidden;
380
+ text-overflow: ellipsis;
339
381
  &.pro-header-only-tag {
340
382
  margin-left: var(--zaui-space-size-sm, 8px);
341
383
 
@@ -344,9 +386,6 @@
344
386
  }
345
387
  }
346
388
 
347
- &:first-child {
348
- margin-left: 0;
349
- }
350
389
 
351
390
  span {
352
391
  color: #0a0a0a;
@@ -369,6 +408,13 @@
369
408
  }
370
409
  }
371
410
 
411
+ .pro-header-describe-items-tip{
412
+ max-width: 600px;
413
+ .pro-header-describe-items-tip-value{
414
+ margin-bottom: var(--zaui-space-size-sm, 8px);
415
+ }
416
+ }
417
+
372
418
  @media (max-width: 1366px) {
373
419
  .pro-header-describe {
374
420
  li span:last-child {
@@ -0,0 +1,5 @@
1
+ /**
2
+ * 检查描述dom是否部分隐藏
3
+ * @param ele dom节点
4
+ */
5
+ export declare const checkDescribeItemsHidden: (ele?: any) => boolean;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * 检查描述dom是否部分隐藏
3
+ * @param ele dom节点
4
+ */
5
+ export var checkDescribeItemsHidden = function checkDescribeItemsHidden(ele) {
6
+ var childElement = ele;
7
+ if (!childElement) {
8
+ return false;
9
+ }
10
+ var element = childElement.parentNode.parentNode.parentNode.parentNode;
11
+ var itemsScrollWidth = element.scrollWidth;
12
+ var itemsClientWidth = element.clientWidth;
13
+ return itemsScrollWidth > itemsClientWidth;
14
+ };
@@ -79,7 +79,7 @@
79
79
  // pro-header调整
80
80
  .pro-header{
81
81
  &.pro-header-no-describe{
82
- padding: var(--zaui-space-size-md, 16px) !important;
82
+ padding: 10px var(--zaui-space-size-md, 16px) !important;
83
83
  .pro-header-top{
84
84
  padding-bottom: 0;
85
85
  }
@@ -296,7 +296,7 @@ export var ProSelect = function ProSelect(props, ref) {
296
296
  showArrow: true,
297
297
  loading: fetchFunction === null || fetchFunction === void 0 ? void 0 : fetchFunction.loading,
298
298
  onChange: handleChange,
299
- optionLabelProp: (otherProps === null || otherProps === void 0 ? void 0 : otherProps.isDiffChange) ? 'label' : 'children',
299
+ // optionLabelProp={otherProps?.isDiffChange ? 'label' : 'children'} // 解决warning报错,添加默认值
300
300
  // optionLabelProp="label" // 解决warning报错,添加默认值
301
301
  showSearch: true,
302
302
  filterOption: isFunction(_onSearch) ? false : function (input, option) {
@@ -52,6 +52,10 @@ function Trigger(props) {
52
52
  setState({
53
53
  mode: 'all'
54
54
  });
55
+ } else {
56
+ setState({
57
+ mode: 'appoint'
58
+ });
55
59
  }
56
60
  }, [checkAll]);
57
61
  var onIconClick = function onIconClick() {
package/es/index.d.ts CHANGED
@@ -17,6 +17,7 @@ export { default as ProIcon } from './ProIcon';
17
17
  export { default as ProDownload } from './ProDownload';
18
18
  export { default as ProWaterMark } from './ProWaterMark';
19
19
  export { default as ProConfigProvider } from './ProConfigProvider';
20
+ export { default as FormsProvider } from './FormsProvider';
20
21
  export { default as ProUpload } from './ProUpload';
21
22
  export { default as ProThemeTools } from './ProThemeTools';
22
23
  export { default as ProAction } from './ProAction';
package/es/index.js CHANGED
@@ -22,6 +22,7 @@ export { default as ProIcon } from './ProIcon';
22
22
  export { default as ProDownload } from './ProDownload';
23
23
  export { default as ProWaterMark } from './ProWaterMark';
24
24
  export { default as ProConfigProvider } from './ProConfigProvider';
25
+ export { default as FormsProvider } from './FormsProvider';
25
26
  export { default as ProUpload } from './ProUpload';
26
27
  export { default as ProThemeTools } from './ProThemeTools';
27
28
  export { default as ProAction } from './ProAction';
@@ -1,3 +1,6 @@
1
- /** 判断一个值是否是空值 */
1
+ /**
2
+ * 判断一个值是否是空值
3
+ * 空值 或者 仅包含空值的数组视为空
4
+ */
2
5
  export declare const isEmpty: (value: any, emptyValue?: string) => boolean;
3
6
  export declare const useFocus: (element: Element) => boolean;
package/es/utils/index.js CHANGED
@@ -1,7 +1,10 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
2
  import { useEffect, useState } from 'react';
3
3
  var EMPTY_VALUE = [undefined, null, ''];
4
- /** 判断一个值是否是空值 */
4
+ /**
5
+ * 判断一个值是否是空值
6
+ * 空值 或者 仅包含空值的数组视为空
7
+ */
5
8
  export var isEmpty = function isEmpty(value, emptyValue) {
6
9
  if (emptyValue) {
7
10
  EMPTY_VALUE.push(emptyValue);
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { ModifiedFormInstance } from '../ProForm/utils/useForm';
3
+ type Forms = Record<string, ModifiedFormInstance<any>>;
4
+ export declare const FormsContext: React.Context<Forms>;
5
+ /**
6
+ * @param formKey 表单实例key
7
+ * @param formIst form实例, 如果传了会把传入的实例存入全局
8
+ * @returns 没有入参: 返回表单实例但是不存入全局
9
+ * 有formKey: 取全局中的表单实例返回, 如果不存在则创建后返回
10
+ */
11
+ export declare const useForms: () => Forms;
12
+ /** 获取所有表单实例 */
13
+ export declare const useContextForms: () => Forms;
14
+ declare const FormsProvider: React.FC;
15
+ export default FormsProvider;
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.useForms = exports.useContextForms = exports.default = exports.FormsContext = void 0;
8
+ var _jsxRuntime = require("react/jsx-runtime");
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var FormsContext = exports.FormsContext = /*#__PURE__*/_react.default.createContext({});
11
+ /**
12
+ * @param formKey 表单实例key
13
+ * @param formIst form实例, 如果传了会把传入的实例存入全局
14
+ * @returns 没有入参: 返回表单实例但是不存入全局
15
+ * 有formKey: 取全局中的表单实例返回, 如果不存在则创建后返回
16
+ */
17
+ var useForms = exports.useForms = function useForms() {
18
+ var forms = (0, _react.useContext)(FormsContext);
19
+ return forms;
20
+ };
21
+ /** 获取所有表单实例 */
22
+ var useContextForms = exports.useContextForms = function useContextForms() {
23
+ var forms = (0, _react.useContext)(FormsContext);
24
+ return forms;
25
+ };
26
+ var FormsProvider = function FormsProvider(props) {
27
+ var formsRef = (0, _react.useRef)({});
28
+ (0, _react.useEffect)(function () {
29
+ // 销毁
30
+ return function () {
31
+ formsRef.current = {};
32
+ };
33
+ }, []);
34
+ return (0, _jsxRuntime.jsx)(FormsContext.Provider, {
35
+ value: formsRef.current,
36
+ children: props.children
37
+ });
38
+ };
39
+ var _default = exports.default = FormsProvider;
@@ -20,7 +20,6 @@ interface ConfigContext {
20
20
  export declare const ProConfigContext: React.Context<ConfigContext>;
21
21
  export declare function useProConfig(): ConfigContext;
22
22
  export declare function useProConfig(name: keyof ConfigContext['state']): ConfigContext['state'][keyof ConfigContext['state']];
23
- export declare function useContextForms(): Record<string, FormInstance<any>>;
24
23
  type ActionsType = 'set' | 'setProEnum' | 'setProEnumDic' | 'setWithLocal';
25
24
  interface Actions {
26
25
  type: ActionsType;
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = exports.ProConfigProvider = exports.ProConfigContext = void 0;
9
- exports.useContextForms = useContextForms;
10
9
  exports.useProConfig = useProConfig;
11
10
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
12
11
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
@@ -44,11 +43,6 @@ function useProConfig(name) {
44
43
  var config = (0, _react.useContext)(ProConfigContext);
45
44
  return name ? config.state[name] : config;
46
45
  }
47
- function useContextForms() {
48
- var _config$state;
49
- var config = (0, _react.useContext)(ProConfigContext);
50
- return (_config$state = config.state) === null || _config$state === void 0 ? void 0 : _config$state.forms;
51
- }
52
46
  var antdLangMap = {
53
47
  'zh-CN': _zh_CN.default,
54
48
  'en-US': _en_US.default // en-US
@@ -52,14 +52,17 @@ var diffOriginal = exports.diffOriginal = function diffOriginal(params) {
52
52
  return 'add';
53
53
  }
54
54
  if (Array.isArray(_originalValue)) {
55
- var isSame = _originalValue.every(function (valueItem, index) {
56
- // 如果两个值有一个不是空值, 则进行深比较
57
- if (!isEmpty(value === null || value === void 0 ? void 0 : value[index]) || !isEmpty(valueItem)) {
58
- return (0, _lodash.isEqual)(value === null || value === void 0 ? void 0 : value[index], valueItem);
59
- }
60
- return true;
61
- });
62
- return isSame ? 'same' : 'changed';
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';
63
66
  }
64
67
  if (!isEmpty(_originalValue) || !isEmpty(_value)) {
65
68
  return (0, _lodash.isEqual)(_value, _originalValue) ? 'same' : 'changed';
@@ -409,7 +409,10 @@ var Render = function Render(props) {
409
409
  if (type === 'FormList') {
410
410
  lastComponentProps.disabled = lastDisabled;
411
411
  var lessMode = lastComponentProps.mode === 'less';
412
- child = (0, _jsxRuntime.jsx)(_antd.Form.List, (0, _objectSpread2.default)((0, _objectSpread2.default)({
412
+ colProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, colProps), {}, {
413
+ span: lessMode ? colProps.span : 24 // 默认占一行
414
+ });
415
+ return (0, _jsxRuntime.jsx)(_antd.Form.List, (0, _objectSpread2.default)((0, _objectSpread2.default)({
413
416
  name: _otherFormItemProps.name
414
417
  }, (0, _lodash.omit)(_otherFormItemProps, ['rules'])), {}, {
415
418
  children: function children(fields, operation, meta) {
@@ -421,9 +424,6 @@ var Render = function Render(props) {
421
424
  }));
422
425
  }
423
426
  }));
424
- colProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, colProps), {}, {
425
- span: lessMode ? colProps.span : 24 // 默认占一行
426
- });
427
427
  }
428
428
  // 默认占据一行
429
429
  if (['ProCollapse', 'Container'].includes(type)) {
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.default = exports.ProFormProvider = void 0;
9
+ var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
10
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
11
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
12
12
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
13
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
14
14
  var _jsxRuntime = require("react/jsx-runtime");
@@ -25,9 +25,10 @@ var _useForm3 = require("./utils/useForm");
25
25
  var _useFieldProps = require("./utils/useFieldProps");
26
26
  var _locale = _interopRequireDefault(require("../locale"));
27
27
  var _useWatch = _interopRequireDefault(require("./utils/useWatch"));
28
+ var _FormsProvider = _interopRequireWildcard(require("../FormsProvider"));
28
29
  var _excluded = ["mode", "span", "disabled", "isView", "columns", "footer", "onOk", "okText", "onCancel", "confirmLoading", "cancelText", "form", "children", "rowProps", "className", "expand", "expandOpen", "expandOpenChange", "viewEmpty", "labelAlign", "labelWidth", "onValuesChange", "onFinish", "diffConfig", "submitOnEnter", "clearNotShow", "initialValues", "requiredOnView", "formId", "required", "formKey", "globalControl", "scrollToError", "optimize"];
29
30
  var ProForm = function ProForm(props, ref) {
30
- var _forms$formKey, _localStorage, _ref;
31
+ var _localStorage, _ref;
31
32
  var _props$mode = props.mode,
32
33
  mode = _props$mode === void 0 ? 'search' : _props$mode,
33
34
  span = props.span,
@@ -70,14 +71,11 @@ var ProForm = function ProForm(props, ref) {
70
71
  _props$optimize = props.optimize,
71
72
  optimize = _props$optimize === void 0 ? false : _props$optimize,
72
73
  otherProps = (0, _objectWithoutProperties2.default)(props, _excluded);
73
- var _useProConfig = (0, _ProConfigProvider.useProConfig)(),
74
- state = _useProConfig.state,
75
- dispatch = _useProConfig.dispatch;
76
- var config = state.ProForm,
77
- forms = state.forms;
78
- var _useForm = (0, _useForm3.useForm)((_forms$formKey = forms[formKey]) !== null && _forms$formKey !== void 0 ? _forms$formKey : originForm, {
74
+ var config = (0, _ProConfigProvider.useProConfig)('ProForm');
75
+ var _useForm = (0, _useForm3.useForm)(originForm, {
79
76
  scrollToError: scrollToError,
80
- optimize: optimize
77
+ optimize: optimize,
78
+ formKey: formKey
81
79
  }),
82
80
  _useForm2 = (0, _slicedToArray2.default)(_useForm, 1),
83
81
  form = _useForm2[0];
@@ -88,33 +86,6 @@ var ProForm = function ProForm(props, ref) {
88
86
  _useControlled2 = (0, _slicedToArray2.default)(_useControlled, 2),
89
87
  openState = _useControlled2[0],
90
88
  setOpenState = _useControlled2[1];
91
- // 把表单实例存入表单组
92
- (0, _react.useMemo)(function () {
93
- if (formKey && forms[formKey] !== form) {
94
- forms[formKey] = form;
95
- // fix: Cannot update a component (`ProConfigProvider`) while rendering a different component (`ForwardRef(ProForm)`).
96
- setTimeout(function () {
97
- dispatch({
98
- type: 'set',
99
- payload: {
100
- forms: (0, _objectSpread2.default)({}, forms)
101
- }
102
- });
103
- }, 300);
104
- }
105
- // 销毁
106
- return function () {
107
- if (formKey && forms[formKey]) {
108
- delete forms[formKey];
109
- dispatch({
110
- type: 'set',
111
- payload: {
112
- forms: (0, _objectSpread2.default)({}, forms)
113
- }
114
- });
115
- }
116
- };
117
- }, [formKey, form]);
118
89
  var _getLayout = (0, _index.getLayout)({
119
90
  span: span,
120
91
  form: form
@@ -311,7 +282,10 @@ var ProFormProvider = exports.ProFormProvider = function ProFormProvider(props)
311
282
  };
312
283
  ProFormForward.Provider = ProFormProvider; // 包装Provider
313
284
  ProFormForward.useFieldProps = _useFieldProps.useFieldProps; // 获取每个字段的其他参数 -otherProps
314
- ProFormForward.useContextForms = _ProConfigProvider.useContextForms; // 获取 ProConfigProvider中的表单实例map
285
+ // 表单实例共享
286
+ ProFormForward.FormsProvider = _FormsProvider.default; // 表单实例共享Provider
287
+ ProFormForward.useForms = _FormsProvider.useForms; // 获取上下文中的共享的表单实例map
288
+ ProFormForward.useContextForms = _FormsProvider.useContextForms; // 获取上下文中的共享的表单实例map
315
289
  // 内置组合
316
290
  ProFormForward.ProCascader = _components.ProCascader;
317
291
  ProFormForward.ProCombination = _components.ProCombination;
@@ -495,6 +495,7 @@
495
495
 
496
496
  .original-value-tooltip{
497
497
  width: max-content;
498
+ max-width: 100%;
498
499
  .changed-tooltip {
499
500
  .original-value-container {
500
501
  .ant-space-item:nth-child(1) {
@@ -9,7 +9,13 @@ var _utils = require("../../utils");
9
9
  // 过滤对象中undefined字段
10
10
  // 防止{a: '1'} {a: '1', b: undefined | null}被认为不相等
11
11
  var filterObject = function filterObject(data) {
12
- if (!(0, _lodash.isObject)(data) || Array.isArray(data) || data === null) return data;
12
+ if (!(0, _lodash.isObject)(data) || data === null) return data;
13
+ // ['1', undefined] ['1', ''] 视为相等
14
+ if (Array.isArray(data)) {
15
+ return data.map(function (item) {
16
+ return (0, _utils.isEmpty)(item) ? null : item;
17
+ });
18
+ }
13
19
  var resData = {};
14
20
  Object.keys(data).forEach(function (key) {
15
21
  if (!(0, _utils.isEmpty)(data[key])) {
@@ -37,22 +43,11 @@ var diffOriginal = exports.diffOriginal = function diffOriginal(params) {
37
43
  }
38
44
  var _value = filterObject(value);
39
45
  var _originalValue = filterObject(originalValue);
40
- // 如果原始值为空 且当前有值的话 认为变更类型是新增
41
- if ((0, _utils.isEmpty)(_originalValue) && !(0, _utils.isEmpty)(_value)) {
42
- return 'add';
43
- }
44
- if (Array.isArray(_originalValue)) {
45
- var isSame = _originalValue.every(function (valueItem, index) {
46
- // 如果两个值有一个不是空值, 则进行深比较
47
- if (!(0, _utils.isEmpty)(value === null || value === void 0 ? void 0 : value[index]) || !(0, _utils.isEmpty)(valueItem)) {
48
- return (0, _lodash.isEqual)(value === null || value === void 0 ? void 0 : value[index], valueItem);
49
- }
50
- return true;
51
- });
52
- return isSame ? 'same' : 'changed';
53
- }
54
- if (!(0, _utils.isEmpty)(_originalValue) || !(0, _utils.isEmpty)(_value)) {
55
- return (0, _lodash.isEqual)(_value, _originalValue) ? 'same' : 'changed';
56
- }
57
- return 'same';
46
+ var isEmptyVal = (0, _utils.isEmpty)(_value);
47
+ var isEmptyOrg = (0, _utils.isEmpty)(_originalValue);
48
+ // 都为空视为相等
49
+ if (isEmptyOrg && isEmptyVal) return 'same';
50
+ // 如果原始值为空 且当前有值的话 视为新增
51
+ if (isEmptyOrg && !isEmptyVal) return 'add';
52
+ return (0, _lodash.isEqual)(_value, _originalValue) ? 'same' : 'changed';
58
53
  };