diff --git a/package.json b/package.json index 2c892f7c..d2bf6da7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "impro", - "version": "0.18.136", + "version": "0.18.137", "type": "module", "scripts": { "start": "rm -rf \"${BUILD_DIR:-build}\" && NODE_ENV=development eleventy --serve", diff --git a/src/js/components/animated-sidebar.js b/src/js/components/animated-sidebar.js index 7c59b62f..e518ac6a 100644 --- a/src/js/components/animated-sidebar.js +++ b/src/js/components/animated-sidebar.js @@ -82,12 +82,19 @@ class AnimatedSidebar extends Component { }); } - close({ restoreScroll = true } = {}) { + close({ restoreScroll = true, animate = true } = {}) { if (!this.isOpen) { return; } this._restoreScroll = restoreScroll; - return closeWithAnimation(this.querySelector("dialog.sidebar")); + const dialog = this.querySelector("dialog.sidebar"); + if (!animate) { + dialog.removeAttribute("data-closing"); + dialog.inert = false; + dialog.close(); + return; + } + return closeWithAnimation(dialog); } } diff --git a/src/js/templates/sidebar.template.js b/src/js/templates/sidebar.template.js index b7eee19f..662940be 100644 --- a/src/js/templates/sidebar.template.js +++ b/src/js/templates/sidebar.template.js @@ -5,6 +5,7 @@ import { formatLargeNumber, formatNumNotifications, enableLongPress, + raf, } from "/js/utils.js"; import { homeIconTemplate } from "/js/templates/icons/homeIcon.template.js"; import { userIconTemplate } from "/js/templates/icons/userIcon.template.js"; @@ -27,6 +28,27 @@ import "/js/components/animated-sidebar.js"; import "/js/components/app-icon.js"; import { WelcomeModal } from "/js/modals/welcome.modal.js"; +async function navigateFromSidebar(event, url) { + if ( + event.defaultPrevented || + event.metaKey || + event.ctrlKey || + event.shiftKey || + event.altKey || + event.button !== 0 + ) { + return; + } + // Close the sidebar before navigating so the open sidebar isn't + // captured in the ios safari screenshot + event.preventDefault(); + const sidebar = event.currentTarget.closest("animated-sidebar"); + sidebar.close({ restoreScroll: false, animate: false }); + await raf(); + await raf(); + return window.router.go(url); +} + function pluginSidebarItemTemplate({ entry }) { return html`