UNPKG

onfido-sdk-ui

Version:

JavaScript SDK view layer for Onfido identity verification

58 lines (48 loc) 1.6 kB
import { h, Component} from 'preact' import PhoneNumber, {isValidPhoneNumber} from 'react-phone-number-input' import classNames from 'classnames'; import {localised} from '../../locales' import 'react-phone-number-input/rrui.css' import 'react-phone-number-input/style.css' import style from './style.css' const FlagComponent = ({ countryCode, flagsPath }) => ( <span className={ classNames('react-phone-number-input__icon', style.flagIcon) } style={{ 'background-image': `url(${ flagsPath }${ countryCode.toLowerCase() }.svg)`, }} /> ); class PhoneNumberInput extends Component { componentDidMount() { const { sms, actions } = this.props if (sms && sms.number) { this.validateNumber(sms.number, actions) } } onChange = (number) => { const { clearErrors, actions } = this.props clearErrors() this.validateNumber(number, actions) } validateNumber = (number, actions) => { const valid = isValidPhoneNumber(number) actions.setMobileNumber(number, valid) } render() { const { translate, smsNumberCountryCode, sms = {}} = this.props return ( <form onSubmit={(e) => e.preventDefault()}> <PhoneNumber placeholder={translate('cross_device.phone_number_placeholder')} value={sms.number || ''} onChange={this.onChange} country={smsNumberCountryCode} inputClassName={`${style.mobileInput}`} className={`${style.phoneNumberContainer}`} flagComponent={ FlagComponent } /> </form> ) } } export default localised(PhoneNumberInput)