@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.
- package/dist/index.esm.css +51 -6
- package/dist/less.esm.css +51 -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 +51 -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/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 +51 -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/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,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
|
-
|
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:
|
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
|
-
|
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
|
-
|
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;
|