diff --git a/src/components/management/SearchTable.tsx b/src/components/management/SearchTable.tsx new file mode 100644 index 0000000..491869e --- /dev/null +++ b/src/components/management/SearchTable.tsx @@ -0,0 +1,150 @@ +/** + * Created by hao.cheng on 2017/4/16. + */ +import React from 'react'; +import { Table, Input, Button } from 'antd'; +import { SmileOutlined } from '@ant-design/icons'; + +const data = [ + { + key: '1', + name: 'John Brown', + age: 32, + address: 'New York No. 1 Lake Park', + }, + { + key: '2', + name: 'Joe Black', + age: 42, + address: 'London No. 1 Lake Park', + }, + { + key: '3', + name: 'Jim Green', + age: 32, + address: 'Sidney No. 1 Lake Park', + }, + { + key: '4', + name: 'Jim Red', + age: 32, + address: 'London No. 2 Lake Park', + }, +]; + +class SearchTable extends React.Component { + state = { + filterDropdownVisible: false, + data, + searchText: '', + filtered: false, + }; + searchInput: any; + onInputChange = (e: any) => { + this.setState({ searchText: e.target.value }); + }; + onSearch = () => { + const { searchText } = this.state; + const reg = new RegExp(searchText, 'gi'); + this.setState({ + filterDropdownVisible: false, + filtered: !!searchText, + data: data + .map((record) => { + const match = record.name.match(reg); + if (!match) { + return null; + } + return { + ...record, + name: ( + + {record.name + .split(reg) + .map((text, i) => + i > 0 + ? [{match[0]}, text] + : text + )} + + ), + }; + }) + .filter((record) => !!record), + }); + }; + render() { + const columns = [ + { + title: 'Name', + dataIndex: 'name', + key: 'name', + filterDropdown: ( +