Update sidebar unit grouping and apply layout/page updates
This commit is contained in:
@@ -265,6 +265,7 @@
|
|||||||
let isMobileHeader = false;
|
let isMobileHeader = false;
|
||||||
let theme: ThemeMode = 'dark';
|
let theme: ThemeMode = 'dark';
|
||||||
let selectedPaletteIndex = 0;
|
let selectedPaletteIndex = 0;
|
||||||
|
let savedScrollRestoration: ScrollRestoration | null = null;
|
||||||
$: isHomepage = $page.url.pathname === '/';
|
$: isHomepage = $page.url.pathname === '/';
|
||||||
$: if (isHomepage && (sidebarOpen || headerSearchOpen)) {
|
$: if (isHomepage && (sidebarOpen || headerSearchOpen)) {
|
||||||
sidebarOpen = false;
|
sidebarOpen = false;
|
||||||
@@ -326,14 +327,30 @@
|
|||||||
document.head.appendChild(script);
|
document.head.appendChild(script);
|
||||||
};
|
};
|
||||||
|
|
||||||
afterNavigate(() => {
|
const scrollToTop = () => {
|
||||||
|
if (!browser) return;
|
||||||
|
window.scrollTo({ top: 0, behavior: 'auto' });
|
||||||
|
};
|
||||||
|
|
||||||
|
afterNavigate(({ from, to, type }) => {
|
||||||
sidebarOpen = false;
|
sidebarOpen = false;
|
||||||
headerSearchOpen = false;
|
headerSearchOpen = false;
|
||||||
|
|
||||||
|
if (!browser) return;
|
||||||
|
if (type === 'popstate') return;
|
||||||
|
if (!from || !to) return;
|
||||||
|
if (from.url.pathname === to.url.pathname) return;
|
||||||
|
|
||||||
|
scrollToTop();
|
||||||
});
|
});
|
||||||
|
|
||||||
onMount(() => {
|
onMount(() => {
|
||||||
if (!browser) return;
|
if (!browser) return;
|
||||||
const appWindow = window as WindowWithAnalytics;
|
const appWindow = window as WindowWithAnalytics;
|
||||||
|
if ('scrollRestoration' in window.history) {
|
||||||
|
savedScrollRestoration = window.history.scrollRestoration;
|
||||||
|
window.history.scrollRestoration = 'manual';
|
||||||
|
}
|
||||||
let idleCallbackId: number | null = null;
|
let idleCallbackId: number | null = null;
|
||||||
let fallbackTimeoutId: number | null = null;
|
let fallbackTimeoutId: number | null = null;
|
||||||
|
|
||||||
@@ -411,6 +428,9 @@
|
|||||||
window.clearTimeout(fallbackTimeoutId);
|
window.clearTimeout(fallbackTimeoutId);
|
||||||
}
|
}
|
||||||
window.removeEventListener('keydown', handleEscape);
|
window.removeEventListener('keydown', handleEscape);
|
||||||
|
if (savedScrollRestoration !== null) {
|
||||||
|
window.history.scrollRestoration = savedScrollRestoration;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if ('addEventListener' in mediaQuery) {
|
if ('addEventListener' in mediaQuery) {
|
||||||
|
|||||||
@@ -1,8 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Calculator from '$lib/components/Calculator.svelte';
|
import Calculator from '$lib/components/Calculator.svelte';
|
||||||
import { afterNavigate } from '$app/navigation';
|
|
||||||
import { browser } from '$app/environment';
|
|
||||||
import { onMount } from 'svelte';
|
|
||||||
import type { PageData } from './$types';
|
import type { PageData } from './$types';
|
||||||
import { buildSeoMeta, canonicalUrl, SITE_NAME, SITE_URL, toJsonLd } from '$lib/seo';
|
import { buildSeoMeta, canonicalUrl, SITE_NAME, SITE_URL, toJsonLd } from '$lib/seo';
|
||||||
|
|
||||||
@@ -56,15 +53,6 @@
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
afterNavigate(() => {
|
|
||||||
if (!browser) return;
|
|
||||||
window.scrollTo({ top: 0 });
|
|
||||||
});
|
|
||||||
|
|
||||||
onMount(() => {
|
|
||||||
if (!browser) return;
|
|
||||||
window.scrollTo({ top: 0 });
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:head>
|
<svelte:head>
|
||||||
|
|||||||
Reference in New Issue
Block a user