From 0ba94f3bc976911b2cc3ee2f0c2459c8dcc3cc64 Mon Sep 17 00:00:00 2001 From: sbwalker Date: Fri, 17 May 2024 13:01:03 -0400 Subject: [PATCH] set browser scroll position on navigation in Static Rendering --- Oqtane.Server/Components/App.razor | 27 +++++++++++----------- Oqtane.Server/wwwroot/js/scrollposition.js | 12 ++++++++++ 2 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 Oqtane.Server/wwwroot/js/scrollposition.js diff --git a/Oqtane.Server/Components/App.razor b/Oqtane.Server/Components/App.razor index 18ef4654..8acd74b0 100644 --- a/Oqtane.Server/Components/App.razor +++ b/Oqtane.Server/Components/App.razor @@ -69,20 +69,15 @@ } - @if (!string.IsNullOrEmpty(_reconnectScript)) - { - @((MarkupString)_reconnectScript) - } - @if (!string.IsNullOrEmpty(_PWAScript)) - { - @((MarkupString)_PWAScript) - } - @((MarkupString)_bodyResources) - + - + + @((MarkupString)_reconnectScript) + @((MarkupString)_PWAScript) + @((MarkupString)_scrollPositionScript) + @((MarkupString)_bodyResources) } else { @@ -106,8 +101,9 @@ private string _headResources = ""; private string _bodyResources = ""; private string _styleSheets = ""; - private string _PWAScript = ""; - private string _reconnectScript = ""; + private string _reconnectScript = ""; // for Interactive render mode and Blazor Server interactivity only + private string _PWAScript = ""; // for PWA apps only + private string _scrollPositionScript = ""; // for Static render mode only private string _message = ""; private PageState _pageState; @@ -189,6 +185,11 @@ { _PWAScript = CreatePWAScript(alias, site, route); } + @if (_renderMode == RenderModes.Static) + { + _scrollPositionScript = ""; + } + _headResources += ParseScripts(site.HeadContent); _bodyResources += ParseScripts(site.BodyContent); diff --git a/Oqtane.Server/wwwroot/js/scrollposition.js b/Oqtane.Server/wwwroot/js/scrollposition.js new file mode 100644 index 00000000..58150ac6 --- /dev/null +++ b/Oqtane.Server/wwwroot/js/scrollposition.js @@ -0,0 +1,12 @@ + +function setScrollPosition() { + window.scrollTo({ + top: 0, + left: 0, + behavior: 'instant' + }); +} + +export function onUpdate() { + setScrollPosition(); +} \ No newline at end of file