Laravlel Packager for fenration of simple liwevire data tables
MIT License
namespace App\Livewire;
use App\Models\User;
use SteelAnts\DataTable\Livewire\DataTableComponent;
use Illuminate\Database\Eloquent\Builder;
use SteelAnts\DataTable\Traits\UseDatabase;
class UserTable extends DataTableComponent
{
Use UseDatabase;
// 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 [
[
// livewire action
'type' => "livewire",
'action' => "remove",
'parameters' => $item['id'],
'text' => "Remove",
'actionClass' => 'text-danger',
'iconClass' => 'fas fa-trash',
'confirm' => 'Are you sure you want to delete this post?',
],
[
// 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();
}
}
// 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',
],
// ...
];
}
@livewire('user-table', [], key('data-table'))
[LARVEL-ROOT]/packages/
"autoload": {
"psr-4": {
...
"SteelAnts\\DataTable\\": "packages/Livewire-DataTable/src/"
...
}
},
[LARVEL-ROOT]/bootstrap/providers.php
SteelAnts\DataTable\DataTableServiceProvider::class,
// Enable sorting
public bool $sortable = true;
// Enable pagination
public bool $paginated = true;
// Enable fulltext search
public bool $searchable = false;
public bool $searchableColumns = [];
// 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);
}
steelants/laravel-auth steelants/laravel-boilerplate steelants/datatable steelants/form steelants/modal steelants/laravel-tenant