Advertisement
Guest User

Untitled

a guest
Nov 17th, 2023
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { zodResolver } from '@hookform/resolvers/zod';
  2. import { ArrowRight } from '@phosphor-icons/react';
  3. import { type SubmitHandler, useForm } from 'react-hook-form';
  4. import { Button } from '~/components/ui/Button';
  5. import { ErrorMessage } from '~/components/ui/ErrorMessage';
  6. import { Form } from '~/components/ui/Form';
  7. import { Input } from '~/components/ui/Input';
  8. import { Label } from '~/components/ui/Label';
  9. import { RegisterStepTwoDto } from '~/config/form/auth/register-dto';
  10. import { type RegisterFormStepProps } from '~/types/register-form';
  11.  
  12. export const RegisterFormStepTwo = ({ data, onGoToNextStep, onGoToPreviousStep, isLoading }: RegisterFormStepProps) => {
  13.     const {
  14.         register,
  15.         handleSubmit,
  16.         formState: { errors },
  17.         setValue,
  18.     } = useForm<RegisterStepTwoDto>({
  19.         resolver: zodResolver(RegisterStepTwoDto),
  20.     });
  21.  
  22.     const onSubmit: SubmitHandler<RegisterStepTwoDto> = data => {
  23.         onGoToNextStep(data);
  24.     };
  25.  
  26.     return (
  27.         <Form
  28.             onSubmit={handleSubmit(onSubmit)}
  29.             className="flex flex-col gap-y-3"
  30.             isLoading={isLoading}
  31.         >
  32.             <Label htmlFor="companyName">
  33.                 Bedrijfsnaam
  34.             </Label>
  35.             <Input
  36.                 id="companyName"
  37.                 type="text"
  38.                 autoCapitalize="none"
  39.                 autoComplete="organization"
  40.                 error={errors.companyName}
  41.                 defaultValue={data.companyName}
  42.                 {...register('companyName')}
  43.             />
  44.             {errors.companyName?.message && <ErrorMessage message={errors.companyName.message} />}
  45.             <Label htmlFor="companyAddress">
  46.                 Adres en huisnummer
  47.             </Label>
  48.             <Input
  49.                 id="companyAddress"
  50.                 type="text"
  51.                 autoCapitalize="none"
  52.                 autoComplete="address-line1"
  53.                 error={errors.companyAddress}
  54.                 defaultValue={data.companyAddress}
  55.                 {...register('companyAddress')}
  56.             />
  57.             {errors.companyAddress?.message && <ErrorMessage message={errors.companyAddress.message} />}
  58.             <Label htmlFor="companyCity">
  59.                 Stad
  60.             </Label>
  61.             <Input
  62.                 id="companyCity"
  63.                 type="text"
  64.                 autoCapitalize="none"
  65.                 autoComplete="address-level2"
  66.                 error={errors.companyCity}
  67.                 defaultValue={data.companyCity}
  68.                 {...register('companyCity')}
  69.             />
  70.             {errors.companyCity?.message && <ErrorMessage message={errors.companyCity.message} />}
  71.             <Label htmlFor="companyPostalCode">
  72.                 Postcode
  73.             </Label>
  74.             <Input
  75.                 id="companyPostalCode"
  76.                 type="text"
  77.                 autoCapitalize="true"
  78.                 autoComplete="postal-code"
  79.                 error={errors.companyPostalCode}
  80.                 defaultValue={data.companyPostalCode}
  81.                 {...register('companyPostalCode')}
  82.             />
  83.             {errors.companyPostalCode?.message && <ErrorMessage message={errors.companyPostalCode.message} />}
  84.             <Label htmlFor="companyPhone">
  85.                 Telefoonnummer
  86.             </Label>
  87.             <Input
  88.                 id="companyPhone"
  89.                 type="tel"
  90.                 autoCapitalize="true"
  91.                 autoComplete="postal-code"
  92.                 error={errors.companyPhone}
  93.                 defaultValue={data.companyPhone}
  94.                 {...register('companyPhone')}
  95.             />
  96.             {errors.companyPhone?.message && <ErrorMessage message={errors.companyPhone.message} />}
  97.             <Label htmlFor="companyEmail">
  98.                 E-mailadres
  99.             </Label>
  100.             <Input
  101.                 id="companyEmail"
  102.                 type="tel"
  103.                 autoCapitalize="true"
  104.                 autoComplete="email"
  105.                 error={errors.companyEmail}
  106.                 defaultValue={data.companyEmail}
  107.                 {...register('companyEmail')}
  108.             />
  109.             <Button
  110.                 variant="link"
  111.                 className="self-start"
  112.                 type="button"
  113.                 onClick={() => setValue('companyEmail', data.email)}
  114.             >
  115.                 Invullen uit vorige stap
  116.             </Button>
  117.             {errors.companyEmail?.message && <ErrorMessage message={errors.companyEmail.message} />}
  118.             <div className="flex items-center gap-1">
  119.                 <Button
  120.                     variant="outline"
  121.                     type="button"
  122.                     className="flex-1"
  123.                     onClick={onGoToPreviousStep}
  124.                 >
  125.                     <ArrowRight
  126.                         size={16}
  127.                         className="mr-2 rotate-180"
  128.                     /> Vorige stap
  129.                 </Button>
  130.                 <Button className="flex-1">
  131.                     Registratie afronden
  132.                 </Button>
  133.             </div>
  134.         </Form>
  135.     );
  136. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement