Skip to content

Commit

Permalink
Add eslintrc and convert to es6
Browse files Browse the repository at this point in the history
  • Loading branch information
mtscout6 committed Jun 10, 2015
1 parent 8341de3 commit a7fe075
Show file tree
Hide file tree
Showing 32 changed files with 418 additions and 360 deletions.
3 changes: 3 additions & 0 deletions .eslintignore
@@ -0,0 +1,3 @@
node_modules/
lib/
karma.conf.js
34 changes: 34 additions & 0 deletions .eslintrc
@@ -0,0 +1,34 @@
{
"env": {
"browser": true,
"node": true
},
"ecmaFeatures": {
"jsx": true
},
"parser": "babel-eslint",
"plugins": [
"react"
],
"rules": {
"comma-spacing": 1,
"key-spacing": 0,
"no-underscore-dangle": 0,
"no-unused-vars": [2, { "vars": "all", "args": "none" }],
"no-var": 2,
"object-shorthand": 1,
"quotes": [1, "single", "avoid-escape"],
"react/display-name": 0,
"react/jsx-no-undef": 2,
"react/jsx-uses-react": 2,
"react/no-did-mount-set-state": 2,
"react/no-did-update-set-state": 2,
"react/no-multi-comp": 2,
"react/prop-types": [1, { ignore: [children, className] }],
"react/react-in-jsx-scope": 2,
"react/self-closing-comp": 1,
"react/wrap-multilines": 2,
"react/jsx-uses-vars": 1,
"strict": 0
}
}
3 changes: 2 additions & 1 deletion karma.conf.js
@@ -1,4 +1,5 @@
var webpackConfig = require('./webpack.test.config.js');
require('babel/register');
var webpackConfig = require('./webpack.test.config.babel.js');
delete webpackConfig.entry;

module.exports = function (config) {
Expand Down
9 changes: 7 additions & 2 deletions package.json
Expand Up @@ -6,9 +6,10 @@
"scripts": {
"prepublish": "npm run build",
"build": "babel src --out-dir=lib && webpack && COMPRESS=1 webpack",
"test": "karma start --single-run",
"test": "npm run lint && karma start --single-run",
"tdd": "karma start",
"visual-test": "webpack-dev-server --config webpack.test.config"
"visual-test": "webpack-dev-server --config webpack.test.config",
"lint": "eslint ./"
},
"repository": {
"type": "git",
Expand All @@ -35,10 +36,14 @@
"devDependencies": {
"babel": "^5.5.6",
"babel-core": "^5.5.6",
"babel-eslint": "^3.1.15",
"babel-loader": "^5.1.4",
"bootstrap": "^3.3.1",
"chai": "^3.0.0",
"css-loader": "^0.14.4",
"eslint": "^0.22.1",
"eslint-plugin-mocha": "^0.2.2",
"eslint-plugin-react": "^2.5.0",
"file-loader": "^0.8.1",
"karma": "^0.12.31",
"karma-cli": "0.0.4",
Expand Down
19 changes: 10 additions & 9 deletions src/ButtonLink.js
@@ -1,23 +1,24 @@
var React = require('react');
import React from 'react';

var Button = require('react-bootstrap/lib/Button');
var LinkMixin = require('./LinkMixin');
import Button from 'react-bootstrap/lib/Button';
import LinkMixin from './LinkMixin';

var ButtonLink = React.createClass({
const ButtonLink = React.createClass({
mixins: [
LinkMixin
],
contextTypes: {
router: React.PropTypes.func.isRequired
},

render: function () {
var {
render() {
let {
to,
params,
query,
active,
...props} = this.props;
...props
} = this.props;

if (this.props.active === undefined) {
active = this.context.router.isActive(to, params, query);
Expand All @@ -28,11 +29,11 @@ var ButtonLink = React.createClass({
href={this.getHref()}
active={active}
onClick={this.handleRouteTo}
ref="button">
ref='button'>
{this.props.children}
</Button>
);
}
});

module.exports = ButtonLink;
export default ButtonLink;
26 changes: 13 additions & 13 deletions src/LinkMixin.js
@@ -1,5 +1,5 @@
var React = require('react');
var classSet = require('classnames');
import React from 'react';
import classNames from 'classnames';

function isLeftClickEvent(event) {
return event.button === 0;
Expand All @@ -9,7 +9,7 @@ function isModifiedEvent(event) {
return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);
}

module.exports = {
export default {
propTypes: {
activeClassName: React.PropTypes.string.isRequired,
disabled: React.PropTypes.bool,
Expand All @@ -23,7 +23,7 @@ module.exports = {
},


getDefaultProps: function () {
getDefaultProps() {
return {
activeClassName: 'active'
};
Expand All @@ -32,32 +32,32 @@ module.exports = {
/**
* Returns the value of the "href" attribute to use on the DOM element.
*/
getHref: function () {
getHref() {
return this.context.router.makeHref(this.props.to, this.props.params, this.props.query);
},

/**
* Returns the value of the "class" attribute to use on the DOM element, which contains
* the value of the activeClassName property when this <Link> is active.
*/
getClassName: function () {
var classNames = {};
getClassName() {
let classSet = {};

if (this.props.className) {
classNames[this.props.className] = true;
classSet[this.props.className] = true;
}

if (this.context.router.isActive(this.props.to, this.props.params, this.props.query)) {
classNames[this.props.activeClassName] = true;
}

return classSet(classNames);
return classNames(classSet);
},

handleRouteTo: function (event) {
var allowTransition = true;
var clickResult;
handleRouteTo(event) {
let allowTransition = true;
let clickResult;

if (this.props.disabled) {
event.preventDefault();
return;
Expand Down
19 changes: 10 additions & 9 deletions src/ListGroupItemLink.js
@@ -1,23 +1,24 @@
var React = require('react');
import React from 'react';

var ListGroupItem = require('react-bootstrap/lib/ListGroupItem');
var LinkMixin = require('./LinkMixin');
import ListGroupItem from 'react-bootstrap/lib/ListGroupItem';
import LinkMixin from './LinkMixin';

var LinkGroupItemLink = React.createClass({
const LinkGroupItemLink = React.createClass({
mixins: [
LinkMixin
],
contextTypes: {
router: React.PropTypes.func.isRequired
},

render: function() {
var {
render() {
let {
to,
params,
query,
active,
...props} = this.props;
...props
} = this.props;

if (this.props.active === undefined) {
active = this.context.router.isActive(to, params, query);
Expand All @@ -28,11 +29,11 @@ var LinkGroupItemLink = React.createClass({
href={this.getHref()}
active={active}
onClick={this.handleRouteTo}
ref="listGroupItem">
ref='listGroupItem'>
{this.props.children}
</ListGroupItem>
);
}
});

module.exports = LinkGroupItemLink;
export default LinkGroupItemLink;
20 changes: 10 additions & 10 deletions src/MenuItemLink.js
@@ -1,25 +1,25 @@
var React = require('react');
var classSet = require('classnames');
import React from 'react';

var MenuItem = require('react-bootstrap/lib/MenuItem');
var LinkMixin = require('./LinkMixin');
import MenuItem from 'react-bootstrap/lib/MenuItem';
import LinkMixin from './LinkMixin';

var MenuItemLink = React.createClass({
const MenuItemLink = React.createClass({
mixins: [
LinkMixin
],
contextTypes: {
router: React.PropTypes.func.isRequired
},

render: function() {
var {
render() {
let {
to,
params,
query,
active,
onSelect, // Not going to use this, just stripping off the props!
...props} = this.props;
onSelect, // eslint-disable-line no-unused-vars
...props
} = this.props;

if (active === undefined) {
active = this.context.router.isActive(to, params, query);
Expand All @@ -39,4 +39,4 @@ var MenuItemLink = React.createClass({
}
});

module.exports = MenuItemLink;
export default MenuItemLink;
15 changes: 8 additions & 7 deletions src/NavItemLink.js
@@ -1,9 +1,9 @@
var React = require('react');
import React from 'react';

var NavItem = require('react-bootstrap/lib/NavItem');
var LinkMixin = require('./LinkMixin');
import NavItem from 'react-bootstrap/lib/NavItem';
import LinkMixin from './LinkMixin';

var NavItemLink = React.createClass({
const NavItemLink = React.createClass({
mixins: [
LinkMixin
],
Expand All @@ -12,12 +12,13 @@ var NavItemLink = React.createClass({
},

render: function() {
var {
let {
to,
params,
query,
active,
...props} = this.props;
...props
} = this.props;

if (this.props.active === undefined) {
active = this.context.router.isActive(to, params, query);
Expand All @@ -35,4 +36,4 @@ var NavItemLink = React.createClass({
}
});

module.exports = NavItemLink;
export default NavItemLink;
6 changes: 3 additions & 3 deletions src/RouterModalTrigger.js
@@ -1,7 +1,7 @@
var React = require('react');
import React from 'react';

var ModalTrigger = require('react-bootstrap/lib/ModalTrigger');
import ModalTrigger from 'react-bootstrap/lib/ModalTrigger';

module.exports = ModalTrigger.withContext({
export default ModalTrigger.withContext({
router: React.PropTypes.func
});
6 changes: 3 additions & 3 deletions src/RouterOverlayTrigger.js
@@ -1,7 +1,7 @@
var React = require('react');
import React from 'react';

var OverlayTrigger = require('react-bootstrap/lib/OverlayTrigger');
import OverlayTrigger from 'react-bootstrap/lib/OverlayTrigger';

module.exports = OverlayTrigger.withContext({
export default OverlayTrigger.withContext({
router: React.PropTypes.func
});
26 changes: 13 additions & 13 deletions src/index.js
@@ -1,15 +1,15 @@
var ButtonLink = require('./ButtonLink');
var ListGroupItemLink = require('./ListGroupItemLink');
var MenuItemLink = require('./MenuItemLink');
var NavItemLink = require('./NavItemLink');
var RouterModalTrigger = require('./RouterModalTrigger');
var RouterOverlayTrigger = require('./RouterOverlayTrigger');
import ButtonLink from './ButtonLink';
import ListGroupItemLink from './ListGroupItemLink';
import MenuItemLink from './MenuItemLink';
import NavItemLink from './NavItemLink';
import RouterModalTrigger from './RouterModalTrigger';
import RouterOverlayTrigger from './RouterOverlayTrigger';

module.exports = {
ButtonLink: ButtonLink,
ListGroupItemLink: ListGroupItemLink,
MenuItemLink: MenuItemLink,
NavItemLink: NavItemLink,
RouterModalTrigger: RouterModalTrigger,
RouterOverlayTrigger: RouterOverlayTrigger
export default {
ButtonLink,
ListGroupItemLink,
MenuItemLink,
NavItemLink,
RouterModalTrigger,
RouterOverlayTrigger
};
21 changes: 21 additions & 0 deletions tests/.eslintrc
@@ -0,0 +1,21 @@
{
"env": {
"mocha": true
},
"globals": {
"assert": true,
"expect": true,
"sinon": true
},
"plugins": [
"mocha"
],
"rules": {
"no-alert": 0,
"no-script-url": 0,
"no-unused-expressions": 0,
"react/no-multi-comp": 0,
"react/prop-types": 0,
"mocha/no-exclusive-tests": 2
}
}

0 comments on commit a7fe075

Please sign in to comment.