import React, { Component, PropTypes } from 'react'; import Checkbox from '../checkbox'; import Search from './search.jsx'; import {classSet} from 'rc-util'; function noop() { } class TransferList extends Component { constructor(props) { super(props); } handleSelectALl() { this.props.handleSelectAll(); } handleSelect(selectedItem) { const { checkedKeys } = this.props; const result = checkedKeys.some((key) => key === selectedItem.key); this.props.handleSelect(selectedItem, !result); } handleFilter(e) { this.props.handleFilter(e); } handleClear() { this.props.handleClear(); } 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}); } matchFilter(text, filterText) { const regex = new RegExp(filterText); return text.match(regex); } render() { let self = this; const { prefixCls, dataSource, titleText, filter, height, width, checkedKeys, checkStatus, body, footer, showSearch } = this.props; // Custom Layout const footerDom = footer({...this.props}); const bodyDom = body({...this.props}); return (
{this.renderCheckbox({ prefixCls: 'ant-transfer', checked: checkStatus === 'all', checkPart: checkStatus === 'part', checkable: })}{(checkedKeys.length > 0 ? checkedKeys.length + '/' : '') + dataSource.length} 条 {titleText}
{ bodyDom ? bodyDom :
{ showSearch ?
: null }
} { footerDom ?
{ footerDom }
: null }
); } } TransferList.defaultProps = { prefixCls: 'ant-transfer-list', dataSource: [], titleText: '', showSearch: false, searchPlaceholder: '', width: 160, handleFilter: noop, handleSelect: noop, handleSelectAll: noop, render: noop, //advanced body: noop, footer: noop, }; TransferList.propTypes = { prefixCls: PropTypes.string, dataSource: PropTypes.array, showSearch: PropTypes.bool, searchPlaceholder: PropTypes.string, titleText: PropTypes.string, width: PropTypes.number, handleFilter: PropTypes.func, handleSelect: PropTypes.func, handleSelectAll: PropTypes.func, render: PropTypes.func, body: PropTypes.func, footer: PropTypes.func, }; export default TransferList;