diff --git a/assets/js/admin/settings-views-html-settings-tax.js b/assets/js/admin/settings-views-html-settings-tax.js index bf66bc215a6..88c028ba8c8 100644 --- a/assets/js/admin/settings-views-html-settings-tax.js +++ b/assets/js/admin/settings-views-html-settings-tax.js @@ -61,6 +61,24 @@ }, initialize : function() { this.qty_pages = Math.ceil( this.model.get( 'rates' ).length / this.per_page ); + this.listenTo( this.model, 'change', this.setUnloadConfirmation ); + this.listenTo( this.model, 'saved', this.clearUnloadConfirmation ); + window.addEventListener( 'beforeunload', this.unloadConfirmation ); + }, + setUnloadConfirmation : function() { + console.log( data.strings.unload_confirmation_msg ); + this.needsUnloadConfirm = true; + }, + clearUnloadConfirmation : function() { + this.needsUnloadConfirm = false; + }, + unloadConfirmation : function(e) { + if ( this.needsUnloadConfirm ) { + e.returnValue = data.strings.unload_confirmation_msg; + window.event.returnValue = data.strings.unload_confirmation_msg; + return data.strings.unload_confirmation_msg; + } + return null; }, sanitizePage : function( page_num ) { page_num = parseInt( page_num, 10 ); diff --git a/includes/admin/settings/class-wc-settings-tax.php b/includes/admin/settings/class-wc-settings-tax.php index 946fa1518ef..857558a1958 100644 --- a/includes/admin/settings/class-wc-settings-tax.php +++ b/includes/admin/settings/class-wc-settings-tax.php @@ -156,6 +156,7 @@ class WC_Settings_Tax extends WC_Settings_Page { 'states' => $states, 'strings' => array( 'no_rows_selected' => __( 'No row(s) selected', 'woocommerce' ), + 'unload_confirmation_msg' => __( 'Your changed data will be lost if you leave this page without saving.', 'woocommerce' ), 'csv_data_cols' => array( __( 'Country Code', 'woocommerce' ), __( 'State Code', 'woocommerce' ),