import React, { PropTypes } from 'react'; import Checkbox from '../checkbox'; import Search from './search'; import classNames from 'classnames'; import Animate from 'rc-animate'; function noop() { } export default class TransferList extends React.Component { constructor(props) { super(props); this.state = { mounted: false, }; } componentDidMount() { setTimeout(() => { this.setState({ mounted: true, }); }, 0); } 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 = classNames({ [`${prefixCls}-checkbox`]: true, [`${prefixCls}-checkbox-indeterminate`]: props.checkPart, [`${prefixCls}-checkbox-checked`]: (!props.checkPart) && props.checked, [`${prefixCls}-checkbox-disabled`]: !!props.disabled, }); let customEle = null; if (typeof props.checkable !== 'boolean') { customEle = props.checkable; } return ( {customEle} ); } matchFilter(text, filterText) { const regex = new RegExp(filterText); return text.match(regex); } render() { const { prefixCls, dataSource, titleText, filter, checkedKeys, checkStatus, body, footer, showSearch } = this.props; let { searchPlaceholder, notFoundContent } = this.props; // Custom Layout const footerDom = footer({ ...this.props }); const bodyDom = body({ ...this.props }); const listCls = classNames({ [prefixCls]: true, [`${prefixCls}-with-footer`]: !!footerDom, }); 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); return (