Skip to content

Commit 7620cc8

Browse files
committed
update all spinners to be functional component, and add option to pass className and style props to all
1 parent 2bc4ed7 commit 7620cc8

File tree

15 files changed

+235
-158
lines changed

15 files changed

+235
-158
lines changed

.bitmap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,5 +217,5 @@
217217
"origin": "AUTHORED",
218218
"exported": true
219219
},
220-
"version": "14.2.6-dev.2"
220+
"version": "14.3.0"
221221
}

README.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,20 +27,20 @@ Each component accepts a `color` prop, and few accepts also `size` prop.
2727
The default `color` prop is `#7f58af`.
2828
Component that accepts `size` prop have a default size in pixel.
2929

30-
| Spinner | Color: string | Size: number |
31-
| ---------------- | ------------ | ------------- |
32-
| Circle Spinner | `#7f58af` | `64px` |
33-
| Default Spinner | `#7f58af` | - |
34-
| DualRing Spinner | `#7f58af` | - |
35-
| Ellipsis Spinner | `#7f58af` | - |
36-
| Facebook Spinner | `#7f58af` | - |
37-
| Grid Spinner | `#7f58af` | - |
38-
| Heart Spinner | `#7f58af` | - |
39-
| Hourglass Spinner| `#7f58af` | - |
40-
| Ring Spinner | `#7f58af` | `80px` |
41-
| Ripple Spinner | `#7f58af` | - |
42-
| Roller Spinner | `#7f58af` | - |
43-
| Spinner Spinner | `#7f58af` | - |
30+
| Spinner | color: string | size: number | className: string | style: object |
31+
| ---------------- | ------------ | ------------- | ----------------- | ------------- |
32+
| Circle Spinner | `#7f58af` | `64px` | `""` | `{}` |
33+
| Default Spinner | `#7f58af` | - | `""` | `{}` |
34+
| DualRing Spinner | `#7f58af` | - | `""` | `{}` |
35+
| Ellipsis Spinner | `#7f58af` | - | `""` | `{}` |
36+
| Facebook Spinner | `#7f58af` | - | `""` | `{}` |
37+
| Grid Spinner | `#7f58af` | - | `""` | `{}` |
38+
| Heart Spinner | `#7f58af` | - | `""` | `{}` |
39+
| Hourglass Spinner| `#7f58af` | - | `""` | `{}` |
40+
| Ring Spinner | `#7f58af` | `80px` | `""` | `{}` |
41+
| Ripple Spinner | `#7f58af` | - | `""` | `{}` |
42+
| Roller Spinner | `#7f58af` | - | `""` | `{}` |
43+
| Spinner Spinner | `#7f58af` | - | `""` | `{}` |
4444

4545

4646
## 📦 Installation

src/components/Circle/index.js

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,27 @@
1-
import React, { Component } from 'react'
1+
import React from 'react'
22
import PropTypes from 'prop-types'
33
import './style.css'
44

5-
export default class Circle extends Component {
6-
render() {
7-
const { color, size } = this.props
8-
return <div className="lds-circle" style={{ background: color, width: size, height: size }}></div>
9-
}
5+
export default function Circle({ color, size, className, style }) {
6+
return (
7+
<div className={`lds-circle ${className}`} style={{ background: color, width: size, height: size, ...style }} />
8+
)
109
}
1110

1211
Circle.propTypes = {
1312
/** hex color */
1413
color: PropTypes.string,
1514
/** size in pixel */
1615
size: PropTypes.number,
16+
/** class name */
17+
className: PropTypes.string,
18+
/** style object */
19+
style: PropTypes.object,
1720
}
1821

1922
Circle.defaultProps = {
2023
color: '#7f58af',
2124
size: 64,
25+
className: '',
26+
style: {},
2227
}

src/components/Default/index.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,27 @@ import React from 'react'
22
import PropTypes from 'prop-types'
33
import './style.css'
44

5-
export default function Default({ color }) {
5+
export default function Default({ color, className, style }) {
66
const circles = [...Array(12)].map((_, index) => <div key={index} style={{ background: `${color}` }} />)
77

8-
return <div className="lds-default">{circles}</div>
8+
return (
9+
<div className={`lds-default ${className}`} style={{ ...style }}>
10+
{circles}
11+
</div>
12+
)
913
}
1014

1115
Default.propTypes = {
1216
/** hex color */
1317
color: PropTypes.string,
18+
/** class name */
19+
className: PropTypes.string,
20+
/** style object */
21+
style: PropTypes.object,
1422
}
1523

1624
Default.defaultProps = {
1725
color: '#7f58af',
26+
className: '',
27+
style: {},
1828
}

src/components/DualRing/index.js

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,26 @@
1-
import React, { Component } from 'react'
1+
import React from 'react'
22
import PropTypes from 'prop-types'
33
import './style.css'
44

5-
export default class DualRing extends Component {
6-
render() {
7-
return (
8-
<div className="lds-dual-ring">
9-
<div className="lds-dual-ring-after" style={{ borderColor: `${this.props.color} transparent` }}></div>
10-
</div>
11-
)
12-
}
5+
export default function DualRing({ color, className, style }) {
6+
return (
7+
<div className={`lds-dual-ring ${className}`} style={{ ...style }}>
8+
<div className="lds-dual-ring-after" style={{ borderColor: `${color} transparent` }}></div>
9+
</div>
10+
)
1311
}
1412

1513
DualRing.propTypes = {
1614
/** hex color */
1715
color: PropTypes.string,
16+
/** class name */
17+
className: PropTypes.string,
18+
/** style object */
19+
style: PropTypes.object,
1820
}
1921

2022
DualRing.defaultProps = {
2123
color: '#7f58af',
24+
className: '',
25+
style: {},
2226
}

src/components/Ellipsis/index.js

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,28 @@
1-
import React, { Component } from 'react'
1+
import React from 'react'
22
import PropTypes from 'prop-types'
33
import './style.css'
44

5-
export default class Ellipsis extends Component {
6-
Circles = () => {
7-
let div = []
8-
for (let index = 0; index < 4; index++) {
9-
div.push(<div key={index} style={{ background: `${this.props.color}` }}></div>)
10-
}
11-
return div
12-
}
5+
export default function Ellipsis({ color, className, style }) {
6+
const circles = [...Array(4)].map((_, index) => <div key={index} style={{ background: `${color}` }} />)
137

14-
render() {
15-
return <div className="lds-ellipsis">{this.Circles()}</div>
16-
}
8+
return (
9+
<div className={`lds-ellipsis ${className}`} style={{ ...style }}>
10+
{circles}
11+
</div>
12+
)
1713
}
1814

1915
Ellipsis.propTypes = {
2016
/** hex color */
2117
color: PropTypes.string,
18+
/** class name */
19+
className: PropTypes.string,
20+
/** style object */
21+
style: PropTypes.object,
2222
}
2323

2424
Ellipsis.defaultProps = {
2525
color: '#7f58af',
26+
className: '',
27+
style: {},
2628
}

src/components/Facebook/index.js

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
1-
import React, { Component } from 'react'
1+
import React from 'react'
22
import PropTypes from 'prop-types'
33
import './style.css'
44

5-
export default class Facebook extends Component {
6-
getCircles = () => {
7-
return [...Array(3)].map((val, index) => <div key={index} style={{ background: `${this.props.color}` }}></div>)
8-
}
5+
export default function Facebook({ color, className, style }) {
6+
const circles = [...Array(3)].map((_, index) => <div key={index} style={{ background: `${color}` }}></div>)
97

10-
render() {
11-
return <div className="lds-facebook">{this.getCircles()}</div>
12-
}
8+
return (
9+
<div className={`lds-facebook ${className}`} style={{ ...style }}>
10+
{circles}
11+
</div>
12+
)
1313
}
1414

1515
Facebook.propTypes = {
1616
/** hex color */
1717
color: PropTypes.string,
18+
/** class name */
19+
className: PropTypes.string,
20+
/** style object */
21+
style: PropTypes.object,
1822
}
1923

2024
Facebook.defaultProps = {
2125
color: '#7f58af',
26+
className: '',
27+
style: {},
2228
}

src/components/Grid/index.js

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,27 @@ import React from 'react'
22
import PropTypes from 'prop-types'
33
import './style.css'
44

5-
export default function Grid({ color }) {
5+
export default function Grid({ color, className, style }) {
66
const circles = [...Array(9)].map((_, index) => <div key={index} style={{ background: `${color}` }} />)
77

8-
return <div className="lds-grid">{circles}</div>
8+
return (
9+
<div className={`lds-grid ${className}`} style={{ ...style }}>
10+
{circles}
11+
</div>
12+
)
913
}
1014

1115
Grid.propTypes = {
1216
/** hex color */
1317
color: PropTypes.string,
18+
/** class name */
19+
className: PropTypes.string,
20+
/** style object */
21+
style: PropTypes.object,
1422
}
1523

1624
Grid.defaultProps = {
1725
color: '#7f58af',
26+
className: '',
27+
style: {},
1828
}

src/components/Heart/index.js

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,29 @@
1-
import React, { Component } from 'react'
1+
import React from 'react'
22
import PropTypes from 'prop-types'
33
import './style.css'
44

5-
export default class Heart extends Component {
6-
render() {
7-
return (
8-
<div className="lds-heart">
9-
<div style={{ background: this.props.color }}>
10-
<div className="div-before" style={{ background: this.props.color }}></div>
11-
<div className="div-after" style={{ background: this.props.color }}></div>
12-
</div>
5+
export default function Heart({ color, className, style }) {
6+
return (
7+
<div className={`lds-heart ${className}`} style={{ ...style }}>
8+
<div style={{ background: color }}>
9+
<div className="div-before" style={{ background: color }}></div>
10+
<div className="div-after" style={{ background: color }}></div>
1311
</div>
14-
)
15-
}
12+
</div>
13+
)
1614
}
1715

1816
Heart.propTypes = {
1917
/** hex color */
2018
color: PropTypes.string,
19+
/** class name */
20+
className: PropTypes.string,
21+
/** style object */
22+
style: PropTypes.object,
2123
}
2224

2325
Heart.defaultProps = {
2426
color: '#7f58af',
27+
className: '',
28+
style: {},
2529
}

src/components/Hourglass/index.js

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,26 @@
1-
import React, { Component } from 'react'
1+
import React from 'react'
22
import PropTypes from 'prop-types'
33
import './style.css'
44

5-
export default class Hourglass extends Component {
6-
render() {
7-
return (
8-
<div className="lds-hourglass">
9-
<div className="lds-hourglass-after" style={{ background: this.props.color }}></div>
10-
</div>
11-
)
12-
}
5+
export default function Hourglass({ color, className, style }) {
6+
return (
7+
<div className={`lds-hourglass ${className}`} style={{ ...style }}>
8+
<div className="lds-hourglass-after" style={{ background: color }}></div>
9+
</div>
10+
)
1311
}
1412

1513
Hourglass.propTypes = {
1614
/** hex color */
1715
color: PropTypes.string,
16+
/** class name */
17+
className: PropTypes.string,
18+
/** style object */
19+
style: PropTypes.object,
1820
}
1921

2022
Hourglass.defaultProps = {
2123
color: '#7f58af',
24+
className: '',
25+
style: {},
2226
}

0 commit comments

Comments
 (0)