feat(shorts): flèches Préc./Suivant SUR la vidéo + embed Rumble en 16:9
CI / build-and-test (push) Canceled after 0s

- Flèches : elles vivaient EN DEHORS du cadre (et se fadaient avec le
  chrome auto-hide). Elles sont désormais posées dans le cadre, à mi-hauteur
  sur les bords, toujours visibles (classe `shorts-chrome` retirée), sur
  mobile comme sur bureau, et le stopPropagation protège le geste tactile.
- Rumble : la plateforme est16:9 mais n'expose ni largeur ni hauteur →
  l'embed tombait dans un cadre 9:16 (étiré / réduit). `isWideEmbed()`
  (pur + testé) décide de la boîte : dimensions connues => orientation
  réelle, sinon repli « rumble = paysage » ; la CSS `.embed-wide` rend une
  iframe 16:9 centrée (434x244 dans un cadre 434x771, mesuré). Les vidéos
  verticales (dimensions connues) gardent le cadre pleine hauteur.
- État vide : un fournisseur sans résultat laissait un cadre NOIR muet
  (ni squelette, ni message) — il affiche désormais « Aucun short à afficher
  pour ce fournisseur » + Réessayer.

Tests : test:shorts-catalog (3 cas isWideEmbed), test:kind, test:section,
test:search verts ; build ng OK ; sondage Playwright local : flèches dans
le cadre + navigation suivant/précédent réelle, boîte embed-wide 16:9
centrée, short vertical inchangé (iframe pleine hauteur), état vide affiché.
This commit is contained in:
2026-10-01 23:37:10 -04:00
parent 474de0570c
commit 4d1d44f4ee
5 changed files with 64 additions and 14 deletions
+10
View File
@@ -517,6 +517,16 @@ body {
}
}
/* Embed PAYSAGE dans le cadre vertical : la boîte de l'iframe suit le16:9
(sinon le lecteur étire ou réduit la vidéo dans un cadre 9:16). */
.shorts-frame iframe.embed-wide {
top: 50%;
bottom: auto;
height: auto;
aspect-ratio: 16 / 9;
transform: translateY(-50%);
}
/* --- Shorts immersive stage (façon YouTube) -------------------------------- */
/* Plein écran vertical : le cadre 9:16 flotte sur un fond d'ambiance tiré de
la vignette courante. `100dvh` (barres navigateur mobiles) avec repli. */