// PasswordInputField.tsx import React, { useState, useImperativeHandle } from "react"; import BaseInputField from "./BaseInputField"; import PasswordVisibilityIcon from "../../Icons/passwordEyeIcon/PasswordVisibilityIcon"; interface PasswordInputFieldProps { label: string; width?: string; inputRef?: React.Ref; onKeyDown?: React.KeyboardEventHandler; } export interface PasswordInputFieldRef { togglePasswordVisibility: () => void; } function PasswordInputField( props: Readonly, ref: React.Ref, ) { const [passwordValue, setPasswordValue] = useState(""); const [isPasswordVisible, setIsPasswordVisible] = useState(false); const { width = "250px" } = props; function handlePasswordChange( event: React.ChangeEvent, ): void { setPasswordValue(event.target.value); } const togglePasswordVisibility = React.useCallback((): void => { setIsPasswordVisible((prevState: boolean) => !prevState); }, []); function handleIconMouseDown( event: React.MouseEvent, ): void { event.preventDefault(); togglePasswordVisibility(); } useImperativeHandle(ref, () => ({ togglePasswordVisibility, })); const inputType = isPasswordVisible ? "text" : "password"; return ( ); } export default React.forwardRef(PasswordInputField);