diff --git a/.eslintrc.json b/.eslintrc.json index 3108b198a412a21db8c98e821225a7c8262b12a3..8f6cb778f578e12194754315fd999df317750518 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 cd518742884f24b57bbc4c5889eb31be254aa0ee..7076faaad3dd9c234ed906de2f1badd9b30df416 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 94b22c1ad484f3f79ce889d925dfe9dcb4b7fa40..f292bbc54060c4211600ebd8f05eb08eb7b1359e 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 cd6266b06f93357de3da630783afa8eb444c8f16..6be2b5e8e0a452f6cbf80ff3e55ed105011f0d99 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 d28d3f57b81c85ccf3409a2b503ef80dc55ccf9c..ba376017f0cb3506ce19b53a975d6d2cf80a24bf 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 0b24c77c3dc408b072da7045ecb67c586c8e642b..57d1525a6dc8fc020e63eb6052262880eaa7951f 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 97bd1a2da1b75f9a23f261dd51275c91c31e85ef..85670591ec8b947f54527c73fc8cf0766d6de8ca 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 4f58b2397cb432cd51dbb23ecb0492348169a52f..5e6d379239a95b41cce99a38bf48a0518789468b 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 a701fcda9a83dd0a677ab0d8b33ebba95620603d..2a7e8cf04fe51ad95f3cbea20a5bdb87be793239 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 d96de2627f77bb52d3bbba5474e46921dac6f432..b48b029f8beed478038bf3cc7b8565e447559bf9 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 57637057cec66eb339b82e5da3e097c6eb118bc1..7450ddd687d1e0e4e61721a59c225ff04e453f35 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 c3fa8a28dbe40f98b84a17ff689cda612a55fd20..c2c1c22344b5571d8d200f12b9d96af456d08397 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 e502a70804e912e8c578590241252ab3701e366c..1665ca680da447cf328e26d24398dfa32b03f58f 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 eebd8484217d1e75d4bce62ce9181aa2fee9860f..ed81f81806b369020fcbde0859dde931835c1fd3 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 b650d3b1ca06d1274027ba0e2c32c1e091ba4064..24bf9f45aabdda593c32bba51ccd4c0f7746d3ee 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 319386170a62d2c23f5bfe45c6536ebc15ef7376..2b82e8210ab9c71fb98d990adc263cf10972adf1 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 b8908be0622cd5af717bd39e325a36fd23768e59..292f736f75b35261c78939d5d339d8bc49fc4f7c 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 7bd3991de0c5b86eaf2d070fad5ac483b9de885d..eadfb117f8218dac76a2456ce260dc1091ddcd66 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 1526d6ae461a2409068c220554efae34063b7c8e..97e2921dd7980518b5ad85d979059004f277dfa8 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 e97d8d4d14f3d70b79ff7f0de8b94ec90becec2e..599cc2af4c1cec8d909249cdd26cab4a1b7869ae 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 611c7159e090b758feea669cf55d252b58afd5dc..e84e8c5fa84673041ab334871b66ad100e1a3a6d 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 6bb6fd26793d7a110d4faaba0dd7391a1d47e0d1..a2f8517ac8dc7b927ab18c75f4da1870be06a7de 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 bd8e9fde779a882679cf4961ac968e3ad7bbe162..e7e962516267b381b798e484d77b177d6468d002 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 203e36ab883d8a2f7ac432c530953fb6bc5f04cc..b951f1613a5736fa5d09617fe3b7586a90fe80b0 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 7104d8c274616efa219da549919660544adc5997..e3079bf154417d0bc2464ab969cac2b105331d78 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 e14a4f4e41ef798db9f10240fdde901d77ae3aea..64f03ae539325db862136719ae898880d939291a 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",