{{-- Un niveau de la cascade. Attend $n (nœud) et $pivot (vrai pour la racine : la personne se place alors AU MILIEU de ses unions). Les générations suivantes se déplient à la demande : dix branches ouvertes d'un coup dépassent largement l'écran et rendent la lecture impossible. --}} @php $pivot = $pivot ?? false; $unions = $n['unions'] ?? []; $avecEnfants = collect($unions)->filter(fn ($u) => ! empty($u['enfants']))->values(); @endphp
@if ($pivot && count($unions) > 1) @foreach (array_slice($unions, 0, 1) as $u) @include('partials.cascade-conjoint', ['u' => $u, 'cote' => 'gauche']) @endforeach @include('partials.cascade-carte', ['p' => $n, 'racine' => true]) @foreach (array_slice($unions, 1) as $u) @include('partials.cascade-conjoint', ['u' => $u, 'cote' => 'droite']) @endforeach @else @include('partials.cascade-carte', ['p' => $n, 'racine' => $n['racine']]) @foreach ($unions as $u) @include('partials.cascade-conjoint', ['u' => $u, 'cote' => 'droite']) @endforeach @endif
@if ($avecEnfants->isNotEmpty())
@foreach ($avecEnfants as $u)

{{ $u['nb_enfants'] }} enfant{{ $u['nb_enfants'] > 1 ? 's' : '' }} @if (count($unions) > 1 && $u['conjoint']) avec {{ $u['conjoint']['nom'] }} @endif

@php // On ouvre d'emblée la branche la plus fournie : elle // montre la cascade sur trois générations sans un clic. $rangOuvert = collect($u['enfants']) ->map(fn ($e, $i) => ['i' => $i, 'n' => collect($e['unions'] ?? [])->sum('nb_enfants')]) ->sortByDesc('n')->first(); $rangOuvert = ($rangOuvert && $rangOuvert['n'] > 0) ? $rangOuvert['i'] : null; @endphp
@foreach ($u['enfants'] as $rang => $enfant) @php $sousBranches = collect($enfant['unions'] ?? []) ->filter(fn ($su) => ! empty($su['enfants'])); // La première branche qui a des enfants s'ouvre seule : // la cascade se montre d'emblée sur trois générations. // Demande d'Alexandre : tout est déplié dès l'ouverture. // Le bouton « Tout replier » reste là pour resserrer la vue. $ouvrir = true; @endphp
{{-- La personne et son conjoint, toujours visibles --}}
@include('partials.cascade-carte', ['p' => $enfant, 'racine' => false]) @foreach ($enfant['unions'] as $su) @include('partials.cascade-conjoint', ['u' => $su, 'cote' => 'droite']) @endforeach
{{-- Sa propre descendance, repliée par défaut --}} @if ($sousBranches->isNotEmpty())
{{ $sousBranches->sum('nb_enfants') }} enfant{{ $sousBranches->sum('nb_enfants') > 1 ? 's' : '' }}
@foreach ($sousBranches as $su)
@foreach ($su['enfants'] as $petit)
@include('partials.cascade-carte', ['p' => $petit, 'racine' => false]) @foreach ($petit['unions'] as $pu) @include('partials.cascade-conjoint', ['u' => $pu, 'cote' => 'droite']) @endforeach
@endforeach
@endforeach
@endif
@endforeach
@endforeach
@endif