@arco-design/mobile-react 2.21.2 → 2.22.0

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.
Files changed (96) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.en-US.md +2 -2
  3. package/README.md +2 -2
  4. package/cjs/_helpers/index.d.ts +1 -0
  5. package/cjs/_helpers/index.js +9 -0
  6. package/cjs/_helpers/react-dom.d.ts +13 -0
  7. package/cjs/_helpers/react-dom.js +65 -0
  8. package/cjs/_helpers/render.d.ts +10 -0
  9. package/cjs/_helpers/render.js +40 -0
  10. package/cjs/action-sheet/index.d.ts +1 -1
  11. package/cjs/ellipsis/components/js-ellipsis.js +7 -1
  12. package/cjs/image-picker/index.js +0 -1
  13. package/cjs/image-picker/style/css/index.d.ts +1 -0
  14. package/cjs/image-picker/style/css/index.js +2 -0
  15. package/cjs/image-picker/style/index.d.ts +1 -0
  16. package/cjs/image-picker/style/index.js +2 -0
  17. package/cjs/image-preview/index.d.ts +2 -10
  18. package/cjs/image-preview/methods.js +4 -11
  19. package/cjs/masking/index.d.ts +10 -0
  20. package/cjs/masking/methods.js +4 -11
  21. package/cjs/notify/methods.js +6 -9
  22. package/cjs/popover/hooks/useEvent.js +6 -6
  23. package/cjs/swipe-action/index.js +21 -3
  24. package/cjs/tabs/index.d.ts +3 -463
  25. package/cjs/tabs/index.js +15 -2
  26. package/cjs/tabs/tab-cell-underline.d.ts +4 -0
  27. package/cjs/tabs/tab-cell-underline.js +234 -0
  28. package/cjs/tabs/tab-cell.d.ts +1 -85
  29. package/cjs/tabs/tab-cell.js +57 -201
  30. package/cjs/tabs/tab-pane.d.ts +2 -38
  31. package/cjs/tabs/type.d.ts +601 -0
  32. package/cjs/tabs/type.js +3 -0
  33. package/cjs/toast/methods.js +9 -12
  34. package/dist/index.js +439 -271
  35. package/dist/index.min.js +3 -3
  36. package/esm/_helpers/index.d.ts +1 -0
  37. package/esm/_helpers/index.js +1 -0
  38. package/esm/_helpers/react-dom.d.ts +13 -0
  39. package/esm/_helpers/react-dom.js +57 -0
  40. package/esm/_helpers/render.d.ts +10 -0
  41. package/esm/_helpers/render.js +29 -0
  42. package/esm/action-sheet/index.d.ts +1 -1
  43. package/esm/ellipsis/components/js-ellipsis.js +7 -1
  44. package/esm/image-picker/index.js +0 -1
  45. package/esm/image-picker/style/css/index.d.ts +1 -0
  46. package/esm/image-picker/style/css/index.js +1 -0
  47. package/esm/image-picker/style/index.d.ts +1 -0
  48. package/esm/image-picker/style/index.js +1 -0
  49. package/esm/image-preview/index.d.ts +2 -10
  50. package/esm/image-preview/methods.js +3 -9
  51. package/esm/masking/index.d.ts +10 -0
  52. package/esm/masking/methods.js +3 -9
  53. package/esm/notify/methods.js +6 -7
  54. package/esm/popover/hooks/useEvent.js +6 -6
  55. package/esm/swipe-action/index.js +21 -3
  56. package/esm/tabs/index.d.ts +3 -463
  57. package/esm/tabs/index.js +7 -3
  58. package/esm/tabs/tab-cell-underline.d.ts +4 -0
  59. package/esm/tabs/tab-cell-underline.js +218 -0
  60. package/esm/tabs/tab-cell.d.ts +1 -85
  61. package/esm/tabs/tab-cell.js +59 -204
  62. package/esm/tabs/tab-pane.d.ts +2 -38
  63. package/esm/tabs/type.d.ts +601 -0
  64. package/esm/tabs/type.js +1 -0
  65. package/esm/toast/methods.js +8 -9
  66. package/package.json +3 -3
  67. package/umd/_helpers/index.d.ts +1 -0
  68. package/umd/_helpers/index.js +10 -4
  69. package/umd/_helpers/react-dom.d.ts +13 -0
  70. package/umd/_helpers/react-dom.js +78 -0
  71. package/umd/_helpers/render.d.ts +10 -0
  72. package/umd/_helpers/render.js +51 -0
  73. package/umd/action-sheet/index.d.ts +1 -1
  74. package/umd/ellipsis/components/js-ellipsis.js +7 -1
  75. package/umd/image-picker/index.js +0 -1
  76. package/umd/image-picker/style/css/index.d.ts +1 -0
  77. package/umd/image-picker/style/css/index.js +4 -4
  78. package/umd/image-picker/style/index.d.ts +1 -0
  79. package/umd/image-picker/style/index.js +4 -4
  80. package/umd/image-preview/index.d.ts +2 -10
  81. package/umd/image-preview/methods.js +6 -13
  82. package/umd/masking/index.d.ts +10 -0
  83. package/umd/masking/methods.js +6 -13
  84. package/umd/notify/methods.js +9 -12
  85. package/umd/popover/hooks/useEvent.js +6 -6
  86. package/umd/swipe-action/index.js +21 -3
  87. package/umd/tabs/index.d.ts +3 -463
  88. package/umd/tabs/index.js +16 -6
  89. package/umd/tabs/tab-cell-underline.d.ts +4 -0
  90. package/umd/tabs/tab-cell-underline.js +242 -0
  91. package/umd/tabs/tab-cell.d.ts +1 -85
  92. package/umd/tabs/tab-cell.js +60 -205
  93. package/umd/tabs/tab-pane.d.ts +2 -38
  94. package/umd/tabs/type.d.ts +601 -0
  95. package/umd/tabs/type.js +17 -0
  96. package/umd/toast/methods.js +11 -14
package/CHANGELOG.md CHANGED
@@ -3,6 +3,36 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [2.22.0](https://github.com/arco-design/arco-design-mobile/compare/@arco-design/mobile-react@2.21.3...@arco-design/mobile-react@2.22.0) (2022-10-28)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * `SwipeAction` prevent touchmove by gesture ([#59](https://github.com/arco-design/arco-design-mobile/issues/59)) ([c9ef474](https://github.com/arco-design/arco-design-mobile/commit/c9ef474312eb9f9af736431f16147cfb56dee623))
12
+ * `Tabs` supports tabBarStopPropagation ([#62](https://github.com/arco-design/arco-design-mobile/issues/62)) ([ba24d17](https://github.com/arco-design/arco-design-mobile/commit/ba24d178320e12b0aa95e5d75feb34e5e5163af4))
13
+
14
+
15
+ ### Features
16
+
17
+ * add support for react18 ([#57](https://github.com/arco-design/arco-design-mobile/issues/57)) ([7cbb4fc](https://github.com/arco-design/arco-design-mobile/commit/7cbb4fcd5bd8c2809141bf0546f42ecf3367fd73))
18
+
19
+
20
+
21
+
22
+
23
+ ## [2.21.3](https://github.com/arco-design/arco-design-mobile/compare/@arco-design/mobile-react@2.21.2...@arco-design/mobile-react@2.21.3) (2022-09-30)
24
+
25
+
26
+ ### Bug Fixes
27
+
28
+ * `Ellipsis` special case for truncateHTML ([fa9db03](https://github.com/arco-design/arco-design-mobile/commit/fa9db03baecbb378e38d2217eddb85dec59d27d4))
29
+ * `ImagePicker` import grid style ([e257ce0](https://github.com/arco-design/arco-design-mobile/commit/e257ce00dc3ecd4c61934149751fb817d3242159))
30
+ * `Tabs` tab bar underline optimize ([20c9621](https://github.com/arco-design/arco-design-mobile/commit/20c962113e8a0dc43995813dda328239a1807a50))
31
+
32
+
33
+
34
+
35
+
6
36
  ## [2.21.2](https://github.com/arco-design/arco-design-mobile/compare/@arco-design/mobile-react@2.21.1...@arco-design/mobile-react@2.21.2) (2022-09-07)
7
37
 
8
38
 
package/README.en-US.md CHANGED
@@ -59,8 +59,8 @@ React & ReactDOM: **<a href="https://reactjs.org/docs/cdn-links.html" target="_b
59
59
  React Transition Group: **<a href="https://reactcommunity.org/react-transition-group/" target="_blank">Click here</a>**
60
60
 
61
61
  ```
62
- <link ref="stylesheet" href="https://unpkg.com/@arco-design/mobile-react@2.21.1/dist/style.min.css">
63
- <script src="https://unpkg.com/@arco-design/mobile-react@2.21.1/dist/index.min.js"></script>
62
+ <link ref="stylesheet" href="https://unpkg.com/@arco-design/mobile-react@2.21.3/dist/style.min.css">
63
+ <script src="https://unpkg.com/@arco-design/mobile-react@2.21.3/dist/index.min.js"></script>
64
64
  ```
65
65
 
66
66
  ## Full import
package/README.md CHANGED
@@ -59,8 +59,8 @@ React & ReactDOM: **<a href="https://reactjs.org/docs/cdn-links.html" target="
59
59
  React Transition Group: **<a href="https://reactcommunity.org/react-transition-group/" target="_blank">戳这里获取</a>**
60
60
 
61
61
  ```
62
- <link ref="stylesheet" href="https://unpkg.com/@arco-design/mobile-react@2.21.1/dist/style.min.css">
63
- <script src="https://unpkg.com/@arco-design/mobile-react@2.21.1/dist/index.min.js"></script>
62
+ <link ref="stylesheet" href="https://unpkg.com/@arco-design/mobile-react@2.21.3/dist/style.min.css">
63
+ <script src="https://unpkg.com/@arco-design/mobile-react@2.21.3/dist/index.min.js"></script>
64
64
  ```
65
65
 
66
66
  ## 引入全部
@@ -5,6 +5,7 @@
5
5
  import { CSSProperties } from 'react';
6
6
  export * from './hooks';
7
7
  export * from './type';
8
+ export * from './react-dom';
8
9
  export declare function getStyleWithVendor(style: CSSProperties): CSSProperties;
9
10
  /**
10
11
  * 计算默认值,仅未定义时使用默认值
@@ -30,6 +30,15 @@ Object.keys(_type).forEach(function (key) {
30
30
  exports[key] = _type[key];
31
31
  });
32
32
 
33
+ var _reactDom = require("./react-dom");
34
+
35
+ Object.keys(_reactDom).forEach(function (key) {
36
+ if (key === "default" || key === "__esModule") return;
37
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
38
+ if (key in exports && exports[key] === _reactDom[key]) return;
39
+ exports[key] = _reactDom[key];
40
+ });
41
+
33
42
  /**
34
43
  * @type utils
35
44
  * @name componentUtils
@@ -0,0 +1,13 @@
1
+ import { ReactElement } from 'react';
2
+ export interface RootType {
3
+ render: (container: ReactElement) => void;
4
+ _unmount: () => void;
5
+ }
6
+ export interface RootTypeReact extends RootType {
7
+ unmount?: () => void;
8
+ }
9
+ export declare type CreateRootFnType = (container: Element | DocumentFragment) => RootTypeReact;
10
+ export declare const render: (app: ReactElement, container: Element | DocumentFragment) => {
11
+ render: (container: ReactElement) => void;
12
+ _unmount: () => void;
13
+ };
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.render = void 0;
7
+
8
+ var _reactDom = _interopRequireDefault(require("react-dom"));
9
+
10
+ var _CopyReactDOM$version;
11
+
12
+ function isObject(obj) {
13
+ return Object.prototype.toString.call(obj) === '[object Object]';
14
+ }
15
+
16
+ var __SECRET_INTERNALS__ = '__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED';
17
+ var CopyReactDOM = _reactDom.default;
18
+ var copyRender;
19
+ var isReact18 = Number((_CopyReactDOM$version = CopyReactDOM.version) == null ? void 0 : _CopyReactDOM$version.split('.')[0]) > 17;
20
+
21
+ var updateUsingClientEntryPoint = function updateUsingClientEntryPoint(skipWarning) {
22
+ // https://github.com/facebook/react/blob/17806594cc28284fe195f918e8d77de3516848ec/packages/react-dom/npm/client.js#L10
23
+ // Avoid console warning
24
+ if (isObject(CopyReactDOM[__SECRET_INTERNALS__])) {
25
+ CopyReactDOM[__SECRET_INTERNALS__].usingClientEntryPoint = skipWarning;
26
+ }
27
+ };
28
+
29
+ var createRoot;
30
+
31
+ try {
32
+ createRoot = CopyReactDOM.createRoot;
33
+ } catch (_) {}
34
+
35
+ if (isReact18 && createRoot) {
36
+ copyRender = function copyRender(app, container) {
37
+ updateUsingClientEntryPoint(true);
38
+ var root = createRoot(container);
39
+ updateUsingClientEntryPoint(false);
40
+ root.render(app);
41
+
42
+ root._unmount = function () {
43
+ setTimeout(function () {
44
+ root == null ? void 0 : root.unmount == null ? void 0 : root.unmount();
45
+ });
46
+ };
47
+
48
+ return root;
49
+ };
50
+ } else {
51
+ copyRender = function copyRender(app, container) {
52
+ CopyReactDOM.render(app, container);
53
+ return {
54
+ render: function render(comment) {
55
+ CopyReactDOM.render(comment, container);
56
+ },
57
+ _unmount: function _unmount() {
58
+ CopyReactDOM.unmountComponentAtNode(container);
59
+ }
60
+ };
61
+ };
62
+ }
63
+
64
+ var render = copyRender;
65
+ exports.render = render;
@@ -0,0 +1,10 @@
1
+ import { FunctionComponent } from 'react';
2
+ import { RootType } from './react-dom';
3
+ export declare class ReactDOMRender {
4
+ root: RootType | undefined;
5
+ app: FunctionComponent;
6
+ container: Element | DocumentFragment;
7
+ constructor(app: FunctionComponent, container: Element | DocumentFragment);
8
+ render: (props: any) => void;
9
+ unmount: () => void;
10
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ exports.__esModule = true;
6
+ exports.ReactDOMRender = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _reactDom = require("./react-dom");
11
+
12
+ var ReactDOMRender = function ReactDOMRender(app, container) {
13
+ var _this = this;
14
+
15
+ this.root = void 0;
16
+ this.app = void 0;
17
+ this.container = void 0;
18
+
19
+ this.render = function (props) {
20
+ var CustomApp = _this.app;
21
+
22
+ if (_this.root) {
23
+ _this.root.render( /*#__PURE__*/_react.default.createElement(CustomApp, props));
24
+ } else {
25
+ _this.root = (0, _reactDom.render)( /*#__PURE__*/_react.default.createElement(CustomApp, props), _this.container);
26
+ }
27
+ };
28
+
29
+ this.unmount = function () {
30
+ var _this$root;
31
+
32
+ (_this$root = _this.root) == null ? void 0 : _this$root._unmount();
33
+ _this.root = undefined;
34
+ };
35
+
36
+ this.app = app;
37
+ this.container = container;
38
+ };
39
+
40
+ exports.ReactDOMRender = ReactDOMRender;
@@ -26,7 +26,7 @@ export interface ActionSheetItemOptions {
26
26
  * 点击选项事件,返回值为 true 时可以阻止动作面板关闭
27
27
  * @en Click option event, actionSheet will be prevent from closing when returning true
28
28
  */
29
- onClick?: (e: React.MouseEvent<HTMLElement, MouseEvent>) => (void | boolean) | Promise<void | boolean>;
29
+ onClick?: (e?: React.MouseEvent<HTMLElement, MouseEvent>) => (void | boolean) | Promise<void | boolean>;
30
30
  }
31
31
  export interface ActionSheetProps extends Omit<PopupProps, 'children' | 'getScrollContainer' | 'orientationDirection' | 'direction'> {
32
32
  /**
@@ -127,7 +127,13 @@ var JsEllipsis = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
127
127
  _height = _container$getBoundin3.height;
128
128
 
129
129
  if (_height > max) {
130
- break;
130
+ if (nodes[i].childNodes && nodes[i].childNodes.length) {
131
+ break;
132
+ } else {
133
+ textContainer.removeChild(nodes[i]);
134
+ handleOnReflow(true, textContainer.innerHTML);
135
+ return;
136
+ }
131
137
  }
132
138
 
133
139
  i++;
@@ -194,7 +194,6 @@ var ImagePicker = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
194
194
  var timeOutEvent;
195
195
 
196
196
  var handleTouchStart = function handleTouchStart(e, image, index) {
197
- e.preventDefault();
198
197
  timeOutEvent = setTimeout(function () {
199
198
  timeOutEvent = 0;
200
199
  onLongPress == null ? void 0 : onLongPress(e, image, index);
@@ -1,2 +1,3 @@
1
1
  import '../../../../style/css/public.css';
2
+ import '../../../grid/style/css';
2
3
  import './index.css';
@@ -2,4 +2,6 @@
2
2
 
3
3
  require("../../../../style/css/public.css");
4
4
 
5
+ require("../../../grid/style/css");
6
+
5
7
  require("./index.css");
@@ -1,2 +1,3 @@
1
1
  import '../../../style/public.less';
2
+ import '../../grid/style';
2
3
  import './index.less';
@@ -2,4 +2,6 @@
2
2
 
3
3
  require("../../../style/public.less");
4
4
 
5
+ require("../../grid/style");
6
+
5
7
  require("./index.less");
@@ -254,11 +254,7 @@ export declare function methodsGenerator<P extends ImagePreviewProps>(Comp: Reac
254
254
  */
255
255
  open: (config: Pick<P, Exclude<keyof P, "close">>) => {
256
256
  close: () => void;
257
- update: (newConfig: Pick<P, Exclude<keyof P, "close">>) => void; /**
258
- * 是否可循环滑动
259
- * @en Whether it can be swiped circularly
260
- * @default false
261
- */
257
+ update: (newConfig: Pick<P, Exclude<keyof P, "close">>) => void;
262
258
  };
263
259
  };
264
260
  declare const _default: React.ForwardRefExoticComponent<ImagePreviewProps & React.RefAttributes<ImagePreviewRef>> & {
@@ -270,11 +266,7 @@ declare const _default: React.ForwardRefExoticComponent<ImagePreviewProps & Reac
270
266
  */
271
267
  open: (config: Pick<ImagePreviewProps & React.RefAttributes<ImagePreviewRef>, "style" | "ref" | "key" | "getContainer" | "className" | "onClose" | "onTouchMove" | "fit" | "loadingArea" | "errorArea" | "showLoading" | "showError" | "retryTime" | "staticLabel" | "onChange" | "onTouchEnd" | "onTouchStart" | "animateDurationSlide" | "loop" | "swipeable" | "renderIndicator" | "indicatorPos" | "showIndicator" | "hideSingleIndicator" | "spaceBetween" | "percentToChange" | "distanceToChange" | "speedToChange" | "lazyloadCount" | "onAfterChange" | "images" | "openIndex" | "displayDuration" | "replaceFallbackWhenLoaded" | "noselect" | "scrollBezier" | "swipeToClose" | "getMinScale" | "getMaxScale" | "getDoubleClickScale" | "getThumbBounds" | "onImageClick" | "onImageDoubleClick" | "onImageLongTap">) => {
272
268
  close: () => void;
273
- update: (newConfig: Pick<ImagePreviewProps & React.RefAttributes<ImagePreviewRef>, "style" | "ref" | "key" | "getContainer" | "className" | "onClose" | "onTouchMove" | "fit" | "loadingArea" | "errorArea" | "showLoading" | "showError" | "retryTime" | "staticLabel" | "onChange" | "onTouchEnd" | "onTouchStart" | "animateDurationSlide" | "loop" | "swipeable" | "renderIndicator" | "indicatorPos" | "showIndicator" | "hideSingleIndicator" | "spaceBetween" | "percentToChange" | "distanceToChange" | "speedToChange" | "lazyloadCount" | "onAfterChange" | "images" | "openIndex" | "displayDuration" | "replaceFallbackWhenLoaded" | "noselect" | "scrollBezier" | "swipeToClose" | "getMinScale" | "getMaxScale" | "getDoubleClickScale" | "getThumbBounds" | "onImageClick" | "onImageDoubleClick" | "onImageLongTap">) => void; /**
274
- * 是否可循环滑动
275
- * @en Whether it can be swiped circularly
276
- * @default false
277
- */
269
+ update: (newConfig: Pick<ImagePreviewProps & React.RefAttributes<ImagePreviewRef>, "style" | "ref" | "key" | "getContainer" | "className" | "onClose" | "onTouchMove" | "fit" | "loadingArea" | "errorArea" | "showLoading" | "showError" | "retryTime" | "staticLabel" | "onChange" | "onTouchEnd" | "onTouchStart" | "animateDurationSlide" | "loop" | "swipeable" | "renderIndicator" | "indicatorPos" | "showIndicator" | "hideSingleIndicator" | "spaceBetween" | "percentToChange" | "distanceToChange" | "speedToChange" | "lazyloadCount" | "onAfterChange" | "images" | "openIndex" | "displayDuration" | "replaceFallbackWhenLoaded" | "noselect" | "scrollBezier" | "swipeToClose" | "getMinScale" | "getMaxScale" | "getDoubleClickScale" | "getThumbBounds" | "onImageClick" | "onImageDoubleClick" | "onImageLongTap">) => void;
278
270
  };
279
271
  };
280
272
  /**
@@ -7,12 +7,10 @@ exports.open = open;
7
7
 
8
8
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
 
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _reactDom = _interopRequireDefault(require("react-dom"));
13
-
14
10
  var _mobileUtils = require("@arco-design/mobile-utils");
15
11
 
12
+ var _render = require("../_helpers/render");
13
+
16
14
  function open(Component) {
17
15
  return function (config) {
18
16
  var baseProps = (0, _extends2.default)({
@@ -30,13 +28,8 @@ function open(Component) {
30
28
 
31
29
  var leaving = false;
32
30
 
33
- function render(props) {
34
- _reactDom.default.render( /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, props, {
35
- getContainer: function getContainer() {
36
- return div;
37
- }
38
- })), div);
39
- }
31
+ var _ReactDOMRender = new _render.ReactDOMRender(Component, div),
32
+ render = _ReactDOMRender.render;
40
33
 
41
34
  function update(newConfig) {
42
35
  dynamicProps = (0, _extends2.default)({}, dynamicProps, newConfig || {});
@@ -192,6 +192,11 @@ export declare function methodsGenerator<P extends OpenBaseProps>(Comp: React.Fu
192
192
  open: (config: Pick<P, Exclude<keyof P, "visible" | "close">> & {
193
193
  key?: string | undefined;
194
194
  }) => {
195
+ /**
196
+ * 点击蒙层是否关闭菜单
197
+ * @en Whether to click the mask to close the menu
198
+ * @default true
199
+ */
195
200
  close: () => void;
196
201
  update: (newConfig: Pick<P, Exclude<keyof P, "visible" | "close">> & {
197
202
  key?: string | undefined;
@@ -208,6 +213,11 @@ declare const _default: React.ForwardRefExoticComponent<MaskingProps & React.Ref
208
213
  open: (config: Pick<MaskingProps & React.RefAttributes<MaskingRef>, "ref" | "children" | "key" | "getContainer" | "mountOnEnter" | "unmountOnExit" | "className" | "onClose" | "contentAtCenter" | "maskClass" | "maskStyle" | "contentClass" | "contentStyle" | "maskTransitionType" | "contentTransitionType" | "maskTransitionTimeout" | "contentTransitionTimeout" | "maskClosable" | "animatingClosable" | "orientationDirection" | "preventBodyScroll" | "initialBodyOverflow" | "gestureOutOfControl" | "onOpen" | "onMaskClick" | "onTouchMove" | "onPreventTouchMove" | "getScrollContainer"> & {
209
214
  key?: string | undefined;
210
215
  }) => {
216
+ /**
217
+ * 点击蒙层是否关闭菜单
218
+ * @en Whether to click the mask to close the menu
219
+ * @default true
220
+ */
211
221
  close: () => void;
212
222
  update: (newConfig: Pick<MaskingProps & React.RefAttributes<MaskingRef>, "ref" | "children" | "key" | "getContainer" | "mountOnEnter" | "unmountOnExit" | "className" | "onClose" | "contentAtCenter" | "maskClass" | "maskStyle" | "contentClass" | "contentStyle" | "maskTransitionType" | "contentTransitionType" | "maskTransitionTimeout" | "contentTransitionTimeout" | "maskClosable" | "animatingClosable" | "orientationDirection" | "preventBodyScroll" | "initialBodyOverflow" | "gestureOutOfControl" | "onOpen" | "onMaskClick" | "onTouchMove" | "onPreventTouchMove" | "getScrollContainer"> & {
213
223
  key?: string | undefined;
@@ -8,12 +8,10 @@ exports.open = open;
8
8
 
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
 
11
- var _react = _interopRequireDefault(require("react"));
12
-
13
- var _reactDom = _interopRequireDefault(require("react-dom"));
14
-
15
11
  var _mobileUtils = require("@arco-design/mobile-utils");
16
12
 
13
+ var _render = require("../_helpers/render");
14
+
17
15
  function getOpenMethod(Component, containerId, normalize) {
18
16
  if (normalize === void 0) {
19
17
  normalize = function normalize(config) {
@@ -37,13 +35,8 @@ function getOpenMethod(Component, containerId, normalize) {
37
35
 
38
36
  var leaving = false;
39
37
 
40
- function render(props) {
41
- _reactDom.default.render( /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, props, {
42
- getContainer: function getContainer() {
43
- return div;
44
- }
45
- })), div);
46
- }
38
+ var _ReactDOMRender = new _render.ReactDOMRender(Component, div),
39
+ render = _ReactDOMRender.render;
47
40
 
48
41
  function update(newConfig) {
49
42
  dynamicProps = (0, _extends2.default)({}, dynamicProps, normalize(newConfig));
@@ -9,9 +9,7 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
9
9
 
10
10
  var _mobileUtils = require("@arco-design/mobile-utils");
11
11
 
12
- var _react = _interopRequireDefault(require("react"));
13
-
14
- var _reactDom = _interopRequireDefault(require("react-dom"));
12
+ var _render = require("../_helpers/render");
15
13
 
16
14
  function notify(Component, type) {
17
15
  return function (originConfig) {
@@ -33,17 +31,16 @@ function notify(Component, type) {
33
31
  document.body.appendChild(div);
34
32
  }
35
33
 
36
- function render(props) {
37
- _reactDom.default.render( /*#__PURE__*/_react.default.createElement(Component, props), div);
38
- }
34
+ var _ReactDOMRender = new _render.ReactDOMRender(Component, div),
35
+ render = _ReactDOMRender.render,
36
+ unmount = _ReactDOMRender.unmount;
39
37
 
40
38
  function destroy() {
41
39
  var onClose = config.onClose;
42
40
  onClose && onClose();
41
+ unmount();
43
42
 
44
- var unmountResult = _reactDom.default.unmountComponentAtNode(div);
45
-
46
- if (unmountResult && div.parentNode) {
43
+ if (div.parentNode) {
47
44
  div.parentNode.removeChild(div);
48
45
  }
49
46
  }
@@ -52,6 +52,7 @@ var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visibleRef,
52
52
  onVisibleChange(false);
53
53
  window.clearTimeout(closeTimer.current);
54
54
  closeTimer.current = 0;
55
+ mayRemoveEventListenerOnBody();
55
56
  };
56
57
 
57
58
  var throttleHandleVerticalScroll = (0, _react.useMemo)(function () {
@@ -71,7 +72,7 @@ var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visibleRef,
71
72
  };
72
73
  }, [throttleHandleVerticalScroll, getVerticalScrollContainer, autoVerticalDirection, visibleRef]);
73
74
  var mayRemoveEventListenerOnBody = (0, _react.useCallback)(function () {
74
- document.body.removeEventListener('click', handleClickBody);
75
+ document.body.removeEventListener('click', handleClickBody, true);
75
76
  document.body.removeEventListener('touchstart', handleTouchBody);
76
77
  var el = getVerticalScrollContainer();
77
78
 
@@ -86,7 +87,6 @@ var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visibleRef,
86
87
  // 仅处理子元素和气泡元素外的点击事件
87
88
  // @en Only handle click events outside of children elements and bubble elements
88
89
  if (!(0, _mobileUtils.isContains)(wrapperRef.current, e.target) && !(0, _mobileUtils.isContains)(((_popoverInnerRef$curr = popoverInnerRef.current) == null ? void 0 : _popoverInnerRef$curr.dom) || null, e.target)) {
89
- // TODO: 这里仅阻止了react事件,react 18 将不再在document上挂事件,这里的stop会失效
90
90
  if (preventBodyClick) {
91
91
  e.stopPropagation();
92
92
  e.preventDefault();
@@ -112,13 +112,13 @@ var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visibleRef,
112
112
  var handle = function handle(e) {
113
113
  e.stopPropagation();
114
114
  e.preventDefault();
115
- document.body.removeEventListener('click', handle);
115
+ document.body.removeEventListener('click', handle, true);
116
116
  clearTimeout(preventRecentClickTimer);
117
117
  };
118
118
 
119
- document.body.addEventListener('click', handle);
119
+ document.body.addEventListener('click', handle, true);
120
120
  preventRecentClickTimer = window.setTimeout(function () {
121
- document.body.removeEventListener('click', handle);
121
+ document.body.removeEventListener('click', handle, true);
122
122
  }, 500);
123
123
  };
124
124
 
@@ -161,7 +161,7 @@ var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visibleRef,
161
161
  var el = getVerticalScrollContainer();
162
162
  el && el.addEventListener('scroll', handleScrollBody);
163
163
  } else if (clickOtherToClose) {
164
- document.body.addEventListener('click', handleClickBody);
164
+ document.body.addEventListener('click', handleClickBody, true);
165
165
  }
166
166
  };
167
167
  /**
@@ -67,6 +67,7 @@ var SwipeAction = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
67
67
 
68
68
  var dampRateRef = (0, _helpers.useLatestRef)(dampRate);
69
69
  var forbidClick = (0, _react.useRef)(false);
70
+ var scrollingRef = (0, _react.useRef)(null);
70
71
 
71
72
  var _useRefState = (0, _helpers.useRefState)(false),
72
73
  moving = _useRefState[0],
@@ -83,6 +84,7 @@ var SwipeAction = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
83
84
 
84
85
  var startRef = (0, _react.useRef)(0);
85
86
  var startX = (0, _react.useRef)(0);
87
+ var startY = (0, _react.useRef)(0);
86
88
  var slideX = (0, _react.useRef)(0);
87
89
  var isLayer = openStyleType === 'layer';
88
90
  var transitionStyle = (0, _react.useMemo)(function () {
@@ -93,6 +95,7 @@ var SwipeAction = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
93
95
 
94
96
  function resetMoveData() {
95
97
  startX.current = 0;
98
+ startY.current = 0;
96
99
  slideX.current = 0;
97
100
  }
98
101
 
@@ -104,19 +107,34 @@ var SwipeAction = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
104
107
  function touchstart(e) {
105
108
  startRef.current = offsetRef.current;
106
109
  resetMoveData();
110
+ scrollingRef.current = null;
107
111
  startX.current = e.touches[0].pageX;
112
+ startY.current = e.touches[0].pageY;
108
113
  }
109
114
 
110
115
  function touchmove(e) {
111
- e.preventDefault();
112
- slideX.current = e.touches[0].pageX - startX.current;
116
+ var x = e.changedTouches[0].pageX - startX.current;
117
+ var y = e.changedTouches[0].pageY - startY.current;
118
+
119
+ if (scrollingRef.current === null) {
120
+ scrollingRef.current = Math.abs(x) < Math.abs(y);
121
+ }
122
+
123
+ if (scrollingRef.current) {
124
+ setMoving(false);
125
+ setOffset(0);
126
+ return;
127
+ }
128
+
129
+ e.cancelable && e.preventDefault();
130
+ slideX.current = x;
113
131
  forbidClick.current = true;
114
132
  setMoving(true);
115
133
  setOffset(getMenuCurrentWidth(slideX.current + startRef.current, -rightMenuWidthRef.current, leftMenuWidthRef.current));
116
134
  }
117
135
 
118
136
  function touchend() {
119
- if (movingRef.current) {
137
+ if (movingRef.current && !scrollingRef.current) {
120
138
  var currentMenu = offsetRef.current > 0 ? 'left' : 'right';
121
139
  changeMenu(currentMenu);
122
140
  setMoving(false);