diff --git a/frontend/src/app/components/menu/menu.component.ts b/frontend/src/app/components/menu/menu.component.ts
index d12bbe47e..f071a7c0a 100644
--- a/frontend/src/app/components/menu/menu.component.ts
+++ b/frontend/src/app/components/menu/menu.component.ts
@@ -68,6 +68,7 @@ export class MenuComponent implements OnInit {
hambugerClick() {
this.navOpen = !this.navOpen;
+ this.stateService.menuOpen$.next(this.navOpen);
}
@HostListener('window:click', ['$event'])
diff --git a/frontend/src/app/components/start/start.component.html b/frontend/src/app/components/start/start.component.html
index de8d778d1..709a230d9 100644
--- a/frontend/src/app/components/start/start.component.html
+++ b/frontend/src/app/components/start/start.component.html
@@ -12,6 +12,8 @@
{
this.timeLtr = !!ltr;
@@ -156,15 +160,12 @@ export class StartComponent implements OnInit, OnDestroy, DoCheck {
}
});
- if ('ResizeObserver' in window && this.blockchainWrapper?.nativeElement) {
- this.resizeObserver = new ResizeObserver(entries => {
- const newChainWidth = entries[0].contentRect.width;
- if (newChainWidth != this.chainWidth) {
- this.onResize(newChainWidth);
- }
- });
- this.resizeObserver.observe(this.blockchainWrapper.nativeElement);
- }
+ this.menuSubscription = this.stateService.menuOpen$.subscribe((open) => {
+ if (this.menuOpen !== open) {
+ this.menuOpen = open;
+ this.applyMenuScroll(this.menuOpen);
+ }
+ });
}
onMempoolOffsetChange(offset): void {
@@ -185,8 +186,16 @@ export class StartComponent implements OnInit, OnDestroy, DoCheck {
}
}
- onResize(width): void {
- this.chainWidth = width;
+ applyMenuScroll(opening: boolean): void {
+ this.menuSliding = true;
+ window.clearTimeout(this.menuTimeout);
+ this.menuTimeout = window.setTimeout(() => {
+ this.menuSliding = false;
+ }, 300);
+ }
+
+ onResize(): void {
+ this.chainWidth = window.innerWidth;
this.isMobile = this.chainWidth <= 767.98;
let firstVisibleBlock;
let offset;
@@ -472,5 +481,6 @@ export class StartComponent implements OnInit, OnDestroy, DoCheck {
this.markBlockSubscription.unsubscribe();
this.blockCounterSubscription.unsubscribe();
this.resetScrollSubscription.unsubscribe();
+ this.menuSubscription.unsubscribe();
}
}
diff --git a/frontend/src/app/services/state.service.ts b/frontend/src/app/services/state.service.ts
index 96529033c..0e4163159 100644
--- a/frontend/src/app/services/state.service.ts
+++ b/frontend/src/app/services/state.service.ts
@@ -147,6 +147,7 @@ export class StateService {
rateUnits$: BehaviorSubject;
searchFocus$: Subject = new Subject();
+ menuOpen$: BehaviorSubject = new BehaviorSubject(false);
constructor(
@Inject(PLATFORM_ID) private platformId: any,