Jul 22 - Initial code

This commit is contained in:
2026-07-22 14:50:16 -04:00
commit ade7c5b33c
21 changed files with 1588 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
(function () {
"use strict";
var reduce = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
function collapse(panel) {
if (reduce) { panel.hidden = true; return; }
var h = panel.scrollHeight;
panel.style.height = h + "px";
// force reflow so the transition runs
panel.offsetHeight; // eslint-disable-line no-unused-expressions
panel.style.height = "0px";
panel.addEventListener("transitionend", function done() {
panel.hidden = true;
panel.style.height = "";
panel.removeEventListener("transitionend", done);
});
}
function expand(panel) {
panel.hidden = false;
if (reduce) return;
var h = panel.scrollHeight;
panel.style.height = "0px";
panel.offsetHeight; // reflow
panel.style.height = h + "px";
panel.addEventListener("transitionend", function done() {
panel.style.height = "";
panel.removeEventListener("transitionend", done);
});
}
document.querySelectorAll("[data-topic]").forEach(function (item) {
var head = item.querySelector(".topic__head");
var panel = item.querySelector(".topic__panel");
if (!head || !panel) return;
// enable CSS height transition
panel.style.transition = "height .42s cubic-bezier(.22,.61,.36,1)";
panel.style.overflow = "hidden";
head.addEventListener("click", function () {
var open = item.classList.toggle("is-open");
head.setAttribute("aria-expanded", open ? "true" : "false");
if (open) { expand(panel); } else { collapse(panel); }
});
});
})();