{{-- Rattachements — plusieurs projets et/ou éléments par note --}}
Rattachements
@foreach ($attachProjectIds as $projectId)
@php($project = \App\Models\Project::find($projectId))
@if ($project)
{{ $project->code }}
@if ($canEdit)
@endif
@endif
@endforeach
@foreach ($attachElementIds as $elementId)
@php($element = \App\Models\ProjectElement::find($elementId))
@if ($element)
{{ $element->code }}
@if ($canEdit)
@endif
@endif
@endforeach
@if ($canEdit)
{{--
`wire:key` n'est pas décoratif ici : le composant dropdown de
Filament ne pose `wire:ignore.self` sur son panneau que si une
clé est fournie. Sans ça, chaque `wire:click` interne
(bascule Projet/Élément) déclenche un re-render dont le
morphing DOM écrase le `display: block` inline posé par
`x-float` — et le menu se referme tout seul.
--}}
{{--
Les `wire:key` de ces deux boutons ne sont pas
cosmétiques : sans eux, le morphing Livewire les
détruit/recrée à chaque bascule. L'événement `click`
remonte alors depuis un élément qui n'est plus dans
le DOM, `x-float` conclut à un clic hors du panneau
et referme le menu. Avec une clé stable, morphdom
réutilise le même nœud (il met juste à jour ses
classes) et le menu reste ouvert.
--}}
{{-- Chaque ligne porte sa propre clé : sans elles, changer de
mode fait varier le nombre d'items, morphdom réapparie
les nœuds par position et en détruit une partie — ce qui
suffit à faire croire à `x-float` qu'on a cliqué hors du
panneau. --}}
@if ($attachSearchType === 'project')
@forelse ($this->searchAttachableProjects() as $project)
@empty
Aucun résultat.
@endforelse
@else
@forelse ($this->searchAttachableElements() as $element)
@empty