GabrielTrettel
3 years ago
2 changed files with 72 additions and 2 deletions
@ -0,0 +1,70 @@ |
|||
import React, {useState} from "react"; |
|||
import ErrorMessage from "./ErrorMessage"; |
|||
import { useFormikContext } from "formik"; |
|||
import { View, TextInput, StyleSheet } from "react-native"; |
|||
import { MaterialCommunityIcons } from "@expo/vector-icons"; |
|||
import colors from "../../config/colors"; |
|||
import defaultStyles from "../../config/styles"; |
|||
|
|||
function PasswordFormField({ name, ...otherProps }) { |
|||
const { |
|||
values, |
|||
setFieldTouched, |
|||
setFieldValue, |
|||
handleChange, |
|||
errors, |
|||
touched, |
|||
} = useFormikContext(); |
|||
const [fieldVal, setFieldVal] = useState(values[name]); |
|||
|
|||
|
|||
return ( |
|||
<View> |
|||
<View style={styles.container}> |
|||
<TextInput |
|||
flex={1} |
|||
onBlur={() => setFieldTouched(name)} |
|||
onChangeText={(val) => { |
|||
setFieldVal(val); |
|||
}} |
|||
value={fieldVal.toString()} |
|||
style={defaultStyles.text} |
|||
height={48} |
|||
placeholderTextColor={colors.medium} |
|||
{...otherProps} |
|||
/> |
|||
|
|||
<MaterialCommunityIcons |
|||
name={"eye"} |
|||
size={20} |
|||
color={defaultStyles.colors.medium} |
|||
style={styles.icon} |
|||
/> |
|||
</View> |
|||
<View style={{ paddingHorizontal: 16 }}> |
|||
<ErrorMessage error={errors[name]} visible={touched[name]} /> |
|||
</View> |
|||
</View> |
|||
); |
|||
} |
|||
|
|||
const styles = StyleSheet.create({ |
|||
container: { |
|||
...defaultStyles.shadow, |
|||
flexDirection: "row", |
|||
alignItems: "center", |
|||
backgroundColor: colors.white, |
|||
borderRadius: 6, |
|||
borderColor: colors.grayBG, |
|||
borderWidth: 1, |
|||
padding: 5, |
|||
paddingLeft: 10, |
|||
marginHorizontal: 16 |
|||
}, |
|||
icon: { |
|||
marginRight: 10, |
|||
alignItems: "flex-end" |
|||
}, |
|||
}); |
|||
|
|||
export default PasswordFormField; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue