Skip to content

Commit

Permalink
Prompt before exiting tab with unsaved changes
Browse files Browse the repository at this point in the history
  • Loading branch information
Benaiah committed Nov 13, 2017
1 parent 1acdb8d commit 8b56849
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions src/containers/EntryPage.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,11 +59,24 @@ class EntryPage extends React.Component {
loadEntry(collection, slug);
}

const unblock = history.block((location) => {
const leaveMessage = 'Are you sure you want to leave this page?';

this.exitBlocker = (event) => {
if (this.props.entryDraft.get('hasChanged')) {
return "Are you sure you want to leave this page?";
// This message is ignored in most browsers, but its presence
// triggers the confirmation dialog
event.returnValue = leaveMessage;
return leaveMessage;
}
});
};
window.addEventListener('beforeunload', this.exitBlocker);

const navigationBlocker = () => {
if (this.props.entryDraft.get('hasChanged')) {
return leaveMessage;
}
};
const unblock = history.block(navigationBlocker);

// This will run as soon as the location actually changes.
// (The confirmation above will run first.)
Expand Down Expand Up @@ -93,6 +106,7 @@ class EntryPage extends React.Component {

componentWillUnmount() {
this.props.discardDraft();
window.removeEventListener('beforeunload', this.exitBlocker);
}

createDraft = (entry) => {
Expand Down

0 comments on commit 8b56849

Please sign in to comment.