Skip to content

Commit 84cc76c

Browse files
author
Louis Blin
committed
Fix filters on dynamic columns update
1 parent 3999f71 commit 84cc76c

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/BootstrapTable.js

+12
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,18 @@ class BootstrapTable extends Component {
5757
}
5858

5959
initTable(props) {
60+
// If columns changed, clean removed columns that had filters
61+
if (props.children !== this.props.children && this.filter) {
62+
const nextDataFields = props.children.map(column => column.props.dataField);
63+
this.props.children.forEach(column => {
64+
const { dataField, filter } = column.props;
65+
if (!nextDataFields.includes(dataField)) {
66+
// Clear filter
67+
this.filter.handleFilter(dataField, '', filter.type, filter);
68+
}
69+
});
70+
}
71+
6072
let { keyField } = props;
6173

6274
const isKeyFieldDefined = typeof keyField === 'string' && keyField.length;

src/TableHeaderColumn.js

+13
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,19 @@ class TableHeaderColumn extends Component {
2222
if (nextProps.reset) {
2323
this.cleanFiltered();
2424
}
25+
26+
// If column not displaying the same dataField, reset the filter accordingly
27+
if (nextProps.dataField !== this.props.dataField) {
28+
const emitter = nextProps.filter.emitter || {};
29+
const currentFilter = emitter.currentFilter || {};
30+
const filter = currentFilter[nextProps.dataField];
31+
const value = filter ? filter.value : '';
32+
33+
const { ref } = this.getFilters() || {};
34+
if (this.refs[ref]) {
35+
this.refs[ref].setState({ value });
36+
}
37+
}
2538
}
2639

2740
handleColumnClick = () => {

0 commit comments

Comments
 (0)