Highly customizable phone input component with auto formatting.
npm install react-phone-input-2 --saveReact.render(
  <ReactPhoneInput defaultCountry={'us'} onChange={handleOnChange}/>,
  document.getElementById('root')
);Your handler for the onChange event should expect a string as
parameter, where the value is that of the entered phone number. For example:
function handleOnChange(value) {
   this.setState({
      phone: value
   });
}| Name | Type | Description | Example | 
|---|---|---|---|
| excludeCountries | array | array of country codes to be excluded | ['cu','cw','kz'] | 
| onlyCountries | array | country codes to be included | ['cu','cw','kz'] | 
| preferredCountries | array | country codes to be at the top | ['cu','cw','kz'] | 
| defaultCountry | string | initial country | 'us' | 
| value | string | input state value | |
| placeholder | string | custom placeholder | |
| containerClass | string | class for container | |
| inputClass | string | class for input | |
| buttonClass | string | class for dropdown button | |
| dropdownClass | string | class for dropdown container | |
| containerStyle | object | styles for container | |
| inputStyle | object | styles for input | |
| buttonStyle | object | styles for dropdown button | |
| dropdownStyle | object | styles for dropdown container | |
| inputExtraProps | object | props to pass into the input | |
| autoFormat | bool | on/off phone formatting, true by default | |
| disableAreaCodes | bool | disable local codes for all countries | |
| disabled | bool | disable input and dropdown | |
| disableDropdown | bool | disable dropdown only, false by default | |
| disableCountryCode | bool | false by default | |
| enableLongNumbers | bool | false by default | |
| countryCodeEditable | bool | true by default | |
<ReactPhoneInput
  inputExtraProps={{
    name: 'phone',
    required: true,
    autoFocus: true
  }}
/>| Name | Type | Description | 
|---|---|---|
| regions | array/string | to only show codes from selected regions | 
| Regions | 
|---|
| ['america', 'europe', 'asia', 'oceania', 'africa'] | 
| Subregions | 
| ['north-america', 'south-america', 'central-america', 'carribean', 'european-union', 'ex-ussr', 'middle-east', 'north-africa'] | 
Regions selected: {'europe'}
<ReactPhoneInput
  defaultCountry='it'
  regions={'europe'}
/>Regions selected: {['north-america', 'carribean']}
<ReactPhoneInput
  defaultCountry='ca'
  regions={['north-america', 'carribean']}
/>| Name | Type | 
|---|---|
| localization | object | 
<ReactPhoneInput
  onlyCountries=['de', 'es']
  localization={{'Germany': 'Deutschland', 'Spain': 'España'}}
/>| onChange | onFocus | onBlur | onClick | onKeyDown | 
Country data object not returns from onKeyDown event
| Data | Type | Description | 
|---|---|---|
| value/event | string/object | the event or the phone number | 
| country data | object | the country object { name, dialCode, country code (iso2 format) } | 
Based on react-phone-input using MIT
