@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,29 +1,34 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import cloneDeepWith from "lodash/cloneDeepWith";
|
|
4
|
+
import isArray from "lodash/isArray";
|
|
5
|
+
import isBoolean from "lodash/isBoolean";
|
|
6
|
+
import isFunction from "lodash/isFunction";
|
|
7
|
+
import { Tooltip, Space } from "antd";
|
|
8
|
+
import classnames from "classnames";
|
|
9
|
+
import { tools } from "@zat-design/utils";
|
|
10
|
+
import { QuestionCircleOutlined } from "@ant-design/icons";
|
|
11
|
+
import {
|
|
12
|
+
actions,
|
|
13
|
+
defaultBtnNameMap,
|
|
14
|
+
defaultSingleActionKeys,
|
|
15
|
+
defaultMultipleActionKeys,
|
|
16
|
+
defaultEditingActionKeys
|
|
17
|
+
} from "./config";
|
|
18
|
+
import {
|
|
19
|
+
customValidate,
|
|
20
|
+
getNamePath,
|
|
21
|
+
splitNames,
|
|
22
|
+
handleScrollToError,
|
|
23
|
+
cloneDeepFilterNode,
|
|
24
|
+
isRecordShallowEqual
|
|
25
|
+
} from "./tools";
|
|
12
26
|
import { filterInternalFields } from "../../ProForm/utils";
|
|
13
27
|
import ProTooltip from "../../ProTooltip";
|
|
14
28
|
import { RenderField, ActionButton } from "../components";
|
|
15
29
|
import { hasRowFunctionDependency } from "../components/RenderField/tools";
|
|
16
30
|
import locale from "../../locale";
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* shouldCellUpdate 缓存容器:跟踪 dataSource/component 引用与 filterInList 列表长度。
|
|
20
|
-
* 调用方(ProEditTable 顶层)通过 useRef 持有按实例隔离的容器,避免 module-level Map
|
|
21
|
-
* 在多实例场景下交叉污染;实例卸载后缓存随宿主一起释放。
|
|
22
|
-
* 未传 caches 时退化为单次内联 Map(不缓存历史,shouldCellUpdate 始终首次比较)。
|
|
23
|
-
*/
|
|
24
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
|
-
// 渲染操作栏
|
|
26
|
-
const getActionColumn = config => {
|
|
31
|
+
const getActionColumn = (config) => {
|
|
27
32
|
const {
|
|
28
33
|
disabled,
|
|
29
34
|
name,
|
|
@@ -36,108 +41,77 @@ const getActionColumn = config => {
|
|
|
36
41
|
rowDisabled,
|
|
37
42
|
actionDirection,
|
|
38
43
|
editingKeys
|
|
39
|
-
} =
|
|
40
|
-
if (
|
|
44
|
+
} = cloneDeepWith(config, (value) => {
|
|
45
|
+
if (React.isValidElement(value)) {
|
|
41
46
|
return value;
|
|
42
47
|
}
|
|
43
48
|
});
|
|
44
|
-
const pageNum = tools.calc(page.pageNum,
|
|
45
|
-
const firstIndex = tools.calc(pageNum,
|
|
46
|
-
// actionProps配置为false 默认不插入
|
|
49
|
+
const pageNum = tools.calc(page.pageNum, "-", 1);
|
|
50
|
+
const firstIndex = tools.calc(pageNum, "*", page.pageSize);
|
|
47
51
|
if (actionProps === false || disabled) {
|
|
48
52
|
return false;
|
|
49
53
|
}
|
|
50
54
|
const virtualRowName = getNamePath(name, virtualKey);
|
|
51
|
-
|
|
52
|
-
// 设置默认操作栏按钮(区分单行与多行编辑场景)
|
|
53
55
|
const defaultActionKeys = virtualKey ? defaultSingleActionKeys : defaultMultipleActionKeys;
|
|
54
56
|
let nextActionsProps = [...actionProps];
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
nextActionsProps = defaultActionKeys.map(key => {
|
|
59
|
-
return {
|
|
60
|
-
type: key
|
|
61
|
-
};
|
|
57
|
+
if (isArray(actionProps) && !(actionProps == null ? void 0 : actionProps.length)) {
|
|
58
|
+
nextActionsProps = defaultActionKeys.map((key) => {
|
|
59
|
+
return { type: key };
|
|
62
60
|
});
|
|
63
61
|
} else {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
if (_isArray(actionProps) && !actionProps.find(action => action.type === key)) {
|
|
62
|
+
defaultActionKeys.forEach((key) => {
|
|
63
|
+
if (isArray(actionProps) && !actionProps.find((action) => action.type === key)) {
|
|
67
64
|
nextActionsProps.push({
|
|
68
65
|
type: key
|
|
69
66
|
});
|
|
70
67
|
}
|
|
71
68
|
});
|
|
72
69
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const actionBtns = nextActionsProps.map(action => {
|
|
76
|
-
const {
|
|
77
|
-
type,
|
|
78
|
-
label,
|
|
79
|
-
show,
|
|
80
|
-
needConfirm,
|
|
81
|
-
onHandle,
|
|
82
|
-
onClick,
|
|
83
|
-
isSelectModal,
|
|
84
|
-
...buttonProps
|
|
85
|
-
} = action;
|
|
70
|
+
const actionBtns = nextActionsProps.map((action) => {
|
|
71
|
+
const { type, label, show, needConfirm, onHandle, onClick, isSelectModal, ...buttonProps } = action;
|
|
86
72
|
action.isEditable = defaultEditingActionKeys.includes(type);
|
|
87
73
|
action.label = label ?? defaultBtnNameMap[type];
|
|
88
74
|
action.show = show ?? true;
|
|
89
75
|
action.needConfirm = needConfirm ?? true;
|
|
90
|
-
action.onEvent = async (record, {
|
|
91
|
-
index,
|
|
92
|
-
form,
|
|
93
|
-
name,
|
|
94
|
-
namePath,
|
|
95
|
-
tableLength,
|
|
96
|
-
selectedRows
|
|
97
|
-
}) => {
|
|
98
|
-
index = tools.calc(firstIndex, '+', index);
|
|
76
|
+
action.onEvent = async (record, { index, form: form2, name: name2, namePath, tableLength, selectedRows }) => {
|
|
77
|
+
index = tools.calc(firstIndex, "+", index);
|
|
99
78
|
const rowName = [...virtualRowName, index];
|
|
100
|
-
if (type ===
|
|
101
|
-
// 判断该行是否处于编辑状态
|
|
79
|
+
if (type === "save") {
|
|
102
80
|
const _isEditing = !virtualKey || editingKeys.includes(record.rowKey) || record._addFlag;
|
|
103
|
-
|
|
104
|
-
// 只有编辑中的行才需要校验
|
|
105
81
|
if (_isEditing) {
|
|
106
82
|
try {
|
|
107
|
-
await customValidate(validateKeys,
|
|
83
|
+
await customValidate(validateKeys, form2, rowName);
|
|
108
84
|
} catch (error) {
|
|
109
85
|
handleScrollToError();
|
|
110
86
|
return Promise.reject(error);
|
|
111
87
|
}
|
|
112
88
|
}
|
|
113
89
|
}
|
|
114
|
-
|
|
115
|
-
const fieldRecord = filterInternalFields(form.getFieldValue(rowName));
|
|
90
|
+
const fieldRecord = filterInternalFields(form2.getFieldValue(rowName));
|
|
116
91
|
const lastRecord = {
|
|
117
92
|
...record,
|
|
118
|
-
...
|
|
93
|
+
...fieldRecord && typeof fieldRecord === "object" ? fieldRecord : {},
|
|
119
94
|
rowKey: record.rowKey
|
|
120
95
|
};
|
|
121
|
-
// 新增事件可以设置初始默认值,当做函数的出参导出
|
|
122
96
|
const onEvent = onClick || onHandle;
|
|
123
97
|
let result;
|
|
124
98
|
if (!onEvent) {
|
|
125
99
|
result = true;
|
|
126
100
|
} else {
|
|
127
|
-
result = await onEvent
|
|
128
|
-
form,
|
|
101
|
+
result = await (onEvent == null ? void 0 : onEvent(lastRecord, {
|
|
102
|
+
form: form2,
|
|
129
103
|
index,
|
|
130
104
|
tableLength,
|
|
131
|
-
name,
|
|
105
|
+
name: name2,
|
|
132
106
|
namePath,
|
|
133
107
|
selectedRows
|
|
134
|
-
});
|
|
108
|
+
}));
|
|
135
109
|
}
|
|
136
|
-
if (result !== false && type !==
|
|
110
|
+
if (result !== false && type !== "custom") {
|
|
137
111
|
const actionHandler = actions[type];
|
|
138
112
|
actionHandler({
|
|
139
113
|
...config,
|
|
140
|
-
rowName: [...
|
|
114
|
+
rowName: [...name2, index],
|
|
141
115
|
virtualRowName: rowName,
|
|
142
116
|
record: lastRecord,
|
|
143
117
|
result,
|
|
@@ -150,43 +124,32 @@ const getActionColumn = config => {
|
|
|
150
124
|
});
|
|
151
125
|
return {
|
|
152
126
|
title: locale.ProEditTable.operation,
|
|
153
|
-
key:
|
|
154
|
-
fixed:
|
|
155
|
-
className:
|
|
156
|
-
width: actionWidth || (actionDirection ===
|
|
127
|
+
key: "action",
|
|
128
|
+
fixed: "right",
|
|
129
|
+
className: "pro-edit-table-action-column",
|
|
130
|
+
width: actionWidth || (actionDirection === "vertical" ? 60 : virtualKey ? 120 : 60),
|
|
157
131
|
render: (text, record, index) => {
|
|
158
|
-
const _disabled = rowDisabled
|
|
132
|
+
const _disabled = (rowDisabled == null ? void 0 : rowDisabled(record)) ?? false;
|
|
159
133
|
if (_disabled) {
|
|
160
|
-
return
|
|
134
|
+
return "";
|
|
161
135
|
}
|
|
162
|
-
return
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
children: /*#__PURE__*/_jsx(ActionButton, {
|
|
136
|
+
return /* @__PURE__ */ jsx(Space, { size: "small", orientation: actionDirection, children: actionBtns.map((btnConfig) => {
|
|
137
|
+
return /* @__PURE__ */ jsx(React.Fragment, { children: /* @__PURE__ */ jsx(
|
|
138
|
+
ActionButton,
|
|
139
|
+
{
|
|
140
|
+
...{
|
|
168
141
|
record,
|
|
169
142
|
index,
|
|
170
143
|
config,
|
|
171
144
|
btnConfig
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
})
|
|
175
|
-
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
) }, `${record.rowKey}-${btnConfig == null ? void 0 : btnConfig.type}`);
|
|
148
|
+
}) });
|
|
176
149
|
}
|
|
177
150
|
};
|
|
178
151
|
};
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* 编辑模式分为 多行和单行两种
|
|
182
|
-
* 单行模式下,render 分为component和viewRender两种,对应编辑和非编辑状态下,edit状态不对外
|
|
183
|
-
* 多行模式下component设置即可
|
|
184
|
-
* render不对外暴露formItem,能自定渲染的尽是输入组件或者显示组件本身
|
|
185
|
-
* @param columns 表格配置数据
|
|
186
|
-
* @param config
|
|
187
|
-
*/
|
|
188
|
-
|
|
189
|
-
export const transformColumns = (columns = [], config, caches) => {
|
|
152
|
+
const transformColumns = (columns = [], config, caches) => {
|
|
190
153
|
const {
|
|
191
154
|
mode,
|
|
192
155
|
form,
|
|
@@ -199,17 +162,16 @@ export const transformColumns = (columns = [], config, caches) => {
|
|
|
199
162
|
setState,
|
|
200
163
|
page
|
|
201
164
|
} = config;
|
|
202
|
-
|
|
203
|
-
// 未传 caches 时退化为单次内联 Map(每次 transform 新建,不持久化)
|
|
204
165
|
const cellCaches = caches ?? {
|
|
205
|
-
dataSourceRef: new Map(),
|
|
206
|
-
componentRef: new Map(),
|
|
207
|
-
listLength: new Map()
|
|
166
|
+
dataSourceRef: /* @__PURE__ */ new Map(),
|
|
167
|
+
componentRef: /* @__PURE__ */ new Map(),
|
|
168
|
+
listLength: /* @__PURE__ */ new Map()
|
|
208
169
|
};
|
|
209
|
-
let nextColumns = columns.map(item => cloneDeepFilterNode(item));
|
|
210
|
-
const pageNum = tools.calc(page.pageNum,
|
|
211
|
-
const firstIndex = tools.calc(pageNum,
|
|
170
|
+
let nextColumns = columns.map((item) => cloneDeepFilterNode(item));
|
|
171
|
+
const pageNum = tools.calc(page.pageNum, "-", 1);
|
|
172
|
+
const firstIndex = tools.calc(pageNum, "*", page.pageSize);
|
|
212
173
|
nextColumns.forEach((item, index) => {
|
|
174
|
+
var _a, _b;
|
|
213
175
|
const {
|
|
214
176
|
label,
|
|
215
177
|
names,
|
|
@@ -225,147 +187,104 @@ export const transformColumns = (columns = [], config, caches) => {
|
|
|
225
187
|
before,
|
|
226
188
|
after
|
|
227
189
|
} = item;
|
|
228
|
-
|
|
229
|
-
// column设置label时,权重最高
|
|
230
190
|
const columnTitle = label || title;
|
|
231
191
|
item.title = columnTitle;
|
|
232
|
-
if (typeof columnTitle ===
|
|
192
|
+
if (typeof columnTitle === "string") {
|
|
233
193
|
item.originTitle = columnTitle;
|
|
234
194
|
if (tooltip) {
|
|
235
|
-
const {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
className: "
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
...resetProps,
|
|
245
|
-
children: icon ? ( /*#__PURE__*/React.cloneElement(icon, {
|
|
246
|
-
className: 'icon-tip'
|
|
247
|
-
})) : /*#__PURE__*/_jsx(QuestionCircleOutlined, {
|
|
248
|
-
className: "icon-tip"
|
|
249
|
-
})
|
|
250
|
-
}), suffix || after]
|
|
251
|
-
});
|
|
195
|
+
const { title: tooltipTitle, icon, ...resetProps } = tooltip || {};
|
|
196
|
+
item.title = /* @__PURE__ */ jsxs("span", { className: "pro-edit-table-title pro-edit-table-tooltip", children: [
|
|
197
|
+
before,
|
|
198
|
+
columnTitle,
|
|
199
|
+
/* @__PURE__ */ jsx(Tooltip, { title: tooltipTitle ?? tooltip, ...resetProps, children: icon ? React.cloneElement(icon, {
|
|
200
|
+
className: "icon-tip"
|
|
201
|
+
}) : /* @__PURE__ */ jsx(QuestionCircleOutlined, { className: "icon-tip" }) }),
|
|
202
|
+
suffix || after
|
|
203
|
+
] });
|
|
252
204
|
} else {
|
|
253
|
-
item.title =
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
205
|
+
item.title = /* @__PURE__ */ jsxs("span", { className: "pro-edit-table-title", children: [
|
|
206
|
+
before,
|
|
207
|
+
columnTitle,
|
|
208
|
+
suffix || after
|
|
209
|
+
] });
|
|
257
210
|
}
|
|
258
211
|
}
|
|
259
|
-
|
|
260
|
-
// width转为数字,兼容虚拟滚动场景
|
|
261
|
-
if (typeof item.width === 'string' && item.width.includes('px')) {
|
|
212
|
+
if (typeof item.width === "string" && item.width.includes("px")) {
|
|
262
213
|
item.width = parseInt(item.width, 10);
|
|
263
214
|
}
|
|
264
|
-
|
|
265
|
-
// column设置name时,权重最高
|
|
266
|
-
const columnName = item?.name || dataIndex || key;
|
|
215
|
+
const columnName = (item == null ? void 0 : item.name) || dataIndex || key;
|
|
267
216
|
item.dataIndex = columnName;
|
|
268
217
|
item.key = columnName;
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
let required = _isBoolean(item.required) ? item.required : false;
|
|
272
|
-
if (_isFunction(item.required)) {
|
|
273
|
-
// 列配置预处理阶段没有稳定行上下文,required 函数交给 RenderField 内按行计算
|
|
218
|
+
let required = isBoolean(item.required) ? item.required : false;
|
|
219
|
+
if (isFunction(item.required)) {
|
|
274
220
|
required = false;
|
|
275
221
|
}
|
|
276
|
-
|
|
277
|
-
// 列隐藏使用 antd 原生 column.hidden(antd 5.13+ 支持),不再依赖 is-hidden 错位定位 hack
|
|
278
222
|
if (hidden) {
|
|
279
223
|
item.hidden = true;
|
|
280
224
|
}
|
|
281
|
-
|
|
282
|
-
// 样式处理(不再写 is-hidden className)
|
|
283
225
|
item.className = classnames({
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
226
|
+
"is-required": required || labelRequired,
|
|
227
|
+
"is-required-left": requiredAlign === "left",
|
|
228
|
+
"is-required-right": requiredAlign === "right",
|
|
287
229
|
[className]: className
|
|
288
230
|
});
|
|
289
|
-
|
|
290
|
-
// 防止重复渲染导致className重复添加
|
|
291
231
|
if (item.className) {
|
|
292
|
-
item.className = [...new Set(item.className.split(
|
|
232
|
+
item.className = [...new Set(item.className.split(" "))].join(" ");
|
|
293
233
|
}
|
|
294
|
-
const _render = (text, record,
|
|
234
|
+
const _render = (text, record, index2) => {
|
|
295
235
|
const _isEditing = !virtualKey || editingKeys.includes(record.rowKey) || record._addFlag;
|
|
296
|
-
let namePath =
|
|
236
|
+
let namePath = isArray(name) ? name : [name];
|
|
297
237
|
if (virtualKey && editingKeys.includes(record.rowKey)) {
|
|
298
238
|
namePath = getNamePath(name, virtualKey);
|
|
299
239
|
}
|
|
300
240
|
const namePathArray = Array.isArray(namePath) ? namePath : [namePath];
|
|
301
|
-
const columnNamePath =
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
let cellName = columnName ? [...namePathArray, index, ...columnNamePath] : [...namePathArray, index];
|
|
241
|
+
const columnNamePath = isArray(columnName) ? columnName : [columnName];
|
|
242
|
+
index2 = tools.calc(firstIndex, "+", index2);
|
|
243
|
+
let cellName = columnName ? [...namePathArray, index2, ...columnNamePath] : [...namePathArray, index2];
|
|
305
244
|
let _text = text;
|
|
306
|
-
|
|
307
|
-
// 当传入组合组件时,name需要重新组合一下,以防names中key与dataIndex重叠
|
|
308
|
-
if (names?.length) {
|
|
245
|
+
if (names == null ? void 0 : names.length) {
|
|
309
246
|
const nextDataIndex = splitNames(names);
|
|
310
247
|
item.dataIndex = nextDataIndex;
|
|
311
248
|
item.key = nextDataIndex;
|
|
312
|
-
cellName = [...namePathArray,
|
|
313
|
-
|
|
314
|
-
_text = names.map(item => record?.[item]);
|
|
249
|
+
cellName = [...namePathArray, index2, nextDataIndex];
|
|
250
|
+
_text = names.map((item2) => record == null ? void 0 : record[item2]);
|
|
315
251
|
}
|
|
316
252
|
if (!_isEditing && ellipsis) {
|
|
317
|
-
return
|
|
318
|
-
text: _text,
|
|
319
|
-
line: 1,
|
|
320
|
-
isResponsiveWidth: true
|
|
321
|
-
});
|
|
253
|
+
return /* @__PURE__ */ jsx(ProTooltip, { text: _text, line: 1, isResponsiveWidth: true });
|
|
322
254
|
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
...config,
|
|
340
|
-
cellName,
|
|
341
|
-
// 单元格formItem的namePath
|
|
342
|
-
_isEditing // 是否正在编辑
|
|
255
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
256
|
+
index2 === 0 && !item.width ? /* @__PURE__ */ jsx("div", { style: { visibility: "hidden", height: 0, paddingLeft: (item == null ? void 0 : item.required) ? 16 : 0 }, children: columnTitle }) : null,
|
|
257
|
+
/* @__PURE__ */ jsx(
|
|
258
|
+
RenderField,
|
|
259
|
+
{
|
|
260
|
+
text: _text,
|
|
261
|
+
record,
|
|
262
|
+
index: index2,
|
|
263
|
+
column: item,
|
|
264
|
+
config: {
|
|
265
|
+
...config,
|
|
266
|
+
cellName,
|
|
267
|
+
// 单元格formItem的namePath
|
|
268
|
+
_isEditing
|
|
269
|
+
// 是否正在编辑
|
|
270
|
+
}
|
|
343
271
|
}
|
|
344
|
-
|
|
345
|
-
});
|
|
272
|
+
)
|
|
273
|
+
] });
|
|
346
274
|
};
|
|
347
275
|
item.render = _render;
|
|
348
|
-
|
|
349
|
-
// 精准控制单元格更新,减少不必要的渲染
|
|
350
276
|
if (!item.shouldCellUpdate) {
|
|
351
|
-
const hasComponent =
|
|
352
|
-
// 函数型动态属性会依赖整行数据(可能是当前列之外的兄弟字段),
|
|
353
|
-
// 这类列在行内任意字段变化时都需重渲染,不能只比对本列 dataIndex
|
|
277
|
+
const hasComponent = isFunction(item.component);
|
|
354
278
|
const hasFunctionDependency = hasRowFunctionDependency(item);
|
|
355
|
-
const columnCacheKey = `${Array.isArray(name) ? name.join(
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
// cloneDeepFilterNode 每次产生新引用,在 shouldCellUpdate 内更新 cache 只会让第一行触发更新,其余行跳过
|
|
359
|
-
const originalFieldProps = columns[index]?.fieldProps;
|
|
360
|
-
const originalDataSourceRef = !_isFunction(originalFieldProps) ? originalFieldProps?.dataSource : undefined;
|
|
279
|
+
const columnCacheKey = `${Array.isArray(name) ? name.join(".") : String(name)}::${String(columnName)}`;
|
|
280
|
+
const originalFieldProps = (_a = columns[index]) == null ? void 0 : _a.fieldProps;
|
|
281
|
+
const originalDataSourceRef = !isFunction(originalFieldProps) ? originalFieldProps == null ? void 0 : originalFieldProps.dataSource : void 0;
|
|
361
282
|
const prevDataSourceRef = cellCaches.dataSourceRef.get(columnCacheKey);
|
|
362
|
-
const dataSourceChanged = originalDataSourceRef !==
|
|
283
|
+
const dataSourceChanged = originalDataSourceRef !== void 0 && prevDataSourceRef !== originalDataSourceRef;
|
|
363
284
|
if (dataSourceChanged) {
|
|
364
285
|
cellCaches.dataSourceRef.set(columnCacheKey, originalDataSourceRef);
|
|
365
286
|
}
|
|
366
|
-
|
|
367
|
-
// Fix 问题2:检测 filterInList 列的行增删,避免行索引移位时 shouldUpdate 闭包中 index 失效
|
|
368
|
-
const filterInListEnabled = !_isFunction(item?.fieldProps) && item?.fieldProps?.filterInList;
|
|
287
|
+
const filterInListEnabled = !isFunction(item == null ? void 0 : item.fieldProps) && ((_b = item == null ? void 0 : item.fieldProps) == null ? void 0 : _b.filterInList);
|
|
369
288
|
let filterListChanged = false;
|
|
370
289
|
if (filterInListEnabled) {
|
|
371
290
|
const currentListLen = config.tableLength ?? 0;
|
|
@@ -376,27 +295,22 @@ export const transformColumns = (columns = [], config, caches) => {
|
|
|
376
295
|
}
|
|
377
296
|
}
|
|
378
297
|
item.shouldCellUpdate = (record, prevRecord) => {
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
if (record
|
|
298
|
+
if (dataSourceChanged)
|
|
299
|
+
return true;
|
|
300
|
+
if (filterListChanged)
|
|
301
|
+
return true;
|
|
302
|
+
if ((record == null ? void 0 : record.rowKey) !== (prevRecord == null ? void 0 : prevRecord.rowKey)) {
|
|
384
303
|
return true;
|
|
385
304
|
}
|
|
386
|
-
|
|
387
|
-
if (record?._rowIndex !== prevRecord?._rowIndex) {
|
|
305
|
+
if ((record == null ? void 0 : record._rowIndex) !== (prevRecord == null ? void 0 : prevRecord._rowIndex)) {
|
|
388
306
|
return true;
|
|
389
307
|
}
|
|
390
|
-
|
|
391
|
-
if (record?._dragIndex !== prevRecord?._dragIndex) {
|
|
308
|
+
if ((record == null ? void 0 : record._dragIndex) !== (prevRecord == null ? void 0 : prevRecord._dragIndex)) {
|
|
392
309
|
return true;
|
|
393
310
|
}
|
|
394
|
-
|
|
395
|
-
if (virtualKey && record?._isEditing !== prevRecord?._isEditing) {
|
|
311
|
+
if (virtualKey && (record == null ? void 0 : record._isEditing) !== (prevRecord == null ? void 0 : prevRecord._isEditing)) {
|
|
396
312
|
return true;
|
|
397
313
|
}
|
|
398
|
-
// 动态 component 函数引用变化说明外部依赖(如异步 list)已更新,必须重渲染
|
|
399
|
-
// 即使行数据未变,旧闭包仍持有过时的外部状态
|
|
400
314
|
if (hasComponent) {
|
|
401
315
|
const prevComponentRef = cellCaches.componentRef.get(columnCacheKey);
|
|
402
316
|
const currentComponentRef = item.component;
|
|
@@ -405,28 +319,26 @@ export const transformColumns = (columns = [], config, caches) => {
|
|
|
405
319
|
return true;
|
|
406
320
|
}
|
|
407
321
|
}
|
|
408
|
-
// 函数型动态属性(component/fieldProps/rules/required/disabled/isEditable/valueType/viewRender)
|
|
409
|
-
// 可能依赖行内其他字段(兄弟字段),需比较整行;
|
|
410
|
-
// 同引用原地修改时 isEqual 恒为 true,无法感知,必须强制重渲染
|
|
411
322
|
if (hasFunctionDependency) {
|
|
412
323
|
if (record === prevRecord) {
|
|
413
324
|
return true;
|
|
414
325
|
}
|
|
415
326
|
return !isRecordShallowEqual(record, prevRecord);
|
|
416
327
|
}
|
|
417
|
-
const
|
|
418
|
-
if (!
|
|
419
|
-
|
|
328
|
+
const key2 = item.dataIndex || item.key;
|
|
329
|
+
if (!key2)
|
|
330
|
+
return true;
|
|
331
|
+
const keyChanged = (record == null ? void 0 : record[key2]) !== (prevRecord == null ? void 0 : prevRecord[key2]);
|
|
420
332
|
return keyChanged;
|
|
421
333
|
};
|
|
422
334
|
}
|
|
423
335
|
});
|
|
424
336
|
if (disabled || isView) {
|
|
425
|
-
|
|
426
|
-
nextColumns = nextColumns.filter(item => item.title !== locale.ProEditTable.operation);
|
|
337
|
+
nextColumns = nextColumns.filter((item) => item.title !== locale.ProEditTable.operation);
|
|
427
338
|
} else {
|
|
428
|
-
const validateKeys = nextColumns.filter(i => i.rules || i.required).map(item => {
|
|
429
|
-
|
|
339
|
+
const validateKeys = nextColumns.filter((i) => i.rules || i.required).map((item) => {
|
|
340
|
+
var _a;
|
|
341
|
+
if ((_a = item.names) == null ? void 0 : _a.length) {
|
|
430
342
|
const nextDataIndex = splitNames(item.names);
|
|
431
343
|
item.dataIndex = nextDataIndex;
|
|
432
344
|
item.key = nextDataIndex;
|
|
@@ -435,11 +347,13 @@ export const transformColumns = (columns = [], config, caches) => {
|
|
|
435
347
|
});
|
|
436
348
|
const actionColumn = getActionColumn({
|
|
437
349
|
...config,
|
|
438
|
-
validateKeys
|
|
350
|
+
validateKeys
|
|
351
|
+
// 需要校验的单元格的formItem的name
|
|
439
352
|
});
|
|
440
353
|
actionColumn && nextColumns.push(actionColumn);
|
|
441
354
|
}
|
|
442
|
-
|
|
443
|
-
// 渲染操作列
|
|
444
355
|
return nextColumns;
|
|
445
|
-
};
|
|
356
|
+
};
|
|
357
|
+
export {
|
|
358
|
+
transformColumns
|
|
359
|
+
};
|