Handle Input number with React. Support Material UI (MUI)
- Allow press
tab
key.
- Fix enter double separator between integer and decimal part.
- Add
?
for propinteger
.
- Support flag
integer
only enter integer to input
- Support
ref
is a function.
# npm
npm i @kensoni/react-input-number
# Yarn
yarn add @kensoni/react-input-number
git clone https://github.com/ngvcanh/react-input-number
cd react-input-number
yarn install
yarn start
Using all props
of HTMLInputElement
without prop type
. In addition, there are some additional props:
Prop name | Type | Description |
---|---|---|
comma | boolean | Format number with using , separate integer and decimal part. Only working when prop format is true |
disableNegative | boolean | Negative numbers are not allowed in input |
format | boolean | Enable format value for input |
formatOnlyBlur | boolean | Only format input number when focus out input |
integer | boolean | Only enter integer for input |
renderInput | Function | Using for render another input if using third party library |
value | string, number | Default value for input number. Accept normal number, format number, format comma number |
import { ChangeEvent, useState } from 'react';
import InputNumber from '@kensoni/react-input-number';
import TextField from '@mui/material/TextField';
import Box from '@mui/material/Box';
export default function App(){
const [ value, setValue ] = useState('');
const onChange = (event: ChangeEvent<HTMLInputElement>) => {
setValue(event.target.value);
}
return <Box>
<InputNumber
format
value={ value }
onChange={ onChange }
renderInput={(inputProps, inputRef) => (
<TextField fullWidth inputProps={ inputProps } inputRef={ inputRef } />
)}
/>
<Box component="pre" sx={{ mt: 3 }}>{ value }</Box>
</Box>
}
Make sure that the properties from the function's inputProps are attached to the TextField's inputProps. Do not override this props on TextField props.
Each time the onChange event emit, the cursor will jump to the end of the input. In case of preserving the cursor position, make sure that the function's inputRef must be attached to the TextField's inputRef to hold the pointer.