diff --git a/extension/repo/bypass-preview@cb6fd684-f113-4a7a-9423-8f0f0cff069f/client.css b/extension/repo/bypass-preview@cb6fd684-f113-4a7a-9423-8f0f0cff069f/client.css index 85d00ad..7cf79f8 100644 --- a/extension/repo/bypass-preview@cb6fd684-f113-4a7a-9423-8f0f0cff069f/client.css +++ b/extension/repo/bypass-preview@cb6fd684-f113-4a7a-9423-8f0f0cff069f/client.css @@ -1,5 +1,5 @@ /* - * notion-enhancer core: bypass-preview + * notion-enhancer: bypass-preview * (c) 2021 dragonwocky (https://dragonwocky.me/) * (https://notion-enhancer.github.io/) under the MIT license */ diff --git a/extension/repo/calendar-scroll@b1c7db33-dfee-489a-a76c-0dd66f7ed29a/client.css b/extension/repo/calendar-scroll@b1c7db33-dfee-489a-a76c-0dd66f7ed29a/client.css new file mode 100644 index 0000000..310c6f9 --- /dev/null +++ b/extension/repo/calendar-scroll@b1c7db33-dfee-489a-a76c-0dd66f7ed29a/client.css @@ -0,0 +1,21 @@ +/* + * notion-enhancer: calendar-scroll + * (c) 2021 dragonwocky (https://dragonwocky.me/) + * (https://notion-enhancer.github.io/) under the MIT license + */ + +#calendar-scroll-to-week { + background: var(--theme--button_hover); + border: 1px solid transparent; + font-size: var(--theme--font_label-size); + color: var(--theme--text); + height: 24px; + border-radius: 3px; + line-height: 1.2; + padding: 0 0.5em; + margin-right: 5px; +} +#calendar-scroll-to-week:hover { + background: transparent; + border: 1px solid var(--theme--button_hover); +} diff --git a/extension/repo/calendar-scroll@b1c7db33-dfee-489a-a76c-0dd66f7ed29a/client.js b/extension/repo/calendar-scroll@b1c7db33-dfee-489a-a76c-0dd66f7ed29a/client.js new file mode 100644 index 0000000..d442e06 --- /dev/null +++ b/extension/repo/calendar-scroll@b1c7db33-dfee-489a-a76c-0dd66f7ed29a/client.js @@ -0,0 +1,64 @@ +/* + * notion-enhancer core: bypass-preview + * (c) 2021 dragonwocky (https://dragonwocky.me/) + * (https://notion-enhancer.github.io/) under the MIT license + */ + +'use strict'; + +import { web } from '../../api.js'; + +const $button = web.createElement( + web.html`` +); +$button.addEventListener('click', async (event) => { + let $day = document.querySelector('.notion-calendar-view-day[style*="background:"]'); + while (!$day) { + const $toolbar = document.querySelector( + '.notion-calendar-view > :first-child > :first-child > :first-child' + ), + year = +$toolbar.children[0].innerText.split(' ')[1], + month = { + 'January': 0, + 'February': 1, + 'March': 2, + 'April': 3, + 'May': 4, + 'June': 5, + 'July': 6, + 'August': 7, + 'September': 8, + 'October': 9, + 'November': 10, + 'December': 11, + }[$toolbar.children[0].innerText.split(' ')[0]], + now = new Date(); + switch (true) { + case now.getFullYear() < year: + case now.getFullYear() === year && now.getMonth() < month: + $toolbar.children[3].click(); + break; + case now.getFullYear() > year: + case now.getFullYear() === year && now.getMonth() > month: + $toolbar.children[5].click(); + break; + default: + await new Promise((res, rej) => requestAnimationFrame(res)); + $day = document.querySelector('.notion-calendar-view-day[style*="background:"]'); + } + await new Promise((res, rej) => requestAnimationFrame(res)); + } + const $scroller = document.querySelector('.notion-frame .notion-scroller'); + $scroller.scroll({ + top: $day.offsetParent.offsetParent.offsetTop + 70, + behavior: 'auto', + }); +}); + +web.addDocumentObserver((event) => { + if (document.contains($button)) return; + const toolbar = document.querySelector( + '.notion-calendar-view > :first-child > :first-child > :first-child' + ); + if (toolbar) toolbar.insertBefore($button, toolbar.children[2]); +}); diff --git a/extension/repo/calendar-scroll@b1c7db33-dfee-489a-a76c-0dd66f7ed29a/mod.json b/extension/repo/calendar-scroll@b1c7db33-dfee-489a-a76c-0dd66f7ed29a/mod.json new file mode 100644 index 0000000..427ec93 --- /dev/null +++ b/extension/repo/calendar-scroll@b1c7db33-dfee-489a-a76c-0dd66f7ed29a/mod.json @@ -0,0 +1,21 @@ +{ + "name": "calendar-scroll", + "id": "b1c7db33-dfee-489a-a76c-0dd66f7ed29a", + "description": "add a button to scroll down to the current week in fullpage/infinite-scroll calendars.", + "version": "0.2.0", + "tags": ["extension", "shortcut"], + "authors": [ + { + "name": "dragonwocky", + "email": "thedragonring.bod@gmail.com", + "url": "https://dragonwocky.me/", + "icon": "https://dragonwocky.me/avatar.jpg" + } + ], + "js": { + "client": ["client.js"] + }, + "css": { + "client": ["client.css"] + } +} diff --git a/extension/repo/menu@a6621988-551d-495a-97d8-3c568bca2e9e/router.js b/extension/repo/menu@a6621988-551d-495a-97d8-3c568bca2e9e/router.js index 280fca1..d9b9c15 100644 --- a/extension/repo/menu@a6621988-551d-495a-97d8-3c568bca2e9e/router.js +++ b/extension/repo/menu@a6621988-551d-495a-97d8-3c568bca2e9e/router.js @@ -56,12 +56,14 @@ function navigator(event) { export async function load(force = false) { const $container = document.querySelector('main'), search = getSearch(), - fallbackView = () => + fallbackView = () => { window.history.replaceState( { search: `?view=${defaultView}`, hash: '' }, null, `?view=${defaultView}` ); + return load(); + }; if (force || !search.get('view') || document.body.dataset.view !== search.get('view')) { if (views.get(search.get('view'))) { const $body = await (views.get(search.get('view')) || (() => void 0))(); diff --git a/extension/repo/registry.json b/extension/repo/registry.json index def9a6d..4aaac80 100644 --- a/extension/repo/registry.json +++ b/extension/repo/registry.json @@ -2,5 +2,6 @@ "menu@a6621988-551d-495a-97d8-3c568bca2e9e", "theming@0f0bf8b6-eae6-4273-b307-8fc43f2ee082", "tweaks@5174a483-c88d-4bf8-a95f-35cd330b76e2", - "bypass-preview@cb6fd684-f113-4a7a-9423-8f0f0cff069f" + "bypass-preview@cb6fd684-f113-4a7a-9423-8f0f0cff069f", + "calendar-scroll@b1c7db33-dfee-489a-a76c-0dd66f7ed29a" ] diff --git a/extension/repo/theming@0f0bf8b6-eae6-4273-b307-8fc43f2ee082/mod.json b/extension/repo/theming@0f0bf8b6-eae6-4273-b307-8fc43f2ee082/mod.json index f9e0c71..5913eaa 100644 --- a/extension/repo/theming@0f0bf8b6-eae6-4273-b307-8fc43f2ee082/mod.json +++ b/extension/repo/theming@0f0bf8b6-eae6-4273-b307-8fc43f2ee082/mod.json @@ -14,7 +14,7 @@ ], "css": { "frame": ["variables.css"], - "client": ["variables.css", "client.css", "prism.css"], + "client": ["variables.css", "prism.css"], "menu": ["variables.css", "prism.css"] } }