/* eslint-disable no-nested-ternary */ /* eslint-disable jsx-a11y/no-static-element-interactions */ import { X } from "lucide-react"; import Link from "next/link"; import { useState } from "react"; import { useForm } from "react-hook-form"; import Form from "@/components/form/form"; import FormItem from "@/components/form/form-item"; import { Button } from "@/components/ui/button/button"; import Card from "@/components/ui/card/card"; import { PasswordInput } from "@/components/ui/password-input/password-input"; import { cn } from "@/libs/utils"; interface FormType { newPassword: string; newPasswordAgain: string; } interface PasswordMessage { minLetter: boolean | null; maxLetter: boolean | null; carecter: boolean | null; minNumber: boolean | null; } interface NewPasswordFormProps { onSubmit: (variables: FormType) => void; onChange?: (variables: FormType) => void; onClose?: () => void; validations: { password: any; }; className?: string; profileNewPassword?: boolean; } const NewPasswordForm = (props: NewPasswordFormProps) => { const { profileNewPassword = false } = props; const form = useForm({ mode: "onChange" }); const [passwordMessage, setPasswordMessage] = useState({ minLetter: null, maxLetter: null, carecter: null, minNumber: null, }); async function handleSubmit(params: FormType) { props.onSubmit(params); } const validetePassword = (value: string) => { if (!value || value.length === 0) return true; const minLetter = /^\S{8,}$/.test(value); const minNumber = /.*\d.*/.test(value); const carecter = /.*[!@#$%^&*(),.?":{}|<>].*/.test(value); const maxLetter = /.*[a-z].*[A-Z].*|.*[A-Z].*[a-z].*/.test(value); if (!minLetter) { setPasswordMessage({ ...passwordMessage, minLetter, maxLetter, carecter, minNumber, }); return "Minumum bir küçük karekter kullanmalısınız"; } if (!maxLetter) { setPasswordMessage({ ...passwordMessage, minLetter, maxLetter, carecter, minNumber, }); return "Minimum bir büyük karekter kullanmalısınız"; } if (!carecter) { setPasswordMessage({ ...passwordMessage, minLetter, maxLetter, carecter, minNumber, }); return "Minimim bir sembol karakter kullanmalısınız"; } if (!minNumber) { setPasswordMessage({ ...passwordMessage, minLetter, maxLetter, carecter, minNumber, }); return "Minimum bir sayı kullanmalısınız"; } setPasswordMessage({ ...passwordMessage, minLetter, maxLetter, carecter, minNumber, }); return true; }; function passwordsMatch() { if (form.getValues("newPassword") !== form.getValues("newPasswordAgain")) { return "Şifreler eşleşmiyor. Lütfen aynı şifreyi giriniz."; } return true; } function getClassName(value: boolean | null) { if (value === null) { return "text-gray-400"; } if (value) { return "text-success-500"; } return "text-red-500"; } return (
Yeni Şifre {profileNewPassword && ( // eslint-disable-next-line jsx-a11y/click-events-have-key-events )} Yeni bir şifre belirleyin
{({ field, setValue }) => ( } fullWidth label="Yeni Şifre*" size="md" onChange={(e) => { validetePassword(e.target.value); if (e.target.value.length > 0) { setValue(e.target.value); } }} isInvalid={ passwordMessage.minLetter !== null ? !passwordMessage.minLetter || !passwordMessage.maxLetter || !passwordMessage.carecter || !passwordMessage.minNumber : false } /> )}

*Minimum 8 karakter

*Minimum bir adet rakam

*Minimum bir adet sembol

*Büyük ve küçük harf

passwordsMatch() }} > {({ field, fieldState }) => ( } fullWidth label="Yeni Şifre Tekrar*" size="md" isInvalid={!!fieldState.error} errorMessage={fieldState.error?.message} /> )} {profileNewPassword && ( )}
); }; export { NewPasswordForm };