feat: Add empty state icons and descriptions to Filament relation managers, update CooperationMedia payment relationship to HasOne, and adjust media manager visibility.

This commit is contained in:
Yoga Pangestu 2026-01-30 15:32:31 +07:00
parent c4347f980e
commit 693d1f001c
5 changed files with 18 additions and 7 deletions

View File

@ -12,6 +12,7 @@
use Filament\Resources\RelationManagers\RelationManager; use Filament\Resources\RelationManagers\RelationManager;
use Filament\Schemas\Components\Grid; use Filament\Schemas\Components\Grid;
use Filament\Schemas\Schema; use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Columns\TextColumn; use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table; use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@ -24,7 +25,7 @@ class CooperationMediaRelationManager extends RelationManager
public static function canViewForRecord(Model $ownerRecord, string $pageClass): bool public static function canViewForRecord(Model $ownerRecord, string $pageClass): bool
{ {
return auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value); return ! auth()->user()->hasRole(RoleEnum::PERUSAHAAN->value);
} }
public static function getBadge(Model $ownerRecord, string $pageClass): ?string public static function getBadge(Model $ownerRecord, string $pageClass): ?string
@ -57,7 +58,8 @@ public function table(Table $table): Table
ViewAction::make() ViewAction::make()
->visible(fn (CooperationMedia $record): bool => $record->status === ApprovalStatus::ACCEPTED && $record->payment()->exists()), ->visible(fn (CooperationMedia $record): bool => $record->status === ApprovalStatus::ACCEPTED && $record->payment()->exists()),
]) ])
->recordAction(null); ->emptyStateIcon(Heroicon::Newspaper)
->emptyStateDescription('Tidak ada media yang diikutsertakan.');
} }
public function infolist(Schema $infolist): Schema public function infolist(Schema $infolist): Schema

View File

@ -15,6 +15,7 @@
use Filament\Resources\RelationManagers\RelationManager; use Filament\Resources\RelationManagers\RelationManager;
use Filament\Schemas\Components\Grid; use Filament\Schemas\Components\Grid;
use Filament\Schemas\Schema; use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Columns\TextColumn; use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table; use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@ -107,6 +108,8 @@ public function table(Table $table): Table
), ),
]), ]),
]) ])
->emptyStateIcon(Heroicon::DocumentText)
->emptyStateDescription('Tidak ada proposal yang diajukan.')
->modifyQueryUsing(function ($query) { ->modifyQueryUsing(function ($query) {
$user = auth()->user(); $user = auth()->user();

View File

@ -21,6 +21,7 @@
use Filament\Resources\RelationManagers\RelationManager; use Filament\Resources\RelationManagers\RelationManager;
use Filament\Schemas\Schema; use Filament\Schemas\Schema;
use Filament\Support\Enums\Width; use Filament\Support\Enums\Width;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Columns\TextColumn; use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table; use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@ -188,6 +189,8 @@ public function table(Table $table): Table
->count() < $taskAssignment->report_amount; ->count() < $taskAssignment->report_amount;
}), }),
]) ])
->toolbarActions([]); ->toolbarActions([])
->emptyStateIcon(Heroicon::InboxArrowDown)
->emptyStateDescription('Tidak ada laporan yang diajukan.');
} }
} }

View File

@ -11,6 +11,7 @@
use Filament\Actions\DeleteBulkAction; use Filament\Actions\DeleteBulkAction;
use Filament\Notifications\Notification; use Filament\Notifications\Notification;
use Filament\Resources\RelationManagers\RelationManager; use Filament\Resources\RelationManagers\RelationManager;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Columns\TextColumn; use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table; use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
@ -102,6 +103,8 @@ public function table(Table $table): Table
->success() ->success()
), ),
]), ]),
]); ])
->emptyStateIcon(Heroicon::ArchiveBoxXMark)
->emptyStateDescription('Tidak ada penugasan yang ditugaskan.');
} }
} }

View File

@ -7,7 +7,7 @@
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Database\Eloquent\Relations\Pivot; use Illuminate\Database\Eloquent\Relations\Pivot;
use Spatie\MediaLibrary\HasMedia; use Spatie\MediaLibrary\HasMedia;
@ -57,9 +57,9 @@ public function partnerMedia(): BelongsTo
return $this->belongsTo(PartnerMedia::class); return $this->belongsTo(PartnerMedia::class);
} }
public function payments(): HasMany public function payment(): HasOne
{ {
return $this->hasMany(CooperationPayment::class, 'cooperation_media_id'); return $this->hasOne(CooperationPayment::class, 'cooperation_media_id');
} }
public function rejectionReasons(): MorphMany public function rejectionReasons(): MorphMany