-
Notifications
You must be signed in to change notification settings - Fork 3
/
Input.js
49 lines (41 loc) · 1.07 KB
/
Input.js
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
import React from 'react'
import { Form, Input, Label } from 'semantic-ui-react'
const InputField = (fieldObj) => {
const {
_id,
displayName,
type,
onChange,
placeholder,
required, // By default is true, if equals false than ignore
icon,
focusInput,
error,
defaults
} = fieldObj
return (
<Form.Field required={required !== false} error={!!error}>
{defaults.showLabels && <label>{displayName}</label>}
<Input
autoFocus={focusInput}
icon={icon || iconMapper[_id] || null}
iconPosition='left'
placeholder={defaults.showPlaceholders ? placeholder : ''}
type={type}
error={Boolean(error)}
onChange={(e) => onChange(e, _id)}
onBlur={(e) => onChange(e, _id)}
/>
{error && <Label basic color='red' pointing>{error.errStr}</Label>}
</Form.Field>
)
}
const iconMapper = {
username: 'user',
email: 'mail',
password: 'lock',
confirmPassword: 'unlock alternate',
currentPassword: 'unlock alternate',
fullName: 'info'
}
export default InputField