From ced7ee684c10dd7cd8bbd32bbc6df002ae7650d5 Mon Sep 17 00:00:00 2001 From: zhiyuanzmj <32807958+zhiyuanzmj@users.noreply.github.com> Date: Tue, 17 Sep 2024 11:45:20 +0800 Subject: [PATCH] feat(compiler-vapor): support v-slots expression for jsx-vapor (#271) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Co-authored-by: 三咲智子 Kevin Deng --- packages/compiler-vapor/src/generators/component.ts | 4 +++- packages/compiler-vapor/src/ir/component.ts | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/compiler-vapor/src/generators/component.ts b/packages/compiler-vapor/src/generators/component.ts index 02ec2aefcb..5971d50c55 100644 --- a/packages/compiler-vapor/src/generators/component.ts +++ b/packages/compiler-vapor/src/generators/component.ts @@ -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), ), ) } diff --git a/packages/compiler-vapor/src/ir/component.ts b/packages/compiler-vapor/src/ir/component.ts index c2bd99f7d4..884636cdfa 100644 --- a/packages/compiler-vapor/src/ir/component.ts +++ b/packages/compiler-vapor/src/ir/component.ts @@ -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 -- 2.47.3