22
33namespace App \Filament \Resources \Users \Tables ;
44
5+ use App \Enums \Role ;
6+ use App \Models \User ;
57use Filament \Actions \BulkActionGroup ;
68use Filament \Actions \DeleteBulkAction ;
79use Filament \Actions \EditAction ;
8- use Filament \Tables \ Columns \ IconColumn ;
10+ use Filament \Support \ Icons \ Heroicon ;
911use Filament \Tables \Columns \TextColumn ;
12+ use Filament \Tables \Filters \SelectFilter ;
13+ use Filament \Tables \Filters \TernaryFilter ;
1014use Filament \Tables \Table ;
1115
1216class UsersTable
@@ -21,28 +25,46 @@ public static function configure(Table $table): Table
2125 ->sortable (),
2226
2327 TextColumn::make ('email ' )
28+ ->tooltip (fn (User $ user ) => $ user ->hasVerifiedEmail () ? 'Email Verified ' : 'Email Not Verified ' )
29+ ->icon (fn (User $ user ) => match ($ user ->hasVerifiedEmail ()) {
30+ true => Heroicon::OutlinedCheckCircle,
31+ false => Heroicon::OutlinedXCircle,
32+ })
33+ ->iconColor (fn (User $ user ) => match ($ user ->hasVerifiedEmail ()) {
34+ true => 'success ' ,
35+ false => 'danger ' ,
36+ })
2437 ->searchable ()
2538 ->sortable (),
2639
27- IconColumn::make ('email_verified ' )
28- ->getStateUsing (fn ($ record ) => $ record ->email_verified_at )
29- ->boolean ()
30- ->sortable (),
31-
3240 TextColumn::make ('roles ' )
33- ->getStateUsing (fn ($ record ) => $ record ->roles ->pluck ('name ' )->join (', ' ))
41+ ->badge ()
42+ ->getStateUsing (fn ($ record ) => $ record ->roles ->pluck ('name ' ))
3443 ->searchable ()
3544 ->sortable (),
3645
3746 TextColumn::make ('created_at ' )
38- ->dateTime ()
39- ->sortable ()
40- ->toggleable (isToggledHiddenByDefault: true ),
47+ ->toggleable (isToggledHiddenByDefault: true )
48+ ->sortable (),
4149
4250 TextColumn::make ('updated_at ' )
43- ->dateTime ()
44- ->sortable ()
45- ->toggleable (isToggledHiddenByDefault: true ),
51+ ->toggleable (isToggledHiddenByDefault: true )
52+ ->sortable (),
53+ ])
54+ ->filters ([
55+ TernaryFilter::make ('email_verified_at ' )
56+ ->label ('Email Verification ' )
57+ ->nullable ()
58+ ->placeholder ('All ' )
59+ ->trueLabel ('Verified ' )
60+ ->falseLabel ('Unverified ' ),
61+
62+ SelectFilter::make ('roles ' )
63+ ->label ('Roles ' )
64+ ->relationship ('roles ' , 'name ' )
65+ ->options (Role::values ())
66+ ->multiple ()
67+ ->preload (),
4668 ])
4769 ->recordActions ([
4870 EditAction::make (),
0 commit comments