Skip to content

Commit 541b895

Browse files
authored
Merge pull request #25 from elliotdavies/fix/close-void-elements
Close void tags with slashes to support XHTML
2 parents 12c7663 + fe53fcf commit 541b895

File tree

3 files changed

+12
-8
lines changed

3 files changed

+12
-8
lines changed

src/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ export default function renderToString(vnode, context, opts, inner, isSvgMode) {
158158

159159
s = `<${nodeName}${s}>`;
160160

161+
if (VOID_ELEMENTS.indexOf(nodeName)>-1) {
162+
s = s.replace(/>$/, ' />');
163+
}
164+
161165
if (html) {
162166
// if multiline, indent.
163167
if (pretty && isLargeString(html)) {

test/pretty.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ describe('pretty', () => {
5555
<img src="b.jpg" />
5656
<b>hi</b>
5757
</div>
58-
)).to.equal(`<div>\n\thi\n\t<img src="a.jpg">\n\t<img src="b.jpg">\n\t<b>hi</b>\n</div>`);
58+
)).to.equal(`<div>\n\thi\n\t<img src="a.jpg" />\n\t<img src="b.jpg" />\n\t<b>hi</b>\n</div>`);
5959
});
6060

6161
it('should support empty tags', () => {

test/render.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,16 +51,16 @@ describe('render', () => {
5151
expect(rendered).to.equal(expected);
5252
});
5353

54-
it('does not close void elements', () => {
55-
let rendered, expected;
56-
57-
rendered = render(<div><input type='text' /><wbr /></div>);
58-
expected = `<div><input type="text"><wbr></div>`;
54+
it('should self-close void elements', () => {
55+
let rendered = render(<div><input type='text' /><wbr /></div>),
56+
expected = `<div><input type="text" /><wbr /></div>`;
5957

6058
expect(rendered).to.equal(expected);
59+
});
6160

62-
rendered = render(<input><p>Hello World</p></input>);
63-
expected = `<input><p>Hello World</p>`;
61+
it('does not close void elements with closing tags', () => {
62+
let rendered = render(<input><p>Hello World</p></input>),
63+
expected = `<input /><p>Hello World</p>`;
6464

6565
expect(rendered).to.equal(expected);
6666
});

0 commit comments

Comments
 (0)