{# # MOLECULE: SHARE LINK MODAL # # Modale de partage public, commune à Slidia, Scormia et Serenia. Un seul # exemplaire par page : l'endpoint porte un `{uuid}` littéral, substitué par le # contrôleur Stimulus à l'ouverture — la même modale sert donc toutes les cartes # de la liste. # # | Paramètre | Type | Description | # |--------------|--------|---------------------------------------------------| # | endpoint | string | URL de mise à jour, avec {uuid} substitué par le JS| # | accentHex | string | Couleur du produit | # | withDownload | bool | Rend l'interrupteur « Autoriser le téléchargement »| # # `withDownload` vaut `true` PAR DÉFAUT : Slidia et Scormia incluent la molécule # sans le passer et doivent continuer d'afficher la case. Seul Serenia le met à # `false` — une discussion ne se télécharge pas. # # INTERRUPTEURS — À LIRE AVANT DE TOUCHER AU BALISAGE : # ce sont de VRAIS , masqués en `sr-only peer`, dont le # visuel (piste + pastille) est reconstruit avec les variantes `peer-checked:`. # Le contrôleur shared--share-link lit `.checked` et écoute `change` ; les # remplacer par des {# ── Interrupteur secondaire ──────────────────────────────────── #} {# `is not defined or withDownload`, et SURTOUT PAS `withDownload|default(true)` : le filtre `default` retombe sur sa valeur de repli pour toute valeur VIDE, pas seulement pour une variable indéfinie — et `false` est vide. Il rendait donc la case pour Serenia, qui passe pourtant explicitement `false`, tout en ayant l'air correct. Le test `is defined` est parfaitement toléré sur une variable indéfinie sous `strict_variables` (activé en test) : c'est même son emploi normal. Les trois appels incluent la molécule avec `only`, la variable est donc UNDEFINED chez Slidia et Scormia — la première branche préserve leur case, la seconde n'est évaluée que quand l'appelant s'est prononcé. #} {% if withDownload is not defined or withDownload %} {% endif %}