import { useEffect, useState } from "react"; type prop = { value: number | undefined, onChange: (value: number) => void min?: number step?: number // increment / decrement } const InputNumber = ({ min, step, value, onChange }: prop) => { const [number, setNumber] = useState(value || 0); useEffect(() => { if (value === undefined) return setNumber(value) }, [value]) useEffect(() => { if (value === undefined) return onChange(number) }, [number]) const handleDecrement = () => { setNumber(prevValue => { if (min) if (prevValue > min) return prevValue - (step || 1) else return min else return prevValue - (step || 1) }); }; const handleIncrement = () => { setNumber(prevValue => prevValue + (step || 1)); }; const handleChange = (event: React.ChangeEvent) => { const newValue = parseFloat(event.target.value); if (!isNaN(newValue)) { setNumber(newValue); } }; return
// return ( onChange(number)} // onKeyDown={(e) => { // if (e.key == "Enter") { // e.currentTarget.blur() // } // if (e.key == "Escape") { // setNumber(value) // } // }} onChange={(e) => isValidNumber(e.target.value) && setNumber(Number(e.target.value))} /> // ); } export default InputNumber;