form.tsx 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. import { useState } from 'react';
  2. import { View, Text, StyleSheet, TouchableWithoutFeedback, Keyboard, Pressable } from 'react-native';
  3. import { KeyboardAwareScrollView } from 'react-native-keyboard-aware-scroll-view';
  4. import PaginationIndicator from '../../global/PaginationIndicator';
  5. import { router } from 'expo-router';
  6. import BindingPhoneNumberPage from './formPages/bindingPhoneNumberPage';
  7. import BindingPhoneNumberPageStepTwo from './formPages/bindingPhoneNumberPageStepTwo';
  8. import BindingFinishPage from './formPages/bindingFinishPage';
  9. const BindingPhoneNumberForm = ({ bindingFormData, setBindingFormData }: any) => {
  10. const [screen, setScreen] = useState<number>(0);
  11. const FormTitle = ['舊用戶手機號碼綁定 (1/2)', '舊用戶手機號碼綁定 (2/2)'];
  12. // const goToPreviousPage = () => {
  13. // router.back();
  14. // };
  15. const goToPreviousPage = () => {
  16. if (screen == 1) {
  17. setScreen((prevState) => prevState - 1);
  18. } else {
  19. router.replace('/(public)/login');
  20. }
  21. };
  22. const ScreenDisplay = () => {
  23. switch (screen) {
  24. case 0:
  25. return (
  26. <BindingPhoneNumberPage
  27. bindingFormData={bindingFormData}
  28. setBindingFormData={setBindingFormData}
  29. setScreen={setScreen}
  30. />
  31. );
  32. case 1:
  33. return (
  34. <BindingPhoneNumberPageStepTwo
  35. bindingFormData={bindingFormData}
  36. setBindingFormData={setBindingFormData}
  37. setScreen={setScreen}
  38. />
  39. );
  40. case 2:
  41. return <BindingFinishPage />;
  42. default:
  43. return <></>;
  44. }
  45. };
  46. return (
  47. <>
  48. <KeyboardAwareScrollView
  49. enableOnAndroid={true}
  50. resetScrollToCoords={{ x: 0, y: 0 }}
  51. style={{
  52. height: '100%'
  53. }}
  54. >
  55. {screen !== 2 && (
  56. <View style={styles.topContainer}>
  57. <Text style={styles.text}>{FormTitle[screen]}</Text>
  58. <View style={styles.breakline} />
  59. <View className="w-full flex-row justify-between items-center">
  60. <Pressable onPress={goToPreviousPage} className="flex-1">
  61. <Text
  62. style={{
  63. color: '#888888',
  64. fontSize: 18,
  65. paddingLeft: 25
  66. }}
  67. >{`< 上一步`}</Text>
  68. </Pressable>
  69. <PaginationIndicator totalPages={2} currentPage={0} />
  70. <View className="flex-1" />
  71. </View>
  72. </View>
  73. )}
  74. <View style={styles.bottomContainer}>{ScreenDisplay()}</View>
  75. </KeyboardAwareScrollView>
  76. </>
  77. );
  78. };
  79. const styles = StyleSheet.create({
  80. topContainer: {
  81. flex: 1,
  82. alignItems: 'center',
  83. justifyContent: 'center',
  84. paddingBottom: '25%',
  85. paddingTop: '15%'
  86. },
  87. previouspageAndPaginationWrapper: {
  88. display: 'flex',
  89. width: '100%',
  90. flexDirection: 'row',
  91. justifyContent: 'space-between',
  92. alignItems: 'center',
  93. paddingHorizontal: 25
  94. },
  95. bottomContainer: { flex: 1 },
  96. breakline: {
  97. width: 24,
  98. height: 1,
  99. backgroundColor: '#000000',
  100. marginVertical: 17
  101. },
  102. text: { fontSize: 24, fontWeight: '300' }
  103. });
  104. export default BindingPhoneNumberForm;