phpshko / laravel-livewire-depdrop
Laravel Livewire depdrop component
dev-main
2021-04-13 00:03 UTC
Requires
- php: ^7.3|^8.0
- livewire/livewire: ^2.0
This package is auto-updated.
Last update: 2025-06-13 09:44:09 UTC
README
This package provides a dependent dropdown
🚀 Installation
You can install the package via composer:
composer require phpshko/laravel-livewire-depdrop
Publishing Assets
Publishing assets are optional unless you want to customize this package.
php artisan vendor:publish --provider="Phpshko\LaravelLivewireDepDrop\LaravelLivewireDepDropProvider" --tag=views
Usage
Create you livewire component and extends
like this
<?php namespace App\Http\Livewire; use Phpshko\LaravelLivewireDepDrop\DepDropComponent; class CountryDropdown extends DepDropComponent { public function getValues(): array { return Country::get()->pluck('name', 'id'); } }
or this (use parent dropdown value)
<?php namespace App\Http\Livewire; use Phpshko\LaravelLivewireDepDrop\DepDropComponent; class StateDropdown extends DepDropComponent { public function getValues(): array { return State::where('country_id', $this->parentValue)->pluck('name', 'id'); } }
In view
for root dropdown
@livewire('country-dropdown', ['depId' => 'country', 'placeholder' => 'Select country'])
for depended dropdown need set parentId like
@livewire('state-dropdown', ['depId' => 'state', 'parentId' => 'country', 'placeholder' => 'Select state'])
You can also set properties (in view or class of component)
placeholder
name
cssClass
hideOnParentEmpty
hideOnValuesEmpty
There is no limit on the number of dropdowns
@livewire('country-dropdown', ['depId' => 'country', 'placeholder' => 'Select country'])
@livewire('state-dropdown', ['depId' => 'state', 'parentId' => 'country', 'placeholder' => 'Select state'])
@livewire('city-dropdown', ['depId' => 'city', 'parentId' => 'state', 'placeholder' => 'Select city'])
@livewire('area-dropdown', ['depId' => 'area', 'parentId' => 'city'])
Event
You can listen event depdropSelected to catch when dropdown is selected
Demo
With hideOnParentEmpty and hideOnValuesEmpty is true