2023-06-17 13:08:06 -07:00
|
|
|
function toggleCallout(this: HTMLElement) {
|
|
|
|
const outerBlock = this.parentElement!
|
2024-02-01 20:07:14 -08:00
|
|
|
outerBlock.classList.toggle("is-collapsed")
|
2025-04-26 11:05:51 -07:00
|
|
|
const content = outerBlock.getElementsByClassName("callout-content")[0] as HTMLElement
|
|
|
|
if (!content) return
|
2024-02-01 20:07:14 -08:00
|
|
|
const collapsed = outerBlock.classList.contains("is-collapsed")
|
2025-04-26 11:05:51 -07:00
|
|
|
content.style.gridTemplateRows = collapsed ? "0fr" : "1fr"
|
2023-06-17 13:08:06 -07:00
|
|
|
}
|
|
|
|
|
2023-06-17 14:36:06 -07:00
|
|
|
function setupCallout() {
|
2023-07-22 17:27:41 -07:00
|
|
|
const collapsible = document.getElementsByClassName(
|
|
|
|
`callout is-collapsible`,
|
|
|
|
) as HTMLCollectionOf<HTMLElement>
|
2023-06-17 13:08:06 -07:00
|
|
|
for (const div of collapsible) {
|
2025-04-26 11:05:51 -07:00
|
|
|
const title = div.getElementsByClassName("callout-title")[0] as HTMLElement
|
|
|
|
const content = div.getElementsByClassName("callout-content")[0] as HTMLElement
|
|
|
|
if (!title || !content) continue
|
2023-06-17 14:36:06 -07:00
|
|
|
|
2025-03-10 16:20:08 -07:00
|
|
|
title.addEventListener("click", toggleCallout)
|
|
|
|
window.addCleanup(() => title.removeEventListener("click", toggleCallout))
|
2023-06-17 14:36:06 -07:00
|
|
|
|
2025-03-10 16:20:08 -07:00
|
|
|
const collapsed = div.classList.contains("is-collapsed")
|
2025-04-26 11:05:51 -07:00
|
|
|
content.style.gridTemplateRows = collapsed ? "0fr" : "1fr"
|
2023-06-17 13:08:06 -07:00
|
|
|
}
|
2023-06-17 14:36:06 -07:00
|
|
|
}
|
|
|
|
|
2024-02-01 20:07:14 -08:00
|
|
|
document.addEventListener("nav", setupCallout)
|