@adaptabletools/adaptable
Version:
Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
33 lines (32 loc) • 1.23 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import * as React from 'react';
import Input, { baseClassName } from './index';
import join from '../utils/join';
export const NumberInput = React.forwardRef((props, ref) => {
const [value, setValue] = React.useState(() => {
return props.value ?? '';
});
const handleChange = React.useCallback((event) => {
const { value } = event.target;
let newVal = Number(value);
if (value === '-' || value === '') {
newVal = value;
setValue(value);
}
else if (!isNaN(newVal)) {
setValue(value);
props.onChange(newVal);
}
}, [props.onChange]);
React.useEffect(() => {
setValue(props.value);
}, [props.value]);
const handleBlur = React.useCallback((event) => {
props?.onBlur?.(event);
if (value !== props.value) {
setValue(props.value);
}
}, [props.value, value]);
const { noArrows, ...restOfProps } = props;
return (_jsx(Input, { ...restOfProps, ref: ref, className: join(noArrows ? `${baseClassName}--no-arrows` : '', props.className), value: value, onBlur: handleBlur, onChange: handleChange }));
});