@zat-design/sisyphus-react 4.1.1 → 4.1.2-beta.1
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/ProDrawerForm/components/ProDrawer/index.js +5 -2
- package/es/ProEditTable/components/RcTable/DraggableTable.js +6 -1
- package/es/ProEditTable/components/RenderField/index.js +18 -11
- package/es/ProEditTable/index.js +76 -69
- package/es/ProEditTable/utils/config.d.ts +1 -1
- package/es/ProEditTable/utils/config.js +16 -9
- package/es/ProEditTable/utils/index.js +14 -1
- package/es/ProForm/components/combination/Container/index.js +2 -1
- package/es/ProForm/components/combination/Group/utils/index.d.ts +10 -10
- package/es/ProLayout/components/ProCollapse/index.js +4 -3
- package/es/ProSelect/index.js +2 -2
- package/lib/ProDrawerForm/components/ProDrawer/index.js +5 -2
- package/lib/ProEditTable/components/RcTable/DraggableTable.js +6 -1
- package/lib/ProEditTable/components/RenderField/index.js +18 -11
- package/lib/ProEditTable/index.js +76 -69
- package/lib/ProEditTable/utils/config.d.ts +1 -1
- package/lib/ProEditTable/utils/config.js +16 -9
- package/lib/ProEditTable/utils/index.js +14 -1
- package/lib/ProForm/components/combination/Container/index.js +2 -1
- package/lib/ProLayout/components/ProCollapse/index.js +6 -3
- package/lib/ProSelect/index.js +2 -2
- package/package.json +1 -1
|
@@ -65,6 +65,8 @@ var ProDrawer = _ref => {
|
|
|
65
65
|
var _ref3 = drawerProps || {},
|
|
66
66
|
drawerMask = _ref3.mask,
|
|
67
67
|
restDrawerProps = _objectWithoutProperties(_ref3, _excluded);
|
|
68
|
+
var drawerWidth = width;
|
|
69
|
+
var drawerSize = restDrawerProps === null || restDrawerProps === void 0 ? void 0 : restDrawerProps.size;
|
|
68
70
|
|
|
69
71
|
// 使用 useEffect 在 open 变更时延迟捕获 初始DOM 快照
|
|
70
72
|
useEffect(() => {
|
|
@@ -241,7 +243,8 @@ var ProDrawer = _ref => {
|
|
|
241
243
|
return defaultFooter;
|
|
242
244
|
};
|
|
243
245
|
return /*#__PURE__*/_jsxs(Drawer, _objectSpread(_objectSpread({
|
|
244
|
-
|
|
246
|
+
width: drawerWidth,
|
|
247
|
+
size: drawerSize,
|
|
245
248
|
open: open,
|
|
246
249
|
mask: drawerMask !== null && drawerMask !== void 0 ? drawerMask : {
|
|
247
250
|
blur: false
|
|
@@ -252,7 +255,7 @@ var ProDrawer = _ref => {
|
|
|
252
255
|
closable: false,
|
|
253
256
|
onClose: onCancel,
|
|
254
257
|
zIndex: zIndex
|
|
255
|
-
}, omit(restDrawerProps, 'width')), {}, {
|
|
258
|
+
}, omit(restDrawerProps, 'width', 'size')), {}, {
|
|
256
259
|
children: [/*#__PURE__*/_jsx("div", {
|
|
257
260
|
className: "pro-drawer-close",
|
|
258
261
|
onClick: onConfirm,
|
|
@@ -18,6 +18,7 @@ import ProIcon from "../../../ProIcon";
|
|
|
18
18
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
19
19
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
20
20
|
var Row = props => {
|
|
21
|
+
var _restProps$className;
|
|
21
22
|
var disabled = props.disabled,
|
|
22
23
|
children = props.children,
|
|
23
24
|
restProps = _objectWithoutProperties(props, _excluded);
|
|
@@ -40,13 +41,17 @@ var Row = props => {
|
|
|
40
41
|
position: 'relative',
|
|
41
42
|
zIndex: 2
|
|
42
43
|
} : {});
|
|
44
|
+
|
|
45
|
+
// 检查是否是空状态占位行
|
|
46
|
+
var isPlaceholderRow = (_restProps$className = restProps.className) === null || _restProps$className === void 0 ? void 0 : _restProps$className.includes('ant-table-placeholder');
|
|
43
47
|
return /*#__PURE__*/_jsx("tr", _objectSpread(_objectSpread(_objectSpread({}, restProps), {}, {
|
|
44
48
|
ref: setNodeRef,
|
|
45
49
|
style: style
|
|
46
50
|
}, attributes), {}, {
|
|
47
51
|
children: React.Children.map(children, (child, index) => {
|
|
48
52
|
// 在第一列(通常是rowSelection列)显示拖拽图标
|
|
49
|
-
|
|
53
|
+
// 如果是占位行,不添加拖拽包装器
|
|
54
|
+
if (index === 0 && !disabled && !isPlaceholderRow) {
|
|
50
55
|
var _restProps$dataRowD;
|
|
51
56
|
var _ref = (child === null || child === void 0 ? void 0 : child.props) || {},
|
|
52
57
|
render = _ref.render,
|
|
@@ -34,7 +34,8 @@ import useShouldUpdateForTable from "../../utils/useShouldUpdateForTable";
|
|
|
34
34
|
/** 列配置中不应透传到 Form.Item 或 DOM 的字段(与 ProForm Render 保持一致) */
|
|
35
35
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
36
36
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
37
|
-
var OMIT_FORM_ITEM_AND_DOM_KEYS = ['format', 'toISOString', 'toCSTString', 'switchValue', 'precision', 'clearNotShow', 'dependNames'
|
|
37
|
+
var OMIT_FORM_ITEM_AND_DOM_KEYS = ['format', 'toISOString', 'toCSTString', 'switchValue', 'precision', 'clearNotShow', 'dependNames', 'shouldCellUpdate' // 表格内部性能优化属性,不应传递给 Form.Item
|
|
38
|
+
];
|
|
38
39
|
var RenderField = _ref => {
|
|
39
40
|
var _type, _type$replace, _fieldProps2, _fieldProps4, _names, _TargetComponent5, _componentProps;
|
|
40
41
|
var value = _ref.text,
|
|
@@ -498,14 +499,16 @@ var RenderField = _ref => {
|
|
|
498
499
|
}
|
|
499
500
|
}
|
|
500
501
|
}
|
|
501
|
-
//
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
502
|
+
// 仅在存在联动逻辑且行数据实际发生变化时触发强制刷新
|
|
503
|
+
if (onFieldChange && !isEqual(orgRow, row)) {
|
|
504
|
+
compatStartTransition(() => {
|
|
505
|
+
setState({
|
|
506
|
+
forceUpdate: {
|
|
507
|
+
rowKey: record === null || record === void 0 ? void 0 : record.rowKey
|
|
508
|
+
}
|
|
509
|
+
});
|
|
507
510
|
});
|
|
508
|
-
}
|
|
511
|
+
}
|
|
509
512
|
case 33:
|
|
510
513
|
case "end":
|
|
511
514
|
return _context.stop();
|
|
@@ -602,11 +605,11 @@ var RenderField = _ref => {
|
|
|
602
605
|
cellNamePath: []
|
|
603
606
|
});
|
|
604
607
|
case 22:
|
|
605
|
-
// 单行编辑时需要
|
|
608
|
+
// 单行编辑时需要 强制更新视图,仅对当前行打标记
|
|
606
609
|
compatStartTransition(() => {
|
|
607
610
|
setState({
|
|
608
611
|
forceUpdate: {
|
|
609
|
-
|
|
612
|
+
rowKey: record === null || record === void 0 ? void 0 : record.rowKey
|
|
610
613
|
}
|
|
611
614
|
});
|
|
612
615
|
});
|
|
@@ -825,7 +828,11 @@ export default /*#__PURE__*/memo(RenderField, (prevProps, nextProps) => {
|
|
|
825
828
|
|
|
826
829
|
// fieldProps 函数化直接更新,无法比对返回值是否一致
|
|
827
830
|
if (isFunction(prevColumn === null || prevColumn === void 0 ? void 0 : prevColumn.fieldProps) && isFunction(nextColumn === null || nextColumn === void 0 ? void 0 : nextColumn.fieldProps)) {
|
|
828
|
-
|
|
831
|
+
var prevFieldProps = prevColumn.fieldProps(prevRecord, prevReactiveParams);
|
|
832
|
+
var nextFieldProps = nextColumn.fieldProps(nextRecord, nextReactiveParams);
|
|
833
|
+
if (!isEqualWith(prevFieldProps, nextFieldProps, customEqualForFunction)) {
|
|
834
|
+
return false;
|
|
835
|
+
}
|
|
829
836
|
}
|
|
830
837
|
|
|
831
838
|
// 通用函数比较方法
|
package/es/ProEditTable/index.js
CHANGED
|
@@ -31,7 +31,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
31
31
|
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
32
32
|
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
33
33
|
var ProEditTable = (_ref, ref) => {
|
|
34
|
-
var _resetProps$id, _resetProps$id$split, _ref2, _formFieldProps$shoul, _themeConfig$data2
|
|
34
|
+
var _resetProps$id, _resetProps$id$split, _ref2, _formFieldProps$shoul, _themeConfig$data2;
|
|
35
35
|
var _ref$value = _ref.value,
|
|
36
36
|
value = _ref$value === void 0 ? [] : _ref$value,
|
|
37
37
|
onChange = _ref.onChange,
|
|
@@ -150,10 +150,13 @@ var ProEditTable = (_ref, ref) => {
|
|
|
150
150
|
var getRowKey = useCallback(record => {
|
|
151
151
|
var key = record.rowKey || getRandom();
|
|
152
152
|
if (rowKey) {
|
|
153
|
-
var
|
|
154
|
-
|
|
153
|
+
var userKey = isFunction(rowKey) ? rowKey(record) : record[rowKey];
|
|
154
|
+
// 检查用户返回的 key 是否有效(不是 null、undefined、NaN 或空字符串)
|
|
155
|
+
if (userKey != null && !Number.isNaN(userKey) && userKey !== '') {
|
|
156
|
+
key = userKey;
|
|
157
|
+
}
|
|
155
158
|
}
|
|
156
|
-
return key;
|
|
159
|
+
return String(key); // 确保返回字符串
|
|
157
160
|
}, [rowKey]);
|
|
158
161
|
var originalValues = useMemo(() => {
|
|
159
162
|
var _originalArr$every, _originalArr$some;
|
|
@@ -186,7 +189,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
186
189
|
|
|
187
190
|
// 分页变更
|
|
188
191
|
var handlePageChange = useCallback( /*#__PURE__*/function () {
|
|
189
|
-
var
|
|
192
|
+
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(current, pageSize) {
|
|
190
193
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
191
194
|
while (1) switch (_context.prev = _context.next) {
|
|
192
195
|
case 0:
|
|
@@ -232,47 +235,50 @@ var ProEditTable = (_ref, ref) => {
|
|
|
232
235
|
}, _callee, null, [[0, 10]]);
|
|
233
236
|
}));
|
|
234
237
|
return function (_x, _x2) {
|
|
235
|
-
return
|
|
238
|
+
return _ref4.apply(this, arguments);
|
|
236
239
|
};
|
|
237
240
|
}(), [pagination, page.pageSize, form, name]);
|
|
238
|
-
var config =
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
241
|
+
var config = useMemo(() => {
|
|
242
|
+
var _resetProps$otherProp;
|
|
243
|
+
return _objectSpread({
|
|
244
|
+
form,
|
|
245
|
+
mode,
|
|
246
|
+
isView,
|
|
247
|
+
viewEmpty,
|
|
248
|
+
disabled,
|
|
249
|
+
cellNamePath,
|
|
250
|
+
forceUpdate,
|
|
251
|
+
insertType,
|
|
252
|
+
emptyBtnText,
|
|
253
|
+
editingKeys,
|
|
254
|
+
actionWidth,
|
|
255
|
+
actionProps,
|
|
256
|
+
toolbarProps,
|
|
257
|
+
setState,
|
|
258
|
+
selectedRowKeys,
|
|
259
|
+
selectedRows,
|
|
260
|
+
onlyOneLineMsg,
|
|
261
|
+
deletePoConfirmMsg,
|
|
262
|
+
mulDeletePoConfirmMsg,
|
|
263
|
+
virtualKey,
|
|
264
|
+
requiredAlign,
|
|
265
|
+
name: isArray(name) ? name : [name],
|
|
266
|
+
// name需要处理成namePath形式,为兼容多路径
|
|
267
|
+
namePath,
|
|
268
|
+
tableRef,
|
|
269
|
+
max,
|
|
270
|
+
tableLength: value === null || value === void 0 ? void 0 : value.length,
|
|
271
|
+
page,
|
|
272
|
+
originalValues,
|
|
273
|
+
prefixCls,
|
|
274
|
+
rowDisabled,
|
|
275
|
+
actionDirection,
|
|
276
|
+
diffConfig: _objectSpread(_objectSpread({}, resetProps === null || resetProps === void 0 || (_resetProps$otherProp = resetProps.otherProps) === null || _resetProps$otherProp === void 0 ? void 0 : _resetProps$otherProp.diffConfig), diffConfig),
|
|
277
|
+
shouldUpdateDebounce,
|
|
278
|
+
getIsNew,
|
|
279
|
+
handlePageChange
|
|
280
|
+
}, resetProps);
|
|
281
|
+
}, [actionDirection, actionProps, actionWidth, cellNamePath, deletePoConfirmMsg, disabled, diffConfig, editingKeys, emptyBtnText, form, forceUpdate, getIsNew, handlePageChange, insertType, isView, max, mode, mulDeletePoConfirmMsg, name, namePath, onlyOneLineMsg, originalValues, prefixCls, requiredAlign, resetProps, rowDisabled, selectedRowKeys, selectedRows, shouldUpdateDebounce, tableRef, toolbarProps, value === null || value === void 0 ? void 0 : value.length, viewEmpty, virtualKey, page]);
|
|
276
282
|
|
|
277
283
|
// 编辑行设置下样式
|
|
278
284
|
var _rowClassName = record => {
|
|
@@ -330,7 +336,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
330
336
|
|
|
331
337
|
// 空列表状态
|
|
332
338
|
var emptyDom = useMemo(() => () => {
|
|
333
|
-
var _filter,
|
|
339
|
+
var _filter, _ref5;
|
|
334
340
|
return /*#__PURE__*/_jsxs("div", {
|
|
335
341
|
className: "com-empty",
|
|
336
342
|
children: [/*#__PURE__*/_jsx("img", {
|
|
@@ -341,7 +347,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
341
347
|
className: "content",
|
|
342
348
|
children: disabled || isForbiddenBtn('add') ? locale.ProEditTable.noData : /*#__PURE__*/_jsxs(_Fragment, {
|
|
343
349
|
children: [locale.ProEditTable.noData, "\uFF0C", /*#__PURE__*/_jsx(RenderToolbar, _objectSpread({}, _objectSpread(_objectSpread({}, config), {}, {
|
|
344
|
-
toolbarProps: toolbarProps === null || toolbarProps === void 0 || (_filter = (
|
|
350
|
+
toolbarProps: toolbarProps === null || toolbarProps === void 0 || (_filter = (_ref5 = toolbarProps).filter) === null || _filter === void 0 ? void 0 : _filter.call(_ref5, item => item.type === 'add' || (item === null || item === void 0 ? void 0 : item.persistence)),
|
|
345
351
|
dataSource: []
|
|
346
352
|
})))]
|
|
347
353
|
})
|
|
@@ -367,7 +373,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
367
373
|
};
|
|
368
374
|
var _columns = useMemo(() => {
|
|
369
375
|
return transformColumns(columns, config);
|
|
370
|
-
}, [
|
|
376
|
+
}, [columns, config]);
|
|
371
377
|
var initDataSource = () => {
|
|
372
378
|
var _value$every, _value$some;
|
|
373
379
|
// 检查每一项是否有 rowKey 或通过 rowKey 字段获取的 key
|
|
@@ -416,6 +422,28 @@ var ProEditTable = (_ref, ref) => {
|
|
|
416
422
|
rowSelection: renderRowSelection()
|
|
417
423
|
}) : summary;
|
|
418
424
|
var TableComponent = draggable ? DraggableTable : BaseTable;
|
|
425
|
+
var tableProps = useMemo(() => ({
|
|
426
|
+
rowKey,
|
|
427
|
+
value,
|
|
428
|
+
headerRender,
|
|
429
|
+
tableRef,
|
|
430
|
+
className: _className,
|
|
431
|
+
columns: _columns,
|
|
432
|
+
renderRowSelection,
|
|
433
|
+
rowClassName: _rowClassName,
|
|
434
|
+
disabled,
|
|
435
|
+
virtualKey,
|
|
436
|
+
editingKeys,
|
|
437
|
+
isHideCheckBox,
|
|
438
|
+
rowDraggable,
|
|
439
|
+
pagination,
|
|
440
|
+
scroll,
|
|
441
|
+
summary: _summary,
|
|
442
|
+
page,
|
|
443
|
+
formatMessage,
|
|
444
|
+
locale,
|
|
445
|
+
handlePageChange
|
|
446
|
+
}), [_className, _columns, _rowClassName, disabled, editingKeys, formatMessage, handlePageChange, headerRender, isHideCheckBox, locale, page, pagination, renderRowSelection, rowDraggable, rowKey, scroll, _summary, tableRef, value, virtualKey]);
|
|
419
447
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
420
448
|
children: [/*#__PURE__*/_jsx(ConfigProvider, {
|
|
421
449
|
renderEmpty: value !== null && value !== void 0 && value.length ? undefined : emptyDom,
|
|
@@ -426,28 +454,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
426
454
|
onDragEnd,
|
|
427
455
|
draggable
|
|
428
456
|
},
|
|
429
|
-
tableProps:
|
|
430
|
-
rowKey,
|
|
431
|
-
value,
|
|
432
|
-
headerRender,
|
|
433
|
-
tableRef,
|
|
434
|
-
className: _className,
|
|
435
|
-
columns: _columns,
|
|
436
|
-
renderRowSelection,
|
|
437
|
-
rowClassName: _rowClassName,
|
|
438
|
-
disabled,
|
|
439
|
-
virtualKey,
|
|
440
|
-
editingKeys,
|
|
441
|
-
isHideCheckBox,
|
|
442
|
-
rowDraggable,
|
|
443
|
-
pagination,
|
|
444
|
-
scroll,
|
|
445
|
-
summary: _summary,
|
|
446
|
-
page,
|
|
447
|
-
formatMessage,
|
|
448
|
-
locale,
|
|
449
|
-
handlePageChange
|
|
450
|
-
}
|
|
457
|
+
tableProps: tableProps
|
|
451
458
|
}))
|
|
452
459
|
}), !isView && value !== null && value !== void 0 && value.length ? toolbarSticky ? /*#__PURE__*/_jsx(Affix, _objectSpread(_objectSpread({
|
|
453
460
|
ref: affixRef
|
|
@@ -16,7 +16,7 @@ export declare const defaultMultipleActionKeys: string[];
|
|
|
16
16
|
export declare const defaultEditingActionKeys: string[];
|
|
17
17
|
export declare const defaultToolbarKeys: string[];
|
|
18
18
|
export declare const actions: {
|
|
19
|
-
edit: ({ record, editingKeys, setState, form, virtualRowName, virtualKey, onlyOneLineMsg
|
|
19
|
+
edit: ({ record, editingKeys, setState, form, virtualRowName, virtualKey, onlyOneLineMsg }: any) => boolean;
|
|
20
20
|
save: ({ record, editingKeys, setState, form, rowName, virtualRowName, result }: any) => Promise<void>;
|
|
21
21
|
cancel: ({ name, record, editingKeys, setState, form, virtualRowName, virtualKey }: any) => void;
|
|
22
22
|
delete: ({ name, record, editingKeys, setState, form, virtualKey, onlyOneLineMsg }: any) => boolean;
|
|
@@ -167,8 +167,8 @@ export var actions = {
|
|
|
167
167
|
},
|
|
168
168
|
add: function () {
|
|
169
169
|
var _add = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref5) {
|
|
170
|
-
var _tableRef$current
|
|
171
|
-
var result, insertType, editingKeys, setState, form, name, virtualName, virtualKey, onlyOneLineMsg, tableRef, _ref5$prefixCls, prefixCls, page, handlePageChange, nextData, rowKey, addData, nextPageNum, nextEditingKeys;
|
|
170
|
+
var _tableRef$current;
|
|
171
|
+
var result, insertType, editingKeys, setState, form, name, virtualName, virtualKey, onlyOneLineMsg, tableRef, _ref5$prefixCls, prefixCls, page, handlePageChange, nextData, rowKey, addData, nextPageNum, nextEditingKeys, tableBody;
|
|
172
172
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
173
173
|
while (1) switch (_context4.prev = _context4.next) {
|
|
174
174
|
case 0:
|
|
@@ -228,17 +228,24 @@ export var actions = {
|
|
|
228
228
|
});
|
|
229
229
|
}
|
|
230
230
|
form.setFieldValue(name, nextData);
|
|
231
|
-
(_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 || (_tableRef$current = _tableRef$current.children[0]) === null || _tableRef$current === void 0
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
231
|
+
tableBody = (_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 || (_tableRef$current = _tableRef$current.children[0]) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.querySelector(`.${prefixCls}-table-body`);
|
|
232
|
+
if (tableBody) {
|
|
233
|
+
// 等待新行渲染完毕再读取 scrollHeight,确保能滚动到真正的底部
|
|
234
|
+
requestAnimationFrame(() => {
|
|
235
|
+
var _tableBody$scrollTo;
|
|
236
|
+
(_tableBody$scrollTo = tableBody.scrollTo) === null || _tableBody$scrollTo === void 0 || _tableBody$scrollTo.call(tableBody, {
|
|
237
|
+
top: insertType === 'before' ? 0 : tableBody.scrollHeight,
|
|
238
|
+
behavior: 'smooth'
|
|
239
|
+
});
|
|
240
|
+
});
|
|
241
|
+
}
|
|
235
242
|
if (!virtualKey) {
|
|
236
|
-
_context4.next =
|
|
243
|
+
_context4.next = 16;
|
|
237
244
|
break;
|
|
238
245
|
}
|
|
239
|
-
_context4.next =
|
|
246
|
+
_context4.next = 16;
|
|
240
247
|
return form.validateFields([name]);
|
|
241
|
-
case
|
|
248
|
+
case 16:
|
|
242
249
|
case "end":
|
|
243
250
|
return _context4.stop();
|
|
244
251
|
}
|
|
@@ -211,7 +211,7 @@ export var transformColumns = function transformColumns() {
|
|
|
211
211
|
setState = config.setState,
|
|
212
212
|
page = config.page;
|
|
213
213
|
var isCell = mode === 'cell';
|
|
214
|
-
var nextColumns = cloneDeepFilterNode(
|
|
214
|
+
var nextColumns = columns.map(item => cloneDeepFilterNode(item));
|
|
215
215
|
var pageNum = tools.calc(page.pageNum, '-', 1);
|
|
216
216
|
var firstIndex = tools.calc(pageNum, '*', page.pageSize);
|
|
217
217
|
nextColumns.forEach((item, index) => {
|
|
@@ -364,6 +364,19 @@ export var transformColumns = function transformColumns() {
|
|
|
364
364
|
});
|
|
365
365
|
};
|
|
366
366
|
item.render = _render;
|
|
367
|
+
|
|
368
|
+
// 精准控制单元格更新,减少不必要的渲染
|
|
369
|
+
if (!item.shouldCellUpdate) {
|
|
370
|
+
var hasComponent = isFunction(item.component);
|
|
371
|
+
item.shouldCellUpdate = (record, prevRecord) => {
|
|
372
|
+
if ((record === null || record === void 0 ? void 0 : record.rowKey) !== (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord.rowKey)) return true;
|
|
373
|
+
// 动态 component 可能依赖行内其他字段,需比较整行
|
|
374
|
+
if (hasComponent) return !isEqual(record, prevRecord);
|
|
375
|
+
var key = item.dataIndex || item.key;
|
|
376
|
+
if (!key) return true;
|
|
377
|
+
return (record === null || record === void 0 ? void 0 : record[key]) !== (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord[key]);
|
|
378
|
+
};
|
|
379
|
+
}
|
|
367
380
|
});
|
|
368
381
|
if (disabled || isView) {
|
|
369
382
|
// 查看模式下过滤操作栏
|
|
@@ -49,8 +49,9 @@ var Container = props => {
|
|
|
49
49
|
diffConfig: diffConfig
|
|
50
50
|
}, otherProps));
|
|
51
51
|
if (type === 'ProCollapse') {
|
|
52
|
+
var hasFieldChildren = Array.isArray(children) && children.length > 0;
|
|
52
53
|
return /*#__PURE__*/_jsx(ProCollapse, _objectSpread(_objectSpread({}, omit(props, ['otherProps', 'children', 'onBlur', 'onChange', 'placeholder', 'className'])), {}, {
|
|
53
|
-
children: child
|
|
54
|
+
children: hasFieldChildren ? child : null
|
|
54
55
|
}));
|
|
55
56
|
}
|
|
56
57
|
if (type === 'Container') {
|
|
@@ -75,31 +75,29 @@ export declare const useFormItemProps: (column: FlexibleGroupColumnType, context
|
|
|
75
75
|
confirm?: boolean | import("antd").ModalFuncProps | import("../../../render/propsType").FunctionArgs<any, boolean | import("antd").ModalFuncProps>;
|
|
76
76
|
show?: boolean | ReactiveFunction<any, boolean>;
|
|
77
77
|
component?: React.ReactNode | ReactiveFunction<any, React.ReactNode>;
|
|
78
|
-
trim?: boolean;
|
|
79
|
-
normalize?: (value: any, prevValue: any, allValues: import("@rc-component/form/lib/interface").Store) => any;
|
|
80
|
-
children?: React.ReactNode | ((form: FormInstance<any>) => React.ReactNode);
|
|
81
|
-
vertical?: boolean;
|
|
82
78
|
id?: string;
|
|
83
79
|
className?: string;
|
|
84
80
|
hidden?: boolean;
|
|
85
81
|
style?: React.CSSProperties;
|
|
82
|
+
children?: React.ReactNode | ((form: FormInstance<any>) => React.ReactNode);
|
|
86
83
|
onReset?: () => void;
|
|
87
84
|
prefixCls?: string;
|
|
85
|
+
status?: "" | "warning" | "error" | "success" | "validating";
|
|
88
86
|
rootClassName?: string;
|
|
89
|
-
status?: "" | "success" | "error" | "warning" | "validating";
|
|
90
|
-
trigger?: string;
|
|
91
|
-
colon?: boolean;
|
|
92
87
|
isView?: boolean;
|
|
93
|
-
|
|
94
|
-
getValueProps?: ((value: any) => Record<string, unknown>) & ((value: any) => Record<string, unknown>);
|
|
88
|
+
colon?: boolean;
|
|
95
89
|
htmlFor?: string;
|
|
96
90
|
labelAlign?: import("antd/es/form/interface").FormLabelAlign;
|
|
97
91
|
labelCol?: import("antd").ColProps;
|
|
92
|
+
vertical?: boolean;
|
|
98
93
|
getValueFromEvent?: (...args: import("@rc-component/form/lib/interface").EventArgs) => any;
|
|
94
|
+
normalize?: (value: any, prevValue: any, allValues: import("@rc-component/form/lib/interface").Store) => any;
|
|
99
95
|
shouldUpdate?: import("@rc-component/form/lib/Field").ShouldUpdate<any>;
|
|
96
|
+
trigger?: string;
|
|
100
97
|
validateTrigger?: string | false | string[];
|
|
101
98
|
validateDebounce?: number;
|
|
102
99
|
valuePropName?: string;
|
|
100
|
+
getValueProps?: ((value: any) => Record<string, unknown>) & ((value: any) => Record<string, unknown>);
|
|
103
101
|
messageVariables?: Record<string, string>;
|
|
104
102
|
initialValue?: any;
|
|
105
103
|
onMetaChange?: (meta: import("@rc-component/form/lib/Field").MetaEvent) => void;
|
|
@@ -110,7 +108,7 @@ export declare const useFormItemProps: (column: FlexibleGroupColumnType, context
|
|
|
110
108
|
hasFeedback?: boolean | {
|
|
111
109
|
icons: import("antd/es/form/FormItem").FeedbackIcons;
|
|
112
110
|
};
|
|
113
|
-
validateStatus?: "" | "
|
|
111
|
+
validateStatus?: "" | "warning" | "error" | "success" | "validating";
|
|
114
112
|
layout?: import("antd/es/form/Form").FormItemLayout;
|
|
115
113
|
wrapperCol?: import("antd").ColProps;
|
|
116
114
|
help?: React.ReactNode;
|
|
@@ -123,10 +121,12 @@ export declare const useFormItemProps: (column: FlexibleGroupColumnType, context
|
|
|
123
121
|
index?: number;
|
|
124
122
|
}) => string | React.ReactElement<any, any>;
|
|
125
123
|
viewType?: import("../../../render/propsType").ViewType;
|
|
124
|
+
trim?: boolean;
|
|
126
125
|
upperCase?: boolean;
|
|
127
126
|
toISOString?: boolean;
|
|
128
127
|
toCSTString?: boolean;
|
|
129
128
|
clearNotShow?: boolean;
|
|
129
|
+
desensitization?: [number, number] | ReactiveFunction<any, [number, number]>;
|
|
130
130
|
name: any;
|
|
131
131
|
dependencies: any[];
|
|
132
132
|
tooltip: string | {
|
|
@@ -3,7 +3,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
3
3
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
4
|
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
|
5
5
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
|
-
import { useLayoutEffect } from 'react';
|
|
6
|
+
import React, { useLayoutEffect } from 'react';
|
|
7
7
|
import { Collapse, Descriptions, Space } from 'antd';
|
|
8
8
|
import { CaretRightOutlined } from '@ant-design/icons';
|
|
9
9
|
import classNames from 'classnames';
|
|
@@ -55,11 +55,12 @@ var ProCollapse = props => {
|
|
|
55
55
|
'pro-collapse-no-level1-title': !title && level !== '2' && level !== '3',
|
|
56
56
|
[`${className}`]: className
|
|
57
57
|
});
|
|
58
|
-
var
|
|
58
|
+
var shouldRenderContent = children !== null && children !== undefined;
|
|
59
|
+
var content = shouldRenderContent ? /*#__PURE__*/_jsx("div", {
|
|
59
60
|
className: "pro-collapse-content",
|
|
60
61
|
style: contentStyle,
|
|
61
62
|
children: children
|
|
62
|
-
});
|
|
63
|
+
}) : null;
|
|
63
64
|
|
|
64
65
|
// 生成 Collapse items 配置
|
|
65
66
|
var getCollapseItems = () => {
|
package/es/ProSelect/index.js
CHANGED
|
@@ -424,7 +424,7 @@ export var ProSelect = (props, ref) => {
|
|
|
424
424
|
return /*#__PURE__*/_jsx(OptGroup, {
|
|
425
425
|
label: item[label],
|
|
426
426
|
children: groupOpts.map(opt => /*#__PURE__*/_jsx(Option, {
|
|
427
|
-
label: opt[label],
|
|
427
|
+
label: selectProps.showCodeName ? `${opt[code]}-${opt[label]}` : opt[label],
|
|
428
428
|
value: opt[code],
|
|
429
429
|
record: opt,
|
|
430
430
|
disabled: !!opt.disabled,
|
|
@@ -440,7 +440,7 @@ export var ProSelect = (props, ref) => {
|
|
|
440
440
|
}, (_item$label = item[label]) !== null && _item$label !== void 0 ? _item$label : `group-${index}`);
|
|
441
441
|
}
|
|
442
442
|
return /*#__PURE__*/_jsx(Option, {
|
|
443
|
-
label: item[label],
|
|
443
|
+
label: selectProps.showCodeName ? `${item[code]}-${item[label]}` : item[label],
|
|
444
444
|
value: optionValue,
|
|
445
445
|
record: item,
|
|
446
446
|
disabled: !!item.disabled,
|
|
@@ -71,6 +71,8 @@ var ProDrawer = _ref => {
|
|
|
71
71
|
var _ref3 = drawerProps || {},
|
|
72
72
|
drawerMask = _ref3.mask,
|
|
73
73
|
restDrawerProps = _objectWithoutProperties(_ref3, _excluded);
|
|
74
|
+
var drawerWidth = width;
|
|
75
|
+
var drawerSize = restDrawerProps === null || restDrawerProps === void 0 ? void 0 : restDrawerProps.size;
|
|
74
76
|
|
|
75
77
|
// 使用 useEffect 在 open 变更时延迟捕获 初始DOM 快照
|
|
76
78
|
(0, _react.useEffect)(() => {
|
|
@@ -247,7 +249,8 @@ var ProDrawer = _ref => {
|
|
|
247
249
|
return defaultFooter;
|
|
248
250
|
};
|
|
249
251
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_antd.Drawer, _objectSpread(_objectSpread({
|
|
250
|
-
|
|
252
|
+
width: drawerWidth,
|
|
253
|
+
size: drawerSize,
|
|
251
254
|
open: open,
|
|
252
255
|
mask: drawerMask !== null && drawerMask !== void 0 ? drawerMask : {
|
|
253
256
|
blur: false
|
|
@@ -258,7 +261,7 @@ var ProDrawer = _ref => {
|
|
|
258
261
|
closable: false,
|
|
259
262
|
onClose: onCancel,
|
|
260
263
|
zIndex: zIndex
|
|
261
|
-
}, (0, _lodash.omit)(restDrawerProps, 'width')), {}, {
|
|
264
|
+
}, (0, _lodash.omit)(restDrawerProps, 'width', 'size')), {}, {
|
|
262
265
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
263
266
|
className: "pro-drawer-close",
|
|
264
267
|
onClick: onConfirm,
|
|
@@ -26,6 +26,7 @@ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e =
|
|
|
26
26
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
27
27
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
28
28
|
var Row = props => {
|
|
29
|
+
var _restProps$className;
|
|
29
30
|
var disabled = props.disabled,
|
|
30
31
|
children = props.children,
|
|
31
32
|
restProps = _objectWithoutProperties(props, _excluded);
|
|
@@ -48,13 +49,17 @@ var Row = props => {
|
|
|
48
49
|
position: 'relative',
|
|
49
50
|
zIndex: 2
|
|
50
51
|
} : {});
|
|
52
|
+
|
|
53
|
+
// 检查是否是空状态占位行
|
|
54
|
+
var isPlaceholderRow = (_restProps$className = restProps.className) === null || _restProps$className === void 0 ? void 0 : _restProps$className.includes('ant-table-placeholder');
|
|
51
55
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)("tr", _objectSpread(_objectSpread(_objectSpread({}, restProps), {}, {
|
|
52
56
|
ref: setNodeRef,
|
|
53
57
|
style: style
|
|
54
58
|
}, attributes), {}, {
|
|
55
59
|
children: _react.default.Children.map(children, (child, index) => {
|
|
56
60
|
// 在第一列(通常是rowSelection列)显示拖拽图标
|
|
57
|
-
|
|
61
|
+
// 如果是占位行,不添加拖拽包装器
|
|
62
|
+
if (index === 0 && !disabled && !isPlaceholderRow) {
|
|
58
63
|
var _restProps$dataRowD;
|
|
59
64
|
var _ref = (child === null || child === void 0 ? void 0 : child.props) || {},
|
|
60
65
|
render = _ref.render,
|
|
@@ -41,7 +41,8 @@ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol"
|
|
|
41
41
|
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
42
42
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
43
43
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
44
|
-
var OMIT_FORM_ITEM_AND_DOM_KEYS = ['format', 'toISOString', 'toCSTString', 'switchValue', 'precision', 'clearNotShow', 'dependNames'
|
|
44
|
+
var OMIT_FORM_ITEM_AND_DOM_KEYS = ['format', 'toISOString', 'toCSTString', 'switchValue', 'precision', 'clearNotShow', 'dependNames', 'shouldCellUpdate' // 表格内部性能优化属性,不应传递给 Form.Item
|
|
45
|
+
];
|
|
45
46
|
var RenderField = _ref => {
|
|
46
47
|
var _type, _type$replace, _fieldProps2, _fieldProps4, _names, _TargetComponent5, _componentProps;
|
|
47
48
|
var value = _ref.text,
|
|
@@ -505,14 +506,16 @@ var RenderField = _ref => {
|
|
|
505
506
|
}
|
|
506
507
|
}
|
|
507
508
|
}
|
|
508
|
-
//
|
|
509
|
-
(0,
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
509
|
+
// 仅在存在联动逻辑且行数据实际发生变化时触发强制刷新
|
|
510
|
+
if (onFieldChange && !(0, _lodash.isEqual)(orgRow, row)) {
|
|
511
|
+
(0, _utils.compatStartTransition)(() => {
|
|
512
|
+
setState({
|
|
513
|
+
forceUpdate: {
|
|
514
|
+
rowKey: record === null || record === void 0 ? void 0 : record.rowKey
|
|
515
|
+
}
|
|
516
|
+
});
|
|
514
517
|
});
|
|
515
|
-
}
|
|
518
|
+
}
|
|
516
519
|
case 33:
|
|
517
520
|
case "end":
|
|
518
521
|
return _context.stop();
|
|
@@ -609,11 +612,11 @@ var RenderField = _ref => {
|
|
|
609
612
|
cellNamePath: []
|
|
610
613
|
});
|
|
611
614
|
case 22:
|
|
612
|
-
// 单行编辑时需要
|
|
615
|
+
// 单行编辑时需要 强制更新视图,仅对当前行打标记
|
|
613
616
|
(0, _utils.compatStartTransition)(() => {
|
|
614
617
|
setState({
|
|
615
618
|
forceUpdate: {
|
|
616
|
-
|
|
619
|
+
rowKey: record === null || record === void 0 ? void 0 : record.rowKey
|
|
617
620
|
}
|
|
618
621
|
});
|
|
619
622
|
});
|
|
@@ -832,7 +835,11 @@ var _default = exports.default = /*#__PURE__*/(0, _react.memo)(RenderField, (pre
|
|
|
832
835
|
|
|
833
836
|
// fieldProps 函数化直接更新,无法比对返回值是否一致
|
|
834
837
|
if ((0, _lodash.isFunction)(prevColumn === null || prevColumn === void 0 ? void 0 : prevColumn.fieldProps) && (0, _lodash.isFunction)(nextColumn === null || nextColumn === void 0 ? void 0 : nextColumn.fieldProps)) {
|
|
835
|
-
|
|
838
|
+
var prevFieldProps = prevColumn.fieldProps(prevRecord, prevReactiveParams);
|
|
839
|
+
var nextFieldProps = nextColumn.fieldProps(nextRecord, nextReactiveParams);
|
|
840
|
+
if (!(0, _lodash.isEqualWith)(prevFieldProps, nextFieldProps, _utils.customEqualForFunction)) {
|
|
841
|
+
return false;
|
|
842
|
+
}
|
|
836
843
|
}
|
|
837
844
|
|
|
838
845
|
// 通用函数比较方法
|
|
@@ -38,7 +38,7 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
|
38
38
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
39
39
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
40
40
|
var ProEditTable = (_ref, ref) => {
|
|
41
|
-
var _resetProps$id, _resetProps$id$split, _ref2, _formFieldProps$shoul, _themeConfig$data2
|
|
41
|
+
var _resetProps$id, _resetProps$id$split, _ref2, _formFieldProps$shoul, _themeConfig$data2;
|
|
42
42
|
var _ref$value = _ref.value,
|
|
43
43
|
value = _ref$value === void 0 ? [] : _ref$value,
|
|
44
44
|
onChange = _ref.onChange,
|
|
@@ -157,10 +157,13 @@ var ProEditTable = (_ref, ref) => {
|
|
|
157
157
|
var getRowKey = (0, _react.useCallback)(record => {
|
|
158
158
|
var key = record.rowKey || (0, _tools.getRandom)();
|
|
159
159
|
if (rowKey) {
|
|
160
|
-
var
|
|
161
|
-
|
|
160
|
+
var userKey = (0, _lodash.isFunction)(rowKey) ? rowKey(record) : record[rowKey];
|
|
161
|
+
// 检查用户返回的 key 是否有效(不是 null、undefined、NaN 或空字符串)
|
|
162
|
+
if (userKey != null && !Number.isNaN(userKey) && userKey !== '') {
|
|
163
|
+
key = userKey;
|
|
164
|
+
}
|
|
162
165
|
}
|
|
163
|
-
return key;
|
|
166
|
+
return String(key); // 确保返回字符串
|
|
164
167
|
}, [rowKey]);
|
|
165
168
|
var originalValues = (0, _react.useMemo)(() => {
|
|
166
169
|
var _originalArr$every, _originalArr$some;
|
|
@@ -193,7 +196,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
193
196
|
|
|
194
197
|
// 分页变更
|
|
195
198
|
var handlePageChange = (0, _react.useCallback)( /*#__PURE__*/function () {
|
|
196
|
-
var
|
|
199
|
+
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee(current, pageSize) {
|
|
197
200
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
198
201
|
while (1) switch (_context.prev = _context.next) {
|
|
199
202
|
case 0:
|
|
@@ -239,47 +242,50 @@ var ProEditTable = (_ref, ref) => {
|
|
|
239
242
|
}, _callee, null, [[0, 10]]);
|
|
240
243
|
}));
|
|
241
244
|
return function (_x, _x2) {
|
|
242
|
-
return
|
|
245
|
+
return _ref4.apply(this, arguments);
|
|
243
246
|
};
|
|
244
247
|
}(), [pagination, page.pageSize, form, name]);
|
|
245
|
-
var config =
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
248
|
+
var config = (0, _react.useMemo)(() => {
|
|
249
|
+
var _resetProps$otherProp;
|
|
250
|
+
return _objectSpread({
|
|
251
|
+
form,
|
|
252
|
+
mode,
|
|
253
|
+
isView,
|
|
254
|
+
viewEmpty,
|
|
255
|
+
disabled,
|
|
256
|
+
cellNamePath,
|
|
257
|
+
forceUpdate,
|
|
258
|
+
insertType,
|
|
259
|
+
emptyBtnText,
|
|
260
|
+
editingKeys,
|
|
261
|
+
actionWidth,
|
|
262
|
+
actionProps,
|
|
263
|
+
toolbarProps,
|
|
264
|
+
setState,
|
|
265
|
+
selectedRowKeys,
|
|
266
|
+
selectedRows,
|
|
267
|
+
onlyOneLineMsg,
|
|
268
|
+
deletePoConfirmMsg,
|
|
269
|
+
mulDeletePoConfirmMsg,
|
|
270
|
+
virtualKey,
|
|
271
|
+
requiredAlign,
|
|
272
|
+
name: (0, _lodash.isArray)(name) ? name : [name],
|
|
273
|
+
// name需要处理成namePath形式,为兼容多路径
|
|
274
|
+
namePath,
|
|
275
|
+
tableRef,
|
|
276
|
+
max,
|
|
277
|
+
tableLength: value === null || value === void 0 ? void 0 : value.length,
|
|
278
|
+
page,
|
|
279
|
+
originalValues,
|
|
280
|
+
prefixCls,
|
|
281
|
+
rowDisabled,
|
|
282
|
+
actionDirection,
|
|
283
|
+
diffConfig: _objectSpread(_objectSpread({}, resetProps === null || resetProps === void 0 || (_resetProps$otherProp = resetProps.otherProps) === null || _resetProps$otherProp === void 0 ? void 0 : _resetProps$otherProp.diffConfig), diffConfig),
|
|
284
|
+
shouldUpdateDebounce,
|
|
285
|
+
getIsNew,
|
|
286
|
+
handlePageChange
|
|
287
|
+
}, resetProps);
|
|
288
|
+
}, [actionDirection, actionProps, actionWidth, cellNamePath, deletePoConfirmMsg, disabled, diffConfig, editingKeys, emptyBtnText, form, forceUpdate, getIsNew, handlePageChange, insertType, isView, max, mode, mulDeletePoConfirmMsg, name, namePath, onlyOneLineMsg, originalValues, prefixCls, requiredAlign, resetProps, rowDisabled, selectedRowKeys, selectedRows, shouldUpdateDebounce, tableRef, toolbarProps, value === null || value === void 0 ? void 0 : value.length, viewEmpty, virtualKey, page]);
|
|
283
289
|
|
|
284
290
|
// 编辑行设置下样式
|
|
285
291
|
var _rowClassName = record => {
|
|
@@ -337,7 +343,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
337
343
|
|
|
338
344
|
// 空列表状态
|
|
339
345
|
var emptyDom = (0, _react.useMemo)(() => () => {
|
|
340
|
-
var _filter,
|
|
346
|
+
var _filter, _ref5;
|
|
341
347
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
342
348
|
className: "com-empty",
|
|
343
349
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("img", {
|
|
@@ -348,7 +354,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
348
354
|
className: "content",
|
|
349
355
|
children: disabled || isForbiddenBtn('add') ? _locale.default.ProEditTable.noData : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
350
356
|
children: [_locale.default.ProEditTable.noData, "\uFF0C", /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.RenderToolbar, _objectSpread({}, _objectSpread(_objectSpread({}, config), {}, {
|
|
351
|
-
toolbarProps: toolbarProps === null || toolbarProps === void 0 || (_filter = (
|
|
357
|
+
toolbarProps: toolbarProps === null || toolbarProps === void 0 || (_filter = (_ref5 = toolbarProps).filter) === null || _filter === void 0 ? void 0 : _filter.call(_ref5, item => item.type === 'add' || (item === null || item === void 0 ? void 0 : item.persistence)),
|
|
352
358
|
dataSource: []
|
|
353
359
|
})))]
|
|
354
360
|
})
|
|
@@ -374,7 +380,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
374
380
|
};
|
|
375
381
|
var _columns = (0, _react.useMemo)(() => {
|
|
376
382
|
return (0, _utils.transformColumns)(columns, config);
|
|
377
|
-
}, [
|
|
383
|
+
}, [columns, config]);
|
|
378
384
|
var initDataSource = () => {
|
|
379
385
|
var _value$every, _value$some;
|
|
380
386
|
// 检查每一项是否有 rowKey 或通过 rowKey 字段获取的 key
|
|
@@ -423,6 +429,28 @@ var ProEditTable = (_ref, ref) => {
|
|
|
423
429
|
rowSelection: renderRowSelection()
|
|
424
430
|
}) : summary;
|
|
425
431
|
var TableComponent = draggable ? _RcTable.DraggableTable : _RcTable.BaseTable;
|
|
432
|
+
var tableProps = (0, _react.useMemo)(() => ({
|
|
433
|
+
rowKey,
|
|
434
|
+
value,
|
|
435
|
+
headerRender,
|
|
436
|
+
tableRef,
|
|
437
|
+
className: _className,
|
|
438
|
+
columns: _columns,
|
|
439
|
+
renderRowSelection,
|
|
440
|
+
rowClassName: _rowClassName,
|
|
441
|
+
disabled,
|
|
442
|
+
virtualKey,
|
|
443
|
+
editingKeys,
|
|
444
|
+
isHideCheckBox,
|
|
445
|
+
rowDraggable,
|
|
446
|
+
pagination,
|
|
447
|
+
scroll,
|
|
448
|
+
summary: _summary,
|
|
449
|
+
page,
|
|
450
|
+
formatMessage: _locale.formatMessage,
|
|
451
|
+
locale: _locale.default,
|
|
452
|
+
handlePageChange
|
|
453
|
+
}), [_className, _columns, _rowClassName, disabled, editingKeys, _locale.formatMessage, handlePageChange, headerRender, isHideCheckBox, _locale.default, page, pagination, renderRowSelection, rowDraggable, rowKey, scroll, _summary, tableRef, value, virtualKey]);
|
|
426
454
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
427
455
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.ConfigProvider, {
|
|
428
456
|
renderEmpty: value !== null && value !== void 0 && value.length ? undefined : emptyDom,
|
|
@@ -433,28 +461,7 @@ var ProEditTable = (_ref, ref) => {
|
|
|
433
461
|
onDragEnd,
|
|
434
462
|
draggable
|
|
435
463
|
},
|
|
436
|
-
tableProps:
|
|
437
|
-
rowKey,
|
|
438
|
-
value,
|
|
439
|
-
headerRender,
|
|
440
|
-
tableRef,
|
|
441
|
-
className: _className,
|
|
442
|
-
columns: _columns,
|
|
443
|
-
renderRowSelection,
|
|
444
|
-
rowClassName: _rowClassName,
|
|
445
|
-
disabled,
|
|
446
|
-
virtualKey,
|
|
447
|
-
editingKeys,
|
|
448
|
-
isHideCheckBox,
|
|
449
|
-
rowDraggable,
|
|
450
|
-
pagination,
|
|
451
|
-
scroll,
|
|
452
|
-
summary: _summary,
|
|
453
|
-
page,
|
|
454
|
-
formatMessage: _locale.formatMessage,
|
|
455
|
-
locale: _locale.default,
|
|
456
|
-
handlePageChange
|
|
457
|
-
}
|
|
464
|
+
tableProps: tableProps
|
|
458
465
|
}))
|
|
459
466
|
}), !isView && value !== null && value !== void 0 && value.length ? toolbarSticky ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.Affix, _objectSpread(_objectSpread({
|
|
460
467
|
ref: affixRef
|
|
@@ -16,7 +16,7 @@ export declare const defaultMultipleActionKeys: string[];
|
|
|
16
16
|
export declare const defaultEditingActionKeys: string[];
|
|
17
17
|
export declare const defaultToolbarKeys: string[];
|
|
18
18
|
export declare const actions: {
|
|
19
|
-
edit: ({ record, editingKeys, setState, form, virtualRowName, virtualKey, onlyOneLineMsg
|
|
19
|
+
edit: ({ record, editingKeys, setState, form, virtualRowName, virtualKey, onlyOneLineMsg }: any) => boolean;
|
|
20
20
|
save: ({ record, editingKeys, setState, form, rowName, virtualRowName, result }: any) => Promise<void>;
|
|
21
21
|
cancel: ({ name, record, editingKeys, setState, form, virtualRowName, virtualKey }: any) => void;
|
|
22
22
|
delete: ({ name, record, editingKeys, setState, form, virtualKey, onlyOneLineMsg }: any) => boolean;
|
|
@@ -174,8 +174,8 @@ var actions = exports.actions = {
|
|
|
174
174
|
},
|
|
175
175
|
add: function () {
|
|
176
176
|
var _add = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(_ref5) {
|
|
177
|
-
var _tableRef$current
|
|
178
|
-
var result, insertType, editingKeys, setState, form, name, virtualName, virtualKey, onlyOneLineMsg, tableRef, _ref5$prefixCls, prefixCls, page, handlePageChange, nextData, rowKey, addData, nextPageNum, nextEditingKeys;
|
|
177
|
+
var _tableRef$current;
|
|
178
|
+
var result, insertType, editingKeys, setState, form, name, virtualName, virtualKey, onlyOneLineMsg, tableRef, _ref5$prefixCls, prefixCls, page, handlePageChange, nextData, rowKey, addData, nextPageNum, nextEditingKeys, tableBody;
|
|
179
179
|
return _regeneratorRuntime().wrap(function _callee4$(_context4) {
|
|
180
180
|
while (1) switch (_context4.prev = _context4.next) {
|
|
181
181
|
case 0:
|
|
@@ -235,17 +235,24 @@ var actions = exports.actions = {
|
|
|
235
235
|
});
|
|
236
236
|
}
|
|
237
237
|
form.setFieldValue(name, nextData);
|
|
238
|
-
(_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 || (_tableRef$current = _tableRef$current.children[0]) === null || _tableRef$current === void 0
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
238
|
+
tableBody = (_tableRef$current = tableRef.current) === null || _tableRef$current === void 0 || (_tableRef$current = _tableRef$current.children[0]) === null || _tableRef$current === void 0 ? void 0 : _tableRef$current.querySelector(`.${prefixCls}-table-body`);
|
|
239
|
+
if (tableBody) {
|
|
240
|
+
// 等待新行渲染完毕再读取 scrollHeight,确保能滚动到真正的底部
|
|
241
|
+
requestAnimationFrame(() => {
|
|
242
|
+
var _tableBody$scrollTo;
|
|
243
|
+
(_tableBody$scrollTo = tableBody.scrollTo) === null || _tableBody$scrollTo === void 0 || _tableBody$scrollTo.call(tableBody, {
|
|
244
|
+
top: insertType === 'before' ? 0 : tableBody.scrollHeight,
|
|
245
|
+
behavior: 'smooth'
|
|
246
|
+
});
|
|
247
|
+
});
|
|
248
|
+
}
|
|
242
249
|
if (!virtualKey) {
|
|
243
|
-
_context4.next =
|
|
250
|
+
_context4.next = 16;
|
|
244
251
|
break;
|
|
245
252
|
}
|
|
246
|
-
_context4.next =
|
|
253
|
+
_context4.next = 16;
|
|
247
254
|
return form.validateFields([name]);
|
|
248
|
-
case
|
|
255
|
+
case 16:
|
|
249
256
|
case "end":
|
|
250
257
|
return _context4.stop();
|
|
251
258
|
}
|
|
@@ -215,7 +215,7 @@ var transformColumns = exports.transformColumns = function transformColumns() {
|
|
|
215
215
|
setState = config.setState,
|
|
216
216
|
page = config.page;
|
|
217
217
|
var isCell = mode === 'cell';
|
|
218
|
-
var nextColumns = (0, _tools.cloneDeepFilterNode)(
|
|
218
|
+
var nextColumns = columns.map(item => (0, _tools.cloneDeepFilterNode)(item));
|
|
219
219
|
var pageNum = _utils.tools.calc(page.pageNum, '-', 1);
|
|
220
220
|
var firstIndex = _utils.tools.calc(pageNum, '*', page.pageSize);
|
|
221
221
|
nextColumns.forEach((item, index) => {
|
|
@@ -368,6 +368,19 @@ var transformColumns = exports.transformColumns = function transformColumns() {
|
|
|
368
368
|
});
|
|
369
369
|
};
|
|
370
370
|
item.render = _render;
|
|
371
|
+
|
|
372
|
+
// 精准控制单元格更新,减少不必要的渲染
|
|
373
|
+
if (!item.shouldCellUpdate) {
|
|
374
|
+
var hasComponent = (0, _lodash.isFunction)(item.component);
|
|
375
|
+
item.shouldCellUpdate = (record, prevRecord) => {
|
|
376
|
+
if ((record === null || record === void 0 ? void 0 : record.rowKey) !== (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord.rowKey)) return true;
|
|
377
|
+
// 动态 component 可能依赖行内其他字段,需比较整行
|
|
378
|
+
if (hasComponent) return !(0, _lodash.isEqual)(record, prevRecord);
|
|
379
|
+
var key = item.dataIndex || item.key;
|
|
380
|
+
if (!key) return true;
|
|
381
|
+
return (record === null || record === void 0 ? void 0 : record[key]) !== (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord[key]);
|
|
382
|
+
};
|
|
383
|
+
}
|
|
371
384
|
});
|
|
372
385
|
if (disabled || isView) {
|
|
373
386
|
// 查看模式下过滤操作栏
|
|
@@ -56,8 +56,9 @@ var Container = props => {
|
|
|
56
56
|
diffConfig: diffConfig
|
|
57
57
|
}, otherProps));
|
|
58
58
|
if (type === 'ProCollapse') {
|
|
59
|
+
var hasFieldChildren = Array.isArray(children) && children.length > 0;
|
|
59
60
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ProCollapse.default, _objectSpread(_objectSpread({}, (0, _lodash.omit)(props, ['otherProps', 'children', 'onBlur', 'onChange', 'placeholder', 'className'])), {}, {
|
|
60
|
-
children: child
|
|
61
|
+
children: hasFieldChildren ? child : null
|
|
61
62
|
}));
|
|
62
63
|
}
|
|
63
64
|
if (type === 'Container') {
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _react = require("react");
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _antd = require("antd");
|
|
9
9
|
var _icons = require("@ant-design/icons");
|
|
10
10
|
var _classnames = _interopRequireDefault(require("classnames"));
|
|
@@ -12,6 +12,8 @@ var _fold = _interopRequireDefault(require("../../../assets/fold.svg"));
|
|
|
12
12
|
var _index = _interopRequireDefault(require("../../../ProIcon/index"));
|
|
13
13
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
|
|
16
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
15
17
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
16
18
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
17
19
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
@@ -61,11 +63,12 @@ var ProCollapse = props => {
|
|
|
61
63
|
'pro-collapse-no-level1-title': !title && level !== '2' && level !== '3',
|
|
62
64
|
[`${className}`]: className
|
|
63
65
|
});
|
|
64
|
-
var
|
|
66
|
+
var shouldRenderContent = children !== null && children !== undefined;
|
|
67
|
+
var content = shouldRenderContent ? /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
65
68
|
className: "pro-collapse-content",
|
|
66
69
|
style: contentStyle,
|
|
67
70
|
children: children
|
|
68
|
-
});
|
|
71
|
+
}) : null;
|
|
69
72
|
|
|
70
73
|
// 生成 Collapse items 配置
|
|
71
74
|
var getCollapseItems = () => {
|
package/lib/ProSelect/index.js
CHANGED
|
@@ -431,7 +431,7 @@ var ProSelect = (props, ref) => {
|
|
|
431
431
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(OptGroup, {
|
|
432
432
|
label: item[label],
|
|
433
433
|
children: groupOpts.map(opt => /*#__PURE__*/(0, _jsxRuntime.jsx)(Option, {
|
|
434
|
-
label: opt[label],
|
|
434
|
+
label: selectProps.showCodeName ? `${opt[code]}-${opt[label]}` : opt[label],
|
|
435
435
|
value: opt[code],
|
|
436
436
|
record: opt,
|
|
437
437
|
disabled: !!opt.disabled,
|
|
@@ -447,7 +447,7 @@ var ProSelect = (props, ref) => {
|
|
|
447
447
|
}, (_item$label = item[label]) !== null && _item$label !== void 0 ? _item$label : `group-${index}`);
|
|
448
448
|
}
|
|
449
449
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Option, {
|
|
450
|
-
label: item[label],
|
|
450
|
+
label: selectProps.showCodeName ? `${item[code]}-${item[label]}` : item[label],
|
|
451
451
|
value: optionValue,
|
|
452
452
|
record: item,
|
|
453
453
|
disabled: !!item.disabled,
|