Browse Source

feat: editor - warn on leave without save

Nick 5 years ago
parent
commit
ab55f33d99
1 changed files with 10 additions and 0 deletions
  1. 10 0
      client/components/editor.vue

+ 10 - 0
client/components/editor.vue

@@ -118,6 +118,7 @@ export default {
       dialogProgress: false,
       dialogEditorSelector: false,
       dialogUnsaved: false,
+      exitConfirmed: false,
       initContentParsed: ''
     }
   },
@@ -161,6 +162,14 @@ export default {
     } else {
       this.currentEditor = `editor${_.startCase(this.initEditor || 'markdown')}`
     }
+
+    window.onbeforeunload = () => {
+      if (!this.exitConfirmed && this.initContentParsed !== this.$store.get('editor/content')) {
+        return 'You have unsaved edits. Are you sure you want to leave the editor?'
+      } else {
+        return undefined
+      }
+    }
   },
   methods: {
     openPropsModal(name) {
@@ -263,6 +272,7 @@ export default {
     exitGo() {
       this.$store.commit(`loadingStart`, 'editor-close')
       this.currentEditor = ''
+      this.exitConfirmed = true
       _.delay(() => {
         if (this.$store.get('editor/mode') === 'create') {
           window.location.assign(`/`)