forked from canada-ca/tracker
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPhoneNumberField.js
More file actions
47 lines (42 loc) · 1.34 KB
/
PhoneNumberField.js
File metadata and controls
47 lines (42 loc) · 1.34 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
import React from 'react'
import { string } from 'prop-types'
import { Trans } from '@lingui/macro'
import { Box, FormControl, FormErrorMessage, FormLabel } from '@chakra-ui/react'
import { useField, useFormikContext } from 'formik'
import PhoneInput from 'react-phone-input-2'
export function PhoneNumberField({ name, label }) {
const [, meta] = useField(name)
const { values, setFieldValue } = useFormikContext()
const labelText = label === undefined ? <Trans>Phone Number:</Trans> : label
return (
<FormControl isInvalid={meta.error && meta.touched}>
<FormLabel htmlFor="phoneNumber" fontWeight="bold">
{labelText}
</FormLabel>
<Box display="inline-block" border="2px" borderColor="black" w="100%">
<PhoneInput
inputProps={{
id: name,
name: name,
autoFocus: false,
style: {
width: '100%',
padding: '8px',
paddingInlineStart: '20px',
},
}}
value={values[name]}
onChange={(e) => setFieldValue(name, e)}
type="phoneNumber"
specialLabel={null}
country={'ca'}
/>
</Box>
<FormErrorMessage>{meta.error}</FormErrorMessage>
</FormControl>
)
}
PhoneNumberField.propTypes = {
name: string.isRequired,
label: string.isRequired,
}