Appearance
Phone Input Country Codes
This document describes the enhanced phone input country code functionality implemented across the Cavai platform.
Overview
The phone input component has been enhanced with the following features:
- Country codes grouped by geographic region
- Option to set a fixed country code that cannot be changed by users
- Support for custom country code lists
- Improved validation and error handling
Implementation Details
Country Code Constants
Country codes are centralized in Creative-Engine's countryCodesConstants.ts file. Each country code includes:
- Code (e.g., "+47")
- Name (e.g., "Norway")
- Flag emoji (e.g., "🇳🇴")
- Region (e.g., "Europe")
- Popular flag (for frequently used countries)
Key Functions
getGroupedCountryCodes(includePopularGroup = true)
Returns country codes grouped by region, with an optional "Popular" group for frequently used countries.
getFilteredGroupedCountryCodes(includePopularGroup = true, allowedCodes = null)
Returns country codes grouped by region, filtered by an optional list of allowed codes.
filterCountryCodes(countryCodes, allowedCodes)
Filters an array of country codes to only include those in the allowedCodes list.
Configuration Options
In the PhoneInputConfiguration component, users can:
Set a fixed country code:
- When enabled, the country code selector is disabled
- A "Fixed" badge appears next to the selector
- The country code cannot be changed by end users
Create custom country code lists:
- Enable "Use custom country list" option
- Add/remove specific countries from the dropdown
- Countries are displayed grouped by region
- Only selected countries will appear in the form
Usage
Basic Phone Input
javascript
// Default phone input with all country codes
{
type: 'tel',
countryCode: '+47',
showCountryCode: true
}Fixed Country Code
javascript
// Phone input with fixed Norwegian country code
{
type: 'tel',
countryCode: '+47',
showCountryCode: true,
fixedCountryCode: true
}Custom Country List
javascript
// Phone input with only specific countries
{
type: 'tel',
countryCode: '+47',
showCountryCode: true,
useCustomCountryList: true,
allowedCountryCodes: ['+47', '+46', '+45', '+358']
}Integration Points
Creative-Engine:
- Exports country code constants and utility functions
- Handles validation logic for phone inputs
Application-Frontend:
- Imports country code utilities from Creative-Engine
- Provides UI for configuring phone inputs
- Implements country code selection UI with region grouping
Best Practices
- Use the fixed country code option when targeting specific regions
- Create custom country lists for region-specific campaigns
- Always include the most relevant countries for your target audience
- Consider using popular countries as defaults
Technical Notes
- Country codes are exported from Creative-Engine's entry point
- PhoneInputConfiguration.vue handles all UI for country code configuration
- Type safety is ensured through TypeScript interfaces
- Validation includes country code-specific rules