forked from canada-ca/tracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathEmailField.js
More file actions
67 lines (60 loc) · 1.48 KB
/
EmailField.js
File metadata and controls
67 lines (60 loc) · 1.48 KB
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
62
63
64
65
66
67
import React from 'react'
import {
elementType,
func,
oneOfType,
shape,
string,
} from 'prop-types'
import { useLingui } from '@lingui/react'
import { t, Trans } from '@lingui/macro'
import {
FormControl,
Input,
InputGroup,
InputLeftElement,
Icon,
FormErrorMessage,
FormLabel,
} from '@chakra-ui/core'
import { useField } from 'formik'
import WithPseudoBox from './withPseudoBox'
const EmailField = WithPseudoBox(function EmailField({
name,
label,
forwardedRef,
...props
}) {
const [field, meta] = useField(name)
const { i18n } = useLingui()
const labelText = label === undefined ? <Trans>Email:</Trans> : label
return (
<FormControl isInvalid={meta.error && meta.touched}>
<FormLabel htmlFor="email" fontWeight="bold">
{labelText}
</FormLabel>
<InputGroup>
<InputLeftElement>
<Icon name="email" color="gray.300" />
</InputLeftElement>
<Input
{...field}
{...props}
id="email"
ref={forwardedRef}
placeholder={i18n._(t`Email`)}
/>
</InputGroup>
<FormErrorMessage>{meta.error}</FormErrorMessage>
</FormControl>
)
})
EmailField.propTypes = {
name: string.isRequired,
forwardedRef: oneOfType([func, shape({ current: elementType })]),
}
const withForwardedRef = React.forwardRef((props, ref) => {
return <EmailField {...props} forwardedRef={ref} />
})
withForwardedRef.displayName = 'EmailField'
export default withForwardedRef