From ca17ad3793e0ecb935cd111f0385e1ad369c484d Mon Sep 17 00:00:00 2001 From: Dan Harrin Date: Mon, 3 Feb 2025 22:00:40 +0000 Subject: [PATCH] Refactor rector and static view properties --- .../Livewire/Panels/Navigation/ActiveIcon.php | 2 +- .../app/Livewire/Panels/Navigation/Badge.php | 2 +- .../Livewire/Panels/Navigation/BadgeColor.php | 2 +- .../Panels/Navigation/BadgeTooltip.php | 2 +- .../Livewire/Panels/Navigation/ChangeIcon.php | 2 +- .../Panels/Navigation/CustomItems.php | 2 +- .../Panels/Navigation/DisabledNavigation.php | 2 +- .../app/Livewire/Panels/Navigation/Group.php | 2 +- .../Panels/Navigation/GroupCollapsible.php | 2 +- .../Panels/Navigation/GroupNotCollapsible.php | 2 +- .../SidebarCollapsibleOnDesktop.php | 2 +- .../SidebarFullyCollapsibleOnDesktop.php | 2 +- .../Livewire/Panels/Navigation/SortItems.php | 2 +- .../Panels/Navigation/TopNavigation.php | 2 +- .../Navigation/UserMenuCustomization.php | 2 +- packages/forms/src/Components/FileUpload.php | 19 ++--- .../docs/02-resources/02-listing-records.md | 2 +- .../docs/02-resources/03-creating-records.md | 2 +- .../docs/02-resources/04-editing-records.md | 2 +- .../docs/02-resources/05-viewing-records.md | 2 +- .../panels/src/Auth/Pages/EditProfile.php | 4 +- packages/panels/src/Pages/BasePage.php | 4 +- packages/panels/src/Pages/Page.php | 2 +- packages/panels/src/Pages/SimplePage.php | 2 +- .../RelationManagers/RelationManager.php | 4 +- packages/panels/src/Widgets/AccountWidget.php | 2 +- .../panels/src/Widgets/FilamentInfoWidget.php | 2 +- .../src/Rector/SimpleMethodChangesRector.php | 27 +++----- .../Rector/SimplePropertyChangesRector.php | 69 ++++++++++++++----- packages/upgrade/src/rector.php | 10 +-- packages/widgets/src/ChartWidget.php | 2 +- packages/widgets/src/StatsOverviewWidget.php | 2 +- packages/widgets/src/TableWidget.php | 2 +- packages/widgets/src/Widget.php | 4 +- .../it_can_generate_a_page_class.snap | 2 +- ...an_generate_a_page_class_in_a_cluster.snap | 2 +- ...te_a_page_class_in_a_nested_directory.snap | 2 +- ...n_generate_a_page_class_in_a_resource.snap | 2 +- .../it_can_generate_a_page_class.snap | 2 +- ...an_generate_a_page_class_in_a_cluster.snap | 2 +- ...te_a_page_class_in_a_nested_directory.snap | 2 +- ...n_generate_a_page_class_in_a_resource.snap | 2 +- tests/src/Fixtures/Pages/Actions.php | 2 +- tests/src/Fixtures/Pages/Settings.php | 2 +- 44 files changed, 119 insertions(+), 94 deletions(-) diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/ActiveIcon.php b/docs-assets/app/app/Livewire/Panels/Navigation/ActiveIcon.php index f71fc17584..87edb81cd0 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/ActiveIcon.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/ActiveIcon.php @@ -8,7 +8,7 @@ use Filament\Support\Icons\Heroicon; class ActiveIcon extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/Badge.php b/docs-assets/app/app/Livewire/Panels/Navigation/Badge.php index 5e7b37820d..8795bc5f8a 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/Badge.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/Badge.php @@ -8,7 +8,7 @@ use Filament\Support\Icons\Heroicon; class Badge extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/BadgeColor.php b/docs-assets/app/app/Livewire/Panels/Navigation/BadgeColor.php index 6055f296a5..b5cdcede5a 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/BadgeColor.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/BadgeColor.php @@ -9,7 +9,7 @@ use Filament\Support\Icons\Heroicon; class BadgeColor extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/BadgeTooltip.php b/docs-assets/app/app/Livewire/Panels/Navigation/BadgeTooltip.php index 2f2bc98c52..0fb9fdeaf2 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/BadgeTooltip.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/BadgeTooltip.php @@ -8,7 +8,7 @@ use Filament\Support\Icons\Heroicon; class BadgeTooltip extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/ChangeIcon.php b/docs-assets/app/app/Livewire/Panels/Navigation/ChangeIcon.php index 7043557d4b..09ed748430 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/ChangeIcon.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/ChangeIcon.php @@ -8,7 +8,7 @@ use Filament\Support\Icons\Heroicon; class ChangeIcon extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/CustomItems.php b/docs-assets/app/app/Livewire/Panels/Navigation/CustomItems.php index 0c8d3fc26c..24bb6c976f 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/CustomItems.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/CustomItems.php @@ -9,7 +9,7 @@ use Filament\Support\Icons\Heroicon; class CustomItems extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/DisabledNavigation.php b/docs-assets/app/app/Livewire/Panels/Navigation/DisabledNavigation.php index a630971405..86e1b7816f 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/DisabledNavigation.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/DisabledNavigation.php @@ -6,7 +6,7 @@ use Filament\Pages\Page; class DisabledNavigation extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/Group.php b/docs-assets/app/app/Livewire/Panels/Navigation/Group.php index df4d85aacd..64e9cf192d 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/Group.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/Group.php @@ -8,7 +8,7 @@ use Filament\Support\Icons\Heroicon; class Group extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/GroupCollapsible.php b/docs-assets/app/app/Livewire/Panels/Navigation/GroupCollapsible.php index 695a5326b0..1dc2744cd1 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/GroupCollapsible.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/GroupCollapsible.php @@ -9,7 +9,7 @@ use Filament\Support\Icons\Heroicon; class GroupCollapsible extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/GroupNotCollapsible.php b/docs-assets/app/app/Livewire/Panels/Navigation/GroupNotCollapsible.php index 1ad70be6c1..0c9114000f 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/GroupNotCollapsible.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/GroupNotCollapsible.php @@ -9,7 +9,7 @@ use Filament\Support\Icons\Heroicon; class GroupNotCollapsible extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/SidebarCollapsibleOnDesktop.php b/docs-assets/app/app/Livewire/Panels/Navigation/SidebarCollapsibleOnDesktop.php index 208e77e108..ba3763121b 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/SidebarCollapsibleOnDesktop.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/SidebarCollapsibleOnDesktop.php @@ -8,7 +8,7 @@ use Filament\Support\Icons\Heroicon; class SidebarCollapsibleOnDesktop extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/SidebarFullyCollapsibleOnDesktop.php b/docs-assets/app/app/Livewire/Panels/Navigation/SidebarFullyCollapsibleOnDesktop.php index f1de6043ab..22ec8b3b15 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/SidebarFullyCollapsibleOnDesktop.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/SidebarFullyCollapsibleOnDesktop.php @@ -8,7 +8,7 @@ use Filament\Support\Icons\Heroicon; class SidebarFullyCollapsibleOnDesktop extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/SortItems.php b/docs-assets/app/app/Livewire/Panels/Navigation/SortItems.php index 241e520391..2829d25c17 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/SortItems.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/SortItems.php @@ -8,7 +8,7 @@ use Filament\Support\Icons\Heroicon; class SortItems extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/TopNavigation.php b/docs-assets/app/app/Livewire/Panels/Navigation/TopNavigation.php index 4f1138bd17..e590c1fb02 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/TopNavigation.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/TopNavigation.php @@ -9,7 +9,7 @@ use Filament\Support\Icons\Heroicon; class TopNavigation extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/docs-assets/app/app/Livewire/Panels/Navigation/UserMenuCustomization.php b/docs-assets/app/app/Livewire/Panels/Navigation/UserMenuCustomization.php index f78d6fd7e4..9ae77abee9 100644 --- a/docs-assets/app/app/Livewire/Panels/Navigation/UserMenuCustomization.php +++ b/docs-assets/app/app/Livewire/Panels/Navigation/UserMenuCustomization.php @@ -8,7 +8,7 @@ use Filament\Support\Icons\Heroicon; class UserMenuCustomization extends Page { - protected static string $view = 'livewire.panels.navigation.empty'; + protected string $view = 'livewire.panels.navigation.empty'; public function mount() { diff --git a/packages/forms/src/Components/FileUpload.php b/packages/forms/src/Components/FileUpload.php index 30677e613c..84a0efd28b 100644 --- a/packages/forms/src/Components/FileUpload.php +++ b/packages/forms/src/Components/FileUpload.php @@ -6,6 +6,7 @@ use Closure; use Exception; use Filament\Support\Concerns\HasAlignment; use Filament\Support\Concerns\HasExtraAlpineAttributes; +use Filament\Support\Enums\IconSize; use Filament\Support\Facades\FilamentIcon; use Filament\Support\Icons\Heroicon; use Illuminate\Support\Collection; @@ -529,51 +530,51 @@ class FileUpload extends BaseFileUpload ], [ 'label' => __('filament-forms::components.file_upload.editor.actions.zoom_in.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.zoom-in') ?? Heroicon::MagnifyingGlassPlus, $iconSizeClasses)->toHtml(), + 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.zoom-in') ?? Heroicon::MagnifyingGlassPlus->getIconForSize(IconSize::Medium), $iconSizeClasses)->toHtml(), 'alpineClickHandler' => 'editor.zoom(0.1)', ], [ 'label' => __('filament-forms::components.file_upload.editor.actions.zoom_out.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.zoom-out') ?? Heroicon::MagnifyingGlassMinus, $iconSizeClasses)->toHtml(), + 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.zoom-out') ?? Heroicon::MagnifyingGlassMinus->getIconForSize(IconSize::Medium), $iconSizeClasses)->toHtml(), 'alpineClickHandler' => 'editor.zoom(-0.1)', ], [ 'label' => __('filament-forms::components.file_upload.editor.actions.zoom_100.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.zoom-100') ?? Heroicon::ArrowsPointingOut, $iconSizeClasses)->toHtml(), + 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.zoom-100') ?? Heroicon::ArrowsPointingOut->getIconForSize(IconSize::Medium), $iconSizeClasses)->toHtml(), 'alpineClickHandler' => 'editor.zoomTo(1)', ], ], 'move' => [ [ 'label' => __('filament-forms::components.file_upload.editor.actions.move_left.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.move-left') ?? Heroicon::ArrowLeftCircle, $iconSizeClasses)->toHtml(), + 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.move-left') ?? Heroicon::ArrowLeftCircle->getIconForSize(IconSize::Medium), $iconSizeClasses)->toHtml(), 'alpineClickHandler' => 'editor.move(-10, 0)', ], [ 'label' => __('filament-forms::components.file_upload.editor.actions.move_right.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.move-right') ?? Heroicon::ArrowRightCircle, $iconSizeClasses)->toHtml(), + 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.move-right') ?? Heroicon::ArrowRightCircle->getIconForSize(IconSize::Medium), $iconSizeClasses)->toHtml(), 'alpineClickHandler' => 'editor.move(10, 0)', ], [ 'label' => __('filament-forms::components.file_upload.editor.actions.move_up.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.move-up') ?? Heroicon::ArrowUpCircle, $iconSizeClasses)->toHtml(), + 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.move-up') ?? Heroicon::ArrowUpCircle->getIconForSize(IconSize::Medium), $iconSizeClasses)->toHtml(), 'alpineClickHandler' => 'editor.move(0, -10)', ], [ 'label' => __('filament-forms::components.file_upload.editor.actions.move_down.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.move-down') ?? Heroicon::ArrowDownCircle, $iconSizeClasses)->toHtml(), + 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.move-down') ?? Heroicon::ArrowDownCircle->getIconForSize(IconSize::Medium), $iconSizeClasses)->toHtml(), 'alpineClickHandler' => 'editor.move(0, 10)', ], ], 'transform' => [ [ 'label' => __('filament-forms::components.file_upload.editor.actions.rotate_left.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.rotate-left') ?? Heroicon::ArrowUturnLeft, $iconSizeClasses)->toHtml(), + 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.rotate-left') ?? Heroicon::ArrowUturnLeft->getIconForSize(IconSize::Medium), $iconSizeClasses)->toHtml(), 'alpineClickHandler' => 'editor.rotate(-90)', ], [ 'label' => __('filament-forms::components.file_upload.editor.actions.rotate_right.label'), - 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.rotate-right') ?? Heroicon::ArrowUturnRight, $iconSizeClasses)->toHtml(), + 'iconHtml' => svg(FilamentIcon::resolve('forms::components.file-upload.editor.actions.rotate-right') ?? Heroicon::ArrowUturnRight->getIconForSize(IconSize::Medium), $iconSizeClasses)->toHtml(), 'alpineClickHandler' => 'editor.rotate(90)', ], [ diff --git a/packages/panels/docs/02-resources/02-listing-records.md b/packages/panels/docs/02-resources/02-listing-records.md index 0517b95384..9b87933fcd 100644 --- a/packages/panels/docs/02-resources/02-listing-records.md +++ b/packages/panels/docs/02-resources/02-listing-records.md @@ -147,7 +147,7 @@ public static function table(Table $table): Table For further customization opportunities, you can override the static `$view` property on the page class to a custom view in your app: ```php -protected static string $view = 'filament.resources.users.pages.list-users'; +protected string $view = 'filament.resources.users.pages.list-users'; ``` This assumes that you have created a view at `resources/views/filament/resources/users/pages/list-users.blade.php`. diff --git a/packages/panels/docs/02-resources/03-creating-records.md b/packages/panels/docs/02-resources/03-creating-records.md index e2c1f10427..0e314528b4 100644 --- a/packages/panels/docs/02-resources/03-creating-records.md +++ b/packages/panels/docs/02-resources/03-creating-records.md @@ -473,7 +473,7 @@ protected function getFormActions(): array For further customization opportunities, you can override the static `$view` property on the page class to a custom view in your app: ```php -protected static string $view = 'filament.resources.users.pages.create-user'; +protected string $view = 'filament.resources.users.pages.create-user'; ``` This assumes that you have created a view at `resources/views/filament/resources/users/pages/create-user.blade.php`. diff --git a/packages/panels/docs/02-resources/04-editing-records.md b/packages/panels/docs/02-resources/04-editing-records.md index da9eb8a5c7..1aeed1832b 100644 --- a/packages/panels/docs/02-resources/04-editing-records.md +++ b/packages/panels/docs/02-resources/04-editing-records.md @@ -387,7 +387,7 @@ public static function getRecordSubNavigation(Page $page): array For further customization opportunities, you can override the static `$view` property on the page class to a custom view in your app: ```php -protected static string $view = 'filament.resources.users.pages.edit-user'; +protected string $view = 'filament.resources.users.pages.edit-user'; ``` This assumes that you have created a view at `resources/views/filament/resources/users/pages/edit-user.blade.php`. diff --git a/packages/panels/docs/02-resources/05-viewing-records.md b/packages/panels/docs/02-resources/05-viewing-records.md index bedefc7c16..630a64ee82 100644 --- a/packages/panels/docs/02-resources/05-viewing-records.md +++ b/packages/panels/docs/02-resources/05-viewing-records.md @@ -191,7 +191,7 @@ public static function getRecordSubNavigation(Page $page): array For further customization opportunities, you can override the static `$view` property on the page class to a custom view in your app: ```php -protected static string $view = 'filament.resources.users.pages.view-user'; +protected string $view = 'filament.resources.users.pages.view-user'; ``` This assumes that you have created a view at `resources/views/filament/resources/users/pages/view-user.blade.php`. diff --git a/packages/panels/src/Auth/Pages/EditProfile.php b/packages/panels/src/Auth/Pages/EditProfile.php index c9a51cb199..d503ef2507 100644 --- a/packages/panels/src/Auth/Pages/EditProfile.php +++ b/packages/panels/src/Auth/Pages/EditProfile.php @@ -55,7 +55,7 @@ class EditProfile extends Page protected static bool $isDiscovered = false; - protected static string $view; + protected string $view; public function getLayout(): string { @@ -69,7 +69,7 @@ class EditProfile extends Page public function getView(): string { - return static::$view ?? 'filament-panels::auth.pages.edit-profile'; + return $this->view ?? 'filament-panels::auth.pages.edit-profile'; } public static function getLabel(): string diff --git a/packages/panels/src/Pages/BasePage.php b/packages/panels/src/Pages/BasePage.php index 7a0201a393..93aa8f41a1 100644 --- a/packages/panels/src/Pages/BasePage.php +++ b/packages/panels/src/Pages/BasePage.php @@ -32,7 +32,7 @@ abstract class BasePage extends Component implements HasActions, HasForms, HasIn protected ?string $subheading = null; - protected static string $view; + protected string $view; public static ?Closure $reportValidationErrorUsing = null; @@ -61,7 +61,7 @@ abstract class BasePage extends Component implements HasActions, HasForms, HasIn public function getView(): string { - return static::$view; + return $this->view; } public function getLayout(): string diff --git a/packages/panels/src/Pages/Page.php b/packages/panels/src/Pages/Page.php index 0317416e40..8b3bba86d8 100644 --- a/packages/panels/src/Pages/Page.php +++ b/packages/panels/src/Pages/Page.php @@ -56,7 +56,7 @@ abstract class Page extends BasePage protected static bool $shouldRegisterNavigation = true; - protected static string $view = 'filament-panels::pages.page'; + protected string $view = 'filament-panels::pages.page'; public function getLayout(): string { diff --git a/packages/panels/src/Pages/SimplePage.php b/packages/panels/src/Pages/SimplePage.php index 064ab5a706..1f17db50c7 100644 --- a/packages/panels/src/Pages/SimplePage.php +++ b/packages/panels/src/Pages/SimplePage.php @@ -7,7 +7,7 @@ abstract class SimplePage extends BasePage use Concerns\HasMaxWidth; use Concerns\HasTopbar; - protected static string $view = 'filament-panels::pages.simple'; + protected string $view = 'filament-panels::pages.simple'; protected static string $layout = 'filament-panels::components.layout.simple'; diff --git a/packages/panels/src/Resources/RelationManagers/RelationManager.php b/packages/panels/src/Resources/RelationManagers/RelationManager.php index dc4e1ae8df..f710111591 100644 --- a/packages/panels/src/Resources/RelationManagers/RelationManager.php +++ b/packages/panels/src/Resources/RelationManagers/RelationManager.php @@ -53,7 +53,7 @@ class RelationManager extends Component implements Actions\Contracts\HasActions, /** * @var view-string */ - protected static string $view = 'filament-panels::resources.relation-manager'; + protected string $view = 'filament-panels::resources.relation-manager'; #[Locked] public Model $ownerRecord; @@ -137,7 +137,7 @@ class RelationManager extends Component implements Actions\Contracts\HasActions, public function render(): View { - return view(static::$view, $this->getViewData()); + return view($this->view, $this->getViewData()); } /** diff --git a/packages/panels/src/Widgets/AccountWidget.php b/packages/panels/src/Widgets/AccountWidget.php index 814805a6bc..5ca7b5d14c 100644 --- a/packages/panels/src/Widgets/AccountWidget.php +++ b/packages/panels/src/Widgets/AccountWidget.php @@ -11,5 +11,5 @@ class AccountWidget extends Widget /** * @var view-string */ - protected static string $view = 'filament-panels::widgets.account-widget'; + protected string $view = 'filament-panels::widgets.account-widget'; } diff --git a/packages/panels/src/Widgets/FilamentInfoWidget.php b/packages/panels/src/Widgets/FilamentInfoWidget.php index 2f54db8ce8..b1ddd2e56c 100644 --- a/packages/panels/src/Widgets/FilamentInfoWidget.php +++ b/packages/panels/src/Widgets/FilamentInfoWidget.php @@ -11,5 +11,5 @@ class FilamentInfoWidget extends Widget /** * @var view-string */ - protected static string $view = 'filament-panels::widgets.filament-info-widget'; + protected string $view = 'filament-panels::widgets.filament-info-widget'; } diff --git a/packages/upgrade/src/Rector/SimpleMethodChangesRector.php b/packages/upgrade/src/Rector/SimpleMethodChangesRector.php index 95364d46f6..1e34b24837 100644 --- a/packages/upgrade/src/Rector/SimpleMethodChangesRector.php +++ b/packages/upgrade/src/Rector/SimpleMethodChangesRector.php @@ -4,6 +4,7 @@ namespace Filament\Upgrade\Rector; use Closure; use Filament\Pages\Dashboard; +use Filament\Pages\Page; use Filament\Resources\Pages\CreateRecord; use PhpParser\Modifiers; use PhpParser\Node; @@ -13,6 +14,7 @@ use PhpParser\Node\Param; use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\UnionType; +use PHPStan\Type\ObjectType; use Rector\Naming\VariableRenamer; use Rector\Rector\AbstractRector; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; @@ -38,6 +40,9 @@ class SimpleMethodChangesRector extends AbstractRector { return [ [ + 'class' => [ + Page::class, + ], 'changes' => [ 'getFooterWidgetsColumns' => function (ClassMethod $node) { $node->returnType = new UnionType([new Identifier('int'), new Identifier('array')]); @@ -54,7 +59,6 @@ class SimpleMethodChangesRector extends AbstractRector 'class' => [ CreateRecord::class, ], - 'classIdentifier' => 'extends', 'changes' => [ 'canCreateAnother' => function (ClassMethod $node) { $node->flags &= ~Modifiers::STATIC; @@ -65,7 +69,6 @@ class SimpleMethodChangesRector extends AbstractRector 'class' => [ Dashboard::class, ], - 'classIdentifier' => 'extends', 'changes' => [ 'getColumns' => function (ClassMethod $node) { $node->returnType = new UnionType([new Identifier('int'), new Identifier('array')]); @@ -136,22 +139,12 @@ class SimpleMethodChangesRector extends AbstractRector $change['class'] : [$change['class']]; - $classes = [ - ...array_map(fn (string $class): string => ltrim($class, '\\'), $classes), - ...array_map(fn (string $class): string => '\\' . ltrim($class, '\\'), $classes), - ]; + $classes = array_map(fn (string $class): string => ltrim($class, '\\'), $classes); - if ($change['classIdentifier'] === 'extends') { - return $class->extends && $this->isNames($class->extends, $classes); + foreach ($classes as $classToCheck) { + if ($this->isObjectType($class, new ObjectType($classToCheck))) { + return true; + } } - - if ($change['classIdentifier'] !== 'implements') { - return false; - } - - return (bool) count(array_filter( - $class->implements, - fn (Name $interface): bool => $this->isNames($interface, $classes), - )); } } diff --git a/packages/upgrade/src/Rector/SimplePropertyChangesRector.php b/packages/upgrade/src/Rector/SimplePropertyChangesRector.php index 321ee51a8e..ebdaa416b1 100644 --- a/packages/upgrade/src/Rector/SimplePropertyChangesRector.php +++ b/packages/upgrade/src/Rector/SimplePropertyChangesRector.php @@ -3,11 +3,20 @@ namespace Filament\Upgrade\Rector; use Closure; +use Filament\Auth\Pages\EditProfile; +use Filament\Forms\Contracts\HasForms; +use Filament\Pages\BasePage; +use Filament\Pages\Page; +use Filament\Pages\SimplePage; use Filament\Resources\RelationManagers\RelationManager; +use Filament\Resources\Resource; +use Filament\Widgets\Widget; +use PhpParser\Modifiers; use PhpParser\Node; use PhpParser\Node\Name; use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\Property; +use PHPStan\Type\ObjectType; use Rector\Rector\AbstractRector; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -25,15 +34,46 @@ class SimplePropertyChangesRector extends AbstractRector { return [ [ + 'class' => [ + BasePage::class, + RelationManager::class, + Widget::class, + ], 'changes' => [ - 'activeNavigationIcon' => function (Property $node) { - $node->type = new Name('string | \BackedEnum | null'); + 'view' => function (Property $node) { + $node->flags &= ~Modifiers::STATIC; }, + ], + ], + [ + 'class' => [ + SimplePage::class, + EditProfile::class, + ], + 'changes' => [ + 'maxWidth' => function (Property $node) { + $node->type = new Name('\Filament\Support\Enums\Width | string | null'); + }, + ], + ], + [ + 'class' => [ + BasePage::class, + ], + 'changes' => [ 'maxContentWidth' => function (Property $node) { $node->type = new Name('\Filament\Support\Enums\Width | string | null'); }, - 'maxWidth' => function (Property $node) { - $node->type = new Name('\Filament\Support\Enums\Width | string | null'); + ], + ], + [ + 'class' => [ + Resource::class, + Page::class, + ], + 'changes' => [ + 'activeNavigationIcon' => function (Property $node) { + $node->type = new Name('string | \BackedEnum | null'); }, 'navigationIcon' => function (Property $node) { $node->type = new Name('string | \BackedEnum | null'); @@ -47,7 +87,6 @@ class SimplePropertyChangesRector extends AbstractRector 'class' => [ RelationManager::class, ], - 'classIdentifier' => 'extends', 'changes' => [ 'icon' => function (Property $node) { $node->type = new Name('string | \BackedEnum | null'); @@ -119,22 +158,14 @@ class SimplePropertyChangesRector extends AbstractRector $change['class'] : [$change['class']]; - $classes = [ - ...array_map(fn (string $class): string => ltrim($class, '\\'), $classes), - ...array_map(fn (string $class): string => '\\' . ltrim($class, '\\'), $classes), - ]; + $classes = array_map(fn (string $class): string => ltrim($class, '\\'), $classes); - if ($change['classIdentifier'] === 'extends') { - return $class->extends && $this->isNames($class->extends, $classes); + foreach ($classes as $classToCheck) { + if ($this->isObjectType($class, new ObjectType($classToCheck))) { + return true; + } } - if ($change['classIdentifier'] !== 'implements') { - return false; - } - - return (bool) count(array_filter( - $class->implements, - fn (Name $interface): bool => $this->isNames($interface, $classes), - )); + return false; } } diff --git a/packages/upgrade/src/rector.php b/packages/upgrade/src/rector.php index 6221b276c4..7a7353b352 100644 --- a/packages/upgrade/src/rector.php +++ b/packages/upgrade/src/rector.php @@ -6,11 +6,6 @@ use Rector\Renaming\Rector\Name\RenameClassRector; use Rector\Renaming\Rector\String_\RenameStringRector; return static function (RectorConfig $rectorConfig): void { - $rectorConfig->rules([ - Rector\SimpleMethodChangesRector::class, - Rector\SimplePropertyChangesRector::class, - ]); - $rectorConfig->ruleWithConfiguration( RenameClassRector::class, // @todo Alphabetical @@ -260,4 +255,9 @@ return static function (RectorConfig $rectorConfig): void { 'filament-infolists::components.split' => 'filament-schemas::components.split', ], ); + + $rectorConfig->rules([ + Rector\SimpleMethodChangesRector::class, + Rector\SimplePropertyChangesRector::class, + ]); }; diff --git a/packages/widgets/src/ChartWidget.php b/packages/widgets/src/ChartWidget.php index 714de80aad..eb8622c942 100644 --- a/packages/widgets/src/ChartWidget.php +++ b/packages/widgets/src/ChartWidget.php @@ -39,7 +39,7 @@ abstract class ChartWidget extends Widget implements HasSchemas /** * @var view-string */ - protected static string $view = 'filament-widgets::chart-widget'; + protected string $view = 'filament-widgets::chart-widget'; public function mount(): void { diff --git a/packages/widgets/src/StatsOverviewWidget.php b/packages/widgets/src/StatsOverviewWidget.php index c717e5364f..c7d36c4e22 100644 --- a/packages/widgets/src/StatsOverviewWidget.php +++ b/packages/widgets/src/StatsOverviewWidget.php @@ -32,7 +32,7 @@ class StatsOverviewWidget extends Widget implements HasSchemas /** * @var view-string */ - protected static string $view = 'filament-widgets::stats-overview-widget'; + protected string $view = 'filament-widgets::stats-overview-widget'; public function content(Schema $schema): Schema { diff --git a/packages/widgets/src/TableWidget.php b/packages/widgets/src/TableWidget.php index 44d6db9da2..98cf9c8c4d 100644 --- a/packages/widgets/src/TableWidget.php +++ b/packages/widgets/src/TableWidget.php @@ -22,7 +22,7 @@ class TableWidget extends Widget implements Actions\Contracts\HasActions, Forms\ /** * @var view-string */ - protected static string $view = 'filament-widgets::table-widget'; + protected string $view = 'filament-widgets::table-widget'; /** * @deprecated Override the `table()` method to configure the table. diff --git a/packages/widgets/src/Widget.php b/packages/widgets/src/Widget.php index 6948426ad7..cd1f6519d4 100644 --- a/packages/widgets/src/Widget.php +++ b/packages/widgets/src/Widget.php @@ -17,7 +17,7 @@ abstract class Widget extends Component /** * @var view-string */ - protected static string $view; + protected string $view; /** * @var int | string | array @@ -70,7 +70,7 @@ abstract class Widget extends Component public function render(): View { - return view(static::$view, $this->getViewData()); + return view($this->view, $this->getViewData()); } /** diff --git a/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class.snap b/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class.snap index 51502d8d15..45ef6b5e32 100644 --- a/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class.snap +++ b/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class.snap @@ -6,5 +6,5 @@ use Filament\Pages\Page; class ManageSettings extends Page { - protected static string $view = 'filament.pages.manage-settings'; + protected string $view = 'filament.pages.manage-settings'; } diff --git a/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class_in_a_cluster.snap b/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class_in_a_cluster.snap index 3aee8c45a6..5b84f868d1 100644 --- a/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class_in_a_cluster.snap +++ b/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class_in_a_cluster.snap @@ -7,7 +7,7 @@ use Filament\Pages\Page; class ManageSettings extends Page { - protected static string $view = 'filament.clusters.site.pages.manage-settings'; + protected string $view = 'filament.clusters.site.pages.manage-settings'; protected static ?string $cluster = Site::class; } diff --git a/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class_in_a_nested_directory.snap b/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class_in_a_nested_directory.snap index b608486b1c..d6c5f66dcd 100644 --- a/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class_in_a_nested_directory.snap +++ b/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class_in_a_nested_directory.snap @@ -6,5 +6,5 @@ use Filament\Pages\Page; class ManageSettings extends Page { - protected static string $view = 'filament.pages.site.manage-settings'; + protected string $view = 'filament.pages.site.manage-settings'; } diff --git a/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class_in_a_resource.snap b/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class_in_a_resource.snap index 31a58f8522..a70b5fcf11 100644 --- a/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class_in_a_resource.snap +++ b/tests/.pest/snapshots/src/Panels/Commands/Legacy/LegacyMakePageCommandTest/it_can_generate_a_page_class_in_a_resource.snap @@ -9,5 +9,5 @@ class ManageUserPermissions extends Page { protected static string $resource = UserResource::class; - protected static string $view = 'filament.resources.user-resource.pages.manage-user-permissions'; + protected string $view = 'filament.resources.user-resource.pages.manage-user-permissions'; } diff --git a/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class.snap b/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class.snap index 51502d8d15..45ef6b5e32 100644 --- a/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class.snap +++ b/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class.snap @@ -6,5 +6,5 @@ use Filament\Pages\Page; class ManageSettings extends Page { - protected static string $view = 'filament.pages.manage-settings'; + protected string $view = 'filament.pages.manage-settings'; } diff --git a/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class_in_a_cluster.snap b/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class_in_a_cluster.snap index cb00421677..92693cf56e 100644 --- a/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class_in_a_cluster.snap +++ b/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class_in_a_cluster.snap @@ -7,7 +7,7 @@ use Filament\Pages\Page; class ManageSettings extends Page { - protected static string $view = 'filament.clusters.site.pages.manage-settings'; + protected string $view = 'filament.clusters.site.pages.manage-settings'; protected static ?string $cluster = SiteCluster::class; } diff --git a/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class_in_a_nested_directory.snap b/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class_in_a_nested_directory.snap index b608486b1c..d6c5f66dcd 100644 --- a/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class_in_a_nested_directory.snap +++ b/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class_in_a_nested_directory.snap @@ -6,5 +6,5 @@ use Filament\Pages\Page; class ManageSettings extends Page { - protected static string $view = 'filament.pages.site.manage-settings'; + protected string $view = 'filament.pages.site.manage-settings'; } diff --git a/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class_in_a_resource.snap b/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class_in_a_resource.snap index b644e40435..c660d30e07 100644 --- a/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class_in_a_resource.snap +++ b/tests/.pest/snapshots/src/Panels/Commands/MakePageCommandTest/it_can_generate_a_page_class_in_a_resource.snap @@ -9,5 +9,5 @@ class ManageUserPermissions extends Page { protected static string $resource = UserResource::class; - protected static string $view = 'filament.resources.users.pages.manage-user-permissions'; + protected string $view = 'filament.resources.users.pages.manage-user-permissions'; } diff --git a/tests/src/Fixtures/Pages/Actions.php b/tests/src/Fixtures/Pages/Actions.php index 9b5d6d864c..b5992e9620 100644 --- a/tests/src/Fixtures/Pages/Actions.php +++ b/tests/src/Fixtures/Pages/Actions.php @@ -11,7 +11,7 @@ use Filament\Support\Icons\Heroicon; class Actions extends Page { - protected static string $view = 'pages.actions'; + protected string $view = 'pages.actions'; protected function getHeaderActions(): array { diff --git a/tests/src/Fixtures/Pages/Settings.php b/tests/src/Fixtures/Pages/Settings.php index 0002dd08c3..0b32245b75 100644 --- a/tests/src/Fixtures/Pages/Settings.php +++ b/tests/src/Fixtures/Pages/Settings.php @@ -11,7 +11,7 @@ use Filament\Support\Icons\Heroicon; class Settings extends Page { - protected static string $view = 'pages.settings'; + protected string $view = 'pages.settings'; protected static string | BackedEnum | null $navigationIcon = Heroicon::OutlinedCog6Tooth;