From 9e2573b09c2bcdd2a65f0dd47a10756ab922a898 Mon Sep 17 00:00:00 2001 From: Yurij Finiv Date: Fri, 25 Sep 2026 23:44:41 +0300 Subject: [PATCH 1/3] Support custom layout route overrides --- src/Components/BaseLayout.php | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Components/BaseLayout.php b/src/Components/BaseLayout.php index 30c737c..9da7b08 100644 --- a/src/Components/BaseLayout.php +++ b/src/Components/BaseLayout.php @@ -10,9 +10,12 @@ class BaseLayout extends LazyComponent { public array $routes = []; - public function __construct() + public function __construct(?array $routes = null) { - $this->routes = GenerateRoute::make()->generateRoutes(); + $this->routes = array_replace( + GenerateRoute::make()->generateRoutes(), + $routes ?? [], + ); } public function render(): \Closure|View From 2e5ef8477922b634bc7836bedb918b7d875e0993 Mon Sep 17 00:00:00 2001 From: Yurij Finiv Date: Fri, 25 Sep 2026 23:44:43 +0300 Subject: [PATCH 2/3] Declare layout routes as a component prop --- resources/views/layout.blade.php | 1 + 1 file changed, 1 insertion(+) diff --git a/resources/views/layout.blade.php b/resources/views/layout.blade.php index df1ba97..5ce94d9 100644 --- a/resources/views/layout.blade.php +++ b/resources/views/layout.blade.php @@ -10,6 +10,7 @@ 'scripts' => '', 'noscript' => '', 'menu' => '', + 'routes' => [], ]) @use('Step2dev\LazyMenu\Facades\Menu') Date: Fri, 25 Sep 2026 23:45:27 +0300 Subject: [PATCH 3/3] Add layout route override regression tests --- tests/Feature/LayoutRoutesTest.php | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 tests/Feature/LayoutRoutesTest.php diff --git a/tests/Feature/LayoutRoutesTest.php b/tests/Feature/LayoutRoutesTest.php new file mode 100644 index 0000000..ed18362 --- /dev/null +++ b/tests/Feature/LayoutRoutesTest.php @@ -0,0 +1,30 @@ + [ + 'url' => 'https://example.com/article', + 'target' => '_blank', + ], + ]); + + expect($layout->routes) + ->toHaveKeys(['index', 'create', 'show', 'edit', 'destroy']) + ->and($layout->routes['show']) + ->toBe([ + 'url' => 'https://example.com/article', + 'target' => '_blank', + ]); +}); + +it('declares routes as a blade prop so custom route attributes are not unset', function (): void { + $view = file_get_contents(__DIR__.'/../../resources/views/layout.blade.php'); + + expect($view) + ->toBeString() + ->toContain("'routes' => []"); +});