Skip to content

Commit f9e9c35

Browse files
committed
fix #134
1 parent d09bcc7 commit f9e9c35

File tree

3 files changed

+46
-36
lines changed

3 files changed

+46
-36
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "rc-drawer",
3-
"version": "4.0.0",
3+
"version": "4.0.1",
44
"description": "drawer component for react",
55
"keywords": [
66
"react",

src/DrawerChild.tsx

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -164,15 +164,16 @@ class DrawerChild extends React.Component<IDrawerChildProps, IState> {
164164
const differX = e.changedTouches[0].clientX - this.startPos.x;
165165
const differY = e.changedTouches[0].clientY - this.startPos.y;
166166
if (
167-
currentTarget === this.maskDom ||
168-
currentTarget === this.handlerDom ||
169-
(currentTarget === this.contentDom &&
170-
getTouchParentScroll(
171-
currentTarget,
172-
e.target as HTMLElement,
173-
differX,
174-
differY,
175-
))
167+
(currentTarget === this.maskDom ||
168+
currentTarget === this.handlerDom ||
169+
(currentTarget === this.contentDom &&
170+
getTouchParentScroll(
171+
currentTarget,
172+
e.target as HTMLElement,
173+
differX,
174+
differY,
175+
))) &&
176+
e.cancelable
176177
) {
177178
e.preventDefault();
178179
}
@@ -237,7 +238,7 @@ class DrawerChild extends React.Component<IDrawerChildProps, IState> {
237238
) => {
238239
const { placement, levelMove, duration, ease, showMask } = this.props;
239240
// router 切换时可能会导至页面失去滚动条,所以需要时时获取。
240-
this.levelDom.forEach(dom => {
241+
this.levelDom.forEach((dom) => {
241242
dom.style.transition = `transform ${duration} ${ease}`;
242243
addEventListener(dom, transitionEnd, this.transitionEnd);
243244
let levelValue = open ? value : 0;
@@ -435,7 +436,7 @@ class DrawerChild extends React.Component<IDrawerChildProps, IState> {
435436
};
436437

437438
private getCurrentDrawerSome = () =>
438-
!Object.keys(currentDrawer).some(key => currentDrawer[key]);
439+
!Object.keys(currentDrawer).some((key) => currentDrawer[key]);
439440

440441
private getLevelDom = ({ level, getContainer }: IDrawerChildProps) => {
441442
if (windowIsUndefined) {
@@ -459,8 +460,8 @@ class DrawerChild extends React.Component<IDrawerChildProps, IState> {
459460
}
460461
});
461462
} else if (level) {
462-
dataToArray(level).forEach(key => {
463-
document.querySelectorAll(key).forEach(item => {
463+
dataToArray(level).forEach((key) => {
464+
document.querySelectorAll(key).forEach((item) => {
464465
this.levelDom.push(item);
465466
});
466467
});
@@ -555,7 +556,7 @@ class DrawerChild extends React.Component<IDrawerChildProps, IState> {
555556
className={`${prefixCls}-mask`}
556557
onClick={maskClosable ? onClose : undefined}
557558
style={maskStyle}
558-
ref={c => {
559+
ref={(c) => {
559560
this.maskDom = c as HTMLElement;
560561
}}
561562
/>
@@ -568,13 +569,13 @@ class DrawerChild extends React.Component<IDrawerChildProps, IState> {
568569
width: isNumeric(width) ? `${width}px` : width,
569570
height: isNumeric(height) ? `${height}px` : height,
570571
}}
571-
ref={c => {
572+
ref={(c) => {
572573
this.contentWrapper = c as HTMLElement;
573574
}}
574575
>
575576
<div
576577
className={`${prefixCls}-content`}
577-
ref={c => {
578+
ref={(c) => {
578579
this.contentDom = c as HTMLElement;
579580
}}
580581
onTouchStart={

src/utils.ts

Lines changed: 28 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,15 @@ const transitionEndObject: {
1212
MozTransition: 'transitionend',
1313
OTransition: 'oTransitionEnd otransitionend',
1414
};
15-
export const transitionStr: string = Object.keys(transitionEndObject).filter(key => {
16-
if (typeof document === 'undefined') {
17-
return false;
18-
}
19-
const html = document.getElementsByTagName('html')[0];
20-
return key in (html ? html.style : {});
21-
})[0];
15+
export const transitionStr: string = Object.keys(transitionEndObject).filter(
16+
key => {
17+
if (typeof document === 'undefined') {
18+
return false;
19+
}
20+
const html = document.getElementsByTagName('html')[0];
21+
return key in (html ? html.style : {});
22+
},
23+
)[0];
2224
export const transitionEnd: string = transitionEndObject[transitionStr];
2325

2426
export function addEventListener(
@@ -75,16 +77,22 @@ export const getTouchParentScroll = (
7577
differX: number,
7678
differY: number,
7779
): boolean => {
78-
if (!currentTarget || currentTarget === document || currentTarget instanceof Document) {
80+
if (
81+
!currentTarget ||
82+
currentTarget === document ||
83+
currentTarget instanceof Document
84+
) {
7985
return false;
8086
}
8187
// root 为 drawer-content 设定了 overflow, 判断为 root 的 parent 时结束滚动;
8288
if (currentTarget === root.parentNode) {
8389
return true;
8490
}
8591

86-
const isY = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differY);
87-
const isX = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differX);
92+
const isY =
93+
Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differY);
94+
const isX =
95+
Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differX);
8896

8997
const scrollY = currentTarget.scrollHeight - currentTarget.clientHeight;
9098
const scrollX = currentTarget.scrollWidth - currentTarget.clientWidth;
@@ -97,15 +105,16 @@ export const getTouchParentScroll = (
97105
const x = scrollX && overflowX;
98106

99107
if (
100-
(isY && (!y ||
101-
(y && (
102-
(currentTarget.scrollTop >= scrollY && differY < 0) ||
103-
(currentTarget.scrollTop <= 0 && differY > 0)
104-
)))) ||
105-
(isX && (!x ||
106-
(x && (
107-
(currentTarget.scrollLeft >= scrollX && scrollX < 0) ||
108-
(currentTarget.scrollLeft <= 0 && scrollX > 0)))))
108+
(isY &&
109+
(!y ||
110+
(y &&
111+
((currentTarget.scrollTop >= scrollY && differY < 0) ||
112+
(currentTarget.scrollTop <= 0 && differY > 0))))) ||
113+
(isX &&
114+
(!x ||
115+
(x &&
116+
((currentTarget.scrollLeft >= scrollX && differX < 0) ||
117+
(currentTarget.scrollLeft <= 0 && differX > 0)))))
109118
) {
110119
return getTouchParentScroll(
111120
root,

0 commit comments

Comments
 (0)