@dgit/react-data-grid-addons
Version:
A set of addons for react-data-grid
32 lines (29 loc) • 1.17 kB
JavaScript
import { utils } from 'react-data-grid';
const { getMixedTypeValueRetriever, isImmutableCollection } = utils;
const filterRows = (filters, rows = []) => {
return rows.filter(r => {
const retriever = getMixedTypeValueRetriever(isImmutableCollection(r));
let include = true;
for (let columnKey in filters) {
if (filters.hasOwnProperty(columnKey)) {
let colFilter = filters[columnKey];
// check if custom filter function exists
if (colFilter.filterValues && typeof colFilter.filterValues === 'function') {
include = include & colFilter.filterValues(r, colFilter, columnKey);
} else if (typeof colFilter.filterTerm === 'string') {
// default filter action
let rowValue = retriever.getValue(r, columnKey);
if (rowValue !== undefined && rowValue !== null) {
if (rowValue.toString().toLowerCase().indexOf(colFilter.filterTerm.toLowerCase()) === -1) {
include = include & false;
}
} else {
include = include & false;
}
}
}
}
return Boolean(include);
});
};
module.exports = filterRows;