1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
public static function table(Table $table): Table
{
return $table
->columns([
// Select Column
Tables\Columns\TextColumn::make('name')
->searchable()
->sortable()
->selectable(),
// Action Column
Tables\Columns\TextColumn::make('email')
->searchable()
->copyable()
->copyMessage('Email copied!'),
// Status Column
Tables\Columns\BadgeColumn::make('status')
->colors([
'success' => 'active',
'danger' => 'inactive',
]),
// Progress Column
Tables\Columns\ProgressColumn::make('completion_rate')
->label('Completion Rate'),
])
->filters([
// Select Filter
Tables\Filters\SelectFilter::make('role')
->options([
'admin' => 'Administrator',
'user' => 'User',
'moderator' => 'Moderator',
]),
// Date Filter
Tables\Filters\Filter::make('created_at')
->form([
Forms\Components\DatePicker::make('created_from'),
Forms\Components\DatePicker::make('created_until'),
])
->query(function (Builder $query, array $data): Builder {
return $query
->when(
$data['created_from'],
fn (Builder $query, $date): Builder => $query->whereDate('created_at', '>=', $date),
)
->when(
$data['created_until'],
fn (Builder $query, $date): Builder => $query->whereDate('created_at', '<=', $date),
);
}),
])
->actions([
Tables\Actions\ViewAction::make(),
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
|