Fix onTransitionStart config not being invoked with keyboard aware navigator, and use prop over config when available

This commit is contained in:
Brent Vatne 2018-07-16 15:13:25 -07:00
parent ebdd2da79f
commit fa4fdb9c57
3 changed files with 12 additions and 6 deletions

View File

@ -1,7 +1,7 @@
import React from 'react';
import { TextInput } from 'react-native';
export default Navigator =>
export default (Navigator, navigatorConfig) =>
class KeyboardAwareNavigator extends React.Component {
static router = Navigator.router;
_previouslyFocusedTextInput = null;
@ -49,7 +49,9 @@ export default Navigator =>
}
}
this.props.onTransitionStart &&
this.props.onTransitionStart(transitionProps, prevTransitionProps);
const onTransitionStart =
this.props.onTransitionStart || navigatorConfig.onTransitionStart;
onTransitionStart &&
onTransitionStart(transitionProps, prevTransitionProps);
};
};

View File

@ -28,7 +28,7 @@ function createStackNavigator(routeConfigMap, stackConfig = {}) {
// Create a navigator with StackView as the view
let Navigator = createNavigator(StackView, router, stackConfig);
if (!disableKeyboardHandling) {
Navigator = createKeyboardAwareNavigator(Navigator);
Navigator = createKeyboardAwareNavigator(Navigator, stackConfig);
}
return Navigator;

View File

@ -24,10 +24,14 @@ class StackView extends React.Component {
screenProps={this.props.screenProps}
navigation={this.props.navigation}
descriptors={this.props.descriptors}
onTransitionStart={this.props.navigationConfig.onTransitionStart}
onTransitionStart={
this.props.onTransitionStart ||
this.props.navigationConfig.onTransitionStart
}
onTransitionEnd={(transition, lastTransition) => {
const { navigationConfig, navigation } = this.props;
const { onTransitionEnd } = navigationConfig;
const onTransitionEnd =
this.props.onTransitionEnd || navigationConfig.onTransitionEnd;
if (transition.navigation.state.isTransitioning) {
navigation.dispatch(
StackActions.completeTransition({