🆙 More fixes 🆙

This commit is contained in:
Remco
2026-01-20 18:26:07 +01:00
parent 9a8fa8b1ff
commit d57e97bb42
9 changed files with 139 additions and 74 deletions
@@ -23,6 +23,7 @@ use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Filters\TernaryFilter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use App\Models\Game\Furniture\CatalogItem;
class CatalogItemsRelationManager extends RelationManager
{
@@ -227,7 +228,10 @@ class CatalogItemsRelationManager extends RelationManager
->recordTitleAttribute('catalog_name')
->columns([
ImageColumn::make('icon')
->getStateUsing(fn ($record) => url($record->itemBase?->icon()))
->getStateUsing(function (CatalogItem $record): string {
$icon = $record->itemBase?->icon();
return is_string($icon) && $icon !== '' ? url($icon) : '';
})
->size('25px')
->label('Icon')
@@ -278,11 +282,16 @@ class CatalogItemsRelationManager extends RelationManager
])
->filters([
SelectFilter::make('type')
->query(fn (Builder $query, array $data): Builder => empty($data['values'])
? $query
: $query->whereHas('itemBase', function (Builder $query) use ($data): void {
$query->whereIn('type', $data['values']);
}))
->query(function (Builder $query, array $data): Builder {
$values = $data['values'] ?? null;
if (! is_array($values) || $values === []) {
return $query;
}
return $query->whereHas('itemBase', function (Builder $query) use ($values): void {
$query->whereIn('type', $values);
});
})
->options(
fn () => ItemBase::query()
->select('type')
@@ -313,7 +322,7 @@ class CatalogItemsRelationManager extends RelationManager
->icon('heroicon-m-cube')
->modalWidth('3xl')
->modalHeading('Edit Item Base')
->fillForm(function ($record) {
->fillForm(function (CatalogItem $record): array {
$itemBase = $record->itemBase;
if (! $itemBase) {
return [];
@@ -440,7 +449,7 @@ class CatalogItemsRelationManager extends RelationManager
->nullable()
->dehydrateStateUsing(fn ($state) => $state ?? ''),
])
->action(function (array $data, $record): void {
->action(function (array $data, CatalogItem $record): void {
// Transform any null or empty values to empty strings
$data = collect($data)->map(function ($value) {
if ($value === null || $value === '') {
@@ -453,9 +462,14 @@ class CatalogItemsRelationManager extends RelationManager
return $value;
})->toArray();
$record->itemBase->forceFill($data)->save();
$itemBase = $record->itemBase;
if ($itemBase) {
$itemBase->forceFill($data)->save();
}
})
->visible(fn ($record) => $record->itemBase !== null),
->visible(function (CatalogItem $record): bool {
return $record->itemBase !== null;
}),
DeleteAction::make(),
])
->toolbarActions([