@php $level = $level ?? 0; $padding = $level * 25; $hasChildren = (!empty($val['permissions']) && $val['permissions']->count()) || !empty($val['children']); $rowId = 'menuRow_' . $val['id']; $collapseId = 'collapse_' . $val['id']; $parentCollapse = $parentCollapse ?? null; // Check if any direct permissions are assigned $hasDirectPermission = !empty($val['permissions']) && $val['permissions']->filter(fn($perm) => in_array($perm->id, $permission))->isNotEmpty(); // Check if any child menu items have permissions (recursive) $hasChildrenPermission = false; $checkChildPermissions = function($children) use(&$checkChildPermissions, $permission, &$hasChildrenPermission) { foreach($children as $child) { if(!empty($child['permissions']) && $child['permissions']->filter(fn($perm) => in_array($perm->id, $permission))->isNotEmpty()) { $hasChildrenPermission = true; return; } if(!empty($child['children'])) { $checkChildPermissions($child['children']); if($hasChildrenPermission) return; } } }; if(!empty($val['children'])) { $checkChildPermissions($val['children']); } $checkParent = $hasDirectPermission || $hasChildrenPermission; @endphp