+ @HostListener('window:beforeunload', [ '$event' ])
+ onUnload (event: any) {
+ const { text, canDeactivate } = this.canDeactivate()
+
+ if (canDeactivate) return
+
+ event.returnValue = text
+ return text
+ }
+
+ canDeactivate (): { canDeactivate: boolean, text?: string } {
+ if (this.updateDone === true) return { canDeactivate: true }
+
+ const text = this.i18n('You have unsaved changes! If you leave, your changes will be lost.')
+
+ for (const caption of this.videoCaptions) {
+ if (caption.action) return { canDeactivate: false, text }
+ }
+
+ return { canDeactivate: this.formChanged === false, text }
+ }
+