import React, { Component, PropTypes } from 'react'; import Checkbox from '../checkbox'; import Button from '../button'; import {classSet} from 'rc-util'; function noop() { } class TransferList extends Component { constructor(props) { super(props); } handleSelectALl() { this.props.handleSelectAll(this.getGlobalCheckStatus()); } handleSelect(selectedItem, e) { this.props.handleSelect(selectedItem, e.target.checked); } getGlobalCheckStatus() { let { dataSource } = this.props; let globalCheckStatus; let selectedRowLength = 0; dataSource.forEach((data)=> { if ( data.checked ) { selectedRowLength++; } }); if ( selectedRowLength > 0 ) { if ( selectedRowLength < dataSource.length ) { globalCheckStatus = 'part'; } else { globalCheckStatus = 'all'; } } else { globalCheckStatus = 'none'; } return globalCheckStatus; } renderCheckbox(props) { const { prefixCls } = props; const checkboxCls = { [`${prefixCls}-checkbox`]: true, }; if (props.checkPart) { checkboxCls[`${prefixCls}-checkbox-indeterminate`] = true; } else if (props.checked) { checkboxCls[`${prefixCls}-checkbox-checked`] = true; } let customEle = null; if (typeof props.checkable !== 'boolean') { customEle = props.checkable; } if (props.disabled) { checkboxCls[`${prefixCls}-checkbox-disabled`] = true; return {customEle}; } return ({customEle}); } render() { const { prefixCls, config, footer, extraRender, dataSource } = this.props; let defaultFooter = [ , ]; let globalCheckStatus = this.getGlobalCheckStatus(); return (
{this.renderCheckbox({ prefixCls: 'ant-tree', checked: globalCheckStatus === 'all', checkPart: globalCheckStatus === 'part', checkable: })} {dataSource.length} 条{config.title}
{ defaultFooter || footer }
); } } TransferList.defaultProps = { prefixCls: 'ant-transfer-list', dataSource: [], onChange: noop, extraRender: noop, }; TransferList.propTypes = { prefixCls: PropTypes.string, dataSource: PropTypes.array, footer: PropTypes.array, searchPlaceholder: PropTypes.string, handleSelect: PropTypes.func, handleSelectAll: PropTypes.func, config: PropTypes.object, }; export default TransferList;