{{-- Filament Tree View - Tree Node Include ======================================= Renders a single tree node with drag-and-drop support. This view is recursive - it includes itself to render children. Variables: - $record: Eloquent model instance - $depth: Current nesting level (0 = root) - $maxDepth: Maximum depth allowed - $livewire: The parent Livewire component --}} @php // Check if this node has children $hasChildren = isset($record->children) && count($record->children) > 0; // Get tree instance $tree = $livewire->getTree(); // Get and filter record actions for this record $recordActions = array_reduce( $tree->getRecordActions(), function (array $carry, $action) use ($record): array { $action = $action->getClone(); if (! $action instanceof \Filament\Actions\BulkAction) { $action->record($record); } if ($action->isHidden()) { return $carry; } $carry[] = $action; return $carry; }, [], ); @endphp {{-- Tree Item Container --}}
{{-- Item Content - Using Filament table row classes --}}
{{-- Drag Handle --}} {{-- Collapse/Expand Toggle - Only shown if collapse is enabled --}}
@if ($tree->isCollapsible() && $hasChildren) @endif
{{-- Item Title/Content --}}
@php $fields = $tree->getVisibleFields($record); $leftFields = []; $rightFields = []; foreach ($fields as $field) { if ($field->getAlignment() === \Filament\Support\Enums\Alignment::End) { $rightFields[] = $field; } else { $leftFields[] = $field; } } @endphp {{-- Left-aligned fields grouped together --}} @if (count($leftFields) > 0)
@foreach ($leftFields as $field)
{!! $field->render($record) !!}
@endforeach
@endif {{-- Right-aligned fields --}} @if (count($rightFields) > 0)
@foreach ($rightFields as $field)
{!! $field->render($record) !!}
@endforeach
@endif
{{-- Record Actions --}} @if (count($recordActions))
@foreach ($recordActions as $action) {{ $action }} @endforeach
@endif
{{-- Children (Recursive) --}} @if ($hasChildren && $livewire->isExpanded($record->id))
@foreach ($record->children as $child) @include('filament-tree-view::components.tree-node', [ 'record' => $child, 'depth' => $depth + 1, 'maxDepth' => $maxDepth, 'livewire' => $livewire ]) @endforeach
@endif