File tree Expand file tree Collapse file tree 3 files changed +43
-8
lines changed Expand file tree Collapse file tree 3 files changed +43
-8
lines changed Original file line number Diff line number Diff line change @@ -35,7 +35,7 @@ export function renderSlot(
35
35
let slot = slots [ name ]
36
36
37
37
// vapor slots rendered in vdom
38
- if ( slot && slots . _vapor ) {
38
+ if ( slot && ( slot as any ) . __vapor ) {
39
39
const ret = ( openBlock ( ) , createBlock ( VaporSlot , props ) )
40
40
ret . vs = { slot, fallback }
41
41
return ret
Original file line number Diff line number Diff line change 1
- import { defineComponent , h } from '@vue/runtime-dom'
1
+ import { defineComponent , h , renderSlot } from '@vue/runtime-dom'
2
2
import { makeInteropRender } from './_utils'
3
3
import { createComponent , defineVaporComponent } from '../src'
4
4
@@ -9,7 +9,36 @@ describe('vdomInterop', () => {
9
9
10
10
describe . todo ( 'emit' , ( ) => { } )
11
11
12
- describe . todo ( 'slots' , ( ) => { } )
12
+ describe ( 'slots' , ( ) => {
13
+ test ( 'functional slot' , ( ) => {
14
+ const VDomChild = defineComponent ( {
15
+ setup ( _ , { slots } ) {
16
+ return ( ) => renderSlot ( slots , 'default' )
17
+ } ,
18
+ } )
19
+
20
+ const VaporChild = defineVaporComponent ( {
21
+ setup ( ) {
22
+ return createComponent (
23
+ VDomChild as any ,
24
+ null ,
25
+ {
26
+ default : ( ) => document . createTextNode ( 'default slot' ) ,
27
+ } ,
28
+ true ,
29
+ )
30
+ } ,
31
+ } )
32
+
33
+ const { html } = define ( {
34
+ setup ( ) {
35
+ return ( ) => h ( VaporChild as any )
36
+ } ,
37
+ } ) . render ( )
38
+
39
+ expect ( html ( ) ) . toBe ( 'default slot' )
40
+ } )
41
+ } )
13
42
14
43
describe . todo ( 'provide' , ( ) => { } )
15
44
Original file line number Diff line number Diff line change @@ -134,11 +134,17 @@ const vaporSlotPropsProxyHandler: ProxyHandler<
134
134
135
135
const vaporSlotsProxyHandler : ProxyHandler < any > = {
136
136
get ( target , key ) {
137
- if ( key === '_vapor' ) {
138
- return target
139
- } else {
140
- return target [ key ]
141
- }
137
+ const fn = target [ key ]
138
+ return isFunction ( fn )
139
+ ? new Proxy ( fn , {
140
+ get ( fnTarget , fnKey ) {
141
+ if ( fnKey === '__vapor' ) {
142
+ return true
143
+ }
144
+ return fnTarget [ fnKey ]
145
+ } ,
146
+ } )
147
+ : fn
142
148
} ,
143
149
}
144
150
You can’t perform that action at this time.
0 commit comments