steelants / datatable
Simple Datatable class based on Laravel and livewire
Installs: 248
Dependents: 1
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Language:Blade
Requires
- laravel/framework: ^11.0
- livewire/livewire: ^3.0
README
Created by: SteelAnts s.r.o.
Usage
namespace App\Livewire; use App\Models\User; use SteelAnts\DataTable\Livewire\DataTableComponent; use Illuminate\Database\Eloquent\Builder; class UserTable extends DataTableComponent { // Get model query public function query(): Builder { return User::query(); } // Set headers public function headers(): array { return [ 'id' => 'ID', 'name' => 'Name', 'email' => 'E-mail', ]; } // Set actions public function actions($item) : array { return [ [ // livewrei action 'type' => "livewire", 'action' => "remove", 'parameters' => $item['id'], 'text' => "Remove", 'actionClass' => 'text-danger', 'iconClass' => 'fas fa-trash', ], [ // url action 'type' => "url", 'url' => rounte('user.show', [id => $item['id']]), 'text' => "Show", 'iconClass' => 'fas fa-eye', ] ]; } // Custom render of 'name' column public function renderColumnName($value, $row){ return '<b>'.e($value).'</b>'; } // Livewire actions public function remove($id){ User::find($id)->delete(); } }
Using without query / models
// instead of method query() implement dataset() public function dataset(): array { return [ [ 'id' => '1', 'name' => 'Name 1', 'email' => 'E-mail 1', ], [ 'id' => '2', 'name' => 'Name 2', 'email' => 'E-mail 2', ], // ... ]; }
Render
@livewire('user-table', [], key('data-table'))
Configuration
// Enable sorting public bool $sortable = true; // Enable pagination public bool $paginated = true; // Enable fulltext search public bool $searchable = false; public bool $searchableColumns = [];
Optional transforms methods
// Transformace whole row on input (optional) // Returns associative array public function row(Model $row) : array { return [ 'id' => $row->id, ]; } // Transform one column on input (optional) public function columnFoo(mixed $column) : mixed { return $column; } // Transform whole row on output (optional) // !!! NOTE: values are rendered with {!! !!}, manually escape values public function renderRow(array $row) : array { return [ 'id' => e($row['id']) ]; } // Transform one column on output (optional) // !!! NOTE: values are rendered with {!! !!}, manually escape values public function renderColumnFoo(mixed $value, array $row) : string { return e($value); }
Other Packages
steelants/laravel-auth steelants/laravel-boilerplate steelants/datatable steelants/form steelants/modal steelants/laravel-tenant