diff --git a/packages/compiler-vapor/__tests__/__snapshots__/basic.test.ts.snap b/packages/compiler-vapor/__tests__/__snapshots__/basic.test.ts.snap index 90e3c5a8c..7a2ed91f7 100644 --- a/packages/compiler-vapor/__tests__/__snapshots__/basic.test.ts.snap +++ b/packages/compiler-vapor/__tests__/__snapshots__/basic.test.ts.snap @@ -4,7 +4,7 @@ exports[`basic 1`] = ` "import { defineComponent as _defineComponent } from 'vue' import { watchEffect } from 'vue' import { template, insert, setText, on, setHtml } from 'vue/vapor' -const t0 = template(\`

Counter

Count:

Double:

\`) +const t0 = template(\`

Counter

Count:

Double:

\`) import { ref, computed } from 'vue' const html = 'HTML' diff --git a/packages/compiler-vapor/__tests__/fixtures/counter.vue b/packages/compiler-vapor/__tests__/fixtures/counter.vue index 9ef7a9784..14d9d669e 100644 --- a/packages/compiler-vapor/__tests__/fixtures/counter.vue +++ b/packages/compiler-vapor/__tests__/fixtures/counter.vue @@ -15,4 +15,5 @@ const html = 'HTML'

Double: {{ double }}

+ diff --git a/packages/compiler-vapor/src/transform.ts b/packages/compiler-vapor/src/transform.ts index a7bd65e2b..4d2bde95e 100644 --- a/packages/compiler-vapor/src/transform.ts +++ b/packages/compiler-vapor/src/transform.ts @@ -16,6 +16,7 @@ import { type RootIRNode, IRNodeTypes, } from './ir' +import { isVoidTag } from '@vue/shared' export interface TransformContext { node: T @@ -211,13 +212,14 @@ function transformElement(ctx: TransformContext) { ctx.template += `<${tag}` props.forEach((prop) => transformProp(prop, ctx)) - ctx.template += node.isSelfClosing ? '/>' : `>` + ctx.template += `>` if (children.length) transformChildren(ctx) - // TODO remove unnecessary close tag - // TODO: [bug] self closing
- if (!node.isSelfClosing) ctx.template += `` + // TODO remove unnecessary close tag, e.g. if it's the last element of the template + if (!node.isSelfClosing || !isVoidTag(tag)) { + ctx.template += `` + } } function transformInterpolation( diff --git a/playground/src/App.vue b/playground/src/App.vue index 5dbfb1f55..893205fc9 100644 --- a/playground/src/App.vue +++ b/playground/src/App.vue @@ -29,8 +29,8 @@ globalThis.html = html
-
-
+
+