From 66790a486763f697bf8eeb84f59d87226a93b2d5 Mon Sep 17 00:00:00 2001 From: Ben Prize Bar-On Date: Sun, 26 Jan 2025 22:08:42 +0100 Subject: [PATCH] fix(taskDetailPanel): prevent back when open Use `window.history` to keep the panel as another history state. When the panel is destroyed the history entry is deleted. --- .../task-detail-panel.component.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/app/features/tasks/task-detail-panel/task-detail-panel.component.ts b/src/app/features/tasks/task-detail-panel/task-detail-panel.component.ts index f66887eee02..83a14b4d35d 100644 --- a/src/app/features/tasks/task-detail-panel/task-detail-panel.component.ts +++ b/src/app/features/tasks/task-detail-panel/task-detail-panel.component.ts @@ -9,6 +9,7 @@ import { input, LOCALE_ID, OnDestroy, + OnInit, viewChild, viewChildren, } from '@angular/core'; @@ -124,7 +125,7 @@ interface IssueDataAndType { IssueIconPipe, ], }) -export class TaskDetailPanelComponent implements AfterViewInit, OnDestroy { +export class TaskDetailPanelComponent implements OnInit, AfterViewInit, OnDestroy { attachmentService = inject(TaskAttachmentService); taskService = inject(TaskService); layoutService = inject(LayoutService); @@ -403,6 +404,14 @@ export class TaskDetailPanelComponent implements AfterViewInit, OnDestroy { this.isDragOver = false; } + @HostListener('window:popstate') onBack(): void { + this.collapseParent(); + } + + ngOnInit(): void { + window.history.pushState({ taskDetailPanel: true }, ''); + } + ngAfterViewInit(): void { this.taskService.taskDetailPanelTargetPanel$ .pipe( @@ -429,6 +438,10 @@ export class TaskDetailPanelComponent implements AfterViewInit, OnDestroy { } ngOnDestroy(): void { + if (window.history.state.taskDetailPanel) { + window.history.back(); + } + this._onDestroy$.next(); this._onDestroy$.complete(); window.clearTimeout(this._focusTimeout);