feat(project-editor): warn before leaving with unsaved changes

This commit is contained in:
sdarbinyan
2026-07-13 15:21:39 +04:00
parent 1e7add2fc8
commit 26c07fb3e6
3 changed files with 24 additions and 2 deletions

View File

@@ -0,0 +1,12 @@
import { inject } from '@angular/core';
import { CanDeactivateFn } from '@angular/router';
import { ProjectEditorFacade } from '../facade/project-editor.facade';
import { ProjectEditorPageComponent } from '../pages/project-editor-page.component';
export const projectEditorDirtyGuard: CanDeactivateFn<ProjectEditorPageComponent> = () => {
const facade = inject(ProjectEditorFacade);
if (!facade.dirty()) {
return true;
}
return window.confirm('You have unsaved changes. Leave anyway?');
};

View File

@@ -1,4 +1,4 @@
import { ChangeDetectionStrategy, Component, effect, inject } from '@angular/core';
import { ChangeDetectionStrategy, Component, HostListener, effect, inject } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { toSignal } from '@angular/core/rxjs-interop';
import { map } from 'rxjs/operators';
@@ -68,4 +68,12 @@ export class ProjectEditorPageComponent {
}
});
}
@HostListener('window:beforeunload', ['$event'])
warnBeforeUnload(event: BeforeUnloadEvent): void {
if (this.facade.dirty()) {
event.preventDefault();
event.returnValue = '';
}
}
}