import { InputNumber, InputText } from 'exchange-elements/v2';
import { ChangeEvent, memo, useEffect, useState } from 'react';
import styles from './index.module.scss';
interface TextFieldProps {
label: string;
value?: string;
initialValue?: string;
onValueChange: (value: string) => void;
normalizeValue?: (value: string) => string;
}
export const NumberField = memo(({ label, value, initialValue, onValueChange, normalizeValue }: TextFieldProps) => {
const [localValue, setLocalValue] = useState(initialValue ?? value ?? '');
useEffect(() => {
if (value !== undefined) {
setLocalValue(value);
}
}, [value]);
const handleChange = (event: ChangeEvent<HTMLInputElement>) => {
const rawValue = event.currentTarget.value;
const nextValue = normalizeValue ? normalizeValue(rawValue) : rawValue;
setLocalValue(nextValue);
onValueChange(nextValue);
};
return (
<InputNumber
className={styles.input}
value={localValue}
onChange={handleChange}
label={label}
labelPos="top"
size="sm"
/>
);
});