@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 @if($hasChildren) @else @endif {{ $val['menu'] ?? '' }} @if($val['permissions'] && $val['permissions']->count()) @foreach($val['permissions'] as $k => $p) {{ ucwords(str_replace('_', ' ', $p->p_type)) }} id, $permission) ? 'checked' : '' }} switch="none"/> @endforeach @endif @if($val['children']) @foreach($val['children'] as $child) @include('admin.permissions.manage-role-row', [ 'val' => $child, 'model' => $model, 'routePrefix' => $routePrefix, 'permission' => $permission, 'level' => $level + 1, 'parentCollapse' => $collapseId ]) @endforeach @endif @if($level === 0) @push('page_script') @endpush @endif