From 5858251246749c116978698bf6af898f07021591 Mon Sep 17 00:00:00 2001
From: sh7dm <d3dx12.xx@gmail.com>
Date: Sun, 24 Feb 2019 13:53:22 +0300
Subject: [PATCH 1/4] feat(lifecycle): add beforeDeactivated hook

---
 src/core/instance/lifecycle.js | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/core/instance/lifecycle.js b/src/core/instance/lifecycle.js
index b7265df0aaf..61d2bc61145 100644
--- a/src/core/instance/lifecycle.js
+++ b/src/core/instance/lifecycle.js
@@ -325,6 +325,7 @@ export function deactivateChildComponent (vm: Component, direct?: boolean) {
     }
   }
   if (!vm._inactive) {
+    callHook(vm, 'beforeDeactivated')
     vm._inactive = true
     for (let i = 0; i < vm.$children.length; i++) {
       deactivateChildComponent(vm.$children[i])

From 0d02088b3ff531fa12339ca5e658193d8fc6413d Mon Sep 17 00:00:00 2001
From: GU Yiling <justice360@gmail.com>
Date: Sun, 24 Feb 2019 18:23:45 +0300
Subject: [PATCH 2/4] chore: rename beforeDeactivated to beforeDeactivate

Co-Authored-By: sh7dm <sh7dm@outlook.com>
---
 src/core/instance/lifecycle.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/core/instance/lifecycle.js b/src/core/instance/lifecycle.js
index 61d2bc61145..d272c7a68f8 100644
--- a/src/core/instance/lifecycle.js
+++ b/src/core/instance/lifecycle.js
@@ -325,7 +325,7 @@ export function deactivateChildComponent (vm: Component, direct?: boolean) {
     }
   }
   if (!vm._inactive) {
-    callHook(vm, 'beforeDeactivated')
+    callHook(vm, 'beforeDeactivate')
     vm._inactive = true
     for (let i = 0; i < vm.$children.length; i++) {
       deactivateChildComponent(vm.$children[i])

From 028723671b985072575a7f2df7db75ebe0359e85 Mon Sep 17 00:00:00 2001
From: Dmitry Sharshakov <d3dx12.xx@gmail.com>
Date: Fri, 1 Mar 2019 17:58:22 +0300
Subject: [PATCH 3/4] feat(types): add beforeDeactivate

---
 types/options.d.ts | 1 +
 1 file changed, 1 insertion(+)

diff --git a/types/options.d.ts b/types/options.d.ts
index 1bb5fbb619f..23cc467c650 100644
--- a/types/options.d.ts
+++ b/types/options.d.ts
@@ -94,6 +94,7 @@ export interface ComponentOptions<
   beforeUpdate?(): void;
   updated?(): void;
   activated?(): void;
+  beforeDeactivate?(): void;
   deactivated?(): void;
   errorCaptured?(err: Error, vm: Vue, info: string): boolean | void;
   serverPrefetch?(this: V): Promise<void>;

From 358216eda8870fa04f767d3f24fee0545e3eeb33 Mon Sep 17 00:00:00 2001
From: sh7dm <d3dx12.xx@gmail.com>
Date: Fri, 1 Mar 2019 20:04:45 +0300
Subject: [PATCH 4/4] feat(lifecycle): add beforeDeactivate hook to
 LIFECYCLE_HOOKS

---
 src/shared/constants.js | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/shared/constants.js b/src/shared/constants.js
index a8b15e043dd..ecdaf33698f 100644
--- a/src/shared/constants.js
+++ b/src/shared/constants.js
@@ -16,6 +16,7 @@ export const LIFECYCLE_HOOKS = [
   'beforeDestroy',
   'destroyed',
   'activated',
+  'beforeDeactivate',
   'deactivated',
   'errorCaptured',
   'serverPrefetch'