1.0.1 • Published 2 years ago

mui-number-field v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

mui-number-field

A small library that solves a weird behavior of MUI's TextField with type number.

Problem description

If locale settings are set so that decimal separator is , (comma) and thousand separator is . (dot), then there is an issue with typing decimal numbers and onChange event. Check out the animation bellow and pay attention when . is typed - event.target.value is empty string!

npm.io

While digits are being typed, event.target.value contains them, but when , is pressed the onChange event is NOT fired. Finally, when decimal digits are being typed, event.target.value contains a valid decimal number with . as a separator. However, if . is typed instead of ,, the onChange event IS fired with event.target.value containing empty string!

Actually, the root cause lies in the HTML <input> element, as it behaves in such a way, and thus is transferred to MUI.

How it works

The library fixes the problem by preventing onChange events to be fired in case of pressing ., which makes onChange behave consistently and the same as if , is pressed. Check it out in the animation below.

npm.io

Installation

To install the required dependencies run:

npm install react @mui/material @emotion/react @emotion/styled

To install the library run:

npm install mui-number-field

NOTE: For react 17, install version 1.0.0 by running:

npm install mui-number-field@1.0.0