/
Input.tsx
61 lines (57 loc) · 1.51 KB
/
Input.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
import { INPUT_ERROR_TEXT } from 'utils/testIds';
import { TextField, OutlinedTextFieldProps, styled } from '@mui/material';
import { useStyles } from './Input.styles';
interface IInputProps extends Omit<OutlinedTextFieldProps, 'variant'> {
label: string;
error?: boolean;
errorText?: string;
style?: Object;
className?: string;
value: string;
onChange: (e: any) => any;
onFocus?: (e: any) => any;
onBlur?: (e: any) => any;
multiline?: boolean;
rows?: number;
}
const StyledDiv = styled('div')(({ theme }) => ({
width: '100%',
position: 'relative',
}));
const Input = ({
label,
placeholder,
error,
errorText,
style,
className,
value,
onChange,
...rest
}: IInputProps) => {
const { classes: styles } = useStyles();
return (
<StyledDiv data-loading>
<TextField
size="small"
variant="outlined"
label={label}
placeholder={placeholder}
error={error}
helperText={errorText}
style={style}
className={className ? className : ''}
value={value}
onChange={onChange}
FormHelperTextProps={{
['data-testid']: INPUT_ERROR_TEXT,
classes: {
root: styles.helperText,
},
}}
{...rest}
/>
</StyledDiv>
);
};
export default Input;