| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- import { View, Text, StyleSheet } from 'react-native';
- import NormalInput from '../../../global/normal_input';
- import { useState } from 'react';
- import DateModal from '../../../global/date_input';
- import NormalButton from '../../../global/normal_button';
- import useSignUpStore from '../../../../providers/signup_form_store';
- import DropdownSelect from '../../../global/dropdown_select';
- type basicInformationProps = {
- goToNextPage: () => void;
- };
- const BasicInformation: React.FC<basicInformationProps> = ({ goToNextPage }) => {
- const { signUpFormData, setSignUpFormData } = useSignUpStore();
- const [selectedYear, setSelectedYear] = useState('');
- const [selectedMonth, setSelectedMonth] = useState('');
- const [selectedDay, setSelectedDay] = useState('');
- const [birthDate, setBirthDate] = useState('');
- const [error, setError] = useState('');
- const handleNext = () => {
- setSignUpFormData({
- ...signUpFormData,
- birthDate: birthDate
- });
- if (
- signUpFormData.nickName === '' ||
- signUpFormData.gender === '' ||
- signUpFormData.birthDateMonth === '' ||
- signUpFormData.birthDateDay === ''
- ) {
- setError('請確保所有資料都已填寫。');
- } else {
- setError('');
- goToNextPage();
- }
- };
- const nameFieldPlaceholder = signUpFormData.nickName ? signUpFormData.nickName : '暱稱';
- const birthMonthOptions = Array.from({ length: 12 }, (_, i) => {
- const month = i + 1;
- return { label: month.toString(), value: month.toString() };
- });
- const birthDayOptions = Array.from({ length: 31 }, (_, i) => {
- const day = i + 1;
- return { label: day.toString(), value: day.toString() };
- });
- const genderDropdownOptions = [
- { label: '男', value: 'man' },
- { label: '女', value: 'woman' }
- ];
- const handleSelect = (type: string, value: string) => {
- if (type === 'year') {
- setSelectedYear(value);
- } else if (type === 'month') {
- setSelectedMonth(value);
- } else if (type === 'day') {
- setSelectedDay(value);
- }
- if (selectedMonth && selectedDay) {
- const day = selectedDay.padStart(2, '0');
- const month = selectedMonth.padStart(2, '0');
- const date = `${day}/${month}/11`;
- setBirthDate(date);
- }
- };
- return (
- <>
- <View style={styles.container}>
- <Text style={styles.text}>請填妥以下資料</Text>
- <View
- className=""
- style={{
- display: 'flex',
- flexDirection: 'column',
- gap: 10
- }}
- >
- <NormalInput
- value={signUpFormData.nickName}
- placeholder={nameFieldPlaceholder}
- onChangeText={(text) => {
- setSignUpFormData({
- ...signUpFormData,
- nickName: text
- });
- }}
- />
- {/* <NormalInput
- placeholder="帳戶密碼"
- onChangeText={(text) => {
- setSignUpFormData({
- ...signUpFormData,
- password: text
- });
- }}
- secureTextEntry={true}
- /> */}
- <View className="">
- {/* <TestingDropDownSelect
- dropdownOptions={genderDropdownOptions}
- onSelect={(value) => {
- setSignUpFormData({
- ...signUpFormData,
- gender: value
- });
- }}
- placeholder={'性別'}
- extendedStyle={{ paddingLeft: 10, paddingVertical: 13 }}
- /> */}
- <DropdownSelect
- onSelect={(value) => {
- setSignUpFormData({
- ...signUpFormData,
- gender: value
- });
- }}
- dropdownOptions={genderDropdownOptions}
- placeholder={
- signUpFormData.gender
- ? genderDropdownOptions.find((option) => option.value === signUpFormData.gender)
- ?.label || '性別'
- : '性別'
- }
- extendedStyle={{ paddingLeft: 10, paddingVertical: 18 }}
- />
- </View>
- <View className="flex flex-row">
- <DropdownSelect
- onSelect={(value) => {
- setSignUpFormData({
- ...signUpFormData,
- birthDateMonth: value.padStart(2, '0')
- });
- }}
- dropdownOptions={birthMonthOptions}
- // placeholder={'生日月份'}
- placeholder={`${
- signUpFormData.birthDateMonth
- ? parseInt(signUpFormData.birthDateMonth).toString()
- : '生日月份'
- }`}
- extendedStyle={{ paddingLeft: 10, paddingVertical: 18, marginRight: 6 }}
- />
- <DropdownSelect
- onSelect={(value) => {
- setSignUpFormData({
- ...signUpFormData,
- birthDateDay: value.padStart(2, '0')
- });
- }}
- dropdownOptions={birthDayOptions}
- // placeholder={'日期'}
- placeholder={`${
- signUpFormData.birthDateDay
- ? parseInt(signUpFormData.birthDateDay).toString()
- : '生日日期'
- }`}
- extendedStyle={{ paddingLeft: 10, paddingVertical: 18, marginLeft: 6 }}
- />
- </View>
- <NormalButton
- title={<Text style={{ color: '#fff' }}>下一步</Text>}
- onPress={handleNext}
- extendedStyle={{}}
- />
- <View className="mb-4" />
- </View>
- {error && <Text style={styles.errorMessage}>{error}</Text>}
- </View>
- </>
- );
- };
- const styles = StyleSheet.create({
- container: {
- flex: 1,
- marginHorizontal: 20
- },
- text: {
- fontSize: 20,
- paddingBottom: 10
- },
- errorMessage: {
- fontSize: 14,
- color: '#ff0033',
- fontWeight: '400',
- marginLeft: 10,
- marginTop: 10
- }
- });
- export default BasicInformation;
|