diff --git a/packages/panels/src/Commands/MakeClusterCommand.php b/packages/panels/src/Commands/MakeClusterCommand.php index d75a007d48..ba605f2e79 100644 --- a/packages/panels/src/Commands/MakeClusterCommand.php +++ b/packages/panels/src/Commands/MakeClusterCommand.php @@ -45,7 +45,7 @@ class MakeClusterCommand extends Command $panel = $this->option('panel'); if ($panel) { - $panel = Filament::getPanel($panel); + $panel = Filament::getPanel($panel, isStrict: false); } if (! $panel) { diff --git a/packages/panels/src/Commands/MakePageCommand.php b/packages/panels/src/Commands/MakePageCommand.php index e6b0de1e36..eba4718fed 100644 --- a/packages/panels/src/Commands/MakePageCommand.php +++ b/packages/panels/src/Commands/MakePageCommand.php @@ -53,7 +53,7 @@ class MakePageCommand extends Command $panel = $this->option('panel'); if ($panel) { - $panel = Filament::getPanel($panel); + $panel = Filament::getPanel($panel, isStrict: false); } if (! $panel) { diff --git a/packages/panels/src/Commands/MakeRelationManagerCommand.php b/packages/panels/src/Commands/MakeRelationManagerCommand.php index 6ca7beb032..6ed68a7215 100644 --- a/packages/panels/src/Commands/MakeRelationManagerCommand.php +++ b/packages/panels/src/Commands/MakeRelationManagerCommand.php @@ -62,7 +62,7 @@ class MakeRelationManagerCommand extends Command $panel = $this->option('panel'); if ($panel) { - $panel = Filament::getPanel($panel); + $panel = Filament::getPanel($panel, isStrict: false); } if (! $panel) { diff --git a/packages/panels/src/Commands/MakeResourceCommand.php b/packages/panels/src/Commands/MakeResourceCommand.php index 2bc2575504..eaee587124 100644 --- a/packages/panels/src/Commands/MakeResourceCommand.php +++ b/packages/panels/src/Commands/MakeResourceCommand.php @@ -85,7 +85,7 @@ class MakeResourceCommand extends Command $panel = $this->option('panel'); if ($panel) { - $panel = Filament::getPanel($panel); + $panel = Filament::getPanel($panel, isStrict: false); } if (! $panel) { diff --git a/packages/panels/src/Commands/MakeThemeCommand.php b/packages/panels/src/Commands/MakeThemeCommand.php index d3cdca0303..51eebb42f6 100644 --- a/packages/panels/src/Commands/MakeThemeCommand.php +++ b/packages/panels/src/Commands/MakeThemeCommand.php @@ -45,7 +45,7 @@ class MakeThemeCommand extends Command $panel = $this->argument('panel'); if ($panel) { - $panel = Filament::getPanel($panel); + $panel = Filament::getPanel($panel, isStrict: false); } if (! $panel) { diff --git a/packages/panels/src/Facades/Filament.php b/packages/panels/src/Facades/Filament.php index 4221995139..06163a12e7 100644 --- a/packages/panels/src/Facades/Filament.php +++ b/packages/panels/src/Facades/Filament.php @@ -63,7 +63,7 @@ use Illuminate\Support\Facades\Facade; * @method static array getNavigationGroups() * @method static array getNavigationItems() * @method static array getPages() - * @method static Panel getPanel(?string $id = null) + * @method static Panel getPanel(?string $id = null, bool $isStrict = true) * @method static array getPanels() * @method static Plugin getPlugin(string $id) * @method static string | null getProfileUrl(array $parameters = []) diff --git a/packages/panels/src/FilamentManager.php b/packages/panels/src/FilamentManager.php index d20e2a41a6..978dad2b7b 100644 --- a/packages/panels/src/FilamentManager.php +++ b/packages/panels/src/FilamentManager.php @@ -279,9 +279,9 @@ class FilamentManager return $this->getCurrentPanel()->getPages(); } - public function getPanel(?string $id = null): Panel + public function getPanel(?string $id = null, bool $isStrict = true): Panel { - return app(PanelRegistry::class)->get($id); + return app(PanelRegistry::class)->get($id, $isStrict); } /** diff --git a/packages/panels/src/PanelRegistry.php b/packages/panels/src/PanelRegistry.php index d901636340..099260ee8f 100644 --- a/packages/panels/src/PanelRegistry.php +++ b/packages/panels/src/PanelRegistry.php @@ -44,9 +44,33 @@ class PanelRegistry ); } - public function get(?string $id = null): Panel + /** + * @throws NoDefaultPanelSetException + */ + public function get(?string $id = null, bool $isStrict = true): Panel { - return $this->panels[$id] ?? $this->getDefault(); + return $this->findPanel($id, $isStrict) ?? $this->getDefault(); + } + + protected function findPanel(?string $id = null, bool $isStrict = true): ?Panel + { + if ($id === null) { + return null; + } + + if ($isStrict) { + return $this->panels[$id] ?? null; + } + + $sanitizedPanels = []; + foreach ($this->panels as $key => $panel) { + $sanitizedKey = strtolower(str_replace(['-', '_'], '', $key)); + $sanitizedPanels[$sanitizedKey] = $panel; + } + + $sanitizedId = strtolower(str_replace(['-', '_'], '', $id)); + + return $sanitizedPanels[$sanitizedId] ?? null; } /** diff --git a/packages/spatie-laravel-settings-plugin/src/Commands/MakeSettingsPageCommand.php b/packages/spatie-laravel-settings-plugin/src/Commands/MakeSettingsPageCommand.php index cbf9d05eeb..a4a6f15494 100644 --- a/packages/spatie-laravel-settings-plugin/src/Commands/MakeSettingsPageCommand.php +++ b/packages/spatie-laravel-settings-plugin/src/Commands/MakeSettingsPageCommand.php @@ -50,7 +50,7 @@ class MakeSettingsPageCommand extends Command $panel = $this->option('panel'); if ($panel) { - $panel = Filament::getPanel($panel); + $panel = Filament::getPanel($panel, isStrict: false); } if (! $panel) { diff --git a/packages/widgets/src/Commands/MakeWidgetCommand.php b/packages/widgets/src/Commands/MakeWidgetCommand.php index 26228d84a9..d44ec4d716 100644 --- a/packages/widgets/src/Commands/MakeWidgetCommand.php +++ b/packages/widgets/src/Commands/MakeWidgetCommand.php @@ -81,7 +81,7 @@ class MakeWidgetCommand extends Command $panel = $this->option('panel'); if ($panel) { - $panel = Filament::getPanel($panel); + $panel = Filament::getPanel($panel, isStrict: false); } if (! $panel) {