Jul 22 - Initial code
This commit is contained in:
@@ -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); }
|
||||
});
|
||||
});
|
||||
})();
|
||||
Reference in New Issue
Block a user