From c9a93a5c4c66c8a74a035e3a6852d7f034c86402 Mon Sep 17 00:00:00 2001 From: Evan You Date: Thu, 8 Apr 2021 10:21:14 -0400 Subject: [PATCH] wip: $scopedSlots compat --- packages/runtime-core/src/compat/deprecations.ts | 6 ++++++ packages/runtime-core/src/compat/instance.ts | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/packages/runtime-core/src/compat/deprecations.ts b/packages/runtime-core/src/compat/deprecations.ts index 516cd557..aec9391d 100644 --- a/packages/runtime-core/src/compat/deprecations.ts +++ b/packages/runtime-core/src/compat/deprecations.ts @@ -24,6 +24,7 @@ export const enum DeprecationTypes { INSTANCE_EVENT_HOOKS = 'INSTANCE_EVENT_HOOKS', INSTANCE_CHILDREN = 'INSTANCE_CHILDREN', INSTANCE_LISTENERS = 'INSTANCE_LISTENERS', + INSTANCE_SCOPED_SLOTS = 'INSTANCE_SCOPED_SLOTS', OPTIONS_DATA_FN = 'OPTIONS_DATA_FN', OPTIONS_DATA_MERGE = 'OPTIONS_DATA_MERGE', @@ -182,6 +183,11 @@ const deprecationData: Record = { link: `https://v3.vuejs.org/guide/migration/listeners-removed.html` }, + [DeprecationTypes.INSTANCE_SCOPED_SLOTS]: { + message: `vm.$scopedSlots has been removed. Use vm.$slots instead.`, + link: `https://v3.vuejs.org/guide/migration/slots-unification.html` + }, + [DeprecationTypes.OPTIONS_DATA_FN]: { message: `The "data" option can no longer be a plain object. ` + diff --git a/packages/runtime-core/src/compat/instance.ts b/packages/runtime-core/src/compat/instance.ts index cbb4774f..88897e12 100644 --- a/packages/runtime-core/src/compat/instance.ts +++ b/packages/runtime-core/src/compat/instance.ts @@ -20,23 +20,33 @@ export function installCompatInstanceProperties(map: PublicPropertiesMap) { assertCompatEnabled(DeprecationTypes.INSTANCE_SET) return set }, + $delete: () => { assertCompatEnabled(DeprecationTypes.INSTANCE_DELETE) return del }, + $mount: i => { assertCompatEnabled(DeprecationTypes.GLOBAL_MOUNT) // root mount override from ./global.ts in installCompatMount return i.ctx._compat_mount || NOOP }, + $destroy: i => { assertCompatEnabled(DeprecationTypes.INSTANCE_DESTROY) // root destroy override from ./global.ts in installCompatMount return i.ctx._compat_destroy || NOOP }, + + $scopedSlots: i => { + assertCompatEnabled(DeprecationTypes.INSTANCE_SCOPED_SLOTS) + return i.slots + }, + $on: i => on.bind(null, i), $once: i => once.bind(null, i), $off: i => off.bind(null, i), + $children: getCompatChildren, $listeners: getCompatListeners } as PublicPropertiesMap)