import { NumberInput, NumberIncrementStepper, NumberInputField, NumberInputStepper, NumberDecrementStepper, type NumberInputProps, type NumberInputFieldProps } from '@chakra-ui/react'; import React from 'react'; import MyIcon from '../../Icon'; import { type UseFormRegister } from 'react-hook-form'; type Props = Omit & { onChange?: (e?: number) => any; onBlur?: (e?: number) => any; placeholder?: string; register?: UseFormRegister; name?: string; inputFieldProps?: NumberInputFieldProps; hideStepper?: boolean; }; const MyNumberInput = (props: Props) => { const { register, name, onChange, onBlur, placeholder, inputFieldProps, hideStepper = false, ...restProps } = props; return ( { const numE = e.target.value === '' ? '' : Number(e.target.value); if (onBlur) { if (numE === '') { // @ts-ignore onBlur(''); } else { onBlur(numE); } } if (onChange) { if (numE === '') { // @ts-ignore onChange(''); } else { onChange(numE); } } if (register && name) { const event = { target: { name, value: numE } }; register(name).onBlur(event); } }} onChange={(e) => { const numE = e === '' ? '' : e.endsWith('.') || /^\d+\.0+$/.test(e) ? e : Number(e); if (onChange) { if (numE === '') { // @ts-ignore onChange(''); } else { // @ts-ignore onChange(numE); } } if (register && name) { const event = { target: { name, value: numE } }; register(name).onChange(event); } }} > {!hideStepper && ( )} ); }; export default React.memo(MyNumberInput);