Skip to content

Commit d4e2386

Browse files
committed
fix: Serialize defaultSelected as selected attr
1 parent b340af4 commit d4e2386

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

src/index.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ const SHALLOW = { shallow: true };
1515
// components without names, kept as a hash for later comparison to return consistent UnnamedComponentXX names.
1616
const UNNAMED = [];
1717

18-
const VOID_ELEMENTS = /^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;
18+
const VOID_ELEMENTS =
19+
/^(area|base|br|col|embed|hr|img|input|link|meta|param|source|track|wbr)$/;
1920

2021
const UNSAFE_NAME = /[\s\n\\/='"\0<>]/;
2122

@@ -265,6 +266,8 @@ function _renderToString(vnode, context, opts, inner, isSvgMode, selectValue) {
265266
name = 'value';
266267
} else if (name === 'defaultChecked') {
267268
name = 'checked';
269+
} else if (name === 'defaultSelected') {
270+
name = 'selected';
268271
} else if (name === 'className') {
269272
if (typeof props.class !== 'undefined') continue;
270273
name = 'class';

test/render.test.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,13 @@ describe('render', () => {
102102
expect(rendered).to.equal(expected);
103103
});
104104

105+
it('should serialize defaultSelected prop to the selected attribute', () => {
106+
let rendered = render(<option defaultSelected />),
107+
expected = `<option selected></option>`;
108+
109+
expect(rendered).to.equal(expected);
110+
});
111+
105112
it('should include boolean aria-* attributes', () => {
106113
let rendered = render(<div aria-hidden aria-whatever={false} />),
107114
expected = `<div aria-hidden="true" aria-whatever="false"></div>`;

0 commit comments

Comments
 (0)