[READ-ONLY] a fast, modern browser for the npm registry
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: allow Escape key to dismiss settings page

resolves https://github.com/npmx-dev/npmx.dev/issues/249

+28 -1
+28 -1
app/pages/settings.vue
··· 8 8 locales.value.map(l => (typeof l === 'string' ? { code: l, name: l } : l)), 9 9 ) 10 10 11 + /** 12 + * Check if it's safe to navigate back (previous page was same origin). 13 + * Uses document.referrer to verify the user came from this site. 14 + */ 15 + function canGoBack(): boolean { 16 + if (import.meta.server) return false 17 + if (window.history.length <= 1) return false 18 + const referrer = document.referrer 19 + if (!referrer) return false 20 + try { 21 + return new URL(referrer).origin === window.location.origin 22 + } catch { 23 + return false 24 + } 25 + } 26 + 11 27 function goBack() { 12 - router.back() 28 + if (canGoBack()) { 29 + router.back() 30 + } else { 31 + router.push('/') 32 + } 13 33 } 34 + 35 + onKeyStroke('Escape', e => { 36 + const target = e.target as HTMLElement 37 + if (!['INPUT', 'SELECT', 'TEXTAREA'].includes(target?.tagName)) { 38 + goBack() 39 + } 40 + }) 14 41 15 42 useSeoMeta({ 16 43 title: 'Settings - npmx',