-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
92 lines (82 loc) · 2.65 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
import React, { useState } from 'react';
import { Modal, View, Text, StyleSheet } from 'react-native';
import { Provider as PaperProvider } from 'react-native-paper';
import FormStepOne from './components/FormStepOne';
import FormStepTwo from './components/FormStepTwo';
import FormStepThree from './components/FormStepThree';
const App = () => {
const [currentStep, setCurrentStep] = useState(1);
const [formData, setFormData] = useState({});
const [isModalVisible, setIsModalVisible] = useState(false);
const saveFormData = (newData) => {
setFormData({ ...formData, ...newData });
};
const goToNextStep = () => {
setCurrentStep(currentStep + 1);
};
const goToPrevStep = () => {
setCurrentStep(currentStep - 1);
};
const handleSubmit = () => {
console.log(formData);
setIsModalVisible(false);
};
const handleComplete = () => {
setIsModalVisible(true);
};
let content;
switch (currentStep) {
case 1:
content = <FormStepOne onSave={saveFormData} onNext={goToNextStep} initialValues={{ emailId: formData.emailId || '', password: formData.password || ''}} />;
break;
case 2:
content = <FormStepTwo onSave={saveFormData} onNext={goToNextStep} onBack={goToPrevStep} initialValues={{ firstName: formData.firstName || '', lastName: formData.lastName || '', address: formData.address || ''}} />;
break;
case 3:
content = <FormStepThree onSave={saveFormData} onBack={goToPrevStep} onComplete={handleComplete} formData={formData} initialValues={{ countryCode: formData.countryCode || '', phoneNumber: formData.phoneNumber || ''}} />;
break;
default:
content = <View style={styles.summaryContainer}><Text>Submission Complete</Text></View>;
break;
}
return (
<PaperProvider>
{content}
<Modal
visible={isModalVisible}
onRequestClose={() => setIsModalVisible(false)}
>
<View style={styles.modalContainer}>
<Text style={styles.modalTitle}>Review your Details</Text>
<Text>{JSON.stringify(formData, null, 2)}</Text>
<Text onPress={handleSubmit} style={styles.modalButton}>
Confirm and Submit
</Text>
</View>
</Modal>
</PaperProvider>
);
};
const styles = StyleSheet.create({
summaryContainer: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
modalContainer: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: 'white',
},
modalTitle: {
fontSize: 20,
marginBottom: 20,
},
modalButton: {
marginTop: 20,
color: 'blue',
textDecorationLine: 'underline',
},
});
export default App;