alp-develop/laravel-livewire-tables
Reactive Livewire data tables for Laravel—search, sort, filter, paginate, export, and bulk actions with zero JavaScript. Supports Laravel 10–13, Livewire 3–4, PHP 8.1+, Tailwind or Bootstrap 4/5, plus dark mode and configurable themes.
table-key to isolate state across multiple instances.composer require alp-develop/laravel-livewire-tables.php artisan vendor:publish --tag=livewire-tables-config.tailwind) and dark mode settings.<livewire:tables.users-table />).table-key to isolate state for multiple instances (e.g., filtered vs. unfiltered views).StepContract for soft deletes).configure() for per-table defaults (e.g., setDefaultPerPage(50)).php -v to check and update if needed.livewire/livewire:^4.0).livewire-tables.composer why-not to check for conflicts.config/livewire-tables.php) to avoid duplication.dd($this->state) in configure() to debug query state.storage/logs/livewire.log) for errors.session()->all()) for dark mode or state issues.table-key causes all instances to sync. Always use unique keys for multiple tables.DB::enableQueryLog() to profile.!important sparingly; prefer scoped classes.php artisan make:livewiretable).setDefaultPerPage(25). Adjust based on user needs (e.g., 50–100 for analytics).sortable()/searchable() are indexed.Engine instance per request, reducing overhead.deleteSelected) should use transactions or queues to avoid race conditions.public function deleteSelected(): void
{
User::whereIn('id', $this->getSelectedIds())->delete();
}
→ Wrap in a transaction or dispatch to a queue:
DeleteUsersJob::dispatch($this->getSelectedIds());
SELECT * in queries. Use select() to fetch only needed columns.query()->remember()).How can I help you explore Laravel packages today?