{{-- v4.11.0 §A — LA BARRE D'ONGLETS DU BAS (mobile, < 1024 px). Ce qu'elle remplace : huit liens qui s'enroulaient en pastilles sur un téléphone, sans menu. Ici, la grammaire d'une application : quatre raccourcis fixés en bas de l'écran, plus « Plus » qui ouvre une feuille avec TOUS les autres modules. Aucun module n'est perdu — c'est la règle, et un test la tient. **Data-driven, entièrement.** Les quatre premiers sont les quatre PREMIERS MODULES ACTIFS de l'espace, dans l'ordre que l'exploitant a choisi ; aucun libellé, aucun module n'est écrit en dur. Un espace qui n'active que trois modules affiche trois onglets et pas de « Plus ». ⚠️ **La feuille est un `
`, et c'est un choix.** La page de lecture n'a AUCUN framework JS — pas d'Alpine, pas de Livewire : c'est la moitié de sa raison d'être (un maître d'ouvrage qui ouvre un lien sur un réseau lent ne télécharge pas le thème du back-office). Un `
` s'ouvre au clavier, se ferme au clavier, et fonctionne sans une ligne de script. Les quelques lignes ci-dessous n'ajoutent que le confort — clic à l'extérieur, Échap — et leur absence ne casse rien. ⚠️ Le même composant sert la page de lecture ET l'espace connecté : c'est ce qui fait que les deux se ressemblent, et qu'ils changeront ensemble. --}} @props(['modules', 'courant', 'lien', 'raccourcis' => 4]) @php $modules = array_values($modules); // Le module courant fait toujours partie des raccourcis : une barre qui n'indiquerait pas où // l'on est ne serait qu'une rangée d'icônes. $position = null; foreach ($modules as $index => $entree) { if ($entree['cle'] === $courant) { $position = $index; break; } } $visibles = array_slice($modules, 0, $raccourcis); $reste = array_slice($modules, $raccourcis); if ($position !== null && $position >= $raccourcis) { // Le courant prend la dernière place des raccourcis ; celui qu'il déloge passe sous « Plus ». $deloge = $visibles[$raccourcis - 1]; $visibles[$raccourcis - 1] = $modules[$position]; $reste = array_values(array_filter( array_merge([$deloge], $reste), fn (array $e): bool => $e['cle'] !== $modules[$position]['cle'], )); } @endphp {{-- La cale : sans elle, la barre fixe masquerait la fin de la page. --}}
@if ($reste !== [])
Tous les modules
@endif @if ($reste !== []) @once @endonce @endif