fix(filament): added custom checkboxfilter class (#761)

This commit is contained in:
Kyrch
2024-12-02 10:41:10 -03:00
committed by GitHub
parent 3ff694fba2
commit c67af74c5f
4 changed files with 83 additions and 28 deletions
@@ -0,0 +1,27 @@
<?php
declare(strict_types=1);
namespace App\Filament\Components\Filters;
use Filament\Tables\Filters\Filter;
use Illuminate\Database\Eloquent\Builder;
/**
* Class CheckboxFilter.
*/
class CheckboxFilter extends Filter
{
/**
* Initial setup for the filter
*
* @return void
*/
protected function setUp(): void
{
parent::setUp();
$this->checkbox();
$this->query(fn (Builder $query): Builder => $query->where($this->getName(), true));
}
}
+3 -4
View File
@@ -7,6 +7,7 @@ namespace App\Filament\Resources\Auth;
use App\Filament\Actions\Models\Auth\Role\GivePermissionAction;
use App\Filament\Actions\Models\Auth\Role\RevokePermissionAction;
use App\Filament\Components\Columns\TextColumn;
use App\Filament\Components\Filters\CheckboxFilter;
use App\Filament\Components\Filters\NumberFilter;
use App\Filament\Components\Infolist\TextEntry;
use App\Filament\Resources\BaseResource;
@@ -29,7 +30,6 @@ use Filament\Resources\RelationManagers\RelationGroup;
use Filament\Tables\Actions\ActionGroup;
use Filament\Tables\Columns\ColorColumn;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Filters\Filter;
use Filament\Tables\Table;
/**
@@ -267,9 +267,8 @@ class Role extends BaseResource
public static function getFilters(): array
{
return [
Filter::make(RoleModel::ATTRIBUTE_DEFAULT)
->label(__('filament.fields.role.default.name'))
->checkbox(),
CheckboxFilter::make(RoleModel::ATTRIBUTE_DEFAULT)
->label(__('filament.fields.role.default.name')),
NumberFilter::make(RoleModel::ATTRIBUTE_PRIORITY)
->label(__('filament.fields.role.priority.name')),
@@ -8,6 +8,7 @@ use App\Filament\Components\Columns\BelongsToColumn;
use App\Filament\Components\Columns\TextColumn;
use App\Filament\Components\Fields\BelongsTo;
use App\Filament\Components\Fields\Select;
use App\Filament\Components\Filters\CheckboxFilter;
use App\Filament\Components\Filters\NumberFilter;
use App\Filament\Components\Filters\TextFilter;
use App\Filament\Components\Infolist\TextEntry;
@@ -32,7 +33,6 @@ use Filament\Infolists\Components\Section;
use Filament\Infolists\Infolist;
use Filament\Resources\RelationManagers\RelationGroup;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Filters\Filter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Model;
@@ -348,13 +348,11 @@ class Entry extends BaseResource
TextFilter::make(EntryModel::ATTRIBUTE_EPISODES)
->label(__('filament.fields.anime_theme_entry.episodes.name')),
Filter::make(EntryModel::ATTRIBUTE_NSFW)
->label(__('filament.fields.anime_theme_entry.nsfw.name'))
->checkbox(),
CheckboxFilter::make(EntryModel::ATTRIBUTE_NSFW)
->label(__('filament.fields.anime_theme_entry.nsfw.name')),
Filter::make(EntryModel::ATTRIBUTE_SPOILER)
->label(__('filament.fields.anime_theme_entry.spoiler.name'))
->checkbox(),
CheckboxFilter::make(EntryModel::ATTRIBUTE_SPOILER)
->label(__('filament.fields.anime_theme_entry.spoiler.name')),
],
parent::getFilters(),
);
+48 -17
View File
@@ -13,6 +13,7 @@ use App\Filament\BulkActions\Models\Wiki\Video\VideoDiscordNotificationBulkActio
use App\Filament\BulkActions\Storage\Wiki\Video\DeleteVideoBulkAction;
use App\Filament\Components\Columns\TextColumn;
use App\Filament\Components\Fields\Select;
use App\Filament\Components\Filters\CheckboxFilter;
use App\Filament\Components\Filters\NumberFilter;
use App\Filament\Components\Infolist\TextEntry;
use App\Filament\Resources\BaseResource;
@@ -29,12 +30,12 @@ use App\Models\Wiki\Video as VideoModel;
use Filament\Forms\Components\Checkbox;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Infolists\Components\IconEntry;
use Filament\Infolists\Components\Section;
use Filament\Infolists\Infolist;
use Filament\Resources\RelationManagers\RelationGroup;
use Filament\Tables\Actions\ActionGroup;
use Filament\Tables\Columns\IconColumn;
use Filament\Tables\Filters\Filter;
use Filament\Tables\Filters\SelectFilter;
use Filament\Tables\Table;
use Illuminate\Validation\Rules\Enum;
@@ -261,6 +262,42 @@ class Video extends BaseResource
{
return $infolist
->schema([
Section::make(static::getRecordTitle($infolist->getRecord()))
->schema([
TextEntry::make(VideoModel::ATTRIBUTE_ID)
->label(__('filament.fields.base.id')),
TextEntry::make(VideoModel::ATTRIBUTE_OVERLAP)
->label(__('filament.fields.video.overlap.name'))
->formatStateUsing(fn ($state) => $state->localize()),
TextEntry::make(VideoModel::ATTRIBUTE_SOURCE)
->label(__('filament.fields.video.source.name'))
->formatStateUsing(fn ($state) => $state->localize()),
IconEntry::make(VideoModel::ATTRIBUTE_NC)
->label(__('filament.fields.video.nc.name'))
->boolean(),
IconEntry::make(VideoModel::ATTRIBUTE_SUBBED)
->label(__('filament.fields.video.subbed.name'))
->boolean(),
IconEntry::make(VideoModel::ATTRIBUTE_LYRICS)
->label(__('filament.fields.video.lyrics.name'))
->boolean(),
IconEntry::make(VideoModel::ATTRIBUTE_UNCEN)
->label(__('filament.fields.video.uncen.name'))
->boolean(),
TextEntry::make(VideoModel::RELATION_AUDIO.'.'.AudioModel::ATTRIBUTE_FILENAME)
->label(__('filament.resources.singularLabel.audio'))
->placeholder('-')
->urlToRelated(Audio::class, VideoModel::RELATION_AUDIO),
])
->columns(3),
Section::make(__('filament.fields.base.file_properties'))
->schema([
TextEntry::make(VideoModel::ATTRIBUTE_BASENAME)
@@ -278,10 +315,8 @@ class Video extends BaseResource
TextEntry::make(VideoModel::ATTRIBUTE_MIMETYPE)
->label(__('filament.fields.video.mimetype.name')),
TextEntry::make(VideoModel::RELATION_AUDIO.'.'.AudioModel::ATTRIBUTE_FILENAME)
->label(__('filament.resources.singularLabel.audio'))
->placeholder('-')
->urlToRelated(Audio::class, VideoModel::RELATION_AUDIO),
TextEntry::make(VideoModel::ATTRIBUTE_RESOLUTION)
->label(__('filament.fields.video.resolution.name')),
])
->columns(3),
@@ -328,21 +363,17 @@ class Video extends BaseResource
NumberFilter::make(VideoModel::ATTRIBUTE_RESOLUTION)
->label(__('filament.fields.video.resolution.name')),
Filter::make(VideoModel::ATTRIBUTE_NC)
->label(__('filament.fields.video.nc.name'))
->checkbox(),
CheckboxFilter::make(VideoModel::ATTRIBUTE_NC)
->label(__('filament.fields.video.nc.name')),
Filter::make(VideoModel::ATTRIBUTE_SUBBED)
->label(__('filament.fields.video.subbed.name'))
->checkbox(),
CheckboxFilter::make(VideoModel::ATTRIBUTE_SUBBED)
->label(__('filament.fields.video.subbed.name')),
Filter::make(VideoModel::ATTRIBUTE_LYRICS)
->label(__('filament.fields.video.lyrics.name'))
->checkbox(),
CheckboxFilter::make(VideoModel::ATTRIBUTE_LYRICS)
->label(__('filament.fields.video.lyrics.name')),
Filter::make(VideoModel::ATTRIBUTE_UNCEN)
->label(__('filament.fields.video.uncen.name'))
->checkbox(),
CheckboxFilter::make(VideoModel::ATTRIBUTE_UNCEN)
->label(__('filament.fields.video.uncen.name')),
SelectFilter::make(VideoModel::ATTRIBUTE_OVERLAP)
->label(__('filament.fields.video.overlap.name'))