PHP code example of wezlo / filament-grid-list
1. Go to this page and download the library: Download wezlo/filament-grid-list library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
wezlo / filament-grid-list example snippets
use Wezlo\FilamentGridList\FilamentGridListPlugin;
->plugins([
FilamentGridListPlugin::make()
->gridColumns(['default' => 1, 'sm' => 2, 'lg' => 3])
->gap(4)
->recordsPerPage(12)
->recordsPerPageOptions([12, 24, 48, 96]),
])
use Filament\Resources\Pages\ListRecords;
use Wezlo\FilamentGridList\Concerns\HasGridList;
use Wezlo\FilamentGridList\GridListConfiguration;
class ListProducts extends ListRecords
{
use HasGridList;
protected static string $resource = ProductResource::class;
public function gridList(GridListConfiguration $config): GridListConfiguration
{
return $config
->gridColumns(['default' => 1, 'sm' => 2, 'lg' => 4])
->header(fn ($record) => $record->name)
->content(fn ($record) => Str::limit($record->description, 100))
->footer(fn ($record) => '$' . number_format($record->price, 2));
}
}
public function gridList(GridListConfiguration $config): GridListConfiguration
{
return $config
->image(fn ($record) => $record->thumbnail_url)
->header(fn ($record) => $record->name)
->badges(fn ($record) => [
['label' => $record->status->getLabel(), 'color' => $record->status->getColor()],
['label' => $record->category->name, 'color' => 'info'],
])
->content(fn ($record) => $record->short_description)
->footer(fn ($record) => '$' . number_format($record->price, 2));
}
// Array format (recommended)
['label' => 'Active', 'color' => 'success']
// Any renderable (Blade component, HtmlString, etc.)
view('components.my-badge', ['status' => $record->status])
use Illuminate\Support\HtmlString;
$config->describeUsing(fn ($record) => new HtmlString("
<div class='p-4'>
<h3 class='font-semibold'>{$record->name}</h3>
<p class='text-sm text-gray-500'>{$record->description}</p>
<span class='text-lg font-bold'>\${$record->price}</span>
</div>
"));
$config->cardView('products.grid-card');
$config->gridColumns(['default' => 1, 'sm' => 2, 'md' => 3, 'lg' => 4])
->gap(6); // Tailwind spacing unit (6 = 1.5rem)
$config->recordsPerPage(24)
->recordsPerPageOptions([12, 24, 48, 96]);
public function table(Table $table): Table
{
return $table
->columns([...])
->defaultPaginationPageOption(12)
->paginationPageOptions([12, 24, 48, 96]);
}
$config->selectable(false);
$config->recordUrl(fn ($record) => route('products.show', $record));
use Wezlo\FilamentGridList\FilamentGridListPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugins([
FilamentGridListPlugin::make()
->gridColumns(['default' => 1, 'sm' => 2, 'md' => 3, 'lg' => 4])
->gap(4)
->recordsPerPage(12)
->recordsPerPageOptions([12, 24, 48, 96]),
]);
}
// config/filament-grid-list.php
return [
'grid_columns' => [
'default' => 1,
'sm' => 2,
'md' => 3,
'lg' => 4,
],
'gap' => 4,
'records_per_page' => 12,
'records_per_page_options' => [12, 24, 48, 96],
];
use App\Enums\ProductStatus;
use Filament\Resources\Pages\ListRecords;
use Illuminate\Support\Str;
use Wezlo\FilamentGridList\Concerns\HasGridList;
use Wezlo\FilamentGridList\GridListConfiguration;
class ListProducts extends ListRecords
{
use HasGridList;
protected static string $resource = ProductResource::class;
public function gridList(GridListConfiguration $config): GridListConfiguration
{
return $config
->gridColumns(['default' => 1, 'sm' => 2, 'md' => 3, 'xl' => 4])
->gap(6)
->recordsPerPage(24)
->recordsPerPageOptions([12, 24, 48])
->image(fn ($record) => $record->thumbnail_url)
->header(fn ($record) => $record->name)
->badges(fn ($record) => [
['label' => $record->status->getLabel(), 'color' => $record->status->getColor()],
['label' => $record->category->name, 'color' => 'info'],
])
->content(fn ($record) => Str::limit($record->description, 120))
->footer(fn ($record) => '$' . number_format($record->price, 2))
->selectable()
->recordUrl(fn ($record) => ProductResource::getUrl('view', ['record' => $record]));
}
}
bash
php artisan make:filament-theme