@zat-design/sisyphus-react 3.9.5 → 3.9.6

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 (47) hide show
  1. package/dist/index.esm.css +51 -6
  2. package/dist/less.esm.css +51 -6
  3. package/es/FormsProvider/index.d.ts +15 -0
  4. package/es/FormsProvider/index.js +32 -0
  5. package/es/ProConfigProvider/index.d.ts +0 -1
  6. package/es/ProConfigProvider/index.js +0 -5
  7. package/es/ProEditTable/utils/diffOriginal.js +11 -8
  8. package/es/ProForm/components/render/Render.js +4 -4
  9. package/es/ProForm/index.js +12 -38
  10. package/es/ProForm/style/index.less +1 -0
  11. package/es/ProForm/utils/diffOriginal.js +14 -19
  12. package/es/ProForm/utils/useForm.d.ts +4 -3
  13. package/es/ProForm/utils/useForm.js +12 -3
  14. package/es/ProLayout/components/ProHeader/PropTypes.d.ts +8 -0
  15. package/es/ProLayout/components/ProHeader/index.js +94 -28
  16. package/es/ProLayout/components/ProHeader/style/index.less +51 -6
  17. package/es/ProLayout/components/ProHeader/utils/index.d.ts +5 -0
  18. package/es/ProLayout/components/ProHeader/utils/index.js +14 -0
  19. package/es/ProLayout/style/index.less +1 -1
  20. package/es/ProSelect/index.js +1 -1
  21. package/es/index.d.ts +1 -0
  22. package/es/index.js +1 -0
  23. package/es/utils/index.d.ts +4 -1
  24. package/es/utils/index.js +4 -1
  25. package/lib/FormsProvider/index.d.ts +15 -0
  26. package/lib/FormsProvider/index.js +39 -0
  27. package/lib/ProConfigProvider/index.d.ts +0 -1
  28. package/lib/ProConfigProvider/index.js +0 -6
  29. package/lib/ProEditTable/utils/diffOriginal.js +11 -8
  30. package/lib/ProForm/components/render/Render.js +4 -4
  31. package/lib/ProForm/index.js +11 -37
  32. package/lib/ProForm/style/index.less +1 -0
  33. package/lib/ProForm/utils/diffOriginal.js +14 -19
  34. package/lib/ProForm/utils/useForm.d.ts +4 -3
  35. package/lib/ProForm/utils/useForm.js +12 -3
  36. package/lib/ProLayout/components/ProHeader/PropTypes.d.ts +8 -0
  37. package/lib/ProLayout/components/ProHeader/index.js +90 -24
  38. package/lib/ProLayout/components/ProHeader/style/index.less +51 -6
  39. package/lib/ProLayout/components/ProHeader/utils/index.d.ts +5 -0
  40. package/lib/ProLayout/components/ProHeader/utils/index.js +20 -0
  41. package/lib/ProLayout/style/index.less +1 -1
  42. package/lib/ProSelect/index.js +1 -1
  43. package/lib/index.d.ts +1 -0
  44. package/lib/index.js +8 -0
  45. package/lib/utils/index.d.ts +4 -1
  46. package/lib/utils/index.js +4 -1
  47. package/package.json +1 -1
@@ -854,7 +854,7 @@
854
854
  background: var(--zaui-disabled-bg);
855
855
  }
856
856
  .pro-header {
857
- padding: 16px 0 0 0 !important;
857
+ padding: 10px 0 0 0 !important;
858
858
  background-color: var(--zaui-base-bg, #ffffff);
859
859
  -webkit-box-shadow: 2px 3px 8px 0px rgba(0, 55, 93, 0.1);
860
860
  box-shadow: 2px 3px 8px 0px rgba(0, 55, 93, 0.1);
@@ -881,9 +881,44 @@
881
881
  .pro-header.pro-header-fixed.pro-header-no-describe .pro-header-top {
882
882
  padding-bottom: calc(var(--zaui-space-size-md, 16px) * var(--zaui-size, 1) - var(--zaui-space-size-xs, 4px) * var(--zaui-size, 1));
883
883
  }
884
+ .pro-header .pro-header-describe {
885
+ -webkit-transition: height 0.2s ease-in-out;
886
+ transition: height 0.2s ease-in-out;
887
+ }
884
888
  .pro-header .pro-header-describe a {
885
889
  color: var(--zaui-link, #006aff);
886
890
  }
891
+ .pro-header .pro-header-describe .pro-header-describe-items-calc {
892
+ position: relative;
893
+ }
894
+ .pro-header .pro-header-describe.pro-header-describe-hidden {
895
+ height: 0;
896
+ padding: 0;
897
+ overflow: hidden;
898
+ border: 0;
899
+ }
900
+ .pro-header .pro-header-describe .ant-space .pro-header-describe-label {
901
+ font-weight: normal;
902
+ }
903
+ .pro-header .pro-header-describe .ant-space .pro-header-describe-value {
904
+ font-weight: 600;
905
+ }
906
+ .pro-header .pro-header-describe .ant-space .pro-header-describe-value .ant-space-item {
907
+ font-weight: 600;
908
+ }
909
+ .pro-header .pro-header-describe .ant-space .pro-header-describe-value .pro-header-describe-items span:first-child {
910
+ margin-right: 2px;
911
+ }
912
+ .pro-header .pro-header-describe .ant-space .pro-header-describe-value .pro-header-describe-items .pro-header-describe-items-omit {
913
+ position: absolute;
914
+ right: 0;
915
+ background: #fff;
916
+ }
917
+ .pro-header .pro-header-describe .ant-space .pro-header-describe-value .pro-header-describe-items.pro-header-describe-items-more .pro-header-tag {
918
+ padding: 0;
919
+ background: #fff;
920
+ color: #333;
921
+ }
887
922
  .pro-header .pro-header-copy {
888
923
  display: -webkit-box;
889
924
  display: -webkit-flex;
@@ -1167,7 +1202,13 @@
1167
1202
  font-size: var(--zaui-font-size, 14px);
1168
1203
  }
1169
1204
  .pro-header .pro-header-describe li {
1170
- margin-left: var(--zaui-space-card, 32px);
1205
+ -webkit-box-flex: 0;
1206
+ -webkit-flex: 0 0 auto;
1207
+ -ms-flex: 0 0 auto;
1208
+ flex: 0 0 auto;
1209
+ white-space: nowrap;
1210
+ overflow: hidden;
1211
+ text-overflow: ellipsis;
1171
1212
  }
1172
1213
  .pro-header .pro-header-describe li.pro-header-only-tag {
1173
1214
  margin-left: var(--zaui-space-size-sm, 8px);
@@ -1175,9 +1216,6 @@
1175
1216
  .pro-header .pro-header-describe li.pro-header-only-tag span:first-child {
1176
1217
  margin-right: 0;
1177
1218
  }
1178
- .pro-header .pro-header-describe li:first-child {
1179
- margin-left: 0;
1180
- }
1181
1219
  .pro-header .pro-header-describe li span {
1182
1220
  color: #0a0a0a;
1183
1221
  font-weight: 400;
@@ -1192,6 +1230,12 @@
1192
1230
  .pro-header .pro-header-describe li span:last-child .pro-header-tag {
1193
1231
  margin-left: 4px;
1194
1232
  }
1233
+ .pro-header-describe-items-tip {
1234
+ max-width: 600px;
1235
+ }
1236
+ .pro-header-describe-items-tip .pro-header-describe-items-tip-value {
1237
+ margin-bottom: var(--zaui-space-size-sm, 8px);
1238
+ }
1195
1239
  @media (max-width: 1366px) {
1196
1240
  .pro-header-describe li span:last-child {
1197
1241
  max-width: 350px;
@@ -1253,7 +1297,7 @@
1253
1297
  border-radius: 0 0 var(--zaui-border-radius, 8px) var(--zaui-border-radius, 8px);
1254
1298
  }
1255
1299
  .pro-layout.pro-layout-light .pro-header.pro-header-no-describe {
1256
- padding: var(--zaui-space-size-md, 16px) !important;
1300
+ padding: 10px var(--zaui-space-size-md, 16px) !important;
1257
1301
  }
1258
1302
  .pro-layout.pro-layout-light .pro-header.pro-header-no-describe .pro-header-top {
1259
1303
  padding-bottom: 0;
@@ -3220,6 +3264,7 @@ span.ant-input-group-compact.pro-range-limit .forever-checkbox {
3220
3264
  width: -webkit-max-content;
3221
3265
  width: -moz-max-content;
3222
3266
  width: max-content;
3267
+ max-width: 100%;
3223
3268
  }
3224
3269
  .original-value-tooltip .changed-tooltip .original-value-container .ant-space-item:nth-child(1) {
3225
3270
  white-space: nowrap;
package/dist/less.esm.css CHANGED
@@ -854,7 +854,7 @@
854
854
  background: var(--zaui-disabled-bg);
855
855
  }
856
856
  .pro-header {
857
- padding: 16px 0 0 0 !important;
857
+ padding: 10px 0 0 0 !important;
858
858
  background-color: var(--zaui-base-bg, #ffffff);
859
859
  -webkit-box-shadow: 2px 3px 8px 0px rgba(0, 55, 93, 0.1);
860
860
  box-shadow: 2px 3px 8px 0px rgba(0, 55, 93, 0.1);
@@ -881,9 +881,44 @@
881
881
  .pro-header.pro-header-fixed.pro-header-no-describe .pro-header-top {
882
882
  padding-bottom: calc(var(--zaui-space-size-md, 16px) * var(--zaui-size, 1) - var(--zaui-space-size-xs, 4px) * var(--zaui-size, 1));
883
883
  }
884
+ .pro-header .pro-header-describe {
885
+ -webkit-transition: height 0.2s ease-in-out;
886
+ transition: height 0.2s ease-in-out;
887
+ }
884
888
  .pro-header .pro-header-describe a {
885
889
  color: var(--zaui-link, #006aff);
886
890
  }
891
+ .pro-header .pro-header-describe .pro-header-describe-items-calc {
892
+ position: relative;
893
+ }
894
+ .pro-header .pro-header-describe.pro-header-describe-hidden {
895
+ height: 0;
896
+ padding: 0;
897
+ overflow: hidden;
898
+ border: 0;
899
+ }
900
+ .pro-header .pro-header-describe .ant-space .pro-header-describe-label {
901
+ font-weight: normal;
902
+ }
903
+ .pro-header .pro-header-describe .ant-space .pro-header-describe-value {
904
+ font-weight: 600;
905
+ }
906
+ .pro-header .pro-header-describe .ant-space .pro-header-describe-value .ant-space-item {
907
+ font-weight: 600;
908
+ }
909
+ .pro-header .pro-header-describe .ant-space .pro-header-describe-value .pro-header-describe-items span:first-child {
910
+ margin-right: 2px;
911
+ }
912
+ .pro-header .pro-header-describe .ant-space .pro-header-describe-value .pro-header-describe-items .pro-header-describe-items-omit {
913
+ position: absolute;
914
+ right: 0;
915
+ background: #fff;
916
+ }
917
+ .pro-header .pro-header-describe .ant-space .pro-header-describe-value .pro-header-describe-items.pro-header-describe-items-more .pro-header-tag {
918
+ padding: 0;
919
+ background: #fff;
920
+ color: #333;
921
+ }
887
922
  .pro-header .pro-header-copy {
888
923
  display: -webkit-box;
889
924
  display: -webkit-flex;
@@ -1167,7 +1202,13 @@
1167
1202
  font-size: var(--zaui-font-size, 14px);
1168
1203
  }
1169
1204
  .pro-header .pro-header-describe li {
1170
- margin-left: var(--zaui-space-card, 32px);
1205
+ -webkit-box-flex: 0;
1206
+ -webkit-flex: 0 0 auto;
1207
+ -ms-flex: 0 0 auto;
1208
+ flex: 0 0 auto;
1209
+ white-space: nowrap;
1210
+ overflow: hidden;
1211
+ text-overflow: ellipsis;
1171
1212
  }
1172
1213
  .pro-header .pro-header-describe li.pro-header-only-tag {
1173
1214
  margin-left: var(--zaui-space-size-sm, 8px);
@@ -1175,9 +1216,6 @@
1175
1216
  .pro-header .pro-header-describe li.pro-header-only-tag span:first-child {
1176
1217
  margin-right: 0;
1177
1218
  }
1178
- .pro-header .pro-header-describe li:first-child {
1179
- margin-left: 0;
1180
- }
1181
1219
  .pro-header .pro-header-describe li span {
1182
1220
  color: #0a0a0a;
1183
1221
  font-weight: 400;
@@ -1192,6 +1230,12 @@
1192
1230
  .pro-header .pro-header-describe li span:last-child .pro-header-tag {
1193
1231
  margin-left: 4px;
1194
1232
  }
1233
+ .pro-header-describe-items-tip {
1234
+ max-width: 600px;
1235
+ }
1236
+ .pro-header-describe-items-tip .pro-header-describe-items-tip-value {
1237
+ margin-bottom: var(--zaui-space-size-sm, 8px);
1238
+ }
1195
1239
  @media (max-width: 1366px) {
1196
1240
  .pro-header-describe li span:last-child {
1197
1241
  max-width: 350px;
@@ -1253,7 +1297,7 @@
1253
1297
  border-radius: 0 0 var(--zaui-border-radius, 8px) var(--zaui-border-radius, 8px);
1254
1298
  }
1255
1299
  .pro-layout.pro-layout-light .pro-header.pro-header-no-describe {
1256
- padding: var(--zaui-space-size-md, 16px) !important;
1300
+ padding: 10px var(--zaui-space-size-md, 16px) !important;
1257
1301
  }
1258
1302
  .pro-layout.pro-layout-light .pro-header.pro-header-no-describe .pro-header-top {
1259
1303
  padding-bottom: 0;
@@ -3220,6 +3264,7 @@ span.ant-input-group-compact.pro-range-limit .forever-checkbox {
3220
3264
  width: -webkit-max-content;
3221
3265
  width: -moz-max-content;
3222
3266
  width: max-content;
3267
+ max-width: 100%;
3223
3268
  }
3224
3269
  .original-value-tooltip .changed-tooltip .original-value-container .ant-space-item:nth-child(1) {
3225
3270
  white-space: nowrap;
@@ -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,32 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React, { useContext, useEffect, useRef } from 'react';
3
+ export var FormsContext = /*#__PURE__*/React.createContext({});
4
+ /**
5
+ * @param formKey 表单实例key
6
+ * @param formIst form实例, 如果传了会把传入的实例存入全局
7
+ * @returns 没有入参: 返回表单实例但是不存入全局
8
+ * 有formKey: 取全局中的表单实例返回, 如果不存在则创建后返回
9
+ */
10
+ export var useForms = function useForms() {
11
+ var forms = useContext(FormsContext);
12
+ return forms;
13
+ };
14
+ /** 获取所有表单实例 */
15
+ export var useContextForms = function useContextForms() {
16
+ var forms = useContext(FormsContext);
17
+ return forms;
18
+ };
19
+ var FormsProvider = function FormsProvider(props) {
20
+ var formsRef = useRef({});
21
+ useEffect(function () {
22
+ // 销毁
23
+ return function () {
24
+ formsRef.current = {};
25
+ };
26
+ }, []);
27
+ return _jsx(FormsContext.Provider, {
28
+ value: formsRef.current,
29
+ children: props.children
30
+ });
31
+ };
32
+ export 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;
@@ -35,11 +35,6 @@ export function useProConfig(name) {
35
35
  var config = useContext(ProConfigContext);
36
36
  return name ? config.state[name] : config;
37
37
  }
38
- export function useContextForms() {
39
- var _config$state;
40
- var config = useContext(ProConfigContext);
41
- return (_config$state = config.state) === null || _config$state === void 0 ? void 0 : _config$state.forms;
42
- }
43
38
  var antdLangMap = {
44
39
  'zh-CN': zhCN,
45
40
  'en-US': enUS // en-US
@@ -46,14 +46,17 @@ export var diffOriginal = function diffOriginal(params) {
46
46
  return 'add';
47
47
  }
48
48
  if (Array.isArray(_originalValue)) {
49
- var isSame = _originalValue.every(function (valueItem, index) {
50
- // 如果两个值有一个不是空值, 则进行深比较
51
- if (!isEmpty(value === null || value === void 0 ? void 0 : value[index]) || !isEmpty(valueItem)) {
52
- return isEqual(value === null || value === void 0 ? void 0 : value[index], valueItem);
53
- }
54
- return true;
55
- });
56
- return isSame ? 'same' : 'changed';
49
+ if ((_originalValue === null || _originalValue === void 0 ? void 0 : _originalValue.length) === (_value === null || _value === void 0 ? void 0 : _value.length)) {
50
+ var isSame = _originalValue.every(function (valueItem, index) {
51
+ // 如果两个值有一个不是空值, 则进行深比较
52
+ if (!isEmpty(value === null || value === void 0 ? void 0 : value[index]) || !isEmpty(valueItem)) {
53
+ return isEqual(value === null || value === void 0 ? void 0 : value[index], valueItem);
54
+ }
55
+ return true;
56
+ });
57
+ return isSame ? 'same' : 'changed';
58
+ }
59
+ return 'changed';
57
60
  }
58
61
  if (!isEmpty(_originalValue) || !isEmpty(_value)) {
59
62
  return 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 = _jsx(_Form.List, _objectSpread(_objectSpread({
412
+ colProps = _objectSpread(_objectSpread({}, colProps), {}, {
413
+ span: lessMode ? colProps.span : 24 // 默认占一行
414
+ });
415
+ return _jsx(_Form.List, _objectSpread(_objectSpread({
413
416
  name: _otherFormItemProps.name
414
417
  }, 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 = _objectSpread(_objectSpread({}, colProps), {}, {
425
- span: lessMode ? colProps.span : 24 // 默认占一行
426
- });
427
427
  }
428
428
  // 默认占据一行
429
429
  if (['ProCollapse', 'Container'].includes(type)) {
@@ -2,13 +2,13 @@ import "antd/es/row/style";
2
2
  import _Row from "antd/es/row";
3
3
  import "antd/es/form/style";
4
4
  import _Form from "antd/es/form";
5
+ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
5
6
  import "antd/es/col/style";
6
7
  import _Col from "antd/es/col";
7
8
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
8
9
  import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
9
10
  import "antd/es/space/style";
10
11
  import _Space from "antd/es/space";
11
- import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
12
12
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
13
13
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
14
14
  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"];
@@ -19,14 +19,15 @@ import React, { forwardRef, useImperativeHandle, useMemo } from 'react';
19
19
  import { isObject, merge, omit } from 'lodash';
20
20
  import { FormFooter, InputRange, ProAddress, ProCascader, ProCertNo, ProCertValidity, ProCombination, ProModalSelect, ProNumberRange, ProRangeBox, ProTimeLimit, transferAddressInfoToRegion, ProUpload, ProTreeModal, ProTree, EnumSelect } from './components';
21
21
  import RenderFields from './components/render/RenderFields';
22
- import { useProConfig, useContextForms } from '../ProConfigProvider';
22
+ import { useProConfig } from '../ProConfigProvider';
23
23
  import { getLayout, splitNameStr, useControlled, initialValuesToNames, filterInternalFields } from './utils/index';
24
24
  import { useForm } from './utils/useForm';
25
25
  import { useFieldProps } from './utils/useFieldProps';
26
26
  import locale from '../locale';
27
27
  import useWatch from './utils/useWatch';
28
+ import FormsProvider, { useContextForms, useForms } from '../FormsProvider';
28
29
  var ProForm = function ProForm(props, ref) {
29
- var _forms$formKey, _localStorage, _ref;
30
+ var _localStorage, _ref;
30
31
  var _props$mode = props.mode,
31
32
  mode = _props$mode === void 0 ? 'search' : _props$mode,
32
33
  span = props.span,
@@ -69,14 +70,11 @@ var ProForm = function ProForm(props, ref) {
69
70
  _props$optimize = props.optimize,
70
71
  optimize = _props$optimize === void 0 ? false : _props$optimize,
71
72
  otherProps = _objectWithoutProperties(props, _excluded);
72
- var _useProConfig = useProConfig(),
73
- state = _useProConfig.state,
74
- dispatch = _useProConfig.dispatch;
75
- var config = state.ProForm,
76
- forms = state.forms;
77
- var _useForm = useForm((_forms$formKey = forms[formKey]) !== null && _forms$formKey !== void 0 ? _forms$formKey : originForm, {
73
+ var config = useProConfig('ProForm');
74
+ var _useForm = useForm(originForm, {
78
75
  scrollToError: scrollToError,
79
- optimize: optimize
76
+ optimize: optimize,
77
+ formKey: formKey
80
78
  }),
81
79
  _useForm2 = _slicedToArray(_useForm, 1),
82
80
  form = _useForm2[0];
@@ -87,33 +85,6 @@ var ProForm = function ProForm(props, ref) {
87
85
  _useControlled2 = _slicedToArray(_useControlled, 2),
88
86
  openState = _useControlled2[0],
89
87
  setOpenState = _useControlled2[1];
90
- // 把表单实例存入表单组
91
- useMemo(function () {
92
- if (formKey && forms[formKey] !== form) {
93
- forms[formKey] = form;
94
- // fix: Cannot update a component (`ProConfigProvider`) while rendering a different component (`ForwardRef(ProForm)`).
95
- setTimeout(function () {
96
- dispatch({
97
- type: 'set',
98
- payload: {
99
- forms: _objectSpread({}, forms)
100
- }
101
- });
102
- }, 300);
103
- }
104
- // 销毁
105
- return function () {
106
- if (formKey && forms[formKey]) {
107
- delete forms[formKey];
108
- dispatch({
109
- type: 'set',
110
- payload: {
111
- forms: _objectSpread({}, forms)
112
- }
113
- });
114
- }
115
- };
116
- }, [formKey, form]);
117
88
  var _getLayout = getLayout({
118
89
  span: span,
119
90
  form: form
@@ -310,7 +281,10 @@ export var ProFormProvider = function ProFormProvider(props) {
310
281
  };
311
282
  ProFormForward.Provider = ProFormProvider; // 包装Provider
312
283
  ProFormForward.useFieldProps = useFieldProps; // 获取每个字段的其他参数 -otherProps
313
- ProFormForward.useContextForms = useContextForms; // 获取 ProConfigProvider中的表单实例map
284
+ // 表单实例共享
285
+ ProFormForward.FormsProvider = FormsProvider; // 表单实例共享Provider
286
+ ProFormForward.useForms = useForms; // 获取上下文中的共享的表单实例map
287
+ ProFormForward.useContextForms = useContextForms; // 获取上下文中的共享的表单实例map
314
288
  // 内置组合
315
289
  ProFormForward.ProCascader = ProCascader;
316
290
  ProFormForward.ProCombination = 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) {
@@ -3,7 +3,13 @@ import { isEmpty } from '../../utils';
3
3
  // 过滤对象中undefined字段
4
4
  // 防止{a: '1'} {a: '1', b: undefined | null}被认为不相等
5
5
  var filterObject = function filterObject(data) {
6
- if (!isObject(data) || Array.isArray(data) || data === null) return data;
6
+ if (!isObject(data) || data === null) return data;
7
+ // ['1', undefined] ['1', ''] 视为相等
8
+ if (Array.isArray(data)) {
9
+ return data.map(function (item) {
10
+ return isEmpty(item) ? null : item;
11
+ });
12
+ }
7
13
  var resData = {};
8
14
  Object.keys(data).forEach(function (key) {
9
15
  if (!isEmpty(data[key])) {
@@ -31,22 +37,11 @@ export var diffOriginal = function diffOriginal(params) {
31
37
  }
32
38
  var _value = filterObject(value);
33
39
  var _originalValue = filterObject(originalValue);
34
- // 如果原始值为空 且当前有值的话 认为变更类型是新增
35
- if (isEmpty(_originalValue) && !isEmpty(_value)) {
36
- return 'add';
37
- }
38
- if (Array.isArray(_originalValue)) {
39
- var isSame = _originalValue.every(function (valueItem, index) {
40
- // 如果两个值有一个不是空值, 则进行深比较
41
- if (!isEmpty(value === null || value === void 0 ? void 0 : value[index]) || !isEmpty(valueItem)) {
42
- return isEqual(value === null || value === void 0 ? void 0 : value[index], valueItem);
43
- }
44
- return true;
45
- });
46
- return isSame ? 'same' : 'changed';
47
- }
48
- if (!isEmpty(_originalValue) || !isEmpty(_value)) {
49
- return isEqual(_value, _originalValue) ? 'same' : 'changed';
50
- }
51
- return 'same';
40
+ var isEmptyVal = isEmpty(_value);
41
+ var isEmptyOrg = isEmpty(_originalValue);
42
+ // 都为空视为相等
43
+ if (isEmptyOrg && isEmptyVal) return 'same';
44
+ // 如果原始值为空 且当前有值的话 视为新增
45
+ if (isEmptyOrg && !isEmptyVal) return 'add';
46
+ return isEqual(_value, _originalValue) ? 'same' : 'changed';
52
47
  };
@@ -1,15 +1,16 @@
1
1
  import { FormInstance } from 'antd';
2
2
  import { NamePath } from 'antd/es/form/interface';
3
3
  import { ValuedNotifyInfo } from 'rc-field-form/es/interface';
4
- type ModifiedFormInstance<T> = FormInstance<T> & {
4
+ export type ModifiedFormInstance<T> = FormInstance<T> & {
5
5
  isModified?: boolean;
6
6
  /** 默认清空设置值的报错状态 */
7
7
  setFieldValue: (name: NamePath, value: any, info?: ValuedNotifyInfo) => void;
8
+ formKey?: string;
8
9
  _init?: boolean;
9
10
  };
10
- interface FormInstanceOption {
11
+ export interface FormInstanceOption {
11
12
  scrollToError?: boolean;
12
13
  optimize?: boolean;
14
+ formKey?: string;
13
15
  }
14
16
  export declare const useForm: <T>(originForm?: FormInstanceOption | ModifiedFormInstance<T>, options?: FormInstanceOption) => [ModifiedFormInstance<T>];
15
- export {};
@@ -5,22 +5,31 @@ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
5
5
  import "antd/es/form/style";
6
6
  import _Form from "antd/es/form";
7
7
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
8
+ import { useContext } from 'react';
8
9
  import { filterInternalFields } from './index';
9
10
  import { handleScrollToError } from '../../ProEditTable/utils/tools';
11
+ import { FormsContext } from '../../FormsProvider';
10
12
  export var useForm = function useForm(originForm, options) {
11
13
  // 如果没有form实例可以直接把options放在第一个参数位置
12
14
  // @ts-ignore
13
15
  var _originForm = (originForm === null || originForm === void 0 ? void 0 : originForm._init) ? originForm : undefined;
14
16
  var _options =
15
17
  // @ts-ignore
16
- options || originForm && !(originForm === null || originForm === void 0 ? void 0 : originForm._init) ? originForm : undefined;
18
+ options || (originForm && !(originForm === null || originForm === void 0 ? void 0 : originForm._init) ? originForm : undefined);
17
19
  var _ref = _options || {},
18
20
  _ref$scrollToError = _ref.scrollToError,
19
21
  scrollToError = _ref$scrollToError === void 0 ? true : _ref$scrollToError,
20
- optimize = _ref.optimize;
21
- var _Form$useForm = _Form.useForm(_originForm),
22
+ optimize = _ref.optimize,
23
+ formKey = _ref.formKey;
24
+ // formKey全局共享逻辑
25
+ var forms = useContext(FormsContext);
26
+ var _Form$useForm = _Form.useForm(forms[formKey] || _originForm),
22
27
  _Form$useForm2 = _slicedToArray(_Form$useForm, 1),
23
28
  form = _Form$useForm2[0];
29
+ if (formKey && forms[formKey] !== form) {
30
+ forms[formKey] = form;
31
+ form.formKey = formKey;
32
+ }
24
33
  var getFieldsValue = form.getFieldsValue,
25
34
  validateFields = form.validateFields,
26
35
  isModified = form.isModified,
@@ -26,6 +26,14 @@ export interface DescribeColumnsProps {
26
26
  show?: boolean;
27
27
  link?: string;
28
28
  tag?: string | React.ReactNode | (string | React.ReactNode)[];
29
+ width?: string | number;
30
+ /** 多值配置 */
31
+ items?: {
32
+ copyable?: boolean;
33
+ value: string | React.ReactNode;
34
+ link?: string;
35
+ tag?: string | React.ReactNode | (string | React.ReactNode)[];
36
+ }[];
29
37
  }
30
38
  export interface ProHeaderProps {
31
39
  title?: string | React.ReactNode;