Skip to content

Commit e203072

Browse files
Refactor widget schema handling in Page.php (#18373)
* Refactor widget schema handling in Page.php Signed-off-by: Kevin McKee <[email protected]> * cache widget schema components --------- Signed-off-by: Kevin McKee <[email protected]> Co-authored-by: Dan Harrin <[email protected]>
1 parent abf2a65 commit e203072

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

packages/panels/src/Pages/Dashboard.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,6 @@ public function getFiltersFormContentComponent(): Component
8989
public function getWidgetsContentComponent(): Component
9090
{
9191
return Grid::make($this->getColumns())
92-
->schema($this->getWidgetsSchemaComponents($this->getWidgets()));
92+
->schema(fn (): array => $this->getWidgetsSchemaComponents($this->getWidgets()));
9393
}
9494
}

packages/panels/src/Pages/Page.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,16 @@ abstract class Page extends BasePage
5858

5959
protected static bool $shouldRegisterNavigation = true;
6060

61+
/**
62+
* @var array<Component | Action | ActionGroup>
63+
*/
64+
protected array $cachedHeaderWidgetsSchemaComponents;
65+
66+
/**
67+
* @var array<Component | Action | ActionGroup>
68+
*/
69+
protected array $cachedFooterWidgetsSchemaComponents;
70+
6171
protected string $view = 'filament-panels::pages.page';
6272

6373
public function getLayout(): string
@@ -387,10 +397,10 @@ public function headerWidgets(Schema $schema): Schema
387397
->components([
388398
RenderHook::make(PanelsRenderHook::PAGE_HEADER_WIDGETS_START),
389399
Grid::make($this->getHeaderWidgetsColumns())
390-
->schema($widgets = $this->getWidgetsSchemaComponents($this->getHeaderWidgets())),
400+
->schema(fn (): array => $this->cachedHeaderWidgetsSchemaComponents ??= $this->getWidgetsSchemaComponents($this->getHeaderWidgets())),
391401
RenderHook::make(PanelsRenderHook::PAGE_HEADER_WIDGETS_END),
392402
])
393-
->hidden(empty($widgets));
403+
->hidden(fn (): bool => empty($this->cachedHeaderWidgetsSchemaComponents ??= $this->getWidgetsSchemaComponents($this->getHeaderWidgets())));
394404
}
395405

396406
public function footerWidgets(Schema $schema): Schema
@@ -399,10 +409,10 @@ public function footerWidgets(Schema $schema): Schema
399409
->components([
400410
RenderHook::make(PanelsRenderHook::PAGE_FOOTER_WIDGETS_START),
401411
Grid::make($this->getFooterWidgetsColumns())
402-
->schema($widgets = $this->getWidgetsSchemaComponents($this->getFooterWidgets())),
412+
->schema(fn (): array => $this->cachedFooterWidgetsSchemaComponents ??= $this->getWidgetsSchemaComponents($this->getFooterWidgets())),
403413
RenderHook::make(PanelsRenderHook::PAGE_FOOTER_WIDGETS_END),
404414
])
405-
->hidden(empty($widgets));
415+
->hidden(fn (): bool => empty($this->cachedFooterWidgetsSchemaComponents ??= $this->getWidgetsSchemaComponents($this->getFooterWidgets())));
406416
}
407417

408418
public function getDefaultTestingSchemaName(): ?string

0 commit comments

Comments
 (0)