Skip to content

Commit 91564d8

Browse files
committed
Merge commit '7a87ee39cac01b100596a3dbefbb8f6624337f34'
2 parents c9577be + 7a87ee3 commit 91564d8

File tree

7 files changed

+68
-31
lines changed

7 files changed

+68
-31
lines changed

.babelrc

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
{
2-
"presets": [
3-
"es2015",
4-
"stage-0",
5-
"react"
2+
"plugins": [
3+
"add-module-exports",
4+
"lodash",
5+
"transform-class-properties",
6+
[
7+
"transform-es2015-classes",
8+
{
9+
"loose": true
10+
}
611
],
7-
"plugins": [
8-
"add-module-exports",
9-
"lodash",
10-
"transform-class-properties",
11-
["transform-es2015-classes", { "loose": true }],
12-
"transform-proto-to-assign"
13-
]
12+
"transform-proto-to-assign"
13+
],
14+
"presets": [
15+
"es2015",
16+
"stage-0",
17+
"react"
18+
]
1419
}

.travis.yml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
language: node_js
22
node_js:
3-
- 7
4-
- 6
5-
- 5
3+
- node
4+
- 8
65
before_install:
76
- npm config set depth 0
87
notifications:

README.md

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,15 @@
88

99
React CSS Modules implement automatic mapping of CSS modules. Every CSS class is assigned a local-scoped identifier with a global unique name. CSS Modules enable a modular and reusable CSS!
1010

11-
> ⚠️⚠️⚠️
12-
>
13-
> Note:
11+
> ## ⚠️⚠️⚠️ DEPRECATION NOTICE ⚠️⚠️⚠️
1412
>
1513
> If you are considering to use `react-css-modules`, evaluate if [`babel-plugin-react-css-modules`](https://github.com/gajus/babel-plugin-react-css-modules) covers your use case.
1614
> `babel-plugin-react-css-modules` is a lightweight alternative of `react-css-modules`.
1715
>
1816
> `babel-plugin-react-css-modules` is not a drop-in replacement and does not cover all the use cases of `react-css-modules`.
1917
> However, it has a lot smaller performance overhead (0-10% vs +50%; see [Performance](https://github.com/gajus/babel-plugin-react-css-modules#performance)) and a lot smaller size footprint (less than 2kb vs +17kb).
2018
>
21-
> It is easy to get started!
22-
> See the demo https://github.com/gajus/babel-plugin-react-css-modules/tree/master/demo
19+
> It is easy to get started! See the demo https://github.com/gajus/babel-plugin-react-css-modules/tree/master/demo
2320
2421
- [CSS Modules](#css-modules)
2522
- [webpack `css-loader`](#webpack-css-loader)

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
},
2121
"license": "BSD-3-Clause",
2222
"dependencies": {
23-
"hoist-non-react-statics": "^1.2.0",
23+
"hoist-non-react-statics": "^2.5.5",
2424
"lodash": "^4.16.6",
2525
"object-unfreeze": "^1.1.0"
2626
},

src/extendReactClass.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,11 @@ export default (Component: Object, defaultStyles: Object, options: Object) => {
2222
if (this.props.styles || hasDefaultstyles) {
2323
const props = Object.assign({}, this.props);
2424

25-
if (this.props.styles) {
26-
styles = this.props.styles;
25+
if (props.styles) {
26+
styles = props.styles;
2727
} else if (hasDefaultstyles) {
2828
styles = defaultStyles;
29-
delete this.props.styles;
29+
delete props.styles;
3030
}
3131

3232
Object.defineProperty(props, 'styles', {

src/linkClass.js

Lines changed: 1 addition & 8 deletions
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 = React.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

Lines changed: 43 additions & 0 deletions
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

@@ -141,6 +168,22 @@ describe('linkClass', () => {
141168
expect(subject.props.children[0].props).not.to.have.property('styleName');
142169
expect(subject.props.children[1].props).not.to.have.property('styleName');
143170
});
171+
it('preserves original keys', () => {
172+
let subject;
173+
174+
subject = <div>
175+
<p key='1' styleName='foo' />
176+
<p key='2' styleName='bar' />
177+
</div>;
178+
179+
subject = linkClass(subject, {
180+
bar: 'bar-1',
181+
foo: 'foo-1'
182+
});
183+
184+
expect(subject.props.children[0].key).to.equal('1');
185+
expect(subject.props.children[1].key).to.equal('2');
186+
});
144187
});
145188
context('when multiple descendants have styleName and are iterable', () => {
146189
it('assigns a generated className', () => {

0 commit comments

Comments
 (0)