A super simple phone number input component for Vue built on top of the libphonenumber-js library.
- Easy to use
- Country selector and country detection
- Phone number formatting as you type
- Simple HTML structure
- Built on top of the libphonenumber-js library
- Comes with SCSS themes
Let's play with the demo.
yarn add cube-vue-phone-number-input<template>
<div id="App">
<fieldset>
<InputPhoneNumber
class="cube-phone-number-input-inline"
:country="country"
v-model="phoneNumber"
required
/>
</fieldset>
</div>
</template>
<script>
import InputPhoneNumber from 'cube-vue-phone-number-input'
export default {
components: {
InputPhoneNumber
},
data () {
return {
country: 'CA',
phoneNumber: null
}
}
}
</script>
<style lang="scss">
@import "~cube-vue-phone-number-input/src/scss/_inline.scss";
</style>| Name | Required | Type | Default | Description |
|---|---|---|---|---|
| value | false | String | null |
Any String value that looks like a phone number. |
| country | false | String | null |
The two-letter ISO country code of the phone number: US, CA… |
| countries | false | Array | src/assets/countries.json |
Your own Country list. |
| countryCodePlaceholder | false | String | "Country" |
… |
| countryCodeClass | false | String, Array, Object | null |
… |
| inputClass | false | String, Array, Object | null |
… |
| placeholder | false | String | "Phone number" |
… |
| validityErrorMessage | false | String | "Invalid phone number" |
… |
| Name | Description |
|---|---|
| input | Sent on PhoneNumber update with the PhoneNumber.number (international format) value. |
| update | Sent on PhoneNumber update. |
| country | Sent on PhoneNumber.country update based on the user input. |
| valid | Sent on PhoneNumber validity change. |
| error | Sent on PhoneNumber error. See the libphonenumber-js#parsePhoneNumber section. |
See the libphonenumber-js#phonenumber documentation.
{
"country": "CA",
"countryCallingCode": "1",
"number": "+15062345678",
"numberFormatted": "+1 506 234 5678",
"nationalNumber": "5062345678",
"nationalNumberFormatted": "+(506) 234-5678",
"uri": "tel:+15062345678",
"possible": true,
"valid": true,
"type": "FIXED_LINE_OR_MOBILE"
}If you want to provide your own countries prop, make sure to build an Array (or a json file) with the following structure:
[
{ "code": "US", "name": "United States" },
{ "code": "CA", "name": "Canada" },
{ "code": "FR", "name": "France" },
…
]countries are automatically sorted by name in the country selector.
This component relies on the Constraint Validation API.
Any HTML validation attribute is accepted for your own HTML validation (required, pattern…).
Also the custom validity message is set with the validityErrorMessage prop value when the phone number is not valid.