import TextField, { TextFieldProps } from '@material-ui/core/TextField'; import useTheme from '@material-ui/core/styles/useTheme'; import React from 'react'; import { FieldProps, connectField, filterDOMProps } from 'uniforms'; export type NumFieldProps = FieldProps< number, TextFieldProps, { decimal?: boolean; max?: number; min?: number; step?: number } >; function Num({ decimal, disabled, error, errorMessage, helperText, inputProps, inputRef, label, max, min, name, onChange, readOnly, placeholder, showInlineError, step = decimal ? 0.01 : 1, value, ...props }: NumFieldProps) { const theme = useTheme(); const themeProps = theme.props?.MuiTextField; return ( { const parse = decimal ? parseFloat : parseInt; const value = parse(event.target.value); onChange(isNaN(value) ? undefined : value); }} placeholder={placeholder} ref={inputRef} type="number" value={value ?? ''} {...filterDOMProps(props)} /> ); } export default connectField(Num, { kind: 'leaf' });