notes/quartz/components/scripts/callout.inline.ts

28 lines
1 KiB
TypeScript
Raw Normal View History

2023-06-17 13:08:06 -07:00
function toggleCallout(this: HTMLElement) {
const outerBlock = this.parentElement!
outerBlock.classList.toggle("is-collapsed")
const content = outerBlock.getElementsByClassName("callout-content")[0] as HTMLElement
if (!content) return
const collapsed = outerBlock.classList.contains("is-collapsed")
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) {
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")
content.style.gridTemplateRows = collapsed ? "0fr" : "1fr"
2023-06-17 13:08:06 -07:00
}
2023-06-17 14:36:06 -07:00
}
document.addEventListener("nav", setupCallout)