react-navigation-stack
Version:
Stack navigator component for React Navigation
2 lines • 4.86 kB
JavaScript
var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");var _interopRequireWildcard=require("@babel/runtime/helpers/interopRequireWildcard");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _classCallCheck2=_interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));var _createClass2=_interopRequireDefault(require("@babel/runtime/helpers/createClass"));var _possibleConstructorReturn2=_interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));var _getPrototypeOf3=_interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));var _inherits2=_interopRequireDefault(require("@babel/runtime/helpers/inherits"));var React=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _TouchableItem=_interopRequireDefault(require("../TouchableItem"));var _backIcon=_interopRequireDefault(require("../assets/back-icon.png"));var _jsxFileName="/Users/satya/Workspace/Callstack/react-navigation-stack/src/views/Header/ModularHeaderBackButton.tsx";var ModularHeaderBackButton=function(_React$PureComponent){(0,_inherits2.default)(ModularHeaderBackButton,_React$PureComponent);function ModularHeaderBackButton(){var _getPrototypeOf2;var _this;(0,_classCallCheck2.default)(this,ModularHeaderBackButton);for(var _len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++){args[_key]=arguments[_key];}_this=(0,_possibleConstructorReturn2.default)(this,(_getPrototypeOf2=(0,_getPrototypeOf3.default)(ModularHeaderBackButton)).call.apply(_getPrototypeOf2,[this].concat(args)));_this.state={};_this.onTextLayout=function(e){if(_this.state.initialTextWidth){return;}_this.setState({initialTextWidth:e.nativeEvent.layout.x+e.nativeEvent.layout.width});};_this.getTitleText=function(){var _this$props=_this.props,width=_this$props.width,title=_this$props.title,truncatedTitle=_this$props.truncatedTitle;var initialTextWidth=_this.state.initialTextWidth;if(title===null){return null;}else if(!title){return truncatedTitle;}else if(initialTextWidth&&width&&initialTextWidth>width){return truncatedTitle;}else{return title.length>8?truncatedTitle:title;}};return _this;}(0,_createClass2.default)(ModularHeaderBackButton,[{key:"renderBackImage",value:function renderBackImage(){var _this$props2=this.props,backImage=_this$props2.backImage,backTitleVisible=_this$props2.backTitleVisible,tintColor=_this$props2.tintColor;if(React.isValidElement(backImage)){return backImage;}else if(backImage){return backImage({tintColor:tintColor});}else{return React.createElement(_reactNative.Image,{style:[styles.icon,!!backTitleVisible&&styles.iconWithTitle,!!tintColor&&{tintColor:tintColor}],source:_backIcon.default,__source:{fileName:_jsxFileName,lineNumber:51}});}}},{key:"maybeRenderTitle",value:function maybeRenderTitle(){var _this$props3=this.props,backTitleVisible=_this$props3.backTitleVisible,titleStyle=_this$props3.titleStyle,tintColor=_this$props3.tintColor;var backTitleText=this.getTitleText();if(!backTitleVisible||backTitleText===null){return null;}var LabelContainerComponent=this.props.LabelContainerComponent;return React.createElement(LabelContainerComponent,{__source:{fileName:_jsxFileName,lineNumber:90}},React.createElement(_reactNative.Text,{accessible:false,onLayout:this.onTextLayout,style:[styles.title,!!tintColor&&{color:tintColor},titleStyle],numberOfLines:1,__source:{fileName:_jsxFileName,lineNumber:91}},this.getTitleText()));}},{key:"render",value:function render(){var _this$props4=this.props,onPress=_this$props4.onPress,title=_this$props4.title;var ButtonContainerComponent=this.props.ButtonContainerComponent;return React.createElement(_TouchableItem.default,{accessibilityComponentType:"button",accessibilityLabel:title?title+", back":'Go back',accessibilityTraits:"button",testID:"header-back",delayPressIn:0,onPress:onPress,style:styles.container,borderless:true,__source:{fileName:_jsxFileName,lineNumber:112}},React.createElement(_reactNative.View,{style:styles.container,__source:{fileName:_jsxFileName,lineNumber:122}},React.createElement(ButtonContainerComponent,{__source:{fileName:_jsxFileName,lineNumber:123}},this.renderBackImage()),this.maybeRenderTitle()));}}]);return ModularHeaderBackButton;}(React.PureComponent);ModularHeaderBackButton.defaultProps={tintColor:'#037aff',truncatedTitle:'Back'};var styles=_reactNative.StyleSheet.create({container:{alignItems:'center',flexDirection:'row',backgroundColor:'transparent',marginBottom:1,overflow:'visible'},title:{fontSize:17,paddingRight:10},icon:{height:21,width:12,marginLeft:9,marginRight:22,marginVertical:12,resizeMode:'contain',transform:[{scaleX:_reactNative.I18nManager.isRTL?-1:1}]},iconWithTitle:{marginRight:3}});var _default=ModularHeaderBackButton;exports.default=_default;
//# sourceMappingURL=ModularHeaderBackButton.js.map