From 82c732a63874fad81e8da856b4bbb28eee8e2616 Mon Sep 17 00:00:00 2001 From: Samuel Chamberland Date: Thu, 24 Oct 2019 07:34:15 -0400 Subject: [PATCH] feat: expose stack transition values via context (#265) --- packages/stack/example/App.tsx | 6 + .../src/StackAnimationConsumerStack.tsx | 104 ++++++++++++++++++ packages/stack/src/index.tsx | 10 +- .../utils/StackAnimationIsClosingContext.tsx | 4 + .../utils/StackAnimationIsSwipingContext.tsx | 4 + .../utils/StackAnimationProgressContext.tsx | 6 + packages/stack/src/views/Stack/Card.tsx | 15 ++- 7 files changed, 147 insertions(+), 2 deletions(-) create mode 100644 packages/stack/example/src/StackAnimationConsumerStack.tsx create mode 100644 packages/stack/src/utils/StackAnimationIsClosingContext.tsx create mode 100644 packages/stack/src/utils/StackAnimationIsSwipingContext.tsx create mode 100644 packages/stack/src/utils/StackAnimationProgressContext.tsx diff --git a/packages/stack/example/App.tsx b/packages/stack/example/App.tsx index 2207347b..eb28b930 100644 --- a/packages/stack/example/App.tsx +++ b/packages/stack/example/App.tsx @@ -29,6 +29,7 @@ import { HeaderBackgroundFade, } from './src/HeaderBackgrounds'; import DragLimitedToModal from './src/DragLimitedToModal'; +import StackAnimationConsumerStack from './src/StackAnimationConsumerStack'; // Comment the following two lines to stop using react-native-screens // eslint-disable-next-line import/no-unresolved @@ -109,6 +110,11 @@ const data: Item[] = [ title: 'Drag limited to modal', routeName: 'DragLimitedToModal', }, + { + component: StackAnimationConsumerStack, + title: 'Stack animation consumer stack', + routeName: 'StackAnimationConsumerStack', + }, ]; // Cache images diff --git a/packages/stack/example/src/StackAnimationConsumerStack.tsx b/packages/stack/example/src/StackAnimationConsumerStack.tsx new file mode 100644 index 00000000..19d975ae --- /dev/null +++ b/packages/stack/example/src/StackAnimationConsumerStack.tsx @@ -0,0 +1,104 @@ +import * as React from 'react'; +import { Button, View } from 'react-native'; +import Animated from 'react-native-reanimated'; +import { + createStackNavigator, + NavigationStackScreenProps, + StackAnimationProgressContext, + StackAnimationIsSwipingContext, + StackAnimationIsClosingContext, +} from 'react-navigation-stack'; + +const ListScreen = (props: NavigationStackScreenProps) => ( + +