@zat-design/sisyphus-react 4.0.0-beta.7 → 4.0.0-beta.9
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 +1 -1
- package/dist/less.esm.css +1 -1
- package/es/ProEditTable/components/RcTable/DraggableTable.js +5 -3
- package/es/ProEditTable/components/RenderField/index.js +44 -9
- package/es/ProEditTable/index.js +11 -9
- package/es/ProEditTable/propsType.d.ts +6 -0
- package/es/ProEditTable/style/index.less +9 -3
- package/es/ProEditTable/utils/useShouldUpdateForTable.d.ts +15 -0
- package/es/ProEditTable/utils/useShouldUpdateForTable.js +132 -0
- package/es/ProForm/components/combination/FormList/components/ActionButton.d.ts +1 -0
- package/es/ProForm/components/combination/FormList/components/ActionButton.js +84 -3
- package/es/ProForm/components/combination/FormList/components/BlockFields.d.ts +2 -0
- package/es/ProForm/components/combination/FormList/components/BlockFields.js +63 -6
- package/es/ProForm/components/combination/FormList/components/Empty.js +11 -2
- package/es/ProForm/components/combination/FormList/components/LineFields.d.ts +1 -0
- package/es/ProForm/components/combination/FormList/components/LineFields.js +4 -2
- package/es/ProForm/components/combination/FormList/components/ToolbarButton.js +38 -9
- package/es/ProForm/components/combination/FormList/index.js +67 -57
- package/es/ProForm/components/combination/FormList/propsType.d.ts +7 -2
- package/es/ProForm/components/combination/FormList/style/index.less +41 -0
- package/es/ProForm/components/render/RenderFields.js +2 -1
- package/es/ProForm/index.js +1 -1
- package/es/ProForm/propsType.d.ts +1 -0
- package/es/ProForm/utils/useShouldUpdate.js +1 -2
- package/es/ProForm/utils/useWatch.js +3 -3
- package/es/ProLayout/components/Layout/Menu/FoldMenu/index.js +19 -9
- package/es/ProLayout/components/Layout/Menu/OpenMenu/index.js +6 -8
- package/es/ProLayout/components/ProHeader/index.js +19 -15
- package/es/ProTable/hooks/useAntdTable.js +52 -29
- package/es/ProTabs/style/index.less +5 -1
- package/es/utils/index.js +13 -1
- package/lib/ProEditTable/components/RcTable/DraggableTable.js +5 -3
- package/lib/ProEditTable/components/RenderField/index.js +44 -9
- package/lib/ProEditTable/index.js +11 -9
- package/lib/ProEditTable/propsType.d.ts +6 -0
- package/lib/ProEditTable/style/index.less +9 -3
- package/lib/ProEditTable/utils/useShouldUpdateForTable.d.ts +15 -0
- package/lib/ProEditTable/utils/useShouldUpdateForTable.js +139 -0
- package/lib/ProForm/components/combination/FormList/components/ActionButton.d.ts +1 -0
- package/lib/ProForm/components/combination/FormList/components/ActionButton.js +84 -3
- package/lib/ProForm/components/combination/FormList/components/BlockFields.d.ts +2 -0
- package/lib/ProForm/components/combination/FormList/components/BlockFields.js +62 -6
- package/lib/ProForm/components/combination/FormList/components/Empty.js +11 -2
- package/lib/ProForm/components/combination/FormList/components/LineFields.d.ts +1 -0
- package/lib/ProForm/components/combination/FormList/components/LineFields.js +4 -2
- package/lib/ProForm/components/combination/FormList/components/ToolbarButton.js +38 -9
- package/lib/ProForm/components/combination/FormList/index.js +67 -57
- package/lib/ProForm/components/combination/FormList/propsType.d.ts +7 -2
- package/lib/ProForm/components/combination/FormList/style/index.less +41 -0
- package/lib/ProForm/components/render/RenderFields.js +2 -1
- package/lib/ProForm/index.js +1 -1
- package/lib/ProForm/propsType.d.ts +1 -0
- package/lib/ProForm/utils/useShouldUpdate.js +1 -2
- package/lib/ProForm/utils/useWatch.js +3 -3
- package/lib/ProLayout/components/Layout/Menu/FoldMenu/index.js +18 -8
- package/lib/ProLayout/components/Layout/Menu/OpenMenu/index.js +5 -7
- package/lib/ProLayout/components/ProHeader/index.js +19 -15
- package/lib/ProTable/hooks/useAntdTable.js +52 -29
- package/lib/ProTabs/style/index.less +5 -1
- package/lib/utils/index.js +13 -1
- package/package.json +3 -4
|
@@ -149,13 +149,64 @@ function useAntdTable(service, options, useRequestOptions) {
|
|
|
149
149
|
selectedRowKeys: []
|
|
150
150
|
});
|
|
151
151
|
};
|
|
152
|
+
var resetParams = () => {
|
|
153
|
+
setState({
|
|
154
|
+
searchValues: {},
|
|
155
|
+
allSelected: false,
|
|
156
|
+
selectedRecords: [],
|
|
157
|
+
selectedRowKeys: [],
|
|
158
|
+
extraFilter: {
|
|
159
|
+
filters: undefined,
|
|
160
|
+
sorter: undefined
|
|
161
|
+
}
|
|
162
|
+
});
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
// 重置查询条件: 页码还原、勾选清空
|
|
166
|
+
var onReset = refresh => {
|
|
167
|
+
form === null || form === void 0 || form.resetFields();
|
|
168
|
+
var newPage = {
|
|
169
|
+
pageNum: 1,
|
|
170
|
+
pageSize: page.pageSize
|
|
171
|
+
};
|
|
172
|
+
resetParams();
|
|
173
|
+
if (isResetQuery || refresh) {
|
|
174
|
+
onPageChange(newPage);
|
|
175
|
+
run(getTransformParams({
|
|
176
|
+
page: newPage
|
|
177
|
+
}));
|
|
178
|
+
}
|
|
179
|
+
};
|
|
152
180
|
|
|
153
181
|
/**
|
|
154
182
|
* 手动触发时,手动调用run
|
|
155
183
|
*/
|
|
156
184
|
useEffect(() => {
|
|
157
185
|
if (!(useRequestOptions !== null && useRequestOptions !== void 0 && useRequestOptions.manual)) {
|
|
158
|
-
|
|
186
|
+
onReset(true);
|
|
187
|
+
}
|
|
188
|
+
}, [useRequestOptions === null || useRequestOptions === void 0 ? void 0 : useRequestOptions.manual, curExtraParams, curService]);
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* 手动触发时,手动调用run
|
|
192
|
+
*/
|
|
193
|
+
useEffect(() => {
|
|
194
|
+
if (!(useRequestOptions !== null && useRequestOptions !== void 0 && useRequestOptions.manual)) {
|
|
195
|
+
// 当 extraParams 变化时,重置分页和选中状态
|
|
196
|
+
onPageChange(initPage);
|
|
197
|
+
setState({
|
|
198
|
+
searchValues: {},
|
|
199
|
+
allSelected: false,
|
|
200
|
+
selectedRecords: [],
|
|
201
|
+
selectedRowKeys: [],
|
|
202
|
+
extraFilter: {
|
|
203
|
+
filters: undefined,
|
|
204
|
+
sorter: undefined
|
|
205
|
+
}
|
|
206
|
+
});
|
|
207
|
+
run(getTransformParams({
|
|
208
|
+
page: initPage
|
|
209
|
+
}));
|
|
159
210
|
}
|
|
160
211
|
}, [useRequestOptions === null || useRequestOptions === void 0 ? void 0 : useRequestOptions.manual, curExtraParams, curService]);
|
|
161
212
|
useDeepCompareEffect(() => {
|
|
@@ -265,34 +316,6 @@ function useAntdTable(service, options, useRequestOptions) {
|
|
|
265
316
|
page: newPage
|
|
266
317
|
}, extraFilter), _values)));
|
|
267
318
|
};
|
|
268
|
-
var resetParams = page => {
|
|
269
|
-
setState({
|
|
270
|
-
searchValues: {},
|
|
271
|
-
allSelected: false,
|
|
272
|
-
selectedRecords: [],
|
|
273
|
-
selectedRowKeys: [],
|
|
274
|
-
extraFilter: {
|
|
275
|
-
filters: undefined,
|
|
276
|
-
sorter: undefined
|
|
277
|
-
}
|
|
278
|
-
});
|
|
279
|
-
};
|
|
280
|
-
|
|
281
|
-
// 重置查询条件: 页码还原、勾选清空
|
|
282
|
-
var onReset = () => {
|
|
283
|
-
form === null || form === void 0 || form.resetFields();
|
|
284
|
-
var newPage = {
|
|
285
|
-
pageNum: 1,
|
|
286
|
-
pageSize: page.pageSize
|
|
287
|
-
};
|
|
288
|
-
resetParams(newPage);
|
|
289
|
-
if (isResetQuery) {
|
|
290
|
-
onPageChange(newPage);
|
|
291
|
-
run(getTransformParams({
|
|
292
|
-
page: newPage
|
|
293
|
-
}));
|
|
294
|
-
}
|
|
295
|
-
};
|
|
296
319
|
var refreshPage = res => {
|
|
297
320
|
var transformResult = transformResponse ? transformResponse(res) : res || {};
|
|
298
321
|
var _ref3 = isListResult(transformResult) ? transformResult : (transformResult === null || transformResult === void 0 ? void 0 : transformResult.data) || {},
|
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
.pro-tabs-card-left {
|
|
7
7
|
width: 84px !important;
|
|
8
8
|
}
|
|
9
|
+
.pro-tabs-card-right {
|
|
10
|
+
width: 24px !important;
|
|
11
|
+
}
|
|
9
12
|
.pro-tabs-card-right img {
|
|
10
13
|
width: 24px !important;
|
|
11
14
|
}
|
|
@@ -94,7 +97,7 @@
|
|
|
94
97
|
|
|
95
98
|
.pro-tabs-card-right {
|
|
96
99
|
display: flex;
|
|
97
|
-
|
|
100
|
+
width: 48px;
|
|
98
101
|
img {
|
|
99
102
|
width: 48px;
|
|
100
103
|
}
|
|
@@ -123,6 +126,7 @@
|
|
|
123
126
|
width: 200px;
|
|
124
127
|
padding: calc(9px * var(--zaui-size; 1)) 16px calc(9px * var(--zaui-size; 1)) 24px;
|
|
125
128
|
border: 1px solid var(--zaui-line, #dddddd);
|
|
129
|
+
border-radius: var(--zaui-border-radius, 8px);
|
|
126
130
|
|
|
127
131
|
.pro-tabs-card-left {
|
|
128
132
|
width: 104px;
|
package/es/utils/index.js
CHANGED
|
@@ -4,10 +4,22 @@ import { isFunction } from 'lodash';
|
|
|
4
4
|
var EMPTY_VALUE = [undefined, null, ''];
|
|
5
5
|
|
|
6
6
|
// 自定义深比对 如果两边都是函数类型则认为相等
|
|
7
|
+
// 对于 React 元素,不直接认为相等,而是让 lodash 继续进行深度比较
|
|
7
8
|
export var customEqualForFunction = (value, other) => {
|
|
8
|
-
|
|
9
|
+
// 只有当两边都是函数时才认为相等
|
|
10
|
+
if (isFunction(value) && isFunction(other)) {
|
|
9
11
|
return true;
|
|
10
12
|
}
|
|
13
|
+
// 对于 React 元素,返回 undefined 让 isEqualWith 继续使用默认比较逻辑
|
|
14
|
+
// 这样会比较 React 元素的 type、props 等属性
|
|
15
|
+
if ( /*#__PURE__*/React.isValidElement(value) && /*#__PURE__*/React.isValidElement(other)) {
|
|
16
|
+
// 比较 React 元素的类型和关键 props
|
|
17
|
+
if (value.type !== other.type) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
// 对于相同类型的 React 元素,返回 undefined 让 isEqualWith 继续深度比较 props
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
11
23
|
};
|
|
12
24
|
|
|
13
25
|
/**
|
|
@@ -45,8 +45,9 @@ var Row = props => {
|
|
|
45
45
|
ref: setNodeRef,
|
|
46
46
|
style: style
|
|
47
47
|
}, attributes), {}, {
|
|
48
|
-
children: _react.default.Children.map(children, child => {
|
|
49
|
-
|
|
48
|
+
children: _react.default.Children.map(children, (child, index) => {
|
|
49
|
+
// 在第一列(通常是rowSelection列)显示拖拽图标
|
|
50
|
+
if (index === 0 && !disabled) {
|
|
50
51
|
var _restProps$dataRowD;
|
|
51
52
|
var _ref = (child === null || child === void 0 ? void 0 : child.props) || {},
|
|
52
53
|
render = _ref.render,
|
|
@@ -67,7 +68,8 @@ var Row = props => {
|
|
|
67
68
|
}, listeners)) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_ProIcon.default, {
|
|
68
69
|
size: 20
|
|
69
70
|
}), props['data-hide'] ? null : render === null || render === void 0 ? void 0 : render(null, record, renderIndex)]
|
|
70
|
-
})
|
|
71
|
+
}),
|
|
72
|
+
className: 'pro-edit-table-drag-wrapper-cell'
|
|
71
73
|
});
|
|
72
74
|
}
|
|
73
75
|
return child;
|
|
@@ -28,6 +28,7 @@ var _utils2 = require("../../../ProForm/utils");
|
|
|
28
28
|
var _ConfirmWrapper = _interopRequireDefault(require("../../../ProForm/components/render/ConfirmWrapper"));
|
|
29
29
|
var _getDefaultProps = require("../../utils/getDefaultProps");
|
|
30
30
|
var _ListChangedWrapper = _interopRequireDefault(require("./ListChangedWrapper"));
|
|
31
|
+
var _useShouldUpdateForTable = _interopRequireDefault(require("../../utils/useShouldUpdateForTable"));
|
|
31
32
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
32
33
|
var _excluded = ["type", "valueType", "names", "fieldProps", "labelRequired", "editRender", "component", "viewRender", "title", "originTitle", "label", "dataIndex", "formItemProps", "isEditable", "required", "rules", "onDiff", "className", "trim", "confirm", "dependencies", "desensitization"];
|
|
33
34
|
/* eslint-disable prefer-destructuring */
|
|
@@ -65,8 +66,6 @@ var RenderField = _ref => {
|
|
|
65
66
|
dependencies = column.dependencies,
|
|
66
67
|
desensitization = column.desensitization,
|
|
67
68
|
resetProps = (0, _objectWithoutProperties2.default)(column, _excluded);
|
|
68
|
-
// editRender弃用使用component同ProForm
|
|
69
|
-
var _editRender = component || editRender;
|
|
70
69
|
var mode = config.mode,
|
|
71
70
|
cellName = config.cellName,
|
|
72
71
|
cellNamePath = config.cellNamePath,
|
|
@@ -83,13 +82,17 @@ var RenderField = _ref => {
|
|
|
83
82
|
validateTrigger = _config$validateTrigg === void 0 ? ['onChange', 'onBlur', 'onSubmit'] : _config$validateTrigg,
|
|
84
83
|
otherProps = config.otherProps,
|
|
85
84
|
diffConfig = config.diffConfig,
|
|
86
|
-
getIsNew = config.getIsNew
|
|
85
|
+
getIsNew = config.getIsNew,
|
|
86
|
+
shouldUpdateDebounce = config.shouldUpdateDebounce;
|
|
87
87
|
var _fieldProps = fieldProps || formItemProps || {};
|
|
88
88
|
var _rules = rules || [];
|
|
89
89
|
var _required = required;
|
|
90
90
|
var _valueType = valueType;
|
|
91
91
|
var _disabled = false;
|
|
92
92
|
var _desensitization = desensitization || [];
|
|
93
|
+
|
|
94
|
+
// editRender弃用使用component同ProForm
|
|
95
|
+
var _editRender = component || editRender;
|
|
93
96
|
var isCell = mode === 'cell';
|
|
94
97
|
if (isCell) {
|
|
95
98
|
record['is-view'] = !(0, _lodash.isEqual)(cellNamePath, cellName);
|
|
@@ -119,21 +122,34 @@ var RenderField = _ref => {
|
|
|
119
122
|
// 行参数 - 使用useMemo优化
|
|
120
123
|
var rowParams = (0, _react.useMemo)(() => [currentValue, rowData, options], [currentValue, rowData, options]);
|
|
121
124
|
|
|
125
|
+
// 使用 hook 处理动态属性(带选择性防抖)
|
|
126
|
+
var dynamicProps = (0, _useShouldUpdateForTable.default)({
|
|
127
|
+
rowParams,
|
|
128
|
+
column,
|
|
129
|
+
shouldUpdateDebounce
|
|
130
|
+
});
|
|
131
|
+
|
|
122
132
|
// required & rules & fieldProps & disabled & valueType 函数化处理
|
|
133
|
+
// 优先使用 hook 返回的值,fallback 到原始值
|
|
123
134
|
if ((0, _lodash.isFunction)(required)) {
|
|
124
|
-
|
|
135
|
+
var _dynamicProps$require;
|
|
136
|
+
_required = (_dynamicProps$require = dynamicProps.required) !== null && _dynamicProps$require !== void 0 ? _dynamicProps$require : required(...rowParams);
|
|
125
137
|
}
|
|
126
138
|
if ((0, _lodash.isFunction)(fieldProps)) {
|
|
127
|
-
|
|
139
|
+
var _dynamicProps$fieldPr;
|
|
140
|
+
_fieldProps = (_dynamicProps$fieldPr = dynamicProps.fieldProps) !== null && _dynamicProps$fieldPr !== void 0 ? _dynamicProps$fieldPr : fieldProps(...rowParams);
|
|
128
141
|
}
|
|
129
142
|
if ((0, _lodash.isFunction)(rules)) {
|
|
130
|
-
|
|
143
|
+
var _dynamicProps$rules;
|
|
144
|
+
_rules = (_dynamicProps$rules = dynamicProps.rules) !== null && _dynamicProps$rules !== void 0 ? _dynamicProps$rules : rules(...rowParams);
|
|
131
145
|
}
|
|
132
146
|
if ((0, _lodash.isFunction)(valueType)) {
|
|
133
|
-
|
|
147
|
+
var _dynamicProps$valueTy;
|
|
148
|
+
_valueType = (_dynamicProps$valueTy = dynamicProps.valueType) !== null && _dynamicProps$valueTy !== void 0 ? _dynamicProps$valueTy : valueType(...rowParams);
|
|
134
149
|
}
|
|
135
150
|
if ((0, _lodash.isFunction)(desensitization)) {
|
|
136
|
-
|
|
151
|
+
var _dynamicProps$desensi;
|
|
152
|
+
_desensitization = (_dynamicProps$desensi = dynamicProps.desensitization) !== null && _dynamicProps$desensi !== void 0 ? _dynamicProps$desensi : desensitization(...rowParams);
|
|
137
153
|
}
|
|
138
154
|
|
|
139
155
|
// 获取最终的disabled
|
|
@@ -145,8 +161,11 @@ var RenderField = _ref => {
|
|
|
145
161
|
columnFieldProps: _fieldProps,
|
|
146
162
|
params: rowParams
|
|
147
163
|
});
|
|
164
|
+
|
|
165
|
+
// isEditable 处理 - 优先使用 hook 返回的值
|
|
148
166
|
if ((0, _lodash.isFunction)(isEditable)) {
|
|
149
|
-
|
|
167
|
+
var _dynamicProps$isEdita;
|
|
168
|
+
isEditable = (_dynamicProps$isEdita = dynamicProps.isEditable) !== null && _dynamicProps$isEdita !== void 0 ? _dynamicProps$isEdita : isEditable(...rowParams);
|
|
150
169
|
}
|
|
151
170
|
|
|
152
171
|
// 是否只读文本
|
|
@@ -763,5 +782,21 @@ var _default = exports.default = /*#__PURE__*/(0, _react.memo)(RenderField, (pre
|
|
|
763
782
|
return false;
|
|
764
783
|
}
|
|
765
784
|
}
|
|
785
|
+
|
|
786
|
+
// 特殊处理:当使用自定义 component 函数时,比较整个 record 对象
|
|
787
|
+
// 因为自定义组件可能依赖 record 中的其他字段(不只是当前列的 dataIndex)
|
|
788
|
+
if ((0, _lodash.isFunction)(prevColumn === null || prevColumn === void 0 ? void 0 : prevColumn.component) || (0, _lodash.isFunction)(nextColumn === null || nextColumn === void 0 ? void 0 : nextColumn.component)) {
|
|
789
|
+
// 浅比较 record 的所有属性
|
|
790
|
+
var prevKeys = Object.keys(prevRecord || {});
|
|
791
|
+
var nextKeys = Object.keys(nextRecord || {});
|
|
792
|
+
if (prevKeys.length !== nextKeys.length) {
|
|
793
|
+
return false;
|
|
794
|
+
}
|
|
795
|
+
|
|
796
|
+
// 使用 some 方法代替 for 循环
|
|
797
|
+
if (prevKeys.some(key => (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord[key]) !== (nextRecord === null || nextRecord === void 0 ? void 0 : nextRecord[key]))) {
|
|
798
|
+
return false;
|
|
799
|
+
}
|
|
800
|
+
}
|
|
766
801
|
return true;
|
|
767
802
|
});
|
|
@@ -26,7 +26,7 @@ var _RcTable = require("./components/RcTable");
|
|
|
26
26
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
27
27
|
var _excluded = ["value", "onChange", "onDrag", "onDragEnd", "className", "columns", "mode", "stripe", "draggable", "disabled", "insertType", "emptyBtnText", "actionWidth", "actionProps", "toolbarProps", "toolbarSticky", "rowSelection", "onlyOneLineMsg", "deletePoConfirmMsg", "mulDeletePoConfirmMsg", "requiredAlign", "summary", "max", "headerRender", "pagination", "rowKey", "rowDisabled", "rowDraggable", "footerRender", "scroll", "actionDirection", "diffConfig"];
|
|
28
28
|
var ProEditTable = (_ref, ref) => {
|
|
29
|
-
var _resetProps$id, _resetProps$id$split, _themeConfig$data2, _resetProps$otherProp;
|
|
29
|
+
var _resetProps$id, _resetProps$id$split, _ref2, _formFieldProps$shoul, _themeConfig$data2, _resetProps$otherProp;
|
|
30
30
|
var _ref$value = _ref.value,
|
|
31
31
|
value = _ref$value === void 0 ? [] : _ref$value,
|
|
32
32
|
onChange = _ref.onChange,
|
|
@@ -79,6 +79,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
79
79
|
var affixRef = (0, _react.useRef)(null);
|
|
80
80
|
var form = contentForm || (formFieldProps === null || formFieldProps === void 0 ? void 0 : formFieldProps.form) || (resetProps === null || resetProps === void 0 ? void 0 : resetProps.form);
|
|
81
81
|
var name = (formFieldProps === null || formFieldProps === void 0 ? void 0 : formFieldProps.name) || (resetProps === null || resetProps === void 0 ? void 0 : resetProps.name) || (resetProps === null || resetProps === void 0 || (_resetProps$id = resetProps.id) === null || _resetProps$id === void 0 || (_resetProps$id$split = _resetProps$id.split) === null || _resetProps$id$split === void 0 ? void 0 : _resetProps$id$split.call(_resetProps$id, '_'));
|
|
82
|
+
var shouldUpdateDebounce = (_ref2 = (_formFieldProps$shoul = formFieldProps === null || formFieldProps === void 0 ? void 0 : formFieldProps.shouldUpdateDebounce) !== null && _formFieldProps$shoul !== void 0 ? _formFieldProps$shoul : resetProps === null || resetProps === void 0 ? void 0 : resetProps.shouldUpdateDebounce) !== null && _ref2 !== void 0 ? _ref2 : 200;
|
|
82
83
|
var _formFieldProps$isVie = formFieldProps.isView,
|
|
83
84
|
isView = _formFieldProps$isVie === void 0 ? false : _formFieldProps$isVie,
|
|
84
85
|
_formFieldProps$viewE = formFieldProps.viewEmpty,
|
|
@@ -101,8 +102,8 @@ var ProEditTable = (_ref, ref) => {
|
|
|
101
102
|
_useLocalStorageState2 = (0, _slicedToArray2.default)(_useLocalStorageState, 1),
|
|
102
103
|
themeConfig = _useLocalStorageState2[0];
|
|
103
104
|
var requiredAlign = (0, _react.useMemo)(() => {
|
|
104
|
-
var
|
|
105
|
-
return (
|
|
105
|
+
var _ref3, _themeConfig$data$zau, _themeConfig$data;
|
|
106
|
+
return (_ref3 = (_themeConfig$data$zau = themeConfig === null || themeConfig === void 0 || (_themeConfig$data = themeConfig.data) === null || _themeConfig$data === void 0 ? void 0 : _themeConfig$data.zauiFormAlign) !== null && _themeConfig$data$zau !== void 0 ? _themeConfig$data$zau : configRequiredAlign) !== null && _ref3 !== void 0 ? _ref3 : 'left';
|
|
106
107
|
}, [themeConfig === null || themeConfig === void 0 || (_themeConfig$data2 = themeConfig.data) === null || _themeConfig$data2 === void 0 ? void 0 : _themeConfig$data2.zauiFormAlign, configRequiredAlign]);
|
|
107
108
|
var _useSetState = (0, _ahooks.useSetState)({
|
|
108
109
|
cellNamePath: [],
|
|
@@ -144,8 +145,8 @@ var ProEditTable = (_ref, ref) => {
|
|
|
144
145
|
var getRowKey = (0, _react.useCallback)(record => {
|
|
145
146
|
var key = record.rowKey || (0, _tools.getRandom)();
|
|
146
147
|
if (rowKey) {
|
|
147
|
-
var
|
|
148
|
-
key = (
|
|
148
|
+
var _ref4;
|
|
149
|
+
key = (_ref4 = (0, _lodash.isFunction)(rowKey) ? rowKey(record) : record[rowKey]) !== null && _ref4 !== void 0 ? _ref4 : key;
|
|
149
150
|
}
|
|
150
151
|
return key;
|
|
151
152
|
}, [rowKey]);
|
|
@@ -180,7 +181,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
180
181
|
|
|
181
182
|
// 分页变更
|
|
182
183
|
var handlePageChange = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
183
|
-
var
|
|
184
|
+
var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(current, pageSize) {
|
|
184
185
|
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
|
185
186
|
while (1) switch (_context.prev = _context.next) {
|
|
186
187
|
case 0:
|
|
@@ -226,7 +227,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
226
227
|
}, _callee, null, [[0, 10]]);
|
|
227
228
|
}));
|
|
228
229
|
return function (_x, _x2) {
|
|
229
|
-
return
|
|
230
|
+
return _ref5.apply(this, arguments);
|
|
230
231
|
};
|
|
231
232
|
}(), [pagination, page.pageSize, form, name]);
|
|
232
233
|
var config = (0, _objectSpread2.default)({
|
|
@@ -263,6 +264,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
263
264
|
rowDisabled,
|
|
264
265
|
actionDirection,
|
|
265
266
|
diffConfig: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, resetProps === null || resetProps === void 0 || (_resetProps$otherProp = resetProps.otherProps) === null || _resetProps$otherProp === void 0 ? void 0 : _resetProps$otherProp.diffConfig), diffConfig),
|
|
267
|
+
shouldUpdateDebounce,
|
|
266
268
|
getIsNew,
|
|
267
269
|
handlePageChange
|
|
268
270
|
}, resetProps);
|
|
@@ -323,7 +325,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
323
325
|
|
|
324
326
|
// 空列表状态
|
|
325
327
|
var emptyDom = (0, _react.useMemo)(() => () => {
|
|
326
|
-
var _filter,
|
|
328
|
+
var _filter, _ref6;
|
|
327
329
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
328
330
|
className: "com-empty",
|
|
329
331
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
|
|
@@ -334,7 +336,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
334
336
|
className: "content",
|
|
335
337
|
children: disabled || isForbiddenBtn('add') ? _locale.default.ProEditTable.noData : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
336
338
|
children: [_locale.default.ProEditTable.noData, "\uFF0C", /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.RenderToolbar, (0, _objectSpread2.default)({}, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, config), {}, {
|
|
337
|
-
toolbarProps: toolbarProps === null || toolbarProps === void 0 || (_filter = (
|
|
339
|
+
toolbarProps: toolbarProps === null || toolbarProps === void 0 || (_filter = (_ref6 = toolbarProps).filter) === null || _filter === void 0 ? void 0 : _filter.call(_ref6, item => item.type === 'add' || (item === null || item === void 0 ? void 0 : item.persistence)),
|
|
338
340
|
dataSource: []
|
|
339
341
|
})))]
|
|
340
342
|
})
|
|
@@ -402,6 +402,12 @@ export interface ProEditTableProps<T = any> extends Omit<TableProps<T>, 'onChang
|
|
|
402
402
|
/** 是否跟随父元素滚动 */
|
|
403
403
|
scrollFollowParent?: boolean;
|
|
404
404
|
};
|
|
405
|
+
/**
|
|
406
|
+
* 动态属性更新防抖时间(毫秒)
|
|
407
|
+
* 用于优化表格编辑时的性能,对 fieldProps、desensitization, required、rules、isEditable, valueType 等属性进行防抖处理, 当设置为 0 时禁用防抖,所有属性立即响应
|
|
408
|
+
* @default 200
|
|
409
|
+
*/
|
|
410
|
+
shouldUpdateDebounce?: number;
|
|
405
411
|
}
|
|
406
412
|
/**
|
|
407
413
|
* 基础操作按钮类型(基于接口)
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
|
|
2
2
|
.pro-edit-table {
|
|
3
|
+
.pro-edit-table-drag-wrapper-cell{
|
|
4
|
+
.@{ant-prefix}-btn{
|
|
5
|
+
&:hover{
|
|
6
|
+
background: transparent;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
}
|
|
3
10
|
td[rowspan]{
|
|
4
11
|
vertical-align: middle !important;
|
|
5
12
|
}
|
|
@@ -81,10 +88,9 @@
|
|
|
81
88
|
|
|
82
89
|
.pro-edit-table-drag-wrapper {
|
|
83
90
|
display: flex;
|
|
84
|
-
|
|
91
|
+
align-items: center;
|
|
85
92
|
.anticon {
|
|
86
|
-
margin-right: var(--zaui-space-size-
|
|
87
|
-
margin-left: var(--zaui-space-size-xs, 4px);
|
|
93
|
+
margin-right: var(--zaui-space-size-xs, 4px);
|
|
88
94
|
cursor: pointer;
|
|
89
95
|
}
|
|
90
96
|
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface UseShouldUpdateForTableProps {
|
|
2
|
+
rowParams: any[];
|
|
3
|
+
column: any;
|
|
4
|
+
shouldUpdateDebounce: number;
|
|
5
|
+
}
|
|
6
|
+
interface Result {
|
|
7
|
+
isEditable: any;
|
|
8
|
+
required: any;
|
|
9
|
+
rules: any;
|
|
10
|
+
fieldProps: any;
|
|
11
|
+
desensitization: any;
|
|
12
|
+
valueType: any;
|
|
13
|
+
}
|
|
14
|
+
declare const useShouldUpdateForTable: (props: UseShouldUpdateForTableProps) => Result;
|
|
15
|
+
export default useShouldUpdateForTable;
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
9
|
+
var _react = require("react");
|
|
10
|
+
var _lodash = require("lodash");
|
|
11
|
+
var _utils = require("../../utils");
|
|
12
|
+
var useShouldUpdateForTable = props => {
|
|
13
|
+
var _isEditableRef$curren, _requiredRef$current, _rulesRef$current, _fieldPropsRef$curren, _desensitizationRef$c, _valueTypeRef$current;
|
|
14
|
+
var rowParams = props.rowParams,
|
|
15
|
+
column = props.column,
|
|
16
|
+
shouldUpdateDebounce = props.shouldUpdateDebounce;
|
|
17
|
+
|
|
18
|
+
// refs 存储当前值
|
|
19
|
+
var isEditableRef = (0, _react.useRef)();
|
|
20
|
+
var requiredRef = (0, _react.useRef)();
|
|
21
|
+
var rulesRef = (0, _react.useRef)();
|
|
22
|
+
var fieldPropsRef = (0, _react.useRef)();
|
|
23
|
+
var desensitizationRef = (0, _react.useRef)();
|
|
24
|
+
var valueTypeRef = (0, _react.useRef)();
|
|
25
|
+
var _useState = (0, _react.useState)({}),
|
|
26
|
+
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
27
|
+
reRender = _useState2[1];
|
|
28
|
+
var debouncedUpdateRef = (0, _react.useRef)(null);
|
|
29
|
+
var pendingParamsRef = (0, _react.useRef)(null);
|
|
30
|
+
|
|
31
|
+
// 统一处理所有动态属性的更新
|
|
32
|
+
var processUpdate = params => {
|
|
33
|
+
var hasChange = false;
|
|
34
|
+
|
|
35
|
+
// isEditable 处理
|
|
36
|
+
if ((0, _lodash.isFunction)(column.isEditable)) {
|
|
37
|
+
var newIsEditable = column.isEditable(...params);
|
|
38
|
+
if (isEditableRef.current !== newIsEditable) {
|
|
39
|
+
isEditableRef.current = newIsEditable;
|
|
40
|
+
hasChange = true;
|
|
41
|
+
}
|
|
42
|
+
} else {
|
|
43
|
+
isEditableRef.current = column.isEditable;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
// required 处理
|
|
47
|
+
if ((0, _lodash.isFunction)(column.required)) {
|
|
48
|
+
var newRequired = column.required(...params);
|
|
49
|
+
if (requiredRef.current !== newRequired) {
|
|
50
|
+
requiredRef.current = newRequired;
|
|
51
|
+
hasChange = true;
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
requiredRef.current = column.required;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// rules 处理
|
|
58
|
+
if ((0, _lodash.isFunction)(column.rules)) {
|
|
59
|
+
var newRules = column.rules(...params);
|
|
60
|
+
if (!(0, _lodash.isEqualWith)(rulesRef.current, newRules, _utils.customEqualForFunction)) {
|
|
61
|
+
rulesRef.current = newRules;
|
|
62
|
+
hasChange = true;
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
rulesRef.current = column.rules;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// fieldProps 处理
|
|
69
|
+
if ((0, _lodash.isFunction)(column.fieldProps)) {
|
|
70
|
+
var newFieldProps = column.fieldProps(...params);
|
|
71
|
+
if (!(0, _lodash.isEqualWith)(fieldPropsRef.current, newFieldProps, _utils.customEqualForFunction)) {
|
|
72
|
+
fieldPropsRef.current = newFieldProps;
|
|
73
|
+
hasChange = true;
|
|
74
|
+
}
|
|
75
|
+
} else {
|
|
76
|
+
fieldPropsRef.current = column.fieldProps;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// desensitization 处理
|
|
80
|
+
if ((0, _lodash.isFunction)(column.desensitization)) {
|
|
81
|
+
var newDesensitization = column.desensitization(...params);
|
|
82
|
+
if (!(0, _lodash.isEqualWith)(desensitizationRef.current, newDesensitization)) {
|
|
83
|
+
desensitizationRef.current = newDesensitization;
|
|
84
|
+
hasChange = true;
|
|
85
|
+
}
|
|
86
|
+
} else {
|
|
87
|
+
desensitizationRef.current = column.desensitization;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// valueType 处理
|
|
91
|
+
if ((0, _lodash.isFunction)(column.valueType)) {
|
|
92
|
+
var newValueType = column.valueType(...params);
|
|
93
|
+
if (valueTypeRef.current !== newValueType) {
|
|
94
|
+
valueTypeRef.current = newValueType;
|
|
95
|
+
hasChange = true;
|
|
96
|
+
}
|
|
97
|
+
} else {
|
|
98
|
+
valueTypeRef.current = column.valueType;
|
|
99
|
+
}
|
|
100
|
+
if (hasChange) {
|
|
101
|
+
reRender({});
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// 创建防抖函数(统一处理所有动态属性)
|
|
106
|
+
(0, _react.useEffect)(() => {
|
|
107
|
+
if (shouldUpdateDebounce > 0 && ((0, _lodash.isFunction)(column.isEditable) || (0, _lodash.isFunction)(column.required) || (0, _lodash.isFunction)(column.rules) || (0, _lodash.isFunction)(column.fieldProps) || (0, _lodash.isFunction)(column.desensitization) || (0, _lodash.isFunction)(column.valueType))) {
|
|
108
|
+
debouncedUpdateRef.current = (0, _lodash.debounce)(() => {
|
|
109
|
+
if (pendingParamsRef.current) {
|
|
110
|
+
processUpdate(pendingParamsRef.current);
|
|
111
|
+
pendingParamsRef.current = null;
|
|
112
|
+
}
|
|
113
|
+
}, shouldUpdateDebounce);
|
|
114
|
+
}
|
|
115
|
+
return () => {
|
|
116
|
+
var _debouncedUpdateRef$c;
|
|
117
|
+
(_debouncedUpdateRef$c = debouncedUpdateRef.current) === null || _debouncedUpdateRef$c === void 0 || _debouncedUpdateRef$c.cancel();
|
|
118
|
+
};
|
|
119
|
+
}, [shouldUpdateDebounce, column]);
|
|
120
|
+
|
|
121
|
+
// 统一的属性处理逻辑
|
|
122
|
+
if (shouldUpdateDebounce > 0 && debouncedUpdateRef.current) {
|
|
123
|
+
// 使用防抖延迟更新
|
|
124
|
+
pendingParamsRef.current = rowParams;
|
|
125
|
+
debouncedUpdateRef.current();
|
|
126
|
+
} else {
|
|
127
|
+
// 立即更新(shouldUpdateDebounce = 0 或无防抖函数)
|
|
128
|
+
processUpdate(rowParams);
|
|
129
|
+
}
|
|
130
|
+
return {
|
|
131
|
+
isEditable: (_isEditableRef$curren = isEditableRef.current) !== null && _isEditableRef$curren !== void 0 ? _isEditableRef$curren : column.isEditable,
|
|
132
|
+
required: (_requiredRef$current = requiredRef.current) !== null && _requiredRef$current !== void 0 ? _requiredRef$current : column.required,
|
|
133
|
+
rules: (_rulesRef$current = rulesRef.current) !== null && _rulesRef$current !== void 0 ? _rulesRef$current : column.rules,
|
|
134
|
+
fieldProps: (_fieldPropsRef$curren = fieldPropsRef.current) !== null && _fieldPropsRef$curren !== void 0 ? _fieldPropsRef$curren : column.fieldProps,
|
|
135
|
+
desensitization: (_desensitizationRef$c = desensitizationRef.current) !== null && _desensitizationRef$c !== void 0 ? _desensitizationRef$c : column.desensitization,
|
|
136
|
+
valueType: (_valueTypeRef$current = valueTypeRef.current) !== null && _valueTypeRef$current !== void 0 ? _valueTypeRef$current : column.valueType
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
var _default = exports.default = useShouldUpdateForTable;
|