usePhoneInput
usePhoneInput is a hook for providing phone formatting to existing input components.
Use phone (as value), handlePhoneValueChange (as onChange callback) and inputRef (as passed ref) to handle input.
Usage Example
// import { usePhoneInput } from 'react-international-phone';
const {
inputValue,
phone,
country,
setCountry,
handlePhoneValueChange,
inputRef,
} = usePhoneInput({
defaultCountry: 'us',
value: '+1 (234)',
onChange: ({ phone, inputValue, country }) => {
// make something on change
},
});
Hook arguments
value
Phone value.
- Type:
string - Default:
""
onChange
Callback that calls on phone change
- Type:
(data: { phone: string; inputValue: string; country: ParsedCountry }) => void - Default:
undefined
defaultCountry
Default country value (iso2).
- Type:
CountryIso2 - Default:
"us"
countries
An array of available countries to select (and guess)
- Type:
CountryData[] - Default:
defaultCountries
prefix
Prefix for phone value.
- Type:
string - Default:
"+"
defaultMask
This mask will apply on countries that does not have specified mask.
- Type:
string - Default:
"............"
charAfterDialCode
Char that renders after country dial code.
- Type:
string - Default:
" "
historySaveDebounceMS
Save value to history if there were not any changes in provided milliseconds timeslot. Undo/redo (ctrl+z/ctrl+shift+z) works only with values that are saved in history
- Type:
number - Default:
200
disableCountryGuess
Disable country guess on value change. onCountryGuess callback would not be called.
- Type:
boolean - Default:
false
disableDialCodePrefill
Disable dial code prefill on initialization. Dial code prefill works only when empty phone value have been provided.
- Type:
boolean - Default:
false
forceDialCode
Always display the dial code. Dial code can't be removed/changed by keyboard events, but it can be changed by pasting another country phone value.
- Type:
boolean - Default:
false
disableDialCodeAndPrefix
Display phone value will not include passed dialCode and prefix if set to true. forceDialCode value will be ignored.
- Type:
boolean - Default:
false
disableFormatting
Disable phone value mask formatting. All formatting characters will not be displayed, but the mask length will be preserved.
- Type:
boolean - Default:
false
allowMaskOverflow
Allow input to exceed the mask length. When set to true, formatting mask will apply to the part that fits within the mask capacity, and overflow digits will be appended at the end unformatted.
For example: "+123456789012", will be formatted like "+1 (234) 567-89012"
- Type:
boolean - Default:
false
inputRef
Ref for the input element.
- Type:
React.MutableRefObject<HTMLInputElement | null> - Default:
undefined
Returned values
inputValue
Formatted phone string. Value that should be rendered inside input element.
- Type:
string
phone
Phone in E164 format.
- Type:
string
handlePhoneValueChange
Change handler for input component.
- Type:
(e: React.ChangeEvent<HTMLInputElement>) => string
inputRef
Ref object for input component (handles caret position, focus and undo/redo).
- Type:
React.RefObject<HTMLInputElement>
country
Current country object.
- Type:
ParsedCountry
setCountry
Country setter.
- Type:
(country: CountryIso2, options?: { focusOnInput: boolean })) => void