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\Schemas\Components\Grid;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Model;
@ -24,7 +25,7 @@ class CooperationMediaRelationManager extends RelationManager
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
@ -57,7 +58,8 @@ public function table(Table $table): Table
ViewAction::make()
->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

View File

@ -15,6 +15,7 @@
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Schemas\Components\Grid;
use Filament\Schemas\Schema;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
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) {
$user = auth()->user();

View File

@ -21,6 +21,7 @@
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Schemas\Schema;
use Filament\Support\Enums\Width;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Model;
@ -188,6 +189,8 @@ public function table(Table $table): Table
->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\Notifications\Notification;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Support\Icons\Heroicon;
use Filament\Tables\Columns\TextColumn;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Model;
@ -102,6 +103,8 @@ public function table(Table $table): Table
->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\Factories\HasFactory;
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\Pivot;
use Spatie\MediaLibrary\HasMedia;
@ -57,9 +57,9 @@ public function partnerMedia(): BelongsTo
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