import React from 'react'; import MaskedInput from 'react-text-mask'; import NumberFormat from 'react-number-format'; import { createStyles, Theme, makeStyles } from '@material-ui/core/styles'; import Input from '@material-ui/core/Input'; import InputLabel from '@material-ui/core/InputLabel'; import TextField from '@material-ui/core/TextField'; import FormControl from '@material-ui/core/FormControl'; const useStyles = makeStyles((theme: Theme) => createStyles({ root: { '& > *': { margin: theme.spacing(1), }, }, }), ); interface TextMaskCustomProps { inputRef: (ref: HTMLInputElement | null) => void; } function TextMaskCustom(props: TextMaskCustomProps) { const { inputRef, ...other } = props; return ( { inputRef(ref ? ref.inputElement : null); }} mask={['(', /[1-9]/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/]} placeholderChar={'\u2000'} showMask /> ); } interface NumberFormatCustomProps { inputRef: (instance: NumberFormat | null) => void; onChange: (event: { target: { name: string; value: string } }) => void; name: string; } function NumberFormatCustom(props: NumberFormatCustomProps) { const { inputRef, onChange, ...other } = props; return ( { onChange({ target: { name: props.name, value: values.value, }, }); }} thousandSeparator isNumericString prefix="$" /> ); } interface State { textmask: string; numberformat: string; } export default function FormattedInputs() { const classes = useStyles(); const [values, setValues] = React.useState({ textmask: '(1  )    -    ', numberformat: '1320', }); const handleChange = (event: React.ChangeEvent) => { setValues({ ...values, [event.target.name]: event.target.value, }); }; return (
react-text-mask
); }