Loader de scroll infini : styles réactivés, sans décalage de mise en page

Les règles `.scroll-spinner` et leurs keyframes étaient enfermées dans le
bloc `/* … */` legacy de `_category.scss` : Sass recopie ces commentaires
verbatim, les trois points n'avaient donc aucun style et restaient
invisibles pendant le chargement AJAX. Bloc sorti du commentaire (le
legacy reste en place), points allégés (5 px, gris) et marge haute
élargie.

Le modifieur `--reserve` réserve la place en permanence et n'anime que
l'opacité, au lieu de basculer `display` : plus de saut de mise en page
ni à l'apparition ni à la disparition. `infiniteScroll.js` bascule
désormais la classe `is-loading`.

Le `rootMargin` de l'observer passe à 700 px pour que la requête parte
plus tôt, et le loader de l'agenda est supprimé (markup + JS).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WQLwtNFa1LNaN7QTAbYkZx
This commit is contained in:
2026-09-10 01:16:20 +02:00
co-authored by Claude Opus 5
parent f663ff38f5
commit 167950c627
8 changed files with 102 additions and 17 deletions
+34
View File
@@ -1530,6 +1530,40 @@ footer {
}
}
*/
.scroll-spinner {
display: flex;
justify-content: center;
align-items: center;
gap: 0.35rem;
padding: 3.5rem 0 1.5rem; }
.scroll-spinner__dot {
width: 5px;
height: 5px;
border-radius: 50%;
background-color: #bbbbbb;
animation: scroll-spinner-bounce 1.2s infinite ease-in-out; }
.scroll-spinner__dot:nth-child(2) {
animation-delay: 0.2s; }
.scroll-spinner__dot:nth-child(3) {
animation-delay: 0.4s; }
.scroll-spinner--reserve {
opacity: 0;
pointer-events: none;
transition: opacity 0.15s ease; }
.scroll-spinner--reserve .scroll-spinner__dot {
animation-play-state: paused; }
.scroll-spinner--reserve.is-loading {
opacity: 1; }
.scroll-spinner--reserve.is-loading .scroll-spinner__dot {
animation-play-state: running; }
@keyframes scroll-spinner-bounce {
0%, 80%, 100% {
transform: scale(0.6);
opacity: 0.4; }
40% {
transform: scale(1);
opacity: 1; } }
.agenda-view-container {
display: none;
margin-top: 3rem; }