From ee8c1dc96803fcd189d439080713b8a98616a40f Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Sat, 5 Apr 2025 11:38:50 -0700 Subject: [PATCH] chore(css): style tweaks for overflow --- quartz/components/scripts/popover.inline.ts | 14 +++++++------- quartz/components/styles/backlinks.scss | 4 ++-- quartz/components/styles/toc.scss | 19 ++++++------------- quartz/styles/base.scss | 3 ++- 4 files changed, 17 insertions(+), 23 deletions(-) diff --git a/quartz/components/scripts/popover.inline.ts b/quartz/components/scripts/popover.inline.ts index d02b0b725..56d2c966c 100644 --- a/quartz/components/scripts/popover.inline.ts +++ b/quartz/components/scripts/popover.inline.ts @@ -12,7 +12,7 @@ async function mouseEnterHandler( clearActivePopover() const link = this - link.id = `backlink-${randomIdNonSecure()}` + const id = randomIdNonSecure() if (link.dataset.noPopover === "true") { return } @@ -27,8 +27,8 @@ async function mouseEnterHandler( }) } - const prevPopoverElement = document.getElementById(`popover-${link.id.split("-")[1]}`) - const hasAlreadyBeenFetched = () => !!prevPopoverElement + const prevPopoverElement = document.getElementById(`popover-${id}`) + const hasAlreadyBeenFetched = () => !!document.getElementById(`popover-${id}`) // dont refetch if there's already a popover if (hasAlreadyBeenFetched()) { @@ -91,7 +91,7 @@ async function mouseEnterHandler( normalizeRelativeURLs(html, targetUrl) // prepend all IDs inside popovers to prevent duplicates html.querySelectorAll("[id]").forEach((el) => { - const targetID = `popover-${el.id}` + const targetID = `popover-internal-${el.id}` el.id = targetID }) const elts = [...html.getElementsByClassName("popover-hint")] @@ -101,12 +101,12 @@ async function mouseEnterHandler( } setPosition(popoverElement) - popoverElement.id = `popover-${link.id.split("-")[1]}` - popoverElement?.classList.add("active-popover") + popoverElement.id = `popover-${id}` + popoverElement.classList.add("active-popover") document.body.appendChild(popoverElement) if (hash !== "") { - const targetAnchor = hash.startsWith("#popover") ? hash : `#popover-${hash.slice(1)}` + const targetAnchor = `#popover-internal-${hash.slice(1)}` const heading = popoverInner.querySelector(targetAnchor) as HTMLElement | null if (heading) { // leave ~12px of buffer when scrolling to a heading diff --git a/quartz/components/styles/backlinks.scss b/quartz/components/styles/backlinks.scss index c8c862ff4..478e118d2 100644 --- a/quartz/components/styles/backlinks.scss +++ b/quartz/components/styles/backlinks.scss @@ -8,11 +8,11 @@ margin: 0; } - & > ul { + & > ul.overflow { list-style: none; padding: 0; margin: 0.5rem 0; - height: 6rem; + max-height: calc(100% - 2rem); overscroll-behavior: contain; & > li { diff --git a/quartz/components/styles/toc.scss b/quartz/components/styles/toc.scss index bf1bc223d..6a7723bdc 100644 --- a/quartz/components/styles/toc.scss +++ b/quartz/components/styles/toc.scss @@ -3,18 +3,11 @@ .toc { display: flex; flex-direction: column; - overflow-y: hidden; - min-height: 1.2rem; - flex: 0 1 auto; + min-height: 1.4rem; + flex: 0 0.5 auto; &:has(button.toc-header.collapsed) { - flex: 0 1 1.2rem; - } -} - -@media all and not ($mobile) { - .toc-header { - display: flex; + flex: 0 1 1.4rem; } } @@ -45,15 +38,15 @@ button.toc-header { } } -ul.toc-content { +ul.toc-content.overflow { list-style: none; position: relative; margin: 0.5rem 0; padding: 0; - height: 5rem; + max-height: calc(100% - 2rem); overscroll-behavior: contain; - list-style: none; + & > li > a { color: var(--dark); opacity: 0.35; diff --git a/quartz/styles/base.scss b/quartz/styles/base.scss index 16383d5b8..60d2d8fa7 100644 --- a/quartz/styles/base.scss +++ b/quartz/styles/base.scss @@ -238,6 +238,7 @@ a { padding: 0; & > * { flex: 1; + max-height: 24rem; } & > .toc { display: none; @@ -577,7 +578,7 @@ ol.overflow { clear: both; & > li.overflow-end { - height: 1rem; + height: 0.5rem; margin: 0; }