diff --git a/.eslintrc b/.eslintrc
index 8e3d298584..809bbee625 100644
--- a/.eslintrc
+++ b/.eslintrc
@@ -27,6 +27,14 @@
*/
"no-var": 2, // http://eslint.org/docs/rules/no-var
"jsx-quotes": [2, "prefer-double"], //http://eslint.org/docs/rules/jsx-quotes
+ "constructor-super": 2,
+ "no-useless-constructor": 2,
+ "no-useless-computed-key": 2,
+ "no-const-assign": 2,
+ "no-dupe-class-members": 2,
+ "no-new-symbol": 2,
+ "no-this-before-super": 2,
+ "arrow-spacing": 1,
/**
* Variables
*/
@@ -155,7 +163,8 @@
"space-before-function-paren": [2, "never"], // http://eslint.org/docs/rules/space-before-function-paren
"space-infix-ops": 2, // http://eslint.org/docs/rules/space-infix-ops
"keyword-spacing": 0, // http://eslint.org/docs/rules/space-return-throw-case
- "spaced-comment": 2, // http://eslint.org/docs/rules/spaced-comment
+ "spaced-comment": 2, // http://eslint.org/docs/rules/spaced-comment,
+ "no-whitespace-before-property": 2,
/**
* JSX style
@@ -196,4 +205,4 @@
]
}]
}
-}
\ No newline at end of file
+}
diff --git a/package.json b/package.json
index 678ebadd13..3427d93a3f 100644
--- a/package.json
+++ b/package.json
@@ -12,8 +12,8 @@
"build": "webpack --config ./config/webpack.config.prod.js --release true",
"dev-server": "node webpack-dev-server.js",
"beforepublish": "lerna run beforepublish",
- "eslint": "eslint -f unix packages/react-data-grid/src/** packages/react-data-grid-addons/src/**",
- "fix-eslint": "eslint --fix -f unix packages/react-data-grid/src/** packages/react-data-grid-addons/src/**",
+ "eslint": "eslint -f unix packages/react-data-grid/src/** packages/react-data-grid-addons/src/** packages/common/**",
+ "fix-eslint": "eslint --fix -f unix packages/react-data-grid/src/** packages/react-data-grid-addons/src/** packages/common/**",
"lerna-publish": "@powershell -NoProfile -ExecutionPolicy Unrestricted -Command ./ci/publish/publish.ps1",
"web": "cd website && npm run start",
"web-publish": "@powershell -NoProfile -ExecutionPolicy Unrestricted -Command ./ci/publish/publish-web.ps1"
diff --git a/packages/common/cells/headerCells/FilterableHeaderCell.js b/packages/common/cells/headerCells/FilterableHeaderCell.js
index 852f7fa2de..54dab2e4c2 100644
--- a/packages/common/cells/headerCells/FilterableHeaderCell.js
+++ b/packages/common/cells/headerCells/FilterableHeaderCell.js
@@ -11,7 +11,7 @@ class FilterableHeaderCell extends React.Component {
state = {filterTerm: ''};
handleChange = (e) => {
- let val = e.target.value;
+ const val = e.target.value;
this.setState({filterTerm: val });
this.props.onChange({filterTerm: val, column: this.props.column});
};
@@ -21,7 +21,7 @@ class FilterableHeaderCell extends React.Component {
return ;
}
- let inputKey = 'header-filter-' + this.props.column.key;
+ const inputKey = 'header-filter-' + this.props.column.key;
return ();
};
diff --git a/packages/common/cells/headerCells/SortableHeaderCell.js b/packages/common/cells/headerCells/SortableHeaderCell.js
index 98bef344f1..1f6ae082c5 100644
--- a/packages/common/cells/headerCells/SortableHeaderCell.js
+++ b/packages/common/cells/headerCells/SortableHeaderCell.js
@@ -40,7 +40,7 @@ class SortableHeaderCell extends React.Component {
};
getSortByText = () => {
- let unicodeKeys = {
+ const unicodeKeys = {
ASC: '9650',
DESC: '9660'
};
@@ -48,7 +48,7 @@ class SortableHeaderCell extends React.Component {
};
render() {
- let className = joinClasses({
+ const className = joinClasses({
'react-grid-HeaderCell-sortable': true,
'react-grid-HeaderCell-sortable--ascending': this.props.sortDirection === 'ASC',
'react-grid-HeaderCell-sortable--descending': this.props.sortDirection === 'DESC'
diff --git a/packages/common/editors/CheckboxEditor.js b/packages/common/editors/CheckboxEditor.js
index b4aca19798..b07556f795 100644
--- a/packages/common/editors/CheckboxEditor.js
+++ b/packages/common/editors/CheckboxEditor.js
@@ -18,8 +18,8 @@ class CheckboxEditor extends React.Component {
};
render() {
- let checked = this.props.value != null ? this.props.value : false;
- let checkboxName = 'checkbox' + this.props.rowIdx;
+ const checked = this.props.value != null ? this.props.value : false;
+ const checkboxName = 'checkbox' + this.props.rowIdx;
return (
diff --git a/packages/common/editors/EditorBase.js b/packages/common/editors/EditorBase.js
index fbce144181..07a538bbf5 100644
--- a/packages/common/editors/EditorBase.js
+++ b/packages/common/editors/EditorBase.js
@@ -12,13 +12,13 @@ class EditorBase extends React.Component {
}
getValue() {
- let updated = {};
+ const updated = {};
updated[this.props.column.key] = this.getInputNode().value;
return updated;
}
getInputNode() {
- let domNode = ReactDOM.findDOMNode(this);
+ const domNode = ReactDOM.findDOMNode(this);
if (domNode.tagName === 'INPUT') {
return domNode;
}
diff --git a/packages/common/editors/EditorContainer.js b/packages/common/editors/EditorContainer.js
index af6889d605..709798016a 100644
--- a/packages/common/editors/EditorContainer.js
+++ b/packages/common/editors/EditorContainer.js
@@ -34,7 +34,7 @@ class EditorContainer extends React.Component {
changeCanceled = false;
componentDidMount() {
- let inputNode = this.getInputNode();
+ const inputNode = this.getInputNode();
if (inputNode !== undefined) {
this.setTextInputFocus();
if (!this.getEditor().disableContainerStyles) {
@@ -71,7 +71,7 @@ class EditorContainer extends React.Component {
this.checkAndCall('onPressKeyWithCtrl', e);
} else if (this.isKeyExplicitlyHandled(e.key)) {
// break up individual keyPress events to have their own specific callbacks
- let callBack = 'onPress' + e.key;
+ const callBack = 'onPress' + e.key;
this.checkAndCall(callBack, e);
} else if (isKeyPrintable(e.keyCode)) {
e.stopPropagation();
@@ -95,7 +95,7 @@ class EditorContainer extends React.Component {
}
createEditor = () => {
- let editorProps = {
+ const editorProps = {
ref: this.setEditorRef,
column: this.props.column,
value: this.getInitialValue(),
@@ -108,7 +108,7 @@ class EditorContainer extends React.Component {
onOverrideKeyDown: this.onKeyDown
};
- let CustomEditor = this.props.column.editor;
+ const CustomEditor = this.props.column.editor;
// return custom column editor or SimpleEditor if none specified
if (React.isValidElement(CustomEditor)) {
return React.cloneElement(CustomEditor, editorProps);
@@ -233,11 +233,11 @@ class EditorContainer extends React.Component {
commit = (args) => {
const { onCommit } = this.props;
- let opts = args || {};
- let updated = this.getEditor().getValue();
+ const opts = args || {};
+ const updated = this.getEditor().getValue();
if (this.isNewValueValid(updated)) {
this.changeCommitted = true;
- let cellKey = this.props.column.key;
+ const cellKey = this.props.column.key;
onCommit({ cellKey: cellKey, rowIdx: this.props.rowIdx, updated: updated, key: opts.key });
}
};
@@ -249,7 +249,7 @@ class EditorContainer extends React.Component {
isNewValueValid = (value) => {
if (isFunction(this.getEditor().validate)) {
- let isValid = this.getEditor().validate(value);
+ const isValid = this.getEditor().validate(value);
this.setState({ isInvalid: !isValid });
return isValid;
}
@@ -258,13 +258,13 @@ class EditorContainer extends React.Component {
};
setCaretAtEndOfInput = () => {
- let input = this.getInputNode();
+ const input = this.getInputNode();
// taken from http://stackoverflow.com/questions/511088/use-javascript-to-place-cursor-at-end-of-text-in-text-input-element
- let txtLength = input.value.length;
+ const txtLength = input.value.length;
if (input.setSelectionRange) {
input.setSelectionRange(txtLength, txtLength);
} else if (input.createTextRange) {
- let fieldRange = input.createTextRange();
+ const fieldRange = input.createTextRange();
fieldRange.moveStart('character', txtLength);
fieldRange.collapse();
fieldRange.select();
@@ -272,28 +272,28 @@ class EditorContainer extends React.Component {
};
isCaretAtBeginningOfInput = () => {
- let inputNode = this.getInputNode();
+ const inputNode = this.getInputNode();
return inputNode.selectionStart === inputNode.selectionEnd
&& inputNode.selectionStart === 0;
};
isCaretAtEndOfInput = () => {
- let inputNode = this.getInputNode();
+ const inputNode = this.getInputNode();
return inputNode.selectionStart === inputNode.value.length;
};
isBodyClicked = (e) => {
- let relatedTarget = this.getRelatedTarget(e);
+ const relatedTarget = this.getRelatedTarget(e);
return (relatedTarget === null);
};
isViewportClicked = (e) => {
- let relatedTarget = this.getRelatedTarget(e);
+ const relatedTarget = this.getRelatedTarget(e);
return (relatedTarget.className.indexOf('react-grid-Viewport') > -1);
};
isClickInsideEditor = (e) => {
- let relatedTarget = this.getRelatedTarget(e);
+ const relatedTarget = this.getRelatedTarget(e);
return (e.currentTarget.contains(relatedTarget) || (relatedTarget.className.indexOf('editing') > -1 || relatedTarget.className.indexOf('react-grid-Cell') > -1));
};
@@ -322,8 +322,8 @@ class EditorContainer extends React.Component {
};
setTextInputFocus = () => {
- let keyCode = this.props.firstEditorKeyPress;
- let inputNode = this.getInputNode();
+ const keyCode = this.props.firstEditorKeyPress;
+ const inputNode = this.getInputNode();
inputNode.focus();
if (inputNode.tagName === 'INPUT') {
if (!isKeyPrintable(keyCode)) {
diff --git a/packages/common/editors/__tests__/CheckboxEditor.spec.js b/packages/common/editors/__tests__/CheckboxEditor.spec.js
index f36bcdd356..416b2d160d 100644
--- a/packages/common/editors/__tests__/CheckboxEditor.spec.js
+++ b/packages/common/editors/__tests__/CheckboxEditor.spec.js
@@ -7,7 +7,7 @@ const { mount } = require('enzyme');
describe('CheckboxEditor', () => {
let component;
let componentWrapper;
- let testColumn = {
+ const testColumn = {
key: 'columnKey',
onCellChange: function() {}
};
@@ -27,15 +27,15 @@ describe('CheckboxEditor', () => {
});
it('should be selected if value prop is true', () => {
- let Input = TestUtils.findRenderedDOMComponentWithTag(component, 'input');
- let checkboxNode = ReactDOM.findDOMNode(Input);
+ const Input = TestUtils.findRenderedDOMComponentWithTag(component, 'input');
+ const checkboxNode = ReactDOM.findDOMNode(Input);
expect(checkboxNode.checked).toBe(true);
});
it('should not be selected if value prop is false', () => {
componentWrapper.setProps({value: false});
- let Input = TestUtils.findRenderedDOMComponentWithTag(component, 'input');
- let checkboxNode = ReactDOM.findDOMNode(Input);
+ const Input = TestUtils.findRenderedDOMComponentWithTag(component, 'input');
+ const checkboxNode = ReactDOM.findDOMNode(Input);
expect(checkboxNode.checked).toBe(false);
});
});
diff --git a/packages/common/editors/__tests__/SimpleTextEditor.spec.js b/packages/common/editors/__tests__/SimpleTextEditor.spec.js
index 93ce569a9d..2c900567e2 100644
--- a/packages/common/editors/__tests__/SimpleTextEditor.spec.js
+++ b/packages/common/editors/__tests__/SimpleTextEditor.spec.js
@@ -6,7 +6,7 @@ describe('SimpleTextEditor', () => {
describe('Basic tests', () => {
let component;
- let fakeColumn = { key: 'text', name: 'name', width: 0};
+ const fakeColumn = { key: 'text', name: 'name', width: 0};
function fakeBlurCb() { return true; }
function fakeFunction() { }
beforeEach(() => {
diff --git a/packages/common/utils/index.js b/packages/common/utils/index.js
index 9c12d18954..753c8a417c 100644
--- a/packages/common/utils/index.js
+++ b/packages/common/utils/index.js
@@ -9,7 +9,7 @@ export const isEmptyArray = (obj) => {
};
export const isFunction = (functionToCheck) => {
- let getType = {};
+ const getType = {};
return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
};
@@ -22,7 +22,7 @@ export const isImmutableCollection = objToVerify => {
};
export const getMixedTypeValueRetriever = (isImmutable) => {
- let retObj = {};
+ const retObj = {};
const retriever = (item, key) => { return item[key]; };
const immutableRetriever = (immutable, key) => { return immutable.get(key); };
diff --git a/packages/react-data-grid-addons/src/toolbars/GroupedColumnsPanel.js b/packages/react-data-grid-addons/src/toolbars/GroupedColumnsPanel.js
index 6970cd0d19..f40c432438 100644
--- a/packages/react-data-grid-addons/src/toolbars/GroupedColumnsPanel.js
+++ b/packages/react-data-grid-addons/src/toolbars/GroupedColumnsPanel.js
@@ -21,10 +21,6 @@ const defaultProps = {
};
class GroupedColumnsPanel extends Component {
- constructor() {
- super();
- }
-
getPanelInstructionMessage() {
const {groupBy} = this.props;
return groupBy && groupBy.length > 0 ? this.props.panelDescription : this.props.noColumnsSelectedMessage;
diff --git a/packages/react-data-grid/src/__tests__/ColumnUtils.spec.js b/packages/react-data-grid/src/__tests__/ColumnUtils.spec.js
index 9e54d97359..a704895779 100644
--- a/packages/react-data-grid/src/__tests__/ColumnUtils.spec.js
+++ b/packages/react-data-grid/src/__tests__/ColumnUtils.spec.js
@@ -84,7 +84,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = true;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(testProps.col.editor).not.toBe(undefined);
@@ -100,7 +100,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = true;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(testProps.col.editor).toBe(undefined);
@@ -115,7 +115,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = undefined;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(testProps.col.editable).toBe(true);
@@ -129,7 +129,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = undefined;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(testProps.col.editable).toBe(undefined);
@@ -146,7 +146,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = true;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(testProps.col.editor).not.toBe(null);
@@ -162,7 +162,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = true;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(testProps.col.editor).toBe(null);
@@ -177,7 +177,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = null;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(testProps.col.editable).toBe(true);
@@ -191,7 +191,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = null;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(testProps.col.editable).toBe(null);
@@ -207,7 +207,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = true;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(typeof(testProps.col.editable)).toBe('boolean');
@@ -222,7 +222,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = true;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(typeof(testProps.col.editable)).toBe('boolean');
@@ -237,7 +237,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = false;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(typeof(testProps.col.editable)).toBe('boolean');
@@ -252,7 +252,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = false;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(typeof(testProps.col.editable)).toBe('boolean');
@@ -269,7 +269,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = true;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(typeof(testProps.col.editable)).toBe('function');
@@ -284,7 +284,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = true;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(typeof(testProps.col.editable)).toBe('function');
@@ -299,7 +299,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = false;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(typeof(testProps.col.editable)).toBe('function');
@@ -314,7 +314,7 @@ describe('ColumnUtils tests', () => {
testProps.enableCellSelect = false;
// Act
- const result = canEdit(testProps.col, testProps. RowData, testProps.enableCellSelect);
+ const result = canEdit(testProps.col, testProps.RowData, testProps.enableCellSelect);
// Assert
expect(typeof(testProps.col.editable)).toBe('function');
diff --git a/packages/react-data-grid/src/__tests__/RowUtils.spec.js b/packages/react-data-grid/src/__tests__/RowUtils.spec.js
index 4ee7f07a63..041aca0702 100644
--- a/packages/react-data-grid/src/__tests__/RowUtils.spec.js
+++ b/packages/react-data-grid/src/__tests__/RowUtils.spec.js
@@ -2,7 +2,7 @@ const RowUtils = require('../RowUtils');
describe('RowUtils Tests', () => {
describe('isRowSelected', () => {
- describe('using index', () =>{
+ describe('using index', () => {
it('should return true', () => {
const result = RowUtils.isRowSelected(null, [0, 2, 4], null, {}, 2);
expect(result).toBe(true);
@@ -14,7 +14,7 @@ describe('RowUtils Tests', () => {
});
});
- describe('using keys', () =>{
+ describe('using keys', () => {
it('should return true', () => {
const keyProps = {rowKey: 'name', values: ['tim', 'willim', 'deigo']};
const rowData = {id: 1, name: 'tim'};
@@ -30,7 +30,7 @@ describe('RowUtils Tests', () => {
});
});
- describe('using `isSelectedKey`', () =>{
+ describe('using `isSelectedKey`', () => {
it('should return true', () => {
const rowData = {id: 1, name: 'tim', isSelected: true};
const result = RowUtils.isRowSelected(null, null, 'isSelected', rowData, 0);