customize nova menu

This commit is contained in:
2023-11-23 16:27:14 +05:00
parent 5e425e5276
commit 83cc460638

View File

@@ -2,7 +2,18 @@
namespace App\Providers; namespace App\Providers;
use App\Nova\Resources\Branch\Branch;
use App\Nova\Resources\System\Location\Province;
use App\Nova\Resources\System\Roles\Permission;
use App\Nova\Resources\System\Roles\Role;
use App\Nova\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Gate; use Illuminate\Support\Facades\Gate;
use Laravel\Nova\Dashboards\Main;
use Laravel\Nova\Menu\Menu;
use Laravel\Nova\Menu\MenuGroup;
use Laravel\Nova\Menu\MenuItem;
use Laravel\Nova\Menu\MenuSection;
use Laravel\Nova\Nova; use Laravel\Nova\Nova;
use Laravel\Nova\NovaApplicationServiceProvider; use Laravel\Nova\NovaApplicationServiceProvider;
@@ -13,10 +24,13 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
*/ */
public function boot(): void public function boot(): void
{ {
parent::boot();
Nova::withBreadcrumbs(); Nova::withBreadcrumbs();
Nova::footer(fn () => view('vendor.nova.partials.footer')->render()); Nova::footer(fn () => view('vendor.nova.partials.footer')->render());
parent::boot(); $this->setupNavigation();
$this->setupUserNavigation();
} }
/** /**
@@ -50,7 +64,7 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
protected function dashboards(): array protected function dashboards(): array
{ {
return [ return [
new \App\Nova\Dashboards\Main, new Main,
]; ];
} }
@@ -69,4 +83,47 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
{ {
// //
} }
/**
* Setup user navigation (dropdown).
*/
public function setupUserNavigation(): void
{
Nova::userMenu(function (Request $request, Menu $menu) {
$menu->prepend(
MenuItem::make(
__('My Profile'),
sprintf('/resources/users/%s', $request->user()->id)
)
);
return $menu;
});
}
/**
* Setup navigation
*/
public function setupNavigation(): void
{
Nova::mainMenu(function (Request $request) {
return [
MenuSection::dashboard(Main::class)->icon('chart-bar'),
MenuSection::make(__('System'), [
MenuGroup::make(__('User'), [
MenuItem::resource(User::class),
MenuItem::resource(Role::class),
MenuItem::resource(Permission::class),
])->collapsable(),
MenuGroup::make(__('Location'), [
MenuItem::resource(Province::class),
MenuItem::resource(Branch::class),
])->collapsable(),
])->icon('cog')->collapsable(),
];
});
}
} }