import { useEffect } from "react"; import { InputProps } from "./Input.interface"; import "./Input.scss"; const Input = ({ name, placeholder, rules, value = "", onSetValue, label, error, onSetError, extra, ...props }: InputProps) => { const handleChange = (event: React.ChangeEvent) => { if (props.type == "number") { const { value, max, min } = event.target; if (Number(value) > Number(max)) { onSetValue(max); } else if (Number(value) > Number(min)) { onSetValue(value); } else { onSetValue(""); } } else { onSetValue(event.target.value); } }; const handleKeyPress = (event: React.KeyboardEvent) => { if (props.type === "number") { if (!/[0-9]/.test(event.key) && event.key !== "Backspace") { event.preventDefault(); } } }; useEffect(() => { if (value.length > 0) { rules?.some((rule) => { if (!rule.rule(value)) { // console.log(value); onSetError?.(rule.errorMessage); return true; } // console.log(value); onSetError?.(null); return false; }); } }, [onSetError, rules, value]); return (
{label}
{extra}
{error &&
{error}
}
); }; export default Input;