diff --git a/src/components/MyWallet/AddRecipient.jsx b/src/components/MyWallet/AddRecipient.jsx index fbce09b..f8d778b 100644 --- a/src/components/MyWallet/AddRecipient.jsx +++ b/src/components/MyWallet/AddRecipient.jsx @@ -2,12 +2,68 @@ import React, {useEffect, useState} from 'react' import { Link } from 'react-router-dom' import Icons from '../Helpers/Icons' import usersService from '../../services/UsersService' +import InputCom from '../Helpers/Inputs/InputCom' + +import {Formik, Form} from 'formik' +import * as Yup from 'yup' + + +const validationSchema = Yup.object().shape({ + firstname: Yup.string() + .min(3, 'Minimum 3 characters') + .max(25, 'Maximum 25 characters') + .required('Firstname is required'), + lastname: Yup.string() + .min(3, 'Minimum 3 characters') + .max(25, 'Maximum 25 characters') + .required('Lastname is required'), + country: Yup.string() + .min(1, 'Minimum 3 characters') + .max(25, 'Maximum 25 characters') + .required('Country is required'), + bank: Yup.string() + .min(3, 'Minimum 3 characters') + .max(25, 'Maximum 25 characters') + .required('Bank name is required'), + accountNumber: Yup.string() + .min(3, 'Minimum 3 characters') + .max(25, 'Maximum 25 characters') + .required('Account Number is required'), + repeatAccountNumber: Yup.string() + .min(3, 'Minimum 3 characters') + .max(25, 'Maximum 25 characters') + .required('Repeat Password is required'), + accountType: Yup.string() + .min(3, 'Minimum 3 characters') + .max(25, 'Maximum 25 characters') + .required('Account Type is required'), + city: Yup.string() + .min(3, 'Minimum 3 characters') + .max(25, 'Maximum 25 characters') + .required('City is required'), + state: Yup.string() + .min(3, 'Minimum 3 characters') + .max(25, 'Maximum 25 characters') + .required('State is required'), + }) + + const initialValues = { + firstname: '', + lastname: '', + country: '', + bank: '', + accountNumber: '', + repeatAccountNumber: '', + accountType: '', + state: '', + city: '' + } function AddRecipient() { const apiURL = new usersService() - let [countries, setCountries] = useState({ // STATE TO HOLD LIST OF COUNTRIES + let [allCountries, setAllCountries] = useState({ // STATE TO HOLD LIST OF COUNTRIES loading: true, data: [] }) @@ -17,60 +73,29 @@ function AddRecipient() { data: [] }) - let [accountType, setAccountType] = useState({ // STATE TO HOLD LIST ACCOUNT TYPE + let [accType, setAccType] = useState({ // STATE TO HOLD LIST ACCOUNT TYPE loading: true, data: [] }) - - //STATE FOR CONTROLLED INPUTS - let [inputs, setInputs] = useState({ - firstname: '', - lastname: '', - country: '', - 'bank-name': '', - 'account-number': '', - 'repeat-account-number': '', - 'account-type': '', - state: '', - city: '' - }) - - // FUNCTION TO HANDLE INPUT CHANGE - const handleChange = ({target:{name, value}}) => { - setInputs(prev => ({...prev, [name]:value})) - } //FUNCTION TO HANDLE SUBMIT - const handleSubmit = (e) => { - e.preventDefault(); + const handleSubmit = (values, helpers) => { + // setRequestState({message: '', loading: true, status: false}) + console.log('working') - //valid inputs before submitting. Just for texting remove later - - - // RETURN INPUTS TO EMPTY STRING - setInputs({ - firstname: '', - lastname: '', - country: '', - 'bank-name': '', - 'account-number': '', - 'repeat-account-number': '', - 'account-type': '', - state: '', - city: '' - }) + //valid inputs before submitting. Just for texting remove later } // FUNCTION TO GET COUNTRIES const getCountry = ()=> { apiURL.getSignupCountryData().then((res)=>{ if(res.data.internal_return < 0){ - setCountries(prev => ({loading: false, data: []})) + setAllCountries(prev => ({loading: false, data: []})) return } - setCountries(prev => ({loading: false, data:res.data.signup_country})) + setAllCountries(prev => ({loading: false, data:res.data.signup_country})) }).catch((error)=>{ - setCountries(prev => ({loading: false, data: []})) + setAllCountries(prev => ({loading: false, data: []})) }) } // END OF FUNCTION TO GET COUNTRIES @@ -93,12 +118,12 @@ function AddRecipient() { const getAccountTypes = ()=> { apiURL.getAccountTypes().then((res)=>{ if(res.data.internal_return < 0){ - setAccountType(prev => ({loading: false, data: []})) + setAccType(prev => ({loading: false, data: []})) return } - setAccountType(prev => ({loading: false, data:res.data.result_list})) + setAccType(prev => ({loading: false, data:res.data.result_list})) }).catch((error)=>{ - setAccountType(prev => ({loading: false, data: []})) + setAccType(prev => ({loading: false, data: []})) }) } // END OF FUNCTION TO GET ACCOUNT TYPES @@ -113,148 +138,193 @@ function AddRecipient() {
-

ADD BANK ACCOUNT

-
- - {/* inputs starts here */} -
- - -
+

ADD BANK ACCOUNT

+ + {(props)=>( + + + {/* inputs starts here */} + {/* firstname */} +
+
+ + {(props.errors.firstname && props.touched.firstname) &&

{props.errors.firstname}

} +
-
- - -
+ {/* lastname */} +
+ + {(props.errors.lastname && props.touched.lastname) &&

{props.errors.lastname}

} +
+
-
- - -
+ +
+ {/* country */} +
+ + + {(props.errors.country && props.touched.country) &&

{props.errors.country}

} +
+ + {/* bank name */} +
+ + + {(props.errors.bank && props.touched.bank) &&

{props.errors.bank}

} +
+
-
- - -
+ {/* ACCOUNT NUMBER */} +
+
+ + {(props.errors.accountNumber && props.touched.accountNumber) &&

{props.errors.accountNumber}

} +
-
- - -
+ {/* REPEAT ACCT. NUMBER */} +
+ + {(props.errors.repeatAccountNumber && props.touched.repeatAccountNumber) &&

{props.errors.repeatAccountNumber}

} +
+
-
- - -
+
+ {/* Account Type */} +
+ + + {(props.errors.accountType && props.touched.accountType) &&

{props.errors.accountType}

} +
+
-
- - -
+ {/* state */} +
+
+ + {(props.errors.state && props.touched.state) &&

{props.errors.state}

} +
-
- - -
+ {/* city */} +
+ + {(props.errors.city && props.touched.city) &&

{props.errors.city}

} +
+
-
- - -
+ {/* end of inputs starts here */} - {/* end of inputs starts here */} - -
- -
- +
+ +
+ + )} +