Skip to content

Commit 2be4467

Browse files
committed
feat: support setup for TypeBlock
1 parent fc91a79 commit 2be4467

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

packages-private/dts-test/defineVaporComponent.test-d.tsx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,6 +1213,12 @@ describe('__typeEl backdoor', () => {
12131213
const Comp2 = defineVaporComponent(() => document.createElement('a'))
12141214
const c2 = new Comp2()
12151215
expectType<HTMLAnchorElement>(c2.block)
1216+
1217+
const Comp3 = defineVaporComponent({
1218+
setup: () => document.createElement('a'),
1219+
})
1220+
const c3 = new Comp3()
1221+
expectType<HTMLAnchorElement>(c3.block)
12161222
})
12171223

12181224
defineVaporComponent({

packages/runtime-vapor/src/component.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ export type VaporSetupFn<
8080
Emits extends EmitsOptions = {},
8181
Slots extends StaticSlots = StaticSlots,
8282
Exposed extends Record<string, any> = Record<string, any>,
83+
TypeBlock extends Block = Block,
8384
> = (
8485
props: Readonly<Props>,
8586
ctx: {
@@ -88,7 +89,7 @@ export type VaporSetupFn<
8889
attrs: Record<string, any>
8990
expose: <T extends Record<string, any> = Exposed>(exposed: T) => void
9091
},
91-
) => Block | Exposed | Promise<Exposed> | void
92+
) => TypeBlock | Exposed | Promise<Exposed> | void
9293

9394
export type FunctionalVaporComponent = VaporSetupFn &
9495
Omit<ObjectVaporComponent, 'setup'> & {
@@ -111,7 +112,7 @@ export interface ObjectVaporComponent<
111112
props?: Props
112113
emits?: Emits | RuntimeEmitsKeys[]
113114
slots?: Slots
114-
setup?: VaporSetupFn<InferredProps, Emits, Slots, Exposed>
115+
setup?: VaporSetupFn<InferredProps, Emits, Slots, Exposed, TypeBlock>
115116
render?(
116117
ctx: Exposed extends Block ? undefined : ShallowUnwrapRef<Exposed>,
117118
props: Readonly<InferredProps>,

0 commit comments

Comments
 (0)