From 1a24b18719a10e1df153320ae0772af05e37c005 Mon Sep 17 00:00:00 2001 From: arifal Date: Fri, 12 Sep 2025 13:06:22 +0700 Subject: [PATCH] fix collapse sidebar when active --- .../views/layouts/partials/sidebar.blade.php | 72 +++++++++++++++++-- 1 file changed, 66 insertions(+), 6 deletions(-) diff --git a/resources/views/layouts/partials/sidebar.blade.php b/resources/views/layouts/partials/sidebar.blade.php index 7bbae35..14ddefe 100644 --- a/resources/views/layouts/partials/sidebar.blade.php +++ b/resources/views/layouts/partials/sidebar.blade.php @@ -17,10 +17,22 @@ @php + // Menentukan apakah sebuah menu (atau anaknya) aktif berdasarkan request('menu_id') + function isActiveMenu($menu, $currentId) { + if (!$currentId) return false; + if ((string)$menu->id === (string)$currentId) return true; + foreach ($menu->children as $child) { + if (isActiveMenu($child, $currentId)) return true; + } + return false; + } + function renderMenu($menus) { + $currentMenuId = request('menu_id'); foreach ($menus as $menu) { $collapseId = "sidebar-" . $menu->id; $hasChildren = $menu->children->count() > 0; + $isActive = isActiveMenu($menu, $currentMenuId); // Pastikan route tersedia dan boleh ditampilkan $menuUrl = '#'; @@ -28,14 +40,14 @@ if (Route::has($menu->url)) { $menuUrl = route($menu->url, ['menu_id' => $menu->id]); } else { - $menuUrl = $menu->url . '?menu_id=' . $menu->id; + $menuUrl = $menu->url . (strpos($menu->url, '?') !== false ? '&' : '?') . 'menu_id=' . $menu->id; } } - echo '