Prevent route changing when editing with changes

Close #197

Signed-off-by: Thomas Citharel <tcit@tcit.fr>
This commit is contained in:
Thomas Citharel 2019-10-09 17:18:27 +02:00
parent c565076fac
commit e1b3c14cbf
No known key found for this signature in database
GPG Key ID: A061B9DDE0CA0773

View File

@ -266,6 +266,9 @@ import { ICurrentUser } from '@/types/current-user.model';
query: TAGS,
},
},
beforeRouteLeave(to, from, next) {
this.confirmGoElsewhere(() => next());
},
})
export default class EditEvent extends Vue {
@Prop({ type: Boolean, default: false }) isUpdate!: boolean;
@ -499,9 +502,9 @@ export default class EditEvent extends Vue {
/**
* Confirm cancel
*/
confirmGoBack() {
confirmGoElsewhere(callback) {
if (!this.isEventModified) {
return this.$router.go(-1);
return callback();
}
const title: string = this.isUpdate ?
this.$t('Cancel edition') as string :
@ -519,10 +522,17 @@ export default class EditEvent extends Vue {
cancelText: this.$t('Continue editing') as string,
type: 'is-warning',
hasIcon: true,
onConfirm: () => this.$router.go(-1),
onConfirm: callback,
});
}
/**
* Confirm cancel
*/
confirmGoBack() {
this.confirmGoElsewhere(() => this.$router.go(-1));
}
get isEventModified(): boolean {
return JSON.stringify(this.event.toEditJSON()) !== JSON.stringify(this.unmodifiedEvent);
}