From 6472ced17e10cfefc960d32e37222e38421e42de Mon Sep 17 00:00:00 2001 From: Ville Immonen Date: Sun, 23 Apr 2017 18:14:21 +0300 Subject: [PATCH] Get truncated back button title from the previous scene (#1167) --- packages/react-navigation/src/views/Header.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/packages/react-navigation/src/views/Header.js b/packages/react-navigation/src/views/Header.js index 0e55196a..4ff63c59 100644 --- a/packages/react-navigation/src/views/Header.js +++ b/packages/react-navigation/src/views/Header.js @@ -59,8 +59,12 @@ class Header extends React.PureComponent { return sceneOptions.title; } + _getLastScene(scene: NavigationScene): ?NavigationScene { + return this.props.scenes.find(s => s.index === scene.index - 1); + } + _getBackButtonTitleString(scene: NavigationScene): ?string { - const lastScene = this.props.scenes.find(s => s.index === scene.index - 1); + const lastScene = this._getLastScene(scene); if (!lastScene) { return null; } @@ -71,6 +75,14 @@ class Header extends React.PureComponent { return this._getHeaderTitleString(lastScene); } + _getTruncatedBackButtonTitle(scene: NavigationScene): ?string { + const lastScene = this._getLastScene(scene); + if (!lastScene) { + return null; + } + return this.props.getScreenDetails(lastScene).options.headerTruncatedBackTitle; + } + _renderTitleComponent = (props: SceneProps) => { const details = this.props.getScreenDetails(props.scene); const headerTitle = details.options.headerTitle; @@ -114,6 +126,7 @@ class Header extends React.PureComponent { return null; } const backButtonTitle = this._getBackButtonTitleString(props.scene); + const truncatedBackButtonTitle = this._getTruncatedBackButtonTitle(props.scene); const width = this.state.widths[props.scene.key] ? (this.props.layout.initWidth - this.state.widths[props.scene.key]) / 2 : undefined; @@ -123,7 +136,7 @@ class Header extends React.PureComponent { pressColorAndroid={options.headerPressColorAndroid} tintColor={options.headerTintColor} title={backButtonTitle} - truncatedTitle={options.headerTruncatedBackTitle} + truncatedTitle={truncatedBackButtonTitle} width={width} /> );