customOptions method allows deep integration with the underlying intl-tel-input library.PhoneInput, PhoneColumn, PhoneEntry) without modifying core logic.filament:assets), ensuring consistent bundling with other frontend assets.intl-tel-input library is heavy (~200KB gzipped) and may impact initial load time. Critical for mobile or low-bandwidth users.geoip2/geoip2). Disabling this (disableLookup()) is recommended for air-gapped environments.strictMode() may break existing phone numbers lacking country codes, requiring data migration or fallback logic.Validation Strategy:
defaultCountry or lenient validation mitigate this?Performance:
disableLookup()) to reduce latency?Localization:
locale and i18n, but testing is needed for non-English regions.Data Migration:
+1 (555) 123-4567 → +15551234567.countryStatePath require database schema changes to split country codes into separate columns?Testing:
libphonenumber quirks (e.g., false positives for invalid numbers)?Maintenance:
intl-tel-input or Laravel Phone libraries introduce breaking changes?countryStatePath.Installation:
composer require ysfkaya/filament-phone-input.php artisan filament:assets and php artisan filament-phone-input:install.filament/support and propaganistas/laravel-phone are installed.Configuration:
validation.php to include phone number rules (e.g., required|phone:US).config/filament-phone-input.php if needed.Resource Integration:
PhoneInput, PhoneColumn, and PhoneEntry.// Before
TextInput::make('phone')->rules(['required', 'string']);
// After
PhoneInput::make('phone')->validateFor('US');
Data Migration (if applicable):
parse() method to normalize existing phone numbers:
$user->phone = \Propaganistas\LaravelPhone\PhoneNumber::parse($user->phone, 'US')->formatE164();
$user->save();
countryStatePath, add a new column to the database and update records:
Schema::table('users', function (Blueprint $table) {
$table->string('phone_country')->nullable()->after('phone');
});
Testing:
3.x branch.libphonenumber.intl-tel-input, which supports modern browsers (Chrome, Firefox, Safari). Test on mobile devices for fullscreen popup behavior.locale and i18n for country names and number formats. Ensure translations are available for target languages.Phase 1: Pilot Integration
Phase 2: Full Rollout
validateFor, countryStatePath).Phase 3: Optimization
disableLookup()).intl-tel-input and Laravel Phone for breaking changes.composer.json if stability is critical:
"ysfkaya/filament-phone-input": "^1.0",
"propaganistas/laravel-phone": "^10.0"
config/filament-phone-input.php for easy updates.NumberParseException: Resolve by setting defaultCountry or using lenient validation.showFlags(true) and separateDialCode(true) are set.validateFor, displayNumberFormat) in the team’s component library.autoPlaceholder behavior).How can I help you explore Laravel packages today?