From 7c3a4401548e5dfb2b9c345294adc601bf032db9 Mon Sep 17 00:00:00 2001 From: Michele Bertoli Date: Wed, 18 Oct 2017 15:33:46 +0100 Subject: [PATCH] Render class instead of className --- src/index.js | 6 +++++- test/render.js | 22 ++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 test/render.js diff --git a/src/index.js b/src/index.js index 1551511d..10b0cad6 100644 --- a/src/index.js +++ b/src/index.js @@ -94,7 +94,11 @@ export default function renderToJSON(vnode, context, opts, inner) { }; if (attributes) { - ret.props = omit(attributes, ['key', 'children']); + ret.props = omit(attributes, ['key', 'children', 'className']); + + if (attributes.className && !attributes.class) { + ret.props.class = attributes.className; + } } if (attributes && attributes.key) { diff --git a/test/render.js b/test/render.js new file mode 100644 index 00000000..d2b54f8e --- /dev/null +++ b/test/render.js @@ -0,0 +1,22 @@ +import { render } from '../src'; +import { h } from 'preact'; +import { expect } from 'chai'; + +describe('className / class massaging', () => { + it('should render class using className', () => { + let rendered = render(
); + expect(rendered.props).to.have.property('class', 'foo bar'); + expect(rendered.props).to.not.have.property('className'); + }); + + it('should render class using class', () => { + let rendered = render(
); + expect(rendered.props).to.have.property('class', 'foo bar'); + }); + + it('should prefer class over className', () => { + let rendered = render(
); + expect(rendered.props).to.have.property('class', 'foo'); + expect(rendered.props).to.not.have.property('className'); + }); +});