mirror of
https://github.com/zhigang1992/react-navigation-scrollable-modal.git
synced 2026-01-12 22:51:19 +08:00
135 lines
6.0 KiB
Diff
135 lines
6.0 KiB
Diff
diff --git a/node_modules/@react-navigation/stack/lib/typescript/src/index.d.ts b/node_modules/@react-navigation/stack/lib/typescript/src/index.d.ts
|
|
index 35a863b..66239cd 100644
|
|
--- a/node_modules/@react-navigation/stack/lib/typescript/src/index.d.ts
|
|
+++ b/node_modules/@react-navigation/stack/lib/typescript/src/index.d.ts
|
|
@@ -22,6 +22,8 @@ export { default as CardAnimationContext } from './utils/CardAnimationContext';
|
|
export { default as GestureHandlerRefContext } from './utils/GestureHandlerRefContext';
|
|
export { default as useCardAnimation } from './utils/useCardAnimation';
|
|
export { default as useGestureHandlerRef } from './utils/useGestureHandlerRef';
|
|
+export { CardModalGestureContext } from './utils/CardModalGestureContext';
|
|
+
|
|
/**
|
|
* Types
|
|
*/
|
|
diff --git a/node_modules/@react-navigation/stack/lib/typescript/src/utils/CardModalGestureContext.d.ts b/node_modules/@react-navigation/stack/lib/typescript/src/utils/CardModalGestureContext.d.ts
|
|
new file mode 100644
|
|
index 0000000..590bf05
|
|
--- /dev/null
|
|
+++ b/node_modules/@react-navigation/stack/lib/typescript/src/utils/CardModalGestureContext.d.ts
|
|
@@ -0,0 +1,9 @@
|
|
+import * as React from 'react';
|
|
+import type { Animated } from 'react-native';
|
|
+
|
|
+export interface CardModalGestureContextType {
|
|
+ scrollableGestureRef: React.RefObject<any>;
|
|
+ cardModalTranslateY: Animated.Value;
|
|
+}
|
|
+
|
|
+export declare const CardModalGestureContext: React.Context<CardModalGestureContextType>;
|
|
diff --git a/node_modules/@react-navigation/stack/src/index.tsx b/node_modules/@react-navigation/stack/src/index.tsx
|
|
index f20d3fb..d914384 100644
|
|
--- a/node_modules/@react-navigation/stack/src/index.tsx
|
|
+++ b/node_modules/@react-navigation/stack/src/index.tsx
|
|
@@ -31,6 +31,7 @@ export { default as CardAnimationContext } from './utils/CardAnimationContext';
|
|
export { default as GestureHandlerRefContext } from './utils/GestureHandlerRefContext';
|
|
export { default as useCardAnimation } from './utils/useCardAnimation';
|
|
export { default as useGestureHandlerRef } from './utils/useGestureHandlerRef';
|
|
+export { CardModalGestureContext } from './utils/CardModalGestureContext';
|
|
|
|
/**
|
|
* Types
|
|
diff --git a/node_modules/@react-navigation/stack/src/utils/CardModalGestureContext.ts b/node_modules/@react-navigation/stack/src/utils/CardModalGestureContext.ts
|
|
new file mode 100644
|
|
index 0000000..c2e32db
|
|
--- /dev/null
|
|
+++ b/node_modules/@react-navigation/stack/src/utils/CardModalGestureContext.ts
|
|
@@ -0,0 +1,9 @@
|
|
+import React from 'react';
|
|
+import { Animated } from 'react-native';
|
|
+
|
|
+interface CardModalGestureContextType {
|
|
+ scrollableGestureRef: React.RefObject<any>;
|
|
+ cardModalTranslateY: Animated.Value;
|
|
+}
|
|
+
|
|
+export const CardModalGestureContext = React.createContext<CardModalGestureContextType | null>(null)
|
|
\ No newline at end of file
|
|
diff --git a/node_modules/@react-navigation/stack/src/views/Stack/Card.tsx b/node_modules/@react-navigation/stack/src/views/Stack/Card.tsx
|
|
index a013ff9..6a6e5f9 100755
|
|
--- a/node_modules/@react-navigation/stack/src/views/Stack/Card.tsx
|
|
+++ b/node_modules/@react-navigation/stack/src/views/Stack/Card.tsx
|
|
@@ -21,6 +21,7 @@ import type {
|
|
TransitionSpec,
|
|
} from '../../types';
|
|
import CardAnimationContext from '../../utils/CardAnimationContext';
|
|
+import { CardModalGestureContext } from '../../utils/CardModalGestureContext';
|
|
import getDistanceForDirection from '../../utils/getDistanceForDirection';
|
|
import getInvertedMultiplier from '../../utils/getInvertedMultiplier';
|
|
import memoize from '../../utils/memoize';
|
|
@@ -294,6 +295,8 @@ export default class Card extends React.Component<Props> {
|
|
case GestureState.END: {
|
|
this.isSwiping.setValue(FALSE);
|
|
|
|
+ this.isSwiping.removeListener
|
|
+
|
|
let distance;
|
|
let translation;
|
|
let velocity;
|
|
@@ -303,8 +306,16 @@ export default class Card extends React.Component<Props> {
|
|
gestureDirection === 'vertical-inverted'
|
|
) {
|
|
distance = layout.height;
|
|
- translation = nativeEvent.translationY;
|
|
- velocity = nativeEvent.velocityY;
|
|
+ // @ts-ignore
|
|
+ if(this.props.gesture._offset < 0) {
|
|
+ // @ts-ignore
|
|
+ translation = this.props.gesture._offset - this.props.gesture._value;
|
|
+ velocity = nativeEvent.velocityY / 2;
|
|
+ }else{
|
|
+ // @ts-ignore
|
|
+ translation = this.props.gesture._value;
|
|
+ velocity = nativeEvent.velocityY;
|
|
+ }
|
|
} else {
|
|
distance = layout.width;
|
|
translation = nativeEvent.translationX;
|
|
@@ -392,7 +403,7 @@ export default class Card extends React.Component<Props> {
|
|
return {
|
|
maxDeltaX: 15,
|
|
minOffsetY: 5,
|
|
- hitSlop: { bottom: -layout.height + distance },
|
|
+ // hitSlop: { bottom: -layout.height + distance },
|
|
enableTrackpadTwoFingerGesture,
|
|
};
|
|
} else if (gestureDirection === 'vertical-inverted') {
|
|
@@ -425,6 +436,7 @@ export default class Card extends React.Component<Props> {
|
|
}
|
|
|
|
private contentRef = React.createRef<View>();
|
|
+ private scrollableGestureRef = React.createRef<any>();
|
|
|
|
render() {
|
|
const {
|
|
@@ -526,10 +538,12 @@ export default class Card extends React.Component<Props> {
|
|
style={[styles.container, containerStyle, customContainerStyle]}
|
|
pointerEvents="box-none"
|
|
>
|
|
+ <CardModalGestureContext.Provider value={{ scrollableGestureRef: this.scrollableGestureRef, cardModalTranslateY: gesture }}>
|
|
<PanGestureHandler
|
|
enabled={layout.width !== 0 && gestureEnabled}
|
|
onGestureEvent={handleGestureEvent}
|
|
onHandlerStateChange={this.handleGestureStateChange}
|
|
+ simultaneousHandlers={this.scrollableGestureRef}
|
|
{...this.gestureActivationCriteria()}
|
|
>
|
|
<Animated.View
|
|
@@ -563,6 +577,7 @@ export default class Card extends React.Component<Props> {
|
|
</CardSheet>
|
|
</Animated.View>
|
|
</PanGestureHandler>
|
|
+ </CardModalGestureContext.Provider>
|
|
</Animated.View>
|
|
</View>
|
|
</CardAnimationContext.Provider>
|