mountainclans/livewire-phone-input

Phone input component for Livewire 3

Fund package maintenance!
Mountain Clans

Installs: 26

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

Language:JavaScript

pkg:composer/mountainclans/livewire-phone-input

1.2.2 2026-01-11 19:23 UTC

This package is auto-updated.

Last update: 2026-01-11 19:28:00 UTC


README

Доработанная под использование с Vite версия компонента телефонного ввода

Установка

Установите пакет при помощи Composer:

composer require mountainclans/livewire-phone-input

Поскольку функциональность пакета основана на пакете Intl Tel Input, установите его через npm:

npm install intl-tel-input --save

Добавьте в файл проекта resources/js/app.js строки

import intlTelInput from 'intl-tel-input/intlTelInputWithUtils';
import '../../vendor/mountainclans/livewire-phone-input/resources/js/phoneInput';
window.intlTelInput = window.intlTelInputGlobals = intlTelInput;

Добавьте в файл проекта resources/js/app.css строки:

@import 'intl-tel-input/build/css/intlTelInput.css';
@import '../../vendor/mountainclans/livewire-phone-input/resources/css/phoneInput.css';

Обратите внимание, что для корректной стилизации в вашем проекте должен использоваться TailwindCSS.

Добавьте в tailwind.config.js в секцию content:

'./vendor/mountainclans/livewire-phone-input/resources/views/**/*.blade.php'

Добавьте переменную с параметрами конфигурации в подвал:

<script>
    window.laravelTelInputConfig = {
        "allowDropdown": true,
        "autoHideDialCode": true,
        "autoPlaceholder": "polite",
        "customContainer": "",
        "customPlaceholder": null,
        "dropdownContainer": null,
        "excludeCountries": [],
        "formatOnDisplay": true,
        "geoIpLookup": "ipinfo",
        "initialCountry": '{{ $phonePreferredCountry }}',
        "localizedCountries": [],
        "nationalMode": true,
        "onlyCountries": [],
        "placeholderNumberType": "MOBILE",
        "preferredCountries": ["ES", "DE", "RU", "US", "GB", "KZ"],
        "separateDialCode": false,
        "utilsScript": "./utils.js"
    }
</script>

Обязательно переопределите $phonePreferredCountry!

Пример функции для получения этой переменной:

public function preferredPhoneInputLocale(): string
{
   return match(app()->currentLocale()) {
       'ru' => 'RU',
       'kk' => 'KZ',
       default => 'GB',
   };
}

Использование

<x-ui.phone-input wire:model="phone"
                  value="{{ $phone }}"
                  phone-country-input="phoneCountry"
                  :label="__('Phone')"
                  id="phone"
                  name="phone"
                  id="phone"
                  class="additional-class-here"
                  :default-classes="false"
                  initial-country="RU"
/>

Обратите внимание, что для записи кода страны в родительском компоненте должно присутствовать поле phoneCountry (или любое другое, которые вы передадите в prop phone-country-input).

Используйте prop :default-classes="false", если Вы хотите полностью переопределить внешний вид input.

Если Вам необходимо обновить рендеринг компонента phone-input при действиях на бекэнде, воспользуйтесь трейтом RefreshPhoneInputs:

class YourLivewireComponent extends Component
{
    use MountainClans\LivewirePhoneInput\Traits\RefreshPhoneInputs;
    
    // к примеру, после динамического появления телефонного поля в форме
    public function updatedAddPhone(): void
    {
        $this->refreshPhoneInputs();
    }
}

Авторы

Лицензия

The MIT License (MIT). Please see License File for more information.