@zat-design/sisyphus-react 3.11.5-beta.4 → 3.11.5-beta.6
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 +27 -3
- package/es/ProTable/utils/index.d.ts +2 -2
- package/es/ProTable/utils/index.js +1 -0
- package/lib/ProDrawerForm/components/ProDrawer/index.js +26 -2
- package/lib/ProTable/utils/index.d.ts +2 -2
- package/lib/ProTable/utils/index.js +1 -0
- package/package.json +1 -1
@@ -9,7 +9,7 @@ import _Modal from "antd/es/modal";
|
|
9
9
|
import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
|
10
10
|
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
11
11
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
12
|
-
import React, { useCallback, useState, useRef } from 'react';
|
12
|
+
import React, { useCallback, useState, useRef, useEffect } from 'react';
|
13
13
|
import { useScroll } from 'ahooks';
|
14
14
|
import { isArray } from 'lodash';
|
15
15
|
import { ReactSVG } from 'react-svg';
|
@@ -46,13 +46,37 @@ var ProDrawer = function ProDrawer(_ref) {
|
|
46
46
|
_useState2 = _slicedToArray(_useState, 2),
|
47
47
|
loading = _useState2[0],
|
48
48
|
toggleLoading = _useState2[1];
|
49
|
+
var _useState3 = useState(''),
|
50
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
51
|
+
initialSnapshot = _useState4[0],
|
52
|
+
setInitialSnapshot = _useState4[1];
|
49
53
|
var noRenderFooter = isView || footer === false || footer === null;
|
54
|
+
// 使用 useEffect 在 visible 变更时延迟捕获 初始DOM 快照
|
55
|
+
useEffect(function () {
|
56
|
+
if (visible) {
|
57
|
+
// 延迟到下一个事件循环,确保 Drawer 已经渲染
|
58
|
+
var timeoutId = setTimeout(function () {
|
59
|
+
if (ref.current) {
|
60
|
+
setInitialSnapshot(ref.current.innerHTML); // 捕获 DOM 快照
|
61
|
+
}
|
62
|
+
}, 100); // 使用 setTimeout 让 DOM 渲染完成后再执行
|
63
|
+
return function () {
|
64
|
+
return clearTimeout(timeoutId);
|
65
|
+
}; // 清理定时器
|
66
|
+
}
|
67
|
+
}, [visible]); // 当 visible 变化时执行
|
68
|
+
// 快照对比
|
69
|
+
var compareSnapshots = function compareSnapshots() {
|
70
|
+
if (!ref.current) return false;
|
71
|
+
return ref.current.innerHTML !== initialSnapshot;
|
72
|
+
};
|
50
73
|
var onConfirm = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
51
74
|
var _locale$ProDrawerForm, _locale$ProDrawerForm2, _locale$ProDrawerForm3, _locale$ProDrawerForm4;
|
52
75
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
53
76
|
while (1) switch (_context.prev = _context.next) {
|
54
77
|
case 0:
|
55
|
-
|
78
|
+
// 如果当前是查看状态,或者不需要确认关闭,或者快照对比不一致,则直接关闭
|
79
|
+
if (isView || !isConfirmClose || !compareSnapshots()) {
|
56
80
|
onCancel && onCancel();
|
57
81
|
} else if (!modalRef.current) {
|
58
82
|
modalRef.current = _Modal.confirm(_objectSpread({
|
@@ -74,7 +98,7 @@ var ProDrawer = function ProDrawer(_ref) {
|
|
74
98
|
return _context.stop();
|
75
99
|
}
|
76
100
|
}, _callee);
|
77
|
-
})), [onCancel, modalRef.current]);
|
101
|
+
})), [onCancel, modalRef.current, ref.current]);
|
78
102
|
var handleFinish = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
79
103
|
var values, _error$errorFields, _error$errorFields$;
|
80
104
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
@@ -30,8 +30,8 @@ export declare const isListResult: (data: {
|
|
30
30
|
}) => boolean;
|
31
31
|
export declare const getRowKey: (rowKey: any, record: any) => any;
|
32
32
|
/** 移除对象中的 null , undefined, '' 的key */
|
33
|
-
export declare const removeEmptyKeys: (obj
|
34
|
-
[k: string]:
|
33
|
+
export declare const removeEmptyKeys: (obj?: Record<string, any>) => {
|
34
|
+
[k: string]: any;
|
35
35
|
};
|
36
36
|
export declare const getPadding: (el: HTMLElement) => {
|
37
37
|
pLeft: number;
|
@@ -75,6 +75,7 @@ export var getRowKey = function getRowKey(rowKey, record) {
|
|
75
75
|
};
|
76
76
|
/** 移除对象中的 null , undefined, '' 的key */
|
77
77
|
export var removeEmptyKeys = function removeEmptyKeys(obj) {
|
78
|
+
if (!obj) return {};
|
78
79
|
// 使用 Object.entries() 将对象转换为键值对数组
|
79
80
|
var entries = Object.entries(obj);
|
80
81
|
// 过滤掉值为 null, undefined, 或 '' 的键值对
|
@@ -49,13 +49,37 @@ var ProDrawer = function ProDrawer(_ref) {
|
|
49
49
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
50
50
|
loading = _useState2[0],
|
51
51
|
toggleLoading = _useState2[1];
|
52
|
+
var _useState3 = (0, _react.useState)(''),
|
53
|
+
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
|
54
|
+
initialSnapshot = _useState4[0],
|
55
|
+
setInitialSnapshot = _useState4[1];
|
52
56
|
var noRenderFooter = isView || footer === false || footer === null;
|
57
|
+
// 使用 useEffect 在 visible 变更时延迟捕获 初始DOM 快照
|
58
|
+
(0, _react.useEffect)(function () {
|
59
|
+
if (visible) {
|
60
|
+
// 延迟到下一个事件循环,确保 Drawer 已经渲染
|
61
|
+
var timeoutId = setTimeout(function () {
|
62
|
+
if (ref.current) {
|
63
|
+
setInitialSnapshot(ref.current.innerHTML); // 捕获 DOM 快照
|
64
|
+
}
|
65
|
+
}, 100); // 使用 setTimeout 让 DOM 渲染完成后再执行
|
66
|
+
return function () {
|
67
|
+
return clearTimeout(timeoutId);
|
68
|
+
}; // 清理定时器
|
69
|
+
}
|
70
|
+
}, [visible]); // 当 visible 变化时执行
|
71
|
+
// 快照对比
|
72
|
+
var compareSnapshots = function compareSnapshots() {
|
73
|
+
if (!ref.current) return false;
|
74
|
+
return ref.current.innerHTML !== initialSnapshot;
|
75
|
+
};
|
53
76
|
var onConfirm = (0, _react.useCallback)(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee() {
|
54
77
|
var _locale$ProDrawerForm, _locale$ProDrawerForm2, _locale$ProDrawerForm3, _locale$ProDrawerForm4;
|
55
78
|
return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
|
56
79
|
while (1) switch (_context.prev = _context.next) {
|
57
80
|
case 0:
|
58
|
-
|
81
|
+
// 如果当前是查看状态,或者不需要确认关闭,或者快照对比不一致,则直接关闭
|
82
|
+
if (isView || !isConfirmClose || !compareSnapshots()) {
|
59
83
|
onCancel && onCancel();
|
60
84
|
} else if (!modalRef.current) {
|
61
85
|
modalRef.current = _antd.Modal.confirm((0, _objectSpread2.default)({
|
@@ -77,7 +101,7 @@ var ProDrawer = function ProDrawer(_ref) {
|
|
77
101
|
return _context.stop();
|
78
102
|
}
|
79
103
|
}, _callee);
|
80
|
-
})), [onCancel, modalRef.current]);
|
104
|
+
})), [onCancel, modalRef.current, ref.current]);
|
81
105
|
var handleFinish = (0, _react.useCallback)(/*#__PURE__*/(0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee2() {
|
82
106
|
var values, _error$errorFields, _error$errorFields$;
|
83
107
|
return (0, _regeneratorRuntime2.default)().wrap(function _callee2$(_context2) {
|
@@ -30,8 +30,8 @@ export declare const isListResult: (data: {
|
|
30
30
|
}) => boolean;
|
31
31
|
export declare const getRowKey: (rowKey: any, record: any) => any;
|
32
32
|
/** 移除对象中的 null , undefined, '' 的key */
|
33
|
-
export declare const removeEmptyKeys: (obj
|
34
|
-
[k: string]:
|
33
|
+
export declare const removeEmptyKeys: (obj?: Record<string, any>) => {
|
34
|
+
[k: string]: any;
|
35
35
|
};
|
36
36
|
export declare const getPadding: (el: HTMLElement) => {
|
37
37
|
pLeft: number;
|
@@ -82,6 +82,7 @@ var getRowKey = exports.getRowKey = function getRowKey(rowKey, record) {
|
|
82
82
|
};
|
83
83
|
/** 移除对象中的 null , undefined, '' 的key */
|
84
84
|
var removeEmptyKeys = exports.removeEmptyKeys = function removeEmptyKeys(obj) {
|
85
|
+
if (!obj) return {};
|
85
86
|
// 使用 Object.entries() 将对象转换为键值对数组
|
86
87
|
var entries = Object.entries(obj);
|
87
88
|
// 过滤掉值为 null, undefined, 或 '' 的键值对
|