From 8b509dd525cb62ef531e2dfbfd58cfda6d470905 Mon Sep 17 00:00:00 2001 From: Brent Vatne Date: Thu, 11 Oct 2018 17:04:23 -0700 Subject: [PATCH] Add options to opt-in/out of card overlay and shadow --- packages/stack/example/src/SimpleStack.js | 4 +++ .../stack/src/views/StackView/StackView.js | 33 +++++++++++++++---- .../src/views/StackView/StackViewLayout.js | 2 ++ .../StackView/StackViewStyleInterpolator.js | 26 ++++++++------- packages/stack/src/views/Transitioner.js | 3 +- 5 files changed, 48 insertions(+), 20 deletions(-) diff --git a/packages/stack/example/src/SimpleStack.js b/packages/stack/example/src/SimpleStack.js index 1cc3cda8..68b40f00 100644 --- a/packages/stack/example/src/SimpleStack.js +++ b/packages/stack/example/src/SimpleStack.js @@ -68,5 +68,9 @@ export default createStackNavigator( }, { initialRouteName: 'List', + + // these are the defaults + cardShadowEnabled: true, + cardOverlayEnabled: false, } ); diff --git a/packages/stack/src/views/StackView/StackView.js b/packages/stack/src/views/StackView/StackView.js index 57e28f24..a3a2c45e 100644 --- a/packages/stack/src/views/StackView/StackView.js +++ b/packages/stack/src/views/StackView/StackView.js @@ -1,5 +1,5 @@ import React from 'react'; -import { NativeModules } from 'react-native'; +import { Platform, NativeModules } from 'react-native'; import { StackActions } from 'react-navigation'; import StackViewLayout from './StackViewLayout'; @@ -9,13 +9,16 @@ import TransitionConfigs from './StackViewTransitionConfigs'; const NativeAnimatedModule = NativeModules && NativeModules.NativeAnimatedModule; -class StackView extends React.Component { - static defaultProps = { - navigationConfig: { - mode: 'card', - }, - }; +// NOTE(brentvatne): this was previously in defaultProps, but that is deceiving +// because the entire object will be clobbered by navigationConfig that is +// passed in. +const DefaultNavigationConfig = { + mode: 'card', + cardShadowEnabled: true, + cardcardOverlayEnabled: false, +}; +class StackView extends React.Component { render() { return ( { + const { navigationConfig } = this.props; + return navigationConfig && navigationConfig.hasOwnProperty('cardShadowEnabled') + ? navigationConfig.cardShadowEnabled + : DefaultNavigationConfig.cardShadowEnabled; + }; + + _getCardOverlayEnabled = () => { + const { navigationConfig } = this.props; + return navigationConfig && navigationConfig.hasOwnProperty('cardOverlayEnabled') + ? navigationConfig.cardOverlayEnabled + : DefaultNavigationConfig.cardOverlayEnabled; + }; + _render = (transitionProps, lastTransitionProps) => { const { screenProps, navigationConfig } = this.props; return (