@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.
- package/CHANGELOG.md +30 -0
- package/README.en-US.md +2 -2
- package/README.md +2 -2
- package/cjs/_helpers/index.d.ts +1 -0
- package/cjs/_helpers/index.js +9 -0
- package/cjs/_helpers/react-dom.d.ts +13 -0
- package/cjs/_helpers/react-dom.js +65 -0
- package/cjs/_helpers/render.d.ts +10 -0
- package/cjs/_helpers/render.js +40 -0
- package/cjs/action-sheet/index.d.ts +1 -1
- package/cjs/ellipsis/components/js-ellipsis.js +7 -1
- package/cjs/image-picker/index.js +0 -1
- package/cjs/image-picker/style/css/index.d.ts +1 -0
- package/cjs/image-picker/style/css/index.js +2 -0
- package/cjs/image-picker/style/index.d.ts +1 -0
- package/cjs/image-picker/style/index.js +2 -0
- package/cjs/image-preview/index.d.ts +2 -10
- package/cjs/image-preview/methods.js +4 -11
- package/cjs/masking/index.d.ts +10 -0
- package/cjs/masking/methods.js +4 -11
- package/cjs/notify/methods.js +6 -9
- package/cjs/popover/hooks/useEvent.js +6 -6
- package/cjs/swipe-action/index.js +21 -3
- package/cjs/tabs/index.d.ts +3 -463
- package/cjs/tabs/index.js +15 -2
- package/cjs/tabs/tab-cell-underline.d.ts +4 -0
- package/cjs/tabs/tab-cell-underline.js +234 -0
- package/cjs/tabs/tab-cell.d.ts +1 -85
- package/cjs/tabs/tab-cell.js +57 -201
- package/cjs/tabs/tab-pane.d.ts +2 -38
- package/cjs/tabs/type.d.ts +601 -0
- package/cjs/tabs/type.js +3 -0
- package/cjs/toast/methods.js +9 -12
- package/dist/index.js +439 -271
- package/dist/index.min.js +3 -3
- package/esm/_helpers/index.d.ts +1 -0
- package/esm/_helpers/index.js +1 -0
- package/esm/_helpers/react-dom.d.ts +13 -0
- package/esm/_helpers/react-dom.js +57 -0
- package/esm/_helpers/render.d.ts +10 -0
- package/esm/_helpers/render.js +29 -0
- package/esm/action-sheet/index.d.ts +1 -1
- package/esm/ellipsis/components/js-ellipsis.js +7 -1
- package/esm/image-picker/index.js +0 -1
- package/esm/image-picker/style/css/index.d.ts +1 -0
- package/esm/image-picker/style/css/index.js +1 -0
- package/esm/image-picker/style/index.d.ts +1 -0
- package/esm/image-picker/style/index.js +1 -0
- package/esm/image-preview/index.d.ts +2 -10
- package/esm/image-preview/methods.js +3 -9
- package/esm/masking/index.d.ts +10 -0
- package/esm/masking/methods.js +3 -9
- package/esm/notify/methods.js +6 -7
- package/esm/popover/hooks/useEvent.js +6 -6
- package/esm/swipe-action/index.js +21 -3
- package/esm/tabs/index.d.ts +3 -463
- package/esm/tabs/index.js +7 -3
- package/esm/tabs/tab-cell-underline.d.ts +4 -0
- package/esm/tabs/tab-cell-underline.js +218 -0
- package/esm/tabs/tab-cell.d.ts +1 -85
- package/esm/tabs/tab-cell.js +59 -204
- package/esm/tabs/tab-pane.d.ts +2 -38
- package/esm/tabs/type.d.ts +601 -0
- package/esm/tabs/type.js +1 -0
- package/esm/toast/methods.js +8 -9
- package/package.json +3 -3
- package/umd/_helpers/index.d.ts +1 -0
- package/umd/_helpers/index.js +10 -4
- package/umd/_helpers/react-dom.d.ts +13 -0
- package/umd/_helpers/react-dom.js +78 -0
- package/umd/_helpers/render.d.ts +10 -0
- package/umd/_helpers/render.js +51 -0
- package/umd/action-sheet/index.d.ts +1 -1
- package/umd/ellipsis/components/js-ellipsis.js +7 -1
- package/umd/image-picker/index.js +0 -1
- package/umd/image-picker/style/css/index.d.ts +1 -0
- package/umd/image-picker/style/css/index.js +4 -4
- package/umd/image-picker/style/index.d.ts +1 -0
- package/umd/image-picker/style/index.js +4 -4
- package/umd/image-preview/index.d.ts +2 -10
- package/umd/image-preview/methods.js +6 -13
- package/umd/masking/index.d.ts +10 -0
- package/umd/masking/methods.js +6 -13
- package/umd/notify/methods.js +9 -12
- package/umd/popover/hooks/useEvent.js +6 -6
- package/umd/swipe-action/index.js +21 -3
- package/umd/tabs/index.d.ts +3 -463
- package/umd/tabs/index.js +16 -6
- package/umd/tabs/tab-cell-underline.d.ts +4 -0
- package/umd/tabs/tab-cell-underline.js +242 -0
- package/umd/tabs/tab-cell.d.ts +1 -85
- package/umd/tabs/tab-cell.js +60 -205
- package/umd/tabs/tab-pane.d.ts +2 -38
- package/umd/tabs/type.d.ts +601 -0
- package/umd/tabs/type.js +17 -0
- package/umd/toast/methods.js +11 -14
package/esm/_helpers/index.d.ts
CHANGED
package/esm/_helpers/index.js
CHANGED
@@ -6,6 +6,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
6
6
|
*/
|
7
7
|
export * from './hooks';
|
8
8
|
export * from './type';
|
9
|
+
export * from './react-dom';
|
9
10
|
export function getStyleWithVendor(style) {
|
10
11
|
var allowReg = /(transform|transition|animation)/i;
|
11
12
|
var newStyle = Object.keys(style).reduce(function (acc, key) {
|
@@ -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,57 @@
|
|
1
|
+
var _CopyReactDOM$version;
|
2
|
+
|
3
|
+
import ReactDOM from 'react-dom';
|
4
|
+
|
5
|
+
function isObject(obj) {
|
6
|
+
return Object.prototype.toString.call(obj) === '[object Object]';
|
7
|
+
}
|
8
|
+
|
9
|
+
var __SECRET_INTERNALS__ = '__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED';
|
10
|
+
var CopyReactDOM = ReactDOM;
|
11
|
+
var copyRender;
|
12
|
+
var isReact18 = Number((_CopyReactDOM$version = CopyReactDOM.version) == null ? void 0 : _CopyReactDOM$version.split('.')[0]) > 17;
|
13
|
+
|
14
|
+
var updateUsingClientEntryPoint = function updateUsingClientEntryPoint(skipWarning) {
|
15
|
+
// https://github.com/facebook/react/blob/17806594cc28284fe195f918e8d77de3516848ec/packages/react-dom/npm/client.js#L10
|
16
|
+
// Avoid console warning
|
17
|
+
if (isObject(CopyReactDOM[__SECRET_INTERNALS__])) {
|
18
|
+
CopyReactDOM[__SECRET_INTERNALS__].usingClientEntryPoint = skipWarning;
|
19
|
+
}
|
20
|
+
};
|
21
|
+
|
22
|
+
var createRoot;
|
23
|
+
|
24
|
+
try {
|
25
|
+
createRoot = CopyReactDOM.createRoot;
|
26
|
+
} catch (_) {}
|
27
|
+
|
28
|
+
if (isReact18 && createRoot) {
|
29
|
+
copyRender = function copyRender(app, container) {
|
30
|
+
updateUsingClientEntryPoint(true);
|
31
|
+
var root = createRoot(container);
|
32
|
+
updateUsingClientEntryPoint(false);
|
33
|
+
root.render(app);
|
34
|
+
|
35
|
+
root._unmount = function () {
|
36
|
+
setTimeout(function () {
|
37
|
+
root == null ? void 0 : root.unmount == null ? void 0 : root.unmount();
|
38
|
+
});
|
39
|
+
};
|
40
|
+
|
41
|
+
return root;
|
42
|
+
};
|
43
|
+
} else {
|
44
|
+
copyRender = function copyRender(app, container) {
|
45
|
+
CopyReactDOM.render(app, container);
|
46
|
+
return {
|
47
|
+
render: function render(comment) {
|
48
|
+
CopyReactDOM.render(comment, container);
|
49
|
+
},
|
50
|
+
_unmount: function _unmount() {
|
51
|
+
CopyReactDOM.unmountComponentAtNode(container);
|
52
|
+
}
|
53
|
+
};
|
54
|
+
};
|
55
|
+
}
|
56
|
+
|
57
|
+
export var render = copyRender;
|
@@ -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,29 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { render as copyRender } from './react-dom';
|
3
|
+
export var ReactDOMRender = function ReactDOMRender(app, container) {
|
4
|
+
var _this = this;
|
5
|
+
|
6
|
+
this.root = void 0;
|
7
|
+
this.app = void 0;
|
8
|
+
this.container = void 0;
|
9
|
+
|
10
|
+
this.render = function (props) {
|
11
|
+
var CustomApp = _this.app;
|
12
|
+
|
13
|
+
if (_this.root) {
|
14
|
+
_this.root.render( /*#__PURE__*/React.createElement(CustomApp, props));
|
15
|
+
} else {
|
16
|
+
_this.root = copyRender( /*#__PURE__*/React.createElement(CustomApp, props), _this.container);
|
17
|
+
}
|
18
|
+
};
|
19
|
+
|
20
|
+
this.unmount = function () {
|
21
|
+
var _this$root;
|
22
|
+
|
23
|
+
(_this$root = _this.root) == null ? void 0 : _this$root._unmount();
|
24
|
+
_this.root = undefined;
|
25
|
+
};
|
26
|
+
|
27
|
+
this.app = app;
|
28
|
+
this.container = container;
|
29
|
+
};
|
@@ -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
|
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
|
/**
|
@@ -113,7 +113,13 @@ var JsEllipsis = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
113
113
|
_height = _container$getBoundin3.height;
|
114
114
|
|
115
115
|
if (_height > max) {
|
116
|
-
|
116
|
+
if (nodes[i].childNodes && nodes[i].childNodes.length) {
|
117
|
+
break;
|
118
|
+
} else {
|
119
|
+
textContainer.removeChild(nodes[i]);
|
120
|
+
handleOnReflow(true, textContainer.innerHTML);
|
121
|
+
return;
|
122
|
+
}
|
117
123
|
}
|
118
124
|
|
119
125
|
i++;
|
@@ -166,7 +166,6 @@ var ImagePicker = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
166
166
|
var timeOutEvent;
|
167
167
|
|
168
168
|
var handleTouchStart = function handleTouchStart(e, image, index) {
|
169
|
-
e.preventDefault();
|
170
169
|
timeOutEvent = setTimeout(function () {
|
171
170
|
timeOutEvent = 0;
|
172
171
|
onLongPress == null ? void 0 : onLongPress(e, image, index);
|
@@ -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
|
/**
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
2
|
-
import React from 'react';
|
3
|
-
import ReactDOM from 'react-dom';
|
4
2
|
import { appendElementById, removeElement } from '@arco-design/mobile-utils';
|
3
|
+
import { ReactDOMRender } from '../_helpers/render';
|
5
4
|
export function open(Component) {
|
6
5
|
return function (config) {
|
7
6
|
var baseProps = _extends({
|
@@ -21,13 +20,8 @@ export function open(Component) {
|
|
21
20
|
|
22
21
|
var leaving = false;
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
getContainer: function getContainer() {
|
27
|
-
return div;
|
28
|
-
}
|
29
|
-
})), div);
|
30
|
-
}
|
23
|
+
var _ReactDOMRender = new ReactDOMRender(Component, div),
|
24
|
+
render = _ReactDOMRender.render;
|
31
25
|
|
32
26
|
function update(newConfig) {
|
33
27
|
dynamicProps = _extends({}, dynamicProps, newConfig || {});
|
package/esm/masking/index.d.ts
CHANGED
@@ -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;
|
package/esm/masking/methods.js
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
2
|
-
import React from 'react';
|
3
|
-
import ReactDOM from 'react-dom';
|
4
2
|
import { appendElementById, removeElement, nextTick } from '@arco-design/mobile-utils';
|
3
|
+
import { ReactDOMRender } from '../_helpers/render';
|
5
4
|
export function getOpenMethod(Component, containerId, normalize) {
|
6
5
|
if (normalize === void 0) {
|
7
6
|
normalize = function normalize(config) {
|
@@ -27,13 +26,8 @@ export function getOpenMethod(Component, containerId, normalize) {
|
|
27
26
|
|
28
27
|
var leaving = false;
|
29
28
|
|
30
|
-
|
31
|
-
|
32
|
-
getContainer: function getContainer() {
|
33
|
-
return div;
|
34
|
-
}
|
35
|
-
})), div);
|
36
|
-
}
|
29
|
+
var _ReactDOMRender = new ReactDOMRender(Component, div),
|
30
|
+
render = _ReactDOMRender.render;
|
37
31
|
|
38
32
|
function update(newConfig) {
|
39
33
|
dynamicProps = _extends({}, dynamicProps, normalize(newConfig));
|
package/esm/notify/methods.js
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
2
2
|
import { nextTick } from '@arco-design/mobile-utils';
|
3
|
-
import
|
4
|
-
import ReactDOM from 'react-dom';
|
3
|
+
import { ReactDOMRender } from '../_helpers/render';
|
5
4
|
export function notify(Component, type) {
|
6
5
|
return function (originConfig) {
|
7
6
|
var config = typeof originConfig === 'string' ? {
|
@@ -22,16 +21,16 @@ export function notify(Component, type) {
|
|
22
21
|
document.body.appendChild(div);
|
23
22
|
}
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
var _ReactDOMRender = new ReactDOMRender(Component, div),
|
25
|
+
render = _ReactDOMRender.render,
|
26
|
+
unmount = _ReactDOMRender.unmount;
|
28
27
|
|
29
28
|
function destroy() {
|
30
29
|
var onClose = config.onClose;
|
31
30
|
onClose && onClose();
|
32
|
-
|
31
|
+
unmount();
|
33
32
|
|
34
|
-
if (
|
33
|
+
if (div.parentNode) {
|
35
34
|
div.parentNode.removeChild(div);
|
36
35
|
}
|
37
36
|
}
|
@@ -40,6 +40,7 @@ export var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visi
|
|
40
40
|
onVisibleChange(false);
|
41
41
|
window.clearTimeout(closeTimer.current);
|
42
42
|
closeTimer.current = 0;
|
43
|
+
mayRemoveEventListenerOnBody();
|
43
44
|
};
|
44
45
|
|
45
46
|
var throttleHandleVerticalScroll = useMemo(function () {
|
@@ -59,7 +60,7 @@ export var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visi
|
|
59
60
|
};
|
60
61
|
}, [throttleHandleVerticalScroll, getVerticalScrollContainer, autoVerticalDirection, visibleRef]);
|
61
62
|
var mayRemoveEventListenerOnBody = useCallback(function () {
|
62
|
-
document.body.removeEventListener('click', handleClickBody);
|
63
|
+
document.body.removeEventListener('click', handleClickBody, true);
|
63
64
|
document.body.removeEventListener('touchstart', handleTouchBody);
|
64
65
|
var el = getVerticalScrollContainer();
|
65
66
|
|
@@ -74,7 +75,6 @@ export var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visi
|
|
74
75
|
// 仅处理子元素和气泡元素外的点击事件
|
75
76
|
// @en Only handle click events outside of children elements and bubble elements
|
76
77
|
if (!isContains(wrapperRef.current, e.target) && !isContains(((_popoverInnerRef$curr = popoverInnerRef.current) == null ? void 0 : _popoverInnerRef$curr.dom) || null, e.target)) {
|
77
|
-
// TODO: 这里仅阻止了react事件,react 18 将不再在document上挂事件,这里的stop会失效
|
78
78
|
if (preventBodyClick) {
|
79
79
|
e.stopPropagation();
|
80
80
|
e.preventDefault();
|
@@ -100,13 +100,13 @@ export var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visi
|
|
100
100
|
var handle = function handle(e) {
|
101
101
|
e.stopPropagation();
|
102
102
|
e.preventDefault();
|
103
|
-
document.body.removeEventListener('click', handle);
|
103
|
+
document.body.removeEventListener('click', handle, true);
|
104
104
|
clearTimeout(preventRecentClickTimer);
|
105
105
|
};
|
106
106
|
|
107
|
-
document.body.addEventListener('click', handle);
|
107
|
+
document.body.addEventListener('click', handle, true);
|
108
108
|
preventRecentClickTimer = window.setTimeout(function () {
|
109
|
-
document.body.removeEventListener('click', handle);
|
109
|
+
document.body.removeEventListener('click', handle, true);
|
110
110
|
}, 500);
|
111
111
|
};
|
112
112
|
|
@@ -149,7 +149,7 @@ export var useEvent = function useEvent(props, wrapperRef, popoverInnerRef, visi
|
|
149
149
|
var el = getVerticalScrollContainer();
|
150
150
|
el && el.addEventListener('scroll', handleScrollBody);
|
151
151
|
} else if (clickOtherToClose) {
|
152
|
-
document.body.addEventListener('click', handleClickBody);
|
152
|
+
document.body.addEventListener('click', handleClickBody, true);
|
153
153
|
}
|
154
154
|
};
|
155
155
|
/**
|
@@ -51,6 +51,7 @@ var SwipeAction = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
51
51
|
|
52
52
|
var dampRateRef = useLatestRef(dampRate);
|
53
53
|
var forbidClick = useRef(false);
|
54
|
+
var scrollingRef = useRef(null);
|
54
55
|
|
55
56
|
var _useRefState = useRefState(false),
|
56
57
|
moving = _useRefState[0],
|
@@ -67,6 +68,7 @@ var SwipeAction = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
67
68
|
|
68
69
|
var startRef = useRef(0);
|
69
70
|
var startX = useRef(0);
|
71
|
+
var startY = useRef(0);
|
70
72
|
var slideX = useRef(0);
|
71
73
|
var isLayer = openStyleType === 'layer';
|
72
74
|
var transitionStyle = useMemo(function () {
|
@@ -77,6 +79,7 @@ var SwipeAction = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
77
79
|
|
78
80
|
function resetMoveData() {
|
79
81
|
startX.current = 0;
|
82
|
+
startY.current = 0;
|
80
83
|
slideX.current = 0;
|
81
84
|
}
|
82
85
|
|
@@ -88,19 +91,34 @@ var SwipeAction = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
88
91
|
function touchstart(e) {
|
89
92
|
startRef.current = offsetRef.current;
|
90
93
|
resetMoveData();
|
94
|
+
scrollingRef.current = null;
|
91
95
|
startX.current = e.touches[0].pageX;
|
96
|
+
startY.current = e.touches[0].pageY;
|
92
97
|
}
|
93
98
|
|
94
99
|
function touchmove(e) {
|
95
|
-
e.
|
96
|
-
|
100
|
+
var x = e.changedTouches[0].pageX - startX.current;
|
101
|
+
var y = e.changedTouches[0].pageY - startY.current;
|
102
|
+
|
103
|
+
if (scrollingRef.current === null) {
|
104
|
+
scrollingRef.current = Math.abs(x) < Math.abs(y);
|
105
|
+
}
|
106
|
+
|
107
|
+
if (scrollingRef.current) {
|
108
|
+
setMoving(false);
|
109
|
+
setOffset(0);
|
110
|
+
return;
|
111
|
+
}
|
112
|
+
|
113
|
+
e.cancelable && e.preventDefault();
|
114
|
+
slideX.current = x;
|
97
115
|
forbidClick.current = true;
|
98
116
|
setMoving(true);
|
99
117
|
setOffset(getMenuCurrentWidth(slideX.current + startRef.current, -rightMenuWidthRef.current, leftMenuWidthRef.current));
|
100
118
|
}
|
101
119
|
|
102
120
|
function touchend() {
|
103
|
-
if (movingRef.current) {
|
121
|
+
if (movingRef.current && !scrollingRef.current) {
|
104
122
|
var currentMenu = offsetRef.current > 0 ? 'left' : 'right';
|
105
123
|
changeMenu(currentMenu);
|
106
124
|
setMoving(false);
|