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

29 lines
953 B
TypeScript
Raw Normal View History

2023-06-18 05:08:06 +09:00
function toggleCallout(this: HTMLElement) {
const outerBlock = this.parentElement!
2023-07-05 10:26:11 +09:00
outerBlock.classList.toggle(`is-collapsed`)
const collapsed = outerBlock.classList.contains(`is-collapsed`)
2023-06-18 05:08:06 +09:00
const height = collapsed ? this.scrollHeight : outerBlock.scrollHeight
outerBlock.style.maxHeight = height + `px`
}
2023-06-18 06:36:06 +09:00
function setupCallout() {
2023-07-23 09:27:41 +09:00
const collapsible = document.getElementsByClassName(
`callout is-collapsible`,
) as HTMLCollectionOf<HTMLElement>
2023-06-18 05:08:06 +09:00
for (const div of collapsible) {
const title = div.firstElementChild
2023-06-18 06:36:06 +09:00
if (title) {
title.removeEventListener(`click`, toggleCallout)
title.addEventListener(`click`, toggleCallout)
const collapsed = div.classList.contains(`is-collapsed`)
const height = collapsed ? title.scrollHeight : div.scrollHeight
div.style.maxHeight = height + `px`
}
2023-06-18 05:08:06 +09:00
}
2023-06-18 06:36:06 +09:00
}
document.addEventListener(`nav`, setupCallout)
window.addEventListener(`resize`, setupCallout)