import { useThemeProps } from '@mui/system'; import TextField, { TextFieldProps } from '@mui/material/TextField'; 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(props: NumFieldProps) { const { decimal, disabled, error, errorMessage, helperText, inputProps, inputRef, label, max, min, name, onChange, readOnly, placeholder, showInlineError, step = decimal ? 0.01 : 1, value, ...rest } = props; const themeProps = useThemeProps({ props, name: '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(rest)} /> ); } export default connectField(Num, { kind: 'leaf' });