From 073e4518918175993576343036d427200a59d4ad Mon Sep 17 00:00:00 2001 From: masoodafar-web Date: Sat, 10 Oct 2026 04:10:22 +0330 Subject: [PATCH] Move page back control into the topbar next to the menu. Keep the chevron back button on the same sticky header row (left) as the menu icon (right). Co-authored-by: Cursor --- src/TafsirQuran.UI/Layout/AppLayout.razor | 13 +++++-- src/TafsirQuran.UI/Pages/TafsirPage.razor | 9 +++-- .../Services/TopbarNavService.cs | 36 +++++++++++++++++++ .../Services/UiServiceCollectionExtensions.cs | 1 + src/TafsirQuran.UI/wwwroot/css/app.css | 29 ++++++++------- 5 files changed, 72 insertions(+), 16 deletions(-) create mode 100644 src/TafsirQuran.UI/Services/TopbarNavService.cs diff --git a/src/TafsirQuran.UI/Layout/AppLayout.razor b/src/TafsirQuran.UI/Layout/AppLayout.razor index b8129b6..f5e2b62 100644 --- a/src/TafsirQuran.UI/Layout/AppLayout.razor +++ b/src/TafsirQuran.UI/Layout/AppLayout.razor @@ -1,14 +1,20 @@ @inherits LayoutComponentBase @implements IDisposable @inject AuthStateService Auth +@inject TopbarNavService TopbarNav
+
+ @if (TopbarNav.ShowBack) + { + + } +
+ تفسیر قرآن - تفسیر قرآن -
@@ -33,6 +39,7 @@ { Auth.Changed += OnAuthChanged; Session.Changed += OnSessionChanged; + TopbarNav.Changed += OnTopbarChanged; hasDock = Session.HasTrack; } @@ -46,6 +53,7 @@ } private void OnAuthChanged() => InvokeAsync(StateHasChanged); + private void OnTopbarChanged() => InvokeAsync(StateHasChanged); private void OnSessionChanged() { hasDock = Session.HasTrack; @@ -58,5 +66,6 @@ { Auth.Changed -= OnAuthChanged; Session.Changed -= OnSessionChanged; + TopbarNav.Changed -= OnTopbarChanged; } } diff --git a/src/TafsirQuran.UI/Pages/TafsirPage.razor b/src/TafsirQuran.UI/Pages/TafsirPage.razor index 3440dde..e364c52 100644 --- a/src/TafsirQuran.UI/Pages/TafsirPage.razor +++ b/src/TafsirQuran.UI/Pages/TafsirPage.razor @@ -1,20 +1,21 @@ @page "/tafsir/{Slug}" @page "/tafsir/{Slug}/surah/{SurahNumber:int}" @page "/tafsir/{Slug}/surah/{SurahNumber:int}/ayah/{AyahNumber:int}" +@implements IDisposable @inject TafsirApiClient Api @inject IDeviceIdStore DeviceStore @inject NavigationManager Nav @inject PlayerSessionService Player +@inject TopbarNavService TopbarNav
-