From 304904cedb8ca006f8a06fe50880af5d9bed25cd Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Mon, 22 Jun 2026 14:46:23 +0300 Subject: [PATCH] fix(home): reset main-content scroll on route navigation so pages open at the top PROD-8423: .tb-main-content (the scroll container holding the router-outlet in home.component.html) keeps its scrollTop across route changes, so navigating from a scrolled-down IoT Hub home to a child page (e.g. Calculated Fields) opened the new page already scrolled. Angular's scrollPositionRestoration only handles window scroll, not arbitrary containers. Add a #mainContent ref, capture the ElementRef, and reset its scroll position in the existing (activate) handler so every route navigation lands at the top. --- ui-ngx/src/app/modules/home/home.component.html | 2 +- ui-ngx/src/app/modules/home/home.component.ts | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/ui-ngx/src/app/modules/home/home.component.html b/ui-ngx/src/app/modules/home/home.component.html index 10c15080f6..03ce291f18 100644 --- a/ui-ngx/src/app/modules/home/home.component.html +++ b/ui-ngx/src/app/modules/home/home.component.html @@ -79,7 +79,7 @@ -
+
diff --git a/ui-ngx/src/app/modules/home/home.component.ts b/ui-ngx/src/app/modules/home/home.component.ts index 6191280933..1bd9b73386 100644 --- a/ui-ngx/src/app/modules/home/home.component.ts +++ b/ui-ngx/src/app/modules/home/home.component.ts @@ -58,6 +58,8 @@ export class HomeComponent extends PageComponent implements AfterViewInit, OnIni @ViewChild('sidenav') sidenav: MatSidenav; + @ViewChild('mainContent', { static: true }) mainContent: ElementRef; + @ViewChild('searchInput') searchInputField: ElementRef; fullscreenEnabled = screenfull.isEnabled; @@ -136,6 +138,7 @@ export class HomeComponent extends PageComponent implements AfterViewInit, OnIni activeComponentChanged(activeComponent: any) { this.activeComponentService.setCurrentActiveComponent(activeComponent); + this.mainContent?.nativeElement?.scrollTo({ top: 0, left: 0 }); if (!this.activeComponent) { setTimeout(() => { this.updateActiveComponent(activeComponent);