diff --git a/.eslintrc.js b/.eslintrc.js
index d66f5389b2..fe5515d37f 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -148,7 +148,7 @@ module.exports = exports = {
"consistent-this": [ WARN, "self" ],
"eol-last": WARN,
"func-names": WARN,
- "func-style": [ WARN, "declaration" ],
+ "func-style": ["error", "declaration", { "allowArrowFunctions": true }],
"id-length": [ WARN, { "min": 2, "max": 32 } ],
"indent": [ WARN, 2 ],
"jsx-quotes": [ WARN, "prefer-double" ],
@@ -156,7 +156,7 @@ module.exports = exports = {
// "linebreak-style": [ WARN, "unix" ],
"lines-around-comment": [ WARN, { "beforeBlockComment": true } ],
"max-depth": [ WARN, 8 ],
- "max-len": [ WARN, 132 ],
+ "max-len": OFF,
"max-nested-callbacks": [ WARN, 8 ],
"max-params": [ WARN, 8 ],
"new-cap": WARN,
@@ -181,7 +181,7 @@ module.exports = exports = {
"no-unneeded-ternary": WARN,
"object-curly-spacing": [ WARN, "always" ],
"one-var": OFF,
- "operator-assignment": [ WARN, "never" ],
+ "operator-assignment": OFF,
"operator-linebreak": OFF,
"padded-blocks": [ WARN, "never" ],
"quote-props": [ WARN, "consistent-as-needed" ],
@@ -196,5 +196,9 @@ module.exports = exports = {
"space-return-throw-case": OFF,
"space-unary-ops": ERROR,
"spaced-comment": [ WARN, "always" ],
- "wrap-regex": WARN
+ "wrap-regex": WARN,
+
+ // React-specific overridesf
+ "react/display-name": OFF,
+ "react/prop-types": OFF
}};
diff --git a/demo/client/components/App.js b/demo/client/components/App.js
index 0275620cb9..9384498826 100644
--- a/demo/client/components/App.js
+++ b/demo/client/components/App.js
@@ -7,7 +7,6 @@ import 'payload/client/scss/app.css';
class App extends Component {
render() {
-
return (
@@ -16,7 +15,7 @@ class App extends Component {
- )
+ );
}
}
diff --git a/demo/client/index.js b/demo/client/index.js
index 59bcd61de2..e41e14a596 100644
--- a/demo/client/index.js
+++ b/demo/client/index.js
@@ -1,14 +1,14 @@
-import React, { Component } from 'react';
+import React from 'react';
import { render } from 'react-dom';
import { BrowserRouter as Router } from 'react-router-dom';
import App from './components/App';
-const Index = props => {
+const Index = () => {
return (
-
-
-
- )
-}
+
+
+
+ );
+};
render(, document.getElementById('app'));
diff --git a/package-lock.json b/package-lock.json
index de1a0326c1..7dbb438a3e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4380,10 +4380,33 @@
}
}
},
+ "eslint-plugin-react": {
+ "version": "7.10.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.10.0.tgz",
+ "integrity": "sha512-18rzWn4AtbSUxFKKM7aCVcj5LXOhOKdwBino3KKWy4psxfPW0YtIbE8WNRDUdyHFL50BeLb6qFd4vpvNYyp7hw==",
+ "dev": true,
+ "requires": {
+ "doctrine": "^2.1.0",
+ "has": "^1.0.3",
+ "jsx-ast-utils": "^2.0.1",
+ "prop-types": "^15.6.2"
+ },
+ "dependencies": {
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ }
+ }
+ },
"eslint-scope": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.1.tgz",
- "integrity": "sha1-PWPD7f2gLgbgGkUq2IyqzHzctug=",
+ "version": "3.7.3",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-3.7.3.tgz",
+ "integrity": "sha512-W+B0SvF4gamyCTmUc+uITPY0989iXVfKvhwtmJocTaYoc/3khEHmEmvfY/Gn9HA9VV75jrQECsHizkNw1b68FA==",
"dev": true,
"requires": {
"esrecurse": "^4.1.0",
@@ -4407,9 +4430,9 @@
},
"dependencies": {
"acorn": {
- "version": "5.5.3",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.5.3.tgz",
- "integrity": "sha512-jd5MkIUlbbmb07nXH0DT3y7rDVtkzDi4XZOUVWAer8ajmF/DTSSbl5oNFyDOl/OXA33Bl79+ypHhl2pN20VeOQ==",
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.1.tgz",
+ "integrity": "sha512-d+nbxBUGKg7Arpsvbnlq61mc12ek3EY8EQldM3GPAhWJ1UVxC6TDGbIvUMNU6obBX3i1+ptCIzV4vq0gFPEGVQ==",
"dev": true
}
}
@@ -6499,9 +6522,9 @@
"dev": true
},
"ignore": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.7.tgz",
- "integrity": "sha512-YGG3ejvBNHRqu0559EOxxNFihD0AjpvHlC/pdGKd3X3ofe+CoJkYazwNJYTNebqpPKN+VVQbh4ZFn1DivMNuHA==",
+ "version": "3.3.10",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+ "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
"dev": true
},
"ignore-by-default": {
@@ -7757,6 +7780,15 @@
"promise": "^7.0.1"
}
},
+ "jsx-ast-utils": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.0.1.tgz",
+ "integrity": "sha1-6AGxs5mF4g//yHtA43SAgOLcrH8=",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3"
+ }
+ },
"kareem": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/kareem/-/kareem-2.2.1.tgz",
@@ -12840,7 +12872,8 @@
},
"stringstream": {
"version": "0.0.5",
- "resolved": ""
+ "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz",
+ "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg="
},
"strip-ansi": {
"version": "4.0.0",
diff --git a/package.json b/package.json
index bd2ae8b576..ea476f86c1 100644
--- a/package.json
+++ b/package.json
@@ -35,6 +35,7 @@
"babel-loader": "^8.0.0-beta.4",
"css-loader": "^1.0.0",
"eslint": "^4.19.1",
+ "eslint-plugin-react": "^7.10.0",
"express": "^4.16.3",
"extract-text-webpack-plugin": "^4.0.0-beta.0",
"html-webpack-plugin": "^3.2.0",
diff --git a/src/client/components/controls/Button/index.js b/src/client/components/controls/Button/index.js
index 4dbe0961b6..fc06bb7a60 100644
--- a/src/client/components/controls/Button/index.js
+++ b/src/client/components/controls/Button/index.js
@@ -3,28 +3,26 @@ import React, { Component } from 'react';
import './Button.css';
class Button extends Component {
- render() {
+ render() {
+ let classes = this.props.className ? `btn ${this.props.className}` : 'btn';
- var classes = this.props.className ? `btn ${this.props.className}` : 'btn';
-
- if (this.props.type) {
- classes += ` btn-${this.props.type}`;
- }
-
- if (this.props.size) {
- classes += ` btn-${this.props.size}`;
- }
-
- if (this.props.icon) {
- classes += ` btn-icon`;
- }
-
- return (
-
- )
+ if (this.props.type) {
+ classes += ` btn-${this.props.type}`;
}
+
+ if (this.props.size) {
+ classes += ` btn-${this.props.size}`;
+ }
+
+ if (this.props.icon) {
+ classes += ' btn-icon';
+ }
+ return (
+
+ );
+ }
}
-export default Button;
\ No newline at end of file
+export default Button;
diff --git a/src/client/components/graphics/Emblem/index.js b/src/client/components/graphics/Emblem/index.js
index 76842c256f..f48b9f7e44 100644
--- a/src/client/components/graphics/Emblem/index.js
+++ b/src/client/components/graphics/Emblem/index.js
@@ -3,12 +3,12 @@ import React from 'react';
import './index.css';
export default () => {
- return (
-
- )
-}
+ return (
+
+ );
+};
diff --git a/src/client/components/layout/Sidebar/index.js b/src/client/components/layout/Sidebar/index.js
index 04a8af0705..ea1fd13a03 100644
--- a/src/client/components/layout/Sidebar/index.js
+++ b/src/client/components/layout/Sidebar/index.js
@@ -4,10 +4,10 @@ import Emblem from 'payload/client/components/graphics/Emblem';
import './index.css';
export default () => {
- return (
-
+ );
};
diff --git a/src/client/components/views/Login/index.js b/src/client/components/views/Login/index.js
index ccf1df1d4e..5aa8ec8ec5 100644
--- a/src/client/components/views/Login/index.js
+++ b/src/client/components/views/Login/index.js
@@ -1,7 +1,7 @@
-import React, { Component } from 'react';
+import React from 'react';
-export default props => {
+export default () => {
return (
Login
- )
-}
+ );
+};