From 5f958726d906c8fbae9edb7cd6c8092293f4c291 Mon Sep 17 00:00:00 2001 From: dragonwocky <thedragonring.bod@gmail.com> Date: Tue, 23 Apr 2024 15:13:05 +1000 Subject: [PATCH] feat(scroller): add calendar scroll functionality to 'Today' button --- .../calendar-scroll/calendar-scroll.png | Bin 14519 -> 0 bytes src/extensions/calendar-scroll/client.css | 25 ----------- src/extensions/calendar-scroll/client.mjs | 41 ----------------- src/extensions/calendar-scroll/mod.json | 23 ---------- src/extensions/scroller/client.mjs | 42 +++++++++++++----- src/extensions/scroller/mod.json | 9 +++- 6 files changed, 39 insertions(+), 101 deletions(-) delete mode 100644 src/extensions/calendar-scroll/calendar-scroll.png delete mode 100644 src/extensions/calendar-scroll/client.css delete mode 100644 src/extensions/calendar-scroll/client.mjs delete mode 100644 src/extensions/calendar-scroll/mod.json diff --git a/src/extensions/calendar-scroll/calendar-scroll.png b/src/extensions/calendar-scroll/calendar-scroll.png deleted file mode 100644 index 42ab5209bd28b6a9c757cd3c836427507dac08ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14519 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 diff --git a/src/extensions/calendar-scroll/client.css b/src/extensions/calendar-scroll/client.css deleted file mode 100644 index 2cbdb62..0000000 --- a/src/extensions/calendar-scroll/client.css +++ /dev/null @@ -1,25 +0,0 @@ -/** - * notion-enhancer: calendar scroll - * (c) 2021 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/) - * (https://notion-enhancer.github.io/) under the MIT license - */ - -#enhancer--calendar-scroll { - background: var(--theme--ui_interactive-hover); - border: 1px solid transparent; - font-size: 14px; - color: var(--theme--text); - height: 24px; - border-radius: 3px; - line-height: 1.2; - padding: 0 0.5em; - margin-right: 5px; -} -#enhancer--calendar-scroll:focus, -#enhancer--calendar-scroll:hover { - background: transparent; - border: 1px solid var(--theme--ui_interactive-hover); -} -#enhancer--calendar-scroll:active { - background: var(--theme--ui_interactive-active); -} diff --git a/src/extensions/calendar-scroll/client.mjs b/src/extensions/calendar-scroll/client.mjs deleted file mode 100644 index a13851e..0000000 --- a/src/extensions/calendar-scroll/client.mjs +++ /dev/null @@ -1,41 +0,0 @@ -/** - * notion-enhancer: calendar scroll - * (c) 2021 dragonwocky <thedragonring.bod@gmail.com> (https://dragonwocky.me/) - * (https://notion-enhancer.github.io/) under the MIT license - */ - -'use strict'; - -const pageSelector = '.notion-page-content', - calendarSelector = '.notion-calendar-view:not([data-calendar-scroll])', - scrollerSelector = '.notion-frame > .notion-scroller', - toolbarSelector = '.notion-calendar-view > :first-child > :first-child > :first-child', - todaySelector = '.notion-calendar-view-day[style*="background:"]'; - -export default function ({ web }, db) { - const insertButton = () => { - document.querySelectorAll(calendarSelector).forEach(($calendar) => { - $calendar.dataset.calendarScroll = true; - const $page = document.querySelector(pageSelector); - if ($page) return; - const $toolbar = $calendar.querySelector(toolbarSelector), - $pageScroller = document.querySelector(scrollerSelector), - $scrollButton = web.html`<button id="enhancer--calendar-scroll">Scroll</button>`; - $scrollButton.addEventListener('click', async (event) => { - let $today = $calendar.querySelector(todaySelector); - if (!$today) { - $toolbar.children[4].click(); - await new Promise((res, rej) => setTimeout(res, 500)); - $today = $calendar.querySelector(todaySelector); - } - $pageScroller.scroll({ - top: $today.offsetParent.offsetParent.offsetTop + 70, - behavior: 'auto', - }); - }); - $toolbar.insertBefore($scrollButton, $toolbar.children[2]); - }); - }; - web.addDocumentObserver(insertButton, [calendarSelector]); - insertButton(); -} diff --git a/src/extensions/calendar-scroll/mod.json b/src/extensions/calendar-scroll/mod.json deleted file mode 100644 index 5dbd371..0000000 --- a/src/extensions/calendar-scroll/mod.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "calendar scroll", - "id": "b1c7db33-dfee-489a-a76c-0dd66f7ed29a", - "version": "0.2.0", - "description": "adds a button to jump down to the current week in fullpage/infinite-scroll calendars.", - "preview": "calendar-scroll.png", - "tags": ["extension", "shortcut"], - "authors": [ - { - "name": "dragonwocky", - "email": "thedragonring.bod@gmail.com", - "homepage": "https://dragonwocky.me/", - "avatar": "https://dragonwocky.me/avatar.jpg" - } - ], - "js": { - "client": ["client.mjs"] - }, - "css": { - "client": ["client.css"] - }, - "options": [] -} diff --git a/src/extensions/scroller/client.mjs b/src/extensions/scroller/client.mjs index c36e41c..f9e8c91 100644 --- a/src/extensions/scroller/client.mjs +++ b/src/extensions/scroller/client.mjs @@ -8,27 +8,30 @@ import { FloatingButton } from "../../core/islands/FloatingButton.mjs"; export default async (api, db) => { - const { html, addMutationListener } = api, - { addFloatingButton, removeFloatingButton } = api, + const { html, addFloatingButton, removeFloatingButton } = api, + { addMutationListener, removeMutationListener } = api, + jumpToWeek = await db.get("jumpToWeek"), + todayButton = `.notion-collection_view_page-block [aria-label="Previous Month"] + [role="button"]`, + todayBubble = `.notion-calendar-view-day[style*="background"]`, showScrollToBottom = await db.get("showScrollToBottom"), distanceUntilShown = await db.get("distanceUntilScrollToTopShown"), scrollUnit = await db.get("scrollDistanceUnit"), - behavior = (await db.get("smoothScrolling")) ? "smooth" : "auto", + scrollBehavior = (await db.get("smoothScrolling")) ? "smooth" : "auto", scroller = ".notion-frame .notion-scroller"; - let $scroller; - const scrollTo = (top) => $scroller?.scroll({ top, behavior }), + let $scroller, $todayButton; + const scrollTo = (top, behavior) => $scroller?.scroll({ top, behavior }), $scrollToBottom = html`<${FloatingButton} - onclick="${() => scrollTo($scroller.scrollHeight)}" + onclick="${() => scrollTo($scroller.scrollHeight, scrollBehavior)}" aria-label="Scroll to bottom" ><i class="i-chevrons-down" /> <//>`, $scrollToTop = html`<${FloatingButton} - onclick=${() => scrollTo(0)} + onclick=${() => scrollTo(0, scrollBehavior)} aria-label="Scroll to top" ><i class="i-chevrons-up" /> <//>`, - onScroll = () => { + onPageScrolled = () => { if (!$scroller) return; const { scrollTop, scrollHeight, clientHeight } = $scroller; let scrollDist = scrollTop; @@ -46,12 +49,29 @@ export default async (api, db) => { else addFloatingButton($scrollToBottom); } else removeFloatingButton($scrollToTop); }, + onTodayLoaded = () => { + const $bubble = document.querySelector(todayBubble); + if (!$bubble) return; + // calendar will jump anyway when pinning the current month, + // so ignore smooth scroll setting and jump direct to week + scrollTo($bubble.offsetParent.offsetParent.offsetTop + 57, "auto"); + removeMutationListener(onTodayLoaded); + }, + onTodayClicked = () => { + removeMutationListener(onTodayLoaded); + addMutationListener(todayBubble, onTodayLoaded); + }, setup = () => { if (document.contains($scroller)) return; $scroller = document.querySelector(scroller); - $scroller?.removeEventListener("scroll", onScroll); - $scroller?.addEventListener("scroll", onScroll); - onScroll(); + $scroller?.removeEventListener("scroll", onPageScrolled); + $scroller?.addEventListener("scroll", onPageScrolled); + onPageScrolled(); + if (jumpToWeek) { + $todayButton = document.querySelector(todayButton); + $todayButton?.removeEventListener("click", onTodayClicked); + $todayButton?.addEventListener("click", onTodayClicked); + } }; addMutationListener(scroller, setup, { subtree: false }); setup(); diff --git a/src/extensions/scroller/mod.json b/src/extensions/scroller/mod.json index 84f30b0..8e63b0a 100644 --- a/src/extensions/scroller/mod.json +++ b/src/extensions/scroller/mod.json @@ -21,7 +21,7 @@ { "type": "toggle", "key": "smoothScrolling", - "description": "Smoothly animates any scrolling triggered by this extension. Disable this to jump across pages instantly.", + "description": "Smoothly animates scrolling triggered by this extension. Disable this to jump across pages instantly.", "value": true }, { "type": "heading", "label": "Pages" }, @@ -42,6 +42,13 @@ "key": "scrollDistanceUnit", "description": "The unit to measure the above distance in, e.g. you may wish the button to appear at 90% down any page or only on pages that scroll down further than a certain number of pixels.", "values": ["Percent", "Pixels"] + }, + { "type": "heading", "label": "Calendars" }, + { + "type": "toggle", + "key": "jumpToWeek", + "description": "Jump to the current week (not just the current month) when clicking the 'Today' button on a full-page calendar view.", + "value": true } ], "clientScripts": ["client.mjs"]