mountainclans / livewire-select
This is my package livewire-select
Fund package maintenance!
Mountain Clans
Requires
- php: ^8.2
- illuminate/contracts: ^10.0||^11.0||^12.0
- livewire/livewire: ^3.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^10.0.0||^9.0.0||^8.22.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
README
Установка
Установите пакет с помощью Composer:
composer require mountainclans/livewire-select
Добавьте в файл проекта resources/js/app.js
строки
import selectComponent from '../../vendor/mountainclans/livewire-select/resources/js/searchSelect'; Alpine.data('selectComponent', selectComponent);
Добавьте в файл проекта resources/js/app.css
строки:
@import '../../vendor/mountainclans/livewire-select/resources/css/searchSelect.css';
Обратите внимание, что для корректной стилизации в вашем проекте должен использоваться TailwindCSS.
Добавьте в tailwind.config.js
в секцию content
:
'./vendor/mountainclans/livewire-select/resources/views/**/*.blade.php'
Опционально, Вы можете опубликовать views
для их переопределения:
php artisan vendor:publish --tag="livewire-select-views"
Использование
Простое использование
<x-ui.select wire:model="modelId"
:hide-search="true"
:label="__('Model *')"
:placeholder="__('Select model')"
:values="$modelsArray"
/>
Допустимые атрибуты тега
wire:model
- обязательное поле, к которому будет привязано выбранное в select значение;values
- массив значений в форматеключ
-лейбл
;hidden
- булево значение, скрывать ли селект. Еслиtrue
, элемент будет скрыт, но всё еще будет отображаться элемент, переданный в слотеcontrol
. Полезно для создания динамических форм;disabled
- возможно ли изменение выбора селекта;label
- заголовок над селектом;placeholder
- текст элемента, когда ни одно из переданных вvalues
значений не выбрано;search-function
- название функции поиска в родительском Livewire-компоненте (см. пример ниже);total-values
- общее количество доступных в селекте элементов. Используется вместе с функцией поиска;hide-search
- скрывать ли поисковую строку;
Продвинутое использование с внешней функцией поиска и слотом
Компонент может обновлять значения при вводе пользователем текста, с которым должны совпадать допустимые значения выбора:
<x-ui.select wire:model="modelId"
:values="$modelsArray"
:hidden="$createNewProvider"
:label="__('Model *')"
:placeholder="__('Select model')"
search-function="searchModels"
:total-values="$totalModels"
>
<x-slot:control>
В этот slot можно передать любую вёрстку,
в т.ч. управляемые Livewire компоненты,
такие как toggle
</x-slot:control>
</x-ui.select>
Пример функции поиска, расположенной в родительском Livewire-компоненте:
public function searchModels(string $search, string $selectedValueId): array { $query = Model::query(); if (!empty($search)) { $query ->where('company_name', 'like', "%$search%") ->orWhere('id', '=', "$selectedValueId"); } return $query ->orderBy('company_name') ->get() ->mapWithKeys(function (Provider $provider) { return [$provider->id => $provider->company_name]; }) ->toArray(); }
Авторы
Лицензия
The MIT License (MIT). Please see License File for more information.