From 84cc04ea675afb73a2d2137839f24639b34ef465 Mon Sep 17 00:00:00 2001 From: AlexSserb Date: Sat, 19 Jul 2025 10:04:00 +0400 Subject: [PATCH] feat: phone number validation --- app/verify-phone/page.tsx | 15 ++++ components/LoginForm/LoginForm.tsx | 16 +++- components/PhoneInput/PhoneInput.tsx | 84 +++++++++---------- .../utils/getInitialDataFromValue.ts | 25 ++---- .../utils/{getFormat.ts => getPhoneMask.ts} | 7 +- .../VerifyPhoneForm/VerifyPhone.module.css | 11 +++ .../VerifyPhoneForm/VerifyPhoneForm.tsx | 59 +++++++++++++ 7 files changed, 148 insertions(+), 69 deletions(-) create mode 100644 app/verify-phone/page.tsx rename components/PhoneInput/utils/{getFormat.ts => getPhoneMask.ts} (69%) create mode 100644 components/VerifyPhoneForm/VerifyPhone.module.css create mode 100644 components/VerifyPhoneForm/VerifyPhoneForm.tsx diff --git a/app/verify-phone/page.tsx b/app/verify-phone/page.tsx new file mode 100644 index 0000000..adcb850 --- /dev/null +++ b/app/verify-phone/page.tsx @@ -0,0 +1,15 @@ +import Logo from "@/components/Logo/Logo"; +import PageItem from "@/components/PageBlock/PageItem"; +import PageContainer from "@/components/PageContainer/PageContainer"; +import VerifyPhoneForm from "@/components/VerifyPhoneForm/VerifyPhoneForm"; + +export default function CreateIdPage() { + return ( + + + + + + + ); +} diff --git a/components/LoginForm/LoginForm.tsx b/components/LoginForm/LoginForm.tsx index cf90f91..779d980 100644 --- a/components/LoginForm/LoginForm.tsx +++ b/components/LoginForm/LoginForm.tsx @@ -1,6 +1,6 @@ "use client"; -import { FC } from "react"; +import { FC, useState } from "react"; import { redirect } from "next/navigation"; import { Button, Stack } from "@mantine/core"; import { useForm } from "@mantine/form"; @@ -15,14 +15,23 @@ type Props = { }; const LoginForm: FC = ({ isCreatingId = false }) => { + const [phoneMask, setPhoneMask] = useState(""); const form = useForm({ initialValues: { phoneNumber: "", }, + validate: { + phoneNumber: phoneNumber => + phoneNumber.length !== phoneMask.length && + "Введите корректный номер", + }, }); const handleSubmit = (values: LoginForm) => { console.log(values); + console.log(phoneMask); + + redirect("/verify-phone"); }; const navigateToCreateId = () => redirect("/create-id"); @@ -32,7 +41,10 @@ const LoginForm: FC = ({ isCreatingId = false }) => { return (
- + {isCreatingId ? ( <> + + +
+ ); +}; + +export default VerifyPhoneForm;