diff options
| author | it-fixcomart <it@fixcomart.co.id> | 2024-09-11 10:04:31 +0700 |
|---|---|---|
| committer | it-fixcomart <it@fixcomart.co.id> | 2024-09-11 10:04:31 +0700 |
| commit | 6ff5efdb4b7eec25f991f5bfcc02b4a3f883981b (patch) | |
| tree | c2562f6b6cb5df6774efdc19f1bea394265a0fae /src-migrate/modules/register/components/RegistrasiBisnis.tsx | |
| parent | 88e982cb95ec49fe96452317b6b06000a6700d70 (diff) | |
<iman> update error handling hanya muncul saat button daftar di click
Diffstat (limited to 'src-migrate/modules/register/components/RegistrasiBisnis.tsx')
| -rw-r--r-- | src-migrate/modules/register/components/RegistrasiBisnis.tsx | 190 |
1 files changed, 108 insertions, 82 deletions
diff --git a/src-migrate/modules/register/components/RegistrasiBisnis.tsx b/src-migrate/modules/register/components/RegistrasiBisnis.tsx index 1d8317f1..36476ab9 100644 --- a/src-migrate/modules/register/components/RegistrasiBisnis.tsx +++ b/src-migrate/modules/register/components/RegistrasiBisnis.tsx @@ -1,67 +1,60 @@ -import { ChangeEvent, useEffect, useMemo, useState } from "react"; -import FormBisnis from "./FormBisnis"; -import Form from "./Form"; -import TermCondition from "./TermCondition"; -import FormCaptcha from "./FormCaptcha"; -import { Radio, RadioGroup, Stack, Divider, Button } from '@chakra-ui/react' -import React from "react"; -import { - ChevronDownIcon, - ChevronRightIcon -} from '@heroicons/react/24/outline'; -import { useRegisterStore } from "../stores/useRegisterStore"; -import { useMutation } from "react-query"; -import { RegisterProps } from "~/types/auth"; -import { registerUser } from "~/services/auth"; -import router from "next/router"; -import { useRouter } from "next/router"; -import { UseToastOptions, useToast } from "@chakra-ui/react"; -import Link from "next/link"; - -const RegistrasiBisnis = () => { +import { ChangeEvent, useEffect, useMemo, useState } from 'react'; +import FormBisnis from './FormBisnis'; +import Form from './Form'; +import TermCondition from './TermCondition'; +import FormCaptcha from './FormCaptcha'; +import { Radio, RadioGroup, Stack, Divider, Button } from '@chakra-ui/react'; +import React from 'react'; +import { ChevronDownIcon, ChevronRightIcon } from '@heroicons/react/24/outline'; +import { useRegisterStore } from '../stores/useRegisterStore'; +import { useMutation } from 'react-query'; +import { RegisterProps } from '~/types/auth'; +import { registerUser } from '~/services/auth'; +import router from 'next/router'; +import { useRouter } from 'next/router'; +import { UseToastOptions, useToast } from '@chakra-ui/react'; +import Link from 'next/link'; +interface FormProps { + chekValid: boolean; +} +const RegistrasiBisnis: React.FC<FormProps> = ({ chekValid }) => { const [isPKP, setIsPKP] = useState(true); const [isTerdaftar, setIsTerdaftar] = useState(false); const [isDropIndividu, setIsDropIndividu] = useState(true); const [isBisnisClicked, setisBisnisClicked] = useState(true); const [selectedValue, setSelectedValue] = useState('PKP'); const [selectedValueBisnis, setSelectedValueBisnis] = useState('false'); - const { - form, - isCheckedTNC, - isValidCaptcha, - errors, - validate, - updateForm - } = useRegisterStore() - const isFormValid = useMemo(() => Object.keys(errors).length === 0, [errors]) - const toast = useToast() + const { form, isCheckedTNC, isValidCaptcha, errors, validate, updateForm } = + useRegisterStore(); + const isFormValid = useMemo(() => Object.keys(errors).length === 0, [errors]); + const toast = useToast(); const mutation = useMutation({ - mutationFn: (data: RegisterProps) => registerUser(data) - }) + mutationFn: (data: RegisterProps) => registerUser(data), + }); useEffect(() => { - if (selectedValue === "PKP") { - updateForm("is_pkp", 'true'); + if (selectedValue === 'PKP') { + updateForm('is_pkp', 'true'); validate(); } else { - updateForm("is_pkp", 'false'); + updateForm('is_pkp', 'false'); validate(); } - }, [selectedValue,]); - + }, [selectedValue]); + useEffect(() => { if (isTerdaftar) { - updateForm("is_terdaftar", 'true'); + updateForm('is_terdaftar', 'true'); validate(); } else { - updateForm("is_terdaftar", 'false'); + updateForm('is_terdaftar', 'false'); validate(); } - }, [isTerdaftar,]); + }, [isTerdaftar]); - const handleChange = (value: string) => { + const handleChange = (value: string) => { setSelectedValue(value); - if (value === "PKP") { + if (value === 'PKP') { validate(); setIsPKP(true); } else { @@ -70,10 +63,10 @@ const RegistrasiBisnis = () => { setIsPKP(false); } }; - + const handleChangeBisnis = (value: string) => { setSelectedValueBisnis(value); - if (value === "true") { + if (value === 'true') { validate(); setIsTerdaftar(true); } else { @@ -83,81 +76,114 @@ const RegistrasiBisnis = () => { }; const handleClick = () => { - setIsDropIndividu(!isDropIndividu) + setIsDropIndividu(!isDropIndividu); }; const handleClickBisnis = () => { - setisBisnisClicked(!isBisnisClicked) + setisBisnisClicked(!isBisnisClicked); }; return ( <> - - <div className="mt-4 border"> - <div className="p-4"> - <div onClick={handleClick} className="flex justify-between"> - <p className="text-2xl font-semibold text-center md:text-left"> + <div className='mt-4 border'> + <div className='p-4'> + <div onClick={handleClick} className='flex justify-between'> + <p className='text-2xl font-semibold text-center md:text-left'> Data Akun </p> {isDropIndividu ? ( - <div className="flex"> - <ChevronDownIcon onClick={handleClick} className='h-6 w-6 text-black' /> + <div className='flex'> + <ChevronDownIcon + onClick={handleClick} + className='h-6 w-6 text-black' + /> </div> ) : ( - <ChevronRightIcon onClick={handleClick} className='h-6 w-6 text-black' /> + <ChevronRightIcon + onClick={handleClick} + className='h-6 w-6 text-black' + /> )} </div> {isDropIndividu && ( <div> - <Divider my={4} /> - <Form type="bisnis" required={true} isBisnisRegist={true} /> + <Divider my={4} /> + <Form + type='bisnis' + required={true} + isBisnisRegist={true} + chekValid={chekValid} + /> </div> )} </div> </div> - <div className="mt-4 border"> - <div className="p-4"> - <div onClick={handleClickBisnis} className="flex justify-between"> - <p className="text-2xl font-semibold text-center md:text-left"> + <div className='mt-4 border'> + <div className='p-4'> + <div onClick={handleClickBisnis} className='flex justify-between'> + <p className='text-2xl font-semibold text-center md:text-left'> Data Bisnis </p> {isBisnisClicked ? ( - <div className="flex"> - <ChevronDownIcon onClick={handleClickBisnis} className='h-6 w-6 text-black' /> + <div className='flex'> + <ChevronDownIcon + onClick={handleClickBisnis} + className='h-6 w-6 text-black' + /> </div> ) : ( - <ChevronRightIcon onClick={handleClickBisnis} className='h-6 w-6 text-black' /> + <ChevronRightIcon + onClick={handleClickBisnis} + className='h-6 w-6 text-black' + /> )} </div> {isBisnisClicked && ( <div> - <Divider my={4} /> + <Divider my={4} /> <div> - <p className="text-black font-bold mb-2">Bisnis Terdaftar di Indoteknik?</p> - <RadioGroup onChange={handleChangeBisnis} value={selectedValueBisnis}> + <p className='text-black font-bold mb-2'> + Bisnis Terdaftar di Indoteknik? + </p> + <RadioGroup + onChange={handleChangeBisnis} + value={selectedValueBisnis} + > <Stack direction='row'> - <Radio colorScheme="red" value='true'>Sudah Terdaftar</Radio> - <Radio colorScheme="red" value='false' className="ml-2">Belum Terdaftar</Radio> + <Radio colorScheme='red' value='true'> + Sudah Terdaftar + </Radio> + <Radio colorScheme='red' value='false' className='ml-2'> + Belum Terdaftar + </Radio> </Stack> </RadioGroup> </div> - <div className="mt-4"> - <p className="text-black font-bold mb-2">Tipe Bisnis</p> - <RadioGroup onChange={handleChange} value={selectedValue}> - <Stack direction='row' className="font-bold"> - <Radio colorScheme="red" value='PKP'>PKP</Radio> - <Radio colorScheme="red" value='Non-PKP' className="ml-4">Non-PKP</Radio> - </Stack> - </RadioGroup> - </div> - <FormBisnis type="bisnis" required={isTerdaftar} isPKP={isPKP} /> + <div className='mt-4'> + <p className='text-black font-bold mb-2'>Tipe Bisnis</p> + <RadioGroup onChange={handleChange} value={selectedValue}> + <Stack direction='row' className='font-bold'> + <Radio colorScheme='red' value='PKP'> + PKP + </Radio> + <Radio colorScheme='red' value='Non-PKP' className='ml-4'> + Non-PKP + </Radio> + </Stack> + </RadioGroup> + </div> + <FormBisnis + type='bisnis' + required={isTerdaftar} + isPKP={isPKP} + chekValid={chekValid} + /> </div> )} </div> </div> - - <h1 className=""></h1> - + + <h1 className=''></h1> </> ); }; |
