Skip to content
This repository was archived by the owner on Jun 3, 2024. It is now read-only.

Commit 06d3801

Browse files
committed
Add prettier and prettier fixes.
1 parent e0856ab commit 06d3801

22 files changed

+257
-99
lines changed

.eslintrc

Lines changed: 127 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,127 @@
1-
---
2-
extends: ./node_modules/dash-components-archetype/config/eslint/eslintrc-react.json
1+
{
2+
"extends": ["eslint:recommended", "prettier"],
3+
"parser": "babel-eslint",
4+
"parserOptions": {
5+
"ecmaVersion": 6,
6+
"sourceType": "module",
7+
"ecmaFeatures": {
8+
"arrowFunctions": true,
9+
"blockBindings": true,
10+
"classes": true,
11+
"defaultParams": true,
12+
"destructuring": true,
13+
"forOf": true,
14+
"generators": true,
15+
"modules": true,
16+
"templateStrings": true,
17+
"jsx": true
18+
}
19+
},
20+
"env": {
21+
"browser": true,
22+
"es6": true,
23+
"jasmine": true,
24+
"jest": true,
25+
"node": true
26+
},
27+
"globals": {
28+
"jest": true
29+
},
30+
"plugins": [
31+
"react",
32+
"import"
33+
],
34+
"rules": {
35+
"accessor-pairs": ["error"],
36+
"block-scoped-var": ["error"],
37+
"consistent-return": ["error"],
38+
"curly": ["error", "all"],
39+
"default-case": ["error"],
40+
"dot-location": ["off"],
41+
"dot-notation": ["error"],
42+
"eqeqeq": ["error"],
43+
"guard-for-in": ["off"],
44+
"import/export": "error",
45+
"import/named": ["off"],
46+
"import/namespace": ["off"],
47+
"import/no-duplicates": ["error"],
48+
"import/no-named-as-default": ["error"],
49+
"import/no-unresolved": ["off"],
50+
"new-cap": ["error", {
51+
"capIsNewExceptionPattern": "Immutable\\.*"
52+
}],
53+
"no-alert": ["off"],
54+
"no-caller": ["error"],
55+
"no-case-declarations": ["error"],
56+
"no-console": ["error"],
57+
"no-div-regex": ["error"],
58+
"no-dupe-keys": ["error"],
59+
"no-else-return": ["error"],
60+
"no-empty-pattern": ["error"],
61+
"no-eq-null": ["error"],
62+
"no-eval": ["error"],
63+
"no-extend-native": ["error"],
64+
"no-extra-bind": ["error"],
65+
"no-extra-boolean-cast": ["error"],
66+
"no-inline-comments": ["error"],
67+
"no-implicit-coercion": ["error"],
68+
"no-implied-eval": ["error"],
69+
"no-inner-declarations": ["off"],
70+
"no-invalid-this": ["error"],
71+
"no-iterator": ["error"],
72+
"no-labels": ["error"],
73+
"no-lone-blocks": ["error"],
74+
"no-loop-func": ["error"],
75+
"no-multi-str": ["error"],
76+
"no-native-reassign": ["error"],
77+
"no-new": ["error"],
78+
"no-new-func": ["error"],
79+
"no-new-wrappers": ["error"],
80+
"no-param-reassign": ["error"],
81+
"no-process-env": ["warn"],
82+
"no-proto": ["error"],
83+
"no-redeclare": ["error"],
84+
"no-return-assign": ["error"],
85+
"no-script-url": ["error"],
86+
"no-self-compare": ["error"],
87+
"no-sequences": ["error"],
88+
"no-shadow": ["off"],
89+
"no-throw-literal": ["error"],
90+
"no-undefined": ["error"],
91+
"no-unused-expressions": ["error"],
92+
"no-use-before-define": ["error", "nofunc"],
93+
"no-useless-call": ["error"],
94+
"no-useless-concat": ["error"],
95+
"no-with": ["error"],
96+
"prefer-const": ["error"],
97+
"radix": ["error"],
98+
"react/jsx-no-duplicate-props": ["error"],
99+
"react/jsx-no-undef": ["error"],
100+
"react/jsx-uses-react": ["error"],
101+
"react/jsx-uses-vars": ["error"],
102+
"react/no-did-update-set-state": ["error"],
103+
"react/no-direct-mutation-state": ["error"],
104+
"react/no-is-mounted": ["error"],
105+
"react/no-unknown-property": ["error"],
106+
"react/prefer-es6-class": ["error", "always"],
107+
"react/prop-types": "error",
108+
"valid-jsdoc": ["error"],
109+
"yoda": ["error"],
110+
"spaced-comment": ["error", "always", {
111+
"block": {
112+
"exceptions": ["*"]
113+
}
114+
}],
115+
"no-unused-vars": ["error", {
116+
"args": "after-used",
117+
"argsIgnorePattern": "^_",
118+
"caughtErrorsIgnorePattern": "^e$"
119+
}],
120+
"no-magic-numbers": ["error", {
121+
"ignoreArrayIndexes": true,
122+
"ignore": [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 100, 10, 16, 0.5, 25]
123+
}],
124+
"no-underscore-dangle": ["off"],
125+
"no-useless-escape": ["off"]
126+
}
127+
}

.prettierrc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"tabWidth": 4,
3+
"singleQuote": true,
4+
"bracketSpacing": false,
5+
"trailingComma": "es5"
6+
}

package.json

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,10 @@
2828
"license": "MIT",
2929
"dependencies": {
3030
"babel-core": "^6.26.3",
31-
"babel-eslint": "^8.2.3",
3231
"babel-loader": "^7.1.4",
3332
"babel-preset-env": "^1.7.0",
3433
"babel-preset-react": "^6.24.1",
34+
"babel-eslint": "^8.2.6",
3535
"builder": "3.2.2",
3636
"copyfiles": "^2.0.0",
3737
"cross-env": "^5.2.0",
@@ -57,7 +57,10 @@
5757
"styled-jsx": "^2.2.6",
5858
"webpack": "^4.8.3",
5959
"webpack-cli": "^2.1.3",
60-
"webpack-serve": "^1.0.2"
60+
"webpack-serve": "^1.0.2",
61+
"enzyme": "^2.4.1",
62+
"eslint-config-prettier": "^3.0.1",
63+
"prettier": "^1.14.2"
6164
},
6265
"devDependencies": {
6366
"component-playground": "^2.0.0",

src/components/Checklist.react.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,8 @@ export default class Checklist extends Component {
5555
newValues = append(option.value, values);
5656
}
5757
this.setState({values: newValues});
58-
if (setProps) setProps({values: newValues});
59-
if (fireEvent) fireEvent({event: 'change'});
58+
if (setProps) {setProps({values: newValues});}
59+
if (fireEvent) {fireEvent({event: 'change'});}
6060
}}
6161
/>
6262
{option.label}

src/components/ConfirmDialog.react.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ export default class ConfirmDialog extends Component {
2121
_setStateAndProps(value) {
2222
const { setProps } = this.props;
2323
this.setState({displayed: value.displayed});
24-
if (setProps) setProps(value);
24+
if (setProps) {setProps(value);}
2525
}
2626

2727
componentWillReceiveProps(props) {

src/components/ConfirmDialogProvider.react.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export default class ConfirmDialogProvider extends React.Component {
3737
{
3838
const update = {displayed: true};
3939
this.setState(update);
40-
if (setProps) setProps(update);
40+
if (setProps) {setProps(update);}
4141
}
4242
});
4343

src/components/DatePickerRange.react.js

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -137,13 +137,13 @@ export default class DatePickerRange extends Component {
137137
initialVisibleMonth={() => {
138138
if (initial_visible_month) {
139139
return initial_visible_month
140-
} else {
140+
}
141141
if (focusedInput === 'endDate') {
142142
return end_date;
143-
} else {
143+
}
144144
return start_date;
145-
}
146-
}
145+
146+
147147
}}
148148
isOutsideRange={this.isOutsideRange}
149149
isRTL={is_RTL}
@@ -330,7 +330,9 @@ DatePickerRange.propTypes = {
330330
* the DatePicker will update its value
331331
* as one date is picked.
332332
*/
333-
updatemode: PropTypes.oneOf(['singledate', 'bothdates'])
333+
updatemode: PropTypes.oneOf(['singledate', 'bothdates']),
334+
335+
fireEvent: PropTypes.func,
334336
};
335337

336338
DatePickerRange.defaultProps = {

src/components/DatePickerSingle.react.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,10 @@ DatePickerSingle.propTypes = {
268268
/**
269269
* Dash-assigned callback that gets fired when the value changes.
270270
*/
271-
dashEvents: PropTypes.oneOf(['change'])
272-
};
271+
dashEvents: PropTypes.oneOf(['change']),
272+
273+
fireEvent: PropTypes.func,
274+
};
273275

274276
DatePickerSingle.defaultProps = {
275277
calendar_orientation: 'horizontal',

src/components/Dropdown.react.js

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ import ReactDropdown from 'react-virtualized-select';
55
import createFilterOptions from 'react-select-fast-filter-options';
66

77
// Custom tokenizer, see https://github.com/bvaughn/js-search/issues/43
8-
const REGEX = /\s+/; // Split on spaces
8+
// Split on spaces
9+
const REGEX = /\s+/;
910
const TOKENIZER = {
1011
tokenize(text) {
1112
return text
1213
.split(REGEX)
1314
.filter(
14-
(text) => text // Filter empty tokens
15+
// Filter empty tokens
16+
(text) => text
1517
);
1618
}
1719
}
@@ -78,7 +80,7 @@ export default class Dropdown extends Component {
7880
value = R.pluck('value', selectedOption);
7981
}
8082
this.setState({value});
81-
if (setProps) setProps({value});
83+
if (setProps) {setProps({value});}
8284
} else {
8385
let value;
8486
if (R.isNil(selectedOption)) {
@@ -87,9 +89,9 @@ export default class Dropdown extends Component {
8789
value = selectedOption.value;
8890
}
8991
this.setState({value});
90-
if (setProps) setProps({value});
92+
if (setProps) {setProps({value});}
9193
}
92-
if (fireEvent) fireEvent('change');
94+
if (fireEvent) {fireEvent('change');}
9395
}}
9496
{...omit(['fireEvent', 'setProps', 'value'], this.props)}
9597
/>
@@ -176,7 +178,11 @@ Dropdown.propTypes = {
176178
*/
177179
setProps: PropTypes.func,
178180

179-
dashEvents: PropTypes.oneOf(['change'])
181+
style: PropTypes.object,
182+
183+
dashEvents: PropTypes.oneOf(['change']),
184+
185+
fireEvent: PropTypes.func,
180186
};
181187

182188
Dropdown.defaultProps = {

src/components/Graph.react.js

Lines changed: 32 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ const filterEventData = (gd, eventData, event) => {
3131
has('pointNumber', fullPoint) &&
3232
has('customdata', data[pointData.curveNumber])
3333
) {
34-
pointData['customdata'] = data[
34+
pointData.customdata = data[
3535
pointData.curveNumber
3636
].customdata[fullPoint.pointNumber];
3737
}
@@ -76,29 +76,28 @@ export default class PlotlyGraph extends Component {
7676

7777
if (animate && this._hasPlotted && figure.data.length === gd.data.length) {
7878
return Plotly.animate(id, figure, animation_options);
79+
}
80+
81+
let PlotMethod;
82+
if (intersection(
83+
pluck('type', figure.data),
84+
['candlestick', 'ohlc']).length
85+
) {
86+
PlotMethod = Plotly.newPlot;
7987
} else {
88+
PlotMethod = Plotly.react;
89+
}
8090

81-
let PlotMethod;
82-
if (intersection(
83-
pluck('type', figure.data),
84-
['candlestick', 'ohlc']).length
85-
) {
86-
PlotMethod = Plotly.newPlot;
87-
} else {
88-
PlotMethod = Plotly.react;
89-
}
90-
91-
return PlotMethod(id, figure.data, figure.layout, config).then(
92-
() => {
93-
if (!this._hasPlotted) {
94-
this.bindEvents();
95-
Plotly.Plots.resize(document.getElementById(id));
96-
this._hasPlotted = true;
97-
}
91+
// eslint-disable-next-line new-cap
92+
return PlotMethod(id, figure.data, figure.layout, config).then(
93+
() => {
94+
if (!this._hasPlotted) {
95+
this.bindEvents();
96+
Plotly.Plots.resize(document.getElementById(id));
97+
this._hasPlotted = true;
9898
}
99-
);
100-
101-
}
99+
}
100+
);
102101
}
103102

104103
bindEvents() {
@@ -109,39 +108,39 @@ export default class PlotlyGraph extends Component {
109108
gd.on('plotly_click', (eventData) => {
110109
const clickData = filterEventData(gd, eventData, 'click');
111110
if (!isNil(clickData)) {
112-
if (setProps) setProps({clickData});
113-
if (fireEvent) fireEvent({event: 'click'});
111+
if (setProps) {setProps({clickData});}
112+
if (fireEvent) {fireEvent({event: 'click'});}
114113
}
115114
});
116115
gd.on('plotly_hover', (eventData) => {
117116
const hoverData = filterEventData(gd, eventData, 'hover');
118117
if (!isNil(hoverData)) {
119-
if (setProps) setProps({hoverData});
120-
if (fireEvent) fireEvent({event: 'hover'})
118+
if (setProps) {setProps({hoverData});}
119+
if (fireEvent) {fireEvent({event: 'hover'})}
121120
}
122121
});
123122
gd.on('plotly_selected', (eventData) => {
124123
const selectedData = filterEventData(gd, eventData, 'selected');
125124
if (!isNil(selectedData)) {
126-
if (setProps) setProps({selectedData});
127-
if (fireEvent) fireEvent({event: 'selected'});
125+
if (setProps) {setProps({selectedData});}
126+
if (fireEvent) {fireEvent({event: 'selected'});}
128127
}
129128
});
130129
gd.on('plotly_deselect', () => {
131-
if (setProps) setProps({selectedData: null});
132-
if (fireEvent) fireEvent({event: 'selected'});
130+
if (setProps) {setProps({selectedData: null});}
131+
if (fireEvent) {fireEvent({event: 'selected'});}
133132
});
134133
gd.on('plotly_relayout', (eventData) => {
135134
const relayoutData = filterEventData(gd, eventData, 'relayout');
136135
if (!isNil(relayoutData)) {
137-
if (setProps) setProps({relayoutData});
138-
if (fireEvent) fireEvent({event: 'relayout'});
136+
if (setProps) {setProps({relayoutData});}
137+
if (fireEvent) {fireEvent({event: 'relayout'});}
139138
}
140139
});
141140
gd.on('plotly_unhover', () => {
142141
if (clear_on_unhover) {
143-
if (setProps) setProps({hoverData: null});
144-
if (fireEvent) fireEvent({event: 'unhover'});
142+
if (setProps) {setProps({hoverData: null});}
143+
if (fireEvent) {fireEvent({event: 'unhover'});}
145144
}
146145
});
147146
}

0 commit comments

Comments
 (0)