@zat-design/sisyphus-react 3.11.5-beta.5 → 3.11.5-beta.7

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.
@@ -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
- if (isView || !isConfirmClose) {
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) {
@@ -14,6 +14,7 @@ interface DragRenderProps extends Pick<ProUploadProps, 'buttonProps' | 'disabled
14
14
  afterRender: string | ReactNode;
15
15
  extExt: any[];
16
16
  isConfirmDelete?: boolean;
17
+ onRemove?: (file: UploadFile) => any | Promise<any>;
17
18
  }
18
19
  declare const ButtonRender: FC<DragRenderProps>;
19
20
  export default ButtonRender;
@@ -2,6 +2,8 @@ import "antd/es/button/style";
2
2
  import _Button from "antd/es/button";
3
3
  import "antd/es/upload/style";
4
4
  import _Upload from "antd/es/upload";
5
+ import _regeneratorRuntime from "@babel/runtime/helpers/esm/regeneratorRuntime";
6
+ import _asyncToGenerator from "@babel/runtime/helpers/esm/asyncToGenerator";
5
7
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
6
8
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
9
  import { DndContext } from '@dnd-kit/core';
@@ -26,7 +28,8 @@ var ButtonRender = function ButtonRender(props) {
26
28
  afterRender = props.afterRender,
27
29
  _props$buttonText = props.buttonText,
28
30
  buttonText = _props$buttonText === void 0 ? locale === null || locale === void 0 ? void 0 : (_locale$ProUpload = locale.ProUpload) === null || _locale$ProUpload === void 0 ? void 0 : _locale$ProUpload.buttonText : _props$buttonText,
29
- isConfirmDelete = props.isConfirmDelete;
31
+ isConfirmDelete = props.isConfirmDelete,
32
+ _onRemove = props.onRemove;
30
33
  // 按钮类型的props
31
34
  var buttonUploadProps = _objectSpread(_objectSpread({}, baseUploadProps), {}, {
32
35
  fileList: fileList,
@@ -38,7 +41,34 @@ var ButtonRender = function ButtonRender(props) {
38
41
  file: file,
39
42
  isConfirmDelete: isConfirmDelete,
40
43
  onPreview: onPreview,
41
- onRemove: actions.remove,
44
+ onRemove: function () {
45
+ var _onRemove2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(file) {
46
+ var res;
47
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
48
+ while (1) switch (_context.prev = _context.next) {
49
+ case 0:
50
+ _context.next = 2;
51
+ return _onRemove === null || _onRemove === void 0 ? void 0 : _onRemove(file);
52
+ case 2:
53
+ res = _context.sent;
54
+ if (!(res === false)) {
55
+ _context.next = 5;
56
+ break;
57
+ }
58
+ return _context.abrupt("return");
59
+ case 5:
60
+ actions.remove(file);
61
+ case 6:
62
+ case "end":
63
+ return _context.stop();
64
+ }
65
+ }, _callee);
66
+ }));
67
+ function onRemove(_x) {
68
+ return _onRemove2.apply(this, arguments);
69
+ }
70
+ return onRemove;
71
+ }(),
42
72
  onDownload: onDownload
43
73
  })
44
74
  });
@@ -13,7 +13,7 @@ interface DragRenderProps extends Pick<ProUploadProps, 'buttonProps' | 'disabled
13
13
  onPreview: any;
14
14
  onDownload: any;
15
15
  extExt: any[];
16
- onRemove: (file: UploadFile) => void | Promise<boolean>;
16
+ onRemove: (file: UploadFile) => any | Promise<any>;
17
17
  }
18
18
  declare const ImageRender: FC<DragRenderProps>;
19
19
  export default ImageRender;
@@ -265,7 +265,7 @@ var ProUpload = /*#__PURE__*/React.forwardRef(function (props, ref) {
265
265
  onDragEnd: onDragEnd,
266
266
  onPreview: onPreview,
267
267
  onDownload: onDownload,
268
- onRemove: handleRemove,
268
+ onRemove: onRemove,
269
269
  onChange: onChange,
270
270
  setFileList: setFileList,
271
271
  extExt: extExt,
@@ -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
- if (isView || !isConfirmClose) {
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) {
@@ -14,6 +14,7 @@ interface DragRenderProps extends Pick<ProUploadProps, 'buttonProps' | 'disabled
14
14
  afterRender: string | ReactNode;
15
15
  extExt: any[];
16
16
  isConfirmDelete?: boolean;
17
+ onRemove?: (file: UploadFile) => any | Promise<any>;
17
18
  }
18
19
  declare const ButtonRender: FC<DragRenderProps>;
19
20
  export default ButtonRender;
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.default = void 0;
8
+ var _regeneratorRuntime2 = _interopRequireDefault(require("@babel/runtime/helpers/regeneratorRuntime"));
9
+ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
8
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
9
11
  var _jsxRuntime = require("react/jsx-runtime");
10
12
  var _antd = require("antd");
@@ -30,7 +32,8 @@ var ButtonRender = function ButtonRender(props) {
30
32
  afterRender = props.afterRender,
31
33
  _props$buttonText = props.buttonText,
32
34
  buttonText = _props$buttonText === void 0 ? _locale.default === null || _locale.default === void 0 ? void 0 : (_locale$ProUpload = _locale.default.ProUpload) === null || _locale$ProUpload === void 0 ? void 0 : _locale$ProUpload.buttonText : _props$buttonText,
33
- isConfirmDelete = props.isConfirmDelete;
35
+ isConfirmDelete = props.isConfirmDelete,
36
+ _onRemove = props.onRemove;
34
37
  // 按钮类型的props
35
38
  var buttonUploadProps = (0, _objectSpread2.default)((0, _objectSpread2.default)({}, baseUploadProps), {}, {
36
39
  fileList: fileList,
@@ -42,7 +45,34 @@ var ButtonRender = function ButtonRender(props) {
42
45
  file: file,
43
46
  isConfirmDelete: isConfirmDelete,
44
47
  onPreview: onPreview,
45
- onRemove: actions.remove,
48
+ onRemove: function () {
49
+ var _onRemove2 = (0, _asyncToGenerator2.default)(/*#__PURE__*/(0, _regeneratorRuntime2.default)().mark(function _callee(file) {
50
+ var res;
51
+ return (0, _regeneratorRuntime2.default)().wrap(function _callee$(_context) {
52
+ while (1) switch (_context.prev = _context.next) {
53
+ case 0:
54
+ _context.next = 2;
55
+ return _onRemove === null || _onRemove === void 0 ? void 0 : _onRemove(file);
56
+ case 2:
57
+ res = _context.sent;
58
+ if (!(res === false)) {
59
+ _context.next = 5;
60
+ break;
61
+ }
62
+ return _context.abrupt("return");
63
+ case 5:
64
+ actions.remove(file);
65
+ case 6:
66
+ case "end":
67
+ return _context.stop();
68
+ }
69
+ }, _callee);
70
+ }));
71
+ function onRemove(_x) {
72
+ return _onRemove2.apply(this, arguments);
73
+ }
74
+ return onRemove;
75
+ }(),
46
76
  onDownload: onDownload
47
77
  })
48
78
  });
@@ -13,7 +13,7 @@ interface DragRenderProps extends Pick<ProUploadProps, 'buttonProps' | 'disabled
13
13
  onPreview: any;
14
14
  onDownload: any;
15
15
  extExt: any[];
16
- onRemove: (file: UploadFile) => void | Promise<boolean>;
16
+ onRemove: (file: UploadFile) => any | Promise<any>;
17
17
  }
18
18
  declare const ImageRender: FC<DragRenderProps>;
19
19
  export default ImageRender;
@@ -272,7 +272,7 @@ var ProUpload = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
272
272
  onDragEnd: onDragEnd,
273
273
  onPreview: onPreview,
274
274
  onDownload: onDownload,
275
- onRemove: handleRemove,
275
+ onRemove: onRemove,
276
276
  onChange: onChange,
277
277
  setFileList: setFileList,
278
278
  extExt: extExt,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zat-design/sisyphus-react",
3
- "version": "3.11.5-beta.5",
3
+ "version": "3.11.5-beta.7",
4
4
  "license": "Apache-2.0",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",