diff --git a/src/components/mainButton/index.js b/src/components/mainButton/index.js new file mode 100644 index 000000000..d7a48f861 --- /dev/null +++ b/src/components/mainButton/index.js @@ -0,0 +1,3 @@ +import MainButton from "./view/mainButtonView"; + +export { MainButton }; diff --git a/src/components/mainButton/view/mainButtonStyles.js b/src/components/mainButton/view/mainButtonStyles.js new file mode 100644 index 000000000..4d7541e72 --- /dev/null +++ b/src/components/mainButton/view/mainButtonStyles.js @@ -0,0 +1,36 @@ +import EStyleSheet from "react-native-extended-stylesheet"; + +export default EStyleSheet.create({ + wrapper: {}, + touchable: { + width: 163, + height: 56, + borderRadius: 30, + backgroundColor: "#357ce6", + flexDirection: "row", + margin: 5, + shadowOffset: { + height: 5, + }, + shadowColor: "#5f5f5fbf", + shadowOpacity: 0.3, + }, + icon: { + alignSelf: "center", + fontSize: 25, + marginLeft: 20, + }, + text: { + color: "white", + fontWeight: "400", + alignSelf: "center", + fontSize: 14, + paddingLeft: 10, + paddingRight: 20, + }, + secondText: { + fontWeight: "bold", + }, + activityIndicator: { alignSelf: "center", flex: 1 }, + body: { flex: 1, flexDirection: "row" }, +}); diff --git a/src/components/mainButton/view/mainButtonView.js b/src/components/mainButton/view/mainButtonView.js new file mode 100644 index 000000000..d1d46014e --- /dev/null +++ b/src/components/mainButton/view/mainButtonView.js @@ -0,0 +1,76 @@ +import React, { Component, Fragment } from "react"; +import { View, Text, TouchableOpacity, ActivityIndicator } from "react-native"; +import Ionicons from "react-native-vector-icons/Ionicons"; + +// Constants + +// Components + +// Styles +import styles from "./mainButtonStyles"; + +class MainButton extends Component { + /* Props + * ------------------------------------------------ + * @prop { string } isLoading - TODO: + * @prop { string } text - TODO: + * @prop { boolean } secondText - TODO: + * @prop { boolean } iconColor - TODO: + * @prop { boolean } iconName - TODO: + * @prop { boolean } isDisable - TODO: + * + * + */ + constructor(props) { + super(props); + + this.state = {}; + } + + // Component Life Cycles + + // Component Functions + _handleOnPress = () => { + const { onPress, isDisable } = this.props; + + onPress && !isDisable && onPress(); + }; + + _getBody = () => { + const { isLoading, text, secondText, iconColor, iconName } = this.props; + + if (isLoading) { + return ( + + ); + } else if (text) { + return ( + + + + {text} + {secondText && {secondText}} + + + ); + } + return ; + }; + + render() { + const { wrapperStyle, isDisable } = this.props; + + return ( + + this._handleOnPress()} + style={styles.touchable} + > + {this._getBody()} + + + ); + } +} + +export default MainButton; diff --git a/src/screens/login/screen/loginScreen.js b/src/screens/login/screen/loginScreen.js index 45a5a6bbf..20a89cbf0 100644 --- a/src/screens/login/screen/loginScreen.js +++ b/src/screens/login/screen/loginScreen.js @@ -19,6 +19,7 @@ import { TabBar } from "../../../components/tabBar"; import { LoginHeader } from "../../../components/loginHeader"; import { FormInput } from "../../../components/formInput"; import { InformationArea } from "../../../components/informationArea"; +import { MainButton } from "../../../components/mainButton"; import ScrollableTabView from "@esteemapp/react-native-scrollable-tab-view"; import { Login } from "../../../providers/steem/auth"; @@ -199,7 +200,7 @@ class LoginScreen extends Component { removed upon logout!" iconName="ios-information-circle-outline" /> - + - - {!this.state.isLoading ? ( - - - - LOGIN - - - ) : ( - - )} - + - - - - - - steem - connect - - - - + diff --git a/src/screens/login/screen/loginStyles.js b/src/screens/login/screen/loginStyles.js index 5b10f1ea5..89e0c28b0 100644 --- a/src/screens/login/screen/loginStyles.js +++ b/src/screens/login/screen/loginStyles.js @@ -40,5 +40,13 @@ export default EStyleSheet.create({ steemConnectTab: { backgroundColor: "#fff", minWidth: "$deviceWidth", + flex: 1, + }, + mainButtonWrapper: { + position: "absolute", + flex: 0.1, + right: 24, + bottom: 24, + flexDirection: "row", }, });