From 77ba9a609e12de97bc90075facac985f98270882 Mon Sep 17 00:00:00 2001 From: Benjy Cui Date: Mon, 22 Feb 2016 10:04:54 +0800 Subject: [PATCH 1/2] deps: upgrade eslint to 2.0.0+ --- .eslintrc.json | 9 ++++++--- package.json | 6 +++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index caf7efe8d6..3108b198a4 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -7,9 +7,12 @@ "jest": true, "es6": true }, - "ecmaFeatures": { - "jsx": true, - "experimentalObjectRestSpread": true + "parserOptions": { + "ecmaVersion": 6, + "ecmaFeatures": { + "jsx": true, + "experimentalObjectRestSpread": true + } }, "plugins": [ "markdown", diff --git a/package.json b/package.json index 3d2ab70cbc..e14a4f4e41 100644 --- a/package.json +++ b/package.json @@ -86,11 +86,11 @@ "css-loader": "^0.23.0", "cz-conventional-changelog": "^1.1.5", "es3ify-loader": "^0.1.0", - "eslint": "^1.1.0", - "eslint-config-airbnb": "latest", + "eslint": "^2.2.0", + "eslint-config-airbnb": "^6.0.1", "eslint-plugin-babel": "^3.0.0", "eslint-plugin-markdown": "*", - "eslint-plugin-react": "^3.3.1", + "eslint-plugin-react": "^4.0.0", "eslint-tinker": "~0.2.0", "extract-text-webpack-plugin": "^1.0.1", "gh-pages": "^0.9.0", From c1659c2ce3201ba680e1929263686199180dcceb Mon Sep 17 00:00:00 2001 From: Benjy Cui Date: Mon, 22 Feb 2016 10:52:30 +0800 Subject: [PATCH 2/2] style: update code style to please lint --- .eslintrc.json | 4 +++- components/badge/index.jsx | 4 ---- components/calendar/demo/locale.md | 2 +- components/calendar/index.jsx | 2 +- components/collapse/demo/accordion.md | 6 +++--- components/collapse/demo/mix.md | 8 ++++---- components/date-picker/RangePicker.jsx | 8 ++++---- components/date-picker/index.jsx | 6 +++--- components/dropdown/demo/item.md | 2 +- components/dropdown/demo/trigger.md | 2 +- components/form/FormItem.jsx | 2 ++ components/form/ValueMixin.jsx | 16 ++++------------ components/form/demo/input-group.md | 4 ++-- components/form/demo/mix.md | 6 +++--- components/form/demo/validate-basic.md | 8 ++++---- components/input/index.jsx | 2 +- components/modal/demo/async.md | 2 +- components/modal/demo/footer.md | 2 +- components/queue-anim/demo/form.md | 2 +- components/queue-anim/demo/router.md | 2 +- components/radio/demo/radiogroup.md | 2 +- components/table/filterDropdown.jsx | 4 +--- components/table/index.jsx | 21 +++++++++------------ components/tabs/index.jsx | 2 +- components/transfer/index.jsx | 7 ++++--- components/transfer/list.jsx | 24 +++++++++++------------- components/transfer/search.jsx | 6 +----- components/tree/demo/basic-controlled.md | 2 +- components/upload/demo/picture-card.md | 2 +- components/upload/index.jsx | 4 ++-- package.json | 4 ++-- 31 files changed, 75 insertions(+), 93 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 3108b198a4..8f6cb778f5 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -31,6 +31,8 @@ "react/jsx-closing-bracket-location": 0, "react/jsx-no-bind": 0, "no-param-reassign": 0, - "max-len": 0 + "no-return-assign": 0, + "max-len": 0, + "consistent-return": 0 } } diff --git a/components/badge/index.jsx b/components/badge/index.jsx index cd51874288..7076faaad3 100644 --- a/components/badge/index.jsx +++ b/components/badge/index.jsx @@ -4,10 +4,6 @@ import ScrollNumber from './ScrollNumber'; import classNames from 'classnames'; class AntBadge extends React.Component { - constructor(props) { - super(props); - } - render() { let { count, prefixCls, overflowCount, className, style, children } = this.props; const dot = this.props.dot; diff --git a/components/calendar/demo/locale.md b/components/calendar/demo/locale.md index 94b22c1ad4..f292bbc540 100644 --- a/components/calendar/demo/locale.md +++ b/components/calendar/demo/locale.md @@ -15,6 +15,6 @@ function onPanelChange(value, mode) { } ReactDOM.render( - + , mountNode); ```` diff --git a/components/calendar/index.jsx b/components/calendar/index.jsx index cd6266b06f..6be2b5e8e0 100644 --- a/components/calendar/index.jsx +++ b/components/calendar/index.jsx @@ -92,7 +92,7 @@ class Calendar extends Component { locale={locale.lang} prefixCls={prefixCls} onTypeChange={this.setType.bind(this)} - onValueChange={this.setValue.bind(this)}/> + onValueChange={this.setValue.bind(this)} /> - +

{text}

- +

{text}

- +

{text}

diff --git a/components/collapse/demo/mix.md b/components/collapse/demo/mix.md index d28d3f57b8..ba376017f0 100644 --- a/components/collapse/demo/mix.md +++ b/components/collapse/demo/mix.md @@ -22,17 +22,17 @@ const text = ` ReactDOM.render( - + - +

{text}

- +

{text}

- +

{text}

diff --git a/components/date-picker/RangePicker.jsx b/components/date-picker/RangePicker.jsx index 0b24c77c3d..57d1525a6d 100644 --- a/components/date-picker/RangePicker.jsx +++ b/components/date-picker/RangePicker.jsx @@ -74,7 +74,7 @@ export default React.createClass({ timePicker = (); + transitionName="slide-up" />); } const calendarClassName = classNames({ @@ -151,15 +151,15 @@ export default React.createClass({ onChange={this.handleInputChange} value={start && this.getFormatter().format(start)} placeholder={startPlaceholder} - className="ant-calendar-range-picker-input"/> + className="ant-calendar-range-picker-input" /> ~ - + className="ant-calendar-range-picker-input" /> + ); } diff --git a/components/date-picker/index.jsx b/components/date-picker/index.jsx index 97bd1a2da1..85670591ec 100644 --- a/components/date-picker/index.jsx +++ b/components/date-picker/index.jsx @@ -61,7 +61,7 @@ function createPicker(TheCalendar, defaultFormat) { const timePicker = this.props.showTime ? () + transitionName="slide-up" />) : null; const disabledTime = this.props.showTime ? this.props.disabledTime : null; @@ -139,8 +139,8 @@ function createPicker(TheCalendar, defaultFormat) { value={value && this.getFormatter().format(value)} placeholder={placeholder} style={this.props.style} - className={`ant-calendar-picker-input ant-input${sizeClass}`}/> - + className={`ant-calendar-picker-input ant-input${sizeClass}`} /> + ); } diff --git a/components/dropdown/demo/item.md b/components/dropdown/demo/item.md index 4f58b2397c..5e6d379239 100644 --- a/components/dropdown/demo/item.md +++ b/components/dropdown/demo/item.md @@ -17,7 +17,7 @@ const menu = ( 第二个菜单项 - + 第三个菜单项(不可用) ); diff --git a/components/dropdown/demo/trigger.md b/components/dropdown/demo/trigger.md index a701fcda9a..2a7e8cf04f 100644 --- a/components/dropdown/demo/trigger.md +++ b/components/dropdown/demo/trigger.md @@ -17,7 +17,7 @@ const menu = ( 第二个菜单项 - + 第三个菜单项 ); diff --git a/components/form/FormItem.jsx b/components/form/FormItem.jsx index d96de2627f..b48b029f8b 100644 --- a/components/form/FormItem.jsx +++ b/components/form/FormItem.jsx @@ -58,6 +58,8 @@ class FormItem extends React.Component { } else if (getFieldValue(field) !== undefined) { return 'success'; } + + return ''; } renderValidateWrapper(c1, c2, c3) { diff --git a/components/form/ValueMixin.jsx b/components/form/ValueMixin.jsx index 57637057ce..7450ddd687 100644 --- a/components/form/ValueMixin.jsx +++ b/components/form/ValueMixin.jsx @@ -1,14 +1,3 @@ -function merge() { - const ret = {}; - const args = [].slice.call(arguments, 0); - args.forEach((a) => { - Object.keys(a).forEach((k) => { - ret[k] = a[k]; - }); - }); - return ret; -} - const ValueMixin = { setValue(field, e) { let v = e; @@ -24,7 +13,10 @@ const ValueMixin = { const newFormData = {}; newFormData[field] = v; this.setState({ - formData: merge(this.state.formData, newFormData), + formData: { + ...this.state.formData, + ...newFormData, + }, }); }, }; diff --git a/components/form/demo/input-group.md b/components/form/demo/input-group.md index c3fa8a28db..c2c1c22344 100644 --- a/components/form/demo/input-group.md +++ b/components/form/demo/input-group.md @@ -18,14 +18,14 @@ ReactDOM.render( label="标签输入框:" labelCol={{ span: 6 }} wrapperCol={{ span: 16 }}> - + - + - + - +

-

@@ -100,7 +100,7 @@ let Demo = React.createClass({ labelCol={{ span: 8 }} wrapperCol={{ span: 16 }} required> - +
+ })} /> + onContextMenu={noop} onPaste={noop} onCopy={noop} onCut={noop} /> + })} /> + })} /> diff --git a/components/input/index.jsx b/components/input/index.jsx index e502a70804..1665ca680d 100644 --- a/components/input/index.jsx +++ b/components/input/index.jsx @@ -99,7 +99,7 @@ class Input extends React.Component { ); default: inputClassName = props.className ? props.className : inputClassName; - return ; + return ; } } diff --git a/components/modal/demo/async.md b/components/modal/demo/async.md index eebd848421..ed81f81806 100644 --- a/components/modal/demo/async.md +++ b/components/modal/demo/async.md @@ -55,5 +55,5 @@ const Test = React.createClass({ } }); -ReactDOM.render(, mountNode); +ReactDOM.render(, mountNode); ```` diff --git a/components/modal/demo/footer.md b/components/modal/demo/footer.md index b650d3b1ca..24bf9f45aa 100644 --- a/components/modal/demo/footer.md +++ b/components/modal/demo/footer.md @@ -56,5 +56,5 @@ const Test = React.createClass({ } }); -ReactDOM.render(, mountNode); +ReactDOM.render(, mountNode); ```` diff --git a/components/queue-anim/demo/form.md b/components/queue-anim/demo/form.md index 319386170a..2b82e8210a 100644 --- a/components/queue-anim/demo/form.md +++ b/components/queue-anim/demo/form.md @@ -38,7 +38,7 @@ const Test = React.createClass({
- +
,
diff --git a/components/queue-anim/demo/router.md b/components/queue-anim/demo/router.md index b8908be062..292f736f75 100644 --- a/components/queue-anim/demo/router.md +++ b/components/queue-anim/demo/router.md @@ -29,7 +29,7 @@ const App = React.createClass({ - {React.cloneElement(this.props.children || , { key })} + {React.cloneElement(this.props.children || , { key })}
); diff --git a/components/radio/demo/radiogroup.md b/components/radio/demo/radiogroup.md index 7bd3991de0..eadfb117f8 100644 --- a/components/radio/demo/radiogroup.md +++ b/components/radio/demo/radiogroup.md @@ -17,7 +17,7 @@ const App = React.createClass({ }; }, onChange(e) { - console.log(`radio checked`, e.target.value); + console.log('radio checked', e.target.value); this.setState({ value: e.target.value }); diff --git a/components/table/filterDropdown.jsx b/components/table/filterDropdown.jsx index 1526d6ae46..97e2921dd7 100644 --- a/components/table/filterDropdown.jsx +++ b/components/table/filterDropdown.jsx @@ -59,9 +59,7 @@ let FilterMenu = React.createClass({ const keyPathOfSelectedItem = this.state.keyPathOfSelectedItem; const containSelected = Object.keys(keyPathOfSelectedItem).some(key => { const keyPath = keyPathOfSelectedItem[key]; - if (keyPath.indexOf(item.value) >= 0) { - return true; - } + return keyPath.indexOf(item.value) >= 0; }); const subMenuCls = containSelected ? 'ant-dropdown-submenu-contain-selected' : ''; return ( diff --git a/components/table/index.jsx b/components/table/index.jsx index e97d8d4d14..599cc2af4c 100644 --- a/components/table/index.jsx +++ b/components/table/index.jsx @@ -134,8 +134,8 @@ let AntTable = React.createClass({ } } if (typeof column.sorter === 'function') { - sorter = function () { - let result = column.sorter.apply(this, arguments); + sorter = function (...args) { + let result = column.sorter.apply(this, args); if (sortOrder === 'ascend') { return result; } else if (sortOrder === 'descend') { @@ -296,7 +296,7 @@ let AntTable = React.createClass({ return ( + value={rowIndex} checked={checked} /> ); }, @@ -315,7 +315,7 @@ let AntTable = React.createClass({ } return ( + onChange={this.handleSelect.bind(this, record, rowIndex)} /> ); }, @@ -408,7 +408,7 @@ let AntTable = React.createClass({ filterDropdown = ( + confirmFilter={this.handleFilter} /> ); } if (column.sorter) { @@ -427,12 +427,12 @@ let AntTable = React.createClass({ - + - + ); @@ -517,10 +517,7 @@ let AntTable = React.createClass({ // 否则进行读取分页数据 if (data.length > pageSize || pageSize === Number.MAX_VALUE) { data = data.filter((item, i) => { - if (i >= (current - 1) * pageSize && - i < current * pageSize) { - return item; - } + return i >= (current - 1) * pageSize && i < current * pageSize; }); } return data; @@ -575,7 +572,7 @@ let AntTable = React.createClass({ if (!data || data.length === 0) { emptyText = (
- {locale.emptyText} + {locale.emptyText}
); emptyClass = ' ant-table-empty'; diff --git a/components/tabs/index.jsx b/components/tabs/index.jsx index 611c7159e0..e84e8c5fa8 100644 --- a/components/tabs/index.jsx +++ b/components/tabs/index.jsx @@ -29,7 +29,7 @@ class AntTabs extends React.Component { let { prefixCls, size, tabPosition, animation, type, children, tabBarExtraContent } = this.props; let className = classNames({ - [this.props.className]: !!this. props.className, + [this.props.className]: !!this.props.className, [`${prefixCls}-mini`]: size === 'small' || size === 'mini', [`${prefixCls}-vertical`]: tabPosition === 'left' || tabPosition === 'right', [`${prefixCls}-card`]: type.indexOf('card') >= 0, diff --git a/components/transfer/index.jsx b/components/transfer/index.jsx index 6bb6fd2679..a2f8517ac8 100644 --- a/components/transfer/index.jsx +++ b/components/transfer/index.jsx @@ -33,6 +33,7 @@ class Transfer extends Component { leftDataSource.splice(index, 1); return true; } + return false; })[0]); }); } @@ -181,14 +182,14 @@ class Transfer extends Component { searchPlaceholder={searchPlaceholder} body={body} footer={footer} - prefixCls={`${prefixCls}-list`}/> + prefixCls={`${prefixCls}-list`} /> + className={`${prefixCls}-operation`} /> + prefixCls={`${prefixCls}-list`} /> ); } diff --git a/components/transfer/list.jsx b/components/transfer/list.jsx index bd8e9fde77..e7e9625162 100644 --- a/components/transfer/list.jsx +++ b/components/transfer/list.jsx @@ -81,21 +81,19 @@ class TransferList extends Component { [`${prefixCls}-with-footer`]: !!footerDom, }); - const showItems = dataSource.map((item) => { - // apply filter + const showItems = dataSource.filter((item) => { const itemText = this.props.render(item); const filterResult = this.matchFilter(itemText, filter); + return !!filterResult; + }).map((item) => { const renderedText = this.props.render(item); - - if (filterResult) { - return ( -
  • - key === item.key)} /> - {renderedText} -
  • - ); - } - }).filter(item => !!item); + return ( +
  • + key === item.key)} /> + {renderedText} +
  • + ); + }); return (
    @@ -104,7 +102,7 @@ class TransferList extends Component { prefixCls: 'ant-transfer', checked: checkStatus === 'all', checkPart: checkStatus === 'part', - checkable: + checkable: })}{(checkedKeys.length > 0 ? `${checkedKeys.length}/` : '') + dataSource.length} 条 {titleText}
    diff --git a/components/transfer/search.jsx b/components/transfer/search.jsx index 203e36ab88..b951f1613a 100644 --- a/components/transfer/search.jsx +++ b/components/transfer/search.jsx @@ -4,10 +4,6 @@ function noop() { } class Search extends Component { - constructor(props) { - super(props); - } - handleChange(e) { this.props.onChange(e); } @@ -22,7 +18,7 @@ class Search extends Component { return ( - + 示例 diff --git a/components/upload/index.jsx b/components/upload/index.jsx index 7104d8c274..e3079bf154 100644 --- a/components/upload/index.jsx +++ b/components/upload/index.jsx @@ -235,7 +235,7 @@ const AntUpload = React.createClass({ uploadList = ( + onRemove={this.handleManualRemove} /> ); } if (type === 'drag') { @@ -292,7 +292,7 @@ const AntUpload = React.createClass({ AntUpload.Dragger = React.createClass({ render() { - return ; + return ; } }); diff --git a/package.json b/package.json index e14a4f4e41..64f03ae539 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "eslint-plugin-babel": "^3.0.0", "eslint-plugin-markdown": "*", "eslint-plugin-react": "^4.0.0", - "eslint-tinker": "~0.2.0", + "eslint-tinker": "^0.3.1", "extract-text-webpack-plugin": "^1.0.1", "gh-pages": "^0.9.0", "history": "^1.17.0", @@ -130,7 +130,7 @@ "just-deploy": "npm run site && node scripts/deploy.js", "lint": "npm run srclint && npm run mdlint && npm run lesshint", "srclint": "eslint components test index.js --ext '.js,.jsx'", - "mdlint": "eslint components/*/demo/*.md --ext '.md' --global 'React,ReactDOM,mountNode' --rule 'no-console: 0,eol-last: 0'", + "mdlint": "eslint components/*/demo/*.md --ext '.md' --global 'React,ReactDOM,mountNode' --rule 'no-console: 0, eol-last: 0, prefer-rest-params: 0'", "lesshint": "lesshint style/ -e 'style/+(core|mixins)/+(base|iconfont|normalize|layouts|compatibility|grid).less'", "eslint-fix": "eslint --fix components test index.js --ext '.js,.jsx' && eslint-tinker ./components/*/demo/*.md", "test": "npm run lint && webpack && npm run jest",