/* eslint guard-for-in: 0 */ /* eslint no-restricted-syntax: 0 */ import React from 'react'; import PropTypes from 'prop-types'; import BootstrapTable from 'react-bootstrap-table-next'; import ToolkitContext, { Search } from 'react-bootstrap-table2-toolkit'; import Code from 'components/common/code-block'; import { productsGenerator } from 'utils/common'; const { SearchBar, searchFactory } = Search; const products = productsGenerator(17); const columns = [{ dataField: 'id', text: 'Product ID' }, { dataField: 'name', text: 'Product Name' }, { dataField: 'price', text: 'Product Price' }]; const sourceCode = `\ import BootstrapTable from 'react-bootstrap-table-next'; import filterFactory, { textFilter } from 'react-bootstrap-table2-filter'; const columns = [{ dataField: 'id', text: 'Product ID', }, { dataField: 'name', text: 'Product Name', filter: textFilter() }, { dataField: 'price', text: 'Product Price', filter: textFilter() }]; const RemoteFilter = props => (
{ sourceCode }
); class Container extends React.Component { constructor(props) { super(props); this.state = { data: products }; } handleTableChange = (type, { filters }) => { setTimeout(() => { const result = products.filter((row) => { let valid = true; for (const dataField in filters) { const { filterVal, filterType, comparator } = filters[dataField]; if (filterType === 'TEXT') { if (comparator === Comparator.LIKE) { valid = row[dataField].toString().indexOf(filterVal) > -1; } else { valid = row[dataField] === filterVal; } } if (!valid) break; } return valid; }); this.setState(() => ({ data: result })); }, 2000); } render() { return ( ); } } `; const RemoteFilter = props => (
{ toolkitprops => [ , ] } { sourceCode }
); RemoteFilter.propTypes = { data: PropTypes.array.isRequired, onTableChange: PropTypes.func.isRequired }; class Container extends React.Component { constructor(props) { super(props); this.state = { data: products }; } handleTableChange = (type, { searchText }) => { setTimeout(() => { const result = products.filter((row) => { for (let cidx = 0; cidx < columns.length; cidx += 1) { const column = columns[cidx]; let targetValue = row[column.dataField]; if (targetValue !== null && typeof targetValue !== 'undefined') { targetValue = targetValue.toString().toLowerCase(); if (targetValue.indexOf(searchText) > -1) { return true; } } } return false; }); this.setState(() => ({ data: result })); }, 2000); } render() { return ( ); } } export default Container;