Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
fix(types): correct scopedSlot types (#9131)
see #8946
  • Loading branch information
KaelWD authored and yyx990803 committed Dec 4, 2018
1 parent 0d7fb73 commit 448ba65
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
17 changes: 13 additions & 4 deletions types/test/options-test.ts
@@ -1,5 +1,5 @@
import Vue, { VNode } from "../index";
import { AsyncComponent, ComponentOptions, FunctionalComponentOptions, Component } from "../index";
import { ComponentOptions, Component } from "../index";
import { CreateElement } from "../vue";

interface MyComponent extends Vue {
Expand Down Expand Up @@ -297,6 +297,10 @@ Vue.component('component-with-scoped-slot', {
// named scoped slot as vnode data
item: (props: ScopedSlotProps) => [h('span', [props.msg])]
}
}),
h('child', {
// Passing down all slots from parent
scopedSlots: this.$scopedSlots
})
])
},
Expand All @@ -315,13 +319,18 @@ Vue.component('component-with-scoped-slot', {
Vue.component('narrow-array-of-vnode-type', {
render (h): VNode {
const slot = this.$scopedSlots.default!({})
if (typeof slot !== 'string') {
if (typeof slot === 'string') {
return h('span', slot)
} else if (Array.isArray(slot)) {
const first = slot[0]
if (!Array.isArray(first) && typeof first !== 'string') {
return first;
return first
} else {
return h()
}
} else {
return slot
}
return h();
}
})

Expand Down
4 changes: 2 additions & 2 deletions types/vnode.d.ts
@@ -1,6 +1,6 @@
import { Vue } from "./vue";

export type ScopedSlot = (props: any) => VNodeChildrenArrayContents | string;
export type ScopedSlot = (props: any) => VNodeChildrenArrayContents | VNode | string;

export type VNodeChildren = VNodeChildrenArrayContents | [ScopedSlot] | string;
export interface VNodeChildrenArrayContents extends Array<VNode | string | VNodeChildrenArrayContents> {}
Expand Down Expand Up @@ -34,7 +34,7 @@ export interface VNodeComponentOptions {
export interface VNodeData {
key?: string | number;
slot?: string;
scopedSlots?: { [key: string]: ScopedSlot };
scopedSlots?: { [key: string]: ScopedSlot | undefined };
ref?: string;
refInFor?: boolean;
tag?: string;
Expand Down

0 comments on commit 448ba65

Please sign in to comment.