PHP code example of shkubu18 / filament-widget-tabs
1. Go to this page and download the library: Download shkubu18/filament-widget-tabs 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/ */
shkubu18 / filament-widget-tabs example snippets
use App\Enums\PostStatusEnum;
use Illuminate\Database\Eloquent\Builder;
use Filament\Resources\Pages\ListRecords;
use Shkubu\FilamentWidgetTabs\Concerns\HasWidgetTabs;
use Shkubu\FilamentWidgetTabs\Components\WidgetTab;
class ListPosts extends ListRecords
{
use HasWidgetTabs;
public function getWidgetTabs(): array
{
return [
'all' => WidgetTab::make()
->label('All Posts')
->icon('heroicon-o-chat-bubble-left-right')
->value(Post::count()),
'published' => WidgetTab::make()
->label('Published')
->icon('heroicon-o-eye')
->value(Post::where('status', PostStatusEnum::PUBLISHED)->count())
->modifyQueryUsing(fn (Builder $query): Builder => $query->where('status', PostStatusEnum::PUBLISHED)),
'drafts' => WidgetTab::make()
->label('Drafts')
->icon('heroicon-o-archive-box')
->value(Post::where('status', PostStatusEnum::DRAFT)->count())
->modifyQueryUsing(fn (Builder $query): Builder => $query->where('status', PostStatusEnum::DRAFT)),
];
}
}
protected function shouldAutoLoadDefaultActiveWidgetTab(): bool
{
return true; // Enable auto-loading of the default active widget tab
}
protected function getWidgetsPerRow(): int
{
return 4; // Default is 3 widgets per row
}
WidgetTab::make()
->label('Published Ratio')
->value(fn (): float => (Post::where('status', 'published')->count() / Post::count()) * 100)
->percentage()
->percentagePrecision(1) // Will display as "25.4%" instead of "25%"