feat(project-editor): warn before leaving with unsaved changes
This commit is contained in:
@@ -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?');
|
||||
};
|
||||
@@ -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 = '';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user