@zat-design/sisyphus-react 4.5.10-beta.1 → 4.5.10-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/es/FormsProvider/index.js +14 -21
- package/es/ProAction/components/CheckModalContent/index.js +12 -26
- package/es/ProAction/index.js +79 -83
- package/es/ProAction/propsType.js +0 -1
- package/es/ProConfigProvider/index.js +63 -110
- package/es/ProConfigProvider/propsType.js +0 -1
- package/es/ProDownload/index.js +55 -65
- package/es/ProDownload/propsType.js +0 -1
- package/es/ProDownload/utils.js +61 -95
- package/es/ProDrawerForm/components/ProDrawer/index.js +83 -113
- package/es/ProDrawerForm/components/ProModal/index.js +77 -108
- package/es/ProDrawerForm/components/index.js +6 -2
- package/es/ProDrawerForm/hooks/useConfirmClose.js +20 -39
- package/es/ProDrawerForm/index.js +29 -38
- package/es/ProDrawerForm/propsType.js +0 -1
- package/es/ProDrawerForm/utils/index.js +18 -36
- package/es/ProEditLabel/components/RenderProForm.js +45 -49
- package/es/ProEditLabel/index.js +126 -163
- package/es/ProEditLabel/propsType.js +0 -1
- package/es/ProEditLabel/utils/index.js +5 -8
- package/es/ProEditTable/components/ActionButton/index.js +111 -119
- package/es/ProEditTable/components/RcTable/BaseTable.js +38 -51
- package/es/ProEditTable/components/RcTable/DraggableTable.js +97 -129
- package/es/ProEditTable/components/RcTable/index.js +6 -4
- package/es/ProEditTable/components/RenderField/ListChangedWrapper.js +77 -95
- package/es/ProEditTable/components/RenderField/index.js +490 -587
- package/es/ProEditTable/components/RenderField/propsType.js +0 -1
- package/es/ProEditTable/components/RenderField/tools.js +115 -112
- package/es/ProEditTable/components/RenderToolbar/index.js +47 -73
- package/es/ProEditTable/components/Summary/index.js +38 -64
- package/es/ProEditTable/components/Validator/index.js +46 -46
- package/es/ProEditTable/components/index.js +12 -5
- package/es/ProEditTable/index.js +456 -378
- package/es/ProEditTable/propsType.js +0 -1
- package/es/ProEditTable/utils/config.js +60 -122
- package/es/ProEditTable/utils/diffOriginal.js +45 -82
- package/es/ProEditTable/utils/getDefaultProps.js +19 -24
- package/es/ProEditTable/utils/index.js +150 -236
- package/es/ProEditTable/utils/tools.js +149 -286
- package/es/ProEditTable/utils/transform.js +25 -30
- package/es/ProEditTable/utils/useEditTableError.js +30 -43
- package/es/ProEditTable/utils/useShouldUpdateForTable.js +42 -72
- package/es/ProEditTable/utils/validateAll.js +87 -154
- package/es/ProEnum/components/Group.js +38 -30
- package/es/ProEnum/components/Tag.js +22 -26
- package/es/ProEnum/hooks/useEnum.js +48 -116
- package/es/ProEnum/hooks/useEnumRequest.js +128 -179
- package/es/ProEnum/hooks/useFrequentEnumRequest.js +40 -48
- package/es/ProEnum/index.js +162 -172
- package/es/ProEnum/propsType.js +0 -1
- package/es/ProEnum/utils/eventCenter.js +10 -12
- package/es/ProEnum/utils/frequentEnum.js +35 -92
- package/es/ProEnum/utils/getEnum.js +32 -90
- package/es/ProEnum/utils/getEnumLabel.js +44 -49
- package/es/ProEnum/utils/index.js +93 -207
- package/es/ProForm/components/Container.js +13 -28
- package/es/ProForm/components/FormFooter/index.js +36 -44
- package/es/ProForm/components/FormFooter/propsType.js +0 -1
- package/es/ProForm/components/base/Checkbox/index.js +32 -59
- package/es/ProForm/components/base/DatePicker/index.js +49 -71
- package/es/ProForm/components/base/Input/index.js +63 -97
- package/es/ProForm/components/base/Input/propsType.js +0 -1
- package/es/ProForm/components/base/InputNumber/index.js +118 -172
- package/es/ProForm/components/base/Radio/index.js +39 -52
- package/es/ProForm/components/base/RangePicker/index.js +109 -127
- package/es/ProForm/components/base/RangePicker/useDateRange.js +20 -17
- package/es/ProForm/components/base/Select/index.js +63 -89
- package/es/ProForm/components/base/Switch/index.js +27 -35
- package/es/ProForm/components/base/SwitchCheckbox/index.js +36 -54
- package/es/ProForm/components/base/TextArea/index.js +30 -41
- package/es/ProForm/components/base/TimePicker/index.js +27 -37
- package/es/ProForm/components/combination/Container/index.js +37 -47
- package/es/ProForm/components/combination/Container/propsType.js +0 -1
- package/es/ProForm/components/combination/FormList/components/ActionButton.js +165 -237
- package/es/ProForm/components/combination/FormList/components/BlockFields.js +98 -103
- package/es/ProForm/components/combination/FormList/components/Empty.js +27 -54
- package/es/ProForm/components/combination/FormList/components/LineFields.js +57 -54
- package/es/ProForm/components/combination/FormList/components/ToolbarButton.js +61 -109
- package/es/ProForm/components/combination/FormList/index.js +151 -161
- package/es/ProForm/components/combination/FormList/propsType.js +0 -1
- package/es/ProForm/components/combination/FormList/utils.js +22 -38
- package/es/ProForm/components/combination/Group/component/AddonWrapper/index.js +12 -28
- package/es/ProForm/components/combination/Group/component/ComRender.js +50 -111
- package/es/ProForm/components/combination/Group/component/FlexibleGroup.js +105 -206
- package/es/ProForm/components/combination/Group/hooks/index.js +68 -128
- package/es/ProForm/components/combination/Group/index.js +87 -126
- package/es/ProForm/components/combination/Group/propsType.js +0 -1
- package/es/ProForm/components/combination/Group/utils/index.js +124 -239
- package/es/ProForm/components/combination/ProCascader/index.js +156 -199
- package/es/ProForm/components/combination/ProCascader/propsType.js +0 -1
- package/es/ProForm/components/combination/ProCascader/utils/index.js +12 -21
- package/es/ProForm/components/combination/ProModalSelect/hooks/useRequestList.js +63 -75
- package/es/ProForm/components/combination/ProModalSelect/index.js +290 -348
- package/es/ProForm/components/combination/ProModalSelect/propsType.js +0 -1
- package/es/ProForm/components/combination/ProModalSelect/utils/index.js +32 -39
- package/es/ProForm/components/combination/ProNumberRange/index.js +100 -156
- package/es/ProForm/components/combination/ProNumberRange/propsType.js +0 -1
- package/es/ProForm/components/combination/ProRangeLimit/index.js +104 -115
- package/es/ProForm/components/combination/ProRangeLimit/propsType.js +0 -1
- package/es/ProForm/components/combination/ProTimeLimit/hooks/useControlled.js +16 -16
- package/es/ProForm/components/combination/ProTimeLimit/index.js +75 -109
- package/es/ProForm/components/index.js +56 -34
- package/es/ProForm/components/render/ChangedWrapper.js +85 -94
- package/es/ProForm/components/render/ConfirmWrapper.js +27 -39
- package/es/ProForm/components/render/CustomComponentViewWrapper.js +65 -82
- package/es/ProForm/components/render/Render.js +223 -329
- package/es/ProForm/components/render/RenderFields.js +76 -113
- package/es/ProForm/components/render/propsType.js +0 -1
- package/es/ProForm/hooks/useControlled.js +8 -10
- package/es/ProForm/hooks/useDeepCompareMemo.js +11 -11
- package/es/ProForm/hooks/useFieldProps.js +8 -4
- package/es/ProForm/hooks/useForm.js +50 -110
- package/es/ProForm/hooks/useRules.js +17 -33
- package/es/ProForm/hooks/useShouldUpdate.js +77 -152
- package/es/ProForm/hooks/useWatch.js +58 -129
- package/es/ProForm/index.js +157 -194
- package/es/ProForm/propsType.js +15 -7
- package/es/ProForm/utils/buildFormItemProps.js +51 -58
- package/es/ProForm/utils/diffOriginal.js +43 -73
- package/es/ProForm/utils/getDefaultProps.js +18 -24
- package/es/ProForm/utils/index.js +159 -234
- package/es/ProForm/utils/processDependencies.js +21 -60
- package/es/ProForm/utils/reactiveValues.js +20 -34
- package/es/ProForm/utils/rulesCreator.js +42 -40
- package/es/ProForm/utils/transformNames.js +10 -13
- package/es/ProForm/utils/transformValue.js +16 -29
- package/es/ProForm/utils/valueType.js +96 -178
- package/es/ProIcon/config/index.js +340 -274
- package/es/ProIcon/index.js +135 -209
- package/es/ProIcon/propsTypes.js +0 -1
- package/es/ProIcon/utils/index.js +24 -39
- package/es/ProLayout/components/Layout/Header/index.js +108 -141
- package/es/ProLayout/components/Layout/Menu/FoldMenu/index.js +134 -190
- package/es/ProLayout/components/Layout/Menu/OpenMenu/index.js +111 -137
- package/es/ProLayout/components/Layout/Menu/OpenMenu/propsType.js +0 -1
- package/es/ProLayout/components/Layout/Menu/SideMenu/index.js +23 -31
- package/es/ProLayout/components/Layout/Menu/index.js +92 -89
- package/es/ProLayout/components/Layout/Notice/index.js +13 -27
- package/es/ProLayout/components/Layout/index.js +8 -3
- package/es/ProLayout/components/ProCollapse/PropTypes.js +0 -1
- package/es/ProLayout/components/ProCollapse/index.js +89 -111
- package/es/ProLayout/components/ProFooter/PropTypes.js +0 -1
- package/es/ProLayout/components/ProFooter/index.js +27 -25
- package/es/ProLayout/components/ProHeader/PropTypes.js +0 -1
- package/es/ProLayout/components/ProHeader/components/Copy/index.js +23 -21
- package/es/ProLayout/components/ProHeader/components/Describe/index.js +67 -86
- package/es/ProLayout/components/ProHeader/components/ProBackBtn/index.js +18 -21
- package/es/ProLayout/components/ProHeader/components/ProBackBtn/propsType.js +0 -1
- package/es/ProLayout/components/ProHeader/components/index.js +6 -2
- package/es/ProLayout/components/ProHeader/index.js +216 -356
- package/es/ProLayout/components/ProHeader/utils/index.js +19 -26
- package/es/ProLayout/components/TabsManager/components/TabContextMenu.js +92 -85
- package/es/ProLayout/components/TabsManager/components/TabItem.js +53 -64
- package/es/ProLayout/components/TabsManager/components/TabsContext.js +5 -5
- package/es/ProLayout/components/TabsManager/components/TabsHeader.js +42 -52
- package/es/ProLayout/components/TabsManager/hooks/useActiveTab.js +8 -9
- package/es/ProLayout/components/TabsManager/hooks/useIframeRoute.js +19 -32
- package/es/ProLayout/components/TabsManager/hooks/useProLayoutTabs.js +6 -20
- package/es/ProLayout/components/TabsManager/hooks/useTabsCache.js +25 -42
- package/es/ProLayout/components/TabsManager/hooks/useTabsState.js +290 -408
- package/es/ProLayout/components/TabsManager/hooks/useTabsUrlSync.js +132 -95
- package/es/ProLayout/components/TabsManager/index.js +406 -390
- package/es/ProLayout/components/TabsManager/propTypes.js +7 -15
- package/es/ProLayout/components/TabsManager/utils/historyObserver.js +26 -23
- package/es/ProLayout/components/TabsManager/utils/index.js +127 -184
- package/es/ProLayout/components/index.js +8 -3
- package/es/ProLayout/index.js +171 -229
- package/es/ProLayout/propTypes.js +12 -52
- package/es/ProLayout/utils/index.js +48 -128
- package/es/ProSelect/components/AdaptiveTooltip.js +26 -25
- package/es/ProSelect/index.js +184 -229
- package/es/ProSelect/propsType.js +0 -1
- package/es/ProSelect/utils/index.js +100 -146
- package/es/ProStep/components/Anchor/index.js +71 -82
- package/es/ProStep/components/Item/index.js +49 -56
- package/es/ProStep/components/LazyLoad/index.js +23 -29
- package/es/ProStep/components/Listener/index.js +20 -33
- package/es/ProStep/components/Step/index.js +31 -38
- package/es/ProStep/constants.js +4 -1
- package/es/ProStep/index.js +166 -153
- package/es/ProStep/propsType.js +0 -1
- package/es/ProStep/utils/index.js +29 -55
- package/es/ProStepTab/index.js +83 -138
- package/es/ProStepTab/propsType.js +0 -1
- package/es/ProTable/components/EditableCell/EditIcon.js +10 -14
- package/es/ProTable/components/EditableCell/index.js +37 -71
- package/es/ProTable/components/EditableCell/propsType.js +0 -1
- package/es/ProTable/components/FormatColumn/index.js +209 -340
- package/es/ProTable/components/FormatColumn/propsType.js +0 -1
- package/es/ProTable/components/RcTable/components/BaseTable/index.js +35 -39
- package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/index.js +80 -107
- package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/utils/index.js +54 -48
- package/es/ProTable/components/RcTable/components/DraggableTable/components/DndWrapper/utils/propsType.js +0 -1
- package/es/ProTable/components/RcTable/components/DraggableTable/index.js +47 -54
- package/es/ProTable/components/RcTable/index.js +6 -4
- package/es/ProTable/components/RenderColumn/index.js +158 -186
- package/es/ProTable/components/RenderEmptyText/index.js +12 -21
- package/es/ProTable/components/RenderFooter/index.js +15 -15
- package/es/ProTable/components/RenderSummary/index.js +33 -50
- package/es/ProTable/components/RenderTableHeader/index.js +44 -46
- package/es/ProTable/components/RenderTabs/index.js +47 -51
- package/es/ProTable/components/TableResizable/index.js +56 -72
- package/es/ProTable/components/TooltipTitle/index.js +13 -21
- package/es/ProTable/components/index.js +16 -36
- package/es/ProTable/hooks/useAntdTable.js +185 -219
- package/es/ProTable/index.js +232 -249
- package/es/ProTable/propsType.js +0 -1
- package/es/ProTable/utils/columnStorage.js +63 -88
- package/es/ProTable/utils/index.js +57 -90
- package/es/ProTabs/components/Card/index.js +20 -48
- package/es/ProTabs/components/index.js +4 -1
- package/es/ProTabs/index.js +39 -56
- package/es/ProTabs/propType.js +0 -1
- package/es/ProThemeTools/component/ProTools/index.js +106 -158
- package/es/ProThemeTools/component/index.js +4 -1
- package/es/ProThemeTools/context/ThemeContext.js +67 -146
- package/es/ProThemeTools/index.js +103 -156
- package/es/ProThemeTools/propsType.js +0 -1
- package/es/ProThemeTools/utils/index.js +60 -109
- package/es/ProTooltip/index.js +132 -165
- package/es/ProTooltip/propsType.js +0 -1
- package/es/ProTree/components/AdaptiveTooltip.js +15 -17
- package/es/ProTree/components/CloseIcon.js +18 -26
- package/es/ProTree/components/List.js +28 -47
- package/es/ProTree/components/ProTree.js +152 -211
- package/es/ProTree/components/ProTreeSelect/index.js +254 -458
- package/es/ProTree/components/ProTreeSelect/propsType.js +0 -1
- package/es/ProTree/components/SearchTitle.js +23 -42
- package/es/ProTree/components/Tree.js +147 -195
- package/es/ProTree/components/index.js +10 -5
- package/es/ProTree/index.js +12 -16
- package/es/ProTree/propsType.js +0 -1
- package/es/ProTree/utils.js +46 -118
- package/es/ProTreeModal/components/Cascader.js +56 -64
- package/es/ProTreeModal/components/CloseIcon.js +18 -26
- package/es/ProTreeModal/components/List.js +114 -180
- package/es/ProTreeModal/components/SearchTitle.js +15 -18
- package/es/ProTreeModal/components/SortableItem.js +29 -58
- package/es/ProTreeModal/components/Tree.js +99 -113
- package/es/ProTreeModal/components/Trigger.js +87 -121
- package/es/ProTreeModal/components/index.js +14 -6
- package/es/ProTreeModal/index.js +397 -435
- package/es/ProTreeModal/propsType.js +0 -1
- package/es/ProTreeModal/utils.js +52 -95
- package/es/ProUpload/components/ButtonRender.js +44 -54
- package/es/ProUpload/components/DragRender.js +94 -134
- package/es/ProUpload/components/DraggableUploadListItem.js +12 -25
- package/es/ProUpload/components/Example.js +27 -31
- package/es/ProUpload/components/FileItem.js +69 -163
- package/es/ProUpload/components/ImageRender.js +134 -170
- package/es/ProUpload/index.js +68 -100
- package/es/ProUpload/propsType.js +0 -1
- package/es/ProUpload/uitls.js +8 -4
- package/es/ProUtils/utils/index.js +17 -13
- package/es/ProViewer/index.js +154 -175
- package/es/ProViewer/propsType.js +0 -5
- package/es/ProWaterMark/index.js +9 -16
- package/es/ProWaterMark/propsType.js +0 -1
- package/es/hooks/useDraggableRow.js +25 -53
- package/es/index.js +57 -77
- package/es/locale/en_US.js +153 -142
- package/es/locale/index.js +23 -36
- package/es/locale/zh_CN.js +145 -142
- package/es/tokens.js +84 -83
- package/es/utils/index.js +24 -51
- package/package.json +4 -3
|
@@ -1,28 +1,16 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import { useEffect, useMemo } from "react";
|
|
2
|
+
import isBoolean from "lodash/isBoolean";
|
|
3
|
+
import isString from "lodash/isString";
|
|
4
4
|
import { rulesCreator } from "../utils/rulesCreator";
|
|
5
5
|
import { isNotFullArray, isNullArray } from "../utils";
|
|
6
6
|
import locale from "../../locale";
|
|
7
|
-
const useRules = props => {
|
|
8
|
-
const {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
label,
|
|
13
|
-
names,
|
|
14
|
-
labelRequired,
|
|
15
|
-
type
|
|
16
|
-
} = props;
|
|
17
|
-
const _label = _isString(label) ? label : '';
|
|
18
|
-
const requiredRule = Array.isArray(rules) && rules?.find(rule => rule.required === true);
|
|
19
|
-
const allRequired = required === true || Array.isArray(required) && required.every(item => item === true);
|
|
20
|
-
|
|
21
|
-
// 根据 required 添加 rules, names 字段会添加数组的必填校验
|
|
7
|
+
const useRules = (props) => {
|
|
8
|
+
const { rules, required, isSelect, label, names, labelRequired, type } = props;
|
|
9
|
+
const _label = isString(label) ? label : "";
|
|
10
|
+
const requiredRule = Array.isArray(rules) && (rules == null ? void 0 : rules.find((rule) => rule.required === true));
|
|
11
|
+
const allRequired = required === true || Array.isArray(required) && required.every((item) => item === true);
|
|
22
12
|
const internalRule = useMemo(() => {
|
|
23
|
-
const result = {
|
|
24
|
-
rules: rules || []
|
|
25
|
-
};
|
|
13
|
+
const result = { rules: rules || [] };
|
|
26
14
|
if (allRequired) {
|
|
27
15
|
if (!requiredRule) {
|
|
28
16
|
const message = isSelect ? `${locale.ProForm.selectPlaceHolder}${_label}` : `${locale.ProForm.inputPlaceholder}${_label}`;
|
|
@@ -30,9 +18,7 @@ const useRules = props => {
|
|
|
30
18
|
required: allRequired,
|
|
31
19
|
message
|
|
32
20
|
};
|
|
33
|
-
|
|
34
|
-
// names字段的必填校验
|
|
35
|
-
if (names?.length) {
|
|
21
|
+
if (names == null ? void 0 : names.length) {
|
|
36
22
|
rule.validator = (_, value) => {
|
|
37
23
|
if (!value || isNullArray(value)) {
|
|
38
24
|
return Promise.reject(new Error(`${locale.ProForm.inputPlaceholder}${_label}`));
|
|
@@ -42,8 +28,7 @@ const useRules = props => {
|
|
|
42
28
|
}
|
|
43
29
|
result.rules = Array.isArray(rules) ? [...rules, rule] : [rule];
|
|
44
30
|
}
|
|
45
|
-
} else if (requiredRule && names
|
|
46
|
-
// names字段 修改必填规则校验
|
|
31
|
+
} else if (requiredRule && (names == null ? void 0 : names.length)) {
|
|
47
32
|
requiredRule.validator = (_, value) => {
|
|
48
33
|
if (!value || isNullArray(value)) {
|
|
49
34
|
return Promise.reject(new Error(`${locale.ProForm.inputPlaceholder}${_label}`));
|
|
@@ -53,8 +38,6 @@ const useRules = props => {
|
|
|
53
38
|
}
|
|
54
39
|
return result;
|
|
55
40
|
}, [rules, required]);
|
|
56
|
-
|
|
57
|
-
// type转换为内置rules
|
|
58
41
|
internalRule.rules = internalRule.rules && rulesCreator({
|
|
59
42
|
rules: internalRule.rules,
|
|
60
43
|
label: _label,
|
|
@@ -63,11 +46,9 @@ const useRules = props => {
|
|
|
63
46
|
required
|
|
64
47
|
});
|
|
65
48
|
useEffect(() => {
|
|
66
|
-
|
|
67
|
-
if (names && !_isBoolean(labelRequired)) {
|
|
49
|
+
if (names && !isBoolean(labelRequired)) {
|
|
68
50
|
const customRequired = {
|
|
69
|
-
validator: (
|
|
70
|
-
// 完整性校验, 空数组不校验, 数组有值且值不完整则校验不通过
|
|
51
|
+
validator: (rules2, value) => {
|
|
71
52
|
if (Array.isArray(value) && !isNullArray(value) && isNotFullArray(value, names.length, required)) {
|
|
72
53
|
return Promise.reject(new Error(`${locale.ProForm.completeText}${_label}`));
|
|
73
54
|
}
|
|
@@ -79,4 +60,7 @@ const useRules = props => {
|
|
|
79
60
|
}, [internalRule]);
|
|
80
61
|
return internalRule;
|
|
81
62
|
};
|
|
82
|
-
|
|
63
|
+
var useRules_default = useRules;
|
|
64
|
+
export {
|
|
65
|
+
useRules_default as default
|
|
66
|
+
};
|
|
@@ -1,24 +1,22 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
1
|
+
import { useRef, useState, useEffect } from "react";
|
|
2
|
+
import isFunction from "lodash/isFunction";
|
|
3
|
+
import isEqualWith from "lodash/isEqualWith";
|
|
4
|
+
import get from "lodash/get";
|
|
5
|
+
import debounce from "lodash/debounce";
|
|
6
6
|
import { customEqualForFunction } from "../../utils";
|
|
7
|
-
import {
|
|
8
|
-
|
|
7
|
+
import {
|
|
8
|
+
resolveReactiveValues,
|
|
9
|
+
hasReactiveDiff,
|
|
10
|
+
commitReactiveValues
|
|
11
|
+
} from "../utils/reactiveValues";
|
|
9
12
|
const isDeleteLine = (form, namePath) => {
|
|
10
13
|
if (namePath) {
|
|
11
14
|
const line = form.getFieldValue(namePath);
|
|
12
|
-
return line ===
|
|
15
|
+
return line === void 0;
|
|
13
16
|
}
|
|
14
17
|
return false;
|
|
15
18
|
};
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* 执行清值逻辑
|
|
19
|
-
* @param params 清值所需参数
|
|
20
|
-
*/
|
|
21
|
-
const executeClearValue = params => {
|
|
19
|
+
const executeClearValue = (params) => {
|
|
22
20
|
const {
|
|
23
21
|
form,
|
|
24
22
|
name,
|
|
@@ -31,38 +29,31 @@ const executeClearValue = params => {
|
|
|
31
29
|
needClear,
|
|
32
30
|
timerRef
|
|
33
31
|
} = params;
|
|
34
|
-
|
|
35
|
-
// 提前返回:不满足清值条件
|
|
36
32
|
const shouldClear = clearNotShow !== false && (name || names) && !isDeleteLine(form, namePath);
|
|
37
33
|
if (!shouldClear) {
|
|
38
34
|
return;
|
|
39
35
|
}
|
|
40
|
-
|
|
41
|
-
// 当show从其他值变为false时,标记需要清值
|
|
42
36
|
const showChangedToFalse = currentShow !== previousShow && currentShow === false;
|
|
43
37
|
if (showChangedToFalse) {
|
|
44
38
|
needClear.current = true;
|
|
45
39
|
}
|
|
46
|
-
|
|
47
|
-
// show为false时,执行清值操作(带防抖)
|
|
48
40
|
if (currentShow === false) {
|
|
49
41
|
clearTimeout(timerRef.current);
|
|
50
42
|
timerRef.current = setTimeout(() => {
|
|
51
|
-
if (needClear.current !== true)
|
|
52
|
-
|
|
43
|
+
if (needClear.current !== true)
|
|
44
|
+
return;
|
|
45
|
+
const fieldsToReset = Array.isArray(names) ? names : [
|
|
46
|
+
formItemProps.namePath ? formItemProps.namePath.slice(0, -1).concat(formItemProps.name) : formItemProps.name
|
|
47
|
+
];
|
|
53
48
|
form.resetFields(fieldsToReset);
|
|
54
49
|
needClear.current = false;
|
|
55
50
|
}, 300);
|
|
56
51
|
return;
|
|
57
52
|
}
|
|
58
|
-
|
|
59
|
-
// show不为false时,清除清值标记和定时器
|
|
60
53
|
needClear.current = false;
|
|
61
54
|
clearTimeout(timerRef.current);
|
|
62
55
|
};
|
|
63
|
-
|
|
64
|
-
// 代理shouldUpdate事件, 执行函数值的[show, disabled], 当[show, disabled]与上一次值不相同时更新状态
|
|
65
|
-
const useShouldUpdate = props => {
|
|
56
|
+
const useShouldUpdate = (props) => {
|
|
66
57
|
const {
|
|
67
58
|
show,
|
|
68
59
|
formItemProps,
|
|
@@ -77,20 +68,11 @@ const useShouldUpdate = props => {
|
|
|
77
68
|
desensitization,
|
|
78
69
|
shouldUpdateDebounce
|
|
79
70
|
} = props;
|
|
80
|
-
const {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
namePath,
|
|
86
|
-
names,
|
|
87
|
-
dependNames
|
|
88
|
-
} = formItemProps;
|
|
89
|
-
const timerRef = useRef(null); // 清值防抖
|
|
90
|
-
const debouncedShouldUpdateRef = useRef(null); // shouldUpdate防抖函数
|
|
91
|
-
const pendingValuesRef = useRef(null); // 待处理的表单值
|
|
92
|
-
|
|
93
|
-
const needClear = useRef(false); // 是否需要执行清值操作
|
|
71
|
+
const { shouldUpdate, name, clearNotShow, index, namePath, names, dependNames } = formItemProps;
|
|
72
|
+
const timerRef = useRef(null);
|
|
73
|
+
const debouncedShouldUpdateRef = useRef(null);
|
|
74
|
+
const pendingValuesRef = useRef(null);
|
|
75
|
+
const needClear = useRef(false);
|
|
94
76
|
const showRef = useRef(false);
|
|
95
77
|
const disabledRef = useRef(false);
|
|
96
78
|
const requiredRef = useRef(false);
|
|
@@ -99,11 +81,9 @@ const useShouldUpdate = props => {
|
|
|
99
81
|
const originComponentRef = useRef(null);
|
|
100
82
|
const dependNamesRef = useRef([]);
|
|
101
83
|
const desensitizationRef = useRef([0, 0]);
|
|
102
|
-
const newComponent = originComponent || component;
|
|
84
|
+
const newComponent = originComponent || component;
|
|
103
85
|
const [, reRender] = useState({});
|
|
104
86
|
let values = {};
|
|
105
|
-
|
|
106
|
-
// 响应式配置与 ref 集合,供纯函数复用
|
|
107
87
|
const reactiveProps = {
|
|
108
88
|
show,
|
|
109
89
|
disabled,
|
|
@@ -120,18 +100,10 @@ const useShouldUpdate = props => {
|
|
|
120
100
|
fieldPropsRef,
|
|
121
101
|
desensitizationRef
|
|
122
102
|
};
|
|
123
|
-
|
|
124
|
-
// 处理表单值更新的函数
|
|
125
|
-
const processValuesUpdate = currentValues => {
|
|
103
|
+
const processValuesUpdate = (currentValues) => {
|
|
126
104
|
const _currentValues = namePath ? form.getFieldValue(namePath) || {} : currentValues;
|
|
127
|
-
const ctx = {
|
|
128
|
-
form,
|
|
129
|
-
index,
|
|
130
|
-
namePath
|
|
131
|
-
};
|
|
105
|
+
const ctx = { form, index, namePath };
|
|
132
106
|
const next = resolveReactiveValues(reactiveProps, _currentValues, ctx);
|
|
133
|
-
|
|
134
|
-
// 在防抖函数中也执行清值逻辑,确保清值功能在防抖场景下也能正常工作
|
|
135
107
|
executeClearValue({
|
|
136
108
|
form,
|
|
137
109
|
name,
|
|
@@ -149,27 +121,32 @@ const useShouldUpdate = props => {
|
|
|
149
121
|
reRender({});
|
|
150
122
|
}
|
|
151
123
|
};
|
|
152
|
-
|
|
153
|
-
// 创建防抖函数
|
|
154
124
|
useEffect(() => {
|
|
155
|
-
if (shouldUpdateDebounce > 0 && (dependNames
|
|
156
|
-
debouncedShouldUpdateRef.current =
|
|
125
|
+
if (shouldUpdateDebounce > 0 && ((dependNames == null ? void 0 : dependNames.length) || isFunction(show) || isFunction(disabled) || isFunction(required) || isFunction(rules) || isFunction(fieldProps) || isFunction(originComponent) || isFunction(desensitization))) {
|
|
126
|
+
debouncedShouldUpdateRef.current = debounce(() => {
|
|
157
127
|
if (pendingValuesRef.current) {
|
|
158
128
|
const currentValues = pendingValuesRef.current;
|
|
159
129
|
pendingValuesRef.current = null;
|
|
160
|
-
|
|
161
|
-
// 使用最新的values重新计算状态
|
|
162
130
|
processValuesUpdate(currentValues);
|
|
163
131
|
}
|
|
164
132
|
}, shouldUpdateDebounce);
|
|
165
133
|
}
|
|
166
134
|
return () => {
|
|
167
|
-
|
|
135
|
+
var _a;
|
|
136
|
+
(_a = debouncedShouldUpdateRef.current) == null ? void 0 : _a.cancel();
|
|
168
137
|
};
|
|
169
|
-
}, [
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
138
|
+
}, [
|
|
139
|
+
shouldUpdateDebounce,
|
|
140
|
+
dependNames == null ? void 0 : dependNames.length,
|
|
141
|
+
show,
|
|
142
|
+
disabled,
|
|
143
|
+
required,
|
|
144
|
+
rules,
|
|
145
|
+
fieldProps,
|
|
146
|
+
originComponent,
|
|
147
|
+
desensitization
|
|
148
|
+
]);
|
|
149
|
+
if (!(dependNames == null ? void 0 : dependNames.length) && !isFunction(show) && !isFunction(disabled) && !isFunction(required) && !isFunction(rules) && !isFunction(fieldProps) && !isFunction(originComponent) && !isFunction(desensitization)) {
|
|
173
150
|
return {
|
|
174
151
|
shouldUpdate,
|
|
175
152
|
show,
|
|
@@ -182,117 +159,72 @@ const useShouldUpdate = props => {
|
|
|
182
159
|
};
|
|
183
160
|
}
|
|
184
161
|
if (namePath) {
|
|
185
|
-
// formList场景values取当前行数据
|
|
186
162
|
values = form.getFieldValue(namePath) || {};
|
|
187
163
|
} else {
|
|
188
164
|
values = form.getFieldsValue(true);
|
|
189
165
|
}
|
|
190
|
-
if (
|
|
191
|
-
showRef.current = Boolean(show(values, {
|
|
192
|
-
form,
|
|
193
|
-
index,
|
|
194
|
-
namePath
|
|
195
|
-
}));
|
|
166
|
+
if (isFunction(show)) {
|
|
167
|
+
showRef.current = Boolean(show(values, { form, index, namePath }));
|
|
196
168
|
} else {
|
|
197
169
|
showRef.current = show;
|
|
198
170
|
}
|
|
199
|
-
if (
|
|
200
|
-
desensitizationRef.current = desensitization(values, {
|
|
201
|
-
form,
|
|
202
|
-
index,
|
|
203
|
-
namePath
|
|
204
|
-
});
|
|
171
|
+
if (isFunction(desensitization)) {
|
|
172
|
+
desensitizationRef.current = desensitization(values, { form, index, namePath });
|
|
205
173
|
} else {
|
|
206
174
|
desensitizationRef.current = desensitization;
|
|
207
175
|
}
|
|
208
|
-
if (
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
form,
|
|
212
|
-
index,
|
|
213
|
-
namePath
|
|
214
|
-
}))) {
|
|
215
|
-
disabledRef.current = disabled(values, {
|
|
216
|
-
form,
|
|
217
|
-
index,
|
|
218
|
-
namePath
|
|
219
|
-
});
|
|
176
|
+
if (isFunction(disabled)) {
|
|
177
|
+
if (["Group", "RangePicker", "ProCascader"].includes(type) && Array.isArray(disabled(values, { form, index, namePath }))) {
|
|
178
|
+
disabledRef.current = disabled(values, { form, index, namePath });
|
|
220
179
|
} else {
|
|
221
|
-
disabledRef.current = Boolean(disabled(values, {
|
|
222
|
-
form,
|
|
223
|
-
index,
|
|
224
|
-
namePath
|
|
225
|
-
}));
|
|
180
|
+
disabledRef.current = Boolean(disabled(values, { form, index, namePath }));
|
|
226
181
|
}
|
|
227
182
|
} else {
|
|
228
183
|
disabledRef.current = disabled;
|
|
229
184
|
}
|
|
230
|
-
if (
|
|
231
|
-
requiredRef.current = required(values, {
|
|
232
|
-
form,
|
|
233
|
-
index,
|
|
234
|
-
namePath
|
|
235
|
-
});
|
|
185
|
+
if (isFunction(required)) {
|
|
186
|
+
requiredRef.current = required(values, { form, index, namePath });
|
|
236
187
|
} else {
|
|
237
188
|
requiredRef.current = required;
|
|
238
189
|
}
|
|
239
|
-
if (
|
|
240
|
-
rulesRef.current = rules(values, {
|
|
241
|
-
form,
|
|
242
|
-
index,
|
|
243
|
-
namePath
|
|
244
|
-
});
|
|
190
|
+
if (isFunction(rules)) {
|
|
191
|
+
rulesRef.current = rules(values, { form, index, namePath });
|
|
245
192
|
} else {
|
|
246
193
|
rulesRef.current = rules;
|
|
247
194
|
}
|
|
248
|
-
if (
|
|
249
|
-
originComponentRef.current = originComponent(values, {
|
|
250
|
-
form,
|
|
251
|
-
index,
|
|
252
|
-
namePath
|
|
253
|
-
});
|
|
195
|
+
if (isFunction(originComponent)) {
|
|
196
|
+
originComponentRef.current = originComponent(values, { form, index, namePath });
|
|
254
197
|
} else {
|
|
255
198
|
originComponentRef.current = newComponent;
|
|
256
199
|
}
|
|
257
|
-
if (
|
|
258
|
-
fieldPropsRef.current = fieldProps(values, {
|
|
259
|
-
form,
|
|
260
|
-
index,
|
|
261
|
-
namePath
|
|
262
|
-
}); // index, namePath FormList才会有
|
|
200
|
+
if (isFunction(fieldProps)) {
|
|
201
|
+
fieldPropsRef.current = fieldProps(values, { form, index, namePath });
|
|
263
202
|
} else {
|
|
264
203
|
fieldPropsRef.current = fieldProps;
|
|
265
204
|
}
|
|
266
|
-
if (dependNames
|
|
267
|
-
dependNamesRef.current = dependNames.map(
|
|
205
|
+
if (dependNames == null ? void 0 : dependNames.length) {
|
|
206
|
+
dependNamesRef.current = dependNames.map((name2) => get(values, name2));
|
|
268
207
|
}
|
|
269
208
|
return {
|
|
270
209
|
shouldUpdate: (prevValues, currentValues, ...rest) => {
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
const
|
|
274
|
-
|
|
210
|
+
if (dependNames == null ? void 0 : dependNames.length) {
|
|
211
|
+
const curDependNamesValue = dependNames.map((name2) => get(currentValues, name2));
|
|
212
|
+
const dependNamesChanged = !isEqualWith(
|
|
213
|
+
dependNamesRef.current,
|
|
214
|
+
curDependNamesValue,
|
|
215
|
+
customEqualForFunction
|
|
216
|
+
);
|
|
275
217
|
dependNamesRef.current = curDependNamesValue;
|
|
276
|
-
if (!dependNamesChanged)
|
|
218
|
+
if (!dependNamesChanged)
|
|
219
|
+
return false;
|
|
277
220
|
}
|
|
278
|
-
|
|
279
|
-
// 先获取当前表单值,用于判断是否需要清值
|
|
280
221
|
let _currentValues;
|
|
281
222
|
if (namePath) {
|
|
282
|
-
// formList场景values取当前行数据
|
|
283
223
|
_currentValues = form.getFieldValue(namePath) || {};
|
|
284
224
|
} else {
|
|
285
225
|
_currentValues = form.getFieldsValue(true);
|
|
286
226
|
}
|
|
287
|
-
|
|
288
|
-
// 计算当前的 show 值
|
|
289
|
-
const _show = _isFunction(show) ? Boolean(show(_currentValues, {
|
|
290
|
-
form,
|
|
291
|
-
index,
|
|
292
|
-
namePath
|
|
293
|
-
})) : show;
|
|
294
|
-
|
|
295
|
-
// 在防抖判断之前先执行清值逻辑检查,确保清值逻辑不受防抖影响
|
|
227
|
+
const _show = isFunction(show) ? Boolean(show(_currentValues, { form, index, namePath })) : show;
|
|
296
228
|
executeClearValue({
|
|
297
229
|
form,
|
|
298
230
|
name,
|
|
@@ -305,28 +237,18 @@ const useShouldUpdate = props => {
|
|
|
305
237
|
needClear,
|
|
306
238
|
timerRef
|
|
307
239
|
});
|
|
308
|
-
|
|
309
|
-
// 如果启用了防抖且存在防抖函数
|
|
310
240
|
if (shouldUpdateDebounce > 0 && debouncedShouldUpdateRef.current) {
|
|
311
|
-
// 缓存最新的表单值
|
|
312
241
|
pendingValuesRef.current = currentValues;
|
|
313
|
-
// 触发防抖函数
|
|
314
242
|
debouncedShouldUpdateRef.current();
|
|
315
|
-
return false;
|
|
243
|
+
return false;
|
|
316
244
|
}
|
|
317
|
-
|
|
318
|
-
// 原有的非防抖逻辑
|
|
319
|
-
const next = resolveReactiveValues(reactiveProps, _currentValues, {
|
|
320
|
-
form,
|
|
321
|
-
index,
|
|
322
|
-
namePath
|
|
323
|
-
});
|
|
245
|
+
const next = resolveReactiveValues(reactiveProps, _currentValues, { form, index, namePath });
|
|
324
246
|
if (hasReactiveDiff(reactiveRefs, next)) {
|
|
325
247
|
commitReactiveValues(reactiveRefs, next);
|
|
326
248
|
reRender({});
|
|
327
249
|
return false;
|
|
328
250
|
}
|
|
329
|
-
if (typeof shouldUpdate ===
|
|
251
|
+
if (typeof shouldUpdate === "function") {
|
|
330
252
|
return shouldUpdate(prevValues, currentValues, ...rest);
|
|
331
253
|
}
|
|
332
254
|
return !!shouldUpdate;
|
|
@@ -340,4 +262,7 @@ const useShouldUpdate = props => {
|
|
|
340
262
|
desensitization: desensitizationRef.current
|
|
341
263
|
};
|
|
342
264
|
};
|
|
343
|
-
|
|
265
|
+
var useShouldUpdate_default = useShouldUpdate;
|
|
266
|
+
export {
|
|
267
|
+
useShouldUpdate_default as default
|
|
268
|
+
};
|