legacyresolveScopedSlots,
} from './renderHelpers'
import { resolveFilter } from '../helpers/resolveAssets'
-import type { InternalSlots, Slots } from '../componentSlots'
-import type { ContextualRenderFn } from '../componentRenderContext'
+import type { Slots } from '../componentSlots'
import { resolveMergedOptions } from '../componentOptions'
export type LegacyPublicInstance = ComponentPublicInstance &
$scopedSlots: i => {
assertCompatEnabled(DeprecationTypes.INSTANCE_SCOPED_SLOTS, i)
- const res: InternalSlots = {}
- for (const key in i.slots) {
- const fn = i.slots[key]!
- if (!(fn as ContextualRenderFn)._ns /* non-scoped slot */) {
- res[key] = fn
- }
- }
- return res
+ return __DEV__ ? shallowReadonly(i.slots) : i.slots
},
$on: i => on.bind(null, i),
).toHaveBeenWarned()
})
- test('should not include legacy slot usage in $scopedSlots', () => {
+ test('should include legacy slot usage in $scopedSlots', () => {
let normalSlots: Slots
let scopedSlots: Slots
new Vue({
}).$mount()
expect('default' in normalSlots!).toBe(true)
- expect('default' in scopedSlots!).toBe(false)
+ expect('default' in scopedSlots!).toBe(true)
expect(
deprecationData[DeprecationTypes.INSTANCE_SCOPED_SLOTS].message,