@@ -118,7 +118,7 @@ import { cloneDeep, every, isEqual, remove } from "lodash";
118
118
import { useField } from " vee-validate" ;
119
119
import { computed , onMounted , ref , watchEffect } from " vue" ;
120
120
import { useI18n } from " vue-i18n" ;
121
- import { useRouter } from " vue-router" ;
121
+ import { onBeforeRouteLeave , onBeforeRouteUpdate , useRouter } from " vue-router" ;
122
122
import { string } from " yup" ;
123
123
import { useBreadcrumbs , usePageHead } from " @/core/composables" ;
124
124
import { useModuleSettings } from " @/core/composables/useModuleSettings" ;
@@ -128,7 +128,7 @@ import { asyncForEach, isEqualAddresses } from "@/core/utilities";
128
128
import { FILE_UPLOAD_SCOPE_NAME , MODULE_ID } from " @/modules/quotes/constants" ;
129
129
import { useUser , useUserAddresses } from " @/shared/account" ;
130
130
import { SelectAddressModal } from " @/shared/checkout" ;
131
- import { AddressSelection } from " @/shared/common" ;
131
+ import { AddressSelection , SaveChangesModal } from " @/shared/common" ;
132
132
import { useOrganizationAddresses } from " @/shared/company" ;
133
133
import { downloadFile , useFiles } from " @/shared/files" ;
134
134
import { useModal } from " @/shared/modal" ;
@@ -466,4 +466,31 @@ watchEffect(async () => {
466
466
comment .value = quote .value ?.comment ;
467
467
setBillingAddressEqualsShipping ();
468
468
});
469
+
470
+ async function canChangeRoute(): Promise <boolean > {
471
+ return ! canSaveChanges .value || (await openSaveChangesModal ());
472
+ }
473
+
474
+ async function openSaveChangesModal(): Promise <boolean > {
475
+ return await new Promise <boolean >((resolve ) => {
476
+ openModal ({
477
+ component: SaveChangesModal ,
478
+ props: {
479
+ title: t (" pages.account.list_details.save_changes" ),
480
+ message: t (" common.messages.save_changes" ),
481
+ onConfirm : async () => {
482
+ closeModal ();
483
+ await saveChanges ();
484
+ resolve (true );
485
+ },
486
+ onClose : () => {
487
+ resolve (true );
488
+ },
489
+ },
490
+ });
491
+ });
492
+ }
493
+
494
+ onBeforeRouteLeave (canChangeRoute );
495
+ onBeforeRouteUpdate (canChangeRoute );
469
496
</script >
0 commit comments