import React, { useState, ChangeEvent, CSSProperties, useRef } from "react"; import "./input-field-styles.scss"; import { InputFieldProps, TooltipProps } from "@app/models/components"; import { ErrorIcon, HelpIcon, VisibilityOffIcon, VisibilityOnIcon, } from "@app/assets/images/icons"; import InfoBadge from "../InfoBadge/InfoBadge"; const InputField: React.FC = ({ containerID, name, type = "text", label, placeholder, isRow, value, onChange, errorMessage, description, concatenatedString, autoComplete = "off", autoCorrect = "off", spellCheck = false, disabled, onBlur, onFocus, }) => { const isPassword = type === "password"; const [passwordVisible, setPasswordVisible] = useState(false); const inputRef = useRef(null); const togglePasswordVisibility = () => { setPasswordVisible(!passwordVisible); }; const inputType = passwordVisible ? "text" : type; const passwordIcon = passwordVisible ? VisibilityOffIcon : VisibilityOnIcon; const InfoBadgeStyle: CSSProperties = { backgroundColor: "transparent", color: "#868686", }; const tooltipProps: TooltipProps = { text: description }; const handleOnChange = (e: ChangeEvent) => { onChange(name ?? "", e.target.value); }; const handleInputFocus = () => { if (inputRef.current) { inputRef.current.focus(); } }; return (
{label && (
{description && ( )}
)}
{concatenatedString && (
{concatenatedString}
)} {isPassword && ( )}
{errorMessage && (
{ErrorIcon}

{errorMessage}

)}
); }; export default InputField;