diff --git a/packages/react-bootstrap-table2-example/examples/column-filter/custom-filter-logic.js b/packages/react-bootstrap-table2-example/examples/column-filter/custom-filter-logic.js
index 540c38b..25b37bb 100644
--- a/packages/react-bootstrap-table2-example/examples/column-filter/custom-filter-logic.js
+++ b/packages/react-bootstrap-table2-example/examples/column-filter/custom-filter-logic.js
@@ -50,11 +50,11 @@ class Table extends React.Component {
`;
export default class Table extends React.Component {
- filterByPrice = (filterVal) => {
+ filterByPrice = (filterVal, data) => {
if (filterVal) {
- return products.filter(product => product.price == filterVal);
+ return data.filter(product => product.price == filterVal);
}
- return products;
+ return data;
}
render() {
@@ -75,7 +75,7 @@ export default class Table extends React.Component {
return (
-
Implement Custom Filter
+ Implement a eq price filter
(currFilters) => {
const filterObj = currFilters[dataField];
filterFn = factory(filterObj.filterType);
let filterValue;
+ let customFilter;
for (let i = 0; i < columns.length; i += 1) {
if (columns[i].dataField === dataField) {
filterValue = columns[i].filterValue;
+ if (columns[i].filter) {
+ customFilter = columns[i].filter.props.onFilter;
+ }
break;
}
}
- result = filterFn(result, dataField, filterObj, filterValue);
+ if (customFilter) {
+ result = customFilter(filterObj.filterVal, result);
+ } else {
+ result = filterFn(result, dataField, filterObj, filterValue);
+ }
});
return result;
};
diff --git a/packages/react-bootstrap-table2-filter/test/context.test.js b/packages/react-bootstrap-table2-filter/test/context.test.js
index fcad5dd..face019 100644
--- a/packages/react-bootstrap-table2-filter/test/context.test.js
+++ b/packages/react-bootstrap-table2-filter/test/context.test.js
@@ -228,33 +228,7 @@ describe('FilterContext', () => {
});
});
- describe('if filter.props.onFilter is defined', () => {
- const filterVal = '3';
- const onFilter = jest.fn();
- const customColumns = columns.map((column, i) => {
- if (i === 1) {
- return {
- ...column,
- filter: textFilter({ onFilter })
- };
- }
- return column;
- });
-
- beforeEach(() => {
- wrapper = shallow(shallowContext(false, customColumns));
- wrapper.render();
- instance = wrapper.instance();
- });
-
- it('should call filter.props.onFilter correctly', () => {
- instance.onFilter(customColumns[1], FILTER_TYPE.TEXT)(filterVal);
- expect(onFilter).toHaveBeenCalledTimes(1);
- expect(onFilter).toHaveBeenCalledWith(filterVal);
- });
- });
-
- describe('if filter.props.onFilter is defined and return an undefined data', () => {
+ describe('if filter.props.onFilter is defined and return data', () => {
const mockReturn = [{
id: 1,
name: 'A'
@@ -280,7 +254,7 @@ describe('FilterContext', () => {
it('should call filter.props.onFilter correctly', () => {
instance.onFilter(customColumns[1], FILTER_TYPE.TEXT)(filterVal);
expect(onFilter).toHaveBeenCalledTimes(1);
- expect(onFilter).toHaveBeenCalledWith(filterVal);
+ expect(onFilter).toHaveBeenCalledWith(filterVal, data);
});
it('should set data correctly', () => {