Skip to content

Commit 87b8a67

Browse files
committed
Docs.
1 parent 6b643f0 commit 87b8a67

File tree

4 files changed

+71
-11
lines changed

4 files changed

+71
-11
lines changed

README.md

Lines changed: 54 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,66 @@
33
[![Travis build status](http://img.shields.io/travis/gajus/react-css-modules/master.svg?style=flat)](https://travis-ci.org/gajus/react-css-modules)
44
[![NPM version](http://img.shields.io/npm/v/react-css-modules.svg?style=flat)](https://www.npmjs.org/package/react-css-modules)
55

6+
## What's the Problem?
7+
8+
[CSS modules](https://github.com/css-modules/css-modules) are awesome. If you are not familiar with CSS modules, it is a concept of using a module bundler such as webpack to load CSS scoped to a particular document. CSS modules loader will generate a unique name for a each CSS class at the time of loading the CSS. Refer to [webpack-demo](https://css-modules.github.io/webpack-demo/) for a full example.
9+
10+
In the context of React, this looks like this:
11+
12+
```js
13+
import React from 'react';
14+
import styles from './car.css';
15+
16+
export default class Car extends React.Component {
17+
render () {
18+
return <div className={styles.car}>
19+
<div className={styles.frontDoor}></div>
20+
<div className={styles.backDoor}></div>
21+
</div>;
22+
}
23+
}
24+
```
25+
26+
Awesome!
27+
28+
However, there are a several disadvantages of this approach:
29+
30+
* You have to use `camelCael` CSS class names.
31+
* You have to use `styles` object whenever assigning a class.
32+
33+
React CSS Modules enables seamless CSS modules for React, e.g.
34+
35+
```js
36+
import React from 'react';
37+
import styles from './car.css';
38+
import CSSModules from 'react-css-modules';
39+
40+
class Car extends React.Component {
41+
render () {
42+
return <div className='car'>
43+
<div className='front-door'></div>
44+
<div className='back-door'></div>
45+
</div>;
46+
}
47+
}
48+
49+
export default CSSModules(Car, styles);
50+
```
51+
652
## Usage
753

854
```js
55+
/**
56+
* @typedef CSSModules~Options
57+
* @property {Boolean} allowMultiple Determines whether `className` can have multiple class names. Throws an error when the constrained is not met. Default: true.
58+
* @property {Boolean} keepOriginal Determines whether the original `className` value is kept in addition to the appended CSS modules styles CSS class name. Default: true.
59+
* @property {Boolean} errorNotFound Determines whether an error is raised if `className` defines a CSS class(es) that is not present in the CSS modules styles. Default: false.
60+
*/
61+
962
/**
1063
* @param {ReactClass} Component
1164
* @param {Object} styles CSS modules class map.
12-
* @param {Object} options {@link https://github.com/gajus/react-css-modules#options}
65+
* @param {CSSModules~Options} options
1366
* @return {ReactClass}
1467
*/
1568
```
@@ -82,11 +135,3 @@ However, using React CSS Modules, you can map as many CSS classes to the element
82135
```
83136

84137
This will work as you'd expect.
85-
86-
## Options
87-
88-
|Name|Type|Description|Default|
89-
|---|---|---|---|
90-
|`allowMultiple`|`Boolean`| Determines whether `className` can have multiple class names. Throws an error when the constrained is not met. |`true`|
91-
|`keepOriginal`|`Boolean`| Determines whether the original `className` value is kept in addition to the appended CSS modules styles CSS class name. |`true`|
92-
|`errorNotFound`|`Boolean`| Determines whether an error is raised if `className` defines a CSS class(es) that is not present in the CSS modules styles. |`true`|

dist/linkClass.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,17 @@ var _react2 = _interopRequireDefault(_react);
1212

1313
var linkClass = undefined;
1414

15+
/**
16+
* @typedef CSSModules~Options
17+
* @property {Boolean} allowMultiple Determines whether `className` can have multiple class names. Throws an error when the constrained is not met. Default: true.
18+
* @property {Boolean} keepOriginal Determines whether the original `className` value is kept in addition to the appended CSS modules styles CSS class name. Default: true.
19+
* @property {Boolean} errorNotFound Determines whether an error is raised if `className` defines a CSS class(es) that is not present in the CSS modules styles. Default: false.
20+
*/
21+
1522
/**
1623
* @param {ReactElement} element
1724
* @param {Object} styles CSS modules class map.
18-
* @param {Object} options {@link https://github.com/gajus/react-css-modules#options}
25+
* @param {CSSModules~Options} options
1926
* @return {ReactElement}
2027
*/
2128
linkClass = function (element) {

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
"url": "https://github.com/gajus/react-css-modules"
88
},
99
"keywords": [
10+
"react-component",
1011
"react",
1112
"css",
1213
"modules"

src/linkClass.js

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,17 @@ import React from 'react';
22

33
let linkClass;
44

5+
/**
6+
* @typedef CSSModules~Options
7+
* @property {Boolean} allowMultiple Determines whether `className` can have multiple class names. Throws an error when the constrained is not met. Default: true.
8+
* @property {Boolean} keepOriginal Determines whether the original `className` value is kept in addition to the appended CSS modules styles CSS class name. Default: true.
9+
* @property {Boolean} errorNotFound Determines whether an error is raised if `className` defines a CSS class(es) that is not present in the CSS modules styles. Default: false.
10+
*/
11+
512
/**
613
* @param {ReactElement} element
714
* @param {Object} styles CSS modules class map.
8-
* @param {Object} options {@link https://github.com/gajus/react-css-modules#options}
15+
* @param {CSSModules~Options} options
916
* @return {ReactElement}
1017
*/
1118
linkClass = (element, styles = {}, options = {}) => {

0 commit comments

Comments
 (0)