feature: resource based filters

This commit is contained in:
Ryan Chandler
2021-03-10 23:52:20 +00:00
parent 28e3d0ddc9
commit e18005b28b
4 changed files with 34 additions and 9 deletions
+1 -1
View File
@@ -4,5 +4,5 @@ namespace Filament\Commands\Aliases;
class MakeFilterCommand extends \Filament\Commands\MakeFilterCommand
{
protected $signature = 'filament:filter {name}';
protected $signature = 'filament:filter {name} {--R|resource=}';
}
+14 -7
View File
@@ -11,7 +11,7 @@ class MakeFilterCommand extends Command
protected $description = 'Make a Filament filter class.';
protected $signature = 'make:filament-filter {name}';
protected $signature = 'make:filament-filter {name} {--R|resource=}';
public function handle()
{
@@ -20,12 +20,13 @@ class MakeFilterCommand extends Command
->trim('\\')
->trim(' ')
->replace('/', '\\');
$filterClass = (string) Str::of($filter)->afterLast('\\');
$filterNamespace = Str::of($filter)->contains('\\') ?
(string) Str::of($filter)->beforeLast('\\') :
'';
$resource = $this->option('resource');
$path = app_path(
(string) Str::of($filter)
->prepend('Filament\\Filters\\')
@@ -37,11 +38,17 @@ class MakeFilterCommand extends Command
$path,
])) return;
$this->copyStubToApp('Filter', $path, [
'class' => $filterClass,
'name' => $filter,
'namespace' => 'App\\Filament\\Filters' . ($filterNamespace !== '' ? "\\{$filterNamespace}" : ''),
]);
if ($resource === null) {
$this->copyStubToApp('Filter', $path, [
'class' => $filterClass,
'namespace' => 'App\\Filament\\Filters',
]);
} else {
$this->copyStubToApp('ResourceFilter', $path, [
'class' => $filterClass,
'namespace' => 'App\\Filament\\Filters',
]);
}
$this->info("Successfully created {$filter}!");
}
+1 -1
View File
@@ -2,7 +2,7 @@
namespace {{ namespace }};
use Filament\Resources\Tables\Filter;
use Filament\Tables\Filter;
class {{ class }} extends Filter
{
+18
View File
@@ -0,0 +1,18 @@
<?php
namespace {{ namespace }};
use Filament\Resources\Tables\Filter;
class {{ class }} extends Filter
{
protected function setUp()
{
$this->name('{{ name }}');
}
public function apply($query)
{
return $query;
}
}