Skip to content

Commit 7a87ee3

Browse files
vitaliymazgajus
authored andcommitted
fix: assign a generated className to elements inside nested arrays (#292)
1 parent 982fcf5 commit 7a87ee3

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

src/linkClass.js

+1-8
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,7 @@ const linkElement = (element: ReactElement, styles: Object, configuration: Objec
5050
if (React.isValidElement(children)) {
5151
elementShallowCopy.props.children = linkElement(React.Children.only(children), styles, configuration);
5252
} else if (_.isArray(children) || isIterable(children)) {
53-
elementShallowCopy.props.children = _.map(children, (node) => {
54-
if (React.isValidElement(node)) {
55-
// eslint-disable-next-line no-use-before-define
56-
return linkElement(React.Children.only(node), styles, configuration);
57-
} else {
58-
return node;
59-
}
60-
});
53+
elementShallowCopy.props.children = linkArray(objectUnfreeze(children), styles, configuration);
6154
}
6255

6356
_.forEach(restProps, (propValue, propName) => {

tests/linkClass.js

+27
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,33 @@ describe('linkClass', () => {
125125
expect(subject.props.children[0].props.className).to.equal('foo-1');
126126
expect(subject.props.children[1].props.className).to.equal('bar-1');
127127
});
128+
it('assigns a generated className to elements inside nested arrays', () => {
129+
let subject;
130+
131+
subject = <div>
132+
{[
133+
[
134+
<p key='1' styleName='foo' />,
135+
<p key='2' styleName='bar' />
136+
],
137+
[
138+
<p key='1' styleName='foo' />,
139+
<p key='2' styleName='bar' />
140+
]
141+
]}
142+
</div>;
143+
144+
subject = linkClass(subject, {
145+
bar: 'bar-1',
146+
foo: 'foo-1'
147+
});
148+
149+
expect(subject.props.children[0][0].props.className).to.equal('foo-1');
150+
expect(subject.props.children[0][1].props.className).to.equal('bar-1');
151+
152+
expect(subject.props.children[1][0].props.className).to.equal('foo-1');
153+
expect(subject.props.children[1][1].props.className).to.equal('bar-1');
154+
});
128155
it('styleName is deleted from props', () => {
129156
let subject;
130157

0 commit comments

Comments
 (0)