Skip to content

Commit 5b78894

Browse files
committed
added filters to Recently Added block and to Item Resource
1 parent f408365 commit 5b78894

File tree

2 files changed

+70
-2
lines changed

2 files changed

+70
-2
lines changed

app/Filament/Resources/ItemResource.php

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@
3737
use Filament\Tables\Columns\SpatieTagsColumn;
3838
use Filament\Tables\Columns\TextColumn;
3939
use Filament\Tables\Columns\TextInputColumn;
40+
use Filament\Tables\Enums\FiltersLayout;
41+
use Filament\Tables\Filters\SelectFilter;
4042
use Filament\Tables\Filters\TrashedFilter;
4143
use Filament\Tables\Table;
4244
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
@@ -320,8 +322,32 @@ public static function table(Table $table): Table
320322
->toggleable(),
321323
])
322324
->filters([
325+
SelectFilter::make('location_id')
326+
->relationship('location', 'name')
327+
->label('Location')
328+
->multiple()
329+
->searchable()
330+
->preload(),
331+
SelectFilter::make('tags')
332+
->label('Label')
333+
->relationship('tags', 'name')
334+
->searchable()
335+
->multiple()
336+
->preload(),
337+
338+
SelectFilter::make('insured')
339+
->options([
340+
true => 'Yes',
341+
false => 'No',
342+
]),
343+
SelectFilter::make('archived')
344+
->options([
345+
true => 'Yes',
346+
false => 'No',
347+
]),
323348
TrashedFilter::make(),
324349
])
350+
->filtersLayout(FiltersLayout::AboveContentCollapsible)
325351
->actions([
326352
Action::make('ShowQrCode')
327353
->iconButton()
@@ -378,7 +404,6 @@ public static function getEloquentQuery(): EloquentBuilder
378404

379405
public static function getGlobalSearchEloquentQuery(): EloquentBuilder
380406
{
381-
382407
return parent::getGlobalSearchEloquentQuery()->with(['location', 'tags']);
383408
}
384409

app/Filament/Widgets/RecentlyAdded.php

Lines changed: 44 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,20 @@
1111
use Filament\Support\Enums\MaxWidth;
1212
use Filament\Tables;
1313
use Filament\Tables\Actions\Action;
14+
use Filament\Tables\Actions\BulkActionGroup;
15+
use Filament\Tables\Actions\DeleteBulkAction;
1416
use Filament\Tables\Actions\ExportAction;
17+
use Filament\Tables\Actions\ForceDeleteBulkAction;
1518
use Filament\Tables\Actions\ImportAction;
19+
use Filament\Tables\Actions\RestoreBulkAction;
1620
use Filament\Tables\Columns\TextInputColumn;
21+
use Filament\Tables\Enums\FiltersLayout;
22+
use Filament\Tables\Filters\SelectFilter;
23+
use Filament\Tables\Filters\TrashedFilter;
1724
use Filament\Tables\Table;
1825
use Filament\Widgets\TableWidget as BaseWidget;
26+
use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
27+
use Illuminate\Database\Eloquent\SoftDeletingScope;
1928

2029
class RecentlyAdded extends BaseWidget
2130
{
@@ -26,7 +35,7 @@ class RecentlyAdded extends BaseWidget
2635
public function table(Table $table): Table
2736
{
2837
return $table
29-
->query(ItemResource::getEloquentQuery())
38+
->query($this->getEloquentQuery())
3039
->defaultPaginationPageOption(5)
3140
->defaultSort('created_at', 'desc')
3241
->columns([
@@ -59,13 +68,47 @@ public function table(Table $table): Table
5968
Tables\Actions\Action::make('open')
6069
->icon('heroicon-m-pencil-square')
6170
->url(fn (Item $record): string => ItemResource::getUrl('edit', ['record' => $record])),
71+
Tables\Actions\DeleteAction::make(),
6272
])
6373
->headerActions([
6474
ImportAction::make()
6575
->importer(ItemImporter::class)->options([
6676
'team_id' => Filament::getTenant()?->id,
6777
]),
6878
ExportAction::make()->exporter(ItemExporter::class),
79+
])
80+
->filters([
81+
SelectFilter::make('location_id')
82+
->relationship('location', 'name')
83+
->label('Location')
84+
->multiple()
85+
->searchable()
86+
->preload(),
87+
SelectFilter::make('tags')
88+
->label('Label')
89+
->relationship('tags', 'name')
90+
->searchable()
91+
->multiple()
92+
->preload(),
93+
94+
TrashedFilter::make(),
95+
])
96+
->filtersLayout(FiltersLayout::AboveContentCollapsible)
97+
->bulkActions([
98+
BulkActionGroup::make([
99+
DeleteBulkAction::make(),
100+
RestoreBulkAction::make(),
101+
ForceDeleteBulkAction::make(),
102+
]),
103+
]);
104+
105+
}
106+
107+
public static function getEloquentQuery(): EloquentBuilder
108+
{
109+
return ItemResource::getEloquentQuery()
110+
->withoutGlobalScopes([
111+
SoftDeletingScope::class,
69112
]);
70113
}
71114
}

0 commit comments

Comments
 (0)