Compare commits

...

2 Commits

Author SHA1 Message Date
5b615a6999 Merge pull request 'fix(glossaire): align reading follow top actions with glossary navigation' (#305) from fix/glossaire-reading-follow-relations-h2 into main
All checks were successful
Proposer Apply (Queue) / apply-proposer (push) Successful in 20s
CI / build-and-anchors (push) Successful in 42s
SMOKE / smoke (push) Successful in 9s
Deploy staging+live (annotations) / deploy (push) Successful in 8m16s
Reviewed-on: #305
2026-03-26 22:33:10 +01:00
99cf0947da fix(glossaire): align reading follow top actions with glossary navigation
All checks were successful
SMOKE / smoke (push) Successful in 5s
CI / build-and-anchors (push) Successful in 47s
CI / build-and-anchors (pull_request) Successful in 43s
2026-03-26 22:30:05 +01:00

View File

@@ -1478,6 +1478,33 @@ const WHOAMI_FORCE_LOCALHOST = (import.meta.env.PUBLIC_WHOAMI_FORCE_LOCALHOST ??
const h1 = reading.querySelector("h1");
const topChapterLabel =
isGlossaryEntryMode
? "Haut de la fiche"
: isGlossaryEdition
? "Haut de la page"
: "Haut du chapitre";
if (btnTopChapter) {
btnTopChapter.setAttribute("aria-label", topChapterLabel);
btnTopChapter.setAttribute("title", topChapterLabel);
}
function scrollToTopChapter(behavior = "smooth") {
if (isGlossaryEdition) {
window.scrollTo({ top: 0, behavior });
return;
}
if (h1) {
scrollToElWithOffset(h1, 12, behavior);
}
}
function getH2ScrollTarget(item) {
return item?.h2 || item?.anchor || item?.marker || null;
}
const h2Anchors = Array.from(reading.querySelectorAll(".details-anchor[id]"))
.map((s) => {
const d = (s.nextElementSibling && s.nextElementSibling.tagName === "DETAILS")
@@ -1701,7 +1728,12 @@ const WHOAMI_FORCE_LOCALHOST = (import.meta.env.PUBLIC_WHOAMI_FORCE_LOCALHOST ??
syncGlossaryFollowState(followEl.classList.contains("is-on") && followH > 0);
if (btnTopChapter) {
btnTopChapter.hidden = !(rfH1 && !rfH1.hidden);
const showTopChapter =
isGlossaryEdition
? Boolean(followEl.classList.contains("is-on"))
: Boolean(rfH1 && !rfH1.hidden);
btnTopChapter.hidden = !showTopChapter;
}
if (btnTopSection) {
@@ -1737,8 +1769,11 @@ const WHOAMI_FORCE_LOCALHOST = (import.meta.env.PUBLIC_WHOAMI_FORCE_LOCALHOST ??
if (rfH2) {
rfH2.addEventListener("click", () => {
if (!curH2) return;
openDetailsIfNeeded(curH2.anchor || curH2.h2 || curH2.marker);
scrollToElWithOffset(curH2.marker, 12, "smooth");
const target = getH2ScrollTarget(curH2);
if (!target) return;
openDetailsIfNeeded(target);
scrollToElWithOffset(target, 12, "smooth");
history.replaceState(null, "", `${window.location.pathname}#${curH2.id}`);
});
}
@@ -1754,15 +1789,18 @@ const WHOAMI_FORCE_LOCALHOST = (import.meta.env.PUBLIC_WHOAMI_FORCE_LOCALHOST ??
if (btnTopChapter) {
btnTopChapter.addEventListener("click", () => {
if (h1) scrollToElWithOffset(h1, 12, "smooth");
scrollToTopChapter("smooth");
});
}
if (btnTopSection) {
btnTopSection.addEventListener("click", () => {
if (!curH2) return;
openDetailsIfNeeded(curH2.anchor || curH2.h2 || curH2.marker);
scrollToElWithOffset(curH2.marker, 12, "smooth");
const target = getH2ScrollTarget(curH2);
if (!target) return;
openDetailsIfNeeded(target);
scrollToElWithOffset(target, 12, "smooth");
history.replaceState(null, "", `${window.location.pathname}#${curH2.id}`);
});
}