]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
feat(compiler-vapor): support v-slots expression for jsx-vapor (#271)
authorzhiyuanzmj <32807958+zhiyuanzmj@users.noreply.github.com>
Tue, 17 Sep 2024 03:45:20 +0000 (11:45 +0800)
committerGitHub <noreply@github.com>
Tue, 17 Sep 2024 03:45:20 +0000 (11:45 +0800)
Co-authored-by: 三咲智子 Kevin Deng <sxzz@sxzz.moe>
packages/compiler-vapor/src/generators/component.ts
packages/compiler-vapor/src/ir/component.ts

index 02ec2aefcb2a4a50d646eb5f1a33fd613995e8ca..5971d50c556a91a66a1ebfd65ceaebdced821ee3 100644 (file)
@@ -163,7 +163,9 @@ function genRawSlots(slots: IRSlots[], context: CodegenContext) {
     ...slots.map(slot =>
       slot.slotType === IRSlotType.STATIC
         ? genStaticSlots(slot, context)
-        : genDynamicSlot(slot, context, true),
+        : slot.slotType === IRSlotType.EXPRESSION
+          ? slot.slots.content
+          : genDynamicSlot(slot, context, true),
     ),
   )
 }
index c2bd99f7d41c5a66910c56eb85c783b5710e910d..884636cdfa889ef41a188d85e4c803f190eede1b 100644 (file)
@@ -36,6 +36,7 @@ export enum IRSlotType {
   DYNAMIC,
   LOOP,
   CONDITIONAL,
+  EXPRESSION, // JSX only
 }
 export type IRSlotsStatic = {
   slotType: IRSlotType.STATIC
@@ -58,9 +59,13 @@ export interface IRSlotDynamicConditional {
   positive: IRSlotDynamicBasic
   negative?: IRSlotDynamicBasic | IRSlotDynamicConditional
 }
+export interface IRSlotsExpression {
+  slotType: IRSlotType.EXPRESSION
+  slots: SimpleExpressionNode
+}
 
 export type IRSlotDynamic =
   | IRSlotDynamicBasic
   | IRSlotDynamicLoop
   | IRSlotDynamicConditional
-export type IRSlots = IRSlotsStatic | IRSlotDynamic
+export type IRSlots = IRSlotsStatic | IRSlotDynamic | IRSlotsExpression