# Filtering
# Quick start
From version 2.0
revo-grid
supports Filtering Plugin.
To enable Filtering just setup property filter
to true
.
By default there are sevaral types available:
- string
notEmpty
empty
eq
notEq
begins
contains
notContains
- number
notEmpty
empty
eqN
neqN
gt
gte
lt
lte
With their names accordingly:
const filterNames = {
none: 'None',
empty: 'Not set',
notEmpty: 'Set',
eq: 'Equal',
notEq: 'Not equal',
begins: 'Begins with',
contains: 'Contains',
notContains: 'Does not contain',
eqN: '=',
neqN: '!=',
gt: '>',
gte: '>=',
lt: '<',
lte: '<=',
};
// tsx
const columns = [{ prop: 'name' }];
const source = [{ name: 'Steve' }, { name: 'John' }];
return '<revo-grid rowClass="myRowClass" source={source} columns={columns} filter={true}/>';
# Filter per column
If you wish to disable filter for selected column all you have to do setup filter
on your column to false
.
const columns = [{ prop: 'name', filter: false }]; // filter icon will be disabled for column with property `name`
const source = [{ name: 'Steve' }];
return '<revo-grid rowClass="myRowClass" source={source} columns={columns} filter={true}/>';
Alternatively you can setup filter type filter: 'number'
:
// tsx
const columns = [{ prop: 'name', filter: 'number' }]; // filter type 'number' (string by default)
const source = [{ name: 'Steve' }];
return '<revo-grid rowClass="myRowClass" source={source} columns={columns} filter={true}/>';
# Advance usage
If you consider more advanced filter usage you have to look into <revo-grid/>
filter
property.
filter: boolean|ColumnFilterConfig
- can be boolean
or ColumnFilterConfig
type.
type ColumnFilterConfig = {
// preserved filters collection
collection?: FilterCollection;
// names of filters to be included include = ['eq', 'contains']
include?: string[];
// you can create your own filters here
customFilters?: Record<string, CustomFilter>;
};
Advance filter usage:
const columns = [{ prop: 'name', filter: 'myFilterType' }];
const source = [{ name: 'Steve' }];
// @extraValue available if filterFunc.extra set to input
const filterFunc = (cellValue, extraValue) => {
if (!cellValue) {
return false;
}
if (typeof cellValue !== 'string') {
cellValue = JSON.stringify(cellValue);
}
return cellValue === 'A';
};
// if you want extra input field for @extraValue
filterFunc.extra = 'input';
const filterConfig = {
include: ['newEqual'],
customFilters: {
'newEqual': {
columnFilterType: 'myFilterType', // column filter type id
name: 'Equal to A',
func: filterFunc
}
}
};
return '<revo-grid rowClass="myRowClass" source={source} columns={columns} filter={filterConfig}/>';
TIP
ColumnFilterConfig
is powerful option for the latest information it's recommended to read filter-plugin (opens new window) file for better understanding what parameters filter accepts.