@zat-design/sisyphus-react 4.1.2 → 4.1.3-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/ProEditTable/index.js +20 -6
- package/es/ProEditTable/utils/config.d.ts +1 -1
- package/es/ProEditTable/utils/config.js +5 -3
- package/es/ProEditTable/utils/index.js +34 -9
- package/es/ProSelect/utils/index.d.ts +1 -1
- package/lib/ProEditTable/index.js +20 -6
- package/lib/ProEditTable/utils/config.d.ts +1 -1
- package/lib/ProEditTable/utils/config.js +5 -3
- package/lib/ProEditTable/utils/index.js +34 -9
- package/lib/ProSelect/utils/index.d.ts +1 -1
- package/package.json +1 -1
package/es/ProEditTable/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
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"]
|
|
1
|
+
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"],
|
|
2
|
+
_excluded2 = ["_dragIndex"];
|
|
2
3
|
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; }
|
|
3
4
|
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; }
|
|
4
5
|
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; }
|
|
@@ -426,12 +427,15 @@ var ProEditTable = (_ref, ref) => {
|
|
|
426
427
|
var TableComponent = draggable ? DraggableTable : BaseTable;
|
|
427
428
|
|
|
428
429
|
// 给每个 record 附加编辑状态标识,让 shouldCellUpdate 能检测到状态变化
|
|
430
|
+
// draggable 时同时注入 _dragIndex,供 shouldCellUpdate 感知行位置变化(拖拽后同一行数据不变但位置变了)
|
|
429
431
|
var enrichedValue = useMemo(() => {
|
|
430
|
-
if (!virtualKey) return value;
|
|
431
|
-
return value === null || value === void 0 ? void 0 : value.map(record => _objectSpread(_objectSpread({}, record),
|
|
432
|
+
if (!virtualKey && !draggable) return value;
|
|
433
|
+
return value === null || value === void 0 ? void 0 : value.map((record, idx) => _objectSpread(_objectSpread(_objectSpread({}, record), virtualKey ? {
|
|
432
434
|
_isEditing: editingKeys.includes(record.rowKey) || record._addFlag
|
|
433
|
-
})
|
|
434
|
-
|
|
435
|
+
} : {}), draggable ? {
|
|
436
|
+
_dragIndex: idx
|
|
437
|
+
} : {}));
|
|
438
|
+
}, [value, virtualKey, editingKeys, draggable]);
|
|
435
439
|
var tableProps = useMemo(() => ({
|
|
436
440
|
rowKey,
|
|
437
441
|
value: enrichedValue,
|
|
@@ -454,12 +458,22 @@ var ProEditTable = (_ref, ref) => {
|
|
|
454
458
|
locale,
|
|
455
459
|
handlePageChange
|
|
456
460
|
}), [_className, _columns, _rowClassName, disabled, editingKeys, formatMessage, handlePageChange, headerRender, isHideCheckBox, locale, page, pagination, renderRowSelection, rowDraggable, rowKey, scroll, _summary, tableRef, enrichedValue, virtualKey]);
|
|
461
|
+
|
|
462
|
+
// 拖拽排序后,enrichedValue 中含 _dragIndex(内部字段),需清除后再传给外部 onChange
|
|
463
|
+
var handleDragChange = useCallback(newValue => {
|
|
464
|
+
var cleanValue = newValue === null || newValue === void 0 ? void 0 : newValue.map(_ref6 => {
|
|
465
|
+
var _ = _ref6._dragIndex,
|
|
466
|
+
rest = _objectWithoutProperties(_ref6, _excluded2);
|
|
467
|
+
return rest;
|
|
468
|
+
});
|
|
469
|
+
onChange === null || onChange === void 0 || onChange(cleanValue);
|
|
470
|
+
}, [onChange]);
|
|
457
471
|
return /*#__PURE__*/_jsxs(_Fragment, {
|
|
458
472
|
children: [/*#__PURE__*/_jsx(ConfigProvider, {
|
|
459
473
|
renderEmpty: value !== null && value !== void 0 && value.length ? undefined : emptyDom,
|
|
460
474
|
children: /*#__PURE__*/_jsx(TableComponent, _objectSpread(_objectSpread({}, resetProps), {}, {
|
|
461
475
|
draggableProps: {
|
|
462
|
-
onChange,
|
|
476
|
+
onChange: draggable ? handleDragChange : onChange,
|
|
463
477
|
onDrag,
|
|
464
478
|
onDragEnd,
|
|
465
479
|
draggable
|
|
@@ -18,7 +18,7 @@ export declare const defaultToolbarKeys: string[];
|
|
|
18
18
|
export declare const actions: {
|
|
19
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
|
-
cancel: ({ name, record, editingKeys, setState, form, virtualRowName, virtualKey }: any) => void;
|
|
21
|
+
cancel: ({ name, record, editingKeys, setState, form, virtualRowName, virtualKey, rowName }: any) => void;
|
|
22
22
|
delete: ({ name, record, editingKeys, setState, form, virtualKey, onlyOneLineMsg }: any) => boolean;
|
|
23
23
|
add: ({ result, insertType, editingKeys, setState, form, name, virtualName, virtualKey, onlyOneLineMsg, tableRef, prefixCls, page, handlePageChange, }: any) => Promise<boolean>;
|
|
24
24
|
mulDelete: ({ form, name, virtualKey, setState, selectedRowKeys, editingKeys }: any) => void;
|
|
@@ -111,7 +111,8 @@ export var actions = {
|
|
|
111
111
|
setState = _ref3.setState,
|
|
112
112
|
form = _ref3.form,
|
|
113
113
|
virtualRowName = _ref3.virtualRowName,
|
|
114
|
-
virtualKey = _ref3.virtualKey
|
|
114
|
+
virtualKey = _ref3.virtualKey,
|
|
115
|
+
rowName = _ref3.rowName;
|
|
115
116
|
var nextEditingKeys = editingKeys.filter(key => key !== record.rowKey);
|
|
116
117
|
// 保存后取消编辑状态,供validator做保存校验
|
|
117
118
|
if (nextEditingKeys !== null && nextEditingKeys !== void 0 && nextEditingKeys.length) {
|
|
@@ -131,9 +132,10 @@ export var actions = {
|
|
|
131
132
|
selectedRowKeys: [record.rowKey]
|
|
132
133
|
});
|
|
133
134
|
} else {
|
|
134
|
-
//
|
|
135
|
+
// 取消时使用主 form 原始行数据重置虚拟 form,避免编辑值残留
|
|
136
|
+
var originalRecord = form.getFieldValue(rowName);
|
|
135
137
|
var values = form.getFieldsValue();
|
|
136
|
-
set(values, virtualRowName, record);
|
|
138
|
+
set(values, virtualRowName, originalRecord !== null && originalRecord !== void 0 ? originalRecord : record);
|
|
137
139
|
form.setFieldsValue(values);
|
|
138
140
|
}
|
|
139
141
|
},
|
|
@@ -27,6 +27,8 @@ import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
27
27
|
var columnDataSourceRefCache = new Map();
|
|
28
28
|
/** 追踪 component 函数引用,用于检测外部状态(如异步 list)变化导致的闭包更新 */
|
|
29
29
|
var columnComponentRefCache = new Map();
|
|
30
|
+
/** 追踪 filterInList 列表长度,用于检测行增删导致的索引偏移 */
|
|
31
|
+
var columnListLengthCache = new Map();
|
|
30
32
|
|
|
31
33
|
// 渲染操作栏
|
|
32
34
|
var getActionColumn = config => {
|
|
@@ -377,21 +379,44 @@ export var transformColumns = function transformColumns() {
|
|
|
377
379
|
|
|
378
380
|
// 精准控制单元格更新,减少不必要的渲染
|
|
379
381
|
if (!item.shouldCellUpdate) {
|
|
382
|
+
var _index, _item$fieldProps;
|
|
380
383
|
var hasComponent = isFunction(item.component);
|
|
381
384
|
var columnCacheKey = `${Array.isArray(name) ? name.join('.') : String(name)}::${String(columnName)}`;
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
385
|
+
|
|
386
|
+
// Fix 问题1:用原始列引用(克隆前)比对 dataSource
|
|
387
|
+
// cloneDeepFilterNode 每次产生新引用,在 shouldCellUpdate 内更新 cache 只会让第一行触发更新,其余行跳过
|
|
388
|
+
var originalFieldProps = (_index = columns[index]) === null || _index === void 0 ? void 0 : _index.fieldProps;
|
|
389
|
+
var originalDataSourceRef = !isFunction(originalFieldProps) ? originalFieldProps === null || originalFieldProps === void 0 ? void 0 : originalFieldProps.dataSource : undefined;
|
|
390
|
+
var prevDataSourceRef = columnDataSourceRefCache.get(columnCacheKey);
|
|
391
|
+
var dataSourceChanged = originalDataSourceRef !== undefined && prevDataSourceRef !== originalDataSourceRef;
|
|
392
|
+
if (dataSourceChanged) {
|
|
393
|
+
columnDataSourceRefCache.set(columnCacheKey, originalDataSourceRef);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
// Fix 问题2:检测 filterInList 列的行增删,避免行索引移位时 shouldUpdate 闭包中 index 失效
|
|
397
|
+
var filterInListEnabled = !isFunction(item === null || item === void 0 ? void 0 : item.fieldProps) && (item === null || item === void 0 || (_item$fieldProps = item.fieldProps) === null || _item$fieldProps === void 0 ? void 0 : _item$fieldProps.filterInList);
|
|
398
|
+
var filterListChanged = false;
|
|
399
|
+
if (filterInListEnabled) {
|
|
400
|
+
var _config$tableLength, _columnListLengthCach;
|
|
401
|
+
var currentListLen = (_config$tableLength = config.tableLength) !== null && _config$tableLength !== void 0 ? _config$tableLength : 0;
|
|
402
|
+
var prevListLen = (_columnListLengthCach = columnListLengthCache.get(columnCacheKey)) !== null && _columnListLengthCach !== void 0 ? _columnListLengthCach : -1;
|
|
403
|
+
if (prevListLen !== currentListLen) {
|
|
404
|
+
filterListChanged = true;
|
|
405
|
+
columnListLengthCache.set(columnCacheKey, currentListLen);
|
|
391
406
|
}
|
|
407
|
+
}
|
|
408
|
+
item.shouldCellUpdate = (record, prevRecord) => {
|
|
409
|
+
// dataSource 变化:所有行均需更新(修复异步加载 dataSource 只更新第一行的问题)
|
|
410
|
+
if (dataSourceChanged) return true;
|
|
411
|
+
// filterInList 列的行数变化:强制全量重渲染,避免行索引移位时闭包失效导致显示错误
|
|
412
|
+
if (filterListChanged) return true;
|
|
392
413
|
if ((record === null || record === void 0 ? void 0 : record.rowKey) !== (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord.rowKey)) {
|
|
393
414
|
return true;
|
|
394
415
|
}
|
|
416
|
+
// 拖拽排序时,行数据不变但位置(_dragIndex)变化,需强制重渲染以更新 cellName(Form.Item name)
|
|
417
|
+
if ((record === null || record === void 0 ? void 0 : record._dragIndex) !== (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord._dragIndex)) {
|
|
418
|
+
return true;
|
|
419
|
+
}
|
|
395
420
|
// 单行编辑模式下,需要检测编辑状态变化
|
|
396
421
|
if (virtualKey && (record === null || record === void 0 ? void 0 : record._isEditing) !== (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord._isEditing)) {
|
|
397
422
|
return true;
|
|
@@ -17,7 +17,8 @@ var _empty = _interopRequireDefault(require("../assets/empty.png"));
|
|
|
17
17
|
var _locale = _interopRequireWildcard(require("../locale"));
|
|
18
18
|
var _RcTable = require("./components/RcTable");
|
|
19
19
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
20
|
-
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"]
|
|
20
|
+
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"],
|
|
21
|
+
_excluded2 = ["_dragIndex"];
|
|
21
22
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
22
23
|
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); }
|
|
23
24
|
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; }
|
|
@@ -433,12 +434,15 @@ var ProEditTable = (_ref, ref) => {
|
|
|
433
434
|
var TableComponent = draggable ? _RcTable.DraggableTable : _RcTable.BaseTable;
|
|
434
435
|
|
|
435
436
|
// 给每个 record 附加编辑状态标识,让 shouldCellUpdate 能检测到状态变化
|
|
437
|
+
// draggable 时同时注入 _dragIndex,供 shouldCellUpdate 感知行位置变化(拖拽后同一行数据不变但位置变了)
|
|
436
438
|
var enrichedValue = (0, _react.useMemo)(() => {
|
|
437
|
-
if (!virtualKey) return value;
|
|
438
|
-
return value === null || value === void 0 ? void 0 : value.map(record => _objectSpread(_objectSpread({}, record),
|
|
439
|
+
if (!virtualKey && !draggable) return value;
|
|
440
|
+
return value === null || value === void 0 ? void 0 : value.map((record, idx) => _objectSpread(_objectSpread(_objectSpread({}, record), virtualKey ? {
|
|
439
441
|
_isEditing: editingKeys.includes(record.rowKey) || record._addFlag
|
|
440
|
-
})
|
|
441
|
-
|
|
442
|
+
} : {}), draggable ? {
|
|
443
|
+
_dragIndex: idx
|
|
444
|
+
} : {}));
|
|
445
|
+
}, [value, virtualKey, editingKeys, draggable]);
|
|
442
446
|
var tableProps = (0, _react.useMemo)(() => ({
|
|
443
447
|
rowKey,
|
|
444
448
|
value: enrichedValue,
|
|
@@ -461,12 +465,22 @@ var ProEditTable = (_ref, ref) => {
|
|
|
461
465
|
locale: _locale.default,
|
|
462
466
|
handlePageChange
|
|
463
467
|
}), [_className, _columns, _rowClassName, disabled, editingKeys, _locale.formatMessage, handlePageChange, headerRender, isHideCheckBox, _locale.default, page, pagination, renderRowSelection, rowDraggable, rowKey, scroll, _summary, tableRef, enrichedValue, virtualKey]);
|
|
468
|
+
|
|
469
|
+
// 拖拽排序后,enrichedValue 中含 _dragIndex(内部字段),需清除后再传给外部 onChange
|
|
470
|
+
var handleDragChange = (0, _react.useCallback)(newValue => {
|
|
471
|
+
var cleanValue = newValue === null || newValue === void 0 ? void 0 : newValue.map(_ref6 => {
|
|
472
|
+
var _ = _ref6._dragIndex,
|
|
473
|
+
rest = _objectWithoutProperties(_ref6, _excluded2);
|
|
474
|
+
return rest;
|
|
475
|
+
});
|
|
476
|
+
onChange === null || onChange === void 0 || onChange(cleanValue);
|
|
477
|
+
}, [onChange]);
|
|
464
478
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
|
465
479
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_antd.ConfigProvider, {
|
|
466
480
|
renderEmpty: value !== null && value !== void 0 && value.length ? undefined : emptyDom,
|
|
467
481
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(TableComponent, _objectSpread(_objectSpread({}, resetProps), {}, {
|
|
468
482
|
draggableProps: {
|
|
469
|
-
onChange,
|
|
483
|
+
onChange: draggable ? handleDragChange : onChange,
|
|
470
484
|
onDrag,
|
|
471
485
|
onDragEnd,
|
|
472
486
|
draggable
|
|
@@ -18,7 +18,7 @@ export declare const defaultToolbarKeys: string[];
|
|
|
18
18
|
export declare const actions: {
|
|
19
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
|
-
cancel: ({ name, record, editingKeys, setState, form, virtualRowName, virtualKey }: any) => void;
|
|
21
|
+
cancel: ({ name, record, editingKeys, setState, form, virtualRowName, virtualKey, rowName }: any) => void;
|
|
22
22
|
delete: ({ name, record, editingKeys, setState, form, virtualKey, onlyOneLineMsg }: any) => boolean;
|
|
23
23
|
add: ({ result, insertType, editingKeys, setState, form, name, virtualName, virtualKey, onlyOneLineMsg, tableRef, prefixCls, page, handlePageChange, }: any) => Promise<boolean>;
|
|
24
24
|
mulDelete: ({ form, name, virtualKey, setState, selectedRowKeys, editingKeys }: any) => void;
|
|
@@ -118,7 +118,8 @@ var actions = exports.actions = {
|
|
|
118
118
|
setState = _ref3.setState,
|
|
119
119
|
form = _ref3.form,
|
|
120
120
|
virtualRowName = _ref3.virtualRowName,
|
|
121
|
-
virtualKey = _ref3.virtualKey
|
|
121
|
+
virtualKey = _ref3.virtualKey,
|
|
122
|
+
rowName = _ref3.rowName;
|
|
122
123
|
var nextEditingKeys = editingKeys.filter(key => key !== record.rowKey);
|
|
123
124
|
// 保存后取消编辑状态,供validator做保存校验
|
|
124
125
|
if (nextEditingKeys !== null && nextEditingKeys !== void 0 && nextEditingKeys.length) {
|
|
@@ -138,9 +139,10 @@ var actions = exports.actions = {
|
|
|
138
139
|
selectedRowKeys: [record.rowKey]
|
|
139
140
|
});
|
|
140
141
|
} else {
|
|
141
|
-
//
|
|
142
|
+
// 取消时使用主 form 原始行数据重置虚拟 form,避免编辑值残留
|
|
143
|
+
var originalRecord = form.getFieldValue(rowName);
|
|
142
144
|
var values = form.getFieldsValue();
|
|
143
|
-
(0, _lodash.set)(values, virtualRowName, record);
|
|
145
|
+
(0, _lodash.set)(values, virtualRowName, originalRecord !== null && originalRecord !== void 0 ? originalRecord : record);
|
|
144
146
|
form.setFieldsValue(values);
|
|
145
147
|
}
|
|
146
148
|
},
|
|
@@ -33,6 +33,8 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
|
|
|
33
33
|
var columnDataSourceRefCache = new Map();
|
|
34
34
|
/** 追踪 component 函数引用,用于检测外部状态(如异步 list)变化导致的闭包更新 */
|
|
35
35
|
var columnComponentRefCache = new Map();
|
|
36
|
+
/** 追踪 filterInList 列表长度,用于检测行增删导致的索引偏移 */
|
|
37
|
+
var columnListLengthCache = new Map();
|
|
36
38
|
|
|
37
39
|
// 渲染操作栏
|
|
38
40
|
var getActionColumn = config => {
|
|
@@ -383,21 +385,44 @@ var transformColumns = exports.transformColumns = function transformColumns() {
|
|
|
383
385
|
|
|
384
386
|
// 精准控制单元格更新,减少不必要的渲染
|
|
385
387
|
if (!item.shouldCellUpdate) {
|
|
388
|
+
var _index, _item$fieldProps;
|
|
386
389
|
var hasComponent = (0, _lodash.isFunction)(item.component);
|
|
387
390
|
var columnCacheKey = `${Array.isArray(name) ? name.join('.') : String(name)}::${String(columnName)}`;
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
391
|
+
|
|
392
|
+
// Fix 问题1:用原始列引用(克隆前)比对 dataSource
|
|
393
|
+
// cloneDeepFilterNode 每次产生新引用,在 shouldCellUpdate 内更新 cache 只会让第一行触发更新,其余行跳过
|
|
394
|
+
var originalFieldProps = (_index = columns[index]) === null || _index === void 0 ? void 0 : _index.fieldProps;
|
|
395
|
+
var originalDataSourceRef = !(0, _lodash.isFunction)(originalFieldProps) ? originalFieldProps === null || originalFieldProps === void 0 ? void 0 : originalFieldProps.dataSource : undefined;
|
|
396
|
+
var prevDataSourceRef = columnDataSourceRefCache.get(columnCacheKey);
|
|
397
|
+
var dataSourceChanged = originalDataSourceRef !== undefined && prevDataSourceRef !== originalDataSourceRef;
|
|
398
|
+
if (dataSourceChanged) {
|
|
399
|
+
columnDataSourceRefCache.set(columnCacheKey, originalDataSourceRef);
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
// Fix 问题2:检测 filterInList 列的行增删,避免行索引移位时 shouldUpdate 闭包中 index 失效
|
|
403
|
+
var filterInListEnabled = !(0, _lodash.isFunction)(item === null || item === void 0 ? void 0 : item.fieldProps) && (item === null || item === void 0 || (_item$fieldProps = item.fieldProps) === null || _item$fieldProps === void 0 ? void 0 : _item$fieldProps.filterInList);
|
|
404
|
+
var filterListChanged = false;
|
|
405
|
+
if (filterInListEnabled) {
|
|
406
|
+
var _config$tableLength, _columnListLengthCach;
|
|
407
|
+
var currentListLen = (_config$tableLength = config.tableLength) !== null && _config$tableLength !== void 0 ? _config$tableLength : 0;
|
|
408
|
+
var prevListLen = (_columnListLengthCach = columnListLengthCache.get(columnCacheKey)) !== null && _columnListLengthCach !== void 0 ? _columnListLengthCach : -1;
|
|
409
|
+
if (prevListLen !== currentListLen) {
|
|
410
|
+
filterListChanged = true;
|
|
411
|
+
columnListLengthCache.set(columnCacheKey, currentListLen);
|
|
397
412
|
}
|
|
413
|
+
}
|
|
414
|
+
item.shouldCellUpdate = (record, prevRecord) => {
|
|
415
|
+
// dataSource 变化:所有行均需更新(修复异步加载 dataSource 只更新第一行的问题)
|
|
416
|
+
if (dataSourceChanged) return true;
|
|
417
|
+
// filterInList 列的行数变化:强制全量重渲染,避免行索引移位时闭包失效导致显示错误
|
|
418
|
+
if (filterListChanged) return true;
|
|
398
419
|
if ((record === null || record === void 0 ? void 0 : record.rowKey) !== (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord.rowKey)) {
|
|
399
420
|
return true;
|
|
400
421
|
}
|
|
422
|
+
// 拖拽排序时,行数据不变但位置(_dragIndex)变化,需强制重渲染以更新 cellName(Form.Item name)
|
|
423
|
+
if ((record === null || record === void 0 ? void 0 : record._dragIndex) !== (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord._dragIndex)) {
|
|
424
|
+
return true;
|
|
425
|
+
}
|
|
401
426
|
// 单行编辑模式下,需要检测编辑状态变化
|
|
402
427
|
if (virtualKey && (record === null || record === void 0 ? void 0 : record._isEditing) !== (prevRecord === null || prevRecord === void 0 ? void 0 : prevRecord._isEditing)) {
|
|
403
428
|
return true;
|