Skip to content

Commit

Permalink
fix: self closing tag
Browse files Browse the repository at this point in the history
  • Loading branch information
sxzz committed Nov 24, 2023
1 parent dc3bc70 commit 30ba8da
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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(\`<h1 id=\\"title\\">Counter</h1><p>Count: </p><p>Double: </p><button>Increment</button><div/>\`)
const t0 = template(\`<h1 id=\\"title\\">Counter</h1><p>Count: </p><p>Double: </p><button>Increment</button><div></div><input type=\\"text\\">\`)
import { ref, computed } from 'vue'
const html = '<b>HTML</b>'
Expand Down
1 change: 1 addition & 0 deletions packages/compiler-vapor/__tests__/fixtures/counter.vue
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,5 @@ const html = '<b>HTML</b>'
<p>Double: {{ double }}</p>
<button @click="increment">Increment</button>
<div v-html="html" />
<input type="text" />
</template>
10 changes: 6 additions & 4 deletions packages/compiler-vapor/src/transform.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
type RootIRNode,
IRNodeTypes,
} from './ir'
import { isVoidTag } from '@vue/shared'

export interface TransformContext<T extends Node = Node> {
node: T
Expand Down Expand Up @@ -211,13 +212,14 @@ function transformElement(ctx: TransformContext<ElementNode>) {
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 <div />
if (!node.isSelfClosing) ctx.template += `</${tag}>`
// TODO remove unnecessary close tag, e.g. if it's the last element of the template
if (!node.isSelfClosing || !isVoidTag(tag)) {
ctx.template += `</${tag}>`
}
}

function transformInterpolation(
Expand Down
4 changes: 2 additions & 2 deletions playground/src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ globalThis.html = html
<button @click="inc">inc</button>
<button @click="dec">dec</button>
</div>
<div v-html="html"></div>
<div v-text="html"></div>
<div v-html="html" />
<div v-text="html" />
</div>
</template>

Expand Down

0 comments on commit 30ba8da

Please sign in to comment.