Skip to content

Commit 646f2ab

Browse files
authored
Merge pull request #74 from diegohaz/refactor/eslint-airbnb
Use airbnb eslint config
2 parents 2d390ef + e31f30f commit 646f2ab

File tree

27 files changed

+1246
-773
lines changed

27 files changed

+1246
-773
lines changed

.eslintrc

+23-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
{
22
"parser": "babel-eslint",
33
"extends": [
4-
"standard",
5-
"standard-react"
4+
"airbnb"
5+
],
6+
"plugins": [
7+
"no-unused-vars-rest"
68
],
79
"env": {
810
"browser": true,
@@ -15,8 +17,25 @@
1517
"__COVERAGE__": true,
1618
"__BASENAME__": true
1719
},
20+
"settings": {
21+
"import/resolver": "webpack"
22+
},
1823
"rules": {
19-
"jsx-quotes": [2, "prefer-double"],
20-
"indent": [2, 2]
24+
"semi": [2, "never"],
25+
"comma-dangle": 0,
26+
"max-len": 0,
27+
"no-shadow": 0,
28+
"arrow-body-style": 0,
29+
"arrow-parens": 0,
30+
"global-require": 0,
31+
"no-unused-expressions": 0,
32+
"no-confusing-arrow": 0,
33+
"no-unused-vars": 0,
34+
"import/no-dynamic-require": 0,
35+
"import/no-extraneous-dependencies": 0,
36+
"import/prefer-default-export": 0,
37+
"react/require-default-props": 0,
38+
"react/jsx-filename-extension": ["error", {"extensions": [".js", ".jsx"]}],
39+
"no-unused-vars-rest/no-unused-vars": ["error", {"ignoreDestructuredVarsWithRest": true}]
2140
}
2241
}

.storybook/config.js

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ import theme from 'components/themes/default'
66

77
const req = require.context('components', true, /.stories.js$/)
88

9-
function loadStories () {
10-
req.keys().forEach((filename) => req(filename))
9+
function loadStories() {
10+
req.keys().forEach(filename => req(filename))
1111
}
1212

13-
addDecorator((story) => (
13+
addDecorator(story => (
1414
<ThemeProvider theme={theme}>{story()}</ThemeProvider>
1515
))
1616

.storybook/webpack.config.js

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1-
var baseConfig = require('../webpack.config')
1+
const baseConfig = require('../webpack.config')
22

3-
module.exports = function (storybookBaseConfig, configType) {
4-
storybookBaseConfig.resolve = baseConfig.resolve
5-
storybookBaseConfig.module.loaders.push(...baseConfig.module.loaders)
6-
return storybookBaseConfig
7-
}
3+
module.exports = storybookBaseConfig =>
4+
Object.assign({}, storybookBaseConfig, {
5+
resolve: baseConfig.resolve,
6+
module: Object.assign({}, storybookBaseConfig.module, {
7+
loaders: storybookBaseConfig.module.loaders.concat(baseConfig.module.loaders)
8+
})
9+
})

package.json

+8-7
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"test": "jest",
88
"coverage": "npm test -- --coverage",
99
"postcoverage": "opn coverage/lcov-report/index.html",
10-
"lint": "eslint src src-clean .storybook webpack.config.js server.js",
10+
"lint": "eslint src src-clean .storybook",
1111
"storybook": "start-storybook -p 9001 -c .storybook",
1212
"build:clean": "del \"dist/!(.git*|Procfile)**\"",
1313
"build:copy": "copyfiles -u 1 public/* public/**/* dist",
@@ -41,12 +41,13 @@
4141
"cross-env": "^3.1.4",
4242
"del-cli": "^0.2.1",
4343
"enzyme": "^2.7.0",
44-
"eslint": "^3.12.2",
45-
"eslint-config-standard": "^6.2.1",
46-
"eslint-config-standard-react": "^4.2.0",
47-
"eslint-plugin-promise": "^3.4.0",
48-
"eslint-plugin-react": "^6.8.0",
49-
"eslint-plugin-standard": "^2.0.1",
44+
"eslint": "^3.13.1",
45+
"eslint-config-airbnb": "^14.0.0",
46+
"eslint-import-resolver-webpack": "^0.8.1",
47+
"eslint-plugin-import": "^2.2.0",
48+
"eslint-plugin-jsx-a11y": "^3.0.2",
49+
"eslint-plugin-no-unused-vars-rest": "^1.0.4",
50+
"eslint-plugin-react": "^6.9.0",
5051
"file-loader": "^0.9.0",
5152
"html-webpack-plugin": "^2.26.0",
5253
"jest-cli": "^18.1.0",

server.js

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
var webpack = require('webpack')
2-
var WebpackDevServer = require('webpack-dev-server')
3-
var config = require('./webpack.config')
1+
/* eslint-disable */
2+
const webpack = require('webpack')
3+
const WebpackDevServer = require('webpack-dev-server')
4+
const config = require('./webpack.config')
45

5-
var ip = process.env.IP || '0.0.0.0'
6-
var port = process.env.PORT || 3000
6+
const ip = process.env.IP || '0.0.0.0'
7+
const port = process.env.PORT || 3000
78

89
new WebpackDevServer(webpack(config), {
910
publicPath: config.output.publicPath,
@@ -12,10 +13,10 @@ new WebpackDevServer(webpack(config), {
1213
stats: false,
1314
historyApiFallback: true,
1415
contentBase: 'public'
15-
}).listen(port, ip, function (err, result) {
16+
}).listen(port, ip, (err) => {
1617
if (err) {
1718
return console.log(err)
1819
}
1920

20-
console.log('Listening at http://' + ip + ':' + port)
21+
console.log(`Listening at http://${ip}:${port}`)
2122
})

src-clean/components/App.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ const App = ({ children }) => {
1616
}
1717

1818
App.propTypes = {
19-
children: PropTypes.any
19+
children: PropTypes.oneOfType([
20+
PropTypes.arrayOf(PropTypes.node),
21+
PropTypes.node
22+
])
2023
}
2124

2225
export default App
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { PropTypes } from 'react'
1+
import React from 'react'
22
import styled from 'styled-components'
33

44
const Wrapper = styled.div`
@@ -9,14 +9,10 @@ const Wrapper = styled.div`
99
height: 100%;
1010
`
1111

12-
const PageTemplate = ({ children, ...props }) => {
12+
const PageTemplate = (props) => {
1313
return (
14-
<Wrapper {...props}>{children}</Wrapper>
14+
<Wrapper {...props} />
1515
)
1616
}
1717

18-
PageTemplate.propTypes = {
19-
children: PropTypes.any.isRequired
20-
}
21-
2218
export default PageTemplate

src/components/App.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ const App = ({ children }) => {
1818
}
1919

2020
App.propTypes = {
21-
children: PropTypes.any
21+
children: PropTypes.oneOfType([
22+
PropTypes.arrayOf(PropTypes.node),
23+
PropTypes.node
24+
])
2225
}
2326

2427
export default App

src/components/atoms/Button/index.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const styles = css`
4545
}
4646
`
4747

48-
const StyledLink = styled(({ disabled, transparent, reverse, color, height, theme, ...props }) =>
48+
const StyledLink = styled(({ disabled, transparent, reverse, palette, height, theme, ...props }) =>
4949
<Link {...props} />
5050
)`${styles}`
5151
const Anchor = styled.a`${styles}`

src/components/atoms/Heading/index.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { PropTypes } from 'react'
22
import styled, { css } from 'styled-components'
33
import { font, palette } from 'styled-theme'
44

5-
export const fontSize = ({ level }) => `${0.75 + 1 * (1 / level)}rem`
5+
export const fontSize = ({ level }) => `${0.75 + (1 * (1 / level))}rem`
66

77
const styles = css`
88
font-family: ${font('primary')};
@@ -14,9 +14,9 @@ const styles = css`
1414
color: ${palette({ grayscale: 0 }, 1)};
1515
`
1616

17-
const Heading = styled(({ level, children, reverse, palette, theme, ...props }) => {
18-
return React.createElement(`h${level}`, props, children)
19-
})`${styles}`
17+
const Heading = styled(({ level, children, reverse, palette, theme, ...props }) =>
18+
React.createElement(`h${level}`, props, children)
19+
)`${styles}`
2020

2121
Heading.propTypes = {
2222
level: PropTypes.number,

src/components/atoms/List/index.js

+5-2
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,12 @@ const List = ({ ordered, children, ...props }) => {
1919

2020
List.propTypes = {
2121
ordered: PropTypes.bool,
22-
children: PropTypes.any,
2322
palette: PropTypes.string,
24-
reverse: PropTypes.bool
23+
reverse: PropTypes.bool,
24+
children: PropTypes.oneOfType([
25+
PropTypes.arrayOf(PropTypes.node),
26+
PropTypes.node
27+
])
2528
}
2629

2730
List.defaultProps = {
+2-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
import React from 'react'
22

3+
// eslint-disable-next-line import/no-webpack-loader-syntax
34
import logo from 'url!./logo.svg'
45

5-
const LogoImage = (props) => <img alt="Logo" {...props} src={logo} />
6+
const LogoImage = props => <img alt="Logo" {...props} src={logo} />
67

78
export default LogoImage

src/components/atoms/TableCell/index.js

+4-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@ const TableCell = ({ heading, children, ...props }) => {
1515

1616
TableCell.propTypes = {
1717
heading: PropTypes.bool,
18-
children: PropTypes.any
18+
children: PropTypes.oneOfType([
19+
PropTypes.arrayOf(PropTypes.node),
20+
PropTypes.node
21+
])
1922
}
2023

2124
export default TableCell

src/components/atoms/Tooltip/index.js

+14-13
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ export const opposite = ({ position }) => opposites[position]
1515
export const perpendicular = ({ position }) =>
1616
position === 'left' || position === 'right' ? 'top' : 'left'
1717

18-
export const perpendicularOpposite = (props) => opposites[perpendicular(props)]
18+
export const perpendicularOpposite = props => opposites[perpendicular(props)]
1919

2020
export const perpendicularAxis = ({ position }) =>
2121
position === 'left' || position === 'right' ? 'Y' : 'X'
@@ -62,16 +62,16 @@ const styles = css`
6262
${opposite}: calc(100% + 2rem);
6363
${({ align }) => {
6464
switch (align) {
65-
case 'start': return css`
66-
${perpendicular}: 0;
67-
`
68-
case 'center': return css`
69-
${perpendicular}: 50%;
70-
transform: translate${perpendicularAxis}(-50%);
71-
`
72-
case 'end': return css`
73-
${perpendicularOpposite}: 0;
74-
`
65+
case 'start': return css`
66+
${perpendicular}: 0;
67+
`
68+
case 'center': return css`
69+
${perpendicular}: 50%;
70+
transform: translate${perpendicularAxis}(-50%);
71+
`
72+
default: return css`
73+
${perpendicularOpposite}: 0;
74+
`
7575
}
7676
}}
7777
}
@@ -90,7 +90,7 @@ const styles = css`
9090
`
9191

9292
const Tooltip = styled(({ position, align, reverse, children, theme, ...props }) =>
93-
React.cloneElement(children, { tabIndex: 0, ...props })
93+
React.cloneElement(children, props)
9494
)`${styles}`
9595

9696
Tooltip.propTypes = {
@@ -103,7 +103,8 @@ Tooltip.propTypes = {
103103

104104
Tooltip.defaultProps = {
105105
position: 'top',
106-
align: 'center'
106+
align: 'center',
107+
tabIndex: 0
107108
}
108109

109110
export default Tooltip

src/components/atoms/Tooltip/index.stories.js

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,49 +6,49 @@ storiesOf('Tooltip', module)
66
.add('default', () => (
77
<div style={{ margin: 100 }}>
88
<Tooltip data-title="Hello">
9-
<a href="#">Hover me</a>
9+
<a href="#foo">Hover me</a>
1010
</Tooltip>
1111
</div>
1212
))
1313
.add('reverse', () => (
1414
<div style={{ margin: 100 }}>
1515
<Tooltip data-title="Hello!" reverse>
16-
<a href="#">Hover me</a>
16+
<a href="#foo">Hover me</a>
1717
</Tooltip>
1818
</div>
1919
))
2020
.add('position right', () => (
2121
<div style={{ margin: 100 }}>
2222
<Tooltip data-title="Hello" position="right">
23-
<a href="#">Hover me</a>
23+
<a href="#foo">Hover me</a>
2424
</Tooltip>
2525
</div>
2626
))
2727
.add('position bottom', () => (
2828
<div style={{ margin: 100 }}>
2929
<Tooltip data-title="Hello" position="bottom">
30-
<a href="#">Hover me</a>
30+
<a href="#foo">Hover me</a>
3131
</Tooltip>
3232
</div>
3333
))
3434
.add('position left', () => (
3535
<div style={{ margin: 100 }}>
3636
<Tooltip data-title="Hello" position="left">
37-
<a href="#">Hover me</a>
37+
<a href="#foo">Hover me</a>
3838
</Tooltip>
3939
</div>
4040
))
4141
.add('align start', () => (
4242
<div style={{ margin: 100 }}>
4343
<Tooltip data-title="Hello! How are you?" align="start">
44-
<a href="#">Hover me</a>
44+
<a href="#foo">Hover me</a>
4545
</Tooltip>
4646
</div>
4747
))
4848
.add('align end', () => (
4949
<div style={{ margin: 100 }}>
5050
<Tooltip data-title="Hello! How are you?" align="end">
51-
<a href="#">Hover me</a>
51+
<a href="#foo">Hover me</a>
5252
</Tooltip>
5353
</div>
5454
))

src/components/molecules/Feature/index.js

+6-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ const Wrapper = styled.div`
88
display: flex;
99
padding: 1rem;
1010
box-sizing: border-box;
11-
opacity: ${(props) => props.soon ? 0.4 : 1};
11+
opacity: ${props => props.soon ? 0.4 : 1};
1212
`
1313

1414
const StyledIcon = styled(Icon)`
@@ -34,7 +34,7 @@ const Feature = ({ icon, title, link, children, ...props, soon }) => {
3434
{icon && <StyledIcon icon={icon} height={64} />}
3535
<Text>
3636
<Heading level={2}>
37-
{link && <Link href={link}>{title}</Link> || title}
37+
{link ? <Link href={link}>{title}</Link> : title}
3838
</Heading>
3939
<Paragraph>{children}</Paragraph>
4040
</Text>
@@ -48,7 +48,10 @@ Feature.propTypes = {
4848
icon: PropTypes.string,
4949
link: PropTypes.string,
5050
soon: PropTypes.bool,
51-
children: PropTypes.any
51+
children: PropTypes.oneOfType([
52+
PropTypes.arrayOf(PropTypes.node),
53+
PropTypes.node
54+
])
5255
}
5356

5457
export default Feature

0 commit comments

Comments
 (0)