@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.
- package/.vscode/extensions.json +5 -0
- package/dist/index.esm.css +52 -6
- package/dist/less.esm.css +52 -6
- package/es/FormsProvider/index.d.ts +15 -0
- package/es/FormsProvider/index.js +32 -0
- package/es/ProConfigProvider/index.d.ts +0 -1
- package/es/ProConfigProvider/index.js +0 -5
- package/es/ProEditTable/utils/diffOriginal.js +11 -8
- package/es/ProForm/components/render/Render.js +4 -4
- package/es/ProForm/index.js +12 -38
- package/es/ProForm/style/index.less +1 -0
- package/es/ProForm/utils/diffOriginal.js +14 -19
- package/es/ProForm/utils/useForm.d.ts +4 -3
- package/es/ProForm/utils/useForm.js +12 -3
- package/es/ProLayout/components/ProHeader/PropTypes.d.ts +8 -0
- package/es/ProLayout/components/ProHeader/index.js +94 -28
- package/es/ProLayout/components/ProHeader/style/index.less +52 -6
- package/es/ProLayout/components/ProHeader/utils/index.d.ts +5 -0
- package/es/ProLayout/components/ProHeader/utils/index.js +14 -0
- package/es/ProLayout/style/index.less +1 -1
- package/es/ProSelect/index.js +1 -1
- package/es/ProTreeModal/components/Trigger.js +4 -0
- package/es/index.d.ts +1 -0
- package/es/index.js +1 -0
- package/es/utils/index.d.ts +4 -1
- package/es/utils/index.js +4 -1
- package/lib/FormsProvider/index.d.ts +15 -0
- package/lib/FormsProvider/index.js +39 -0
- package/lib/ProConfigProvider/index.d.ts +0 -1
- package/lib/ProConfigProvider/index.js +0 -6
- package/lib/ProEditTable/utils/diffOriginal.js +11 -8
- package/lib/ProForm/components/render/Render.js +4 -4
- package/lib/ProForm/index.js +11 -37
- package/lib/ProForm/style/index.less +1 -0
- package/lib/ProForm/utils/diffOriginal.js +14 -19
- package/lib/ProForm/utils/useForm.d.ts +4 -3
- package/lib/ProForm/utils/useForm.js +12 -3
- package/lib/ProLayout/components/ProHeader/PropTypes.d.ts +8 -0
- package/lib/ProLayout/components/ProHeader/index.js +90 -24
- package/lib/ProLayout/components/ProHeader/style/index.less +52 -6
- package/lib/ProLayout/components/ProHeader/utils/index.d.ts +5 -0
- package/lib/ProLayout/components/ProHeader/utils/index.js +20 -0
- package/lib/ProLayout/style/index.less +1 -1
- package/lib/ProSelect/index.js +1 -1
- package/lib/ProTreeModal/components/Trigger.js +4 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.js +8 -0
- package/lib/utils/index.d.ts +4 -1
- package/lib/utils/index.js +4 -1
- package/package.json +1 -1
package/dist/index.esm.css
CHANGED
@@ -854,7 +854,7 @@
|
|
854
854
|
background: var(--zaui-disabled-bg);
|
855
855
|
}
|
856
856
|
.pro-header {
|
857
|
-
padding:
|
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,45 @@
|
|
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
|
+
letter-spacing: 2px;
|
917
|
+
}
|
918
|
+
.pro-header .pro-header-describe .ant-space .pro-header-describe-value .pro-header-describe-items.pro-header-describe-items-more .pro-header-tag {
|
919
|
+
padding: 0;
|
920
|
+
background: transparent;
|
921
|
+
color: #333;
|
922
|
+
}
|
887
923
|
.pro-header .pro-header-copy {
|
888
924
|
display: -webkit-box;
|
889
925
|
display: -webkit-flex;
|
@@ -1167,7 +1203,13 @@
|
|
1167
1203
|
font-size: var(--zaui-font-size, 14px);
|
1168
1204
|
}
|
1169
1205
|
.pro-header .pro-header-describe li {
|
1170
|
-
|
1206
|
+
-webkit-box-flex: 0;
|
1207
|
+
-webkit-flex: 0 0 auto;
|
1208
|
+
-ms-flex: 0 0 auto;
|
1209
|
+
flex: 0 0 auto;
|
1210
|
+
white-space: nowrap;
|
1211
|
+
overflow: hidden;
|
1212
|
+
text-overflow: ellipsis;
|
1171
1213
|
}
|
1172
1214
|
.pro-header .pro-header-describe li.pro-header-only-tag {
|
1173
1215
|
margin-left: var(--zaui-space-size-sm, 8px);
|
@@ -1175,9 +1217,6 @@
|
|
1175
1217
|
.pro-header .pro-header-describe li.pro-header-only-tag span:first-child {
|
1176
1218
|
margin-right: 0;
|
1177
1219
|
}
|
1178
|
-
.pro-header .pro-header-describe li:first-child {
|
1179
|
-
margin-left: 0;
|
1180
|
-
}
|
1181
1220
|
.pro-header .pro-header-describe li span {
|
1182
1221
|
color: #0a0a0a;
|
1183
1222
|
font-weight: 400;
|
@@ -1192,6 +1231,12 @@
|
|
1192
1231
|
.pro-header .pro-header-describe li span:last-child .pro-header-tag {
|
1193
1232
|
margin-left: 4px;
|
1194
1233
|
}
|
1234
|
+
.pro-header-describe-items-tip {
|
1235
|
+
max-width: 600px;
|
1236
|
+
}
|
1237
|
+
.pro-header-describe-items-tip .pro-header-describe-items-tip-value {
|
1238
|
+
margin-bottom: var(--zaui-space-size-sm, 8px);
|
1239
|
+
}
|
1195
1240
|
@media (max-width: 1366px) {
|
1196
1241
|
.pro-header-describe li span:last-child {
|
1197
1242
|
max-width: 350px;
|
@@ -1253,7 +1298,7 @@
|
|
1253
1298
|
border-radius: 0 0 var(--zaui-border-radius, 8px) var(--zaui-border-radius, 8px);
|
1254
1299
|
}
|
1255
1300
|
.pro-layout.pro-layout-light .pro-header.pro-header-no-describe {
|
1256
|
-
padding: var(--zaui-space-size-md, 16px) !important;
|
1301
|
+
padding: 10px var(--zaui-space-size-md, 16px) !important;
|
1257
1302
|
}
|
1258
1303
|
.pro-layout.pro-layout-light .pro-header.pro-header-no-describe .pro-header-top {
|
1259
1304
|
padding-bottom: 0;
|
@@ -3220,6 +3265,7 @@ span.ant-input-group-compact.pro-range-limit .forever-checkbox {
|
|
3220
3265
|
width: -webkit-max-content;
|
3221
3266
|
width: -moz-max-content;
|
3222
3267
|
width: max-content;
|
3268
|
+
max-width: 100%;
|
3223
3269
|
}
|
3224
3270
|
.original-value-tooltip .changed-tooltip .original-value-container .ant-space-item:nth-child(1) {
|
3225
3271
|
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:
|
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,45 @@
|
|
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
|
+
letter-spacing: 2px;
|
917
|
+
}
|
918
|
+
.pro-header .pro-header-describe .ant-space .pro-header-describe-value .pro-header-describe-items.pro-header-describe-items-more .pro-header-tag {
|
919
|
+
padding: 0;
|
920
|
+
background: transparent;
|
921
|
+
color: #333;
|
922
|
+
}
|
887
923
|
.pro-header .pro-header-copy {
|
888
924
|
display: -webkit-box;
|
889
925
|
display: -webkit-flex;
|
@@ -1167,7 +1203,13 @@
|
|
1167
1203
|
font-size: var(--zaui-font-size, 14px);
|
1168
1204
|
}
|
1169
1205
|
.pro-header .pro-header-describe li {
|
1170
|
-
|
1206
|
+
-webkit-box-flex: 0;
|
1207
|
+
-webkit-flex: 0 0 auto;
|
1208
|
+
-ms-flex: 0 0 auto;
|
1209
|
+
flex: 0 0 auto;
|
1210
|
+
white-space: nowrap;
|
1211
|
+
overflow: hidden;
|
1212
|
+
text-overflow: ellipsis;
|
1171
1213
|
}
|
1172
1214
|
.pro-header .pro-header-describe li.pro-header-only-tag {
|
1173
1215
|
margin-left: var(--zaui-space-size-sm, 8px);
|
@@ -1175,9 +1217,6 @@
|
|
1175
1217
|
.pro-header .pro-header-describe li.pro-header-only-tag span:first-child {
|
1176
1218
|
margin-right: 0;
|
1177
1219
|
}
|
1178
|
-
.pro-header .pro-header-describe li:first-child {
|
1179
|
-
margin-left: 0;
|
1180
|
-
}
|
1181
1220
|
.pro-header .pro-header-describe li span {
|
1182
1221
|
color: #0a0a0a;
|
1183
1222
|
font-weight: 400;
|
@@ -1192,6 +1231,12 @@
|
|
1192
1231
|
.pro-header .pro-header-describe li span:last-child .pro-header-tag {
|
1193
1232
|
margin-left: 4px;
|
1194
1233
|
}
|
1234
|
+
.pro-header-describe-items-tip {
|
1235
|
+
max-width: 600px;
|
1236
|
+
}
|
1237
|
+
.pro-header-describe-items-tip .pro-header-describe-items-tip-value {
|
1238
|
+
margin-bottom: var(--zaui-space-size-sm, 8px);
|
1239
|
+
}
|
1195
1240
|
@media (max-width: 1366px) {
|
1196
1241
|
.pro-header-describe li span:last-child {
|
1197
1242
|
max-width: 350px;
|
@@ -1253,7 +1298,7 @@
|
|
1253
1298
|
border-radius: 0 0 var(--zaui-border-radius, 8px) var(--zaui-border-radius, 8px);
|
1254
1299
|
}
|
1255
1300
|
.pro-layout.pro-layout-light .pro-header.pro-header-no-describe {
|
1256
|
-
padding: var(--zaui-space-size-md, 16px) !important;
|
1301
|
+
padding: 10px var(--zaui-space-size-md, 16px) !important;
|
1257
1302
|
}
|
1258
1303
|
.pro-layout.pro-layout-light .pro-header.pro-header-no-describe .pro-header-top {
|
1259
1304
|
padding-bottom: 0;
|
@@ -3220,6 +3265,7 @@ span.ant-input-group-compact.pro-range-limit .forever-checkbox {
|
|
3220
3265
|
width: -webkit-max-content;
|
3221
3266
|
width: -moz-max-content;
|
3222
3267
|
width: max-content;
|
3268
|
+
max-width: 100%;
|
3223
3269
|
}
|
3224
3270
|
.original-value-tooltip .changed-tooltip .original-value-container .ant-space-item:nth-child(1) {
|
3225
3271
|
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
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
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
|
-
|
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)) {
|
package/es/ProForm/index.js
CHANGED
@@ -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
|
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
|
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
|
73
|
-
|
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
|
-
|
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;
|
@@ -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) ||
|
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
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
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
|
-
|
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;
|