import { forwardRef, useLayoutEffect } from 'react'; import { GlobalStyles, InputBaseComponentProps, TextField, TextFieldProps } from '@mui/material'; import clsx from 'clsx'; import InputNumber, { InputNumberProps, ValueType } from 'rc-input-number'; import { useDefaultProps } from '../../hooks'; export type NumberFieldProps = Omit< TextFieldProps, 'select' | 'children' | 'multiline' | 'maxRows' | 'minRows' | 'rows' | 'onChange' | 'value' | 'type' > & Pick< InputNumberProps, | 'formatter' | 'parser' | 'decimalSeparator' | 'precision' | 'step' | 'min' | 'max' | 'pattern' | 'value' | 'onChange' | 'stringMode' | 'controls' | 'upHandler' | 'downHandler' | 'keyboard' | 'changeOnWheel' | 'onInput' | 'onPressEnter' | 'onStep' | 'changeOnBlur' | 'prefixCls' >; function NumberField(inProps: NumberFieldProps) { const { /** RCInputNumberProps */ formatter, parser, decimalSeparator, precision, step, min, max, pattern, stringMode, controls = false, upHandler, downHandler, keyboard = false, changeOnWheel = false, onInput, onPressEnter, onStep, changeOnBlur, prefixCls, /** RCInputNumberProps */ value, onChange, inputMode = 'decimal', slotProps, ...props } = useDefaultProps({ name: 'ReevolveNumberField', props: inProps }); return ( ); } const RCNumberInput = forwardRef(function RCNumberInput( { className, ...props }, ref ) { useLayoutEffect(() => { const input = document.getElementById(props.id!); if (input) { input.className = clsx(input.className, className); } }, [className, props.id]); return ( <> ); }); declare module '@mui/material' { interface Components { ReevolveNumberField?: { defaultProps?: Partial; }; } } export default NumberField;